diff --git a/DEPS b/DEPS index 9001e86..8eb2a6bd 100644 --- a/DEPS +++ b/DEPS
@@ -162,6 +162,12 @@ # Download prebuilt ash-chrome to test lacros build. 'checkout_prebuilt_ash_chrome': False, + # By default, download the fuchsia sdk from the fuchsia GCS bucket. + 'fuchsia_sdk_bucket': 'fuchsia', + + # By default, download the fuchsia images from the fuchsia GCS bucket. + 'fuchsia_images_bucket': 'fuchsia', + # Default to the empty board. Desktop Chrome OS builds don't need cros SDK # dependencies. Other Chrome OS builds should always define this explicitly. 'cros_boards': Str(''), @@ -200,11 +206,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': 'f1b53836b70549fb9e0a0f0358b6dbf676d35f41', + 'skia_revision': 'fd74ac6498c418497e971a4441ba6b94c1a8bb4a', # 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': '6b326d839a2eda226c38017486fda7d6e3e40b6a', + 'v8_revision': 'f3b5599f3d1002a512135925a9b7c6f86f509803', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -212,7 +218,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '0e5e6078c600654c6e2ec8ea4fccefa58a4ea2cc', + 'angle_revision': 'b4fb7cc9ec8f4c1751f84dcf5098b1ec5212a9ec', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -220,7 +226,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. - 'pdfium_revision': '055495dfbb246495879fef8540f4447fb9ccb6cb', + 'pdfium_revision': '606ab984cad86ca1f2fe9f039a70d18d2949fba4', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling BoringSSL # and whatever else without interference from each other. @@ -271,7 +277,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': '205a62903130e3265833da6ddcba1c598deb5f36', + 'devtools_frontend_revision': 'd8da6adce186a280ce4f69772793b6cf02b50c4b', # 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. @@ -307,7 +313,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'spv_tools_revision': '5c64374dd6cbfff1294ec78cdae1bc9de870a07d', + 'spv_tools_revision': 'dd534e877e725c9bb6f751c427442456a05384e4', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -323,7 +329,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': 'a7278454b28bafb72ff557cf3e087a8fb94de909', + 'dawn_revision': 'b1938273e4050931cadf697a946a0bcb49821ce1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -362,7 +368,7 @@ 'ukey2_revision': '0275885d8e6038c39b8a8ca55e75d1d4d1727f47', # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'tint_revision': '95dc655bf8a6999b59ef8f93194526a0e64d2d23', + 'tint_revision': '89042538376b59419d2b9d53c2e716ab1f1cf8d5', # TODO(crbug.com/941824): The values below need to be kept in sync # between //DEPS and //buildtools/DEPS, so if you're updating one, @@ -906,7 +912,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '39d870e1f07f8908701d160b5445782cdd3f1541', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '4761cf50d032aa5d1e0c51f47d20fa43380c01fd', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -1337,7 +1343,7 @@ 'packages': [ { 'package': 'fuchsia/third_party/aemu/linux-amd64', - 'version': 'ZGsmd0k3ijPxG9j-pwQg-yGF3zXYYOUD1L40GuIoAjEC' + 'version': 'tytdjLRUyb_SMJiWqNv0OAYX0kPp2TMapGU9AZPFWFkC' }, ], 'condition': 'host_os == "linux" and checkout_fuchsia', @@ -1491,7 +1497,7 @@ }, 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + 'fa9520e752b48711a9bbd8d52c40dffe5e580b35', + Var('webrtc_git') + '/src.git' + '@' + '711de82cd1ce75d9e7c0a1230fa080a5eaf6b07d', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -4953,6 +4959,7 @@ 'action': [ 'python', 'src/build/fuchsia/update_sdk.py', + '--default-bucket={fuchsia_sdk_bucket}', ], }, @@ -4964,6 +4971,7 @@ 'python', 'src/build/fuchsia/update_images.py', '--boot-images={checkout_fuchsia_boot_images}', + '--default-bucket={fuchsia_images_bucket}', ], },
diff --git a/android_webview/tools/system_webview_shell/test/data/webexposed/global-interface-listing-expected.txt b/android_webview/tools/system_webview_shell/test/data/webexposed/global-interface-listing-expected.txt index f774c14..5bdd35b 100644 --- a/android_webview/tools/system_webview_shell/test/data/webexposed/global-interface-listing-expected.txt +++ b/android_webview/tools/system_webview_shell/test/data/webexposed/global-interface-listing-expected.txt
@@ -699,6 +699,8 @@ getter strokeStyle getter textAlign getter textBaseline + getter textLetterSpacing + getter textWordSpacing method arc method arcTo method beginPath @@ -762,6 +764,8 @@ setter strokeStyle setter textAlign setter textBaseline + setter textLetterSpacing + setter textWordSpacing interface ChannelMergerNode : AudioNode attribute @@toStringTag method constructor @@ -4245,6 +4249,8 @@ getter shadowOffsetY getter strokeStyle getter textAlign + getter textLetterSpacing + getter textWordSpacing getter textBaseline method arc method arcTo @@ -4307,6 +4313,8 @@ setter strokeStyle setter textAlign setter textBaseline + setter textLetterSpacing + setter textWordSpacing interface Option attribute @@toStringTag getter defaultSelected
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index 876fad0c..6f633218 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -1160,6 +1160,8 @@ "system/phonehub/phone_connected_view.h", "system/phonehub/phone_hub_interstitial_view.cc", "system/phonehub/phone_hub_interstitial_view.h", + "system/phonehub/phone_hub_metrics.cc", + "system/phonehub/phone_hub_metrics.h", "system/phonehub/phone_hub_notification_controller.cc", "system/phonehub/phone_hub_notification_controller.h", "system/phonehub/phone_hub_tray.cc",
diff --git a/ash/DIR_METADATA b/ash/DIR_METADATA index 09304fb..d4d4773 100644 --- a/ash/DIR_METADATA +++ b/ash/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell"
diff --git a/ash/accessibility/DIR_METADATA b/ash/accessibility/DIR_METADATA index f636d5e..9b0c277b 100644 --- a/ash/accessibility/DIR_METADATA +++ b/ash/accessibility/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Accessibility"
diff --git a/ash/ambient/DIR_METADATA b/ash/ambient/DIR_METADATA index e5f5f36..f64641d 100644 --- a/ash/ambient/DIR_METADATA +++ b/ash/ambient/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>Assistant"
diff --git a/ash/app_list/DIR_METADATA b/ash/app_list/DIR_METADATA index 78fc352..d506861 100644 --- a/ash/app_list/DIR_METADATA +++ b/ash/app_list/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>Launcher"
diff --git a/ash/app_list/views/assistant/DIR_METADATA b/ash/app_list/views/assistant/DIR_METADATA index e5f5f36..f64641d 100644 --- a/ash/app_list/views/assistant/DIR_METADATA +++ b/ash/app_list/views/assistant/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>Assistant"
diff --git a/ash/app_menu/DIR_METADATA b/ash/app_menu/DIR_METADATA index 1f1f712..55999ba 100644 --- a/ash/app_menu/DIR_METADATA +++ b/ash/app_menu/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>Shelf"
diff --git a/ash/ash_strings_grd/DIR_METADATA b/ash/ash_strings_grd/DIR_METADATA index 09304fb..d4d4773 100644 --- a/ash/ash_strings_grd/DIR_METADATA +++ b/ash/ash_strings_grd/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell"
diff --git a/ash/assistant/DIR_METADATA b/ash/assistant/DIR_METADATA index e5f5f36..f64641d 100644 --- a/ash/assistant/DIR_METADATA +++ b/ash/assistant/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>Assistant"
diff --git a/ash/autoclick/DIR_METADATA b/ash/autoclick/DIR_METADATA index f636d5e..9b0c277b 100644 --- a/ash/autoclick/DIR_METADATA +++ b/ash/autoclick/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Accessibility"
diff --git a/ash/capture_mode/DIR_METADATA b/ash/capture_mode/DIR_METADATA index 84622b9..7827b63 100644 --- a/ash/capture_mode/DIR_METADATA +++ b/ash/capture_mode/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>ScreenCapture"
diff --git a/ash/clipboard/DIR_METADATA b/ash/clipboard/DIR_METADATA index c38db28..103ab01 100644 --- a/ash/clipboard/DIR_METADATA +++ b/ash/clipboard/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>EnhancedClipboard"
diff --git a/ash/display/DIR_METADATA b/ash/display/DIR_METADATA index 4df11e61..00fec13b 100644 --- a/ash/display/DIR_METADATA +++ b/ash/display/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "OS>Systems>Display"
diff --git a/ash/fast_ink/DIR_METADATA b/ash/fast_ink/DIR_METADATA index 09304fb..d4d4773 100644 --- a/ash/fast_ink/DIR_METADATA +++ b/ash/fast_ink/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell"
diff --git a/ash/high_contrast/DIR_METADATA b/ash/high_contrast/DIR_METADATA index f636d5e..9b0c277b 100644 --- a/ash/high_contrast/DIR_METADATA +++ b/ash/high_contrast/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Accessibility"
diff --git a/ash/highlighter/DIR_METADATA b/ash/highlighter/DIR_METADATA index 09304fb..d4d4773 100644 --- a/ash/highlighter/DIR_METADATA +++ b/ash/highlighter/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell"
diff --git a/ash/keyboard/DIR_METADATA b/ash/keyboard/DIR_METADATA index f33c0cee..09b159b1 100644 --- a/ash/keyboard/DIR_METADATA +++ b/ash/keyboard/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Input>VirtualKeyboard"
diff --git a/ash/lock_screen_action/DIR_METADATA b/ash/lock_screen_action/DIR_METADATA index 378d0eb2..c79de4ca 100644 --- a/ash/lock_screen_action/DIR_METADATA +++ b/ash/lock_screen_action/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>LockScreen"
diff --git a/ash/login/DIR_METADATA b/ash/login/DIR_METADATA index 378d0eb2..c79de4ca 100644 --- a/ash/login/DIR_METADATA +++ b/ash/login/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>LockScreen"
diff --git a/ash/magnifier/DIR_METADATA b/ash/magnifier/DIR_METADATA index f636d5e..9b0c277b 100644 --- a/ash/magnifier/DIR_METADATA +++ b/ash/magnifier/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Accessibility"
diff --git a/ash/public/cpp/ambient/DIR_METADATA b/ash/public/cpp/ambient/DIR_METADATA index e5f5f36..f64641d 100644 --- a/ash/public/cpp/ambient/DIR_METADATA +++ b/ash/public/cpp/ambient/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>Assistant"
diff --git a/ash/public/cpp/app_list/DIR_METADATA b/ash/public/cpp/app_list/DIR_METADATA index 78fc352..d506861 100644 --- a/ash/public/cpp/app_list/DIR_METADATA +++ b/ash/public/cpp/app_list/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>Launcher"
diff --git a/ash/public/cpp/assistant/DIR_METADATA b/ash/public/cpp/assistant/DIR_METADATA index e5f5f36..f64641d 100644 --- a/ash/public/cpp/assistant/DIR_METADATA +++ b/ash/public/cpp/assistant/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>Assistant"
diff --git a/ash/public/cpp/holding_space/DIR_METADATA b/ash/public/cpp/holding_space/DIR_METADATA index f4e13eec..b49ff288 100644 --- a/ash/public/cpp/holding_space/DIR_METADATA +++ b/ash/public/cpp/holding_space/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>HoldingSpace"
diff --git a/ash/resources/PRESUBMIT.py b/ash/resources/PRESUBMIT.py index afb2e32..e3440092 100644 --- a/ash/resources/PRESUBMIT.py +++ b/ash/resources/PRESUBMIT.py
@@ -6,7 +6,7 @@ See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for more details about the presubmit API built into depot_tools, and see -https://chromium.googlesource.com/chromium/src/+/master/styleguide/web/web.md +https://chromium.googlesource.com/chromium/src/+/HEAD/styleguide/web/web.md for the rules we're checking against here. """
diff --git a/ash/shelf/DIR_METADATA b/ash/shelf/DIR_METADATA index 1f1f712..55999ba 100644 --- a/ash/shelf/DIR_METADATA +++ b/ash/shelf/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>Shelf"
diff --git a/ash/sticky_keys/DIR_METADATA b/ash/sticky_keys/DIR_METADATA index f636d5e..9b0c277b 100644 --- a/ash/sticky_keys/DIR_METADATA +++ b/ash/sticky_keys/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Accessibility"
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb index 605305c..43397a7 100644 --- a/ash/strings/ash_strings_as.xtb +++ b/ash/strings/ash_strings_as.xtb
@@ -313,6 +313,7 @@ <translation id="4072264167173457037">মধ্যম ছিগনেল</translation> <translation id="4112140312785995938">পিছলৈ যাওক</translation> <translation id="4114315158543974537">ফ’ন হাব অন কৰক</translation> +<translation id="4121728057981832179">এটা ভাৰ্ছুৱেল মেচিনে আপোনাৰ মাইক্ৰ’ফ’ন ব্যৱহাৰ কৰি আছে</translation> <translation id="4129129681837227511">আপোনাৰ লক স্ক্রীণত জাননীসমূহ চাবলৈ ছেটিংটো সলনি কৰিবলৈ আনলক কৰক</translation> <translation id="4146833061457621061">সংগীত প্লে’ কৰক</translation> <translation id="4149156641122542261"><ph name="DEVICE_TYPE" /> <ph name="DOMAIN" />ৰ দ্বাৰা পৰিচালনা কৰা হয়</translation> @@ -327,6 +328,7 @@ <translation id="4217571870635786043">শ্ৰুতলিপি</translation> <translation id="4239069858505860023">জিপিআৰএছ</translation> <translation id="4261870227682513959">জাননীৰ ছেটিং দেখুৱাওক। জাননী অফ আছে</translation> +<translation id="4267383818855338811">এটা ভাৰ্ছুৱেল মেচিনে আপোনাৰ কেমেৰাটো ব্যৱহাৰ কৰি আছে</translation> <translation id="4269883910223712419">এই ডিভাইচটোৰ প্ৰশাসকে এইকেইটা কাৰ্য কৰিব পাৰে:</translation> <translation id="4279490309300973883">প্ৰতিবিম্বকৰণ</translation> <translation id="4285498937028063278">আনপিন কৰক</translation> @@ -362,6 +364,7 @@ <translation id="4513946894732546136">মতামত</translation> <translation id="4527045527269911712">ব্লুটুথ ডিভাইচ "<ph name="DEVICE_NAME" />"এ যোৰা লাগিবলৈ অনুমতি বিচাৰে।</translation> <translation id="453661520163887813">সম্পূর্ণ হ'বলৈ <ph name="TIME" /> বাকী</translation> +<translation id="4544483149666270818">ৰেকৰ্ড কৰিবলৈ এখন ৱিণ্ড’ বাছনি কৰক</translation> <translation id="4560576029703263363">অন আছে</translation> <translation id="4561267230861221837">3G</translation> <translation id="4565377596337484307">পাছৱৰ্ড লুকুৱাওক</translation> @@ -401,6 +404,15 @@ <translation id="4918086044614829423">গ্ৰহণ কৰক</translation> <translation id="4924411785043111640">ৰিষ্টাৰ্ট কৰি ৰিছেট কৰক</translation> <translation id="4925542575807923399">এই একাউণ্টৰ প্ৰশাসকে এই একাউণ্টটো একাধিকবাৰ ছাইন-ইন কৰা কোনো ছেশ্বনত প্ৰথমে ছাইন ইন কৰাটো বিচাৰে।</translation> +<translation id="4942878304446937978">ষ্টেটাছ ট্ৰে’, সময় <ph name="TIME" />, + <ph name="BATTERY" /> + <ph name="NETWORK" />, + <ph name="MIC" />, + <ph name="CAMERA" />, + <ph name="NOTIFICATION" />, + <ph name="IME" /> + <ph name="LOCALE" /></translation> +<translation id="4946376291507881335">কেপচাৰ কৰক</translation> <translation id="495046168593986294">ওপৰলৈ স্ক্ৰল কৰক</translation> <translation id="4961318399572185831">স্ক্রীণ কাষ্ট কৰক</translation> <translation id="4969092041573468113"><ph name="HOURS" /> ঘ <ph name="MINUTES" /> মি <ph name="SECONDS" /> ছে</translation> @@ -446,6 +458,7 @@ <translation id="554893713779400387">শ্ৰুতলিপি দিয়া বুটামটো টগ'ল কৰক</translation> <translation id="556042886152191864">বুটাম</translation> <translation id="5571066253365925590">ব্লুটুথ সক্ষম কৰা হ'ল</translation> +<translation id="558849140439112033">কেপচাৰ কৰিবৰ বাবে এটা অংশ বাছনি কৰিবলৈ টানি আনি এৰক</translation> <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY" />, <ph name="DATE" /></translation> <translation id="5600837773213129531">কথিত প্ৰতিক্ৰিয়া অক্ষম কৰিবলৈ Ctrl + Alt + Z দবাওক।</translation> <translation id="5625955975703555628">এলটিই+</translation> @@ -473,9 +486,11 @@ <translation id="5860033963881614850">অফ আছে</translation> <translation id="5876666360658629066">অভিভাৱকীয় ক’ডটো দিয়ক</translation> <translation id="5895138241574237353">ৰিষ্টাৰ্ট কৰক</translation> +<translation id="589817443623831496">পইণ্ট স্কেনিং</translation> <translation id="5901316534475909376">Shift+Esc</translation> <translation id="5909862606227538307">নিষ্ক্ৰিয় ডেস্ক।</translation> <translation id="5911909173233110115"><ph name="USERNAME" /> (<ph name="MAIL" />)</translation> +<translation id="5915278665499293471">পূৰ্ণস্ক্ৰীন কেপচাৰ কৰিবলৈ যিকোনো ঠাইতে ক্লিক কৰক</translation> <translation id="5916664084637901428">অন আছে</translation> <translation id="5920710855273935292">মাইক মিউট কৰা আছে।</translation> <translation id="594179686076170922">আপোনাৰ ফ’নটোৰ সৈতে সংযোগ কৰি থকা হৈছে…</translation> @@ -533,6 +548,7 @@ <translation id="6490471652906364588">USB-C ডিভাইচ (সোঁফালৰ পর্ট)</translation> <translation id="649452524636452238">স্মার্ট কার্ডৰ পিন</translation> <translation id="6501401484702599040"><ph name="RECEIVER_NAME" />লৈ স্ক্ৰীণ কাষ্টিং কৰি থকা হৈছে</translation> +<translation id="6520517963145875092">কেপচাৰ কৰিবলৈ এখন ৱিণ্ড’ বাছনি কৰক</translation> <translation id="652139407789908527">এই আপডে’টটোৰ সময়ত আপোনাৰ স্ক্ৰীনখনত স্বাভাৱিকতকৈ বেছি সময়ৰ বাবে (এক মিনিট পৰ্যন্ত) একো নোহোৱা হৈ পৰিব। অনুগ্ৰহ কৰি আপডে’ট হৈ থকাৰ সময়ত পাৱাৰ বুটামটো নিটিপিব।</translation> <translation id="6528179044667508675">অসুবিধা নিদিব</translation> <translation id="65320610082834431">ইম'জিসমূহ</translation> @@ -561,6 +577,7 @@ <translation id="6751052314767925245">আপোনাৰ প্ৰশাসকে বলৱৎ কৰা</translation> <translation id="6751826523481687655">কাৰ্যদক্ষতাৰ ট্ৰেচিং অন কৰা হৈছে</translation> <translation id="6752912906630585008"><ph name="REMOVED_DESK" /> ডেস্কখন আঁতৰোৱা হৈছে আৰু <ph name="RECEIVE_DESK" /> ডেস্কৰ সৈতে একত্ৰিত কৰা হৈছে</translation> +<translation id="6757237461819837179">কোনো মিডিয়া প্লে’ হৈ থকা নাই</translation> <translation id="6777216307882431711">সংযোগ হৈ থকা USB-C ডিভাইচসমূহত পাৱাৰ সংযোগ কৰি থকা হৈছে</translation> <translation id="6790428901817661496">প্লে’ কৰক</translation> <translation id="6803622936009808957">কোনো সমৰ্থিত ৰিজ’লিউছন বিচাৰি নোপোৱাৰ বাবে ডিছপ্লে’ৰ প্ৰতিবিম্বকৰণ কৰিব নোৱাৰি। বিস্তাৰিত ডেস্কটপত প্ৰৱেশ কৰিব পৰা নগ’ল।</translation> @@ -608,6 +625,7 @@ <translation id="7348093485538360975">অন-স্ক্ৰীণ কীব’ৰ্ড</translation> <translation id="735745346212279324">VPNৰ সৈতে সংযোগ বিচ্ছিন্ন কৰা হৈছে</translation> <translation id="7377169924702866686">Caps Lock অন আছে।</translation> +<translation id="7378203170292176219">ৰেকৰ্ড কৰিবৰ বাবে এটা অংশ বাছনি কৰিবলৈ টানি আনি এৰক</translation> <translation id="7378594059915113390">মিডিয়াৰ নিয়ন্ত্ৰণসমূহ</translation> <translation id="7398254312354928459">নেটৱৰ্ক সংযোগ সলনি কৰা হ’ল</translation> <translation id="7405710164030118432">ডিভাইচটো আনলক কৰিবলৈ আপোনাৰ Family Linkৰ অভিভাৱকৰ প্ৰৱেশ ক'ডটো দিয়ক</translation> @@ -633,6 +651,7 @@ <translation id="7618774594543487847">নিৰপেক্ষ</translation> <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation> <translation id="7633755430369750696">নিকটৱৰ্তী শ্বেয়াৰৰ ছেটিং দেখুৱাওক।</translation> +<translation id="7641938616688887143">ৰেকৰ্ড কৰক</translation> <translation id="7642647758716480637"><ph name="NETWORK_NAME" />ৰ বাবে ছেটিংসমূহ খোলক, <ph name="CONNECTION_STATUS" /></translation> <translation id="7645176681409127223"><ph name="USER_NAME" /> (গৰাকী)</translation> <translation id="7647488630410863958">আপোনাৰ জাননীবোৰ চাবলৈ ডিভাইচ আনলক কৰক</translation> @@ -728,6 +747,7 @@ <translation id="8563862697512465947">জাননীৰ ছেটিংসমূহ</translation> <translation id="857201607579416096">স্ক্ৰীনখনৰ তলৰ সোঁফালৰ কোণটোলৈ মেনুখন নিয়া হৈছে।</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> +<translation id="861041328460089089">পূৰ্ণস্ক্ৰীন কেপচাৰ কৰিবলৈ যিকোনো ঠাইত টিপক</translation> <translation id="8627191004499078455"><ph name="DEVICE_NAME" />ৰ সৈতে সংযোজিত</translation> <translation id="8631727435199967028">সাধ্য সুবিধাৰ ছেটিংসমূহ</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, ছিগনেলৰ ক্ষমতা <ph name="SIGNAL_STRENGTH" />, আপোনাৰ প্ৰশাসকে পৰিচালনা কৰে</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb index 0aa536b3..62b1a6d 100644 --- a/ash/strings/ash_strings_bg.xtb +++ b/ash/strings/ash_strings_bg.xtb
@@ -100,6 +100,7 @@ <translation id="1888656773939766144"><ph name="DISPLAY_NAME" /> не поддържа <ph name="SPECIFIED_RESOLUTION" /> (<ph name="SPECIFIED_REFRESH_RATE" /> Хц). Разделителната способност бе променена на <ph name="FALLBACK_RESOLUTION" /> (<ph name="FALLBACK_REFRESH_RATE" />). Кликнете върху бутона за потвърждаване, за да запазите промените. Предишните настройки ще бъдат възстановени след <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1919743966458266018">Комбинацията за отваряне на диспечера на задачите е променена. Моля, използвайте „<ph name="NEW_SHORTCUT" />“ вместо „<ph name="OLD_SHORTCUT" />“.</translation> <translation id="1923539912171292317">Автоматични кликвания</translation> +<translation id="1924640696879807758">От телефона</translation> <translation id="1928739107511554905">За да инсталирате актуализацията, използвайте сензорния екран да рестартирате своя Chromebook, докато клавиатурата е прикачена.</translation> <translation id="1951012854035635156">Асистент</translation> <translation id="1957803754585243749">0°</translation> @@ -686,6 +687,7 @@ <translation id="7904094684485781019">Администраторът на този профил е забранил централизирания вход.</translation> <translation id="7933084174919150729">Google Асистент е налице само за основния потребителски профил.</translation> <translation id="79341161159229895">Профилът се управлява от <ph name="FIRST_PARENT_EMAIL" /> и <ph name="SECOND_PARENT_EMAIL" /></translation> +<translation id="793716872548410480">Натиснете <ph name="SHORTCUT_KEY_NAME" /> + V, за да видите буферната памет. В нея се запазват последните 5 неща, които сте копирали.</translation> <translation id="7955885781510802139">Режим на висок контраст</translation> <translation id="7977927628060636163">Търсят се мобилни мрежи...</translation> <translation id="7980780401175799550">Изпробвайте нови начини за навигиране в Chrome OS</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb index 72b5841..99155301 100644 --- a/ash/strings/ash_strings_da.xtb +++ b/ash/strings/ash_strings_da.xtb
@@ -100,6 +100,7 @@ <translation id="1888656773939766144"><ph name="DISPLAY_NAME" /> understøtter ikke <ph name="SPECIFIED_RESOLUTION" /> (<ph name="SPECIFIED_REFRESH_RATE" /> Hz). Opløsningen blev ændret til <ph name="FALLBACK_RESOLUTION" /> (<ph name="FALLBACK_REFRESH_RATE" />). Klik på Bekræft for at anvende ændringerne. De tidligere indstillinger gendannes om <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1919743966458266018">Genvejen til at åbne Jobliste er ændret. Brug <ph name="NEW_SHORTCUT" /> i stedet for <ph name="OLD_SHORTCUT" />.</translation> <translation id="1923539912171292317">Automatiske klik</translation> +<translation id="1924640696879807758">Fra telefon</translation> <translation id="1928739107511554905">Brug touchskærmen til at genstarte din Chromebook med det tilsluttede tastatur for at hente opdateringen.</translation> <translation id="1951012854035635156">Assistent</translation> <translation id="1957803754585243749">0°</translation> @@ -687,6 +688,7 @@ <translation id="7904094684485781019">Administratoren for denne konto tillader ikke samlet login fra flere konti.</translation> <translation id="7933084174919150729">Google Assistent kan kun bruges via den primære profil.</translation> <translation id="79341161159229895">Kontoen administreres af <ph name="FIRST_PARENT_EMAIL" /> og <ph name="SECOND_PARENT_EMAIL" /></translation> +<translation id="793716872548410480">Tryk på <ph name="SHORTCUT_KEY_NAME" />+V for at se din udklipsholder. De seneste fem elementer, du har kopieret, gemmes i din udklipsholder.</translation> <translation id="7955885781510802139">Tilstanden Høj kontrast</translation> <translation id="7977927628060636163">Søger efter mobilnetværk...</translation> <translation id="7980780401175799550">Prøv nye måder at navigere på i Chrome OS</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb index 0ccbe683..bd55e02a 100644 --- a/ash/strings/ash_strings_es-419.xtb +++ b/ash/strings/ash_strings_es-419.xtb
@@ -315,6 +315,7 @@ <translation id="4072264167173457037">Señal media</translation> <translation id="4112140312785995938">Buscar más atrás</translation> <translation id="4114315158543974537">Activa Phone Hub</translation> +<translation id="4121728057981832179">Una máquina virtual está usando el micrófono</translation> <translation id="4129129681837227511">Para ver notificaciones en la pantalla bloqueada, desbloquéala para cambiar la configuración</translation> <translation id="4146833061457621061">Reproducir música</translation> <translation id="4149156641122542261">Dispositivo <ph name="DEVICE_TYPE" /> administrado por <ph name="DOMAIN" /></translation> @@ -329,6 +330,7 @@ <translation id="4217571870635786043">Dictado</translation> <translation id="4239069858505860023">GPRS</translation> <translation id="4261870227682513959">Mostrar la configuración de las notificaciones: Están desactivadas</translation> +<translation id="4267383818855338811">Una máquina virtual está usando la cámara</translation> <translation id="4269883910223712419">El administrador de este dispositivo puede hacer lo siguiente:</translation> <translation id="4279490309300973883">Duplicando</translation> <translation id="4285498937028063278">No fijar</translation> @@ -364,6 +366,7 @@ <translation id="4513946894732546136">Comentario</translation> <translation id="4527045527269911712">El dispositivo Bluetooth "<ph name="DEVICE_NAME" />" solicita permiso para sincronizarse.</translation> <translation id="453661520163887813"><ph name="TIME" /> para completar carga</translation> +<translation id="4544483149666270818">Selecciona una ventana que quieras grabar</translation> <translation id="4560576029703263363">Sí</translation> <translation id="4561267230861221837">3G</translation> <translation id="4565377596337484307">Ocultar contraseña</translation> @@ -403,6 +406,15 @@ <translation id="4918086044614829423">Aceptar</translation> <translation id="4924411785043111640">Reiniciar y restablecer</translation> <translation id="4925542575807923399">El administrador de esta cuenta requiere que sea la primera a la que se acceda al crear una sesión de acceso múltiple.</translation> +<translation id="4942878304446937978">Bandeja de estado, hora <ph name="TIME" />, + <ph name="BATTERY" /> + <ph name="NETWORK" />, + <ph name="MIC" />, + <ph name="CAMERA" />, + <ph name="NOTIFICATION" />, + <ph name="IME" /> + <ph name="LOCALE" /></translation> +<translation id="4946376291507881335">Captura</translation> <translation id="495046168593986294">Desplazar hacia arriba</translation> <translation id="4961318399572185831">Transmitir pantalla</translation> <translation id="4969092041573468113"><ph name="HOURS" /> h <ph name="MINUTES" /> min <ph name="SECONDS" /> s</translation> @@ -448,6 +460,7 @@ <translation id="554893713779400387">Activar o desactivar el dictado</translation> <translation id="556042886152191864">Botón</translation> <translation id="5571066253365925590">Bluetooth activado</translation> +<translation id="558849140439112033">Arrastra el cursor para seleccionar un área que quieras capturar</translation> <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY" />, <ph name="DATE" /></translation> <translation id="5600837773213129531">Presiona Ctrl + Alt + Z para inhabilitar los comentarios por voz.</translation> <translation id="5625955975703555628">LTE+</translation> @@ -475,9 +488,11 @@ <translation id="5860033963881614850">Desactivado</translation> <translation id="5876666360658629066">Ingresa el código parental</translation> <translation id="5895138241574237353">Reiniciar</translation> +<translation id="589817443623831496">Búsqueda puntual</translation> <translation id="5901316534475909376">Mayúscula + Esc</translation> <translation id="5909862606227538307">Escritorio inactivo.</translation> <translation id="5911909173233110115"><ph name="USERNAME" /> (<ph name="MAIL" />)</translation> +<translation id="5915278665499293471">Haz clic en cualquier parte para capturar la pantalla completa</translation> <translation id="5916664084637901428">Activado</translation> <translation id="5920710855273935292">El micrófono está silenciado.</translation> <translation id="594179686076170922">Conectando con tu teléfono…</translation> @@ -535,6 +550,7 @@ <translation id="6490471652906364588">Dispositivo USB-C (puerto derecho)</translation> <translation id="649452524636452238">PIN de la tarjeta inteligente</translation> <translation id="6501401484702599040">Transmitiendo pantalla a <ph name="RECEIVER_NAME" /></translation> +<translation id="6520517963145875092">Selecciona una ventana que quieras capturar</translation> <translation id="652139407789908527">Durante esta actualización, se apagará la pantalla por más tiempo que lo usual (hasta un minuto). Mientras se realiza la actualización, no presiones el botón de encendido.</translation> <translation id="6528179044667508675">No interrumpir</translation> <translation id="65320610082834431">Emojis</translation> @@ -563,6 +579,7 @@ <translation id="6751052314767925245">El administrador controla la función</translation> <translation id="6751826523481687655">Se activó el registro del rendimiento</translation> <translation id="6752912906630585008">Se quitó el escritorio <ph name="REMOVED_DESK" /> y se combinó con el <ph name="RECEIVE_DESK" /></translation> +<translation id="6757237461819837179">No se está reproduciendo nada</translation> <translation id="6777216307882431711">Se están cargando los dispositivos USB-C conectados</translation> <translation id="6790428901817661496">Reproducir</translation> <translation id="6803622936009808957">No se pudieron reflejar las pantallas porque no se encontraron resoluciones compatibles. En su lugar, se activó el escritorio extendido.</translation> @@ -611,6 +628,7 @@ <translation id="7348093485538360975">Teclado en pantalla</translation> <translation id="735745346212279324">VPN desconectada</translation> <translation id="7377169924702866686">Bloq Mayús está activado.</translation> +<translation id="7378203170292176219">Arrastra para seleccionar un área que quieras grabar</translation> <translation id="7378594059915113390">Controles de contenido multimedia</translation> <translation id="7398254312354928459">Se cambió la conexión de red</translation> <translation id="7405710164030118432">Para desbloquear el dispositivo, ingresa el código de acceso para padres de Family Link</translation> @@ -637,6 +655,7 @@ <translation id="7618774594543487847">Neutro</translation> <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation> <translation id="7633755430369750696">Mostrar la configuración de Compartir con Nearby</translation> +<translation id="7641938616688887143">Graba</translation> <translation id="7642647758716480637">Abrir la configuración para <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation> <translation id="7645176681409127223"><ph name="USER_NAME" /> (propietario/a)</translation> <translation id="7647488630410863958">Desbloquea el dispositivo para ver tus notificaciones</translation> @@ -733,6 +752,7 @@ <translation id="8563862697512465947">Configuración de notificación</translation> <translation id="857201607579416096">El menú se movió a la esquina inferior derecha de la pantalla.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> +<translation id="861041328460089089">Presiona en cualquier parte para capturar la pantalla completa</translation> <translation id="8627191004499078455">Conectado a <ph name="DEVICE_NAME" /></translation> <translation id="8631727435199967028">Configuración de accesibilidad</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, intensidad de la señal: <ph name="SIGNAL_STRENGTH" />, administrada por tu administrador</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb index 887d4f3ca..a8b05f2 100644 --- a/ash/strings/ash_strings_sk.xtb +++ b/ash/strings/ash_strings_sk.xtb
@@ -100,6 +100,7 @@ <translation id="1888656773939766144"><ph name="DISPLAY_NAME" /> nepodporuje rozlíšenie <ph name="SPECIFIED_RESOLUTION" /> (<ph name="SPECIFIED_REFRESH_RATE" /> Hz). Rozlíšenie bolo zmenené na <ph name="FALLBACK_RESOLUTION" /> (<ph name="FALLBACK_REFRESH_RATE" />). Zmeny ponecháte kliknutím na Potvrdiť. Predchádzajúce nastavenia budú obnovené o <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1919743966458266018">Skratka otvorenia správcu úloh bola zmenená. Namiesto skratky <ph name="OLD_SHORTCUT" /> používajte kombináciu klávesov <ph name="NEW_SHORTCUT" />.</translation> <translation id="1923539912171292317">Automatické kliknutia</translation> +<translation id="1924640696879807758">Z telefónu</translation> <translation id="1928739107511554905">Ak chcete získať aktualizáciu, reštartuje Chromebook s pripojenou klávesnicou pomocou dotykovej obrazovky.</translation> <translation id="1951012854035635156">Asistent</translation> <translation id="1957803754585243749">0°</translation> @@ -686,6 +687,7 @@ <translation id="7904094684485781019">Správca tohto účtu zakázal viacnásobné prihlásenie.</translation> <translation id="7933084174919150729">Asistent Google je k dispozícii iba pre primárny profil.</translation> <translation id="79341161159229895">Správcovia účtu: <ph name="FIRST_PARENT_EMAIL" /> a <ph name="SECOND_PARENT_EMAIL" /></translation> +<translation id="793716872548410480">Schránku zobrazíte klávesmi <ph name="SHORTCUT_KEY_NAME" /> + V. Posledných päť skopírovaných položiek sa uloží do vašej schránky.</translation> <translation id="7955885781510802139">Režim s vysokým kontrastom</translation> <translation id="7977927628060636163">Hľadajú sa mobilné siete...</translation> <translation id="7980780401175799550">Vyskúšajte nové spôsoby navigácie v systéme Chrome OS</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb index 129a52c..bde57cc 100644 --- a/ash/strings/ash_strings_sw.xtb +++ b/ash/strings/ash_strings_sw.xtb
@@ -100,6 +100,7 @@ <translation id="1888656773939766144"><ph name="DISPLAY_NAME" /> haitumii <ph name="SPECIFIED_RESOLUTION" /> (Hz <ph name="SPECIFIED_REFRESH_RATE" />). Ubora umebadilishwa kuwa <ph name="FALLBACK_RESOLUTION" /> (<ph name="FALLBACK_REFRESH_RATE" />). Bofya 'thibitisha' ili uhifadhi mabadiliko. Mipangilio ya awali itarejeshwa baada ya <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1919743966458266018">Njia ya mkato ya kufungua kidhibiti cha shughuli kwenye Chrome imebadilika. Tafadhali tumia <ph name="NEW_SHORTCUT" /> badala ya <ph name="OLD_SHORTCUT" />.</translation> <translation id="1923539912171292317">Mibofyo ya kiotomatiki</translation> +<translation id="1924640696879807758">Kutoka kwenye Simu</translation> <translation id="1928739107511554905">Ili usasishe, tumia skrini ya kugusa kuwasha Chromebook yako upya huku kibodi ikiwa imeunganishwa.</translation> <translation id="1951012854035635156">Mratibu</translation> <translation id="1957803754585243749">0°</translation> @@ -687,6 +688,7 @@ <translation id="7904094684485781019">Msimamizi wa akaunti hii ameondoa uwezo wa kuingia katika akaunti nyingi kwa wakati mmoja</translation> <translation id="7933084174919150729">Programu ya Mratibu wa Google inapatikana kwenye wasifu wa msingi pekee.</translation> <translation id="79341161159229895">Akaunti inasimamiwa na <ph name="FIRST_PARENT_EMAIL" /> na <ph name="SECOND_PARENT_EMAIL" /></translation> +<translation id="793716872548410480">Bonyeza <ph name="SHORTCUT_KEY_NAME" /> + V ili uangalie ubao wako wa kunakili. Vipengee vitano vya mwisho ulivyovinakili vimehifadhiwa kwenye ubao wako wa kunakili.</translation> <translation id="7955885781510802139">Hali ya utofautishaji wa juu</translation> <translation id="7977927628060636163">Inatafuta mitandao ya simu...</translation> <translation id="7980780401175799550">Jaribu njia mpya za kutumia Mfumo wa Uendeshaji wa Chrome</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb index 42ab060d..849dc42 100644 --- a/ash/strings/ash_strings_uz.xtb +++ b/ash/strings/ash_strings_uz.xtb
@@ -100,6 +100,7 @@ <translation id="1888656773939766144"><ph name="DISPLAY_NAME" /> <ph name="SPECIFIED_RESOLUTION" /> (<ph name="SPECIFIED_REFRESH_RATE" /> Hz) tiniqlikda ishlamaydi. Tasvir <ph name="FALLBACK_RESOLUTION" /> (<ph name="FALLBACK_REFRESH_RATE" />) tiniqligiga qaytarildi. Tasdiqlash uchun bosing. Eski sozlamalar <ph name="TIMEOUT_SECONDS" /> dan keyin tiklanadi.</translation> <translation id="1919743966458266018">Vazifalar menejerini ishga tushirish uchun tugmalar birikmasi o‘zgardi. Endi “<ph name="OLD_SHORTCUT" />” o‘rniga “<ph name="NEW_SHORTCUT" />” birikmasidan foydalaning.</translation> <translation id="1923539912171292317">Avtomatik bosishlar</translation> +<translation id="1924640696879807758">Telefondan</translation> <translation id="1928739107511554905">Yangilanishni o‘rnatish uchun Chromebook qurilmangizni klaviaturani uzmasdan sensor paneli orqali o‘chirib yoqing.</translation> <translation id="1951012854035635156">Assistent</translation> <translation id="1957803754585243749">0°</translation> @@ -686,6 +687,7 @@ <translation id="7904094684485781019">Administrator bu hisobga boshqa hisoblar bilan birdaniga kirishni taqiqlab qo‘ygan.</translation> <translation id="7933084174919150729">Google Assistent faqat asosiy profilda ishlaydi xolos.</translation> <translation id="79341161159229895">Hisobni <ph name="FIRST_PARENT_EMAIL" /> va <ph name="SECOND_PARENT_EMAIL" /> boshqaradi</translation> +<translation id="793716872548410480">Klipbordni koʻrish uchun <ph name="SHORTCUT_KEY_NAME" /> + V tugmalarini bosing. Nusxalangan oxirgi 5 ta element klipbordga saqlandi.</translation> <translation id="7955885781510802139">Yuqori kontrastli rejim</translation> <translation id="7977927628060636163">Mobil tarmoqlar qidirilmoqda...</translation> <translation id="7980780401175799550">Chrome OS tizimini yangi usulda boshqaring</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb index 1794a2b..0915a02 100644 --- a/ash/strings/ash_strings_zh-CN.xtb +++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -314,6 +314,7 @@ <translation id="4072264167173457037">信号中等</translation> <translation id="4112140312785995938">快退</translation> <translation id="4114315158543974537">开启手机中心</translation> +<translation id="4121728057981832179">有一台虚拟机正在使用您的麦克风</translation> <translation id="4129129681837227511">要想在锁定屏幕上看到通知,请解锁设备以更改设置</translation> <translation id="4146833061457621061">播放音乐</translation> <translation id="4149156641122542261">此 <ph name="DEVICE_TYPE" /> 由 <ph name="DOMAIN" /> 管理</translation> @@ -328,6 +329,7 @@ <translation id="4217571870635786043">语音输入</translation> <translation id="4239069858505860023">GPRS</translation> <translation id="4261870227682513959">显示通知设置。通知已关闭</translation> +<translation id="4267383818855338811">有一台虚拟机正在使用您的摄像头</translation> <translation id="4269883910223712419">此设备的管理员能够:</translation> <translation id="4279490309300973883">正在镜像</translation> <translation id="4285498937028063278">取消固定</translation> @@ -363,6 +365,7 @@ <translation id="4513946894732546136">反馈</translation> <translation id="4527045527269911712">蓝牙设备“<ph name="DEVICE_NAME" />”需要配对许可。</translation> <translation id="453661520163887813"><ph name="TIME" /> 后充满</translation> +<translation id="4544483149666270818">选择一个窗口即可录制</translation> <translation id="4560576029703263363">已开启</translation> <translation id="4561267230861221837">3G</translation> <translation id="4565377596337484307">隐藏密码</translation> @@ -402,6 +405,15 @@ <translation id="4918086044614829423">接受</translation> <translation id="4924411785043111640">重启并重置</translation> <translation id="4925542575807923399">此帐号的管理员规定:在多帐号登录会话中,此帐号必须是最先登录的帐号。</translation> +<translation id="4942878304446937978">状态栏,时间为 <ph name="TIME" />, + <ph name="BATTERY" /> + <ph name="NETWORK" />, + <ph name="MIC" />, + <ph name="CAMERA" />, + <ph name="NOTIFICATION" />, + <ph name="IME" /> + <ph name="LOCALE" /></translation> +<translation id="4946376291507881335">截图</translation> <translation id="495046168593986294">向上滚动</translation> <translation id="4961318399572185831">投射屏幕</translation> <translation id="4969092041573468113"><ph name="HOURS" /> 小时 <ph name="MINUTES" /> 分 <ph name="SECONDS" /> 秒</translation> @@ -447,6 +459,7 @@ <translation id="554893713779400387">开启/关闭语音输入</translation> <translation id="556042886152191864">按钮</translation> <translation id="5571066253365925590">蓝牙已启用</translation> +<translation id="558849140439112033">拖动鼠标指针即可选择要截取的区域</translation> <translation id="5597451508971090205"><ph name="DATE" /><ph name="SHORT_WEEKDAY" /></translation> <translation id="5600837773213129531">按 Ctrl + Alt + Z 即可停用语音反馈。</translation> <translation id="5625955975703555628">LTE+</translation> @@ -474,9 +487,11 @@ <translation id="5860033963881614850">关闭</translation> <translation id="5876666360658629066">输入家长访问码</translation> <translation id="5895138241574237353">重新启动</translation> +<translation id="589817443623831496">点扫描</translation> <translation id="5901316534475909376">Shift+Esc</translation> <translation id="5909862606227538307">闲置的桌面。</translation> <translation id="5911909173233110115"><ph name="USERNAME" /> (<ph name="MAIL" />)</translation> +<translation id="5915278665499293471">点击任意位置即可截取全屏</translation> <translation id="5916664084637901428">启用</translation> <translation id="5920710855273935292">麦克风已静音。</translation> <translation id="594179686076170922">正在连接到您的手机…</translation> @@ -534,6 +549,7 @@ <translation id="6490471652906364588">USB-C 设备(右侧端口)</translation> <translation id="649452524636452238">智能卡 PIN 码</translation> <translation id="6501401484702599040">正在将屏幕投射到“<ph name="RECEIVER_NAME" />”</translation> +<translation id="6520517963145875092">选择一个窗口即可截图</translation> <translation id="652139407789908527">在此次更新期间,您的屏幕变为空白的时间会比平时长(可长达 1 分钟)。在更新过程中,请不要按电源按钮。</translation> <translation id="6528179044667508675">请勿打扰</translation> <translation id="65320610082834431">表情符号</translation> @@ -562,6 +578,7 @@ <translation id="6751052314767925245">由您的管理员强制执行</translation> <translation id="6751826523481687655">已启用性能跟踪</translation> <translation id="6752912906630585008">桌面“<ph name="REMOVED_DESK" />”已移除并与桌面“<ph name="RECEIVE_DESK" />”合并</translation> +<translation id="6757237461819837179">目前未播放任何媒体</translation> <translation id="6777216307882431711">正在为已连接的 USB-C 设备充电</translation> <translation id="6790428901817661496">播放</translation> <translation id="6803622936009808957">找不到系统支持的分辨率,因此无法镜像显示屏。已改为进入扩展桌面。</translation> @@ -610,6 +627,7 @@ <translation id="7348093485538360975">屏幕键盘</translation> <translation id="735745346212279324">VPN 连接已断开</translation> <translation id="7377169924702866686">大写锁定已打开。</translation> +<translation id="7378203170292176219">拖动鼠标指针即可选择要录制的区域</translation> <translation id="7378594059915113390">媒体控件</translation> <translation id="7398254312354928459">已切换网络连接</translation> <translation id="7405710164030118432">要解锁此设备,请输入您的 Family Link 家长访问码</translation> @@ -636,6 +654,7 @@ <translation id="7618774594543487847">中性</translation> <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> 华氏度</translation> <translation id="7633755430369750696">显示“附近分享”设置。</translation> +<translation id="7641938616688887143">录制</translation> <translation id="7642647758716480637">打开<ph name="NETWORK_NAME" />(<ph name="CONNECTION_STATUS" />)的设置</translation> <translation id="7645176681409127223"><ph name="USER_NAME" />(所有者)</translation> <translation id="7647488630410863958">解锁设备即可查看您的通知</translation> @@ -732,6 +751,7 @@ <translation id="8563862697512465947">通知设置</translation> <translation id="857201607579416096">菜单已移至屏幕的右下角。</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> +<translation id="861041328460089089">点按任意位置即可截取全屏</translation> <translation id="8627191004499078455">已连接到<ph name="DEVICE_NAME" /></translation> <translation id="8631727435199967028">无障碍设置</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />,信号强度为 <ph name="SIGNAL_STRENGTH" />,由您的管理员管理</translation>
diff --git a/ash/system/DIR_METADATA b/ash/system/DIR_METADATA index 4bbde9b..a784b2e 100644 --- a/ash/system/DIR_METADATA +++ b/ash/system/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>StatusArea"
diff --git a/ash/system/accessibility/DIR_METADATA b/ash/system/accessibility/DIR_METADATA index f636d5e..9b0c277b 100644 --- a/ash/system/accessibility/DIR_METADATA +++ b/ash/system/accessibility/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Accessibility"
diff --git a/ash/system/bluetooth/DIR_METADATA b/ash/system/bluetooth/DIR_METADATA index 90a2dde..88733b0 100644 --- a/ash/system/bluetooth/DIR_METADATA +++ b/ash/system/bluetooth/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "OS>Systems>Network>Bluetooth"
diff --git a/ash/system/keyboard_brightness/DIR_METADATA b/ash/system/keyboard_brightness/DIR_METADATA index e3e670a..a1a51154 100644 --- a/ash/system/keyboard_brightness/DIR_METADATA +++ b/ash/system/keyboard_brightness/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "OS>Systems>Input>Keyboard"
diff --git a/ash/system/message_center/DIR_METADATA b/ash/system/message_center/DIR_METADATA index b1234b07..be299334b 100644 --- a/ash/system/message_center/DIR_METADATA +++ b/ash/system/message_center/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>Notifications"
diff --git a/ash/system/network/DIR_METADATA b/ash/system/network/DIR_METADATA index b617395..66e1d85 100644 --- a/ash/system/network/DIR_METADATA +++ b/ash/system/network/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "OS>Systems>Network"
diff --git a/ash/system/night_light/DIR_METADATA b/ash/system/night_light/DIR_METADATA index 6c35de3..c58aa6d 100644 --- a/ash/system/night_light/DIR_METADATA +++ b/ash/system/night_light/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>NightLight"
diff --git a/ash/system/phonehub/bluetooth_disabled_view.cc b/ash/system/phonehub/bluetooth_disabled_view.cc index 72fac97..04185a6 100644 --- a/ash/system/phonehub/bluetooth_disabled_view.cc +++ b/ash/system/phonehub/bluetooth_disabled_view.cc
@@ -9,6 +9,7 @@ #include "ash/style/ash_color_provider.h" #include "ash/system/phonehub/interstitial_view_button.h" #include "ash/system/phonehub/phone_hub_interstitial_view.h" +#include "ash/system/phonehub/phone_hub_metrics.h" #include "ash/system/phonehub/phone_hub_view_ids.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" @@ -17,6 +18,10 @@ namespace ash { +using phone_hub_metrics::InterstitialScreen; +using phone_hub_metrics::InterstitialScreenEvent; +using phone_hub_metrics::LogInterstitialScreenEvent; + namespace { // Tag value used to uniquely identify the "Learn More" and "Ok, got it" @@ -62,6 +67,9 @@ /*paint_background=*/true); refresh->set_tag(kOkButtonTag); content_view_->AddButton(std::move(refresh)); + + LogInterstitialScreenEvent(InterstitialScreen::kBluetoothOrWifiDisabled, + InterstitialScreenEvent::kShown); } BluetoothDisabledView::~BluetoothDisabledView() = default; @@ -69,6 +77,13 @@ void BluetoothDisabledView::ButtonPressed(views::Button* sender, const ui::Event& event) { // TODO(crbug.com/1126208): implement button pressed actions. + if (sender->tag() == kLearnMoreButtonTag) { + LogInterstitialScreenEvent(InterstitialScreen::kBluetoothOrWifiDisabled, + InterstitialScreenEvent::kLearnMore); + } else if (sender->tag() == kOkButtonTag) { + LogInterstitialScreenEvent(InterstitialScreen::kBluetoothOrWifiDisabled, + InterstitialScreenEvent::kConfirm); + } } BEGIN_METADATA(BluetoothDisabledView, views::View)
diff --git a/ash/system/phonehub/connection_error_view.cc b/ash/system/phonehub/connection_error_view.cc index b222d02..1b42b0d 100644 --- a/ash/system/phonehub/connection_error_view.cc +++ b/ash/system/phonehub/connection_error_view.cc
@@ -12,6 +12,7 @@ #include "ash/style/ash_color_provider.h" #include "ash/system/phonehub/interstitial_view_button.h" #include "ash/system/phonehub/phone_hub_interstitial_view.h" +#include "ash/system/phonehub/phone_hub_metrics.h" #include "ash/system/phonehub/phone_hub_view_ids.h" #include "chromeos/components/phonehub/connection_scheduler.h" #include "ui/base/l10n/l10n_util.h" @@ -21,6 +22,10 @@ namespace ash { +using phone_hub_metrics::InterstitialScreen; +using phone_hub_metrics::InterstitialScreenEvent; +using phone_hub_metrics::LogInterstitialScreenEvent; + namespace { // TODO(meilinw): replace it with the real one. @@ -55,8 +60,11 @@ content_view_->SetDescription(l10n_util::GetStringUTF16( IDS_ASH_PHONE_HUB_CONNECTION_ERROR_DIALOG_DESCRIPTION)); - if (error == ErrorStatus::kReconnecting) + if (error == ErrorStatus::kReconnecting) { + LogInterstitialScreenEvent(InterstitialScreen::kReconnecting, + InterstitialScreenEvent::kShown); return; + } // Add "Learn more" and "Refresh" buttons only for disconnected state. auto learn_more = std::make_unique<InterstitialViewButton>( @@ -77,18 +85,30 @@ /*paint_background=*/true); refresh->SetID(PhoneHubViewID::kDisconnectedRefreshButton); content_view_->AddButton(std::move(refresh)); + + LogInterstitialScreenEvent(InterstitialScreen::kConnectionError, + InterstitialScreenEvent::kShown); } ConnectionErrorView::~ConnectionErrorView() = default; void ConnectionErrorView::ButtonPressed(views::Button* sender, const ui::Event& event) { + InterstitialScreen interstitial_screen = + GetID() == PhoneHubViewID::kReconnectingView + ? InterstitialScreen::kReconnecting + : InterstitialScreen::kConnectionError; + switch (sender->GetID()) { case PhoneHubViewID::kDisconnectedRefreshButton: + LogInterstitialScreenEvent(interstitial_screen, + InterstitialScreenEvent::kConfirm); // Retry the connection attempt. connection_scheduler_->ScheduleConnectionNow(); return; case PhoneHubViewID::kDisconnectedLearnMoreButton: + LogInterstitialScreenEvent(interstitial_screen, + InterstitialScreenEvent::kLearnMore); NewWindowDelegate::GetInstance()->NewTabWithUrl( GURL(kLearnMoreUrl), /*from_user_interaction=*/true); return;
diff --git a/ash/system/phonehub/initial_connecting_view.cc b/ash/system/phonehub/initial_connecting_view.cc index ab93e35..e8ed3b0 100644 --- a/ash/system/phonehub/initial_connecting_view.cc +++ b/ash/system/phonehub/initial_connecting_view.cc
@@ -10,6 +10,7 @@ #include "ash/public/cpp/resources/grit/ash_public_unscaled_resources.h" #include "ash/strings/grit/ash_strings.h" #include "ash/system/phonehub/phone_hub_interstitial_view.h" +#include "ash/system/phonehub/phone_hub_metrics.h" #include "ash/system/phonehub/phone_hub_view_ids.h" #include "base/strings/string16.h" #include "ui/base/l10n/l10n_util.h" @@ -19,6 +20,10 @@ namespace ash { +using phone_hub_metrics::InterstitialScreen; +using phone_hub_metrics::InterstitialScreenEvent; +using phone_hub_metrics::LogInterstitialScreenEvent; + InitialConnectingView::InitialConnectingView() { SetID(PhoneHubViewID::kInitialConnectingView); SetLayoutManager(std::make_unique<views::FillLayout>()); @@ -34,6 +39,9 @@ IDS_ASH_PHONE_HUB_INITIAL_CONNECTING_DIALOG_TITLE)); content_view_->SetDescription(l10n_util::GetStringUTF16( IDS_ASH_PHONE_HUB_INITIAL_CONNECTING_DIALOG_DESCRIPTION)); + + LogInterstitialScreenEvent(InterstitialScreen::kInitialConnecting, + InterstitialScreenEvent::kShown); } InitialConnectingView::~InitialConnectingView() = default;
diff --git a/ash/system/phonehub/notification_opt_in_view.cc b/ash/system/phonehub/notification_opt_in_view.cc index cc331b3..188f53c 100644 --- a/ash/system/phonehub/notification_opt_in_view.cc +++ b/ash/system/phonehub/notification_opt_in_view.cc
@@ -10,6 +10,7 @@ #include "ash/strings/grit/ash_strings.h" #include "ash/style/ash_color_provider.h" #include "ash/system/phonehub/interstitial_view_button.h" +#include "ash/system/phonehub/phone_hub_metrics.h" #include "ash/system/phonehub/phone_hub_view_ids.h" #include "ash/system/tray/tray_bubble_view.h" #include "ash/system/tray/tray_popup_item_style.h" @@ -28,6 +29,10 @@ namespace ash { +using phone_hub_metrics::InterstitialScreen; +using phone_hub_metrics::InterstitialScreenEvent; +using phone_hub_metrics::LogInterstitialScreenEvent; + namespace { // Appearance. @@ -54,6 +59,8 @@ : bubble_view_(bubble_view) { SetID(PhoneHubViewID::kNotificationOptInView); InitLayout(); + LogInterstitialScreenEvent(InterstitialScreen::kNotificationOptIn, + InterstitialScreenEvent::kShown); } NotificationOptInView::~NotificationOptInView() = default; @@ -63,12 +70,16 @@ switch (sender->tag()) { case kDismissButtonTag: // Dismiss this view if user chose to opt out and update the bubble size. + LogInterstitialScreenEvent(InterstitialScreen::kNotificationOptIn, + InterstitialScreenEvent::kDismiss); SetVisible(false); bubble_view_->UpdateBubble(); break; case kSetUpButtonTag: // Opens the notification set up dialog in settings to start the opt in // flow. + LogInterstitialScreenEvent(InterstitialScreen::kNotificationOptIn, + InterstitialScreenEvent::kConfirm); NewWindowDelegate::GetInstance()->NewTabWithUrl( GURL(kMultideviceSettingsUrl), /*from_user_interaction=*/true); break;
diff --git a/ash/system/phonehub/onboarding_view.cc b/ash/system/phonehub/onboarding_view.cc index fe4bc5be..82318f1 100644 --- a/ash/system/phonehub/onboarding_view.cc +++ b/ash/system/phonehub/onboarding_view.cc
@@ -16,6 +16,7 @@ #include "ash/system/model/system_tray_model.h" #include "ash/system/phonehub/interstitial_view_button.h" #include "ash/system/phonehub/phone_hub_interstitial_view.h" +#include "ash/system/phonehub/phone_hub_metrics.h" #include "ash/system/phonehub/phone_hub_view_ids.h" #include "ash/system/unified/rounded_label_button.h" #include "base/strings/string16.h" @@ -29,6 +30,10 @@ namespace ash { +using phone_hub_metrics::InterstitialScreen; +using phone_hub_metrics::InterstitialScreenEvent; +using phone_hub_metrics::LogInterstitialScreenEvent; + OnboardingView::OnboardingView( chromeos::phonehub::OnboardingUiTracker* onboarding_ui_tracker) : onboarding_ui_tracker_(onboarding_ui_tracker) { @@ -66,6 +71,10 @@ /*paint_background=*/true); get_started->SetID(PhoneHubViewID::kOnboardingGetStartedButton); content_view_->AddButton(std::move(get_started)); + + // TODO(tengs): Distinguish between the two different onboarding flows. + LogInterstitialScreenEvent(InterstitialScreen::kOnboardingNewMultideviceUser, + InterstitialScreenEvent::kShown); } OnboardingView::~OnboardingView() = default; @@ -74,9 +83,17 @@ const ui::Event& event) { switch (sender->GetID()) { case PhoneHubViewID::kOnboardingGetStartedButton: + // TODO(tengs): Distinguish between the two different onboarding flows. + LogInterstitialScreenEvent( + InterstitialScreen::kOnboardingNewMultideviceUser, + InterstitialScreenEvent::kConfirm); onboarding_ui_tracker_->HandleGetStarted(); return; case PhoneHubViewID::kOnboardingDismissButton: + // TODO(tengs): Distinguish between the two different onboarding flows. + LogInterstitialScreenEvent( + InterstitialScreen::kOnboardingNewMultideviceUser, + InterstitialScreenEvent::kDismiss); onboarding_ui_tracker_->DismissSetupUi(); return; }
diff --git a/ash/system/phonehub/phone_hub_metrics.cc b/ash/system/phonehub/phone_hub_metrics.cc new file mode 100644 index 0000000..7646121 --- /dev/null +++ b/ash/system/phonehub/phone_hub_metrics.cc
@@ -0,0 +1,45 @@ +// Copyright (c) 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/system/phonehub/phone_hub_metrics.h" + +#include "base/metrics/histogram_functions.h" +#include "base/metrics/histogram_macros.h" +#include "base/metrics/user_metrics.h" + +namespace ash { +namespace phone_hub_metrics { + +namespace { + +std::string GetHistogramName(InterstitialScreen screen) { + switch (screen) { + case InterstitialScreen::kConnectionError: + return "Ash.PhoneHub.InterstitialScreenEvent.ConnectionError"; + case InterstitialScreen::kBluetoothOrWifiDisabled: + return "Ash.PhoneHub.InterstitialScreenEvent.BluetoothOrWifiDisabled"; + case InterstitialScreen::kNotificationOptIn: + return "Ash.PhoneHub.InterstitialScreenEvent.NotificationOptIn"; + case InterstitialScreen::kReconnecting: + return "Ash.PhoneHub.InterstitialScreenEvent.Reconnecting"; + case InterstitialScreen::kInitialConnecting: + return "Ash.PhoneHub.InterstitialScreenEvent.InitialConnecting"; + case InterstitialScreen::kOnboardingExistingMultideviceUser: + return "Ash.PhoneHub.InterstitialScreenEvent.Onboarding." + "ExistingMultideviceUser"; + case InterstitialScreen::kOnboardingNewMultideviceUser: + return "Ash.PhoneHub.InterstitialScreenEvent.Onboarding." + "NewMultideviceUser"; + } +} + +} // namespace + +void LogInterstitialScreenEvent(InterstitialScreen screen, + InterstitialScreenEvent event) { + base::UmaHistogramEnumeration(GetHistogramName(screen), event); +} + +} // namespace phone_hub_metrics +} // namespace ash
diff --git a/ash/system/phonehub/phone_hub_metrics.h b/ash/system/phonehub/phone_hub_metrics.h new file mode 100644 index 0000000..cdfc855 --- /dev/null +++ b/ash/system/phonehub/phone_hub_metrics.h
@@ -0,0 +1,39 @@ +// Copyright (c) 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_SYSTEM_PHONEHUB_PHONE_HUB_METRICS_H_ +#define ASH_SYSTEM_PHONEHUB_PHONE_HUB_METRICS_H_ + +namespace ash { +namespace phone_hub_metrics { + +// Keep in sync with corresponding enum in tools/metrics/histograms/enums.xml. +enum class InterstitialScreenEvent { + kShown = 0, + kLearnMore = 1, + kDismiss = 2, + kConfirm = 3, + kMaxValue = kConfirm +}; + +// Keep in sync with corresponding suffix in +// tools/metrics/histograms_xml/histogram_suffixes_list.xml. +enum class InterstitialScreen { + kConnectionError = 0, + kBluetoothOrWifiDisabled, + kNotificationOptIn, + kReconnecting, + kInitialConnecting, + kOnboardingExistingMultideviceUser, + kOnboardingNewMultideviceUser +}; + +// Logs an |event| occurring for the given |interstitial_screen|. +void LogInterstitialScreenEvent(InterstitialScreen screen, + InterstitialScreenEvent event); + +} // namespace phone_hub_metrics +} // namespace ash + +#endif // ASH_SYSTEM_PHONEHUB_PHONE_HUB_METRICS_H_
diff --git a/ash/system/phonehub/phone_hub_notification_controller.cc b/ash/system/phonehub/phone_hub_notification_controller.cc index 4a5a1567..3654a48 100644 --- a/ash/system/phonehub/phone_hub_notification_controller.cc +++ b/ash/system/phonehub/phone_hub_notification_controller.cc
@@ -124,6 +124,10 @@ }; PhoneHubNotificationController::PhoneHubNotificationController() { + if (message_center::MessageViewFactory::HasCustomNotificationViewFactory( + kNotificationCustomViewType)) + return; + message_center::MessageViewFactory::SetCustomNotificationViewFactory( kNotificationCustomViewType, base::BindRepeating(&CreateCustomNotificationView));
diff --git a/ash/system/screen_security/DIR_METADATA b/ash/system/screen_security/DIR_METADATA index 72b2cc1..870998b6 100644 --- a/ash/system/screen_security/DIR_METADATA +++ b/ash/system/screen_security/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "Internals>Media>ScreenCapture"
diff --git a/ash/system/virtual_keyboard/DIR_METADATA b/ash/system/virtual_keyboard/DIR_METADATA index f33c0cee..09b159b1 100644 --- a/ash/system/virtual_keyboard/DIR_METADATA +++ b/ash/system/virtual_keyboard/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Input>VirtualKeyboard"
diff --git a/ash/wallpaper/DIR_METADATA b/ash/wallpaper/DIR_METADATA index b88aa18..699e621 100644 --- a/ash/wallpaper/DIR_METADATA +++ b/ash/wallpaper/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "OS>Systems>Wallpaper"
diff --git a/ash/wm/DIR_METADATA b/ash/wm/DIR_METADATA index 0721d2b..27d1285 100644 --- a/ash/wm/DIR_METADATA +++ b/ash/wm/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>WindowManager"
diff --git a/ash/wm/desks/DIR_METADATA b/ash/wm/desks/DIR_METADATA index 74ae5ea..565b731 100644 --- a/ash/wm/desks/DIR_METADATA +++ b/ash/wm/desks/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>WindowManager>VirtualDesks"
diff --git a/ash/wm/gestures/DIR_METADATA b/ash/wm/gestures/DIR_METADATA index f18cb18..b93f1418 100644 --- a/ash/wm/gestures/DIR_METADATA +++ b/ash/wm/gestures/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>GestureNav"
diff --git a/ash/wm/native_cursor_manager_ash.cc b/ash/wm/native_cursor_manager_ash.cc index f437b9c..d13de94d 100644 --- a/ash/wm/native_cursor_manager_ash.cc +++ b/ash/wm/native_cursor_manager_ash.cc
@@ -12,7 +12,7 @@ #include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_tree_host.h" #include "ui/base/cursor/cursor.h" -#include "ui/base/cursor/cursor_loader.h" +#include "ui/base/cursor/image_cursors.h" #include "ui/base/cursor/mojom/cursor_type.mojom-shared.h" #include "ui/base/layout.h" #include "ui/wm/core/native_cursor_manager_delegate.h" @@ -55,9 +55,7 @@ } // namespace NativeCursorManagerAsh::NativeCursorManagerAsh() - : native_cursor_enabled_(true), - cursor_loader_(ui::CursorLoader::Create(/*use_platform_cursors=*/false)) { -} + : native_cursor_enabled_(true), image_cursors_(new ui::ImageCursors) {} NativeCursorManagerAsh::~NativeCursorManagerAsh() = default; @@ -69,11 +67,11 @@ } float NativeCursorManagerAsh::GetScale() const { - return cursor_loader_->scale(); + return image_cursors_->GetScale(); } display::Display::Rotation NativeCursorManagerAsh::GetRotation() const { - return cursor_loader_->rotation(); + return image_cursors_->GetRotation(); } void NativeCursorManagerAsh::SetDisplay( @@ -86,7 +84,7 @@ const float cursor_scale = ui::GetScaleForScaleFactor(ui::GetSupportedScaleFactor(original_scale)); - if (cursor_loader_->SetDisplayData(display.panel_rotation(), cursor_scale)) + if (image_cursors_->SetDisplay(display, cursor_scale)) SetCursor(delegate->GetCursor(), delegate); Shell::Get() @@ -99,13 +97,13 @@ gfx::NativeCursor cursor, ::wm::NativeCursorManagerDelegate* delegate) { if (native_cursor_enabled_) { - cursor_loader_->SetPlatformCursor(&cursor); + image_cursors_->SetPlatformCursor(&cursor); } else { gfx::NativeCursor invisible_cursor(ui::mojom::CursorType::kNone); - cursor_loader_->SetPlatformCursor(&invisible_cursor); + image_cursors_->SetPlatformCursor(&invisible_cursor); cursor.SetPlatformCursor(invisible_cursor.platform()); } - cursor.set_image_scale_factor(cursor_loader_->scale()); + cursor.set_image_scale_factor(image_cursors_->GetScale()); delegate->CommitCursor(cursor); @@ -116,7 +114,7 @@ void NativeCursorManagerAsh::SetCursorSize( ui::CursorSize cursor_size, ::wm::NativeCursorManagerDelegate* delegate) { - cursor_loader_->set_size(cursor_size); + image_cursors_->SetCursorSize(cursor_size); delegate->CommitCursorSize(cursor_size); // Sets the cursor to reflect the scale change immediately. @@ -138,7 +136,7 @@ SetCursor(delegate->GetCursor(), delegate); } else { gfx::NativeCursor invisible_cursor(ui::mojom::CursorType::kNone); - cursor_loader_->SetPlatformCursor(&invisible_cursor); + image_cursors_->SetPlatformCursor(&invisible_cursor); SetCursorOnAllRootWindows(invisible_cursor); }
diff --git a/ash/wm/native_cursor_manager_ash.h b/ash/wm/native_cursor_manager_ash.h index fe1450e..1df0f7b 100644 --- a/ash/wm/native_cursor_manager_ash.h +++ b/ash/wm/native_cursor_manager_ash.h
@@ -11,7 +11,7 @@ #include "ui/wm/core/native_cursor_manager.h" namespace ui { -class CursorLoader; +class ImageCursors; } namespace ash { @@ -56,7 +56,7 @@ bool native_cursor_enabled_; - std::unique_ptr<ui::CursorLoader> cursor_loader_; + std::unique_ptr<ui::ImageCursors> image_cursors_; DISALLOW_COPY_AND_ASSIGN(NativeCursorManagerAsh); };
diff --git a/ash/wm/overview/DIR_METADATA b/ash/wm/overview/DIR_METADATA index bcf270a..ba16a09 100644 --- a/ash/wm/overview/DIR_METADATA +++ b/ash/wm/overview/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>OverviewMode"
diff --git a/ash/wm/splitview/DIR_METADATA b/ash/wm/splitview/DIR_METADATA index 664e1bf..36340a4 100644 --- a/ash/wm/splitview/DIR_METADATA +++ b/ash/wm/splitview/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>WindowManager>Splitscreen"
diff --git a/ash/wm/tablet_mode/DIR_METADATA b/ash/wm/tablet_mode/DIR_METADATA index a7f1545..bb5ae00 100644 --- a/ash/wm/tablet_mode/DIR_METADATA +++ b/ash/wm/tablet_mode/DIR_METADATA
@@ -1,10 +1,10 @@ # Metadata information for this directory. # # For more information on DIR_METADATA files, see: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md # # For the schema of this file, see Metadata message: -# https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto +# https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto monorail { component: "UI>Shell>TouchView"
diff --git a/base/allocator/partition_allocator/partition_alloc.cc b/base/allocator/partition_allocator/partition_alloc.cc index 7c05850..5fce1b5 100644 --- a/base/allocator/partition_allocator/partition_alloc.cc +++ b/base/allocator/partition_allocator/partition_alloc.cc
@@ -320,10 +320,7 @@ // this operation is idempotent, so there is no harm. InitBucketIndexLookup(this); - // Temporarily disabled for PartitionAlloc-Everywhere builds on Windows, as it - // breaks the build. -#if !defined(PA_THREAD_CACHE_SUPPORTED) || \ - (defined(OS_WIN) && BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)) +#if !defined(PA_THREAD_CACHE_SUPPORTED) // TLS in ThreadCache not supported on other OSes. with_thread_cache = false; #else @@ -332,8 +329,7 @@ if (with_thread_cache) internal::ThreadCache::Init(this); -#endif // !defined(PA_THREAD_CACHE_SUPPORTED) || \ - // (defined(OS_WIN) && BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)) +#endif // !defined(PA_THREAD_CACHE_SUPPORTED) initialized = true; }
diff --git a/base/allocator/partition_allocator/partition_lock.h b/base/allocator/partition_allocator/partition_lock.h index 523559a..566135d1 100644 --- a/base/allocator/partition_allocator/partition_lock.h +++ b/base/allocator/partition_allocator/partition_lock.h
@@ -115,15 +115,14 @@ // Note that we don't rely on a DCHECK() in base::Lock(), as it would // itself allocate. Meaning that without this code, a reentrancy issue // hangs on Linux. - if (UNLIKELY(TS_UNCHECKED_READ(owning_thread_ref_.load( - std::memory_order_relaxed)) == current_thread)) { + if (UNLIKELY(TS_UNCHECKED_READ(owning_thread_ref_) == current_thread)) { // Trying to acquire lock while it's held by this thread: reentrancy // issue. IMMEDIATE_CRASH(); } lock_.Acquire(); } - owning_thread_ref_.store(current_thread, std::memory_order_relaxed); + owning_thread_ref_ = current_thread; #else lock_.Acquire(); #endif @@ -131,7 +130,7 @@ void Unlock() UNLOCK_FUNCTION() { #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && DCHECK_IS_ON() - owning_thread_ref_.store(PlatformThreadRef(), std::memory_order_relaxed); + owning_thread_ref_ = PlatformThreadRef(); #endif lock_.Release(); } @@ -149,7 +148,7 @@ #endif // defined(PA_HAS_SPINNING_MUTEX) #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && DCHECK_IS_ON() - std::atomic<PlatformThreadRef> owning_thread_ref_ GUARDED_BY(lock_); + PlatformThreadRef owning_thread_ref_ GUARDED_BY(lock_); #endif }; // We want PartitionRoot to not have a global destructor, so this should not
diff --git a/base/android/java/src/org/chromium/base/BundleUtils.java b/base/android/java/src/org/chromium/base/BundleUtils.java index 138398f..5496e02 100644 --- a/base/android/java/src/org/chromium/base/BundleUtils.java +++ b/base/android/java/src/org/chromium/base/BundleUtils.java
@@ -4,9 +4,16 @@ package org.chromium.base; +import android.content.Context; +import android.content.pm.PackageManager; +import android.os.Build; + import dalvik.system.BaseDexClassLoader; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.compat.ApiHelperForO; + +import java.util.Arrays; /** * Utils for working with android app bundles. @@ -55,6 +62,40 @@ sIsBundle = isBundle; } + /** + * Returns whether splitName is installed. Note, this will return false on Android versions + * below O, where isolated splits are not supported. + */ + public static boolean isIsolatedSplitInstalled(Context context, String splitName) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + return false; + } + + String[] splitNames = ApiHelperForO.getSplitNames(context.getApplicationInfo()); + return splitNames != null && Arrays.asList(splitNames).contains(splitName); + } + + /** + * Returns a context for the isolated split with the name splitName. This will throw a + * RuntimeException if isolated splits are enabled and the split is not installed. If the + * current Android version does not support isolated splits, the original context will be + * returned. If isolated splits are not enabled for this APK/bundle, the underlying ContextImpl + * from the base context will be returned. + */ + public static Context createIsolatedSplitContext(Context base, String splitName) { + // Isolated splits are only supported in O+, so just return the base context on other + // versions, since this will have access to all splits. + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + return base; + } + + try { + return ApiHelperForO.createContextForSplit(base, splitName); + } catch (PackageManager.NameNotFoundException e) { + throw new RuntimeException(e); + } + } + /* Returns absolute path to a native library in a feature module. */ @CalledByNative private static String getNativeLibraryPath(String libraryName) {
diff --git a/base/debug/stack_trace_posix.cc b/base/debug/stack_trace_posix.cc index 6a1531e1..bf4b854 100644 --- a/base/debug/stack_trace_posix.cc +++ b/base/debug/stack_trace_posix.cc
@@ -533,15 +533,14 @@ #if !defined(OFFICIAL_BUILD) || !defined(NO_UNWIND_TABLES) if (file_path) { - // The assumption here is that iterating over std::map<std::string, int> - // using a const_iterator does not allocate dynamic memory, hense it is + // The assumption here is that iterating over std::map<std::string, + // base::ScopedFD> does not allocate dynamic memory, hence it is // async-signal-safe. - std::map<std::string, int>::const_iterator it; - for (it = modules_.begin(); it != modules_.end(); ++it) { - if (strcmp((it->first).c_str(), file_path) == 0) { + for (const auto& filepath_fd : modules_) { + if (strcmp(filepath_fd.first.c_str(), file_path) == 0) { // POSIX.1-2004 requires an implementation to guarantee that dup() // is async-signal-safe. - fd = HANDLE_EINTR(dup(it->second)); + fd = HANDLE_EINTR(dup(filepath_fd.second.get())); break; } } @@ -710,7 +709,7 @@ if (modules_.find(region.path) == modules_.end()) { int fd = open(region.path.c_str(), O_RDONLY | O_CLOEXEC); if (fd >= 0) { - modules_.insert(std::make_pair(region.path, fd)); + modules_.emplace(region.path, base::ScopedFD(fd)); } else { LOG(WARNING) << "Failed to open file: " << region.path << "\n Error: " << strerror(errno); @@ -741,12 +740,6 @@ // Closes all file descriptors owned by this instance. void CloseObjectFiles() { #if !defined(OFFICIAL_BUILD) || !defined(NO_UNWIND_TABLES) - std::map<std::string, int>::iterator it; - for (it = modules_.begin(); it != modules_.end(); ++it) { - int ret = IGNORE_EINTR(close(it->second)); - DCHECK(!ret); - it->second = -1; - } modules_.clear(); #endif // !defined(OFFICIAL_BUILD) || !defined(NO_UNWIND_TABLES) } @@ -758,7 +751,7 @@ // Mapping from file name to file descriptor. Includes file descriptors // for all successfully opened object files and the file descriptor for // /proc/self/maps. This code is not safe for production builds. - std::map<std::string, int> modules_; + std::map<std::string, base::ScopedFD> modules_; #endif // !defined(OFFICIAL_BUILD) || !defined(NO_UNWIND_TABLES) // Cache for the process memory regions. Produced by parsing the contents
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index 8a20016..6fa8428 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -0.20201015.3.2 +0.20201016.0.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index 8a20016..6fa8428 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -0.20201015.3.2 +0.20201016.0.1
diff --git a/build/fuchsia/sdk-bucket.txt b/build/fuchsia/sdk-bucket.txt index 9f860bce..e69de29 100644 --- a/build/fuchsia/sdk-bucket.txt +++ b/build/fuchsia/sdk-bucket.txt
@@ -1 +0,0 @@ -fuchsia
diff --git a/build/fuchsia/update_images.py b/build/fuchsia/update_images.py index 790c6ac7..79b8e49 100755 --- a/build/fuchsia/update_images.py +++ b/build/fuchsia/update_images.py
@@ -18,7 +18,7 @@ from common import GetHostOsFromPlatform, GetHostArchFromPlatform, \ DIR_SOURCE_ROOT, IMAGES_ROOT from update_sdk import DownloadAndUnpackFromCloudStorage, \ - GetCloudStorageBucket, GetSdkHash, \ + GetOverrideCloudStorageBucket, GetSdkHash, \ MakeCleanDirectory, SDK_SIGNATURE_FILE @@ -89,10 +89,11 @@ help='List of boot images to download, represented as a comma separated ' 'list. Wildcards are allowed. ') parser.add_argument( - '--bucket-override', + '--default-bucket', type=str, - help='Overrides the cloud bucket in which the Fuchsia images are stored. ' - 'If not specified, get the bucket from sdk-bucket.txt.') + default='fuchsia', + help='The Google Cloud Storage bucket in which the Fuchsia images are ' + 'stored. Entry in sdk-bucket.txt will override this flag.') parser.add_argument( '--image-root-dir', default=IMAGES_ROOT, @@ -108,10 +109,9 @@ # Check whether there's SDK support for this platform. GetHostOsFromPlatform() - if args.bucket_override: - bucket = args.bucket_override - else: - bucket = GetCloudStorageBucket() + # Use the bucket in sdk-bucket.txt if an entry exists. + # Otherwise use the default bucket. + bucket = GetOverrideCloudStorageBucket() or args.default_bucket sdk_hash = GetSdkHash(bucket) if not sdk_hash:
diff --git a/build/fuchsia/update_sdk.py b/build/fuchsia/update_sdk.py index 21dc5ef..086fac8 100755 --- a/build/fuchsia/update_sdk.py +++ b/build/fuchsia/update_sdk.py
@@ -31,7 +31,10 @@ return f.read() -def GetCloudStorageBucket(): +# TODO(crbug.com/1138433): Investigate whether we can deprecate +# use of sdk_bucket.txt. +def GetOverrideCloudStorageBucket(): + """Read bucket entry from sdk_bucket.txt""" return ReadFile('sdk-bucket.txt').strip() @@ -118,6 +121,12 @@ parser.add_argument('--verbose', '-v', action='store_true', help='Enable debug-level logging.') + parser.add_argument( + '--default-bucket', + type=str, + default='fuchsia', + help='The Google Cloud Storage bucket in which the Fuchsia SDK is ' + 'stored. Entry in sdk-bucket.txt will override this flag.') args = parser.parse_args() logging.basicConfig(level=logging.DEBUG if args.verbose else logging.INFO) @@ -128,7 +137,9 @@ except: return 0 - bucket = GetCloudStorageBucket() + # Use the bucket in sdk-bucket.txt if an entry exists. + # Otherwise use the default bucket. + bucket = GetOverrideCloudStorageBucket() or args.default_bucket sdk_hash = GetSdkHash(bucket) if not sdk_hash:
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni index 9d31e7c..3c7b5de0 100644 --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni
@@ -690,6 +690,7 @@ "java/res/drawable/ic_google_services_48dp.xml", "java/res/drawable/ic_image_descriptions.xml", "java/res/drawable/ic_incognito_24dp.xml", + "java/res/drawable/ic_incognito_cct_24dp.xml", "java/res/drawable/ic_logo_googleg_20dp.xml", "java/res/drawable/ic_loop_round.xml", "java/res/drawable/ic_music_note_24dp.xml",
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni index 8c54f85d..3aa7aeaf 100644 --- a/chrome/android/chrome_test_java_sources.gni +++ b/chrome/android/chrome_test_java_sources.gni
@@ -139,6 +139,7 @@ "javatests/src/org/chromium/chrome/browser/customtabs/CustomTabTaskDescriptionHelperTest.java", "javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionTest.java", "javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java", + "javatests/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabActivityRenderTest.java", "javatests/src/org/chromium/chrome/browser/customtabs/RequestThrottlerTest.java", "javatests/src/org/chromium/chrome/browser/customtabs/TrustedCdnPublisherUrlTest.java", "javatests/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabControllerTest.java",
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_iw.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_iw.xtb index a259632..2ea1111 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_iw.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_iw.xtb
@@ -52,6 +52,6 @@ <translation id="8557923272772633250">הרחבת קבוצת הכרטיסיות שיש בה <ph name="NUMBER_OF_TABS" /> כרטיסיות.</translation> <translation id="8749939518995770034">שורת הכרטיסיות נסגרה</translation> <translation id="9150694013019234766">מעבר בין כרטיסיות בקבוצת הכרטיסיות שבחלק התחתון של המסך</translation> -<translation id="9169594135889675189">הוספת כרטיסיה חדשה לקבוצה</translation> +<translation id="9169594135889675189">הוספת כרטיסייה חדשה לקבוצה</translation> <translation id="959682366969460160">ארגון הפריטים</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/v2/FeedStreamSurface.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/v2/FeedStreamSurface.java index a3060f3..69f7e2f 100644 --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/v2/FeedStreamSurface.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/v2/FeedStreamSurface.java
@@ -6,8 +6,6 @@ import android.app.Activity; import android.content.Context; -import android.content.pm.PackageManager; -import android.os.Build; import android.os.Handler; import android.view.ContextThemeWrapper; import android.view.View; @@ -19,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView.ItemAnimator.ItemAnimatorFinishedListener; +import org.chromium.base.BundleUtils; import org.chromium.base.Callback; import org.chromium.base.ContextUtils; import org.chromium.base.Log; @@ -27,7 +26,6 @@ import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.NativeMethods; -import org.chromium.base.compat.ApiHelperForO; import org.chromium.base.task.PostTask; import org.chromium.base.task.TaskTraits; import org.chromium.chrome.R; @@ -73,7 +71,6 @@ import org.chromium.ui.mojom.WindowOpenDisposition; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -1017,24 +1014,10 @@ } private static Context createFeedContext(Context context) { - // Isolated splits are only supported in O+, so just return the base context on other - // versions, since it will have access to all splits. - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + if (!BundleUtils.isIsolatedSplitInstalled(context, FEED_SPLIT_NAME)) { return context; } - - // If the feed split does not exist, return the original context. - String[] splitNames = ApiHelperForO.getSplitNames(context.getApplicationInfo()); - if (splitNames == null || !Arrays.asList(splitNames).contains(FEED_SPLIT_NAME)) { - return context; - } - - try { - return ApiHelperForO.createContextForSplit(context, FEED_SPLIT_NAME); - } catch (PackageManager.NameNotFoundException e) { - // Feed is not in a split. - return context; - } + return BundleUtils.createIsolatedSplitContext(context, FEED_SPLIT_NAME); } // Detects animation finishes in RecyclerView.
diff --git a/chrome/android/java/res/drawable/ic_incognito_cct_24dp.xml b/chrome/android/java/res/drawable/ic_incognito_cct_24dp.xml new file mode 100644 index 0000000..1239f85 --- /dev/null +++ b/chrome/android/java/res/drawable/ic_incognito_cct_24dp.xml
@@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2020 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="18dp" + android:height="18dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M3,11h18v1h-18z" + android:fillColor="@color/default_icon_color_light"/> + <path + android:pathData="M17.62,10l-2.29,-6.1c-0.19,-0.5 -0.74,-0.77 -1.25,-0.6L12,4L9.91,3.3C9.4,3.13 8.85,3.4 8.66,3.9L6.38,10H17.62z" + android:fillColor="@color/default_icon_color_light"/> + <path + android:pathData="M16.5,13c-1.66,0 -3.04,1.16 -3.4,2.71c-0.84,-0.36 -1.62,-0.26 -2.2,-0.01C10.53,14.15 9.15,13 7.5,13C5.57,13 4,14.57 4,16.5C4,18.43 5.57,20 7.5,20c1.84,0 3.33,-1.42 3.47,-3.22c0.3,-0.21 1.09,-0.6 2.06,0.02C13.19,18.59 14.67,20 16.5,20c1.93,0 3.5,-1.57 3.5,-3.5C20,14.57 18.43,13 16.5,13zM7.5,19C6.12,19 5,17.88 5,16.5C5,15.12 6.12,14 7.5,14s2.5,1.12 2.5,2.5C10,17.88 8.88,19 7.5,19zM16.5,19c-1.38,0 -2.5,-1.12 -2.5,-2.5c0,-1.38 1.12,-2.5 2.5,-2.5s2.5,1.12 2.5,2.5C19,17.88 17.88,19 16.5,19z" + android:fillColor="@color/default_icon_color_light"/> +</vector>
diff --git a/chrome/android/java/res/layout/account_picker_bottom_sheet_view.xml b/chrome/android/java/res/layout/account_picker_bottom_sheet_view.xml index 731513ce..15e526f 100644 --- a/chrome/android/java/res/layout/account_picker_bottom_sheet_view.xml +++ b/chrome/android/java/res/layout/account_picker_bottom_sheet_view.xml
@@ -8,7 +8,8 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical"> + android:orientation="vertical" + android:paddingBottom="16dp"> <ImageView android:layout_width="wrap_content" @@ -60,7 +61,6 @@ android:layout_marginStart="16dp" android:layout_marginEnd="16dp" android:layout_marginTop="8dp" - android:layout_marginBottom="8dp" android:visibility="gone" tools:listitem="@layout/account_chooser_dialog_item" /> @@ -78,7 +78,8 @@ android:layout_width="32dp" android:layout_height="32dp" android:layout_gravity="center" - android:layout_marginBottom="54dp" + android:layout_marginTop="30dp" + android:layout_marginBottom="24dp" android:visibility="gone" /> <org.chromium.ui.widget.ButtonCompat @@ -89,11 +90,19 @@ android:layout_marginStart="24dp" android:layout_marginEnd="24dp" android:layout_marginTop="8dp" - android:layout_marginBottom="20dp" android:ellipsize="end" android:singleLine="true" android:text="@string/signin_promo_continue_as" /> + <org.chromium.ui.widget.ButtonCompat + android:id="@+id/account_picker_dismiss_button" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginEnd="24dp" + android:text="@string/no_thanks" + style="@style/TextButton" /> + <include android:id="@+id/incognito_interstitial_bottom_sheet_view" android:layout_width="match_parent"
diff --git a/chrome/android/java/res/layout/custom_tabs_toolbar.xml b/chrome/android/java/res/layout/custom_tabs_toolbar.xml index 1bf7d593..fac032c 100644 --- a/chrome/android/java/res/layout/custom_tabs_toolbar.xml +++ b/chrome/android/java/res/layout/custom_tabs_toolbar.xml
@@ -14,6 +14,15 @@ style="@style/ToolbarButton" android:layout_gravity="start|center_vertical" android:contentDescription="@string/close_tab" /> + <org.chromium.ui.widget.ChromeImageButton + android:id="@+id/incognito_cct_logo_button" + style="@style/LocationBarButton" + android:layout_width="@dimen/location_bar_icon_width" + android:layout_height="match_parent" + android:layout_gravity="start" + android:scaleType="center" + app:srcCompat="@drawable/ic_incognito_cct_24dp" + android:visibility="gone" /> <FrameLayout android:id="@+id/location_bar_frame_layout" android:layout_width="match_parent"
diff --git a/chrome/android/java/res/layout/incognito_interstitial_bottom_sheet_view.xml b/chrome/android/java/res/layout/incognito_interstitial_bottom_sheet_view.xml index 96b634d7..75d9aa9 100644 --- a/chrome/android/java/res/layout/incognito_interstitial_bottom_sheet_view.xml +++ b/chrome/android/java/res/layout/incognito_interstitial_bottom_sheet_view.xml
@@ -7,7 +7,6 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingBottom="20dp" android:paddingStart="24dp" android:paddingEnd="24dp" android:orientation="vertical">
diff --git a/chrome/android/java/res/layout/share_sheet_content.xml b/chrome/android/java/res/layout/share_sheet_content.xml index 8e8a312..bdcded8f 100644 --- a/chrome/android/java/res/layout/share_sheet_content.xml +++ b/chrome/android/java/res/layout/share_sheet_content.xml
@@ -24,6 +24,7 @@ android:layout_height="wrap_content" android:paddingBottom="20dp" android:paddingStart="16dp" + android:paddingEnd="16dp" android:paddingTop="24dp"> <org.chromium.components.browser_ui.widget.RoundedCornerImageView @@ -48,7 +49,8 @@ android:paddingEnd="16dp" android:paddingStart="12dp" android:paddingBottom="4dp" - android:textAlignment="viewStart"/> + android:textAlignment="gravity" + android:textDirection="locale"/> <TextView android:id="@+id/subtitle_preview" @@ -62,7 +64,8 @@ android:minHeight="18dp" android:paddingEnd="16dp" android:paddingStart="12dp" - android:textAlignment="viewStart" + android:textAlignment="gravity" + android:textDirection="locale" android:textAppearance="@style/TextAppearance.TextMedium.Primary"/> </RelativeLayout> @@ -79,7 +82,8 @@ android:layout_height="113dp" android:minHeight="@dimen/min_touch_target_size" android:orientation="horizontal" - android:paddingEnd="16dp" /> + android:paddingStart="8dp" + android:paddingEnd="8dp" /> <View android:id="@+id/share_sheet_divider" @@ -96,7 +100,8 @@ android:layout_width="wrap_content" android:layout_height="113dp" android:minHeight="@dimen/min_touch_target_size" - android:paddingEnd="16dp" + android:paddingStart="8dp" + android:paddingEnd="8dp" android:visibility="gone" /> </LinearLayout> </ScrollView>
diff --git a/chrome/android/java/res/layout/share_sheet_item.xml b/chrome/android/java/res/layout/share_sheet_item.xml index b35bf33..f9296f81 100644 --- a/chrome/android/java/res/layout/share_sheet_item.xml +++ b/chrome/android/java/res/layout/share_sheet_item.xml
@@ -5,13 +5,13 @@ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:clickable="true" android:textAppearance="@style/TextAppearance.TextSmall.Primary" android:layout_height="fill_parent" android:layout_width="68sp" - android:layout_marginStart="16dp" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" android:layout_marginTop="16dp" android:background="?attr/selectableItemBackground" android:gravity="center_horizontal"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/base/SplitCompatUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/base/SplitCompatUtils.java index 116756b..4c3f394 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/base/SplitCompatUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/base/SplitCompatUtils.java
@@ -5,11 +5,9 @@ package org.chromium.chrome.browser.base; import android.content.Context; -import android.content.pm.PackageManager; -import android.os.Build; +import org.chromium.base.BundleUtils; import org.chromium.base.annotations.IdentifierNameString; -import org.chromium.base.compat.ApiHelperForO; /** Utils for compatibility with isolated splits. */ public class SplitCompatUtils { @@ -26,17 +24,7 @@ /** Creates a context which can be used to load code and resources in the chrome split. */ public static Context createChromeContext(Context base) { - // Isolated splits are only supported in O+, so just return the base context on other - // versions, since this will have access to all splits. - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { - return base; - } - try { - return ApiHelperForO.createContextForSplit(base, "chrome"); - } catch (PackageManager.NameNotFoundException e) { - // This application class should not be used if the chrome split does not exist. - throw new RuntimeException(e); - } + return BundleUtils.createIsolatedSplitContext(base, "chrome"); } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIncognitoManager.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIncognitoManager.java index bd7a3cc..55533bd 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIncognitoManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIncognitoManager.java
@@ -25,8 +25,6 @@ import org.chromium.chrome.browser.lifecycle.NativeInitObserver; import org.chromium.chrome.browser.profiles.OTRProfileID; import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.chrome.browser.tabmodel.IncognitoTabHost; -import org.chromium.chrome.browser.tabmodel.IncognitoTabHostRegistry; import org.chromium.ui.base.WindowAndroid; import javax.inject.Inject; @@ -46,16 +44,11 @@ new UnownedUserDataKey<>(CustomTabIncognitoManager.class); private final ChromeActivity<?> mChromeActivity; - private final CustomTabActivityNavigationController mNavigationController; private final BrowserServicesIntentDataProvider mIntentDataProvider; - private final CustomTabActivityTabProvider mTabProvider; private final WindowAndroid mWindowAndroid; private OTRProfileID mOTRProfileID; - @Nullable - private IncognitoTabHost mIncognitoTabHost; - @Inject public CustomTabIncognitoManager(ChromeActivity<?> customTabActivity, WindowAndroid windowAndroid, BrowserServicesIntentDataProvider intentDataProvider, @@ -65,8 +58,6 @@ mChromeActivity = customTabActivity; mWindowAndroid = windowAndroid; mIntentDataProvider = intentDataProvider; - mNavigationController = navigationController; - mTabProvider = tabProvider; lifecycleDispatcher.register(this); @@ -130,10 +121,6 @@ @Override public void destroy() { - if (mIncognitoTabHost != null) { - IncognitoTabHostRegistry.getInstance().unregister(mIncognitoTabHost); - } - if (mOTRProfileID != null) { Profile.getLastUsedRegularProfile() .getOffTheRecordProfile(mOTRProfileID) @@ -145,26 +132,10 @@ } private void initializeIncognito() { - mIncognitoTabHost = new IncognitoCustomTabHost(); - IncognitoTabHostRegistry.getInstance().register(mIncognitoTabHost); if (!CommandLine.getInstance().hasSwitch( ChromeSwitches.ENABLE_INCOGNITO_SNAPSHOTS_IN_ANDROID_RECENTS)) { // Disable taking screenshots and seeing snapshots in recents. mChromeActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); } } - - private class IncognitoCustomTabHost implements IncognitoTabHost { - public IncognitoCustomTabHost() { - assert mIntentDataProvider.isIncognito(); - } - @Override - public boolean hasIncognitoTabs() { - return !mChromeActivity.isFinishing(); - } - @Override - public void closeAllIncognitoTabs() { - mNavigationController.finish(CustomTabActivityNavigationController.FinishReason.OTHER); - } - } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbar.java index 1ce14fb..a3ed498 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbar.java
@@ -150,6 +150,7 @@ private View mLiteStatusSeparatorView; private UrlBarCoordinator mUrlCoordinator; private TextView mTitleBar; + private ImageButton mIncognitoButton; private ImageButton mSecurityButton; private LinearLayout mCustomActionButtons; private ImageButton mCloseButton; @@ -206,6 +207,7 @@ mLocationBarFrameLayout = findViewById(R.id.location_bar_frame_layout); mTitleUrlContainer = findViewById(R.id.title_url_container); mTitleUrlContainer.setOnLongClickListener(this); + mIncognitoButton = findViewById(R.id.incognito_cct_logo_button); mSecurityButton = findViewById(R.id.security_button); mCustomActionButtons = findViewById(R.id.action_buttons); mCloseButton = findViewById(R.id.close_button); @@ -395,6 +397,9 @@ } private void updateToolbarLayoutMargin() { + // We show the Incognito logo for Incognito CCT case + if (mToolbarDataProvider.isIncognito()) mIncognitoButton.setVisibility(VISIBLE); + int startMargin = calculateStartMarginWhenCloseButtonVisibilityGone(); updateStartMarginOfVisibleElementsUntilLocationBarFrameLayout(startMargin);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java index 141fbfa..e1ee8b3 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
@@ -124,10 +124,12 @@ || ChromeAccessibilityUtil.isHardwareKeyboardAttached( mActivity.getResources().getConfiguration()); - Profile profile = Profile.getLastUsedRegularProfile(); - if (isIncognito) profile = profile.getOffTheRecordProfile(); mSelectionDelegate = new SelectionDelegate<>(); mSelectionDelegate.addObserver(this); + + // History service is not keyed for Incognito profiles and {@link HistoryServiceFactory} + // explicitly redirects to use regular profile for Incognito case. + Profile profile = Profile.getLastUsedRegularProfile(); mHistoryAdapter = new HistoryAdapter(mSelectionDelegate, this, sProviderForTests != null ? sProviderForTests : new BrowsingHistoryBridge(profile));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountConsistencyPromoAction.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountConsistencyPromoAction.java index c83e121..4bbea88f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountConsistencyPromoAction.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountConsistencyPromoAction.java
@@ -29,6 +29,8 @@ AccountConsistencyPromoAction.DISMISSED_SCRIM, AccountConsistencyPromoAction.DISMISSED_SWIPE_DOWN, AccountConsistencyPromoAction.DISMISSED_OTHER, + AccountConsistencyPromoAction.AUTH_ERROR_SHOWN, + AccountConsistencyPromoAction.GENERIC_ERROR_SHOWN, }) @Retention(RetentionPolicy.SOURCE) public @interface AccountConsistencyPromoAction { @@ -97,5 +99,15 @@ */ int DISMISSED_OTHER = 11; - int MAX = 12; + /** + * The auth error screen was shown to the user. + */ + int AUTH_ERROR_SHOWN = 12; + + /** + * The generic error screen was shown to the user. + */ + int GENERIC_ERROR_SHOWN = 13; + + int MAX = 14; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetCoordinator.java index 5f3a83d..be2849e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetCoordinator.java
@@ -65,8 +65,8 @@ AccountPickerDelegate.recordAccountConsistencyPromoAction( AccountConsistencyPromoAction.SHOWN); - mAccountPickerBottomSheetMediator = - new AccountPickerBottomSheetMediator(context, accountPickerDelegate); + mAccountPickerBottomSheetMediator = new AccountPickerBottomSheetMediator( + context, accountPickerDelegate, this::dismissBottomSheet); mView = new AccountPickerBottomSheetView(context, mAccountPickerBottomSheetMediator); mAccountPickerCoordinator = new AccountPickerCoordinator(mView.getAccountListView(), mAccountPickerBottomSheetMediator, /* selectedAccountName= */ null, @@ -92,6 +92,11 @@ mBottomSheetController.removeObserver(mBottomSheetObserver); } + @MainThread + private void dismissBottomSheet() { + mBottomSheetController.hideContent(mView, true); + } + @VisibleForTesting public View getBottomSheetViewForTesting() { return mView.getContentView();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetMediator.java index 4b0f055..415ded2 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetMediator.java
@@ -20,6 +20,7 @@ import org.chromium.components.signin.AccountsChangeObserver; import org.chromium.components.signin.base.CoreAccountId; import org.chromium.components.signin.base.CoreAccountInfo; +import org.chromium.components.signin.base.GoogleServiceAuthError; import org.chromium.components.signin.base.GoogleServiceAuthError.State; import org.chromium.ui.modelutil.PropertyModel; @@ -43,13 +44,14 @@ private @Nullable String mDefaultAccountName; private @Nullable String mAddedAccountName; - AccountPickerBottomSheetMediator(Context context, AccountPickerDelegate accountPickerDelegate) { + AccountPickerBottomSheetMediator(Context context, AccountPickerDelegate accountPickerDelegate, + Runnable dismissBottomSheetRunnable) { mAccountPickerDelegate = accountPickerDelegate; mProfileDataCache = new ProfileDataCache( context, context.getResources().getDimensionPixelSize(R.dimen.user_picture_size)); - mModel = AccountPickerBottomSheetProperties.createModel( - this::onSelectedAccountClicked, this::onContinueAsClicked); + mModel = AccountPickerBottomSheetProperties.createModel(this::onSelectedAccountClicked, + this::onContinueAsClicked, dismissBottomSheetRunnable); mProfileDataCache.addObserver(mProfileDataSourceObserver); mAccountManagerFacade = AccountManagerFacadeProvider.getInstance(); @@ -229,17 +231,26 @@ protected void onPostExecute(String accountGaiaId) { CoreAccountInfo coreAccountInfo = new CoreAccountInfo( new CoreAccountId(accountGaiaId), mSelectedAccountName, accountGaiaId); - mAccountPickerDelegate.signIn(coreAccountInfo, error -> { - @ViewState - int newViewState = error.getState() == State.INVALID_GAIA_CREDENTIALS - ? ViewState.SIGNIN_AUTH_ERROR - : ViewState.SIGNIN_GENERAL_ERROR; - mModel.set(AccountPickerBottomSheetProperties.VIEW_STATE, newViewState); - }); + mAccountPickerDelegate.signIn( + coreAccountInfo, AccountPickerBottomSheetMediator.this::onSigninFailed); } }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } + private void onSigninFailed(GoogleServiceAuthError error) { + final @AccountConsistencyPromoAction int promoAction; + final @ViewState int newViewState; + if (error.getState() == State.INVALID_GAIA_CREDENTIALS) { + promoAction = AccountConsistencyPromoAction.AUTH_ERROR_SHOWN; + newViewState = ViewState.SIGNIN_AUTH_ERROR; + } else { + promoAction = AccountConsistencyPromoAction.GENERIC_ERROR_SHOWN; + newViewState = ViewState.SIGNIN_GENERAL_ERROR; + } + AccountPickerDelegate.recordAccountConsistencyPromoAction(promoAction); + mModel.set(AccountPickerBottomSheetProperties.VIEW_STATE, newViewState); + } + private void updateCredentials() { mAccountPickerDelegate.updateCredentials(mSelectedAccountName, (isSuccess) -> { if (isSuccess) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetProperties.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetProperties.java index b7b9df65..2e2e7ade 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetProperties.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetProperties.java
@@ -110,15 +110,18 @@ new WritableObjectPropertyKey<>("selected_account_data"); // PropertyKey for the button |Continue as ...| - // The button is visible during all the lifecycle of the bottom sheet static final ReadableObjectPropertyKey<OnClickListener> ON_CONTINUE_AS_CLICKED = new ReadableObjectPropertyKey<>("on_continue_as_clicked"); + // PropertyKey for the button to dismiss the bottom sheet + static final ReadableObjectPropertyKey<OnClickListener> ON_DISMISS_CLICKED = + new ReadableObjectPropertyKey<>("on_dismiss_clicked"); + // PropertyKey indicates the view state of the account picker bottom sheet static final WritableIntPropertyKey VIEW_STATE = new WritableIntPropertyKey("view_state"); - static final PropertyKey[] ALL_KEYS = new PropertyKey[] { - ON_SELECTED_ACCOUNT_CLICKED, SELECTED_ACCOUNT_DATA, ON_CONTINUE_AS_CLICKED, VIEW_STATE}; + static final PropertyKey[] ALL_KEYS = new PropertyKey[] {ON_SELECTED_ACCOUNT_CLICKED, + SELECTED_ACCOUNT_DATA, ON_CONTINUE_AS_CLICKED, ON_DISMISS_CLICKED, VIEW_STATE}; /** * Creates a default model for the AccountPickerBottomSheet. @@ -126,12 +129,13 @@ * In the default model, as the selected account data is null, the bottom sheet is in the * state {@link ViewState#NO_ACCOUNTS}. */ - static PropertyModel createModel( - Runnable onSelectedAccountClicked, Runnable onContinueAsClicked) { + static PropertyModel createModel(Runnable onSelectedAccountClicked, + Runnable onContinueAsClicked, Runnable onDismissClicked) { return new PropertyModel.Builder(ALL_KEYS) .with(ON_SELECTED_ACCOUNT_CLICKED, v -> onSelectedAccountClicked.run()) .with(SELECTED_ACCOUNT_DATA, null) .with(ON_CONTINUE_AS_CLICKED, v -> onContinueAsClicked.run()) + .with(ON_DISMISS_CLICKED, v -> onDismissClicked.run()) .with(VIEW_STATE, ViewState.NO_ACCOUNTS) .build(); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java index db56aea..6e8dae8 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java
@@ -51,6 +51,7 @@ private final View mIncognitoInterstitialView; private final ProgressBar mSpinnerView; private final ButtonCompat mContinueAsButton; + private final ButtonCompat mDismissButton; AccountPickerBottomSheetView(Context context, BackPressListener backPressListener) { mContext = context; @@ -71,6 +72,7 @@ mSelectedAccountView = mContentView.findViewById(R.id.account_picker_selected_account); mSpinnerView = mContentView.findViewById(R.id.account_picker_signin_spinner_view); mContinueAsButton = mContentView.findViewById(R.id.account_picker_continue_as_button); + mDismissButton = mContentView.findViewById(R.id.account_picker_dismiss_button); } /** @@ -102,6 +104,13 @@ } /** + * The button to dismiss the bottom sheet. + */ + ButtonCompat getDismissButton() { + return mDismissButton; + } + + /** * Updates the views related to the selected account. * * This method only updates the UI elements like text related to the selected account, it @@ -131,6 +140,7 @@ mSelectedAccountView.setVisibility(View.GONE); mContinueAsButton.setVisibility(View.GONE); + mDismissButton.setVisibility(View.GONE); mIncognitoInterstitialView.setVisibility(View.GONE); } @@ -144,6 +154,7 @@ mHorizontalDivider.setVisibility(View.VISIBLE); mSelectedAccountView.setVisibility(View.VISIBLE); mContinueAsButton.setVisibility(View.VISIBLE); + mDismissButton.setVisibility(View.VISIBLE); mAccountListView.setVisibility(View.GONE); mSpinnerView.setVisibility(View.GONE); @@ -155,6 +166,7 @@ void collapseToNoAccountView() { mContinueAsButton.setText(R.string.signin_add_account_to_device); mContinueAsButton.setVisibility(View.VISIBLE); + mDismissButton.setVisibility(View.VISIBLE); mAccountListView.setVisibility(View.GONE); mSelectedAccountView.setVisibility(View.GONE); @@ -171,6 +183,7 @@ mAccountPickerSubtitle.setText(R.string.signin_account_picker_general_error_subtitle); mSpinnerView.setVisibility(View.VISIBLE); mContinueAsButton.setVisibility(View.INVISIBLE); + mDismissButton.setVisibility(View.INVISIBLE); mHorizontalDivider.setVisibility(View.GONE); mSelectedAccountView.setVisibility(View.GONE); @@ -200,6 +213,7 @@ mHorizontalDivider.setVisibility(View.GONE); mSelectedAccountView.setVisibility(View.GONE); mSpinnerView.setVisibility(View.GONE); + mDismissButton.setVisibility(View.GONE); } /** @@ -216,6 +230,7 @@ mHorizontalDivider.setVisibility(View.GONE); mSelectedAccountView.setVisibility(View.GONE); mSpinnerView.setVisibility(View.GONE); + mDismissButton.setVisibility(View.GONE); } @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetViewBinder.java index e5e93f4c..239c5a5 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetViewBinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetViewBinder.java
@@ -37,6 +37,9 @@ } else if (propertyKey == AccountPickerBottomSheetProperties.ON_CONTINUE_AS_CLICKED) { view.getContinueAsButton().setOnClickListener( model.get(AccountPickerBottomSheetProperties.ON_CONTINUE_AS_CLICKED)); + } else if (propertyKey == AccountPickerBottomSheetProperties.ON_DISMISS_CLICKED) { + view.getDismissButton().setOnClickListener( + model.get(AccountPickerBottomSheetProperties.ON_DISMISS_CLICKED)); } }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityIncognitoTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityIncognitoTest.java index 72542e8..504ce69 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityIncognitoTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityIncognitoTest.java
@@ -4,6 +4,11 @@ package org.chromium.chrome.browser.customtabs; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; + +import static org.hamcrest.Matchers.not; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -31,6 +36,7 @@ import androidx.annotation.DrawableRes; import androidx.appcompat.content.res.AppCompatResources; import androidx.browser.customtabs.CustomTabsIntent; +import androidx.test.espresso.Espresso; import androidx.test.filters.MediumTest; import org.junit.Assert; @@ -186,6 +192,24 @@ @Test @MediumTest @Features.EnableFeatures({ChromeFeatureList.CCT_INCOGNITO}) + public void toolbarHasIncognitoLogo() throws Exception { + Intent intent = createMinimalIncognitoCustomTabIntent(); + launchIncognitoCustomTab(intent); + Espresso.onView(withId(R.id.incognito_cct_logo_button)).check(matches(isDisplayed())); + } + + @Test + @MediumTest + @Features.DisableFeatures({ChromeFeatureList.CCT_INCOGNITO}) + public void toolbarDoesNotHaveIncognitoLogo() throws Exception { + Intent intent = createMinimalIncognitoCustomTabIntent(); + launchIncognitoCustomTab(intent); + Espresso.onView(withId(R.id.incognito_cct_logo_button)).check(matches(not(isDisplayed()))); + } + + @Test + @MediumTest + @Features.EnableFeatures({ChromeFeatureList.CCT_INCOGNITO}) public void ignoresCustomizedToolbarColor() throws Exception { Intent intent = createMinimalIncognitoCustomTabIntent(); intent.putExtra(CustomTabsIntent.EXTRA_TOOLBAR_COLOR, Color.RED);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabActivityRenderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabActivityRenderTest.java new file mode 100644 index 0000000..6214d5bd --- /dev/null +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabActivityRenderTest.java
@@ -0,0 +1,101 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.customtabs; + +import static org.junit.Assert.assertTrue; + +import android.content.Intent; +import android.support.test.InstrumentationRegistry; +import android.view.View; + +import androidx.test.filters.MediumTest; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.chromium.base.test.params.ParameterAnnotations; +import org.chromium.base.test.params.ParameterSet; +import org.chromium.base.test.params.ParameterizedRunner; +import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.base.test.util.Feature; +import org.chromium.chrome.R; +import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.chrome.browser.flags.ChromeSwitches; +import org.chromium.chrome.browser.incognito.IncognitoDataTestUtils; +import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate; +import org.chromium.chrome.test.util.browser.Features; +import org.chromium.net.test.EmbeddedTestServerRule; +import org.chromium.ui.test.util.RenderTestRule; + +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.TimeoutException; + +/** + * Instrumentation Render tests for default {@link CustomTabActivity} UI. + */ +@RunWith(ParameterizedRunner.class) +@ParameterAnnotations.UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class) +@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) +@Features.EnableFeatures({ChromeFeatureList.CCT_INCOGNITO}) +public class IncognitoCustomTabActivityRenderTest { + @ParameterAnnotations.ClassParameter + private static final List<ParameterSet> sClassParameter = + Arrays.asList(new ParameterSet().name("HTTPS").value(true), + new ParameterSet().name("HTTP").value(false)); + + private static final String TEST_PAGE = "/chrome/test/data/android/google.html"; + private static final int PORT_NO = 31415; + + private final boolean mRunWithHttps; + private Intent mIntent; + + @Rule + public final CustomTabActivityTestRule mCustomTabActivityTestRule = + new CustomTabActivityTestRule(); + + @Rule + public final EmbeddedTestServerRule mEmbeddedTestServerRule = new EmbeddedTestServerRule(); + + @Rule + public final RenderTestRule mRenderTestRule = RenderTestRule.Builder.withPublicCorpus().build(); + + @Before + public void setUp() throws TimeoutException { + mEmbeddedTestServerRule.setServerUsesHttps(mRunWithHttps); + mEmbeddedTestServerRule.setServerPort(PORT_NO); + prepareCCTIntent(); + + // Ensuring native is initialized before we access the CCT_INCOGNITO feature flag. + IncognitoDataTestUtils.fireAndWaitForCctWarmup(); + assertTrue(ChromeFeatureList.isEnabled(ChromeFeatureList.CCT_INCOGNITO)); + } + + public IncognitoCustomTabActivityRenderTest(boolean runWithHttps) { + mRunWithHttps = runWithHttps; + } + + private void prepareCCTIntent() { + String url = mEmbeddedTestServerRule.getServer().getURL(TEST_PAGE); + mIntent = CustomTabsTestUtils.createMinimalIncognitoCustomTabIntent( + InstrumentationRegistry.getContext(), url); + } + + private void startActivity(String renderTestId) throws IOException { + mCustomTabActivityTestRule.startCustomTabActivityWithIntent(mIntent); + View toolbarView = mCustomTabActivityTestRule.getActivity().findViewById(R.id.toolbar); + mRenderTestRule.render(toolbarView, renderTestId); + } + + @Test + @MediumTest + @Feature("RenderTest") + public void testCCTToolbar() throws IOException { + startActivity("default_incognito_cct_toolbar_with_https_" + mRunWithHttps); + } +} \ No newline at end of file
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/AccountPickerBottomSheetTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/AccountPickerBottomSheetTest.java index e13026d..b6a89b2ab 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/AccountPickerBottomSheetTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/AccountPickerBottomSheetTest.java
@@ -144,8 +144,11 @@ @Test @MediumTest public void testCollapsedSheetWithAccount() { + MetricsUtils.HistogramDelta accountConsistencyHistogram = new HistogramDelta( + "Signin.AccountConsistencyPromoAction", AccountConsistencyPromoAction.SHOWN); buildAndShowCollapsedBottomSheet(); checkCollapsedAccountList(PROFILE_DATA1); + Assert.assertEquals(1, accountConsistencyHistogram.getDelta()); } @Test @@ -164,6 +167,7 @@ onView(withId(R.id.account_picker_selected_account)).check(matches(not(isDisplayed()))); onView(withId(R.id.account_picker_continue_as_button)).check(matches(not(isDisplayed()))); + onView(withId(R.id.account_picker_dismiss_button)).check(matches(not(isDisplayed()))); } @Test @@ -201,6 +205,9 @@ @Test @MediumTest public void testDismissCollapsedSheet() { + MetricsUtils.HistogramDelta accountConsistencyHistogram = + new HistogramDelta("Signin.AccountConsistencyPromoAction", + AccountConsistencyPromoAction.DISMISSED_BACK); buildAndShowCollapsedBottomSheet(); onView(withText(PROFILE_DATA1.getAccountName())).check(matches(isDisplayed())); BottomSheetController controller = getBottomSheetController(); @@ -210,6 +217,21 @@ Assert.assertFalse(controller.isSheetOpen()); verify(mAccountPickerDelegateMock).onDismiss(); Assert.assertEquals(0, mFakeProfileDataSource.getNumberOfObservers()); + Assert.assertEquals(1, accountConsistencyHistogram.getDelta()); + } + + @Test + @MediumTest + public void testDismissCollapsedSheetWithDismissButton() { + buildAndShowCollapsedBottomSheet(); + onView(withText(PROFILE_DATA1.getAccountName())).check(matches(isDisplayed())); + BottomSheetController controller = getBottomSheetController(); + Assert.assertTrue(controller.isSheetOpen()); + Assert.assertEquals(2, mFakeProfileDataSource.getNumberOfObservers()); + onView(withId(R.id.account_picker_dismiss_button)).perform(click()); + Assert.assertFalse(controller.isSheetOpen()); + verify(mAccountPickerDelegateMock).onDismiss(); + Assert.assertEquals(0, mFakeProfileDataSource.getNumberOfObservers()); } @Test @@ -337,6 +359,32 @@ @Test @MediumTest + public void testSigninWithAddedAccount() { + MetricsUtils.HistogramDelta addAccountHistogram = new HistogramDelta( + "Signin.AccountConsistencyPromoAction", AccountConsistencyPromoAction.ADD_ACCOUNT); + MetricsUtils.HistogramDelta signedInWithAddedAccountHistogram = + new HistogramDelta("Signin.AccountConsistencyPromoAction", + AccountConsistencyPromoAction.SIGNED_IN_WITH_ADDED_ACCOUNT); + MetricsUtils.HistogramDelta signedInWithNonDefaultAccountHistogram = + new HistogramDelta("Signin.AccountConsistencyPromoAction", + AccountConsistencyPromoAction.SIGNED_IN_WITH_NON_DEFAULT_ACCOUNT); + buildAndShowExpandedBottomSheet(); + onView(withText(R.string.signin_add_account_to_device)).perform(click()); + verify(mAccountPickerDelegateMock).addAccount(callbackArgumentCaptor.capture()); + ProfileDataSource.ProfileData profileDataAdded = new ProfileDataSource.ProfileData( + /* accountName= */ "test.account3@gmail.com", /* avatar= */ null, + /* fullName= */ null, /* givenName= */ null); + Callback<String> callback = callbackArgumentCaptor.getValue(); + TestThreadUtils.runOnUiThreadBlocking( + () -> callback.onResult(profileDataAdded.getAccountName())); + clickContinueButtonAndCheckSignInInProgressSheet(); + Assert.assertEquals(1, addAccountHistogram.getDelta()); + Assert.assertEquals(1, signedInWithAddedAccountHistogram.getDelta()); + Assert.assertEquals(0, signedInWithNonDefaultAccountHistogram.getDelta()); + } + + @Test + @MediumTest public void testSignInGeneralError() { // Throws a connection error during the sign-in action doAnswer(invocation -> { @@ -360,6 +408,7 @@ onView(withId(R.id.account_picker_horizontal_divider)).check(matches(not(isDisplayed()))); onView(withId(R.id.account_picker_selected_account)).check(matches(not(isDisplayed()))); onView(withId(R.id.account_picker_signin_spinner_view)).check(matches(not(isDisplayed()))); + onView(withId(R.id.account_picker_dismiss_button)).check(matches(not(isDisplayed()))); } @Test @@ -387,6 +436,7 @@ onView(withId(R.id.account_picker_horizontal_divider)).check(matches(not(isDisplayed()))); onView(withId(R.id.account_picker_selected_account)).check(matches(not(isDisplayed()))); onView(withId(R.id.account_picker_signin_spinner_view)).check(matches(not(isDisplayed()))); + onView(withId(R.id.account_picker_dismiss_button)).check(matches(not(isDisplayed()))); } @Test @@ -442,6 +492,8 @@ @Test @MediumTest public void testAddAccountOnExpandedSheet() { + MetricsUtils.HistogramDelta accountConsistencyHistogram = new HistogramDelta( + "Signin.AccountConsistencyPromoAction", AccountConsistencyPromoAction.ADD_ACCOUNT); buildAndShowExpandedBottomSheet(); onView(withText(R.string.signin_add_account_to_device)).perform(click()); verify(mAccountPickerDelegateMock).addAccount(callbackArgumentCaptor.capture()); @@ -452,6 +504,7 @@ TestThreadUtils.runOnUiThreadBlocking( () -> callback.onResult(profileDataAdded.getAccountName())); checkCollapsedAccountList(profileDataAdded); + Assert.assertEquals(1, accountConsistencyHistogram.getDelta()); } @Test @@ -502,14 +555,17 @@ onView(withId(R.id.account_picker_bottom_sheet_title)) .check(matches(isDisplayed())) .check(matches(withText(R.string.incognito_interstitial_title))); - onView(withId(R.id.account_picker_bottom_sheet_subtitle)) - .check(matches(not(isDisplayed()))); - onView(withId(R.id.account_picker_horizontal_divider)).check(matches(not(isDisplayed()))); - onView(withId(R.id.account_picker_account_list)).check(matches(not(isDisplayed()))); onView(withId(R.id.incognito_interstitial_bottom_sheet_view)).check(matches(isDisplayed())); onView(withId(R.id.incognito_interstitial_message)).check(matches(isDisplayed())); onView(withId(R.id.incognito_interstitial_learn_more)).check(matches(isDisplayed())); onView(withId(R.id.incognito_interstitial_continue_button)).check(matches(isDisplayed())); + + onView(withId(R.id.account_picker_bottom_sheet_subtitle)) + .check(matches(not(isDisplayed()))); + onView(withId(R.id.account_picker_horizontal_divider)).check(matches(not(isDisplayed()))); + onView(withId(R.id.account_picker_account_list)).check(matches(not(isDisplayed()))); + onView(withId(R.id.account_picker_continue_as_button)).check(matches(not(isDisplayed()))); + onView(withId(R.id.account_picker_dismiss_button)).check(matches(not(isDisplayed()))); } private void clickContinueButtonAndWaitForErrorSheet() { @@ -552,6 +608,7 @@ onView(withId(R.id.account_picker_account_list)).check(matches(not(isDisplayed()))); onView(withId(R.id.account_picker_selected_account)).check(matches(not(isDisplayed()))); onView(withId(R.id.account_picker_continue_as_button)).check(matches(not(isDisplayed()))); + onView(withId(R.id.account_picker_dismiss_button)).check(matches(not(isDisplayed()))); } private void checkZeroAccountBottomSheet() { @@ -587,6 +644,7 @@ profileData.getGivenName() != null ? profileData.getGivenName() : profileData.getAccountName()); onView(withText(continueAsText)).check(matches(isDisplayed())); + onView(withId(R.id.account_picker_dismiss_button)).check(matches(isDisplayed())); onView(withId(R.id.account_picker_account_list)).check(matches(not(isDisplayed()))); }
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt index 633a3491..b155617 100644 --- a/chrome/android/profiles/newest.txt +++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-88.0.4292.0_rc-r1-merged.afdo.bz2 +chromeos-chrome-amd64-88.0.4293.0_rc-r1-merged.afdo.bz2
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_af.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_af.xtb index fa29449..3cb0afcc 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_af.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_af.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> vereis die volgende program:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> vereis 'n webblaaier</translation> <translation id="3858759029325727987">Kies 'n blaaier wat hierdie program steun:</translation> -<translation id="4165986682804962316">Werfinstellings</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNie gesteun nie</translation> <translation id="7671141431838911305">INSTALLEER</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> steun nie spasiebestuur nie.</translation> <translation id="8252328707312954493">MAAK TOE</translation> -<translation id="9213932439211643363">Bestuur webwerfinstellings</translation> <translation id="987264212798334818">Algemeen</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_am.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_am.xtb index 4e04dc7..6c4522b 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_am.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_am.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> የሚከተለው መተግበሪያ ያስፈልገዋል፦</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> ድር አሳሽ ያስፈልገዋል</translation> <translation id="3858759029325727987">ይህን መተግበሪያ የሚደግፍ አሳሽ ይምረጡ፦</translation> -<translation id="4165986682804962316">የጣቢያ ቅንብሮች</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nየማይደገፍ</translation> <translation id="7671141431838911305">ጫን</translation> -<translation id="809358319115531236">ቦታን ማስተዳደር አይደገፍም በ፦ <ph name="BROWSER_PACKAGE" />።</translation> <translation id="8252328707312954493">ዝጋ</translation> -<translation id="9213932439211643363">የድር ጣቢያ ቅንብሮችን ያስተዳድሩ</translation> <translation id="987264212798334818">አጠቃላይ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ar.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ar.xtb index 6dbfdcfe..6bd4bfdf 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ar.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ar.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">يتطلب <ph name="APP_NAME" /> التطبيق التالي:</translation> <translation id="2697679025356221813">يتطلب <ph name="APP_NAME" /> متصفح الويب</translation> <translation id="3858759029325727987">اختيار متصفح يدعم هذا التطبيق:</translation> -<translation id="4165986682804962316">إعدادات المواقع الإلكترونية</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nغير مدعوم</translation> <translation id="7671141431838911305">تثبيت</translation> -<translation id="809358319115531236">لا يوفّر المتصفّح <ph name="BROWSER_PACKAGE" /> إدارة بيانات الموقع الإلكتروني وإعداداته.</translation> <translation id="8252328707312954493">إغلاق</translation> -<translation id="9213932439211643363">إدارة إعدادات الموقع الإلكتروني</translation> <translation id="987264212798334818">عام</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_as.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_as.xtb index 0a3cd27..cd756d9 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_as.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_as.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" />ক এই এপৰ আৱশ্যক:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" />ক এটা ৱেব ব্ৰাউজাৰৰ আৱশ্যক</translation> <translation id="3858759029325727987">এই এপ্টো চলাব পৰা এটা ব্ৰাউজাৰ ব্যৱহাৰ কৰক:</translation> -<translation id="4165986682804962316">ছাইটৰ ছেটিংসমূহ</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nসমৰ্থিত নহয়</translation> <translation id="7671141431838911305">ইনষ্টল কৰক</translation> -<translation id="809358319115531236">ঠাই পৰিচালনা কৰাৰ সুবিধাটো এইটোৱে সমৰ্থন নকৰে: <ph name="BROWSER_PACKAGE" />।</translation> <translation id="8252328707312954493">বন্ধ কৰক</translation> -<translation id="9213932439211643363">ৱেবছাইটৰ ছেটিংসমূহ পৰিচালনা কৰক</translation> <translation id="987264212798334818">সাধাৰণ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_az.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_az.xtb index 00afdd7..e0ed1e4 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_az.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_az.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> aşağıdakı tətbiqi tələb edir:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> veb brauzer tələb edir</translation> <translation id="3858759029325727987">Bu tətbiqi dəstəkləyən brauzer seçin:</translation> -<translation id="4165986682804962316">Sayt ayarları</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nDəstəklənmir</translation> <translation id="7671141431838911305">QURAŞDIRIN</translation> -<translation id="809358319115531236">Boş yerin idarə edilməsi <ph name="BROWSER_PACKAGE" /> tərəfindən dəstəklənmir.</translation> <translation id="8252328707312954493">BAĞLAYIN</translation> -<translation id="9213932439211643363">Vebsayt ayarlarını idarə edin</translation> <translation id="987264212798334818">Ümumi</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_be.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_be.xtb index 1f04d1f4..0f6a6fee 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_be.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_be.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> патрабуе для сваёй працы наступную праграму:</translation> <translation id="2697679025356221813">Праграме "<ph name="APP_NAME" />" патрабуецца вэб-браўзер</translation> <translation id="3858759029325727987">Выберыце браўзер, які падтрымлівае гэту праграму:</translation> -<translation id="4165986682804962316">Налады сайта</translation> <translation id="6377677440246641805">Не падтрымліваецца браўзерам\n<ph name="BROWSER_NAME" /></translation> <translation id="7671141431838911305">УСТАЛЯВАЦЬ</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> не падтрымлівае кіраванне месцам.</translation> <translation id="8252328707312954493">ЗАКРЫЦЬ</translation> -<translation id="9213932439211643363">Кіраваць наладамі вэб-сайта</translation> <translation id="987264212798334818">Агульныя</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_bg.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_bg.xtb index daf8206..9ec33bb7 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_bg.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_bg.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> изисква следното приложение:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> изисква уеб браузър</translation> <translation id="3858759029325727987">Изберете браузър, който поддържа това приложение:</translation> -<translation id="4165986682804962316">Настройки за сайта</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nне се поддържа</translation> <translation id="7671141431838911305">INSTALL</translation> -<translation id="809358319115531236">Управлението на пространството не се поддържа от <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">ЗАТВАРЯНЕ</translation> -<translation id="9213932439211643363">Настройки за сайтовете</translation> <translation id="987264212798334818">Общи</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_bn.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_bn.xtb index 098c113..8129ee8 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_bn.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_bn.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> এর জন্য এই অ্যাপ প্রয়োজন:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" />-এর জন্য একটি ওয়েব ব্রাউজার প্রয়োজন</translation> <translation id="3858759029325727987">এমন ব্রাউজার বেছে নিন যেটি এই অ্যাপ সমর্থন করে:</translation> -<translation id="4165986682804962316">সাইটের সেটিংস</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nসমর্থিত নয়</translation> <translation id="7671141431838911305">ইনস্টল করুন</translation> -<translation id="809358319115531236">এতে স্পেস ম্যানেজ করা যায় না: <ph name="BROWSER_PACKAGE" />।</translation> <translation id="8252328707312954493">বন্ধ করুন</translation> -<translation id="9213932439211643363">ওয়েবসাইট সেটিংস ম্যানেজ করুন</translation> <translation id="987264212798334818">সাধারণ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_bs.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_bs.xtb index 1e96c94..b5f1ae01 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_bs.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_bs.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> zahtijeva sljedeću aplikaciju:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> zahtijeva web-preglednik</translation> <translation id="3858759029325727987">Odaberite preglednik koji podržava ovu aplikaciju:</translation> -<translation id="4165986682804962316">Postavke web-lokacije</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNije podržan</translation> <translation id="7671141431838911305">INSTALIRAJ</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> ne podržava upravljanje prostorom.</translation> <translation id="8252328707312954493">ZATVORI</translation> -<translation id="9213932439211643363">Postavke web lokacije</translation> <translation id="987264212798334818">Opće</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ca.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ca.xtb index 264ef116..7e63dd1 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ca.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ca.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> requereix l'aplicació següent:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> requereix un navegador web</translation> <translation id="3858759029325727987">Tria un navegador compatible amb aquesta aplicació:</translation> -<translation id="4165986682804962316">Configuració del lloc web</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNo compatible</translation> <translation id="7671141431838911305">INSTAL·LA</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> no admet la gestió de l'espai.</translation> <translation id="8252328707312954493">TANCA</translation> -<translation id="9213932439211643363">Gestiona la configuració del lloc web</translation> <translation id="987264212798334818">General</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_cs.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_cs.xtb index d361aa7..0887d42 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_cs.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_cs.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">Aplikace <ph name="APP_NAME" /> vyžaduje tuto aplikaci:</translation> <translation id="2697679025356221813">Aplikace <ph name="APP_NAME" /> vyžaduje webový prohlížeč</translation> <translation id="3858759029325727987">Vyberte prohlížeč, který podporuje tuto aplikaci:</translation> -<translation id="4165986682804962316">Nastavení webu</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNepodporováno</translation> <translation id="7671141431838911305">INSTALOVAT</translation> -<translation id="809358319115531236">Správa prostoru není podporována: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">ZAVŘÍT</translation> -<translation id="9213932439211643363">Spravovat nastavení webu</translation> <translation id="987264212798334818">Všeobecné</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_da.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_da.xtb index a15424a..fb85844 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_da.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_da.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> kræver den følgende app:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> kræver en webbrowser</translation> <translation id="3858759029325727987">Vælg en browser, der understøtter denne app:</translation> -<translation id="4165986682804962316">Indstillinger for websites</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nUnderstøttes ikke</translation> <translation id="7671141431838911305">INSTALLER</translation> -<translation id="809358319115531236">Datahåndtering understøttes ikke af: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">LUK</translation> -<translation id="9213932439211643363">Styr websiteindstillinger</translation> <translation id="987264212798334818">Generelt</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_de.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_de.xtb index 9c5dd64a..da19f7c 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_de.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_de.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> benötigt die folgende App:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> benötigt einen Webbrowser</translation> <translation id="3858759029325727987">Wählen Sie einen Browser, der diese App unterstützt:</translation> -<translation id="4165986682804962316">Website-Einstellungen</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNicht unterstützt</translation> <translation id="7671141431838911305">Installieren</translation> -<translation id="809358319115531236">Das Verwalten des Bereichs wird von <ph name="BROWSER_PACKAGE" /> nicht unterstützt.</translation> <translation id="8252328707312954493">SCHLIEẞEN</translation> -<translation id="9213932439211643363">Website-Einstellungen verwalten</translation> <translation id="987264212798334818">Allgemein</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_el.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_el.xtb index d8a11c85..dc88641 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_el.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_el.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">Το <ph name="APP_NAME" /> απαιτεί την εξής εφαρμογή:</translation> <translation id="2697679025356221813">Το <ph name="APP_NAME" /> απαιτεί πρόγραμμα περιήγησης στον ιστό</translation> <translation id="3858759029325727987">Επιλέξτε ένα πρόγραμμα περιήγησης που υποστηρίζει αυτήν την εφαρμογή:</translation> -<translation id="4165986682804962316">Ρυθμίσεις ιστότοπου</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nΔεν υποστηρίζεται</translation> <translation id="7671141431838911305">ΕΓΚΑΤΑΣΤΑΣΗ</translation> -<translation id="809358319115531236">Η διαχείριση του χώρου δεν υποστηρίζεται από το πρόγραμμα περιήγησης <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">ΚΛΕΙΣΙΜΟ</translation> -<translation id="9213932439211643363">Διαχ/ση ρυθμίσεων ιστ/που</translation> <translation id="987264212798334818">Γενικά</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_en-GB.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_en-GB.xtb index 3d9859b0..9009bb50 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_en-GB.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_en-GB.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> requires the following app:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> requires a web browser</translation> <translation id="3858759029325727987">Choose a browser that supports this app:</translation> -<translation id="4165986682804962316">Site settings</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nUnsupported</translation> <translation id="7671141431838911305">INSTALL</translation> -<translation id="809358319115531236">Managing space not supported by: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">CLOSE</translation> -<translation id="9213932439211643363">Manage website settings</translation> <translation id="987264212798334818">General</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_es-419.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_es-419.xtb index dd5feaaa..f89f7e4b 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_es-419.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_es-419.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> requiere la siguiente app:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> requiere un navegador web</translation> <translation id="3858759029325727987">Elige un navegador que sea compatible con esta app:</translation> -<translation id="4165986682804962316">Configuración de sitios</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNo compatible</translation> <translation id="7671141431838911305">INSTALAR</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> no permite administrar el espacio.</translation> <translation id="8252328707312954493">CERRAR</translation> -<translation id="9213932439211643363">Configuración del sitio</translation> <translation id="987264212798334818">General</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_es.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_es.xtb index a94b94d4..f79a6d2 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_es.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_es.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> requiere la siguiente aplicación:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> requiere un navegador web</translation> <translation id="3858759029325727987">Selecciona un navegador compatible con esta aplicación:</translation> -<translation id="4165986682804962316">Configuración de sitios web</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNo compatible</translation> <translation id="7671141431838911305">INSTALAR</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> no permite gestionar los datos ni los ajustes.</translation> <translation id="8252328707312954493">CERRAR</translation> -<translation id="9213932439211643363">Gestionar ajustes sitios</translation> <translation id="987264212798334818">General</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_et.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_et.xtb index ffae02c..693b73b 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_et.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_et.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">Rakendus <ph name="APP_NAME" /> nõuab järgmist rakendust:</translation> <translation id="2697679025356221813">Rakendus <ph name="APP_NAME" /> nõuab veebibrauserit</translation> <translation id="3858759029325727987">Valige bauser, mis toetab seda rakendust:</translation> -<translation id="4165986682804962316">Saidi seaded</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nToetamata</translation> <translation id="7671141431838911305">INSTALLI</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> ei toeta veebisaidi andmete ja seadete haldamist.</translation> <translation id="8252328707312954493">SULE</translation> -<translation id="9213932439211643363">Veebisaidi seadete haldamine</translation> <translation id="987264212798334818">Üldine</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_eu.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_eu.xtb index e2aebd9..ff4100c 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_eu.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_eu.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">Aplikazio hau behar du <ph name="APP_NAME" /> aplikazioak:</translation> <translation id="2697679025356221813">Web-arakatzaile bat behar du <ph name="APP_NAME" /> aplikazioak</translation> <translation id="3858759029325727987">Aukeratu aplikazio honekin bateragarria den arakatzaile bat:</translation> -<translation id="4165986682804962316">Webgunearen ezarpenak</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nEz da bateragarria</translation> <translation id="7671141431838911305">INSTALATU</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> arakatzaileak ez du onartzen eremua kudeatzeko aukera.</translation> <translation id="8252328707312954493">ITXI</translation> -<translation id="9213932439211643363">Kudeatu webgunearen ezarpenak</translation> <translation id="987264212798334818">Orokorra</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_fa.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_fa.xtb index 59d3093e..b604e65 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_fa.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_fa.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> به برنامههای زیر نیاز دارد:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> مرورگر وب نیاز دارد</translation> <translation id="3858759029325727987">مرورگری را که این برنامه را پشتیبانی میکند انتخاب کنید:</translation> -<translation id="4165986682804962316">تنظیمات سایت</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nپشتیبانینشده</translation> <translation id="7671141431838911305">نصب</translation> -<translation id="809358319115531236">مدیریت فضا در <ph name="BROWSER_PACKAGE" /> پشتیبانی نمیشود.</translation> <translation id="8252328707312954493">بستن</translation> -<translation id="9213932439211643363">مدیریت تنظیمات وبسایت</translation> <translation id="987264212798334818">موارد کلی</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_fi.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_fi.xtb index 7935bde..aa1b5a9 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_fi.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_fi.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> edellyttää seuraavaa sovellusta:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> edellyttää verkkoselainta</translation> <translation id="3858759029325727987">Valitse selain, joka tukee tätä sovellusta:</translation> -<translation id="4165986682804962316">Sivustoasetukset</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nEi tueta</translation> <translation id="7671141431838911305">ASENNA</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> ei tue tilan ylläpitoa.</translation> <translation id="8252328707312954493">SULJE</translation> -<translation id="9213932439211643363">Muuta sivustoasetuksia</translation> <translation id="987264212798334818">Yleistä</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_fil.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_fil.xtb index 0410b4f..8d08d81 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_fil.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_fil.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">Kinakailangan ng <ph name="APP_NAME" /> ang sumusunod na app:</translation> <translation id="2697679025356221813">Kinakailangan ng <ph name="APP_NAME" /> ng web browser</translation> <translation id="3858759029325727987">Pumili ng browser na sinusuportahan ang app na ito:</translation> -<translation id="4165986682804962316">Mga setting ng site</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nHindi Sinusuportahan</translation> <translation id="7671141431838911305">INSTALL</translation> -<translation id="809358319115531236">Ang pamamahala sa space ay hindi sinusuportahan ng: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">ISARA</translation> -<translation id="9213932439211643363">I-manage: website setting</translation> <translation id="987264212798334818">Pangkalahatan</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_fr-CA.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_fr-CA.xtb index 01d5904..f93903db 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_fr-CA.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_fr-CA.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> nécessite l'application suivante :</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> nécessite un navigateur Web</translation> <translation id="3858759029325727987">Choisissez un navigateur qui prend en charge cette application :</translation> -<translation id="4165986682804962316">Paramètres du site</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNon pris en charge</translation> <translation id="7671141431838911305">INSTALLER</translation> -<translation id="809358319115531236">La gestion de l'espace n'est pas prise en charge par <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">FERMER</translation> -<translation id="9213932439211643363">Gérer les paramètres du site Web</translation> <translation id="987264212798334818">Généralités</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_fr.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_fr.xtb index 742ce33..27fbdf3d 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_fr.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_fr.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> nécessite l'application suivante :</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> nécessite un navigateur Web</translation> <translation id="3858759029325727987">Sélectionnez un navigateur compatible avec cette application :</translation> -<translation id="4165986682804962316">Paramètres de site</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNon compatible</translation> <translation id="7671141431838911305">INSTALLER</translation> -<translation id="809358319115531236">La gestion de l'espace n'est pas acceptée par <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">FERMER</translation> -<translation id="9213932439211643363">Gérer les paramètres des sites Web</translation> <translation id="987264212798334818">Général</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_gl.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_gl.xtb index 2bc02e2..48c21cb 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_gl.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_gl.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">A aplicación <ph name="APP_NAME" /> precisa a seguinte aplicación:</translation> <translation id="2697679025356221813">A aplicación <ph name="APP_NAME" /> precisa un navegador web</translation> <translation id="3858759029325727987">Selecciona un navegador compatible con esta aplicación:</translation> -<translation id="4165986682804962316">Configuración do sitio</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNon é compatible</translation> <translation id="7671141431838911305">INSTALAR</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> non admite a xestión do espazo.</translation> <translation id="8252328707312954493">PECHAR</translation> -<translation id="9213932439211643363">Xestionar configuración do sitio</translation> <translation id="987264212798334818">Xeral</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_gu.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_gu.xtb index 70157a0..f1b78431 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_gu.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_gu.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" />ને નીચેની ઍપ્લિકેશનની જરૂર છે:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" />ને વેબ બ્રાઉઝરની જરૂર છે</translation> <translation id="3858759029325727987">આ ઍપ્લિકેશનને સમર્થન આપતું બ્રાઉઝર પસંદ કરો:</translation> -<translation id="4165986682804962316">સાઇટ સેટિંગ્સ</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nઅસમર્થિત</translation> <translation id="7671141431838911305">ઇન્સ્ટોલ કરો</translation> -<translation id="809358319115531236">સ્પેસ મેનેજ કરવાની સુવિધા આ બ્રાઉઝર પર ઉપલબ્ધ નથી: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">બંધ કરો</translation> -<translation id="9213932439211643363">વેબસાઇટ સેટિંગ મેનેજ કરો</translation> <translation id="987264212798334818">સામાન્ય</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_hi.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_hi.xtb index c59820e..dc3bb40 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_hi.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_hi.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> को इन ऐप्लिकेशन की ज़रूरत है:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> को वेब ब्राउज़र की ज़रूरत है</translation> <translation id="3858759029325727987">वह ब्राउज़र चुनें जिस पर यह ऐप्लिकेशन काम कर सके:</translation> -<translation id="4165986682804962316">साइट सेटिंग</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nकाम नहीं करता</translation> <translation id="7671141431838911305">इंस्टॉल करें</translation> -<translation id="809358319115531236">स्पेस को प्रबंधित करने की सुविधा इस पर काम नहीं करती: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">बंद करें</translation> -<translation id="9213932439211643363">वेबसाइट की सेटिंग प्रबंधित करें</translation> <translation id="987264212798334818">सामान्य</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_hr.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_hr.xtb index f1c5e7c..06433d6b 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_hr.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_hr.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> zahtijeva sljedeću aplikaciju:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> zahtijeva web-preglednik</translation> <translation id="3858759029325727987">Odaberite preglednik koji podržava tu aplikaciju:</translation> -<translation id="4165986682804962316">Postavke web-lokacije</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNije podržan</translation> <translation id="7671141431838911305">INSTALIRANJE</translation> -<translation id="809358319115531236">Upravljanje prostorom nije podržano u pregledniku <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">ZATVORI</translation> -<translation id="9213932439211643363">Upravljanje postavkama web-lokacija</translation> <translation id="987264212798334818">Općenito</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_hu.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_hu.xtb index 26f51fbb..b1c5b12 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_hu.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_hu.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">A(z) <ph name="APP_NAME" /> futtatásához a következő alkalmazásra van szükség:</translation> <translation id="2697679025356221813">A(z) <ph name="APP_NAME" /> futtatásához böngészőre van szükség</translation> <translation id="3858759029325727987">Válasszon ki egy olyan böngészőt, amelyik támogatja ezt az alkalmazást:</translation> -<translation id="4165986682804962316">Webhelybeállítások</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNem támogatott</translation> <translation id="7671141431838911305">TELEPÍTÉS</translation> -<translation id="809358319115531236">A hely kezelését nem támogatja a következő: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">BEZÁR</translation> -<translation id="9213932439211643363">Webhelybeállítások</translation> <translation id="987264212798334818">Általános</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_hy.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_hy.xtb index e5c7dfee..ff22ab9 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_hy.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_hy.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> հավելվածը գործարկելու համար անհրաժեշտ է հետևյալ հավելվածը՝</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> հավելվածը գործարկելու համար անհրաժեշտ է դիտարկիչ</translation> <translation id="3858759029325727987">Ընտրեք այս հավելվածն աջակցող դիտարկիչ՝</translation> -<translation id="4165986682804962316">Կայքի կարգավորումներ</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nՉի աջակցվում</translation> <translation id="7671141431838911305">ՏԵՂԱԴՐԵԼ</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> դիտարկիչը չի աջակցում հիշողության կառավարում։</translation> <translation id="8252328707312954493">ՓԱԿԵԼ</translation> -<translation id="9213932439211643363">Կայքի կարգավորումներ</translation> <translation id="987264212798334818">Ընդհանուր</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_id.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_id.xtb index 887b418..6014562 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_id.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_id.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> memerlukan aplikasi berikut:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> memerlukan browser web</translation> <translation id="3858759029325727987">Pilih browser yang mendukung aplikasi ini:</translation> -<translation id="4165986682804962316">Setelan situs</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nTidak didukung</translation> <translation id="7671141431838911305">INSTAL</translation> -<translation id="809358319115531236">Mengelola ruang tidak didukung oleh: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">TUTUP</translation> -<translation id="9213932439211643363">Kelola setelan situs</translation> <translation id="987264212798334818">Umum</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_is.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_is.xtb index 9c8021f..4b12fdc 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_is.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_is.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> krefst þessa forrits:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> krefst vafra</translation> <translation id="3858759029325727987">Veldu vafra sem styður við þetta forrit:</translation> -<translation id="4165986682804962316">Vefsvæðastillingar</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nEkki stuðningur</translation> <translation id="7671141431838911305">SETJA UPP</translation> -<translation id="809358319115531236">Rýmisumsjón ekki studd af: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">LOKA</translation> -<translation id="9213932439211643363">Stjórna stillingum vefsvæðis</translation> <translation id="987264212798334818">Almennt</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_it.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_it.xtb index cbea743..f51a2df 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_it.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_it.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> richiede la seguente app:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> richiede un browser web</translation> <translation id="3858759029325727987">Scegli un browser che supporta questa app:</translation> -<translation id="4165986682804962316">Impostazioni sito</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNon supportati</translation> <translation id="7671141431838911305">INSTALLA</translation> -<translation id="809358319115531236">Gestione spazio non supportata da: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">CHIUDI</translation> -<translation id="9213932439211643363">Gestisci impostazioni sito</translation> <translation id="987264212798334818">Generali</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_iw.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_iw.xtb index 9ea2f93..7dcec025 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_iw.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_iw.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">האפליקציה <ph name="APP_NAME" /> מחייבת את האפליקציה הבאה:</translation> <translation id="2697679025356221813">האפליקציה <ph name="APP_NAME" /> מחייבת שימוש בדפדפן אינטרנט</translation> <translation id="3858759029325727987">יש לבחור דפדפן שתומך באפליקציה הזו:</translation> -<translation id="4165986682804962316">הגדרות לאתרים</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nלא נתמך</translation> <translation id="7671141431838911305">התקנה</translation> -<translation id="809358319115531236">סביבת הניהול אינה נתמכת על ידי: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">סגירה</translation> -<translation id="9213932439211643363">ניהול הגדרות האתר</translation> <translation id="987264212798334818">כללי</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ja.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ja.xtb index 234e951..36f558fa 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ja.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ja.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> を使用するには次のアプリが必要です:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> を使用するにはウェブブラウザが必要です</translation> <translation id="3858759029325727987">このアプリをサポートしているブラウザを選択してください:</translation> -<translation id="4165986682804962316">サイトの設定</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nサポートされていません</translation> <translation id="7671141431838911305">インストール</translation> -<translation id="809358319115531236">スペースの管理は <ph name="BROWSER_PACKAGE" /> ではサポートされていません。</translation> <translation id="8252328707312954493">閉じる</translation> -<translation id="9213932439211643363">ウェブサイトの設定を管理する</translation> <translation id="987264212798334818">全般</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ka.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ka.xtb index 4d3f8573..fe81480b 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ka.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ka.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> საჭიროებს შემდეგ აპს:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> საჭიროებს ვებ-ბრაუზერს</translation> <translation id="3858759029325727987">აირჩიეთ ბრაუზერი, რომლის მიერაც მხარდაჭერილია შემდეგი აპი:</translation> -<translation id="4165986682804962316">საიტის პარამეტრები</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nმხარდაუჭერელი</translation> <translation id="7671141431838911305">ინსტალაცია</translation> -<translation id="809358319115531236">სივრცის მართვა მხარდაუჭერელია შემდეგის მიერ: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">დახურვა</translation> -<translation id="9213932439211643363">ვებსაიტების პარამეტრების მართვა</translation> <translation id="987264212798334818">ზოგადი</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_kk.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_kk.xtb index a2f0315..484c3b2 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_kk.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_kk.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> үшін келесі қолданбалар қажет:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> үшін веббраузер қажет</translation> <translation id="3858759029325727987">Осы қолданбаны қолдайтын браузерді таңдаңыз:</translation> -<translation id="4165986682804962316">Сайт параметрлері</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nҚолдау көрсетілмейді</translation> <translation id="7671141431838911305">ОРНАТУ</translation> -<translation id="809358319115531236">Жұмыс орнын басқаруға <ph name="BROWSER_PACKAGE" /> қолдау көрсетпейді.</translation> <translation id="8252328707312954493">ЖАБУ</translation> -<translation id="9213932439211643363">Веб-сайт параметрлері</translation> <translation id="987264212798334818">Жалпы</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_km.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_km.xtb index 66b1d2e..cc1b6ff 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_km.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_km.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> ត្រូវការកម្មវិធីខាងក្រោម៖</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> ត្រូវការកម្មវិធីរុករកតាមអ៊ិនធឺណិត</translation> <translation id="3858759029325727987">ជ្រើសរើសកម្មវិធីរុករកតាមអ៊ីនធឺណិតដែលស្គាល់កម្មវិធីនេះ៖</translation> -<translation id="4165986682804962316">ការកំណត់គេហទំព័រ</translation> <translation id="6377677440246641805">មិនស្គាល់ <ph name="BROWSER_NAME" />\n</translation> <translation id="7671141431838911305">ដំឡើង</translation> -<translation id="809358319115531236">មិនអាចគ្រប់គ្រងការដកឃ្លានៅក្នុង៖ <ph name="BROWSER_PACKAGE" /> បានទេ។</translation> <translation id="8252328707312954493">បិទ</translation> -<translation id="9213932439211643363">គ្រប់គ្រងការកំណត់គេហទំព័រ</translation> <translation id="987264212798334818">ទូទៅ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_kn.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_kn.xtb index 01e7538..24f85fe3 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_kn.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_kn.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> ಗೆ ಈ ಕೆಳಗಿನ ಅಪ್ಲಿಕೇಶನ್ ಅಗತ್ಯವಿದೆ:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> ಗೆ ವೆಬ್ ಬ್ರೌಸರ್ನ ಅಗತ್ಯವಿದೆ</translation> <translation id="3858759029325727987">ಈ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬೆಂಬಲಿಸುವ ಬ್ರೌಸರ್ ಆಯ್ಕೆ ಮಾಡಿ:</translation> -<translation id="4165986682804962316">ಸೈಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳು</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nಬೆಂಬಲವಿಲ್ಲ</translation> <translation id="7671141431838911305">ಇನ್ಸ್ಟಾಲ್</translation> -<translation id="809358319115531236">ಸ್ಥಳಾವಕಾಶದ ನಿರ್ವಹಣೆ ಇದರಿಂದ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">ಮುಚ್ಚಿ</translation> -<translation id="9213932439211643363">ವೆಬ್ಸೈಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation> <translation id="987264212798334818">ಸಾಮಾನ್ಯ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ko.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ko.xtb index e2dd248..881108b 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ko.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ko.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" />을(를) 사용하려면 필요한 앱:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" />을(를) 사용하려면 웹브라우저가 필요함</translation> <translation id="3858759029325727987">이 앱을 지원하는 브라우저 선택:</translation> -<translation id="4165986682804962316">사이트 설정</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\n지원되지 않음</translation> <translation id="7671141431838911305">설치</translation> -<translation id="809358319115531236">공간 관리는 <ph name="BROWSER_PACKAGE" />에서 지원되지 않습니다.</translation> <translation id="8252328707312954493">닫기</translation> -<translation id="9213932439211643363">웹사이트 설정 관리</translation> <translation id="987264212798334818">일반</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ky.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ky.xtb index 01fc9cd8..6f41621d 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ky.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ky.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> колдонмосуна төмөнкү колдонмо талап кылынат:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> колдонмосуна веб браузер талап кылынат</translation> <translation id="3858759029325727987">Бул колдонмону колдоого алган серепчини тандаңыз:</translation> -<translation id="4165986682804962316">Сайт жөндөөлөрү</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nКолдоого алынбайт</translation> <translation id="7671141431838911305">ОРНОТУУ</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> серепчисинде мейкиндикти башкаруу функциясы иштебейт.</translation> <translation id="8252328707312954493">ЖАБУУ</translation> -<translation id="9213932439211643363">Вебсайт жөндөөлөрүн башкаруу</translation> <translation id="987264212798334818">Жалпы</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_lo.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_lo.xtb index fc7a7a6..54bdbd27 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_lo.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_lo.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> ຈຳເປັນຕ້ອງມີແອັບຕໍ່ໄປນີ້:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> ຈຳເປັນຕ້ອງມີໂປຣແກຣມທ່ອງເວັບ</translation> <translation id="3858759029325727987">ເລືອກໂປຣແກຣມທ່ອງເວັບທີ່ຮອງຮັບແອັບນີ້:</translation> -<translation id="4165986682804962316">ການຕັ້ງຄ່າເວັບໄຊທ໌</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nບໍ່ຮອງຮັບ</translation> <translation id="7671141431838911305">ຕິດຕັ້ງ</translation> -<translation id="809358319115531236">ບໍ່ຮອງຮັບການຈັດການພື້ນທີ່ໃນ: <ph name="BROWSER_PACKAGE" /></translation> <translation id="8252328707312954493">ປິດ</translation> -<translation id="9213932439211643363">ຈັດການການຕັ້ງຄ່າເວັບໄຊ</translation> <translation id="987264212798334818">ທົ່ວໄປ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_lt.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_lt.xtb index 5bad40ef..6e1903e 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_lt.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_lt.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">„<ph name="APP_NAME" />“ reikia nurodytos programos:</translation> <translation id="2697679025356221813">„<ph name="APP_NAME" />“ reikia žiniatinklio naršyklės</translation> <translation id="3858759029325727987">Pasirinkite šią programą palaikančią naršyklę:</translation> -<translation id="4165986682804962316">Svetainės nustatymai</translation> <translation id="6377677440246641805">„<ph name="BROWSER_NAME" />“\nNepalaikoma</translation> <translation id="7671141431838911305">ĮDIEGTI</translation> -<translation id="809358319115531236">Srities valdymas nepalaikomas: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">UŽDARYTI</translation> -<translation id="9213932439211643363">Tvarkyti svetainės nustatymus</translation> <translation id="987264212798334818">Bendra</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_lv.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_lv.xtb index 8290fe3..9bcf49e 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_lv.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_lv.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">Lietotnei <ph name="APP_NAME" /> ir nepieciešama šī lietotne:</translation> <translation id="2697679025356221813">Lietotnei <ph name="APP_NAME" /> ir nepieciešams tīmekļa pārlūks</translation> <translation id="3858759029325727987">Izvēlieties pārlūku, kas atbalsta šo lietotni:</translation> -<translation id="4165986682804962316">Vietnes iestatījumi</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNav atbalstīts</translation> <translation id="7671141431838911305">INSTALĒT</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> neatbalsta darbvietas pārvaldību.</translation> <translation id="8252328707312954493">AIZVĒRT</translation> -<translation id="9213932439211643363">Pārvaldīt vietnes iestat.</translation> <translation id="987264212798334818">Vispārīgi</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_mk.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_mk.xtb index cd36a92b..3f51513 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_mk.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_mk.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> ја бара следната апликација:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> бара веб-прелистувач</translation> <translation id="3858759029325727987">Изберете прелистувач што ја поддржува апликацијава:</translation> -<translation id="4165986682804962316">Поставки на локација</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nе неподдржан</translation> <translation id="7671141431838911305">ИНСТАЛИРАЈ</translation> -<translation id="809358319115531236">Управувањето со просторот не е поддржано од: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">ЗАТВОРИ</translation> -<translation id="9213932439211643363">Управувајте со поставките за веб-сајтот</translation> <translation id="987264212798334818">Општо</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ml.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ml.xtb index f80a97e..4a9b3e05 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ml.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ml.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> എന്നതിന് ഈ ആപ്പ് ആവശ്യമാണ്:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> ആപ്പിന് വെബ് ബ്രൗസർ ആവശ്യമാണ്</translation> <translation id="3858759029325727987">ഈ ആപ്പിന് അനുയോജ്യമായ ബ്രൗസർ തിരഞ്ഞെടുക്കുക:</translation> -<translation id="4165986682804962316">സൈറ്റ് ക്രമീകരണങ്ങൾ</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nഅനുയോജ്യമല്ല</translation> <translation id="7671141431838911305">ഇൻസ്റ്റാൾ ചെയ്യുക</translation> -<translation id="809358319115531236">സ്പെയ്സ് മാനേജ് ചെയ്യൽ ഇനിപ്പറയുന്നത് പിന്തുണയ്ക്കുന്നില്ല: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">അടയ്ക്കുക</translation> -<translation id="9213932439211643363">വെബ്സൈറ്റ് ക്രമീകരണം മാനേജ് ചെയ്യുക</translation> <translation id="987264212798334818">പൊതുവായ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_mn.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_mn.xtb index 8f3ab7e8..be02c6bc 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_mn.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_mn.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" />-д дараах апп шаардлагатай:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> ажиллахын тулд веб хөтөч шаардлагатай</translation> <translation id="3858759029325727987">Энэ аппыг дэмждэг хөтөч сонгоно уу:</translation> -<translation id="4165986682804962316">Сайтын тохиргоо</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nДэмжигдээгүй</translation> <translation id="7671141431838911305">СУУЛГАХ</translation> -<translation id="809358319115531236">Орон зайг удирдахыг дараах хөтөч дэмждэггүй: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">ХААХ</translation> -<translation id="9213932439211643363">Веб сайтын тохиргоог удирдах</translation> <translation id="987264212798334818">Ерөнхий</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_mr.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_mr.xtb index d6530b5a..78bab9a1 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_mr.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_mr.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> ला पुढील अॅपची आवश्यकता आहे:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> ला वेब ब्राउझरची आवश्यकता आहे</translation> <translation id="3858759029325727987">या अॅपला सपोर्ट करत असलेला ब्राउझर निवडा:</translation> -<translation id="4165986682804962316">साइट सेटिंग्ज</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nसपोर्ट नसलेला</translation> <translation id="7671141431838911305">स्थापित करा</translation> -<translation id="809358319115531236">स्पेस व्यवस्थापित करण्यास यांचा सपोर्ट नाही: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">बंद करा</translation> -<translation id="9213932439211643363">वेबसाइट सेटिंग्ज व्यवस्थापित करा</translation> <translation id="987264212798334818">सामान्य</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ms.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ms.xtb index 997be6d..14e3fbc 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ms.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ms.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> memerlukan apl berikut:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> memerlukan penyemak imbas web</translation> <translation id="3858759029325727987">Pilih penyemak imbas yang menyokong apl ini:</translation> -<translation id="4165986682804962316">Tetapan tapak</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nTidak disokong</translation> <translation id="7671141431838911305">PASANG</translation> -<translation id="809358319115531236">Pengurusan ruang tidak disokong oleh: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">TUTUP</translation> -<translation id="9213932439211643363">Urus tetapan tapak web</translation> <translation id="987264212798334818">Umum</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_my.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_my.xtb index dd2aa50..82312e512 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_my.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_my.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> သည် အောက်ပါအက်ပ်တို့ကို လိုအပ်ပါသည်−</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> သည် ဝဘ်ဘရောင်ဇာတစ်ခု လိုအပ်ပါသည်</translation> <translation id="3858759029325727987">ဤအက်ပ်ကို ပံ့ပိုးပေးသည့် ဘရောင်ဇာတစ်ခု ရွေးပါ−</translation> -<translation id="4165986682804962316">ဝက်ဆိုက် ဆက်တင်များ</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nပံ့ပိုးမထားပါ</translation> <translation id="7671141431838911305">တပ်ဆင်မည်</translation> -<translation id="809358319115531236">နေရာစီမံခန့်ခွဲခြင်းကို ဤအရာက မပံ့ပိုးပါ- <ph name="BROWSER_PACKAGE" />။</translation> <translation id="8252328707312954493">ပိတ်ရန်</translation> -<translation id="9213932439211643363">ဝဘ်ဆိုက်ဆက်တင် စီမံခြင်း</translation> <translation id="987264212798334818">အထွေထွေ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ne.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ne.xtb index 8c70867..98105bb 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ne.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ne.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> लाई निम्न एप आवश्यक हुन्छ:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> लाई वेब ब्राउजर आवश्यक हुन्छ</translation> <translation id="3858759029325727987">यो एपलाई समर्थन गर्ने ब्राउजर छनौट गर्नुहोस्:</translation> -<translation id="4165986682804962316">साइट सेटिङहरू</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nअसमर्थित</translation> <translation id="7671141431838911305">स्थापना गर्नुहोस्</translation> -<translation id="809358319115531236">खाली ठाउँ व्यवस्थापन गर्ने सुविधा <ph name="BROWSER_PACKAGE" /> मा उपलब्ध छैन।</translation> <translation id="8252328707312954493">बन्द गर्नुहोस्</translation> -<translation id="9213932439211643363">वेबसाइटका सेटिङ मिलाउनुहोस्</translation> <translation id="987264212798334818">सामान्य</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_nl.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_nl.xtb index ab7115b49..64b96ec 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_nl.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_nl.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">Voor <ph name="APP_NAME" /> is de volgende app vereist:</translation> <translation id="2697679025356221813">Voor <ph name="APP_NAME" /> is een webbrowser vereist</translation> <translation id="3858759029325727987">Kies een browser die ondersteuning biedt voor deze app:</translation> -<translation id="4165986682804962316">Site-instellingen</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNiet ondersteund</translation> <translation id="7671141431838911305">INSTALLEER</translation> -<translation id="809358319115531236">Het beheren van ruimte wordt niet ondersteund door: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">SLUITEN</translation> -<translation id="9213932439211643363">Website-instellingen beheren</translation> <translation id="987264212798334818">Algemeen</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_no.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_no.xtb index 7b8975a..fb1683e 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_no.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_no.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> krever denne appen:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> krever en nettleser</translation> <translation id="3858759029325727987">Velg en nettleser som støtter denne appen:</translation> -<translation id="4165986682804962316">Nettstedsinnstillinger</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nStøttes ikke</translation> <translation id="7671141431838911305">INSTALLER</translation> -<translation id="809358319115531236">Områdeadministrering støttes ikke av <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">LUKK</translation> -<translation id="9213932439211643363">Administrer nettstedsinnstillinger</translation> <translation id="987264212798334818">Generelt</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_or.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_or.xtb index bf7d6f3..453684a 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_or.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_or.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">ନିମ୍ନୋକ୍ତ ଆପ୍ <ph name="APP_NAME" /> ଆବଶ୍ୟକ କରୁଛି:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> ଏକ ୱେବ୍ ବ୍ରାଉଜର୍ ଆବଶ୍ୟକ କରେ</translation> <translation id="3858759029325727987">ଗୋଟିଏ ବ୍ରାଉଜର୍ ଚୟନ କରନ୍ତୁ, ଯାହା ଏହି ଆପ୍କୁ ସମର୍ଥନ କରିଥାଏ:</translation> -<translation id="4165986682804962316">ସାଇଟ୍ ସେଟିଂସ୍</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nଅସମର୍ଥିତ</translation> <translation id="7671141431838911305">ଇନ୍ଷ୍ଟଲ୍ କରନ୍ତୁ</translation> -<translation id="809358319115531236">ସ୍ପେସ୍ ପରିଚାଳନା କରିବା ଏହା ଦ୍ୱାରା ସମର୍ଥିତ ନୁହେଁ: <ph name="BROWSER_PACKAGE" />।</translation> <translation id="8252328707312954493">ବନ୍ଦ କରନ୍ତୁ</translation> -<translation id="9213932439211643363">ୱେବସାଇଟ୍ ସେଟିଂସ୍ ପରିଚାଳନା କରନ୍ତୁ</translation> <translation id="987264212798334818">ସାଧାରଣ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_pa.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_pa.xtb index 72a52a9..69a8d75 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_pa.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_pa.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> ਨੂੰ ਅੱਗੇ ਦਿੱਤੀ ਐਪ ਦੀ ਲੋੜ ਹੈ:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> ਨੂੰ ਇੱਕ ਵੈੱਬ ਬ੍ਰਾਊਜ਼ਰ ਦੀ ਲੋੜ ਹੈ</translation> <translation id="3858759029325727987">ਇਸ ਐਪ ਦਾ ਸਮਰਥਨ ਕਰਨ ਵਾਲਾ ਕੋਈ ਬ੍ਰਾਊਜ਼ਰ ਚੁਣੋ:</translation> -<translation id="4165986682804962316">ਸਾਈਟ ਸੈਟਿੰਗਾਂ</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nਅਸਮਰਥਿਤ</translation> <translation id="7671141431838911305">ਸਥਾਪਤ ਕਰੋ</translation> -<translation id="809358319115531236">ਇਸ ਬ੍ਰਾਊਜ਼ਰ 'ਤੇ ਜਗ੍ਹਾ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੀ ਸੁਵਿਧਾ ਨਹੀਂ ਹੈ: <ph name="BROWSER_PACKAGE" /></translation> <translation id="8252328707312954493">ਬੰਦ ਕਰੋ</translation> -<translation id="9213932439211643363">ਵੈੱਬਸਾਈਟ ਸੈਟਿੰਗਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation> <translation id="987264212798334818">ਸਧਾਰਨ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_pl.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_pl.xtb index f7ff1fa..dd0ba0c2 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_pl.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_pl.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> wymaga tej aplikacji:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> wymaga przeglądarki</translation> <translation id="3858759029325727987">Wybierz przeglądarkę, która obsługuje tę aplikację:</translation> -<translation id="4165986682804962316">Ustawienia witryn</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNieobsługiwana przeglądarka</translation> <translation id="7671141431838911305">ZAINSTALUJ</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> nie obsługuje zarządzania miejscem.</translation> <translation id="8252328707312954493">ZAMKNIJ</translation> -<translation id="9213932439211643363">Zarządzaj ustawieniami witryny</translation> <translation id="987264212798334818">Ogólne</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_pt-BR.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_pt-BR.xtb index 200f428..401240a 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_pt-BR.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_pt-BR.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> requer o seguinte app:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> requer um navegador da Web</translation> <translation id="3858759029325727987">Escolha um navegador que seja compatível com este app:</translation> -<translation id="4165986682804962316">Configurações do site</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nincompatível</translation> <translation id="7671141431838911305">INSTALAR</translation> -<translation id="809358319115531236">O navegador <ph name="BROWSER_PACKAGE" /> não é compatível com o gerenciamento de dados e configurações do site.</translation> <translation id="8252328707312954493">FECHAR</translation> -<translation id="9213932439211643363">Gerenciar config. do site</translation> <translation id="987264212798334818">Geral</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_pt-PT.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_pt-PT.xtb index ca8a4e3..8ec726c 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_pt-PT.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_pt-PT.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> necessita da seguinte aplicação:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> necessita de um navegador de Internet</translation> <translation id="3858759029325727987">Escolha um navegador compatível com esta aplicação:</translation> -<translation id="4165986682804962316">Definições de sites</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nIncompatível</translation> <translation id="7671141431838911305">INSTALAR</translation> -<translation id="809358319115531236">A gestão do espaço não é suportada por: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">FECHAR</translation> -<translation id="9213932439211643363">Gerir definições de sites</translation> <translation id="987264212798334818">Geral</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ro.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ro.xtb index 9f93737..788a3cb4 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ro.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ro.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> necesită următoarea aplicație.</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> necesită un browser web</translation> <translation id="3858759029325727987">Alege un browser care acceptă această aplicație:</translation> -<translation id="4165986682804962316">Setări pentru site-uri</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nIncompatibil</translation> <translation id="7671141431838911305">INSTALEAZĂ</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> nu acceptă gestionarea spațiului.</translation> <translation id="8252328707312954493">ÎNCHIDE</translation> -<translation id="9213932439211643363">Gestionează setările site-ului</translation> <translation id="987264212798334818">General</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ru.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ru.xtb index f35dd96..13a2f3fa 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ru.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ru.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">Установка приложения для запуска "<ph name="APP_NAME" />"</translation> <translation id="2697679025356221813">Выбор браузера для запуска приложения "<ph name="APP_NAME" />"</translation> <translation id="3858759029325727987">Выберите браузер, который поддерживает это приложение:</translation> -<translation id="4165986682804962316">Настройки сайтов</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nНе поддерживается</translation> <translation id="7671141431838911305">УСТАНОВИТЬ</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> не поддерживает управление данными и настройками сайта.</translation> <translation id="8252328707312954493">ЗАКРЫТЬ</translation> -<translation id="9213932439211643363">Настроить сайт</translation> <translation id="987264212798334818">Общие</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_si.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_si.xtb index 80332216..164f5ac 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_si.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_si.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> හට පහත යෙදුම අවශ්යයි:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> හට වෙබ් බ්රව්සරයක් අවශ්යයි</translation> <translation id="3858759029325727987">මෙම යෙදුමට සහාය දක්වන බ්රවුසරයක් තෝරන්න:</translation> -<translation id="4165986682804962316">අඩවි සැකසුම්</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nසහාය නොදක්වයි</translation> <translation id="7671141431838911305">ස්ථාපනය</translation> -<translation id="809358319115531236">මෙමගින් ඉඩ කළමනාකරණයට සහාය නොදක්වයි: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">වසන්න</translation> -<translation id="9213932439211643363">වෙබ් අඩවි සැකසීම් කළමනාකරණය කරන්න</translation> <translation id="987264212798334818">සාමාන්ය</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_sk.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_sk.xtb index e2af53e..f7e5f23 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_sk.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_sk.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> vyžaduje nasledujúcu aplikáciu:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> vyžaduje webový prehliadač</translation> <translation id="3858759029325727987">Vyberte prehliadač, ktorý podporuje túto aplikáciu:</translation> -<translation id="4165986682804962316">Nastavenia webu</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNepodporované</translation> <translation id="7671141431838911305">INŠTALOVAŤ</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> nepodporuje správu priestoru.</translation> <translation id="8252328707312954493">ZAVRIEŤ</translation> -<translation id="9213932439211643363">Spravovať nastavenia webu</translation> <translation id="987264212798334818">Všeobecné</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_sl.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_sl.xtb index 890ced6..daf499c5 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_sl.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_sl.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> zahteva naslednjo aplikacijo:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> zahteva brskalnik</translation> <translation id="3858759029325727987">Izberite brskalnik, ki podpira to aplikacijo:</translation> -<translation id="4165986682804962316">Nastavitve spletnega mesta</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNepodprto</translation> <translation id="7671141431838911305">NAMESTI</translation> -<translation id="809358319115531236">Upravljanja prostora ne podpira: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">ZAPRI</translation> -<translation id="9213932439211643363">Upravljanje nastavitev spletnega mesta</translation> <translation id="987264212798334818">Splošno</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_sq.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_sq.xtb index 98fd6a9..6417d95 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_sq.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_sq.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> kërkon aplikacionin e mëposhtëm:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> kërkon një shfletues uebi</translation> <translation id="3858759029325727987">Zgjidh një shfletues që mbështet këtë aplikacion:</translation> -<translation id="4165986682804962316">Cilësimet e sajtit</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNuk mbështetet</translation> <translation id="7671141431838911305">INSTALO</translation> -<translation id="809358319115531236">Menaxhimi i hapësirës nuk mbështetet nga: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">MBYLL</translation> -<translation id="9213932439211643363">Menaxho cilësimet e faqes së internetit</translation> <translation id="987264212798334818">Të përgjithshme</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_sr-Latn.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_sr-Latn.xtb index e79704fc..38537a8 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_sr-Latn.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_sr-Latn.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> zahteva sledeću aplikaciju:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> zahteva veb-pregledač</translation> <translation id="3858759029325727987">Odaberite pregledač koji podržava ovu aplikaciju:</translation> -<translation id="4165986682804962316">Podešavanja sajta</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nNije podržano</translation> <translation id="7671141431838911305">INSTALIRANJE</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> ne podržava upravljanje prostorom.</translation> <translation id="8252328707312954493">ZATVORI</translation> -<translation id="9213932439211643363">Podešavanja veb-sajta</translation> <translation id="987264212798334818">Opšte</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_sr.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_sr.xtb index 1059e8a..016e71e 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_sr.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_sr.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> захтева следећу апликацију:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> захтева веб-прегледач</translation> <translation id="3858759029325727987">Одаберите прегледач који подржава ову апликацију:</translation> -<translation id="4165986682804962316">Подешавања сајта</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nНије подржано</translation> <translation id="7671141431838911305">ИНСТАЛИРАЊЕ</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> не подржава управљање простором.</translation> <translation id="8252328707312954493">ЗАТВОРИ</translation> -<translation id="9213932439211643363">Подешавања веб-сајта</translation> <translation id="987264212798334818">Опште</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_sv.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_sv.xtb index 3226bdc..f01fecc 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_sv.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_sv.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">Följande app krävs för <ph name="APP_NAME" />:</translation> <translation id="2697679025356221813">En webbläsare krävs för <ph name="APP_NAME" /></translation> <translation id="3858759029325727987">Välj en webbläsare som stöder den här appen:</translation> -<translation id="4165986682804962316">Platsinställningar</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nStöds inte</translation> <translation id="7671141431838911305">INSTALLERA</translation> -<translation id="809358319115531236">Möjligheten att hantera utrymme stöds inte av: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">STÄNG</translation> -<translation id="9213932439211643363">Hantera webbplatsinställningar</translation> <translation id="987264212798334818">Allmänt</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_sw.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_sw.xtb index e1a70c3..198a246 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_sw.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_sw.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> inahitaji programu ifuatayo:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> inahitaji kivinjari</translation> <translation id="3858759029325727987">Chagua kivinjari kinachoweza kutumia programu hii:</translation> -<translation id="4165986682804962316">Mipangilio ya tovuti</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nHaitumiki</translation> <translation id="7671141431838911305">SAKINISHA</translation> -<translation id="809358319115531236">Kipengele cha kudhibiti nafasi hakitumiki kwenye: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">FUNGA</translation> -<translation id="9213932439211643363">Dhibiti mipangilio ya tovuti</translation> <translation id="987264212798334818">Jumla</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ta.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ta.xtb index e4669f9..a1a05a7 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ta.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ta.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" />க்கு, பின்வரும் ஆப்ஸ் தேவை:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" />க்கு இணைய உலாவி தேவை</translation> <translation id="3858759029325727987">இந்த ஆப்ஸை ஆதரிக்கும் உலாவியைத் தேர்வு செய்யவும்:</translation> -<translation id="4165986682804962316">தள அமைப்புகள்</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nஆதரிக்கப்படவில்லை</translation> <translation id="7671141431838911305">நிறுவு</translation> -<translation id="809358319115531236">இந்த உலாவியில் இடத்தை நிர்வகிக்க முடியாது: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">மூடு</translation> -<translation id="9213932439211643363">இணையதள அமைப்பு நிர்வாகம்</translation> <translation id="987264212798334818">பொது</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_te.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_te.xtb index 350a914..5e3711a 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_te.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_te.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" />కి ఈ యాప్ అవసరం:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" />కు వెబ్ బ్రౌజర్ అవసరం</translation> <translation id="3858759029325727987">ఈ యాప్నకు మద్దతిచ్చే బ్రౌజర్ను ఎంచుకోండి:</translation> -<translation id="4165986682804962316">సైట్ సెట్టింగ్లు</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nమద్దతు లేదు</translation> <translation id="7671141431838911305">ఇన్స్టాల్ చేయి</translation> -<translation id="809358319115531236">ఈ బ్రౌజర్, స్పేస్ను మేనేజ్ చేయడాన్ని సపోర్ట్ చేయదు: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">మూసివేయి</translation> -<translation id="9213932439211643363">సైట్ సెట్టింగ్లను నిర్వహించండి</translation> <translation id="987264212798334818">సాధారణం</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_th.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_th.xtb index 80a772e3..39bcd7c 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_th.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_th.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> ต้องใช้แอปต่อไปนี้:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> ต้องใช้เว็บเบราว์เซอร์</translation> <translation id="3858759029325727987">เลือกเบราว์เซอร์ที่รองรับแอปนี้:</translation> -<translation id="4165986682804962316">การตั้งค่าเว็บไซต์</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nไม่รองรับ</translation> <translation id="7671141431838911305">ติดตั้ง</translation> -<translation id="809358319115531236">ไม่รองรับการจัดการพื้นที่ใน <ph name="BROWSER_PACKAGE" /></translation> <translation id="8252328707312954493">ปิด</translation> -<translation id="9213932439211643363">จัดการการตั้งค่าเว็บไซต์</translation> <translation id="987264212798334818">ทั่วไป</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_tr.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_tr.xtb index 48dacdb..c03b773 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_tr.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_tr.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> uygulaması şu uygulamayı gerektiriyor:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> uygulaması web tarayıcısı gerektiriyor</translation> <translation id="3858759029325727987">Bu uygulamayı destekleyen bir tarayıcı seçin:</translation> -<translation id="4165986682804962316">Site ayarları</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nDesteklenmiyor</translation> <translation id="7671141431838911305">YÜKLE</translation> -<translation id="809358319115531236">Alan yönetimi <ph name="BROWSER_PACKAGE" /> tarafından desteklenmiyor.</translation> <translation id="8252328707312954493">KAPAT</translation> -<translation id="9213932439211643363">Web sitesi ayarlarını yönet</translation> <translation id="987264212798334818">Genel</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_uk.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_uk.xtb index b476f04..472fc20 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_uk.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_uk.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">Щоб запустити <ph name="APP_NAME" />, потрібен такий додаток:</translation> <translation id="2697679025356221813">Щоб запустити <ph name="APP_NAME" />, потрібен веб-переглядач</translation> <translation id="3858759029325727987">Виберіть веб-переглядач, який підтримує цей додаток:</translation> -<translation id="4165986682804962316">Налаштування сайту</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nНе підтримується</translation> <translation id="7671141431838911305">INSTALL</translation> -<translation id="809358319115531236">Веб-переглядач <ph name="BROWSER_PACKAGE" /> не підтримує керування простором.</translation> <translation id="8252328707312954493">ЗАКРИТИ</translation> -<translation id="9213932439211643363">Налаштування веб-сайтів</translation> <translation id="987264212798334818">Загальне</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_ur.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_ur.xtb index bd2075d9..7770b1c 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_ur.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_ur.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> کو درجہ ذیل ایپ درکار ہے:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> کو ویب براؤزر درکار ہے</translation> <translation id="3858759029325727987">اس ایپ کا تعاون کرنے والے براؤزر کا انتخاب کریں:</translation> -<translation id="4165986682804962316">سائٹ کی ترتیبات</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nغیر تعاون یافتہ ہے</translation> <translation id="7671141431838911305">انسٹال کریں</translation> -<translation id="809358319115531236">مینیجنگ اسپیس اس کے ذریعے تعاون یافتہ نہیں ہے: <ph name="BROWSER_PACKAGE" />۔</translation> <translation id="8252328707312954493">بند کریں</translation> -<translation id="9213932439211643363">ویب سائٹ ترتیبات کا نظم کریں</translation> <translation id="987264212798334818">عمومی</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_uz.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_uz.xtb index 65312da..9790053d 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_uz.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_uz.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> quyidagi ilovani talab qilmoqda:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> brazuerni talab qilmoqda</translation> <translation id="3858759029325727987">Bu ilovani ochadigan brauzerni tanlang:</translation> -<translation id="4165986682804962316">Sayt sozlamalari</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nMos kelmaydi</translation> <translation id="7671141431838911305">O‘RNATISH</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> brauzerida xotirani boshqarish xususiyati ishlamaydi.</translation> <translation id="8252328707312954493">YOPISH</translation> -<translation id="9213932439211643363">Sayt sozlamalarini boshqarish</translation> <translation id="987264212798334818">Umumiy</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_vi.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_vi.xtb index 6b7057f..7f03338 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_vi.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_vi.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> yêu cầu phải có ứng dụng sau:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> yêu cầu phải có trình duyệt web</translation> <translation id="3858759029325727987">Chọn một trình duyệt hỗ trợ ứng dụng này:</translation> -<translation id="4165986682804962316">Cài đặt trang web</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nKhông được hỗ trợ</translation> <translation id="7671141431838911305">CÀI ĐẶT</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> không hỗ trợ việc quản lý không gian.</translation> <translation id="8252328707312954493">ĐÓNG</translation> -<translation id="9213932439211643363">Quản lý chế độ cài đặt trang web</translation> <translation id="987264212798334818">Chung</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_zh-CN.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_zh-CN.xtb index 43e7f3d..78d24e2 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_zh-CN.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_zh-CN.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">“<ph name="APP_NAME" />”需要使用以下应用:</translation> <translation id="2697679025356221813">“<ph name="APP_NAME" />”需要使用网络浏览器</translation> <translation id="3858759029325727987">选择一种支持此应用的浏览器:</translation> -<translation id="4165986682804962316">网站设置</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\n不受支持</translation> <translation id="7671141431838911305">安装</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> 不支持管理空间。</translation> <translation id="8252328707312954493">关闭</translation> -<translation id="9213932439211643363">管理网站设置</translation> <translation id="987264212798334818">常规</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_zh-HK.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_zh-HK.xtb index da8c41b..73282666 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_zh-HK.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_zh-HK.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">必須透過下列應用程式啟動 <ph name="APP_NAME" />:</translation> <translation id="2697679025356221813">必須透過網絡瀏覽器啟動 <ph name="APP_NAME" /></translation> <translation id="3858759029325727987">選擇支援此應用程式的瀏覽器:</translation> -<translation id="4165986682804962316">網站設定</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\n不支援的瀏覽器</translation> <translation id="7671141431838911305">安裝</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> 不支援管理空間。</translation> <translation id="8252328707312954493">關閉</translation> -<translation id="9213932439211643363">管理網站設定</translation> <translation id="987264212798334818">一般</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_zh-TW.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_zh-TW.xtb index 94e3a14..1d84d95 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_zh-TW.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_zh-TW.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690">必須透過下列應用程式啟動「<ph name="APP_NAME" />」:</translation> <translation id="2697679025356221813">必須透過網路瀏覽器啟動「<ph name="APP_NAME" />」</translation> <translation id="3858759029325727987">選擇支援這個應用程式的瀏覽器:</translation> -<translation id="4165986682804962316">網站設定</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\n不支援的瀏覽器</translation> <translation id="7671141431838911305">安裝</translation> -<translation id="809358319115531236"><ph name="BROWSER_PACKAGE" /> 不支援管理空間。</translation> <translation id="8252328707312954493">關閉</translation> -<translation id="9213932439211643363">管理網站設定</translation> <translation id="987264212798334818">一般</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/webapk/strings/translations/android_webapk_strings_zu.xtb b/chrome/android/webapk/strings/translations/android_webapk_strings_zu.xtb index 5587744..7f7931e 100644 --- a/chrome/android/webapk/strings/translations/android_webapk_strings_zu.xtb +++ b/chrome/android/webapk/strings/translations/android_webapk_strings_zu.xtb
@@ -4,11 +4,8 @@ <translation id="1700971771753530690"><ph name="APP_NAME" /> idinga uhlelo lokusebenza olulandelayo:</translation> <translation id="2697679025356221813"><ph name="APP_NAME" /> idinga isiphequluli sewebhu</translation> <translation id="3858759029325727987">Khetha isiphequluli esisekela lolu hlelo lokusebenza:</translation> -<translation id="4165986682804962316">Izilungiselelo zesayithi</translation> <translation id="6377677440246641805"><ph name="BROWSER_NAME" />\nOkungasekelwa</translation> <translation id="7671141431838911305">FAKA</translation> -<translation id="809358319115531236">Ukuphatha isikhala akusekelwe yi: <ph name="BROWSER_PACKAGE" />.</translation> <translation id="8252328707312954493">VALA</translation> -<translation id="9213932439211643363">Phatha amasethingi ewebhusayithi</translation> <translation id="987264212798334818">Okujwayelekile</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc index 8b7b6f4..7ae85069 100644 --- a/chrome/app/chrome_main_delegate.cc +++ b/chrome/app/chrome_main_delegate.cc
@@ -266,8 +266,7 @@ score = content::kPluginOomScore; } else if (process_type == switches::kUtilityProcess || process_type == switches::kGpuProcess || - process_type == switches::kCloudPrintServiceProcess || - process_type == switches::kPpapiBrokerProcess) { + process_type == switches::kCloudPrintServiceProcess) { score = content::kMiscOomScore; #if BUILDFLAG(ENABLE_NACL) } else if (process_type == switches::kNaClLoaderProcess || @@ -311,7 +310,6 @@ process_type == switches::kNaClLoaderProcess || #endif process_type == switches::kPpapiPluginProcess || - process_type == switches::kPpapiBrokerProcess || process_type == switches::kGpuProcess || #endif process_type == switches::kRendererProcess || @@ -980,14 +978,12 @@ DCHECK(command_line.HasSwitch(switches::kLang) || process_type == switches::kZygoteProcess || process_type == switches::kGpuProcess || - process_type == switches::kPpapiBrokerProcess || process_type == switches::kPpapiPluginProcess); #else DCHECK(command_line.HasSwitch(switches::kLang) || process_type == switches::kZygoteProcess || process_type == switches::kGpuProcess || process_type == switches::kNaClLoaderProcess || - process_type == switches::kPpapiBrokerProcess || process_type == switches::kPpapiPluginProcess); #endif
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp index cee1af0..717ef1b 100644 --- a/chrome/app/chromeos_strings.grdp +++ b/chrome/app/chromeos_strings.grdp
@@ -485,6 +485,9 @@ <message name="IDS_REMORA_CONFIRM_MESSAGE" desc="Remora confirm message on the first OOBE screen"> Your Hangouts Meet hardware is ready to be set up. </message> + <message name="IDS_OOBE_GENERIC_FATAL_ERROR_TITLE" desc="A generic title to be shown during OOBE to be used in error screens."> + Something went wrong + </message> <message name="IDS_WELCOME_SCREEN_GREETING" desc="Greeting message on the OOBE welcome screen"> Welcome! </message>
diff --git a/chrome/app/chromeos_strings_grdp/IDS_OOBE_GENERIC_FATAL_ERROR_TITLE.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_OOBE_GENERIC_FATAL_ERROR_TITLE.png.sha1 new file mode 100644 index 0000000..d2032f7 --- /dev/null +++ b/chrome/app/chromeos_strings_grdp/IDS_OOBE_GENERIC_FATAL_ERROR_TITLE.png.sha1
@@ -0,0 +1 @@ +b7ceae25b8f24441eb1b17e6ed695a0e01b0e7f4 \ No newline at end of file
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 7e573d2..e60a72f 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -437,12 +437,6 @@ <message name="IDS_HISTORY_SIGN_IN_PROMO_DESC" desc="Description of the sign-in promo. Further tells users to sign in to Chrome to see synced tabs from other devices."> To get your tabs from your other devices, sign in to Chrome. </message> - <message name="IDS_HISTORY_MENU_PROMO" desc="Text body of a promotional tooltip that shows up the first time a user runs the Material Design History UI in narrow mode to help find 'Clear Browsing Data' and the side navigation."> - You can clear your browsing data from this menu - </message> - <message name="IDS_HISTORY_CLOSE_MENU_PROMO" desc="Title text of the close button of a promotional tooltip that shows up the first time a user runs the Material Design History UI in narrow mode to help find 'Clear Browsing Data' and the side navigation."> - Close - </message> <!-- Generic terms --> <message name="IDS_EDIT" desc="Edit menu item">
diff --git a/chrome/app/resources/chromium_strings_as.xtb b/chrome/app/resources/chromium_strings_as.xtb index 29c5a726..9e0d063 100644 --- a/chrome/app/resources/chromium_strings_as.xtb +++ b/chrome/app/resources/chromium_strings_as.xtb
@@ -46,6 +46,7 @@ <translation id="2711502716910134313">Chromium টেব</translation> <translation id="2718390899429598676">অতিৰিক্ত সুৰক্ষাৰ বাবে Chromiumএ আপোনাৰ ডেটা এনক্ৰিপ্ট কৰিব।</translation> <translation id="2770231113462710648">ইয়ালৈ ডিফ’ল্ট ব্ৰাউজাৰ সলনি কৰক:</translation> +<translation id="2774556997178638058"><ph name="BEGIN_LINK" />আপোনাৰ প্ৰশাসকে<ph name="END_LINK" />Chromiumৰ ক্ষতিকাৰক ছফ্টৱেৰ আছেনে নাই পৰীক্ষা কৰাৰ সুবিধাটো অক্ষম কৰিছে</translation> <translation id="2799223571221894425">পুনৰ লঞ্চ কৰক</translation> <translation id="2847479871509788944">Chromiumৰপৰা আঁতৰাওক...</translation> <translation id="2853765747879685679">মই Chromium খুলিলে সোধক</translation> @@ -53,6 +54,7 @@ <translation id="2910007522516064972">&Chromiumৰ বিষয়ে</translation> <translation id="2977470724722393594">Chromium একেবাৰে শেহতীয়া অৱস্থাত আছে</translation> <translation id="2983934633046890458">Chromiumএ পাছৱর্ডসমূহ সম্পাদনা কৰিবলৈ চেষ্টা কৰি আছে।</translation> +<translation id="3031887101543416445">{NUM_DAYS,plural, =1{Chromiumএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: ১ দিনৰ আগত।}one{Chromiumএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: {NUM_DAYS} দিনৰ আগত।}other{Chromiumএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: {NUM_DAYS} দিনৰ আগত।}}</translation> <translation id="3032706164202344641">Chromiumএ আপোনাৰ পাছৱর্ডসমূহ পৰীক্ষা কৰিব নোৱাৰে। পাছত আকৌ চেষ্টা কৰক।</translation> <translation id="3032787606318309379">Chromiumত যোগ কৰি থকা হৈছে...</translation> <translation id="3068515742935458733">Googleলৈ ক্ৰেশ্ব ৰিপ‘ৰ্ট আৰু <ph name="UMA_LINK" /> পঠিয়াই Chromiumক উন্নত কৰাত সহায় কৰক</translation> @@ -72,6 +74,7 @@ <translation id="347328004046849135">আপুনি কোনো হেক কৰা পাছৱৰ্ডৰ জৰিয়তে ছাইন ইন কৰিলে Chromiumএ আপোনাক জাননী দিব</translation> <translation id="3474745554856756813">ইয়ে এই ডিভাইচটোৰ পৰা <ph name="ITEMS_COUNT" />টা বস্তু মচিব। আপোনাৰ ডেটা পাছত পুনৰুদ্ধাৰ কৰিবলৈ Chromiumত <ph name="USER_EMAIL" /> হিচাপে ছাইন ইন কৰক।</translation> <translation id="3509308970982693815">অনুগ্ৰহ কৰি Chromiumৰ সকলো ৱিণ্ড’ বন্ধ কৰি পুনৰ চেষ্টা কৰক।</translation> +<translation id="3527440529060401414">Chromiumএ আপোনাৰ কম্পিউটাৰত ক্ষতিকাৰক ছফ্টৱেৰ আছেনে নাই পৰীক্ষা কৰিব পাৰে</translation> <translation id="3575459661164320785">আপোনাৰ কম্পিউটাৰত কোনো ক্ষতিকাৰক ছফ্টৱেৰ আছে। Chromiumএ আপোনাৰ ব্ৰাউজাৰে সাধাৰণভাৱে কাম কৰিবলৈ এইটো আঁতৰাব পাৰে, আপোনাৰ ছেটিং পুনঃস্থাপন কৰিব পাৰে আৰু এক্সটেনশ্বন অক্ষম কৰিব পাৰে।</translation> <translation id="3639635944603682591">এই ডিভাইচটোৰ পৰা এই লোকজনৰ ব্ৰাউজিঙৰ ডেটা মচা যাব। ডেটা পুনৰুদ্ধাৰ কৰিবলৈ Chromiumত <ph name="USER_EMAIL" /> হিচাপে ছাইন ইন কৰক।</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromiumৰ এটা নতুন আপডে’ট আহিছে আৰু আপুনি Chromium পুনৰ লঞ্চ কৰিলেই সেইটো প্ৰযোজ্য হ’ব।}=1{Chromiumৰ এটা নতুন আপডে’ট আহিছে আৰু আপুনি Chromium পুনৰ লঞ্চ কৰিলেই সেইটো প্ৰযোজ্য হ’ব। আপোনাৰ.ইনক’গনিট' ৱিণ্ড'খন পুনৰ খুলিব নোৱাৰিব।}one{Chromiumৰ এটা নতুন আপডে’ট আহিছে আৰু আপুনি Chromium পুনৰ লঞ্চ কৰিলেই সেইটো প্ৰযোজ্য হ’ব। আপোনাৰ #খন.ইনক’গনিট' ৱিণ্ড' পুনৰ খুলিব নোৱাৰিব।}other{Chromiumৰ এটা নতুন আপডে’ট আহিছে আৰু আপুনি Chromium পুনৰ লঞ্চ কৰিলেই সেইটো প্ৰযোজ্য হ’ব। আপোনাৰ #খন.ইনক’গনিট' ৱিণ্ড' পুনৰ খুলিব নোৱাৰিব।}}</translation> @@ -87,18 +90,21 @@ <translation id="3945058413678539331">Chromiumএ পাছৱর্ডসমূহ প্ৰতিলিপি কৰিবলৈ চেষ্টা কৰি আছে। ইয়াৰ অনুমতি দিবলৈ আপোনাৰ Windowsৰ পাছৱৰ্ডটো টাইপ কৰক।</translation> <translation id="4036079820698952681"><ph name="BEGIN_LINK" />বর্তমানৰ ছেটিংসমূহ<ph name="END_LINK" />ৰ সম্পর্কে প্ৰতিবেদন দি Chromiumক উন্নত কৰাত সহায় কৰক</translation> <translation id="4050175100176540509">শেহতীয়া সংস্কৰণত কিছুমান গুৰুত্বপূর্ণ উন্নত সুৰক্ষাৰ ব্যৱস্থা আৰু নতুন সুবিধা উপলব্ধ।</translation> +<translation id="4136604564421273381">Chromiumএ আপোনাৰ কম্পিউটাৰৰ পৰা ক্ষতিকাৰক ছফ্টৱেৰ আঁতৰাই আছে...</translation> <translation id="419998258129752635"><ph name="PAGE_TITLE" /> - নেটৱর্কত ছাইন ইন - Chromium</translation> <translation id="421369550622382712">Chromiumৰ বাবে উৎকৃষ্ট এপ্, গে’ম, এক্সটেনশ্বন আৰু থীমসমূহ বিচাৰক।</translation> <translation id="4216212958613226427">এই ভাষাটো Chromium UIটো দেখুৱাবলৈ ব্যৱহাৰ কৰা হয়</translation> <translation id="4230135487732243613">আপোনাৰ Chromium ডেটা এই একাউণ্টটোত যোগ কৰিবনে?</translation> <translation id="4271805377592243930">Chromiumৰ ক্ষেত্ৰত সহায় লাভ কৰক</translation> <translation id="4285930937574705105">অনির্দিষ্ট আসোঁৱাহৰ বাবে ইনষ্টল কৰিব পৰা নগ’ল। যদি Chromium এতিয়া চলি আছে তেন্তে সেইটো বন্ধ কৰি আকৌ চেষ্টা কৰক।</translation> +<translation id="4352041330999353637">Chromiumএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: কালি।</translation> <translation id="4407044323746248786">যিকোনো প্ৰকাৰে Chromiumৰ পৰা বাহিৰ হ’বনে?</translation> <translation id="4415566066719264597">Chromiumক নেপথ্যত চলিবলৈ দিয়ক</translation> <translation id="4423735387467980091">Chromium কাষ্টমাইজ আৰু নিয়ন্ত্ৰণ কৰক</translation> <translation id="4544142686420020088">Chromium আপডে'ট হোৱা নাই, কিবা ভুল হৈছে। <ph name="BEGIN_LINK" />Chromiumৰ আপডে'ট সম্পর্কীয় সমস্যাবোৰ আৰু বিফল হোৱা আপডে'টসমূহ সমাধান কৰক।<ph name="END_LINK" /></translation> <translation id="4567424176335768812">আপুনি <ph name="USER_EMAIL_ADDRESS" /> হিচাপে ছাইন ইন হৈ আছে। আপুনি এতিয়া আপোনাৰ বুকমাৰ্ক, ইতিহাস আৰু আন ছেটিং আপুনি ছাইন ইন কৰি ৰখা সকলো ডিভাইচত এক্সেছ কৰিব পাৰিব।</translation> <translation id="459535195905078186">Chromium এপ্</translation> +<translation id="4595492485953540730">{NUM_MINS,plural, =1{Chromiumএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: এক মিনিটৰ আগত।}one{Chromiumএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: {NUM_MINS} মিনিটৰ আগত।}other{Chromiumএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: {NUM_MINS} মিনিটৰ আগত।}}</translation> <translation id="4677944499843243528">অন্য কোনো কম্পিউটাৰত (<ph name="HOST_NAME" />) অন্য Chromium প্ৰক্ৰিয়াৰ (<ph name="PROCESS_ID" />) দ্বাৰা প্ৰ'ফাইলটো ব্যৱহাৰ হৈ থকা যেন লাগিছে। প্ৰ'ফাইলটো ক্ষতিগ্ৰস্থ নহ'বলৈ Chromiumএ ইয়াক অৱৰোধ কৰিছে। যদি অন্য কোনো প্ৰক্ৰিয়াই এই প্ৰ'ফাইলটো ব্যৱহাৰ কৰি থকা নাই বুলি আপুনি নিশ্চিত হয় তেন্তে আপুনি প্ৰ'ফাইলটো আনলক কৰি Chromium পুনৰ লঞ্চ কৰিব পাৰে।</translation> <translation id="469338717132742108">Chromium OSৰ ক্ষেত্ৰত সহায় লাভ কৰক</translation> <translation id="4708774505295300557">অন্য কোনো লোকে আগতে এই কম্পিউটাৰটোৰ Chromiumত <ph name="ACCOUNT_EMAIL_LAST" /> হিচাপে ছাইন ইন কৰিছিল। আপোনাৰ তথ্যখিনি পৃথক কৰি ৰাখিবলৈ অনুগ্ৰহ কৰি Chromiumত এজন নতুন ব্যৱহাৰকাৰী সৃষ্টি কৰক।</translation> @@ -107,6 +113,7 @@ <translation id="4750035648288509542">প্ৰায় আপ টু ডে’ট হৈছে! আপডে’ট হোৱাটো সম্পূৰ্ণ কৰিবলৈ Chromium পুনৰ লঞ্চ কৰক। ইনক’গনিট’ ৱিণ্ড’সমূহ পুনৰ খুলিব নোৱাৰিব।</translation> <translation id="4788777615168560705">Chromiumএ আপোনাৰ পাছৱর্ডসমূহ পৰীক্ষা কৰিব নোৱাৰে। ২৪ ঘণ্টাৰ পাছত পুনৰ চেষ্টা কৰক অথবা <ph name="BEGIN_LINK" />আপোনাৰ Google একাউণ্টত পাছৱর্ডসমূহ পৰীক্ষা কৰক<ph name="END_LINK" />।</translation> <translation id="479167709087336770">এইটোৱে Google Searchত ব্যৱহৃত একেটা বানান পৰীক্ষকেই ব্যৱহাৰ কৰে। আপুনি ব্ৰাউজাৰত টাইপ কৰা পাঠ Googleলৈ পঠিওৱা হয়। আপুনি ছেটিংসমূহ-ত যিকোনো সময়তে এই আচৰণটো সলনি কৰিব পাৰে।</translation> +<translation id="487524289568229802">Chromiumএ আপোনাৰ কম্পিউটাৰত ক্ষতিকাৰক ছফ্টৱেৰ আছেনে নাই পৰীক্ষা কৰি আছে…</translation> <translation id="4888717733111232871">mDNS ট্ৰেফিকক অনুমতি দিবলৈ Chromium অন্তৰ্গামী নিয়ম।</translation> <translation id="4893632094755846570">এই কাৰ্যই এই ডিভাইচটোৰ পৰা আপোনাৰ ব্ৰাউজিঙৰ ডেটা স্থায়ীভাৱে মচি পেলাব। ডেটাখিনি পুনৰুদ্ধাৰ কৰিবলৈ Chromiumত এই হিচাপে ছাইন ইন কৰক</translation> <translation id="4943838377383847465">Chromium নেপথ্য ম’ডত আছে।</translation> @@ -171,6 +178,7 @@ কিছুমান সুবিধা নাথাকিব পাৰে। অনুগ্ৰহ কৰি অন্য কোনো প্ৰ’ফাইল ডাইৰেক্টৰী নির্দিষ্ট কৰক বা Chromiumৰ নতুন সংস্কৰণ ব্যৱহাৰ কৰক।</translation> <translation id="6734080038664603509">&Chromium আপডে’ট কৰক</translation> <translation id="6734291798041940871">Chromium আপোনাৰ কম্পিউটাৰত থকা সকলো ব্যৱহাৰকাৰীৰ বাবে ইতিমধ্যেই ইনষ্টল কৰা হৈছে।</translation> +<translation id="6737557815519435616">Chromiumএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: এক মুহূৰ্তৰ আগত।</translation> <translation id="6762551859069255163">আপোনাৰ কাৰ্মস্থান আৰু ব্যক্তিগত ব্ৰাউজিং পৃথক কৰিবলৈ অথবা এই ডিভাইচটো ব্যৱহাৰ কৰা বেলেগ বেলেগ লোকৰ বাবে Chromiumত বেলেগ বেলেগ প্ৰ'ফাইলসমূহ ব্যৱহাৰ কৰক</translation> <translation id="6774082503108938489">আপোনাৰ অভিভাৱকে Chromiumত "ছাইট, এপ্ আৰু এক্সটেনশ্বনসমূহৰ বাবে অনুমতি" অফ কৰিছে। এই <ph name="EXTENSION_TYPE_PARAMETER" />টো সক্ষম কৰাৰ অনুমতি নাই।</translation> <translation id="6847869444787758381">Chromiumএ আপোনাৰ পাছৱৰ্ডসমূহ কেতিয়াবা হেক কৰা হৈছিল নেকি আপোনাক জানিবলৈ দিয়ে</translation> @@ -180,6 +188,7 @@ <translation id="6964305034639999644">Chromium ইন&ক’গনিট’ ৱিণ্ড’ত লিংকটো খোলক</translation> <translation id="6990124437352146030">এই ছাইটটোৰ বাবে মাইক্ৰ'ফ'ন এক্সেছ কৰিবলৈ Chromiumক অনুমতিৰ আৱশ্যক</translation> <translation id="701244094609242530">Chromiumএ আপোনাৰ এক্সটেনশ্বনসমূহ পৰীক্ষা কৰিব নোৱাৰে। পাছত আকৌ চেষ্টা কৰক।</translation> +<translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromiumএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিম পৰীক্ষা কৰা হৈছিল: ১ ঘণ্টাৰ আগত।}one{Chromiumএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: {NUM_HOURS} ঘণ্টাৰ আগত।}other{Chromiumএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: {NUM_HOURS} ঘণ্টাৰ আগত।}}</translation> <translation id="705851970750939768">Chromium আপডে’ট কৰক</translation> <translation id="7066436765290594559">Chromium OSএ আপোনাৰ ডেটা ছিংক কৰিব নোৱাৰিলে। অনুগ্ৰহ কৰি আপোনাৰ ছিংক পাছফ্ৰেজ আপডে'ট কৰক।</translation> <translation id="7067091210845072982">যদি কোনো প্ৰতিচ্ছবিত উপযোগী বিৱৰণ নাই তেন্তে Chromiumএ আপোনাক সেয়া প্ৰদান কৰিবলৈ চেষ্টা কৰিব। বিৱৰণ সৃষ্টি কৰিবলৈ প্ৰতিচ্ছবি Googleলৈ প্ৰেৰণ কৰা হয়।</translation> @@ -240,6 +249,7 @@ <translation id="8621669128220841554">অনির্দিষ্ট আসোঁৱাহৰ বাবে ইনষ্টলেশ্বন কৰিব পৰা নগ’ল। অনুগ্ৰহ কৰি পুনৰ Chromium ডাউনল’ড কৰক।</translation> <translation id="8697124171261953979">এইটোৱে আপুনি Chromiumৰ ব্যৱহাৰ আৰম্ভ কৰিলে বা Omniboxৰ পৰা সন্ধান কৰিলে কি পৃষ্ঠা খোল খাব সেয়া নিয়ন্ত্ৰণ কৰে।</translation> <translation id="8704119203788522458">এইটো আপোনাৰ Chromium</translation> +<translation id="8733034664173984083">Chromiumএ আপোনাৰ কম্পিউটাৰত ক্ষতিকাৰক ছফ্টৱেৰ আছেনে নাই পৰীক্ষা কৰি থকাৰ সময়ত আসোঁৱাহ হৈছে</translation> <translation id="8796602469536043152">এই ছাইটটোত আপোনাৰ কেমেৰা আৰু মাইক্ৰ’ফ’ন এক্সেছ কৰিবলৈ Chromiumক অনুমতিৰ আৱশ্যক</translation> <translation id="8803635938069941624">Chromium OSৰ চৰ্তাৱলী</translation> <translation id="8821041990367117597">আপোনাৰ একাউণ্টৰ ছাইন ইনৰ সবিশেষ তথ্যৰ ম্যাদ উকলি যোৱাৰ বাবে ক্ৰ’মিয়ামে আপোনাৰ ডেটা ছিংক কৰিব নোৱাৰিলে৷</translation>
diff --git a/chrome/app/resources/chromium_strings_es-419.xtb b/chrome/app/resources/chromium_strings_es-419.xtb index 61d4349..8bb6d81 100644 --- a/chrome/app/resources/chromium_strings_es-419.xtb +++ b/chrome/app/resources/chromium_strings_es-419.xtb
@@ -44,6 +44,7 @@ <translation id="2711502716910134313">Pestaña de Chromium</translation> <translation id="2718390899429598676">Para mayor seguridad, Chromium encriptará los datos.</translation> <translation id="2770231113462710648">Cambiar el navegador predeterminado a:</translation> +<translation id="2774556997178638058"><ph name="BEGIN_LINK" />Tu administrador<ph name="END_LINK" /> inhabilitó la opción de búsqueda de software dañino de Chromium</translation> <translation id="2799223571221894425">Reiniciar</translation> <translation id="2847479871509788944">Eliminar de Chromium…</translation> <translation id="2853765747879685679">Preguntar al abrir Chromium</translation> @@ -51,6 +52,7 @@ <translation id="2910007522516064972">Acerca de &Chromium</translation> <translation id="2977470724722393594">Chromium está actualizado.</translation> <translation id="2983934633046890458">Chromium está intentando editar contraseñas.</translation> +<translation id="3031887101543416445">{NUM_DAYS,plural, =1{Chromium no encontró software dañino conocido en la computadora. Última verificación: hace 1 día.}other{Chromium no encontró software dañino conocido en la computadora. Última verificación: hace {NUM_DAYS} días.}}</translation> <translation id="3032706164202344641">Chromium no puede revisar las contraseñas. Vuelve a intentarlo más tarde.</translation> <translation id="3032787606318309379">Agregar a Chromium...</translation> <translation id="3068515742935458733">Envía a Google informes de fallos y <ph name="UMA_LINK" /> para ayudar a mejorar Chromium.</translation> @@ -68,6 +70,7 @@ <translation id="347328004046849135">Chromium te notificará cuando accedas con una contraseña hackeada</translation> <translation id="3474745554856756813">Esta acción borrará <ph name="ITEMS_COUNT" /> elementos de este dispositivo. Si más adelante deseas recuperar los datos, accede a tu cuenta en Chromium como <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Cierra todas las ventanas de Chromium e inténtalo de nuevo.</translation> +<translation id="3527440529060401414">Chromium puede buscar software dañino en la computadora</translation> <translation id="3575459661164320785">Tu computadora tiene software dañino. Chromium puede quitarlo, inhabilitar las extensiones y restablecer la configuración para que el navegador vuelva a funcionar correctamente.</translation> <translation id="3639635944603682591">Los datos de navegación de esta persona se borrarán de este dispositivo. Para recuperarlos, accede a Chromium como <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Hay una nueva actualización disponible para Chromium que se aplicará cuando lo reinicies.}=1{Hay una nueva actualización disponible para Chromium que se aplicará cuando lo reinicies. No se volverá a abrir la ventana de incógnito.}other{Hay una nueva actualización disponible para Chromium que se aplicará cuando lo reinicies. No se volverán a abrir las # ventanas de incógnito.}}</translation> @@ -83,18 +86,21 @@ <translation id="3945058413678539331">Chromium está intentando copiar contraseñas. Para permitirlo, ingresa tu contraseña de Windows.</translation> <translation id="4036079820698952681">Informa tu <ph name="BEGIN_LINK" />configuración actual<ph name="END_LINK" /> para ayudarnos a mejorar Chromium</translation> <translation id="4050175100176540509">La última versión proporciona importantes mejoras de seguridad y nuevas funciones.</translation> +<translation id="4136604564421273381">Chromium está quitando el software dañino de la computadora…</translation> <translation id="419998258129752635"><ph name="PAGE_TITLE" />: Acceso a la red - Chromium</translation> <translation id="421369550622382712">Descubre aplicaciones, juegos, extensiones y temas increíbles para Chromium.</translation> <translation id="4216212958613226427">Este idioma se usa para mostrar la IU de Chromium</translation> <translation id="4230135487732243613">¿Quieres vincular los datos de Chromium a esta cuenta?</translation> <translation id="4271805377592243930">Obtener ayuda con Chromium</translation> <translation id="4285930937574705105">No se pudo completar la instalación debido a un error no identificado. Si Chromium se está ejecutando en este momento, ciérralo e intenta nuevamente.</translation> +<translation id="4352041330999353637">Chromium no encontró software dañino conocido en la computadora. Última verificación: ayer.</translation> <translation id="4407044323746248786">¿Deseas salir de Chromium de todos modos?</translation> <translation id="4415566066719264597">Permitir que Chromium se ejecute en segundo plano</translation> <translation id="4423735387467980091">Personaliza y controla Chromium</translation> <translation id="4544142686420020088">No se actualizó Chromium porque se produjo un error. <ph name="BEGIN_LINK" />Soluciona los problemas de actualización y las actualizaciones con error de Chromium.<ph name="END_LINK" /></translation> <translation id="4567424176335768812">Accediste como <ph name="USER_EMAIL_ADDRESS" />. Ahora puedes ir a los favoritos, al historial y a otras opciones en todos los dispositivos en los que hayas accedido.</translation> <translation id="459535195905078186">Aplicaciones de Chromium</translation> +<translation id="4595492485953540730">{NUM_MINS,plural, =1{Chromium no encontró software dañino conocido en la computadora. Última verificación: hace 1 minuto.}other{Chromium no encontró software dañino conocido en la computadora. Última verificación: hace {NUM_MINS} minutos.}}</translation> <translation id="4677944499843243528">Parece que otro proceso de Chromium (<ph name="PROCESS_ID" />) está utilizando el perfil en otra computadora (<ph name="HOST_NAME" />). Chromium bloqueó el perfil para que no se dañe. Si puedes confirmar que ningún otro proceso está utilizando este perfil, puedes desbloquearlo y volver a iniciar Chromium.</translation> <translation id="469338717132742108">Obtener ayuda con el Sistema operativo Chromium</translation> <translation id="4708774505295300557">Alguien accedió anteriormente a Chromium en esta computadora como <ph name="ACCOUNT_EMAIL_LAST" />. Crea un usuario de Chromium nuevo para mantener tu información por separado.</translation> @@ -103,6 +109,7 @@ <translation id="4750035648288509542">Falta poco para finalizar el proceso. Reinicia Chromium para completar la actualización. No se volverán a abrir las ventanas de incógnito.</translation> <translation id="4788777615168560705">Chromium no puede revisar las contraseñas. Vuelve a intentarlo dentro de 24 horas o <ph name="BEGIN_LINK" />revisa las contraseñas en tu Cuenta de Google<ph name="END_LINK" />.</translation> <translation id="479167709087336770">Se usará el mismo corrector ortográfico que se emplea en la Búsqueda de Google. El texto que escribes en el navegador se envía a Google. Puedes modificar este comportamiento en la configuración en cualquier momento.</translation> +<translation id="487524289568229802">Chromium está buscando software dañino en la computadora…</translation> <translation id="4888717733111232871">Regla de entrada para que Chromium permita el tráfico mDNS.</translation> <translation id="4893632094755846570">Esta acción borrará permanentemente tus datos de navegación de este dispositivo. Para recuperar los datos, accede a Chromium como</translation> <translation id="4943838377383847465">Chromium está en modo de segundo plano</translation> @@ -165,6 +172,7 @@ <translation id="6717134281241384636">Tu perfil no se puede utilizar porque proviene de una versión más actualizada de Chromium. Es posible que algunas características no estén disponibles. Especifica un directorio de perfil diferente o utiliza una versión más reciente de Chromium.</translation> <translation id="6734080038664603509">Actualizar &Chromium</translation> <translation id="6734291798041940871">Chromium ya está instalado para todos los usuarios en tu computadora.</translation> +<translation id="6737557815519435616">Chromium no encontró software dañino conocido en la computadora. Última verificación: hace un momento.</translation> <translation id="6762551859069255163">Usa diferentes perfiles de Chromium para separar la navegación personal de la laboral, o para diferentes personas que usan este dispositivo.</translation> <translation id="6774082503108938489">Tu padre o madre desactivaron la opción "Permisos para sitios, apps y extensiones" para Chromium. No se permite habilitar esta <ph name="EXTENSION_TYPE_PARAMETER" />.</translation> <translation id="6847869444787758381">Chromium te informará si tus contraseñas se ven comprometidas</translation> @@ -174,6 +182,7 @@ <translation id="6964305034639999644">Abrir vínculo en una ventana de navegación de incó&gnito de Chromium</translation> <translation id="6990124437352146030">Chromium necesita permiso para acceder a tu micrófono para este sitio</translation> <translation id="701244094609242530">Chromium no puede revisar las extensiones. Vuelve a intentarlo más tarde.</translation> +<translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium no encontró software dañino conocido en la computadora. Última verificación: hace 1 hora.}other{Chromium no encontró software dañino conocido en la computadora. Última verificación: hace {NUM_HOURS} horas.}}</translation> <translation id="705851970750939768">Actualizar Chromium</translation> <translation id="7066436765290594559">El Sistema operativo Chromium no pudo sincronizar los datos. Actualiza la frase de contraseña de sincronización.</translation> <translation id="7067091210845072982">Si una imagen no tiene una descripción útil, Chromium intentará proporcionarte una. Para crear descripciones, se envían las imágenes a Google.</translation> @@ -232,6 +241,7 @@ <translation id="8621669128220841554">La instalación falló debido a un error no especificado. Descarga Chromium otra vez.</translation> <translation id="8697124171261953979">También controla qué página se muestra al iniciar Chromium o al realizar búsquedas desde el cuadro multifunción.</translation> <translation id="8704119203788522458">Este es tu Chromium</translation> +<translation id="8733034664173984083">Se produjo un error cuando Chromium comprobaba que la computadora no tuviera software dañino</translation> <translation id="8796602469536043152">Chromium necesita permiso para acceder a tu cámara y micrófono para este sitio</translation> <translation id="8803635938069941624">Condiciones del Sistema operativo Chromium</translation> <translation id="8821041990367117597">Chromium no pudo sincronizar los datos porque los datos de acceso de la cuenta están obsoletos.</translation>
diff --git a/chrome/app/resources/chromium_strings_uk.xtb b/chrome/app/resources/chromium_strings_uk.xtb index f5174d0..bb2dbcef 100644 --- a/chrome/app/resources/chromium_strings_uk.xtb +++ b/chrome/app/resources/chromium_strings_uk.xtb
@@ -179,7 +179,7 @@ <translation id="6737557815519435616">Веб-переглядач Chromium не виявив відомого шкідливого програмного забезпечення на вашому комп'ютері. Востаннє перевірено щойно.</translation> <translation id="6762551859069255163">Різні профілі в Chromium дають змогу розділити веб-перегляд для робочих і особистих цілей або для різних користувачів цього пристрою</translation> <translation id="6774082503108938489">Хтось із твоїх батьків вимкнув "Дозволи для сайтів, додатків і розширень" у Chromium. Вмикати це <ph name="EXTENSION_TYPE_PARAMETER" /> заборонено.</translation> -<translation id="6847869444787758381">Chromium повідомляє, коли ваші паролі зламують</translation> +<translation id="6847869444787758381">Якщо ваші паролі колись викрадуть, Chromium повідомить вас про це</translation> <translation id="6857782730669500492">Chromium – <ph name="PAGE_TITLE" /></translation> <translation id="6863361426438995919">Google Pay (скопійовано в Chromium)</translation> <translation id="6893813176749746474">Chromium оновлено, проте ви не користувалися цим веб-переглядачем щонайменше 30 днів.</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-CN.xtb b/chrome/app/resources/chromium_strings_zh-CN.xtb index e13091f..5e3dcff90 100644 --- a/chrome/app/resources/chromium_strings_zh-CN.xtb +++ b/chrome/app/resources/chromium_strings_zh-CN.xtb
@@ -44,6 +44,7 @@ <translation id="2711502716910134313">Chromium 标签页</translation> <translation id="2718390899429598676">为了提高安全性,Chromium 将对您的数据进行加密。</translation> <translation id="2770231113462710648">将默认浏览器更改为:</translation> +<translation id="2774556997178638058"><ph name="BEGIN_LINK" />您的管理员<ph name="END_LINK" />已停用 Chromium 的有害软件检查功能</translation> <translation id="2799223571221894425">重新启动</translation> <translation id="2847479871509788944">从Chromium中移除…</translation> <translation id="2853765747879685679">在我打开 Chromium 时询问</translation> @@ -51,6 +52,7 @@ <translation id="2910007522516064972">关于 Chromium(&C)</translation> <translation id="2977470724722393594">Chromium 已是最新版本</translation> <translation id="2983934633046890458">Chromium 正在尝试修改密码。</translation> +<translation id="3031887101543416445">{NUM_DAYS,plural, =1{Chromium 在您的计算机上未发现已知有害软件。上次检查时间:1 天前。}other{Chromium 在您的计算机上未发现已知有害软件。上次检查时间:{NUM_DAYS} 天前。}}</translation> <translation id="3032706164202344641">Chromium 无法检查您的密码。请稍后重试。</translation> <translation id="3032787606318309379">正在添加到 Chromium...</translation> <translation id="3068515742935458733">将崩溃报告和<ph name="UMA_LINK" />发送给Google,帮助我们完善Chromium。</translation> @@ -70,6 +72,7 @@ <translation id="347328004046849135">当您使用已泄露的密码登录时,Chromium 会通知您</translation> <translation id="3474745554856756813">这会从这台设备上删除 <ph name="ITEMS_COUNT" /> 项内容。如果日后想要检索您的数据,届时请以 <ph name="USER_EMAIL" /> 的身份登录 Chromium。</translation> <translation id="3509308970982693815">请关闭所有 Chromium 窗口并重试。</translation> +<translation id="3527440529060401414">Chromium 可以检查您的计算机上是否存在有害软件</translation> <translation id="3575459661164320785">您的计算机上存在有害软件。Chromium 可以移除该软件、恢复您的设置并停用扩展程序,以确保您的浏览器能够重新正常运行。</translation> <translation id="3639635944603682591">系统将会从此设备上删除该用户的浏览数据。要想恢复这些数据,请以“<ph name="USER_EMAIL" />”的身份登录 Chromium。</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium 有一项新的可用更新;一旦您重新启动,系统即会应用这项更新。}=1{Chromium 有一项新的可用更新;一旦您重新启动,系统即会应用这项更新。您的无痕式窗口不会重新打开。}other{Chromium 有一项新的可用更新;一旦您重新启动,系统即会应用这项更新。您的 # 个无痕式窗口不会重新打开。}}</translation> @@ -85,18 +88,21 @@ <translation id="3945058413678539331">Chromium 正在尝试复制密码。请输入您的 Windows 密码以允许此操作。</translation> <translation id="4036079820698952681">报告<ph name="BEGIN_LINK" />当前设置<ph name="END_LINK" />,协助我们改进 Chromium</translation> <translation id="4050175100176540509">最新版本不仅在安全性方面做出了重要改进,还提供了多项新功能。</translation> +<translation id="4136604564421273381">Chromium 正在从您的计算机中移除有害软件…</translation> <translation id="419998258129752635"><ph name="PAGE_TITLE" /> - 网络登录 - Chromium</translation> <translation id="421369550622382712">在这里,您可以找到适用于 Chromium 的精彩应用、游戏、扩展程序和主题背景。</translation> <translation id="4216212958613226427">使用此语言显示 Chromium 界面</translation> <translation id="4230135487732243613">是否将您的 Chromium 数据与此帐号相关联?</translation> <translation id="4271805377592243930">获取有关 Chromium 的帮助</translation> <translation id="4285930937574705105">未知错误导致安装失败。如果 Chromium 正在运行,请将其关闭,然后重试。</translation> +<translation id="4352041330999353637">Chromium 在您的计算机上未发现已知有害软件。上次检查时间:昨天。</translation> <translation id="4407044323746248786">仍要退出 Chromium?</translation> <translation id="4415566066719264597">让 Chromium 在后台运行</translation> <translation id="4423735387467980091">自定义及控制 Chromium</translation> <translation id="4544142686420020088">Chromium 未能更新,因为出了点问题。<ph name="BEGIN_LINK" />请解决导致 Chromium 更新失败的问题<ph name="END_LINK" />。</translation> <translation id="4567424176335768812">您已使用 <ph name="USER_EMAIL_ADDRESS" /> 的身份登录。现在您可在已登录的所有设备上访问您的书签、历史记录和其他设置。</translation> <translation id="459535195905078186">Chromium 应用</translation> +<translation id="4595492485953540730">{NUM_MINS,plural, =1{Chromium 在您的计算机上未发现已知有害软件。上次检查时间:1 分钟前。}other{Chromium 在您的计算机上未发现已知有害软件。上次检查时间:{NUM_MINS} 分钟前。}}</translation> <translation id="4677944499843243528">其他计算机 (<ph name="HOST_NAME" />) 的另一个 Chromium 进程 (<ph name="PROCESS_ID" />) 好像正在使用此个人资料。Chromium 已锁定此个人资料以防止其受损。如果您确定其他进程目前未使用此个人资料,请为其解锁并重新启动 Chromium。</translation> <translation id="469338717132742108">获取有关 Chromium 操作系统的帮助</translation> <translation id="4708774505295300557">之前已有人在此计算机上以 <ph name="ACCOUNT_EMAIL_LAST" /> 的身份登录了 Chromium。请新建一个 Chromium 用户来单独保存您的信息。</translation> @@ -105,6 +111,7 @@ <translation id="4750035648288509542">离最新版本只有一步之遥了!重新启动 Chromium 即可完成更新。无痕式窗口不会自动重新打开。</translation> <translation id="4788777615168560705">Chromium 无法检查您的密码。请过 24 小时再试,或者<ph name="BEGIN_LINK" />检查您的 Google 帐号中的密码<ph name="END_LINK" />。</translation> <translation id="479167709087336770">这项服务会使用 Google 搜索所用的拼写检查工具。您在浏览器中输入的文字会被发送给 Google。您随时可在“设置”中更改此行为。</translation> +<translation id="487524289568229802">Chromium 正在检查您的计算机上是否存在有害软件…</translation> <translation id="4888717733111232871">Chromium的入站规则,允许mDNS流量。</translation> <translation id="4893632094755846570">此操作会将您的浏览数据从这部设备上永久删除。若要恢复这些数据,请使用以下身份登录 Chromium:</translation> <translation id="4943838377383847465">Chromium处于后台运行模式。</translation> @@ -169,6 +176,7 @@ 某些功能可能会无法使用。请指定其他个人资料目录或使用更高版本的 Chromium。</translation> <translation id="6734080038664603509">更新 Chromium(&C)</translation> <translation id="6734291798041940871">已为您计算机上的所有用户都安装 Chromium。</translation> +<translation id="6737557815519435616">Chromium 在您的计算机上未发现已知有害软件。上次检查时间:刚才。</translation> <translation id="6762551859069255163">在 Chromium 中使用不同的个人资料将工作上的浏览数据和个人的浏览数据分隔开来,或者为此设备的不同用户使用不同的个人资料</translation> <translation id="6774082503108938489">您的家长已为 Chromium 停用“网站、应用和扩展程序的权限”。因此,您无法启用该<ph name="EXTENSION_TYPE_PARAMETER" />。</translation> <translation id="6847869444787758381">Chromium 会让您知道您的密码是否曾被泄露</translation> @@ -178,6 +186,7 @@ <translation id="6964305034639999644">在 Chromium 无痕式窗口中打开链接(&G)</translation> <translation id="6990124437352146030">Chromium 需要获得相应权限,才能允许此网站使用您的麦克风</translation> <translation id="701244094609242530">Chromium 无法检查您的扩展程序。请稍后重试。</translation> +<translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium 在您的计算机上未发现已知有害软件。上次检查时间:1 小时前。}other{Chromium 在您的计算机上未发现已知有害软件。上次检查时间:{NUM_HOURS} 小时前。}}</translation> <translation id="705851970750939768">更新 Chromium</translation> <translation id="7066436765290594559">Chromium操作系统无法同步您的数据。请更新您的同步密码。</translation> <translation id="7067091210845072982">如果图片缺少有用的说明,则 Chromium 会尝试为您提供一条说明。为便于创建说明,系统会将图片发送给 Google。</translation> @@ -238,6 +247,7 @@ <translation id="8621669128220841554">未指定的错误导致安装失败。请重新下载 Chromium。</translation> <translation id="8697124171261953979">它还能够控制您启动Chromium后或通过多功能框进行搜索时系统显示的页面。</translation> <translation id="8704119203788522458">这是您的专属Chromium</translation> +<translation id="8733034664173984083">Chromium 对您的计算机进行有害软件检查时出错</translation> <translation id="8796602469536043152">Chromium 需要获得相应权限,才能允许此网站使用您的摄像头和麦克风</translation> <translation id="8803635938069941624">Chromium操作系统条款</translation> <translation id="8821041990367117597">由于您的帐号登录详细信息已过期,Chromium无法同步您的数据。</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-HK.xtb b/chrome/app/resources/chromium_strings_zh-HK.xtb index e00c43a..f0ee373 100644 --- a/chrome/app/resources/chromium_strings_zh-HK.xtb +++ b/chrome/app/resources/chromium_strings_zh-HK.xtb
@@ -74,7 +74,7 @@ <translation id="347328004046849135">如果您使用被盜用的密碼登入帳戶,Chromium 會通知您</translation> <translation id="3474745554856756813">這會刪除此裝置上的 <ph name="ITEMS_COUNT" /> 個項目。如果日後想擷取資料,請以 <ph name="USER_EMAIL" /> 的身分登入 Chromium。</translation> <translation id="3509308970982693815">請關閉所有 Chromium 視窗,然後再試一次。</translation> -<translation id="3527440529060401414">Chromium 可對電腦進行有害軟件檢查</translation> +<translation id="3527440529060401414">Chromium 可為電腦檢查有害軟件</translation> <translation id="3575459661164320785">在您的電腦上發現有害軟件。Chromium 可移除該軟件、復原設定及停用擴充程式,讓瀏覽器恢復正常運作。</translation> <translation id="3639635944603682591">此使用者的瀏覽資料將從裝置上刪除。如要復原資料,請以「<ph name="USER_EMAIL" />」身分登入 Chromium。</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium 有可用的更新,重新啟動後即可套用。}=1{Chromium 有可用的更新,重新啟動後即可套用。您的無痕式視窗不會重新開啟。}other{Chromium 有可用的更新,重新啟動後即可套用。您的 # 個無痕式視窗不會重新開啟。}}</translation> @@ -113,7 +113,7 @@ <translation id="4750035648288509542">即將更新至最新版本!重新啟動 Chromium 即可完成更新程序。無痕式視窗不會重新開啟。</translation> <translation id="4788777615168560705">Chromium 無法檢查密碼,請於 24 小時後再試一次,或<ph name="BEGIN_LINK" />檢查 Google 帳戶中的密碼<ph name="END_LINK" />。</translation> <translation id="479167709087336770">這會使用與「Google 搜尋」相同的的拼字檢查工具。您在瀏覽器輸入的文字將會傳送給 Google。您可以在設定中變更此行為。</translation> -<translation id="487524289568229802">Chromium 正在對電腦進行有害軟件檢查…</translation> +<translation id="487524289568229802">Chromium 正在為電腦檢查有害軟件…</translation> <translation id="4888717733111232871">允許 mDNS 流量的 Chromium 輸入規則。</translation> <translation id="4893632094755846570">這會永久刪除此裝置上的瀏覽資料。如要復原資料,請使用下列身分登入 Chromium:</translation> <translation id="4943838377383847465">Chromium 正在背景模式中執行。</translation> @@ -248,7 +248,7 @@ <translation id="8621669128220841554">不明錯誤導致安裝失敗,請重新下載 Chromium。</translation> <translation id="8697124171261953979">這個擴充功能也會控管 Chromium 啟動時或您使用網址列搜尋時所顯示的網頁。</translation> <translation id="8704119203788522458">這是您專屬的 Chromium</translation> -<translation id="8733034664173984083">Chromium 對電腦進行有害軟件檢查時發生錯誤</translation> +<translation id="8733034664173984083">Chromium 為電腦檢查有害軟件時發生錯誤</translation> <translation id="8796602469536043152">Chromium 需要取得權限,才能讓這個網站存取您的相機和麥克風</translation> <translation id="8803635938069941624">Chromium 作業系統條款</translation> <translation id="8821041990367117597">您的帳戶登入詳細資料尚未更新,因此 Chromium 無法同步處理您的數據。</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb index 680e760..35f0988 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Uitbreidingfout</translation> <translation id="1246158006305844142">Jou programme en instellings sal op alle Chrome-bedryfstelseltoestelle waarop jy met jou Google-rekening aangemeld is, sinkroniseer. Gaan na <ph name="LINK_BEGIN" />Chrome-instellings<ph name="LINK_END" /> toe vir blaaiersinkroniseringopsies.</translation> <translation id="1246905108078336582">Verwyder voorstel van knipbord af?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> is geblokkeer omdat dit opgeskort is</translation> <translation id="1251366534849411931">Verwag beginkrulhakie: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Dit sal <ph name="TOTAL_USAGE" /> se data uitvee wat deur werwe en geïnstalleerde programme geberg is</translation> <translation id="125220115284141797">Verstek</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Tuisnetwerk, swerf tans nie</translation> <translation id="1315056510003830387">Mag nie Flash gebruik nie</translation> -<translation id="1315144594965013365">Maak seker dat albei toestelle ontsluit is, naby mekaar is, en dat Bluetooth aangeskakel is. As jy met 'n Chromebook deel, moet jy seker maak dat Nabydeling aangeskakel is (maak die statusarea oop deur die tyd te kies, en kies dan Nabydeling).</translation> <translation id="1316136264406804862">Soek tans …</translation> <translation id="1316495628809031177">Sinkronisering is onderbreek</translation> <translation id="1317637799698924700">Jou dokstasie sal in USB Tipe C- versoenbare modus werk.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA-kompromie</translation> <translation id="2182058453334755893">Gekopieer na jou knipbord</translation> <translation id="2184515124301515068">Laat Chrome kies wanneer webwerwe klank kan speel (aanbeveel)</translation> -<translation id="2187243482123994665">Gebruikerteenwoordigheid</translation> <translation id="2187675480456493911">Is met ander toestelle in jou rekening gesinkroniseer. Instellings wat deur ander gebruikers gewysig is, sal nie gesinkroniseer word nie. <ph name="LINK_BEGIN" />Kom meer te wete<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Bedienersertifikaat-invoerfout</translation> <translation id="2187906491731510095">Uitbreidings is opgedateer</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">Voer uit …</translation> <translation id="4107048419833779140">Identifiseer en maak bergingtoestelle los</translation> <translation id="4109135793348361820">Beweeg venster na <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Pasmaak onderskrifgrootte en -styl vir programme wat hierdie instelling steun</translation> <translation id="4110490973560452005">Aflaai is voltooi: <ph name="FILE_NAME" />. Druk Shift+F6 om na die aflaaibalk te gaan.</translation> <translation id="4110686435123617899">Kies album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Blaai deur die web in hoëkontras-modus</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">Hou die Lanseerder-sleutel in om te verander wat die boonste ry sleutels doen</translation> <translation id="4400963414856942668">Jy kan die ster klik om 'n oortjie te boekmerk</translation> <translation id="4403775189117163360">Kies 'n ander vouer</translation> -<translation id="440391631796167175">Geen swak wagwoorde gekry nie</translation> <translation id="4404136731284211429">Soek weer</translation> <translation id="4404843640767531781">Jou ouer blokkeer <ph name="APP_NAME" />. Vra jou ouer vir toestemming om hierdie program te gebruik.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4468,8 +4463,6 @@ <translation id="6242852299490624841">Fokus hierdie oortjie</translation> <translation id="6243280677745499710">Tans gestel</translation> <translation id="6243774244933267674">Bediener nie beskikbaar nie</translation> -<translation id="6244185221716469155">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="6244245036423700521">Voer ONC-lêer in</translation> <translation id="6246790815526961700">Laai van toestel af op</translation> <translation id="6247620186971210352">Geen programme gekry nie</translation> @@ -6218,6 +6211,7 @@ <translation id="8281886186245836920">Slaan oor</translation> <translation id="8283475148136688298">Stawingkode verwerp terwyl dit probeer het om aan "<ph name="DEVICE_NAME" />" te koppel.</translation> <translation id="8284279544186306258">alle <ph name="WEBSITE_1" />-werwe</translation> +<translation id="8284326494547611709">Onderskrifte</translation> <translation id="8286036467436129157">Meld aan</translation> <translation id="8286963743045814739">Jy kan 'n incognitovenster gebruik om privaat te blaai</translation> <translation id="8287902281644548111">Soek volgens API-oproep/URL</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index 615b776b..e9d338fe 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">የቅጥያ ስህተት</translation> <translation id="1246158006305844142">የእርስዎ መተግበሪያዎች እና ቅንብሮች በGoogle መለያዎ በገቡባቸው ሁሉም የChrome OS መሣሪያዎች ላይ ይሰምራሉ። ለአሳሽ ስምረት አማራጮች ወደ <ph name="LINK_BEGIN" />የChrome ቅንብሮች<ph name="LINK_END" /> ይሂዱ።</translation> <translation id="1246905108078336582">የአስተያየት ጥቆማ ከቅንጥብ ሰሌዳ ይወገድ?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> የተቋረጠ ስለሆነ ታግዷል</translation> <translation id="1251366534849411931">የሚገመት ጠምዛዛ መያዣን መክፈቻ፦ <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">ይህ በጣቢያዎች እና በተጫኑ መተግበሪያዎቹ የተከማቸ <ph name="TOTAL_USAGE" /> ውሂብ ያጠፋል</translation> <translation id="125220115284141797">ነባሪ</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">የቤት አውታረ መረብ፣ የሌላን እየተጠቀመ አይደለም</translation> <translation id="1315056510003830387">ፍላሽ ለመጠቀም አልተፈቀደም</translation> -<translation id="1315144594965013365">ሁለቱም መሣሪያዎች እንደተከፈቱ፣ አጠገብ ለአጠገብ እንደሆኑ እና ብሉቱዝ መብራቱን ያረጋግጡ። በChromebook እያጋሩ ያሉ ከሆነ የአቅራቢያ ማጋሪያው እንደበራ ያረጋግጡ (ጊዜውን በመምረጥ የሁኔታ አካባቢውን ይክፈቱ፣ ከዚያ የአቅራቢያ ማጋሪያን ይምረጡ)።</translation> <translation id="1316136264406804862">በመፈለግ ላይ...</translation> <translation id="1316495628809031177">ስምረት ባለበት ቆሟል</translation> <translation id="1317637799698924700">የእርስዎ መትከያ ጣቢያ በ USB Type-C ተኳዃኝ ሁነታ ውስጥ ይሠራል።</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA Compromise</translation> <translation id="2182058453334755893">ወደ የእርስዎ ቅንጥብ ሰሌዳ ላይ ተቀድቷል</translation> <translation id="2184515124301515068">Chrome ጣቢያዎች መቼ ድምጽን ማጫወት እንደሚችሉ እንዲመርጥ ይፍቀዱ (የሚመከር)</translation> -<translation id="2187243482123994665">የተጠቃሚ ተገኝነት</translation> <translation id="2187675480456493911">በመለያዎ ላይ ካሉ ሌሎች መሣሪያዎች ጋር ሰምሯል። በሌሎች ተጠቃሚዎች የተቀየሩ ቅንብሮች አይሰምሩም። <ph name="LINK_BEGIN" />የበለጠ ለመረዳት<ph name="LINK_END" /></translation> <translation id="2187895286714876935">የአገልጋይ ዕውቅና ማረጋገጫ ስህተት</translation> <translation id="2187906491731510095">ቅጥያዎች ተዘምነዋል</translation> @@ -2707,7 +2704,6 @@ <translation id="4104163789986725820">ወደ &ውጪ ላክ...</translation> <translation id="4107048419833779140">የማከማቻ መሣሪያዎችን ለይተው ይወቁ እና ያስወጡ</translation> <translation id="4109135793348361820">መስኮት ወደ <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) ውሰድ</translation> -<translation id="411031910327788420">ይህን ቅንብር ለሚደግፉ መተግበሪያዎች የመግለጫ ጽሑፍ መጠንን እና ቅጥን ያብጁ</translation> <translation id="4110490973560452005">ውርድ ተጠናቅቋል፦ <ph name="FILE_NAME" />። የውርዶች አሞሌ አካባቢውን ለመቀየር Shift+F6 ይጫኑ።</translation> <translation id="4110686435123617899"><ph name="TITLE" /> <ph name="DESC" />ን አልበም ይምረጡ</translation> <translation id="4110895898888439383">ድሩን በከፍተኛ ንጽጽር ሁነታ ያስሱ</translation> @@ -2920,7 +2916,6 @@ <translation id="4400632832271803360">የላይኛው ረድፍ ቁልፎች ባህሪን ለመቀየር የማስጀመሪያ ቁልፉን ይያዙ</translation> <translation id="4400963414856942668">አንድ ትር ዕልባት ለማድረግ ኮከቡን ጠቅ ማድረግ ይችላሉ</translation> <translation id="4403775189117163360">የተለየ አቃፊ ይምረጡ</translation> -<translation id="440391631796167175">ምንም ደካማ የይለፍ ቃላት አልተገኙም</translation> <translation id="4404136731284211429">እንደገና ቃኝ</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> በእርስዎ ወላጅ ታግዷል። ወላጅዎ ይህን መተግበሪያ እንዲጠቀሙ ፈቃድ ይጠይቋቸው።</translation> <translation id="4405117686468554883">*.jpeg፣ *.jpg፣ *.png</translation> @@ -4464,8 +4459,6 @@ <translation id="6242852299490624841">በዚህ ትር ላይ አተኩር</translation> <translation id="6243280677745499710">በአሁኑ ጊዜ የተቀናበረ</translation> <translation id="6243774244933267674">አገልጋይ አይገኝም</translation> -<translation id="6244185221716469155">ደካማ የይለፍ ቃላት ለመገመት ቀላል ናቸው። ጠንካራ የይለፍ ቃላትን እየፈጠሩ መሆንዎን ያረጋግጡ። - <ph name="BEGIN_LINK" />ተጨማሪ ጠቃሚ የደህንነት ምክሮችን ይመልከቱ።<ph name="END_LINK" /></translation> <translation id="6244245036423700521">የONC ፋይል አስመጣ</translation> <translation id="6246790815526961700">ከመሣሪያ ይስቀሉ</translation> <translation id="6247620186971210352">ምንም መተግበሪያዎች አልተገኙም</translation> @@ -6219,6 +6212,7 @@ <translation id="8281886186245836920">ዝለል</translation> <translation id="8283475148136688298">ከ«<ph name="DEVICE_NAME" />» ጋር በመገናኘት ላይ ሳለ የማረጋገጥ ኮድ ተቀባይነት አላገኘም።</translation> <translation id="8284279544186306258">ሁሉም የ<ph name="WEBSITE_1" /> ጣቢያዎች</translation> +<translation id="8284326494547611709">መግለጫ ጽሑፎች</translation> <translation id="8286036467436129157">ግባ</translation> <translation id="8286963743045814739">ማንነት የማያሳውቅ መስኮት ተጠቅመው በግል ማሰስ ይችላሉ</translation> <translation id="8287902281644548111">በኤፒአይ ጥሪ/ዩአርኤል ፈልግ</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index c39e1d91..e0bb1626 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">خطأ في الإضافة</translation> <translation id="1246158006305844142">ستتم مزامنة التطبيقات والإعدادات على جميع أجهزة "نظام التشغيل Chrome" التي سجّلت الدخول إليها باستخدام حسابك على Google. للوصول إلى خيارات مزامنة المتصفّح، انتقِل إلى <ph name="LINK_BEGIN" />إعدادات Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">هل تريد إزالة اقتراح من الحافظة؟</translation> -<translation id="1249643471736608405">تم حظر <ph name="PLUGIN_NAME" /> لأنه متوقّف</translation> <translation id="1251366534849411931">قوس متعرج مفتوح بشكلٍ متوقع: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">سيؤدي هذا الإجراء إلى محو <ph name="TOTAL_USAGE" /> من البيانات المُخزّنة من خلال المواقع الإلكترونية والتطبيقات المثبّتة.</translation> <translation id="125220115284141797">تلقائي</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">الشبكة الظاهرية الخاصة (VPN) في Android</translation> <translation id="131461803491198646">الشبكة الرئيسية، بلا تجوال</translation> <translation id="1315056510003830387">المواقع الإلكترونية التي لا يُسمح لها باستخدام Flash</translation> -<translation id="1315144594965013365">تأكَّد من فتح قفل كلا الجهازَين وقرِّبهما من بعضهما وفعِّل البلوتوث فيهما. وإذا كنت تشارك الملفات مع Chromebook، تأكَّد من تفعيل ميزة "المشاركة عن قرب" (افتح منطقة الحالة من خلال اختيار الوقت، ثم اختَر "المشاركة عن قرب").</translation> <translation id="1316136264406804862">جارِ البحث...</translation> <translation id="1316495628809031177">تم إيقاف المزامنة مؤقتًا</translation> <translation id="1317637799698924700">سيتم تشغيل محطة الإرساء في وضع USB من نوع C المتوافق.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">اختراق المرجع المصدق (CA)</translation> <translation id="2182058453334755893">تم النسخ إلى الحافظة.</translation> <translation id="2184515124301515068">السماح لمتصفِّح Chrome باختيار الوقت الذي يمكن للمواقع الإلكترونية تشغيل الصوت فيه (مُوصى به)</translation> -<translation id="2187243482123994665">استخدام الجهاز</translation> <translation id="2187675480456493911">تمت مزامنة الشبكة مع الأجهزة الأخرى المرتبطة بحسابك. ولن تتم مزامنة الإعدادات التي عدَّلها المستخدمون. <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation> <translation id="2187895286714876935">خط استيراد شهادة الخادم</translation> <translation id="2187906491731510095">تم تحديث الإضافات.</translation> @@ -2702,7 +2699,6 @@ <translation id="4104163789986725820">ت&صدير...</translation> <translation id="4107048419833779140">تحديد أجهزة التخزين وإخراجها</translation> <translation id="4109135793348361820">نقل النافذة إلى <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">يمكنك تخصيص حجم الشرح ونمطه للتطبيقات المتوافقة مع هذا الإعداد.</translation> <translation id="4110490973560452005">اكتمل التنزيل: <ph name="FILE_NAME" />. يمكنك الضغط على Shift+F6 للانتقال إلى منطقة شريط عمليات التنزيل.</translation> <translation id="4110686435123617899">اختيار ألبوم <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">تصفُّح الويب في وضع التباين العالي</translation> @@ -2915,7 +2911,6 @@ <translation id="4400632832271803360">اضغط على مفتاح Launcher باستمرار لتبديل سلوك مفاتيح الصف العلوي</translation> <translation id="4400963414856942668">يمكنك النقر على النجمة لوضع إشارة مرجعية على علامة تبويب.</translation> <translation id="4403775189117163360">اختيار مجلد آخر</translation> -<translation id="440391631796167175">لم يتم العثور على أي كلمات مرور ضعيفة.</translation> <translation id="4404136731284211429">البحث مرة أخرى</translation> <translation id="4404843640767531781">حظَر أحد الوالدَين تطبيق <ph name="APP_NAME" />. يُرجى طلب الإذن لتتمكّن من استخدام هذا التطبيق مرة أخرى.</translation> <translation id="4405117686468554883">jpeg.* وjpg.* وpng.*</translation> @@ -4458,8 +4453,6 @@ <translation id="6242852299490624841">التركيز على علامة التبويب هذه</translation> <translation id="6243280677745499710">المحدّدة حاليًا</translation> <translation id="6243774244933267674">الخادم غير متاح</translation> -<translation id="6244185221716469155">من السهل تخمين كلمات المرور الضعيفة. يُرجى الحرص على إنشاء كلمات مرور قوية. - <ph name="BEGIN_LINK" />الاطّلاع على مزيد من نصائح الأمان<ph name="END_LINK" /></translation> <translation id="6244245036423700521">استيراد ملف ONC</translation> <translation id="6246790815526961700">تحميل من الجهاز</translation> <translation id="6247620186971210352">لم يتم العثور على أي تطبيقات</translation> @@ -6207,6 +6200,7 @@ <translation id="8281886186245836920">التخطّي</translation> <translation id="8283475148136688298">تم رفض رمز المصادقة أثناء الاتصال بالجهاز "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">جميع مواقع <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">الترجمة والشرح</translation> <translation id="8286036467436129157">تسجيل الدخول</translation> <translation id="8286963743045814739">يمكنك التصفّح بخصوصية تامّة باستخدام نافذة للتصفُّح المتخفي</translation> <translation id="8287902281644548111">البحث حسب طلب بيانات من واجهة برمجة التطبيقات/عنوان URL</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index a436dec..441edddc 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">এক্সটেনশ্বনৰ আসোঁৱাহ</translation> <translation id="1246158006305844142">আপোনাৰ এপ্ আৰু ছেটিংসমূহ সেই সকলো Chrome OS ডিভাইচত ছিংক কৰা হ’ব য’ত আপুনি নিজৰ Google একাউণ্টেৰে ছাইন ইন কৰি থৈছে। ব্ৰাউজাৰ ছিংক কৰাৰ বিকল্পসমূহৰ বাবে <ph name="LINK_BEGIN" />Chromeৰ ছেটিংসমূহ<ph name="LINK_END" />লৈ যাওক।</translation> <translation id="1246905108078336582">ক্লিপব’ৰ্ডৰ পৰা পৰামৰ্শ আঁতৰাবনে?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" />ক অৱৰোধ কৰা হৈছে কাৰণ ইয়াক অপ্ৰচলিত কৰা হৈছে</translation> <translation id="1251366534849411931">প্ৰত্যাশিত প্ৰাৰম্ভিক কার্লী ব্ৰাচ: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">এই কাৰ্যই ছাইটসমূহ আৰু ইনষ্টল হৈ থকা এপ্সমূহে ষ্ট’ৰ কৰা <ph name="TOTAL_USAGE" /> ডেটা মচিব</translation> <translation id="125220115284141797">ডিফ’ল্ট</translation> @@ -278,7 +277,7 @@ <translation id="1313705515580255288">আপোনাৰ বুকমাৰ্ক, ব্ৰাউজিঙৰ ইতিহাস, পাছৱর্ড আৰু অন্য ছেটিংসমূহ আপোনাৰ Google একাউণ্টত ছিংক কৰা হ’ব।</translation> <translation id="1314565355471455267">Android ভিপিএন</translation> <translation id="131461803491198646">গৃহ নেটৱৰ্ক, ৰ’মিং নহয়</translation> -<translation id="1315144594965013365">নিশ্চিত কৰক যে দুয়োটা ডিভাইচ আনলক কৰা থাকে, এটা আনটোৰ ওচৰত থাকে তথা ব্লুটুথ অন কৰা থাকে। আপুনি যদি কোনো Chromebookৰ সৈতে শ্বেয়াৰ কৰি আছে, নিশ্চিত কৰি লওক যে সেইটোৰ নিকটৱৰ্তী শ্বেয়াৰিঙৰ সুবিধাটো অন কৰা থাকে (সময়টো বাছনি কৰি বিভিন্ন স্থিতি দেখুওৱা ঠাইখিনি খোলক, তাৰ পাছত নিকটৱৰ্তী শ্বেয়াৰ কৰাৰ সুবিধাটো বাছনি কৰক)।</translation> +<translation id="1315056510003830387">Flash ব্যৱহাৰ কৰাৰ অনুমতি নাই</translation> <translation id="1316136264406804862">সন্ধান কৰি থকা হৈছে…</translation> <translation id="1316495628809031177">ছিংক পজ কৰা আছে</translation> <translation id="1317637799698924700">আপোনাৰ ড’কিং ষ্টেচনটো ইউএছবি টাইপ-চি-ৰ সৈতে খাপ খোৱা ম’ডত চলিব।</translation> @@ -337,6 +336,7 @@ <translation id="1386791642444521222">কায়িক ছিম সক্ৰিয় কৰক</translation> <translation id="1387519831959169718">আপোনাৰ ব্ৰাউজিং পৃথক কৰি ৰাখিবলৈ, আপুনি <ph name="NEW_USER" />ৰ বাবে এটা নতুন প্ৰ'ফাইল সৃষ্টি কৰিব পাৰে</translation> <translation id="138784436342154190">আৰম্ভণিতে খোল খোৱা ডিফ’ল্ট পৃষ্ঠাটো পুনঃস্থাপন কৰিবনে?</translation> +<translation id="1388253969141979417">আপোনাৰ মাইক্ৰ’ফ’ন ব্যৱহাৰ কৰাৰ অনুমতি আছে</translation> <translation id="1388728792929436380">আপডে’টসমূহ সম্পূৰ্ণ হ’লে <ph name="DEVICE_TYPE" /> ৰিষ্টাৰ্ট হ’ব।</translation> <translation id="1389342855416376185">সুৰক্ষিত সমলক অৱৰোধ কৰক</translation> <translation id="1390548061267426325">নিয়মীয়া টেব হিচাপে খোলক</translation> @@ -387,6 +387,7 @@ <translation id="1433811987160647649">এক্সেছ কৰাৰ পূর্বে সোধক</translation> <translation id="1434696352799406980">এই কার্যয়ে আপোনাৰ আৰম্ভণিতে খোল খোৱা পৃষ্ঠা, নতুন টেবৰ পৃষ্ঠা, সন্ধানৰ ইঞ্জিন আৰু পিন কৰি থোৱা টেবসমূহ ৰিছেট কৰিব। ইয়াৰ লগতে ই সকলো এক্সটেনশ্বন অক্ষম কৰিব আৰু কুকিৰ দৰে অস্থায়ী ডেটা মচিব। আপোনাৰ বুকমার্ক, ইতিহাস আৰু ছেভ কৰি থোৱা পাছৱর্ডসমূহ মচা নহয়।</translation> <translation id="1434886155212424586">গৃহপৃষ্ঠা হৈছে নতুন টেবযুক্ত পৃষ্ঠা</translation> +<translation id="1435515966666225466">আপোনাৰ কম্পিউটাৰটো এক্সেছ কৰিবৰ বাবে প্লাগইন ব্যৱহাৰ কৰাৰ অনুমতি আছে</translation> <translation id="1436390408194692385"><ph name="TICKET_TIME_LEFT" />ৰ বাবে মান্য</translation> <translation id="1436671784520050284">ছেট আপ অব্যাহত ৰাখক</translation> <translation id="1436784010935106834">আঁতৰোৱা হ’ল</translation> @@ -470,6 +471,7 @@ <translation id="1530838837447122178">মাউছ আৰু টাচ্চ্পেড ডিভাইচৰ ছেটিংসমূহ খোলক</translation> <translation id="1531004739673299060">এপ্লিকেশ্বন ৱিণ্ড’</translation> <translation id="1531275250079031713">’নতুন ৱাই-ফাই যোগ কৰক’ ডায়লগ দেখুৱাওক</translation> +<translation id="1535228823998016251">তীব্ৰ</translation> <translation id="1536754031901697553">সংযোগ বিচ্ছিন্ন কৰি থকা হৈছে…</translation> <translation id="1537254971476575106">সম্পূর্ণ স্ক্ৰীণৰ বিৱৰ্ধক</translation> <translation id="15373452373711364">মাউছৰ ডাঙৰ কাৰ্ছৰ</translation> @@ -553,6 +555,7 @@ <translation id="1627408615528139100">ইতিমধ্যে ডাউনল’ড কৰা আছে</translation> <translation id="1628948239858170093">খোলাৰ আগতে ফাইলটো স্কেন কৰিবনে?</translation> <translation id="1629314197035607094">পাছৱৰ্ডৰ ম্যাদ উকলিল</translation> +<translation id="163072119192489970">ডেটা পঠিওৱা অথবা গ্ৰহণ কৰাটো সম্পূৰ্ণ কৰাৰ অনুমতি আছে</translation> <translation id="1630768113285622200">ৰিষ্টাৰ্ট কৰক আৰু অব্যাহত ৰাখক</translation> <translation id="1632082166874334883">আপোনাৰ Google একাউণ্টত ষ্ট’ৰ কৰি থোৱা পাছৱৰ্ডসমূহ</translation> <translation id="1632803087685957583">আপোনাক আপোনাৰ কীব’ৰ্ডৰ পুনৰাবৃত্তিৰ হাৰ, শব্দানুমান আৰু বহুতো কাম কৰিবলৈ সুবিধা দিয়ে</translation> @@ -750,6 +753,7 @@ <translation id="1841705068325380214"><ph name="EXTENSION_NAME" /> অক্ষম কৰা আছে</translation> <translation id="184273675144259287">আপোনাৰ Linux এপ্ আৰু ফাইলসমূহ পূৰ্বৱৰ্তী বেক আপৰ সৈতে সলনি কৰক</translation> <translation id="1842766183094193446">ডেম’ ম’ড সক্ষম কৰিবলৈ আপুনি নিশ্চিতনে?</translation> +<translation id="1845727111305721124">ধ্বনি প্লে’ কৰাৰ অনুমতি আছে</translation> <translation id="1846308012215045257"><ph name="PLUGIN_NAME" />ক চলাবলৈ Control টিপি থাকি ক্লিক কৰক</translation> <translation id="1849186935225320012">এই পৃষ্ঠাটোৰ MIDI ডিভাইচসমূহৰ সম্পূৰ্ণ নিয়ন্ত্ৰণ আছে।</translation> <translation id="1850508293116537636">ঘড়ীৰ কাঁটাৰ দিশ&ত ঘূৰাওক</translation> @@ -774,6 +778,7 @@ <translation id="187145082678092583">কম এপ্</translation> <translation id="1871534214638631766">আপুনি সমলত ৰাইট ক্লিক কৰিলে অথবা দীঘলীয়াকৈ টিপি ধৰি থাকিলে প্ৰাসংগিক তথ্য দেখুৱাওক</translation> <translation id="1871615898038944731">আপোনাৰ <ph name="DEVICE_TYPE" /> আপ টু ডে’ট হৈ আছে</translation> +<translation id="1874248162548993294">যিকোনো বিজ্ঞাপন দেখুওৱাৰ অনুমতি আছে</translation> <translation id="1874972853365565008">{NUM_TABS,plural, =1{টেবটো অন্য এখন ৱিণ্ড’লৈ স্থানান্তৰ কৰক}one{টেবসমূহ অন্য এখন ৱিণ্ড’লৈ স্থানান্তৰ কৰক}other{টেবসমূহ অন্য এখন ৱিণ্ড’লৈ স্থানান্তৰ কৰক}}</translation> <translation id="1875386316419689002">এই টেবটো এটা HID ডিভাইচৰ সৈতে সংযোগ কৰা হৈছে।</translation> <translation id="1875387611427697908">ইয়াক কেৱল <ph name="CHROME_WEB_STORE" />ৰ পৰাহে যোগ কৰিব পাৰি</translation> @@ -829,6 +834,7 @@ <translation id="1931152874660185993">কোনো উপাদান ইনষ্টল কৰা নাই।</translation> <translation id="1932098463447129402">ইয়াৰ আগত নহয়</translation> <translation id="1933809209549026293">অনুগ্ৰহ কৰি কোনো মাউছ বা কীব'র্ড সংযোগ কৰক। যদি আপুনি কোনো ব্লুটুথ ডিভাইচ ব্যৱহাৰ কৰি আছে তেন্তে ডিভাইচটো যোৰা লগাবলৈ সাজু থকাটো নিশ্চিত কৰক।</translation> +<translation id="1935303383381416800">আপোনাৰ অৱস্থান চোৱাৰ অনুমতি আছে</translation> <translation id="1936931585862840749">কিমানটা প্ৰতিলিপি প্ৰিণ্ট কৰিব লাগে সেয়া সূচাবলৈ এটা নম্বৰ ব্যৱহাৰ কৰক (১ৰ পৰা <ph name="MAX_COPIES" />লৈ)।</translation> <translation id="1937774647013465102"><ph name="ARCHITECTURE_DEVICE" /> ডিভাইচৰ জৰিয়তে কণ্টেইনাৰ নির্মাণৰ <ph name="ARCHITECTURE_CONTAINER" /> প্ৰকাৰ আমদানি কৰিব নোৱাৰি। আপুনি এই কণ্টেইনাৰ অন্য কোনো ডিভাইচত পুনঃস্থাপন কৰি চাব পাৰে বা ইয়াক Files এপ্ত খুলি এই কণ্টেনাৰৰ ভিতৰত থকা ফাইলসমূহলৈ এক্সেছ কৰিব পাৰে।</translation> <translation id="1938351510777341717">বাহ্যিক নির্দেশনা</translation> @@ -946,6 +952,7 @@ <translation id="2090165459409185032">আপোনাৰ একাউণ্টৰ তথ্য পুনৰুদ্ধাৰ কৰিবলৈ google.com/accounts/recoveryলৈ যাওক</translation> <translation id="2090876986345970080">ছিষ্টেমৰ সুৰক্ষা ছেটিং</translation> <translation id="2091887806945687916">শব্দ</translation> +<translation id="209539936453343974">অভিভাৱকীয় নিয়ন্ত্ৰণ ছেট আপ কৰিবলৈ এটি শিশুৰ এটা অভিভাৱকে পৰিচালনা কৰা Google একাউণ্ট থাকিবই লাগিব। <ph name="DEVICE_TYPE_PLURAL" />এ Family Link এপ্টোৰ জৰিয়তে ডিভাইচত অতিবাহিত কৰা সময়ৰ সীমা ছেট কৰা, ৱেবছাইট অনুমোদন জনোৱা অথবা অৱৰোধ কৰা তথা অন্য বহুতো কাৰ্য কৰাৰ সুবিধা দিয়ে। যদি শিশুটিয়ে Google Classroomৰ দৰে ছাইটত বিদ্যালয়ৰ কাম কৰিব লাগে, তেন্তে পাছত এটা বিদ্যালয়ৰ একাউণ্ট যোগ দিব পৰা যায়।</translation> <translation id="2096715839409389970">তৃতীয় পক্ষৰ কুকিসমূহ মচক</translation> <translation id="2097372108957554726">আপুনি নতুন ডিভাইচসমূহ পঞ্জীকৰণ কৰিবলৈ Chromeলৈ ছাইন ইন কৰিব লাগিব।</translation> <translation id="2098805196501063469">বাকী থকা পাছৱৰ্ডসমূহ পৰীক্ষা কৰক</translation> @@ -1025,7 +1032,6 @@ <translation id="2178614541317717477">CA কম্প্ৰমাইজ</translation> <translation id="2182058453334755893">আপোনাৰ ক্লিপব’ৰ্ডলৈ প্ৰতিলিপি কৰা হৈছে</translation> <translation id="2184515124301515068">ছাইটসমূহে কেতিয়া ধ্বনি বজাব পাৰিব সেয়া Chromeক বাছনি কৰিবলৈ দিয়ক (আমি চুপাৰিছ কৰোঁ)</translation> -<translation id="2187243482123994665">ব্যৱহাৰকাৰীৰ সক্ৰিয়তা</translation> <translation id="2187675480456493911">আপোনাৰ একাউণ্টত থকা অন্য ডিভাইচসমূহৰ সৈতে ছিংক কৰা হৈছে। অন্য ব্যৱহাৰকাৰীসকলে সংশোধন কৰা ছেটিংসমূহ ছিংক কৰা নহ’ব। <ph name="LINK_BEGIN" />অধিক জানক<ph name="LINK_END" /></translation> <translation id="2187895286714876935">ছাৰ্ভাৰৰ প্ৰমাণপত্ৰ আমদানি কৰাত আসোঁৱাহ</translation> <translation id="2187906491731510095">এক্সটেনশ্বন আপডে'ট কৰা হৈছে</translation> @@ -1096,6 +1102,7 @@ <translation id="2261323523305321874">আপোনাৰ প্ৰশাসকে কৰা সমগ্ৰ ছিষ্টেমতে প্ৰভাৱ পেলোৱা কোনো সলনি কার্যয়ে কিছুমান পুৰণি প্ৰ'ফাইল অক্ষম কৰিছে।</translation> <translation id="2262332168014443534">বর্তমান লাইট ম'ডে HTTPSৰ লগতে সকলো পৃষ্ঠাতে ব্ৰাউজিং ক্ষিপ্ৰ কৰে।</translation> <translation id="2262477216570151239">পুনৰাবৃত্তিৰ পূর্বে হোৱা বিলম্ব</translation> +<translation id="2262888617381992508">সুৰক্ষিত সমল প্লে’ কৰাৰ অনুমতি নাই</translation> <translation id="2263189956353037928">ছাইন আউট হৈ আকৌ ছাইন ইন কৰক</translation> <translation id="2263371730707937087">স্ক্ৰীনৰ ৰিফ্ৰেশ্বৰ হাৰ</translation> <translation id="22665427234727190">কোনো ছাইটে ব্লুটুথ ডিভাইচসমূহ এক্সেছ কৰিবলৈ বিচাৰিলে সোধক (চুপাৰিছ কৰা হয়)</translation> @@ -1364,6 +1371,7 @@ <translation id="2571655996835834626">ৱেবছাইটসমূহে কুকি, JavaScript, প্লাগইন, ভৌগলিক অৱস্থান, মাইক্ৰফ’ন, কেমেৰা ইত্যাদিলৈ এক্সেছ কৰা সুবিধাটো নিয়ন্ত্ৰণ কৰা আপোনাৰ ছেটিংসমূহ সলনি কৰক।</translation> <translation id="2572032849266859634"><ph name="VOLUME_NAME" />লৈ কেৱল পঢ়াৰ এক্সেছ দিয়া হৈছে।</translation> <translation id="2575247648642144396">এক্সটেনশ্বনটোৱে বর্তমানৰ পৃষ্ঠাটোত কার্য কৰিব পাৰিলে এই আইকনটো দেখা পোৱা যাব। আইকনটোত ক্লিক কৰি বা <ph name="EXTENSION_SHORTCUT" />ত টিপি এই এক্সটেনশ্বনটো ব্যৱহাৰ কৰক।</translation> +<translation id="2575441894380764255">অননুমোদিত অথবা বিভ্ৰান্তিকৰ বিজ্ঞাপন দেখুওৱাৰ অনুমতি নাই</translation> <translation id="257779572837908839">বৈঠকৰ বাবে Chromebox হিচাপে ছেট আপ কৰক</translation> <translation id="2579232805407578790">ছার্ভাৰৰ সৈতে সংযোগ কৰিব পৰা নগ’ল। অনুগ্ৰহ কৰি আপোনাৰ নেটৱৰ্ক সংযোগ পৰীক্ষা কৰক আৰু পুনৰ চেষ্টা কৰক। যদিহে সমস্যাটো সমাধান নহয় তেন্তে আপোনাৰ Chromebook ৰিষ্টার্ট কৰক। আসোঁৱাহ ক’ড: <ph name="ERROR_CODE" />।</translation> <translation id="2580889980133367162"><ph name="HOST" />ক সদায় একাধিক ফাইল ডাউনল’ড কৰিবলৈ অনুমতি দিয়ক</translation> @@ -1630,6 +1638,7 @@ <translation id="2880660355386638022">ৱিণ্ড’ক নিৰ্দিষ্ট ঠাইত ৰখা</translation> <translation id="2881076733170862447">আপুনি এক্সটেনশ্বনত ক্লিক কৰিলে</translation> <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> অলপ পিছতে ৰিষ্টাৰ্ট আৰু ৰিছেট হ’ব</translation> +<translation id="288387288628762616">Flash ব্যৱহাৰ কৰাৰ অনুমতি আছে</translation> <translation id="2885378588091291677">কাৰ্য পৰিচালক</translation> <translation id="2885729872133513017">ছার্ভাৰৰ সঁহাৰি ডিক'ড কৰোঁতে সমস্যাৰ সৃষ্টি হৈছিল।</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> @@ -1664,6 +1673,7 @@ <translation id="2923234477033317484">এই একাউণ্টটো আঁতৰাওক</translation> <translation id="2926085873880284723">ডিফ’ল্ট শ্বৰ্টকাটসমূহ পুনঃস্থাপন কৰক</translation> <translation id="2927017729816812676">কেশ্বৰ ষ্ট'ৰেজ</translation> +<translation id="2928795416630981206">আপোনাৰ কেমেৰাৰ স্থান ট্ৰেক কৰাৰ অনুমতি আছে</translation> <translation id="2931157624143513983">প্ৰিণ্ট কৰিব পৰা ঠাইত খাপ খুৱাওক</translation> <translation id="2932085390869194046">পাছৱৰ্ডৰ পৰামৰ্শ দিয়ক...</translation> <translation id="2932330436172705843"><ph name="PROFILE_DISPLAY_NAME" /> (শিশুৰ বাবে একাউণ্ট)</translation> @@ -1671,6 +1681,7 @@ <translation id="2932883381142163287">দুৰ্ব্যৱহাৰৰ অভিযোগ দিয়ক</translation> <translation id="2933632078076743449">অন্তিম আপডে’ট</translation> <translation id="2934999512438267372">MIDI ডিভাইচৰ সম্পূৰ্ণ নিয়ন্ত্ৰণৰ অনুমতি দিয়া হৈছে</translation> +<translation id="2935654492420446828">পাছত বিদ্যালয়ৰ একাউণ্ট যোগ দিয়ক</translation> <translation id="2936851848721175671">বেক আপ আৰু পুনঃস্থাপন</translation> <translation id="2938225289965773019"><ph name="PROTOCOL" /> লিংকবোৰ খোলক</translation> <translation id="2938845886082362843">আপোনাৰ সুৰক্ষা চাবিটোত ষ্ট’ৰ কৰি ৰখা ছাইন ইন ডেটা চাওক আৰু মচক</translation> @@ -1774,6 +1785,7 @@ <translation id="3060379269883947824">কথা ক’বলৈ বাছনি কৰক সক্ষম কৰক</translation> <translation id="3060952009917586498">ডিভাইচৰ ভাষা সলনি কৰক। বৰ্তমানৰ ভাষাটো হৈছে <ph name="LANGUAGE" />।</translation> <translation id="3065041951436100775">বন্ধ কৰা টেব সম্পর্কীয় মতামত।</translation> +<translation id="306535478112428611">আপোনাৰ ডিভাইচত ফাইল আৰু ফ’ল্ডাৰ সম্পাদনা কৰাৰ অনুমতি নাই</translation> <translation id="3065522099314259755">কীব’ৰ্ডৰ পুনৰাবৃত্তিৰ বিলম্বতা</translation> <translation id="3067198179881736288">এপ্ ইনষ্টল কৰিবনে?</translation> <translation id="3067198360141518313">এই প্লেগইন চলাওক</translation> @@ -1909,6 +1921,7 @@ <translation id="324849028894344899"><ph name="WINDOW_TITLE" /> - নেটৱৰ্কৰ আসোঁৱাহ</translation> <translation id="3248902735035392926">সুৰক্ষা বিষয়টো গুৰুত্বপূৰ্ণ। <ph name="BEGIN_LINK" />এতিয়া আপোনাৰ এক্সটেনশ্বনসমূহ পৰীক্ষা কৰিবলৈ<ph name="END_LINK" /> কিছু সময় খৰচ কৰক</translation> <translation id="3251759466064201842"><প্ৰমাণপত্ৰৰ অংশ নহয়></translation> +<translation id="325238099842880997">শিশুক খেলা, অন্বেষণ কৰা আৰু ঘৰত বিদ্যালয়ৰ কাম কৰাত সহায় কৰিবলৈ বুনিয়াদী ডিজিটেল নিয়ম ছেট কৰক</translation> <translation id="3253225298092156258">উপলব্ধ নহয়</translation> <translation id="3253448572569133955">অজ্ঞাত একাউণ্ট</translation> <translation id="3254084468305910013">{COUNT,plural, =0{সুৰক্ষা সম্পৰ্কীয় কোনো সমস্যা পোৱা নগ’ল}=1{সুৰক্ষা সম্পৰ্কীয় {COUNT} টা সমস্যা পোৱা গৈছে}one{সুৰক্ষা সম্পৰ্কীয় {COUNT} টা সমস্যা পোৱা গৈছে}other{সুৰক্ষা সম্পৰ্কীয় {COUNT} টা সমস্যা পোৱা গৈছে}}</translation> @@ -2036,6 +2049,7 @@ <translation id="3404249063913988450">স্ক্ৰীন ছেভাৰ সক্ষম কৰক</translation> <translation id="3405664148539009465">ফ’ণ্ট কাষ্টমাইজ কৰক</translation> <translation id="3405763860805964263">...</translation> +<translation id="3406290648907941085">ভাৰ্ছুৱেল ৰিয়েলিটি ডিভাইচ আৰু ডেটা ব্যৱহাৰ কৰাৰ অনুমতি আছে</translation> <translation id="3406396172897554194">ভাষা অথবা ইনপুটৰ নাম অনুসৰি সন্ধান কৰক</translation> <translation id="3406605057700382950">বুকমার্ক বাৰ &দেখুৱাওক</translation> <translation id="340671561090997290">{NUM_EXTENSIONS,plural, =1{এই এক্সটেনশ্বনটো বিপজ্জনক হ’ব পাৰে}one{এই এক্সটেনশ্বনসমূহ বিপজ্জনক হ’ব পাৰে}other{এই এক্সটেনশ্বনসমূহ বিপজ্জনক হ’ব পাৰে}}</translation> @@ -2200,6 +2214,7 @@ <translation id="3586806079541226322">এই ফাইলটো খুলিব নোৱাৰি</translation> <translation id="3586931643579894722">সবিশেষ লুকুৱাওক</translation> <translation id="3587482841069643663">সকলো</translation> +<translation id="3588790464166520201">পৰিশোধ নিয়ন্ত্ৰক ইনষ্টল কৰাৰ অনুমতি আছে</translation> <translation id="3589766037099229847">অসুৰক্ষিত সমল অৱৰোধ কৰা হ’ল</translation> <translation id="3590194807845837023">প্ৰ'ফাইল আনলক কৰি পুনৰ লঞ্চ কৰক</translation> <translation id="3590295622232282437">পৰিচালিত ছেশ্বন ব্যৱহাৰ কৰিবলৈ গৈ আছে।</translation> @@ -2425,6 +2440,7 @@ <translation id="3822559385185038546">এই প্ৰক্সিটো আপোনাৰ প্ৰশাসকৰ দ্বাৰা বলপূৰ্বকভাৱে প্ৰয়োগ কৰা হৈছে</translation> <translation id="3823310065043511710">Linuxৰ বাবে অতি কমেও <ph name="INSTALL_SIZE" /> ঠাই থকাটো চুপাৰিছ কৰা হয়।</translation> <translation id="3824621460022590830">ডিভাইচৰ পঞ্জীয়নৰ ট’কেনটো অমান্য। অনুগ্ৰহ কৰি আপোনাৰ ডিভাইচৰ গৰাকী অথবা প্ৰশাসকৰ সৈতে যোগাযোগ কৰক। আসোঁৱাহ ক’ড: <ph name="ERROR_CODE" />।</translation> +<translation id="3826071569074535339">ম’শ্বন ছেন্সৰ ব্যৱহাৰ কৰাৰ অনুমতি আছে</translation> <translation id="3826440694796503677">আপোনাৰ প্ৰশাসকে অধিক Google একাউণ্ট যোগ কৰা সুবিধাটো অক্ষম কৰিছে</translation> <translation id="3827306204503227641">ছেণ্ডবক্স নকৰা প্লাগইনক অনুমতি দিয়া কার্য অব্যাহত ৰাখক</translation> <translation id="3827774300009121996">&সম্পূৰ্ণ স্ক্ৰীণ</translation> @@ -2477,6 +2493,8 @@ <translation id="3873423927483480833">পিনসমূহ দেখুৱাওক</translation> <translation id="3873915545594852654">ARC++ৰ ক্ষেত্ৰত এটা সমস্যাই দেখা দিছে।</translation> <translation id="3874164307099183178">Google Assistant অন কৰক</translation> +<translation id="3877075909000773256"><ph name="USER_NAME" />ৰ ডিভাইচৰ নিকটৱৰ্তী শ্বেয়াৰ কৰাৰ সুবিধাটোৰ ছেটিং, <ph name="USER_EMAIL" /> একাউণ্টৰ অধীনত শ্বেয়াৰ কৰি থকা হৈছে।</translation> +<translation id="387771067039689031">আপোনাৰ কম্পিউটাৰটো এক্সেছ কৰিবৰ বাবে প্লাগইন ব্যৱহাৰ কৰাৰ অনুমতি নাই</translation> <translation id="3879748587602334249">ডাউনল’ড মেনেজাৰ</translation> <translation id="3881478300875776315">শাৰী কমকৈ দেখুৱাওক</translation> <translation id="3882165008614329320">কেমেৰা অথবা ফাইলৰ পৰা ইতিমধ্যে থকা ভিডিঅ’</translation> @@ -2513,6 +2531,7 @@ <translation id="3919145445993746351">আপোনাৰ সকলো কম্পিউটাৰতে নিজৰ এক্সটেনশ্বনসমূহ পাবলৈ ছিংক অন কৰক</translation> <translation id="3920504717067627103">প্ৰমাণপত্ৰৰ নীতিসমূহ</translation> <translation id="392089482157167418">ChromeVox সক্ষম কৰক (কথিত মতামত)</translation> +<translation id="3920909973552939961">পৰিশোধ নিয়ন্ত্ৰক ইনষ্টল কৰাৰ অনুমতি নাই</translation> <translation id="3923184630988645767">ডেটাৰ ব্যৱহাৰ</translation> <translation id="3923676227229836009">ফাইলসমূহ চাবলৈ এই পৃষ্ঠাটোক অনুমতি দিয়া হৈছে</translation> <translation id="3924145049010392604">মেটা</translation> @@ -2634,6 +2653,7 @@ <translation id="4058793769387728514">এতিয়াই নথি পৰীক্ষা কৰক</translation> <translation id="406070391919917862">নেপথ্যৰ এপ্</translation> <translation id="4061374428807229313">শ্বেয়াৰ কৰিবলৈ Files এপৰ এটা ফ’ল্ডাৰত ৰাইট-ক্লিক কৰক আৰু তাৰ পাছত "Parallels Desktopৰ জৰিয়তে শ্বেয়াৰ কৰক" বাছনি কৰক।</translation> +<translation id="406213378265872299">কাষ্টমাইজ কৰা আচৰণ</translation> <translation id="4065876735068446555">আপুনি ব্যৱহাৰ কৰি থকা নেটৱর্ক(<ph name="NETWORK_ID" />)টোৰ বাবে আপুনি ইয়াৰ লগ ইন কৰা পৃষ্ঠালৈ যোৱাটো আৱশ্যক হ’ব পাৰে।</translation> <translation id="4066207411788646768">আপোনাৰ নেটৱৰ্কত উপলব্ধ প্ৰিণ্টাৰবোৰ চাবলৈ অনুগ্ৰহ কৰি আপোনাৰ সংযোগ পৰীক্ষা কৰক</translation> <translation id="4068776064906523561">ছেভ কৰি থোৱা ফিংগাৰপ্ৰিণ্ট</translation> @@ -2676,7 +2696,6 @@ <translation id="4104163789986725820">ৰ&প্তানি কৰক...</translation> <translation id="4107048419833779140">ষ্ট’ৰেজ ডিভাইচ চিনাক্ত কৰক আৰু বাহিৰ কৰক</translation> <translation id="4109135793348361820"><ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)লৈ ৱিণ্ড’ক আঁতৰাওক</translation> -<translation id="411031910327788420">এই ছেটিংটো সমৰ্থন কৰা এপ্সমূহৰ বাবে কেপশ্বনৰ আকাৰ আৰু শৈলী কাষ্টমাইজ কৰক</translation> <translation id="4110490973560452005">ডাউনল’ড সম্পূৰ্ণ হ’ল: <ph name="FILE_NAME" />। ডাউনল’ড বাৰৰ ক্ষেত্ৰলৈ যাবলৈ Shift+F6 টিপক।</translation> <translation id="4110686435123617899">এলবাম বাছনি কৰক <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">হাই কনট্ৰাষ্ট ম’ডত ৱেব ব্ৰাউজ কৰক</translation> @@ -2781,6 +2800,7 @@ <translation id="425573743389990240">চ্চাৰ্জ খৰচ হোৱাৰ হাৰ ৱাট এককত ( ঋণাত্মক মানে বেটাৰী চ্চার্জ হৈ থকাটো বুজাব)</translation> <translation id="4256316378292851214">ডিডিঅ’ ছে&ভ কৰাৰ বিকল্প...</translation> <translation id="4258348331913189841">ফাইলৰ ছিষ্টেম</translation> +<translation id="4259388776256904261">এইটোৰ বাবে কিছু সময় লাগিব পাৰে</translation> <translation id="4260182282978351200"><ph name="FILE_NAME" /> বিপজ্জনক হ’ব পাৰে। স্কেন কৰিবলৈ Googleৰ সুৰক্ষা সম্পৰ্কীয় উন্নত সুবিধাটোলৈ পঠিয়াবনে? ডাউনল’ড বাৰৰ ক্ষেত্ৰলৈ যাবলৈ শ্বিফ্ট+F6 টিপক।</translation> <translation id="4263223596040212967">আপোনাৰ কীব'ৰ্ডৰ লে’আউট পৰীক্ষা কৰক আৰু আকৌ চেষ্টা কৰক</translation> <translation id="4263757076580287579">প্ৰিণ্টাৰৰ পঞ্জীয়ন বাতিল কৰা হৈছে।</translation> @@ -2932,6 +2952,7 @@ <translation id="4450974146388585462">বিসংগতিৰ কাৰণ নিৰ্ণয় কৰক</translation> <translation id="4451479197788154834">আপোনাৰ পাছৱৰ্ডটো এই ডিভাইচটোত আৰু আপোনাৰ Google একাউণ্টত ছেভ কৰা আছে</translation> <translation id="4451757071857432900">অননুমোদিত বা বিভ্ৰান্তিকৰ বিজ্ঞাপন দেখুওৱা ছাইটসমূহ অৱৰোধ কৰক ( চুপাৰিছ কৰা)</translation> +<translation id="4453205916657964690">ছাবনেট মাস্ক</translation> <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" />ৰ সন্ধান কৰক বা কোনো URL টাইপ কৰক</translation> <translation id="4459169140545916303"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> দিনৰ পূৰ্বে সক্ৰিয় আছিল</translation> <translation id="4460014764210899310">গোট ভংগ কৰক</translation> @@ -2959,6 +2980,7 @@ <translation id="4481530544597605423">যোৰা বিচ্ছিন্ন কৰা ডিভাইচসমূহ</translation> <translation id="4483049906298469269">ডিফ’ল্ট হিচাপে নথকা নেটৱৰ্কৰ গে’টৱে’টোক পিং কৰাত বিফল হ'ল</translation> <translation id="4487489714832036847">Chromebookএ পৰম্পৰাগত ছফ্টৱেৰৰ সলনি এপ্সমূহ ব্যৱহাৰ কৰে। উৎপাদনশীলতা, বিনোদন আৰু বহুতো কাৰ্যৰ বাবে এপ্সমূহ পাওক।</translation> +<translation id="4488257340342212116">আপোনাৰ কেমেৰা ব্যৱহাৰ কৰাৰ অনুমতি আছে</translation> <translation id="4488502501195719518">সকলো ডেটা মচিবনে?</translation> <translation id="449232563137139956">ছাইটসমূহে সচৰাচৰ সবিশেষ বৰ্ণনা দিবলৈ প্ৰতিচ্ছবিসমূহ দেখুৱায়, যেনে অনলাইন ষ্ট'ৰ অথবা বাতৰিৰ প্ৰবন্ধসমূহ বাবে ফট'</translation> <translation id="4493468155686877504">চুপাৰিছ কৰা (<ph name="INSTALL_SIZE" />)</translation> @@ -2990,6 +3012,7 @@ <translation id="4524832533047962394">অপাৰেটিং ছিষ্টেমটোৰ এই সংস্কৰণটোত যোগান ধৰা এনৰ‘লমেণ্ট ম‘ডটো ব্যৱহাৰ কৰিব নোৱাৰি। অনুগ্ৰহ কৰি আপুনি শেহতীয়া সংস্কৰণটো ব্যৱহাৰ কৰি আছেনে নাই নিশ্চিত কৰক।</translation> <translation id="4527186207340858212">কৰ্মস্থানৰ বাবে এটা নতুন প্ৰ’ফাইল সৃষ্টি কৰিবনে?</translation> <translation id="452750746583162491">আপোনাৰ ছিংক কৰা ডেটা পর্যালোচনা কৰক</translation> +<translation id="4527929807707405172">ওলোটাকৈ স্ক্ৰ’ল কৰাৰ সুবিধাটো সক্ষম কৰক। <ph name="LINK_BEGIN" />অধিক জানক<ph name="LINK_END" /></translation> <translation id="4528494169189661126">অনুবাদৰ পৰামৰ্শ</translation> <translation id="4530494379350999373">উৎস</translation> <translation id="4531924570968473143">আপুনি এইটো <ph name="DEVICE_TYPE" />ত কাক যোগ দিব বিচাৰে?</translation> @@ -3010,6 +3033,7 @@ <translation id="4545028762441890696">এইটো পুনৰ সক্ষম কৰিবলৈ নতুন অনুমতিবোৰ গ্ৰহণ কৰক:</translation> <translation id="4545759655004063573">পৰ্যাপ্ত অনুমতি নোহোৱাৰ কাৰণে ছেভ কৰিব নোৱাৰি। অনুগ্ৰহ কৰি আন এঠাইত ছেভ কৰক।</translation> <translation id="4546308221697447294">Google Chrome ব্যৱহাৰ কৰি দ্ৰুতভাৱে ব্ৰাউজ কৰক</translation> +<translation id="4546345569117159016">সোঁফালৰ বুটাম</translation> <translation id="4546692474302123343">Google Assistantৰ ভইচ ইনপুট</translation> <translation id="4547659257713117923">অন্য ডিভাইচৰ কোনো টেব নাই</translation> <translation id="4547672827276975204">স্বয়ংক্ৰিয়াভাৱে ছেট কৰক</translation> @@ -3069,6 +3093,7 @@ <translation id="4608500690299898628">&বিচাৰক…</translation> <translation id="4608520674724523647">সফল পঞ্জীয়নকৰণৰ সবিশেষ বৰ্ণনা</translation> <translation id="4608703838363792434"><ph name="FILE_NAME" />ত সংবেদনশীল সমল আছে</translation> +<translation id="4609987916561367134">JavaScript ব্যৱহাৰ কৰাৰ অনুমতি আছে</translation> <translation id="4610162781778310380"><ph name="PLUGIN_NAME" />এ কিবা আসোঁৱাহ পাইছে</translation> <translation id="4610637590575890427">আপুনি <ph name="SITE" />লৈ যাব বিচাৰিছিল নেকি?</translation> <translation id="4611114513649582138">ডেটা সংযোগ নাই</translation> @@ -3180,6 +3205,7 @@ <translation id="473775607612524610">আপডে'ট কৰক</translation> <translation id="473936925429402449">অতিৰিক্ত <ph name="TOTAL_ELEMENTS" /> টা সমলৰ <ph name="CURRENT_ELEMENT" /> নম্বৰটো বাছনি কৰা হৈছে</translation> <translation id="4739639199548674512">টিকেটবোৰ</translation> +<translation id="4742334355511750246">প্ৰতিচ্ছবি দেখুওৱাৰ অনুমতি নাই</translation> <translation id="4743260470722568160"><ph name="BEGIN_LINK" />এপ্লিকেশ্বনসমূহ কেনেদৰে আপডে’ট কৰে সেয়া জানক<ph name="END_LINK" /></translation> <translation id="4744981231093950366">{NUM_TABS,plural, =1{ছাইট আনমিউট কৰক}one{ছাইটসমূহ আনমিউট কৰক}other{ছাইটসমূহ আনমিউট কৰক}}</translation> <translation id="4746351372139058112">Messages</translation> @@ -3315,6 +3341,7 @@ <translation id="4908811072292128752">দুটা ছাইট একেলগে ব্ৰাউজ কৰিবলৈ এটা নতুন টেব খোলক</translation> <translation id="4909038193460299775">এই একাউণ্টটো <ph name="DOMAIN" />এ পৰিচালনা কৰে বাবে আপোনাৰ বুকমাৰ্ক, ব্ৰাউজিঙৰ ইতিহাস, পাছৱৰ্ড আৰু অন্য ছেটিংসমূহ এই ডিভাইচটোৰ পৰা মচা হ’ব। তথাপিও, আপোনাৰ ডেটাখিনি আপোনাৰ Google একাউণ্টত ষ্ট’ৰ হৈ থাকিব আৰু সেইখিনি <ph name="BEGIN_LINK" />Google Dashboard<ph name="END_LINK" />ত পৰিচালনা কৰিব পাৰি।</translation> <translation id="4912643508233590958">নিষ্ক্রিয়ৰ পৰা সক্রিয় কৰা সংখ্যা</translation> +<translation id="4915961947098019832">প্ৰতিচ্ছবি দেখুওৱাৰ অনুমতি আছে</translation> <translation id="4916542008280060967">ছাইটক <ph name="FILE_NAME" /> সম্পাদনা কৰিবলৈ দিবনে?</translation> <translation id="491691592645955587">কোনো সুৰক্ষিত ব্ৰাউজাৰলৈ সলনি কৰক</translation> <translation id="4917385247580444890">শক্তিশালী</translation> @@ -3402,6 +3429,7 @@ <translation id="5027550639139316293">ইমেইলৰ প্ৰমাণপত্ৰ</translation> <translation id="5027562294707732951">এক্সটেনশ্বন যোগ কৰক</translation> <translation id="5029568752722684782">প্ৰতিলিপিটো মচক</translation> +<translation id="5033137252639132982">ম’শ্বন ছেন্সৰ ব্যৱহাৰ কৰাৰ অনুমতি নাই</translation> <translation id="5033266061063942743">জ্যামিতিক আকৃতিসমূহ</translation> <translation id="5036662165765606524">একাধিক ফাইল স্বয়ংক্ৰিয়ভাৱে ডাউনল’ড কৰিবলৈ কোনো ছাইটক অনুমতি নিদিব</translation> <translation id="5037676449506322593">সকলো বাছনি কৰক</translation> @@ -3451,6 +3479,7 @@ <translation id="5088172560898466307">ছার্ভাৰ হ‘ষ্টনে‘ম</translation> <translation id="5088534251099454936">RSA এনক্ৰিপশ্বনৰ সৈতে PKCS #1 SHA-512</translation> <translation id="5089810972385038852">ৰাজ্য</translation> +<translation id="5090637338841444533">আপোনাৰ কেমেৰাৰ স্থান ট্ৰেক কৰাৰ অনুমতি নাই</translation> <translation id="5094721898978802975">সহযোগ কৰা স্থানীয় এপ্লিকেশ্বনৰ সৈতে যোগাযোগ কৰক</translation> <translation id="5097002363526479830">’<ph name="NAME" />’ নেটৱর্কত সংযুক্ত কৰিব পৰা নগ’ল : <ph name="DETAILS" /></translation> <translation id="5097649414558628673">সঁজুলি: <ph name="PRINT_NAME" /></translation> @@ -3759,6 +3788,7 @@ <translation id="5471768120198416576">নমস্কাৰ! মই আপোনাৰ পাঠৰপৰা কথনৰ ভইচ।</translation> <translation id="5472627187093107397">এই ছাইটটোৰ বাবে পাছৱর্ডসমূহ ছেভ কৰক</translation> <translation id="5473333559083690127">আপোনাৰ নতুন পিনটো আকৌ দিয়ক</translation> +<translation id="5481273127572794904">স্বয়ংক্ৰিয়ভাৱে একাধিক ফাইল ডাউনল’ড কৰাৰ অনুমতি নাই</translation> <translation id="5481941284378890518">নিকটৱৰ্তী প্ৰিণ্টাৰ যোগ কৰক</translation> <translation id="5483785310822538350">ফাইল আৰু ডিভাইচৰ এক্সেছ প্ৰত্যাহাৰ কৰক</translation> <translation id="5485080380723335835">আপোনাৰ <ph name="DEVICE_TYPE" /> সুৰক্ষাৰ বাবে লক কৰা হৈছে। অব্যাহত ৰাখিবলৈ আপোনাৰ পাছৱৰ্ডটো মেনুৱেলী দিয়ক।</translation> @@ -3780,6 +3810,7 @@ <translation id="5495466433285976480">এই কাৰ্যই আপুনি ইয়াৰ পিছৰবাৰ ছাইন ইন কৰাৰ পিছত সকলো স্থানীয় ব্যৱহাৰকাৰী, ফাইল, ডেটা আৰু অন্য ছেটিংসমূহ আঁতৰাব। সকলো ব্যৱহাৰকাৰীয়ে আকৌ ছাইন ইন কৰাৰ প্ৰয়োজন হ’ব।</translation> <translation id="5495597166260341369">ডিছপ্লে’ অন ৰাখক</translation> <translation id="5496587651328244253">শৃংখলাবদ্ধ কৰক</translation> +<translation id="5496730470963166430">পপ-আপ পঠিওৱাৰ অথবা ৰিডাইৰেক্ট ব্যৱহাৰ কৰাৰ অনুমতি নাই</translation> <translation id="5497251278400702716">এইটো ফাইল</translation> <translation id="5498967291577176373">আপোনাৰ নাম, ঠিকনা অথবা ফ’ন নম্বৰৰ বাবে আগবঢ়োৱা ইনলাইন পৰামৰ্শ ব্যৱহাৰ কৰি দ্ৰুতভাৱে লিখক</translation> <translation id="5499313591153584299">এই ফাইলটো আপোনাৰ কম্পিউটাৰৰ বাবে ক্ষতিকাৰক হ'ব পাৰে।</translation> @@ -3787,6 +3818,7 @@ <translation id="5500709606820808700">আজি সুৰক্ষা পৰীক্ষা চলোৱা হৈছে</translation> <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="DEVICE_NAME" />ৰ পৰা <ph name="ATTACHMENTS" /> লাভ কৰিব পৰা নগ’ল}one{<ph name="DEVICE_NAME" />ৰ পৰা <ph name="ATTACHMENTS" /> লাভ কৰিব পৰা নগ’ল}other{<ph name="DEVICE_NAME" />ৰ পৰা <ph name="ATTACHMENTS" /> লাভ কৰিব পৰা নগ’ল}}</translation> <translation id="5502500733115278303">Firefoxৰ পৰা আমদানি কৰা হৈছে</translation> +<translation id="5502915260472117187">এটি শিশু</translation> <translation id="5503982651688210506"><ph name="HOST" />ক আপোনাৰ কেমেৰা ব্যৱহাৰ আৰু লৰচৰ কৰিবলৈ আৰু আপোনাৰ মাইক্ৰ’ফ’ন ব্যৱহাৰ কৰিবলৈ দিয়াটো অব্যাহত ৰাখক</translation> <translation id="5505264765875738116">ছাইটসমূহে জাননী পঠিয়াবলৈ ক’ব নোৱাৰে</translation> <translation id="5505307013568720083">চিয়াহী শেষ হৈছে</translation> @@ -3860,6 +3892,7 @@ <ph name="BEGIN_PARAGRAPH2" />এই সুবিধাটো বন্ধ কৰিলেও ছিষ্টেম আপডে’ট আৰু সুৰক্ষাৰ দৰে অত্যাৱশ্যকীয় সেৱাসমূহৰ বাবে দৰকাৰী তথ্য আপোনাৰ ডিভাইচটোৱে আদান-প্ৰদান কৰোঁতে কোনো বিঘিনিৰ সৃষ্টি নহয়।.<ph name="END_PARAGRAPH2" /> <ph name="BEGIN_PARAGRAPH3" />গৰাকীজনে এই সুবিধাটো ছেটিং > উন্নত ছেটিং > Googleলৈ স্বয়ংক্রিয়ভাৱে ডাইগন‘ষ্টিক আৰু ব্যৱহাৰৰ ডেটা পঠিয়াওক।<ph name="END_PARAGRAPH3" /> <ph name="BEGIN_PARAGRAPH4" />যদি আপোনাৰ অতিৰিক্ত ৱেব আৰু এপ্ কাৰ্যকলাপ ছেটিংটো সক্ষম কৰা থাকে, তেন্তে এই ডেটা আপোনাৰ Google একাউণ্টত ছেভ কৰা হ’ব পাৰে। আপুনি account.google.comলৈ গৈ আপোনাৰ ডেটা চাব পাৰে, সেইয়া মচিব পাৰে আৰু আপোনাৰ একাউণ্ট ছেটিংসমূহ সলনি কৰিব পাৰে।<ph name="END_PARAGRAPH4" /></translation> +<translation id="5585019845078534178">কাৰ্ড</translation> <translation id="5585118885427931890">বুকমার্ক ফ’ল্ডাৰ সৃষ্টি কৰিব পৰা নগ’ল।</translation> <translation id="558563010977877295">কোনো নির্দিষ্ট পৃষ্ঠা বা পৃষ্ঠাসমূহৰ সংগ্ৰহ খোলক</translation> <translation id="5585898376467608182">আপোনাৰ ডিভাইচটোৰ ষ্ট’ৰেজৰ খালী ঠাই কমিছে। <ph name="APP_NAME" /> ব্যৱহাৰ কৰিবলৈ অতি কমেও <ph name="MINIMUM_SPACE" /> খালী ঠাইৰ আৱশ্যক। খালী ঠাই বঢ়াবলৈ ডিভাইচৰ পৰা ফাইল মচক।</translation> @@ -3872,6 +3905,7 @@ <translation id="5596627076506792578">অধিক বিকল্প</translation> <translation id="5600706100022181951">আপডে’টটো ম’বাইল ডেটাৰ <ph name="UPDATE_SIZE_MB" /> এম.বি. ব্যৱহাৰ কৰি ডাউনল’ড কৰা হ’ব। আপুনি অব্যাহত ৰাখিবলৈ বিচাৰেনে?</translation> <translation id="5601503069213153581">পিন</translation> +<translation id="5601823921345337195">MIDI ডিভাইচৰ সৈতে সংযোগ কৰাৰ অনুমতি নাই</translation> <translation id="5602765853043467355">এই ডিভাইচৰ পৰা বুকমার্ক, ইতিহাস, পাছৱর্ড আৰু অধিক তথ্য মচক</translation> <translation id="5605623530403479164">অন্যান্য সন্ধান ইঞ্জিন</translation> <translation id="5605758115928394442">এইগৰাকী আপুনিয়েই হয় বুলি নিশ্চিত কৰিবলৈ আপোনাৰ ফ'নলৈ এটা জাননী পঠিওৱা হৈছে।</translation> @@ -3992,6 +4026,7 @@ <translation id="5747552184818312860">এই সময়ত ম্যাদ উকলিব</translation> <translation id="5747785204778348146">বিকাশকৰ্তা - বিকাশ সম্পূৰ্ণ হোৱা নাই</translation> <translation id="5747809636523347288">পে&ষ্ট কৰি <ph name="URL" />লৈ যাওক</translation> +<translation id="5754152670305761216">সুৰক্ষিত সমল প্লে’ কৰাৰ অনুমতি আছে</translation> <translation id="5756163054456765343">&সহায় কেন্দ্ৰ</translation> <translation id="5759728514498647443">আপুনি <ph name="APP_NAME" />ৰ মাধ্যমেৰে প্ৰিণ্টলৈ পঠিওৱা নথি <ph name="APP_NAME" />এ পঢ়িব পাৰিব।</translation> <translation id="5763751966069581670">কোনো ইউএছবি ডিভাইচ পোৱা নাই</translation> @@ -4410,8 +4445,6 @@ <translation id="6242852299490624841">এই টেবটোত ফ’কাছ কৰক</translation> <translation id="6243280677745499710">বর্তমান ছেট কৰা ৱালপেপাৰ</translation> <translation id="6243774244933267674">ছার্ভাৰ নাই</translation> -<translation id="6244185221716469155">দুৰ্বল পাছৱৰ্ডসমূহ অনুমান কৰিবলৈ সহজ। আপুনি শক্তিশালী পাছৱৰ্ড সৃষ্টি কৰি আছে বুলি নিশ্চিত হৈ লওক। - <ph name="BEGIN_LINK" />সুৰক্ষা সম্পৰ্কীয় অধিক কিটিপ চাওক।<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC ফাইলটো আমদানি কৰক</translation> <translation id="6246790815526961700">ডিভাইচৰ পৰা আপল'ড কৰক</translation> <translation id="6247620186971210352">কোনো এপ্ পোৱা নগ’ল</translation> @@ -4459,6 +4492,7 @@ <translation id="6295158916970320988">সকলো ছাইট</translation> <translation id="6295855836753816081">ছেভ কৰি থকা হৈছে...</translation> <translation id="6298962879096096191">Androidৰ এপ্ ইনষ্টল কৰিবলৈ Google Play ব্যৱহাৰ কৰক</translation> +<translation id="6300177430812514606">ডেটা পঠিওৱা অথবা গ্ৰহণ কৰাটো সম্পূৰ্ণ কৰাৰ অনুমতি নাই</translation> <translation id="630065524203833229">প্ৰ&স্থান কৰক</translation> <translation id="6300718114348072351"><ph name="PRINTER_NAME" />ক স্বয়ংক্রিয়ভাৱে কনফিগাৰ কৰিব পৰা নগ’ল। অনুগ্ৰহ কৰি প্ৰিণ্টাৰৰ উচ্চখাপৰ সবিশেষ নিৰ্দিষ্ট কৰক। <ph name="LINK_BEGIN" />অধিক জানক<ph name="LINK_END" /></translation> <translation id="6301076166764763868">ব্যক্তিগত আৰু <ph name="EXISTING_USER" /> ব্ৰাউজিং পৃথক কৰিবলৈ <ph name="NEW_USER" />ৰ বাবে এটা নতুন প্ৰ'ফাইল সৃষ্টি কৰক</translation> @@ -4536,6 +4570,7 @@ <translation id="6390020764191254941">টেবটো নতুন ৱিণ্ড’লৈ স্থানান্তৰ কৰক</translation> <translation id="6390799748543157332">আপুনি এই ৱিণ্ড’ত চোৱা পৃষ্ঠাসমূহ ব্ৰাউজাৰৰ ইতিহাসত দেখা নাযায় আৰু আপুনি অতিথি হিচাপে খোলা সকলো ৱিণ্ড’ বন্ধ কৰাৰ পাছত সেইবোৰে কুকিৰ দৰে কোনো ট্ৰে’চ কম্পিউটাৰত নেৰে। তথাপিও, আপুনি ডাউনল’ড কৰা সকলো ফাইল ৰখা হ’ব।</translation> <translation id="6393156038355142111">জটিল পাছৱৰ্ডৰ পৰামৰ্শ দিয়ক</translation> +<translation id="6393550101331051049">অসুৰক্ষিত সমল দেখুওৱাৰ অনুমতি আছে</translation> <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />ছিষ্টেমৰ তথ্য<ph name="END_LINK1" /> আৰু <ph name="BEGIN_LINK2" />মেট্ৰিক্স<ph name="END_LINK2" /> পঠিয়াওক</translation> <translation id="6396988158856674517">ম'শ্বন ছেন্সৰসমূহ ব্যৱহাৰ কৰাত ছাইটসমূহক অৱৰোধ কৰক</translation> <translation id="6398715114293939307">Google Play Store আঁতৰাওক</translation> @@ -4568,6 +4603,7 @@ <translation id="6425556984042222041">পাঠৰ পৰা কথনৰ হাৰ</translation> <translation id="6426200009596957090">ChromeVox ছেটিং খোলক</translation> <translation id="642654727595919401"><ph name="DOMAIN" />ৰ বাবে আপুনি নিজৰ ডেটাৰ বেক আপ লোৱা আৰু ১ সপ্তাহৰ ভিতৰত এই <ph name="DEVICE_TYPE" />টো ঘূৰাই দিয়াৰ আৱশ্যক হয়।<ph name="LINK_BEGIN" />সবিশেষ চাওক<ph name="LINK_END" /></translation> +<translation id="642729974267661262">ধ্বনি প্লে’ কৰাৰ অনুমতি নাই</translation> <translation id="6428982734197629783">প্ৰতিচ্ছবিখনৰ প্ৰক্ৰিয়াকৰণ কৰি থকা হৈছে</translation> <translation id="6429384232893414837">আপডে’টৰ আসোঁৱাহ</translation> <translation id="6430814529589430811">Base64-এনক’ড কৰা ASCII, একক প্ৰমাণপত্ৰ</translation> @@ -4595,6 +4631,7 @@ <translation id="6458701200018867744">আপল’ড কৰিব পৰা নগ’ল (<ph name="WEBRTC_LOG_UPLOAD_TIME" />)।</translation> <translation id="6459488832681039634">বিচাৰিবলৈ বাছনি কৰাবোৰ ব্যৱহাৰ কৰক</translation> <translation id="6459799433792303855">সক্ৰিয় উইণ্ড’ অন্য ডিছপ্লে’লৈ স্থানান্তৰ কৰা হ’ল।</translation> +<translation id="6460566145397380451">MIDI ডিভাইচৰ সৈতে সংযোগ কৰাৰ অনুমতি আছে</translation> <translation id="6460601847208524483">পৰৱৰ্তী বস্তু বিচাৰক</translation> <translation id="6461170143930046705">নেটৱৰ্কসমূহ বিচাৰি থকা হৈছে...</translation> <translation id="6463795194797719782">&সম্পাদনা কৰক</translation> @@ -4626,6 +4663,7 @@ <translation id="6499681088828539489">শ্বেয়াৰ কৰি থোৱা নেটৱৰ্কৰ বাবে প্ৰ’ক্সিৰ অনুমতি নিদিব</translation> <translation id="650266656685499220">এলবাম সৃষ্টি কৰিবলৈ Google Photosলৈ যাওক</translation> <translation id="6503077044568424649">সকলোতকৈ বেছিকৈ চোৱা</translation> +<translation id="650457560773015827">বাওঁফালৰ বুটাম</translation> <translation id="6504611359718185067">প্ৰিণ্টাৰ যোগ কৰিবলৈ ইণ্টাৰনেটৰ সৈতে সংযোগ কৰক</translation> <translation id="6506374932220792071">SHA-256ৰ সৈতে X9.62 ECDSA স্বাক্ষৰ</translation> <translation id="6508248480704296122"><ph name="NAME_PH" />ৰ সৈতে জড়িত</translation> @@ -4825,6 +4863,7 @@ <translation id="676560328519657314">Google Payত আপোনাৰ পৰিশোধ পদ্ধতিসমূহ</translation> <translation id="6767566652486411142">অন্য এটা ভাষা বাছনি কৰক...</translation> <translation id="6767639283522617719">ড’মেইনটোত যোগদান কৰিব নোৱাৰি। সংস্থাৰ ইউনিটৰ বাবে ছেটিংসমূহ শুদ্ধ বুলি নিশ্চিত কৰক।</translation> +<translation id="6768034047581882264">অসুৰক্ষিত সমল দেখুওৱাৰ অনুমতি নাই</translation> <translation id="6769557323306147204"><ph name="ORGANIZATION_NAME" />এ আপুনি এই ডিভাইচটো আপডে’ট কৰাটো চুপাৰিছ কৰে।</translation> <translation id="6769712124046837540">প্ৰিণ্টাৰ যোগ কৰি থকা হৈছে...</translation> <translation id="6770602306803890733">আপোনাৰ লগতে ৱেবত থকা প্ৰত্যেকজনৰ বাবে সুৰক্ষা উন্নত কৰে</translation> @@ -4916,6 +4955,7 @@ <translation id="6865313869410766144">স্বয়ংক্ৰিয়ভাৱে পূৰ কৰা ফৰ্মৰ ডেটা</translation> <translation id="6865598234501509159">পৃষ্ঠাখন <ph name="LANGUAGE" />ত নাই</translation> <translation id="6865708901122695652">WebRTC অনুষ্ঠানৰ লগ (<ph name="WEBRTC_EVENT_LOG_COUNT" />)</translation> +<translation id="686609795364435700">নীৰৱ</translation> <translation id="686664946474413495">ৰঙৰ উষ্ণতা</translation> <translation id="6868934826811377550">সবিশেষ চাওক</translation> <translation id="6871644448911473373">OCSP সঁহাৰিদাতা: <ph name="LOCATION" /></translation> @@ -4965,6 +5005,7 @@ <translation id="6922745772873733498">প্ৰিণ্ট কৰিবলৈ পিন এটা দিয়ক</translation> <translation id="6923132443355966645">স্ক্ৰ’ল / ক্লিক কৰক</translation> <translation id="6923633482430812883">শ্বেয়াৰ মাউণ্ট কৰোঁতে আসোঁৱাহ হৈছে। অনুগ্ৰহ কৰি আপুনি সংযোগ হৈ থকা ছাৰ্ভাৰটোৱে SMBv2 বা তাৰ পিছৰ সংস্কৰণ সমৰ্থন কৰেনে নাই পৰীক্ষা কৰক।</translation> +<translation id="6929126689972602640">বিদ্যালয়ৰ একাউণ্টৰ বাবে অভিভাৱকীয় নিয়ন্ত্ৰণ সমৰ্থিত নহয়। ঘৰত বিদ্যালয়ৰ কাম কৰিবৰ বাবে Google Classroom আৰু অন্য ৱেবছাইট এক্সেছ কৰিবলৈ এটা বিদ্যালয়ৰ একাউণ্ট যোগ দিবৰ বাবে প্ৰথমে শিশুটিৰ ব্যক্তিগত একাউণ্টটোৰ জৰিয়তে ছাইন ইন কৰক। আপুনি পাছত ছেট আপত বিদ্যালয়ৰ একাউণ্টটো যোগ দিব পাৰে।</translation> <translation id="6929760895658557216">Okay Google</translation> <translation id="6930036377490597025">বাহ্যিক সুৰক্ষা চাবি বা বিল্ট-ইন ছেন্সৰ</translation> <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{এটা এক্সটেনশ্বন প্ৰত্যাখ্যান কৰা হৈছে}one{# টা এক্সটেনশ্বন প্ৰত্যাখ্যান কৰা হৈছে}other{# টা এক্সটেনশ্বন প্ৰত্যাখ্যান কৰা হৈছে}}</translation> @@ -5005,6 +5046,7 @@ <translation id="6972629891077993081">HID ডিভাইচসমূহ</translation> <translation id="6972754398087986839">আৰম্ভ কৰক</translation> <translation id="6972887130317925583">হেক কৰা পাছৱৰ্ডটো সফলভাৱে সলনি কৰা হ’ল। যিকোনো সময়তে <ph name="SETTINGS" />ত আপোনাৰ পাছৱৰ্ডসমূহ পৰীক্ষা কৰক।</translation> +<translation id="697312151395002334">পপ-আপ পঠিওৱা আৰু ৰিডাইৰেক্ট ব্যৱহাৰ কৰাৰ অনুমতি আছে</translation> <translation id="6973611239564315524">Debian 10 (Buster)ৰ এটা আপগ্ৰে’ড উপলব্ধ</translation> <translation id="6974609594866392343">অফলাইন ডেম’ ম’ড</translation> <translation id="6977381486153291903">ফাৰ্মৱেৰৰ পুনৰীক্ষণ</translation> @@ -5027,6 +5069,7 @@ <translation id="6995899638241819463">ডেটা উলংঘনৰ ফলত পাছৱৰ্ডসমূহ ফাদিল হ’লে আপোনাক সকীয়নি দিয়ে</translation> <translation id="6997642619627518301"><ph name="NAME_PH" /> - কাৰ্যকলাপৰ লগ</translation> <translation id="6997707937646349884">আপোনাৰ ডিভাইচসমূহত:</translation> +<translation id="6998093258894828179">কাৰ্ড লুকুৱাওক</translation> <translation id="6998793565256476099">ডিভাইচটো ভিডি’অ কনফাৰেন্সিঙৰ বাবে পঞ্জীয়ন কৰক</translation> <translation id="6999956497249459195">নতুন গোট</translation> <translation id="7000206553895739324"><ph name="PRINTER_NAME" />ক সংযোগ কৰা হৈছে কিন্তু কনফিগাৰেশ্বনৰ আৱশ্যক</translation> @@ -5043,6 +5086,7 @@ <translation id="7005848115657603926">অমান্য পৃষ্ঠা পৰিসৰ, <ph name="EXAMPLE_PAGE_RANGE" /> ব্যৱহাৰ কৰক</translation> <translation id="7006634003215061422">তলিৰ মাৰ্জিন</translation> <translation id="7007648447224463482">সকলো নতুন ৱিণ্ড’ত খোলক</translation> +<translation id="7009709314043432820"><ph name="APP_NAME" />এ আপোনাৰ কেমেৰা ব্যৱহাৰ কৰি আছে</translation> <translation id="701080569351381435">উৎস চাওক</translation> <translation id="7014174261166285193">ইনষ্টল কৰিব পৰা নগ’ল।</translation> <translation id="7017004637493394352">পুনৰ "Ok Google" বুলি কওক</translation> @@ -5062,6 +5106,7 @@ <translation id="7038632520572155338">ছুইচৰ দ্বাৰা এক্সেছ</translation> <translation id="7039326228527141150"><ph name="VENDOR_NAME" />ৰ পৰা USB ডিভাইচসমূহ এক্সেছ কৰক</translation> <translation id="7039912931802252762">Microsoft Smart Card Logon</translation> +<translation id="7039951224110875196">শিশুৰ বাবে এটা Google একাউণ্ট সৃষ্টি কৰক</translation> <translation id="7040230719604914234">অপাৰেটৰ</translation> <translation id="7043108582968290193">কৰা হ’ল! কোনো অমিল এপ্লিকেশ্বন বিচাৰি পোৱা নগ’ল।</translation> <translation id="7044124535091449260">ছাইটলৈ এক্সেছৰ বিষয়ে অধিক জানক</translation> @@ -5132,6 +5177,7 @@ <translation id="7121362699166175603">ঠিকনাৰ বাৰত ইতিহাস আৰু স্বয়ংক্ৰিয়ভাৱে পুৰ হোৱা তথ্য মচে। <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />ত আপোনাৰ Google একাউণ্টৰ অন্য প্ৰকাৰৰ ব্ৰাউজিং ইতিহাস থাকিব পাৰে।</translation> <translation id="7121438501124788993">বিকাশকর্তাৰ ম’ড</translation> <translation id="7121728544325372695">স্মাৰ্ট ডেশ্বসমূহ</translation> +<translation id="7123030151043029868">স্বয়ংক্ৰিয়ভাৱে একাধিক ফাইল ডাউনল’ড কৰাৰ অনুমতি আছে</translation> <translation id="7123360114020465152">এতিয়া আৰু সমৰ্থিত নহয়</translation> <translation id="7125148293026877011">Crostini মচক</translation> <translation id="7127980134843952133">ডাউনল’ডৰ ইতিহাস</translation> @@ -5146,6 +5192,7 @@ <translation id="7136984461011502314"><ph name="PRODUCT_NAME" /> লৈ স্বাগতম</translation> <translation id="7136993520339022828">কিবা আসোঁৱাহ হৈছে। অন্য প্ৰতিচ্ছবি বাছনি কৰি পুনৰ চেষ্টা কৰক।</translation> <translation id="713888829801648570">দুঃখিত, আপুনি অফলাইন হৈ থকাৰ কাৰণে আপোনাৰ পাছৱর্ড সত্যাপন কৰিব পৰা নগ’ল।</translation> +<translation id="7139627972753429585"><ph name="APP_NAME" />এ আপোনাৰ মাইক্ৰ’ফ’ন ব্যৱহাৰ কৰি আছে</translation> <translation id="7140928199327930795">উপলব্ধ অন্য ডিভাইচ নহয়।</translation> <translation id="7141105143012495934">আপোনাৰ একাউণ্টৰ সবিশেষ পুনৰুদ্ধাৰ কৰিব নোৱাৰাৰ বাবে ছাইন ইন কৰিব পৰা নগ’ল। অনুগ্ৰহ কৰি আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক বা আকৌ চেষ্টা কৰক।</translation> <translation id="7143207342074048698">সংযোগ হৈছে</translation> @@ -5285,6 +5332,7 @@ <translation id="7324297612904500502">বিটা ফ’ৰাম</translation> <translation id="7325209047678309347">পেপাৰখন ফচিছে</translation> <translation id="7325437708553334317">হাই কনট্ৰাষ্ট এক্সটেনশ্বন</translation> +<translation id="7326004502692201767">শিশুৰ বাবে এই <ph name="DEVICE_TYPE" />টো ছেট আপ কৰক</translation> <translation id="7328699668338161242">আপোনাৰ Assistantএ ইতিমধ্যে আপোনাৰ কণ্ঠস্বৰ চিনাক্ত কৰিব পৰা হৈছে</translation> <translation id="7328867076235380839">অমান্য যুটি</translation> <translation id="7329154610228416156">এটা অসুৰক্ষিত URL (<ph name="BLOCKED_URL" />) ব্যৱহাৰ কৰিবলৈ কনফিগাৰ কৰি ৰখা কাৰণে ছাইন ইন কৰিব নগ‘ল। অনুগ্ৰহ কৰি আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।</translation> @@ -5409,6 +5457,7 @@ <translation id="7465635034594602553">কিবা ভুল হ’ল। অনুগ্ৰহ কৰি কেইমিনিটমান অপেক্ষা কৰক আৰু পুনৰ <ph name="APP_NAME" /> চলাওক।</translation> <translation id="7465778193084373987">নেটস্কেপৰ প্ৰমাণপত্ৰ প্ৰত্যাহাৰ কৰা URL</translation> <translation id="7469894403370665791">এই নেটৱেৰ্কটোত স্বয়ংক্ৰিয়ভাৱে সংযোগ কৰক</translation> +<translation id="7470424110735398630">আপোনাৰ ক্লিপব’ৰ্ড চোৱাৰ অনুমতি আছে</translation> <translation id="747114903913869239">আসোঁৱাহ: এক্সটেনশ্বন ডিক’ড কৰিব পৰা নগ’ল</translation> <translation id="7473891865547856676">নালাগে, ধন্যবাদ</translation> <translation id="747459581954555080">সকলো পুনঃস্থাপন কৰক</translation> @@ -5516,6 +5565,7 @@ <translation id="7607002721634913082">পজ হৈ আছে</translation> <translation id="7608810328871051088">Androidৰ অগ্ৰাধিকাৰসমূহ</translation> <translation id="7609148976235050828">অনুগ্ৰহ কৰি ইন্টাৰনেটত সংযোগ কৰি পুনৰ চেষ্টা কৰক।</translation> +<translation id="7612655942094160088">সংযুক্ত হৈ থকা ফ’নৰ সুবিধাসমূহ সক্ষম কৰক।</translation> <translation id="7614260613810441905">কোনো ছাইটে আপোনাৰ ডিভাইচত ফাইল অথবা ফ’ল্ডাৰসমূহ সম্পাদনা কৰিবলৈ বিচাৰিলে সোধক (চুপাৰিছ কৰা হয়)</translation> <translation id="761530003705945209">Google Driveত বেক আপ লওক। আপোনাৰ ডেটা সহজে পুনঃস্থাপন কৰক অথবা যিকোনো সময়তে ডিভাইচ সলনি কৰক। আপোনাৰ বেকআপত এপ্ ডেটাও আছে। আপোনাৰ বেকআপসমূহ Googleত আপল’ড কৰা হয় আৰু আপোনাৰ Google একাউণ্টৰ পাছৱৰ্ড ব্যৱহাৰ কৰি সেইবোৰ এনক্ৰিপ্ট কৰা হয়।</translation> <translation id="7615365294369022248">এটা একাউণ্ট যোগ দিওঁতে কিবা সমস্যা হৈছিল</translation> @@ -5634,6 +5684,7 @@ <translation id="7732111077498238432">নেটৱৰ্কটো নীতিৰ দ্বাৰা নিয়ন্ত্ৰণ কৰা হয়</translation> <translation id="7737115349420013392">"<ph name="DEVICE_NAME" />"ৰ সৈতে পেয়াৰ কৰি থকা হৈছে …</translation> <translation id="7737238973539693982">Linux (বিটা) মচক</translation> +<translation id="7737948071472253612">আপোনাৰ কেমেৰা ব্যৱহাৰ কৰাৰ অনুমতি নাই</translation> <translation id="7740996059027112821">মান্য</translation> <translation id="7742706086992565332">আপুনি কিছুমান নিৰ্দিষ্ট ৱেবছাইটত কিমান জুম ইন অথবা আউট কৰে সেয়া ছেট কৰিব পাৰে</translation> <translation id="774377079771918250">ক’ত ছেভ কৰিব লাগে বাছনি কৰক</translation> @@ -5642,6 +5693,7 @@ <translation id="7750228210027921155">চিত্ৰৰ ভিতৰত চিত্ৰ</translation> <translation id="7751260505918304024">সকলো দেখুৱাওক</translation> <translation id="7753735457098489144">ষ্ট’ৰেজৰ ঠাই কম হোৱাৰ কাৰণে ইনষ্টল কৰিব পৰা নগ’ল। ঠাই খালী কৰিবলৈ ডিভাইচৰ ষ্ট’ৰেজৰ পৰা ফাইলসমূহ মচক।</translation> +<translation id="7754347746598978109">JavaScript ব্যৱহাৰ কৰাৰ অনুমতি নাই</translation> <translation id="7754704193130578113">ডাউনল'ড কৰাৰ আগতে প্ৰতিটো ফাইল ক'ত ছেভ কৰা হ'ব সেয়া সোধক</translation> <translation id="7755287808199759310">আপোনাৰ অভিভাৱকে এই ছাইটটো আপোনাৰ বাবে অৱৰোধৰ পৰা আঁতৰাব পাৰে</translation> <translation id="7757592200364144203">ডিভাইচৰ নাম সলনি কৰক</translation> @@ -5694,6 +5746,7 @@ <translation id="7798844538707273832"><ph name="PERMISSION" /> স্বয়ংক্ৰিয়ভাৱে অৱৰোধ কৰা হৈছে</translation> <translation id="7799299114731150374">ৱালপেপাৰ সফলতাৰে ছেট কৰা হ’ল</translation> <translation id="7800518121066352902">ঘড়ীৰ কাঁটাৰ বি&পৰীত দিশত ঘূৰাওক</translation> +<translation id="7802539296536804623">এই পৃষ্ঠাখনত কাৰ্ড নেদেখুৱাব</translation> <translation id="780301667611848630">নালাগে, ধন্যবাদ</translation> <translation id="7804072833593604762">টেবটো বন্ধ কৰা হ'ল</translation> <translation id="7805768142964895445">স্থিতি</translation> @@ -6121,6 +6174,7 @@ <translation id="826905130698769948">ক্লায়েণ্টৰ প্ৰমাণপত্র অমান্য</translation> <translation id="8270242299912238708">PDF নথিপত্ৰসমূহ</translation> <translation id="827097179112817503">গৃহপৃষ্ঠালৈ যোৱা বুটামটো দেখুৱাওক</translation> +<translation id="8271379370373330993">অভিভাৱকসকল, পৰৱৰ্তী কেইটামান পদক্ষেপ আপোনালোকৰ বাবে। একাউণ্ট ছেটআপ কৰাৰ পাছত আপুনি <ph name="DEVICE_TYPE" />টো শিশুটিক ঘূৰাই দিব পাৰে।</translation> <translation id="8272443605911821513">"অধিক সঁজুলি" মেনুৰ অন্তৰ্গত এক্সটেনশ্বন-ত ক্লিক কৰি আপোনাৰ এক্সটেনশ্বনবোৰ পৰিচালনা কৰক।</translation> <translation id="8274332263553132018">ফাইল কাষ্ট কৰক</translation> <translation id="8274924778568117936">আপডে’ট সম্পূৰ্ণ নোহোৱালৈকে আপোনাৰ <ph name="DEVICE_TYPE" /> অফ বা বন্ধ নকৰিব। ইনষ্টল সম্পূৰ্ণ হোৱাৰ পিছত আপোনাৰ <ph name="DEVICE_TYPE" /> ৰিষ্টাৰ্ট হ’ব।</translation> @@ -6131,6 +6185,7 @@ <translation id="8281886186245836920">এৰি যাওক</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />"ৰ সৈতে সংযোগ কৰি থাকোঁতে বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ ক’ড অগ্ৰাহ্য কৰা হ’ল৷</translation> <translation id="8284279544186306258">সকলো <ph name="WEBSITE_1" /> ছাইট</translation> +<translation id="8284326494547611709">কেপশ্বন</translation> <translation id="8286036467436129157">ছাইন ইন কৰক</translation> <translation id="8286963743045814739">আপুনি এখন ইনকগনিট‘ ৱিণ্ড‘ ব্যৱহাৰ কৰি ব্যক্তিগতভাৱে ব্ৰাউজ কৰিব পাৰে</translation> <translation id="8287902281644548111">API কল/URLৰ দ্বাৰা সন্ধান কৰক</translation> @@ -6144,6 +6199,7 @@ <translation id="8300011035382349091">এই টেবটোৰ বাবে বুকমাৰ্ক সম্পাদনা কৰক</translation> <translation id="8300374739238450534">মাজৰাতিৰ আকাশৰ দৰে নীলা</translation> <translation id="8300849813060516376">OTASP বিফল হৈছে</translation> +<translation id="8304383784961451596">আপোনাৰ এই ডিভাইচটো ব্যৱহাৰ কৰাৰ কৰ্তৃত্ব নাই। ছাইন ইন কৰাৰ অনুমতিৰ বাবে অনুগ্ৰহ কৰি প্ৰশাসকৰ সৈতে যোগাযোগ কৰক অথবা আপোনাৰ Family Linkএ তদাৰক কৰা এটা Google একাউণ্টৰ জৰিয়তে ছাইন ইন কৰক।</translation> <translation id="8308179586020895837"><ph name="HOST" />এ আপোনাৰ কেমেৰাটো এক্সেছ কৰিব বিচাৰে নেকি সোধক</translation> <translation id="830868413617744215">বিটা</translation> <translation id="8309458809024885768">এই প্ৰমাণপত্ৰ ইতিমধ্যে আছে</translation> @@ -6157,6 +6213,7 @@ <translation id="8322814362483282060">এই পৃষ্ঠাটোৰ আপোনাৰ মাইক্ৰফ’নৰ এক্সেছ অৱৰোধ কৰি ৰখা হৈছিল।</translation> <translation id="8323167517179506834">URL টাইপ কৰক</translation> <translation id="8324784016256120271">আপুনি বিভিন্ন ছাইটসমূহত কৰা ব্ৰাউজিঙৰ কার্যকলাপ চাবলৈ ছাইটসমূহে কুকিসমূহ ব্যৱহাৰ কৰিব পাৰে, যেনে, বিজ্ঞাপন ব্যক্তিগতকৃত কৰিবলৈ</translation> +<translation id="8325413836429495820">আপোনাৰ ক্লিপব’ৰ্ড চোৱাৰ অনুমতি নাই</translation> <translation id="8326478304147373412">PKCS #7, প্ৰমাণপত্ৰ চ্চেইন</translation> <translation id="8327039559959785305">Linux ফাইল মাউণ্ট কৰি থাকোঁতে আসোঁৱাহ হ’ল। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক।</translation> <translation id="8327676037044516220">অনুমতি আৰু সমলৰ ছেটিংসমূহ</translation> @@ -6206,6 +6263,7 @@ <translation id="8382913212082956454">&ইমেইল ঠিকনা প্ৰতিলিপি কৰক</translation> <translation id="8386091599636877289">নীতিটো বিচাৰি পোৱা নগ’ল।</translation> <translation id="8386903983509584791">স্কেন সম্পূর্ণ হ’ল</translation> +<translation id="8387361103813440603">আপোনাৰ অৱস্থান চোৱাৰ অনুমতি নাই</translation> <translation id="8389416080014625855">এই পৃষ্ঠাখনৰ বাবে QR ক’ড সৃষ্টি কৰক</translation> <translation id="8389492867173948260">এই এক্সটেনশ্বনটোক আপুনি খোলা প্রতিটো ৱেবছাইটৰ সকলো ডেটা পঢ়িবলৈ আৰু সালসলনি কৰিবলৈ দিয়ক:</translation> <translation id="8390449457866780408">ছার্ভাৰ নাই।</translation> @@ -6389,6 +6447,7 @@ <translation id="8621866727807194849">আপোনাৰ কম্পিউটাৰত ক্ষতিকাৰক ছফ্টৱেৰ আছে। Chromeএ এয়া আঁতৰাই আছে, আপোনাৰ ছেটিংসমূহ পুনৰুদ্ধাৰ কৰি আছে আৰু এক্সটেনশ্বনসমূহ অক্ষম কৰি আছে। এই কার্যৰ ফলত আপোনাৰ ব্ৰাউজাৰে পুনৰ স্বাভাৱিকভাৱে কাম কৰিব।</translation> <translation id="8621979332865976405">আপোনাৰ সম্পূর্ণ স্ক্ৰীণ শ্বেয়াৰ কৰক</translation> <translation id="862542460444371744">&এক্সটেনশ্বন</translation> +<translation id="8625663000550647058">আপোনাৰ মাইক্ৰ’ফ’ন ব্যৱহাৰ কৰাৰ অনুমতি নাই</translation> <translation id="862727964348362408">স্থগিত</translation> <translation id="862750493060684461">CSS কেশ্ব</translation> <translation id="8627706565932943526">ছিংক কৰাত আসোঁৱাহ</translation> @@ -6469,6 +6528,7 @@ <translation id="8714838604780058252">নেপথ্যৰ গ্ৰাফিক্স</translation> <translation id="8715480913140015283">নেপথ্যৰ টেবটোৱে আপোনাৰ কেমেৰা ব্যৱহাৰ কৰি আছে</translation> <translation id="8716931980467311658">এই <ph name="DEVICE_TYPE" />ৰ পৰা আপোনাৰ Linux ফাইলৰ ফ'ল্ডাৰ থকা সকলো Linux এপ্লিকেশ্বন আৰু ডেটা মচিবনে ?</translation> +<translation id="8717145295869185525">ভাৰ্ছুৱেল ৰিয়েলিটি ডিভাইচ আৰু ডেটা ব্যৱহাৰ কৰাৰ অনুমতি নাই</translation> <translation id="8717864919010420084">লিংকটো প্ৰতিলিপি কৰক</translation> <translation id="8719472795285728850">এক্সটেনশ্বনৰ কাৰ্যকলাপৰ বিষয়ে শুনি থকা হৈছে...</translation> <translation id="8719653885894320876"><ph name="PLUGIN_NAME" /> ডাউনল’ড কৰিব পৰা নগ’ল</translation> @@ -6890,6 +6950,7 @@ <translation id="9179734824669616955">আপোনাৰ <ph name="DEVICE_TYPE" />ত Linux (বিটা) ছেট আপ কৰক</translation> <translation id="9180281769944411366">এই প্ৰক্ৰিয়াৰ বাবে কেইমিনিটমান সময় লাগিব পাৰে। Linux কণ্টেনাৰ আৰম্ভ কৰি থকা হৈছে।</translation> <translation id="9180380851667544951">আপোনাৰ স্ক্ৰীণ শ্বেয়াৰ কৰিব পৰা ছাইট</translation> +<translation id="9186963452600581158">শিশুৰ Google একাউণ্টৰ জৰিয়তে ছাইন ইন কৰক</translation> <translation id="9188732951356337132">ব্যৱহাৰ আৰু ডায়গন’ষ্টিক ডেটা পঠিয়াওক। ডিভাইচটোৱে বর্তমান স্বয়ংক্ৰিয়ভাৱে Googleলৈ ডায়গন’ষ্টিক, ডিভাইচ আৰু এপ্ ব্যৱহাৰৰ ডেটা পঠিয়াই আছে। এইটো আপোনাৰ শিশুক চিনাক্ত কৰিবলৈ ব্যৱহাৰ কৰা নহয় আৰু ই ছিষ্টেম আৰু এপৰ স্থিৰতা আৰু অন্য উন্নয়নত সহায় কৰিব। কিছুমান ডেটাৰ সমষ্টিয়ে লগতে Google এপ্ আৰু অংশীদাৰ, যেনে Androidৰ বিকাশকর্তাকো সহায় কৰিব। যদি আপোনাৰ শিশুৰ বাবে অতিৰিক্ত ৱেব আৰু এপৰ কার্যকলাপ অন কৰা হৈছে, তেন্তে এই ডেটা তেওঁলোকৰ Google একাউণ্টত ছেভ কৰা হ’ব পাৰে। <ph name="BEGIN_LINK2" />অধিক জানক<ph name="END_LINK2" /></translation> <translation id="9190063653747922532">L2TP/IPsec + পূৰ্বে শ্বেয়াৰ কৰা কী</translation> <translation id="9198090666959937775">আপোনাৰ Android ফ’নটো এটা সুৰক্ষা চাবি হিচাপে ব্যৱহাৰ কৰক</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index 3875ed7..19560c6 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -222,7 +222,6 @@ <translation id="1244303850296295656">Artırma xətası</translation> <translation id="1246158006305844142">Tətbiqlər və ayarlarınız Google hesabınız ilə daxil olduğunuz bütün Chrome ƏS cihazlarında sinxronlaşdırılacaq. Brauzerin sinxronlaşdırma seçimləri üçün <ph name="LINK_BEGIN" />Chrome ayarları<ph name="LINK_END" /> bölməsinə keçin.</translation> <translation id="1246905108078336582">Təklif mübadilə buferindən silinsin?</translation> -<translation id="1249643471736608405">İstifadə vaxtının bitməsinə görə <ph name="PLUGIN_NAME" /> blok edildi</translation> <translation id="1251366534849411931">Sol fiqurlu mötərizə gözlənilir: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Bununla saytlar və quraşdırılmış tətbiqlər tərəfindən saxlanılan <ph name="TOTAL_USAGE" /> data silinəcək</translation> <translation id="125220115284141797">Defolt</translation> @@ -277,7 +276,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Ev şəbəkəsidir, rominq deyil</translation> <translation id="1315056510003830387">Fləşdən istifadə etmək icazəsi verilməyib</translation> -<translation id="1315144594965013365">Hər iki cihazın kiliddən çıxarılmış, bir-birinə yaxın və Bluetooth'un aktiv olmasına əmin olun. Chromebook ilə paylaşırsınızsa, Yaxınlıqda Paylaşımın aktiv olduğuna əmin olun (vaxtı seçərək status sahəsini açın, sonra Yaxınlıqda Paylaşımı seçin).</translation> <translation id="1316136264406804862">Axtarılır...</translation> <translation id="1316495628809031177">Sinxronizasiya dayandırıldı</translation> <translation id="1317637799698924700">Dok stansiyası USB Type-C üçün uyğun rejimdə işləyəcək.</translation> @@ -1033,7 +1031,6 @@ <translation id="2178614541317717477">Sertifikat Doğrulaması Kompromisi</translation> <translation id="2182058453334755893">Buferə kopyalandı</translation> <translation id="2184515124301515068">Saytların avtomatik oxutma vaxtını Chrome'un seçməsinə icazə verin (məsləhətlidir)</translation> -<translation id="2187243482123994665">İstifadəçinin evdə olması</translation> <translation id="2187675480456493911">Hesabınızdakı digər cihazlarla sinxronlaşdırılıb. Digər istifadəçilər tərəfindən dəyişdirilən ayarlar sinxronlaşdırılmayacaq. <ph name="LINK_BEGIN" />Ətraflı məlumat<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Server Sertifikatını İmport Xətası</translation> <translation id="2187906491731510095">Artırmalar yeniləndi</translation> @@ -2698,7 +2695,6 @@ <translation id="4104163789986725820">Eksport...</translation> <translation id="4107048419833779140">Yaddaş cihazları müəyyən edin və boşaldın</translation> <translation id="4109135793348361820">Pəncərəni <ph name="USER_NAME" /> istifadəçisinə daşıyın (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Altyazı ölçüsünü və üslubunu bu ayarı dəstəkləyən tətbiqlər üçün fərdiləşdirin</translation> <translation id="4110490973560452005">Endirmə tamamlandı: <ph name="FILE_NAME" />. Endirmələr panelinə keçmək üçün Shift+F6 düymələrinə basın.</translation> <translation id="4110686435123617899"><ph name="TITLE" /> <ph name="DESC" /> albomunu seçin</translation> <translation id="4110895898888439383">Yüksək kontrast rejimində vebdə axtarış edin</translation> @@ -2911,7 +2907,6 @@ <translation id="4400632832271803360">Üst sıradakı düymələrin funksiyasını dəyişmək üçün Başladıcı düyməsini basıb saxlayın</translation> <translation id="4400963414856942668">Ulduza klikləyərək tabı əlfəcinlərə əlavə edə bilərsiniz</translation> <translation id="4403775189117163360">Başqa qovluq seçin</translation> -<translation id="440391631796167175">Zəif parol tapılmadı</translation> <translation id="4404136731284211429">Yenidən skanlayın</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> valideyniniz tərəfindən bloklanıb. Bu tətbiqdən istifadə etmək üçün valideyninizdən icazə istəyin.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4450,8 +4445,6 @@ <translation id="6242852299490624841">Bu tabı mərkəzə gətirin</translation> <translation id="6243280677745499710">Hazırda ayarlanıb</translation> <translation id="6243774244933267674">Server əlçatan deyil</translation> -<translation id="6244185221716469155">Zəif parolları tapmaq asandır. Güclü parol yaratdığınıza ə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="6244245036423700521">ONC Faylı idxal edin</translation> <translation id="6246790815526961700">Cihazdan yükləyin</translation> <translation id="6247620186971210352">Tətbiq tapılmadı</translation> @@ -6197,6 +6190,7 @@ <translation id="8281886186245836920">Keçin</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" cihazına qoşularkən doğrulama rədd edildi.</translation> <translation id="8284279544186306258">bütün <ph name="WEBSITE_1" /> saytları</translation> +<translation id="8284326494547611709">Başlıqlar</translation> <translation id="8286036467436129157">Giriş</translation> <translation id="8286963743045814739">Gizli pəncərə ilə məxfi axtarış edə bilərsiniz</translation> <translation id="8287902281644548111">API zəngi/Link tərəfindən Axtarış</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb index 80eaf67..702d9e2 100644 --- a/chrome/app/resources/generated_resources_be.xtb +++ b/chrome/app/resources/generated_resources_be.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Памылка пашырэння</translation> <translation id="1246158006305844142">Праграмы і налады будуць сінхранізавацца на ўсіх прыладах Chrome OS, з якіх вы ўвайшлі ва Уліковы запіс Google. Параметры сінхранізацыі браўзера можна выбраць у <ph name="LINK_BEGIN" />наладах Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Выдаліць прапанову з буфера абмену?</translation> -<translation id="1249643471736608405">Убудова "<ph name="PLUGIN_NAME" />" заблакіравана, бо яна састарэлая</translation> <translation id="1251366534849411931">Чакалася пачатковая фігурная дужка: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Будуць выдалены даныя (<ph name="TOTAL_USAGE" />), захаваныя сайтамі і ўсталяванымі імі праграмамі</translation> <translation id="125220115284141797">Стандартныя</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Хатняя сетка, не ў роўмінгу</translation> <translation id="1315056510003830387">Не дазволена выкарыстоўваць Flash</translation> -<translation id="1315144594965013365">Упэўніцеся, што абедзве прылады разблакіраваны, знаходзяцца адна пры адной і на іх уключаны Bluetooth. Пры абагульванні з дапамогай Chromebook упэўніцеся, што ўключана функцыя "Абагульванне паблізу" (адкрыйце панэль стану, націснуўшы на гадзіннік, і выберыце "Абагульванне паблізу").</translation> <translation id="1316136264406804862">Ідзе пошук...</translation> <translation id="1316495628809031177">Сінхранізацыя прыпынена</translation> <translation id="1317637799698924700">Док-станцыя будзе працаваць у рэжыме, сумяшчальным з USB Type-C.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Кампраметацыя ЦС</translation> <translation id="2182058453334755893">Скапіравана ў буфер абмену</translation> <translation id="2184515124301515068">Дазволіць браўзеру Chrome вызначаць, калі сайты могуць прайграваць гук (рэкамендуецца)</translation> -<translation id="2187243482123994665">Прысутнасць карыстальніка</translation> <translation id="2187675480456493911">Сінхранізавана з іншымі прыладамі ў вашым уліковым запісе. Налады, змененыя іншымі карыстальнікамі, не будуць сінхранізавацца. <ph name="LINK_BEGIN" />Даведацца больш<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Памылка імпарту сертыфіката сервера</translation> <translation id="2187906491731510095">Пашырэнні абноўлены</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">Ідзе э&кспарт...</translation> <translation id="4107048419833779140">Вызначыць і выдаліць прылады сховішча</translation> <translation id="4109135793348361820">Перамясціць акно карыстальніку <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Наладжванне памеру і стылю субцітраў для праграм, якія падтрымліваюць гэту наладу</translation> <translation id="4110490973560452005">Спампоўванне завершана: "<ph name="FILE_NAME" />". Каб перамяшчацца па панэлі спамповак, націскайце Shift+F6.</translation> <translation id="4110686435123617899">Выберыце альбом "<ph name="TITLE" />" (<ph name="DESC" />)</translation> <translation id="4110895898888439383">Прагляд вэб-сайтаў у рэжыме высокай кантраснасці</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Утрымлівайце клавішу запуску, каб змяніць значэнні клавіш верхняга рада</translation> <translation id="4400963414856942668">Каб дадаць укладку ў закладкі, націсніце на зорку</translation> <translation id="4403775189117163360">Выбраць іншую папку</translation> -<translation id="440391631796167175">Ненадзейныя паролі не знойдзены</translation> <translation id="4404136731284211429">Паўтарыць праверку</translation> <translation id="4404843640767531781">Бацькі заблакіравалі праграму "<ph name="APP_NAME" />" – запытайце ў іх дазвол на яе выкарыстанне.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">Перайсці на гэту ўкладку</translation> <translation id="6243280677745499710">Цяпер зададзеныя</translation> <translation id="6243774244933267674">Сервер недаступны</translation> -<translation id="6244185221716469155">Ненадзейныя паролі лёгка адгадаць. Выкарыстоўвайце толькі надзейныя паролі. - <ph name="BEGIN_LINK" />Праглядзець іншыя парады па бяспецы.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Імпартаваць файл ONC</translation> <translation id="6246790815526961700">Запампаваць з прылады</translation> <translation id="6247620186971210352">Праграмы не знойдзены</translation> @@ -6207,6 +6200,7 @@ <translation id="8281886186245836920">Прапусціць</translation> <translation id="8283475148136688298">Пры падключэнні да прылады "<ph name="DEVICE_NAME" />" код аўтэнтыфікацыі быў адхілены.</translation> <translation id="8284279544186306258">усе сайты <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Субцітры</translation> <translation id="8286036467436129157">Увайсці</translation> <translation id="8286963743045814739">Прыватны прагляд вэб-старонак магчымы ў акне ў рэжыме інкогніта</translation> <translation id="8287902281644548111">Пошук па URL-адрасе або выкліку API</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index ada7c0a..b9e134b 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Грешка в разширението</translation> <translation id="1246158006305844142">Приложенията и настройките ви ще се синхронизират с всички устройства с Chrome OS, в които сте влезли в профила си в Google. За да намерите опциите за синхронизиране на браузъра, отворете <ph name="LINK_BEGIN" />настройките на Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Искате ли да премахнете предложението от буферната памет?</translation> -<translation id="1249643471736608405">Приставката <ph name="PLUGIN_NAME" /> бе блокирана, тъй като е оттеглена</translation> <translation id="1251366534849411931">Очаква се отваряща фигурна скоба: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Съхраняваните от сайтовете и инсталираните приложения данни в размер на <ph name="TOTAL_USAGE" /> ще бъдат изчистени</translation> <translation id="125220115284141797">По подразбиране</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN за Android</translation> <translation id="131461803491198646">Собствената мрежа, не роуминг</translation> <translation id="1315056510003830387">Сайтове без разрешение за използване на Flash</translation> -<translation id="1315144594965013365">Уверете се, че двете устройства са отключени и са близо едно до друго, както и че функцията за Bluetooth е включена. Ако споделяте с Chromebook, не забравяйте да включите „Споделяне наблизо“ (отворете лентата на състоянието, като изберете часа, след което докоснете „Споделяне наблизо“).</translation> <translation id="1316136264406804862">Търси се...</translation> <translation id="1316495628809031177">Синхронизирането е на пауза</translation> <translation id="1317637799698924700">Докинг станцията ви ще функционира в режим за съвместимост с USB Type-C.</translation> @@ -869,6 +867,7 @@ <translation id="1976307821760494606"><ph name="DOMAIN" /> деактивира отстраняването на грешки през ADB. Това действие ще нулира устройството ви <ph name="DEVICE_TYPE" /> след 24 часа. Създайте резервно копие на файловете, които искате да запазите.</translation> <translation id="1977965994116744507">За да отключите своя <ph name="DEVICE_TYPE" />, приближете телефона си до него.</translation> <translation id="1978006917103730774">Бъдещите актуализации на софтуера и тези за сигурност ще се инсталират автоматично.</translation> +<translation id="1978057560491495741">Премахване на адреса</translation> <translation id="1979095679518582070">Изключването на тази функция няма да засегне възможността на устройството да изпраща информацията, необходима за получаването на основни услуги, като системни актуализации и подобрения в сигурността.</translation> <translation id="1979280758666859181">Преминавате към канал с по-стара версия на <ph name="PRODUCT_NAME" />. Промяната на канала ще се приложи, когато версията в него вече съответства на инсталираната понастоящем на устройството ви.</translation> <translation id="197989455406964291">Типът шифроване не се поддържа от KDC</translation> @@ -1034,7 +1033,6 @@ <translation id="2178614541317717477">Компрометиране на сертифициращия орган</translation> <translation id="2182058453334755893">Копирано в буферната памет</translation> <translation id="2184515124301515068">Нека Chrome избира кога сайтовете да могат да възпроизвеждат звук (препоръчително)</translation> -<translation id="2187243482123994665">Присъствие на потребителя</translation> <translation id="2187675480456493911">Мрежата е синхронизирана с другите устройства в профила ви. Настройките, променени от други потребители, няма да се синхронизират. <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Грешка при импортирането на сертификат на сървър</translation> <translation id="2187906491731510095">Разширенията бяха актуализирани</translation> @@ -1071,6 +1069,7 @@ <translation id="2224444042887712269">Тази настройка принадлежи на <ph name="OWNER_EMAIL" />.</translation> <translation id="2224551243087462610">Редактиране на името на папката</translation> <translation id="2225864335125757863">Променете следните пароли незабавно, за да остане профилът ви в безопасност:</translation> +<translation id="2226204716217107988">Да се превключи ли към друг потребителски профил?</translation> <translation id="2226449515541314767">Пълният контрол над MIDI устройствата е блокиран за този сайт.</translation> <translation id="2226907662744526012">Автоматично отключване след въвеждане на ПИН код</translation> <translation id="222704500187107962">Това изключение ще бъде премахнато автоматично, когато прекратите текущата сесия в режим „инкогнито“</translation> @@ -1140,6 +1139,7 @@ <translation id="2307462900900812319">Конфигуриране на мрежата</translation> <translation id="230927227160767054">Тази страница иска да инсталира манипулатор на услуги.</translation> <translation id="2309620859903500144">Достъпът на този сайт до сензорите ви за движение или светлина е блокиран.</translation> +<translation id="2312219318583366810">URL адрес на страницата</translation> <translation id="2314165183524574721">Текущата настройка за видимост е „Скрито“</translation> <translation id="2314774579020744484">Език, който се използва при превод на страници</translation> <translation id="2315414688463285945">При конфигурирането на файловете за Linux възникна грешка. Моля, опитайте отново.</translation> @@ -2344,6 +2344,7 @@ <translation id="3713047097299026954">В този ключ за сигурност няма данни за вход</translation> <translation id="3714195043138862580">Обезпечаването на това демонстрационно устройство е отменено.</translation> <translation id="3714633008798122362">уеб календар</translation> +<translation id="3715954932774762075">Приложенията и уебсайтовете, които се предлагат на няколко езика, ще използват първия поддържан от този списък. Тези предпочитания се синхронизират с настройките на браузъра. <ph name="BEGIN_LINK_LEARN_MORE" />Научете повече<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">Начална страница</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">Вие и Google</translation> @@ -2505,6 +2506,7 @@ <translation id="3882165008614329320">Съществуващ видеоклип от камерата или от файл</translation> <translation id="3886446263141354045">Заявката ви за достъп до този сайт бе изпратена до <ph name="NAME" /></translation> <translation id="3888550877729210209">Водене на бележки с/ъс <ph name="LOCK_SCREEN_APP_NAME" /></translation> +<translation id="3890064827463908288">Включете синхронизирането в Chrome, за да използвате синхронизирането на Wi-Fi</translation> <translation id="3892414795099177503">Добавяне на OpenVPN/L2TP...</translation> <translation id="3893536212201235195">Да чете и променя настройките ви за достъпност</translation> <translation id="3893630138897523026">ChromeVox (обратна връзка с говор)</translation> @@ -2704,7 +2706,6 @@ <translation id="4104163789986725820">Екс&портиране...</translation> <translation id="4107048419833779140">Идентифициране и изваждане на устройства за съхранение</translation> <translation id="4109135793348361820">Преместване на прозореца към <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Персонализиране на размера и стила на надписите за приложенията, които поддържат тази настройка</translation> <translation id="4110490973560452005">Изтеглянето завърши: <ph name="FILE_NAME" />. Натиснете Shift + F6, за да преминете към лентата на изтеглянето.</translation> <translation id="4110686435123617899">Избиране на албум <ph name="TITLE" />, <ph name="DESC" /></translation> <translation id="4110895898888439383">Сърфирайте в мрежата в режим на повишена четливост</translation> @@ -2917,7 +2918,6 @@ <translation id="4400632832271803360">Натиснете и задръжте клавиша за стартовия панел, за да промените поведението на клавишите от най-горния ред.</translation> <translation id="4400963414856942668">Можете да кликнете върху иконата на звезда, за да запазите отметка към раздел</translation> <translation id="4403775189117163360">Избиране на друга папка</translation> -<translation id="440391631796167175">Няма открити ненадеждни пароли</translation> <translation id="4404136731284211429">Повторно сканиране</translation> <translation id="4404843640767531781">Приложението <ph name="APP_NAME" /> е блокирано от родителя ви. Поискайте от него разрешение да използвате приложението.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -3778,6 +3778,7 @@ <translation id="5449588825071916739">Запазване на отметки към всички раздели</translation> <translation id="5449716055534515760">Затваряне на &прозореца</translation> <translation id="5452974209916053028">Текущата сесия в режим „инкогнито“: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />, <ph name="RECENT_PERMISSIONS_CHANGE_1" />, <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">Балончето с надписа бе преместено до <ph name="POSITION_ON_SCREEN_FROM_LEFT" />% по хоризонтала и до <ph name="POSITION_ON_SCREEN_FROM_TOP" />% надолу</translation> <translation id="5454166040603940656">с/ъс <ph name="PROVIDER" /></translation> <translation id="5457113250005438886">Невалидно</translation> <translation id="5457459357461771897">Четене и изтриване на снимки, музика и друга мултимедия от компютъра ви</translation> @@ -3921,6 +3922,7 @@ <translation id="5602765853043467355">Изчистване на отметките, историята, паролите и др. от това устройство</translation> <translation id="5605623530403479164">Други търсещи машини</translation> <translation id="5605758115928394442">На телефона ви бе изпратено известие, за да потвърдите, че това сте вие.</translation> +<translation id="560834977503641186">Синхронизиране на Wi-Fi, научете повече</translation> <translation id="5608580678041221894">Докоснете следните клавиши, за да коригирате или преместите областта за подрязване</translation> <translation id="5609231933459083978">Изглежда, че приложението е невалидно.</translation> <translation id="5610038042047936818">Превключване към режима за фотоапарат</translation> @@ -4112,6 +4114,7 @@ <translation id="5841270259333717135">Конфигуриране на Ethernet</translation> <translation id="5842497610951477805">Активиране на Bluetooth</translation> <translation id="5843706793424741864">Фаренхайт</translation> +<translation id="584451707753263735">Показват се надписи на живо. Натиснете F6, за да преместите фокуса</translation> <translation id="5844574845205796324">Предлагане на ново съдържание за разглеждане</translation> <translation id="5846200638699387931">Синтактична грешка в релацията: <ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">Инсталиране на актуализации и приложения. С продължаването си приемате, че това устройство може също автоматично да изтегля и инсталира актуализации и приложения от Google, оператора ви и производителя си, при което е възможно да използва мобилни данни. В някои от тези приложения може да се предлагат покупки.</translation> @@ -4459,8 +4462,6 @@ <translation id="6242852299490624841">Фокус върху този раздел</translation> <translation id="6243280677745499710">Зададено понастоящем</translation> <translation id="6243774244933267674">Няма достъп до сървъра</translation> -<translation id="6244185221716469155">Ненадеждните пароли са лесни за отгатване. Уверете се, че създаваните от вас са надеждни. - <ph name="BEGIN_LINK" />Вижте още съвети за сигурност<ph name="END_LINK" />.</translation> <translation id="6244245036423700521">Импортиране на ONC файл</translation> <translation id="6246790815526961700">Качване от устройството</translation> <translation id="6247620186971210352">Няма намерени приложения</translation> @@ -5368,6 +5369,7 @@ <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> сега е на цял екран.</translation> <translation id="7340650977506865820">Сайтът споделя екрана ви</translation> <translation id="7341834142292923918">Иска достъп до този сайт</translation> +<translation id="7343372807593926528">Моля, опишете проблема, преди да изпратите отзивите</translation> <translation id="7345706641791090287">Потвърждаване на паролата</translation> <translation id="7346909386216857016">Добре, разбрах</translation> <translation id="7347452120014970266">Всички данни и „бисквитки“, съхранявани от <ph name="ORIGIN_NAME" /> и инсталираните приложения, ще бъдат изчистени</translation> @@ -5784,6 +5786,7 @@ <translation id="7819857487979277519">PSK (WPA или RSN)</translation> <translation id="7819992334107904369">Синхронизиране в Chrome</translation> <translation id="782057141565633384">К&опиране на адреса на видеоклипа</translation> +<translation id="7822187537422052256">Наистина ли искате да премахнете този адрес?</translation> <translation id="7824864914877854148">Създаването на резервно копие не можа да завърши поради грешка</translation> <translation id="7825666486843191125">Всички контакти в района, когато екранът ви е отключен</translation> <translation id="782590969421016895">Използване на текущите страници</translation> @@ -6208,6 +6211,7 @@ <translation id="8281886186245836920">Пропускане</translation> <translation id="8283475148136688298">Кодът за удостоверяване бе отхвърлен при установяването на връзка с/ъс <ph name="DEVICE_NAME" />.</translation> <translation id="8284279544186306258">всички <ph name="WEBSITE_1" /> сайта</translation> +<translation id="8284326494547611709">Надписи</translation> <translation id="8286036467436129157">Вход</translation> <translation id="8286963743045814739">Можете да сърфирате частно посредством прозорец в режим „инкогнито“</translation> <translation id="8287902281644548111">Търсене по извикване на API/по URL адрес</translation> @@ -6309,6 +6313,7 @@ <translation id="8419098111404128271">Резултати от търсенето на „<ph name="SEARCH_TEXT" />“</translation> <translation id="8419368276599091549">Добре дошли в устройството си <ph name="DEVICE_TYPE" />!</translation> <translation id="8420308167132684745">Редактиране на записите в речника</translation> +<translation id="8421361468937925547">Надписи на живо (само на английски)</translation> <translation id="8422787418163030046">Липсваща тава</translation> <translation id="8425213833346101688">Промяна</translation> <translation id="8425492902634685834">Фиксиране в лентата на задачите</translation> @@ -6337,6 +6342,7 @@ <translation id="8449036207308062757">Управление на хранилището</translation> <translation id="8452135315243592079">SIM картата липсва</translation> <translation id="8455026683977728932">Илюстрация за неуспешно активиране на ADB</translation> +<translation id="8456398879271637452">Показват се надписи на живо. Натиснете Ctrl + бутона за връщане назад или Ctrl + бутона за преминаване напред, за да преместите фокуса</translation> <translation id="845702320058262034">Не може да бъде установена връзка. Уверете се, че функцията за Bluetooth на телефона ви е включена.</translation> <translation id="8457451314607652708">Импортиране на отметки</translation> <translation id="8458627787104127436">Отваряне на всички (<ph name="URL_COUNT" />) в нов прозорец</translation> @@ -6847,6 +6853,7 @@ <translation id="9027459031423301635">Отваряне на връзката в нов &раздел</translation> <translation id="9030515284705930323">Организацията ви не е активирала Google Play Магазин за профила ви. Свържете се с администратора си за повече информация.</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269">Приставката „<ph name="PLUGIN_NAME" />“ вече не се поддържа</translation> <translation id="9031549947500880805">Създаване на резервно копие в Google Диск. По всяко време можете лесно да възстановите данните на устройството си или да го замените с друго. Резервното ви копие включва данните от приложенията.</translation> <translation id="9033765790910064284">Напред въпреки това</translation> <translation id="9033857511263905942">&Поставяне</translation> @@ -6855,6 +6862,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{Остава ви един опит.}other{Остават ви # опита.}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571">Да се актуализира ли паролата за <ph name="ORIGIN" />?</translation> +<translation id="9041049756004505730">Показват се надписи на живо. Натиснете ⌘ + Option + стрелка нагоре или стрелка надолу, за да преместите фокуса</translation> <translation id="9041692268811217999">Достъпът до локални файлове на компютъра ви е деактивиран от администратора ви</translation> <translation id="904224458472510106">Това действие не може да бъде отменено</translation> <translation id="9042893549633094279">Поверителност и сигурност</translation> @@ -6893,6 +6901,7 @@ <translation id="9088446193279799727">Конфигурирането на Linux не бе успешно. Свържете се с интернет и опитайте отново.</translation> <translation id="9088917181875854783">Моля, потвърдете, че този ключ за достъп се показва на „<ph name="DEVICE_NAME" />“:</translation> <translation id="9089416786594320554">Метод за въвеждане</translation> +<translation id="909108997331068008">Потребителският профил на <ph name="EXISTING_USER" /> вече се ползва с(ъс) <ph name="NEW_USER" /></translation> <translation id="9093429538970210897">Препоръчваме да създадете резервно копие на файловете, в случай че надстройването не може да завърши успешно. Linux (бета) ще се изключи при стартиране на надстройването. Преди да продължите, запазете отворените файлове.</translation> <translation id="9094033019050270033">Актуализиране на паролата</translation> <translation id="9094038138851891550">Потребителското име е невалидно</translation> @@ -7066,5 +7075,6 @@ <translation id="994289308992179865">Цикъ&л</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">Установява се защитена връзка...</translation> +<translation id="99731366405731005">Включете <ph name="LINK1_BEGIN" />синхронизирането в Chrome<ph name="LINK1_END" />, за да използвате синхронизирането на Wi-Fi <ph name="LINK2_BEGIN" />Научете повече<ph name="LINK2_END" /></translation> <translation id="998747458861718449">И&нспектиране</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index 1865c7a..74522f33 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">এক্সটেনশন সমস্যা</translation> <translation id="1246158006305844142">আপনার Google অ্যাকাউন্ট দিয়ে সাইন-ইন করা সমস্ত Chrome OS ডিভাইসে আপনার অ্যাপ এবং সেটিংস সিঙ্ক হয়ে যাবে। ব্রাউজারে উপলভ্য সিঙ্ক করার বিকল্পটির জন্য, <ph name="LINK_BEGIN" />Chrome সেটিংসে যান<ph name="LINK_END" />।</translation> <translation id="1246905108078336582">ক্লিপবোর্ড থেকে সাজেশন সরাতে চান?</translation> -<translation id="1249643471736608405">বন্ধ করে দেওয়া হয়েছে বলে <ph name="PLUGIN_NAME" /> ব্লক করা হয়েছে</translation> <translation id="1251366534849411931">প্রত্যাশিত শুরুর সেকেন্ড ব্র্যাকেট: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">এর ফলে সাইট ও ইনস্টল করা অ্যাপগুলির স্টোর করা <ph name="TOTAL_USAGE" /> ডেটা মুছে যাবে</translation> <translation id="125220115284141797">ডিফল্ট</translation> @@ -278,7 +277,6 @@ <translation id="1313705515580255288">আপনার বুকমার্ক, ইতিহাস এবং অন্যান্য সেটিংস আপনার Google অ্যাকাউন্টে সিঙ্ক হবে৷</translation> <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">হোম নেটওয়ার্ক, রোমিং নয়</translation> -<translation id="1315144594965013365">এটি নিশ্চিত করুন যেন উভয় ডিভাইস আনলক থাকে ও পরস্পরের কাছাকাছি থাকে, তার সাথে যেন ব্লুটুথও চালু করা থাকে। যদি আপনি কোনও Chromebook-এর সাথে শেয়ার করেন, তাহলে নিশ্চিত করে নিন সেই ডিভাইসে 'নিয়ারবাই শেয়ার' ফিচার যেন চালু করা থাকে (সময় বেছে নিয়ে 'স্ট্যাটাস এরিয়া' বিকল্প খুলুন, তারপরে 'নিয়ারবাই শেয়ার' ফিচার বেছে নিন)।</translation> <translation id="1316136264406804862">সার্চ করা হচ্ছে...</translation> <translation id="1316495628809031177">সিঙ্ক থামানো হয়েছে</translation> <translation id="1317637799698924700">ইউএসবি টাইপ-সির সাথে মানানসই মোডে আপনার ডকিং স্টেশন কাজ করবে।</translation> @@ -1028,7 +1026,6 @@ <translation id="2178614541317717477">CA আপোস</translation> <translation id="2182058453334755893">আপনার ক্লিপবোর্ডে কপি করা হয়েছে</translation> <translation id="2184515124301515068">সাইটটি কখন সাউন্ড চালাতে পারবে তা Chrome-কে বেছে নিতে দিন (প্রস্তাবিত)</translation> -<translation id="2187243482123994665">ব্যবহারকারীর উপস্থিতি</translation> <translation id="2187675480456493911">আপনার অ্যাকাউন্টের অন্যান্য ডিভাইসের সাথে সিঙ্ক করা হয়েছে। অন্য ব্যবহারকারীদের পরিবর্তন করা সেটিংস সিঙ্ক করা হবে না। <ph name="LINK_BEGIN" />আরও জানুন<ph name="LINK_END" /></translation> <translation id="2187895286714876935">সার্ভার সার্টিফিকেট আমদানি করতে সমস্যা</translation> <translation id="2187906491731510095">এক্সটেনশনগুলি আপডেট করা হয়েছে</translation> @@ -2680,7 +2677,6 @@ <translation id="4104163789986725820">র&প্তানি...</translation> <translation id="4107048419833779140">স্টোরেজ ডিভাইসগুলি শনাক্ত করে সরিয়ে দিন</translation> <translation id="4109135793348361820"><ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) এ উইন্ডো সরান</translation> -<translation id="411031910327788420">এই সেটিং কাজ করে এমন অ্যাপের জন্য ক্যাপশনের সাইজ এবং স্টাইল কাস্টমাইজ করুন</translation> <translation id="4110490973560452005">ডাউনলোড হয়ে গেছে: <ph name="FILE_NAME" />। Shift+F6 প্রেস করে ডাউনলোড বার এরিয়াতে যান।</translation> <translation id="4110686435123617899"><ph name="TITLE" /> <ph name="DESC" /> অ্যালবাম বেছে নিন</translation> <translation id="4110895898888439383">উচ্চ কনট্রাস্ট মোডে ওয়েব ব্রাউজ করুন</translation> @@ -4420,8 +4416,6 @@ <translation id="6242852299490624841">এই ট্যাবে ফোকাস করুন</translation> <translation id="6243280677745499710">বর্তমানে সেট করা রয়েছে</translation> <translation id="6243774244933267674">সার্ভার অনুপলব্ধ</translation> -<translation id="6244185221716469155">দুর্বল পাসওয়ার্ড সহজেই অনুমান করা যায়। আপনি শক্তিশালী পাসওয়ার্ড তৈরি করছেন কিনা তা ভাল করে দেখে নিন। - <ph name="BEGIN_LINK" />নিরাপত্তা সংক্রান্ত আরও পরামর্শ দেখুন।<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC ফাইল ইমপোর্ট করুন</translation> <translation id="6246790815526961700">ডিভাইস থেকে আপলোড করুন</translation> <translation id="6247620186971210352">কোনও অ্যাপ পাওয়া যায়নি</translation> @@ -6146,6 +6140,7 @@ <translation id="8281886186245836920">ছেড়ে যান</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" এর সাথে কানেক্ট করার সময়ে যাচাইকরণ কোড বাতিল করা হয়েছে৷</translation> <translation id="8284279544186306258">সব <ph name="WEBSITE_1" /> সাইট</translation> +<translation id="8284326494547611709">পরিচয়লিপিগুলি</translation> <translation id="8286036467436129157">সাইন-ইন করুন</translation> <translation id="8286963743045814739">আপনি ছদ্মবেশী উইন্ডো ব্যবহার করে গোপনে ব্রাউজ করতে পারেন</translation> <translation id="8287902281644548111">এপিআই কল/ইউআরএল অনুযায়ী সার্চ করুন</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index 4ec8102a..d91d3a57 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Greška ekstenzije</translation> <translation id="1246158006305844142">Vaše aplikacije i postavke će se sinhronizirati na svim Chrome OS uređajima na kojima ste prijavljeni putem Google računa. Za opcije sinhronizacije preglednika, idite na <ph name="LINK_BEGIN" />postavke Chromea<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Ukloniti prijedlog iz međumemorije?</translation> -<translation id="1249643471736608405">Dodatak <ph name="PLUGIN_NAME" /> je blokiran jer je zastario</translation> <translation id="1251366534849411931">Očekivana početna vitičasta zagrada: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Ovim će se obrisati <ph name="TOTAL_USAGE" /> podataka koje su pohranile web lokacije i instalirane aplikacije</translation> <translation id="125220115284141797">Zadano</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Matična mreža, bez roaminga</translation> <translation id="1315056510003830387">Nije dozvoljeno korištenje Flasha</translation> -<translation id="1315144594965013365">Provjerite jesu li oba uređaja otključana, jedan blizu drugoga i je li na njima uključen Bluetooth. Ako dijelite s Chromebookom, provjerite je li na njemu uključeno Dijeljenje u blizini (odaberite vrijeme da otvorite područje statusa, a zatim odaberite Dijeljenje u blizini).</translation> <translation id="1316136264406804862">Pretraživanje…</translation> <translation id="1316495628809031177">Sinhronizacija je pauzirana</translation> <translation id="1317637799698924700">Priključna stanica će funkcinirati u načinu koji je kompatibilan s priključkom USB tipa C.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA je kompromitiran</translation> <translation id="2182058453334755893">Kopirano u međumemoriju</translation> <translation id="2184515124301515068">Dozvolite da Chrome odabere kada web lokacije mogu reproducirati zvuk (preporučeno)</translation> -<translation id="2187243482123994665">Prisutnost korisnika</translation> <translation id="2187675480456493911">Mreža je sinhronizirana s drugim uređajima na vašem računu. Postavke koje drugi korisnici mijenjaju se neće sinhronizirati. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Greška pri uvozu potvrde za server</translation> <translation id="2187906491731510095">Ekstenzije su ažurirane</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">I&zvezi...</translation> <translation id="4107048419833779140">Prepoznavanje i isključivanje uređaja za pohranu</translation> <translation id="4109135793348361820">Premjesti prozor korisniku <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Prilagodite veličinu i stil titla za aplikacije koje podržavaju ovu postavku</translation> <translation id="4110490973560452005">Preuzimanje je završeno. <ph name="FILE_NAME" />. Pritisnite Shift + F6 da odete u oblast trake preuzetih fajlova.</translation> <translation id="4110686435123617899">Odaberite album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Pregledajte web u načinu rada za visoki kontrast</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">Držite tipku Pokretač da promijenite ponašanje tipki u gornjem redu</translation> <translation id="4400963414856942668">Možete kliknuti na zvjezdicu da označite karticu</translation> <translation id="4403775189117163360">Odaberi drugi folder</translation> -<translation id="440391631796167175">Nije pronađena nijedna slaba lozinka</translation> <translation id="4404136731284211429">Ponovo skeniraj</translation> <translation id="4404843640767531781">Tvoj roditelj je blokirao aplikaciju <ph name="APP_NAME" />. Traži od roditelja odobrenje da koristiš ovu aplikaciju.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4467,8 +4462,6 @@ <translation id="6242852299490624841">Fokusiraj ovu karticu</translation> <translation id="6243280677745499710">Trenutačno postavljeno</translation> <translation id="6243774244933267674">Server je nedostupan</translation> -<translation id="6244185221716469155">Slabe lozinke je lako pogoditi. Vodite računa da kreirate jake lozinke. - <ph name="BEGIN_LINK" />Pogledajte još sigurnosnih savjeta.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Uvezi ONC fajl</translation> <translation id="6246790815526961700">Otpremi s uređaja</translation> <translation id="6247620186971210352">Nije pronađena nijedna aplikacija</translation> @@ -6218,6 +6211,7 @@ <translation id="8281886186245836920">Preskoči</translation> <translation id="8283475148136688298">Kôd za autentifikaciju je odbijen za vrijeme povezivanja s uređajem "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">sve web lokacije <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Titlovi</translation> <translation id="8286036467436129157">Prijava</translation> <translation id="8286963743045814739">Možete pregledati privatno koristeći anonimni prozor</translation> <translation id="8287902281644548111">Pretražujte prema API pozivu/URL-u</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index 8cd3ff3..d1016d9 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Error d'extensió</translation> <translation id="1246158006305844142">Les teves aplicacions i opcions de configuració se sincronitzaran en tots els dispositius amb Chrome OS en què hagis iniciat la sessió amb el teu Compte de Google. Per accedir a les opcions de sincronització del navegador, ves a la <ph name="LINK_BEGIN" />configuració de Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Vols suprimir el suggeriment del porta-retalls?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> s'ha bloquejat perquè està obsolet</translation> <translation id="1251366534849411931">Hi ha d'haver una clau d'obertura: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Amb aquesta acció s'esborraran dades emmagatzemades pels llocs web i per les aplicacions instal·lades (<ph name="TOTAL_USAGE" />)</translation> <translation id="125220115284141797">Predeterminats</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN d'Android</translation> <translation id="131461803491198646">Xarxa domèstica, no itinerància</translation> <translation id="1315056510003830387">Sense permís per utilitzar Flash</translation> -<translation id="1315144594965013365">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, comprova que tingui la funció Compartició Nearby activada (obre l'àrea d'estat seleccionant l'hora i, a continuació, selecciona Compartició Nearby).</translation> <translation id="1316136264406804862">S'està cercant...</translation> <translation id="1316495628809031177">La sincronització està en pausa</translation> <translation id="1317637799698924700">La base de connexió funcionarà en un mode compatible amb els connectors USB tipus C.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">Compromís de CA</translation> <translation id="2182058453334755893">S'ha copiat al porta-retalls</translation> <translation id="2184515124301515068">Deixa que Chrome triï quan poden reproduir so els llocs web (opció recomanada)</translation> -<translation id="2187243482123994665">Presència de l'usuari</translation> <translation id="2187675480456493911">Està sincronitzada amb altres dispositius del teu compte. Les opcions de configuració que modifiquin altres usuaris no se sincronitzaran. <ph name="LINK_BEGIN" />Més informació<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Error d'importació del certificat del servidor</translation> <translation id="2187906491731510095">S'han actualitzat les extensions</translation> @@ -2708,7 +2705,6 @@ <translation id="4104163789986725820">E&xporta...</translation> <translation id="4107048419833779140">Identificar i expulsar els dispositius d'emmagatzematge</translation> <translation id="4109135793348361820">Mou la finestra a <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Personalitza la mida i l'estil dels subtítols per a aplicacions compatibles amb aquesta opció de configuració</translation> <translation id="4110490973560452005">S'ha completat la baixada: <ph name="FILE_NAME" />. Prem Maj+F6 per anar a l'àrea de la barra de baixades.</translation> <translation id="4110686435123617899">Selecciona l'àlbum <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Navega per Internet en mode d'alt contrast</translation> @@ -2921,7 +2917,6 @@ <translation id="4400632832271803360">Mantén premuda la tecla del menú d'aplicacions per canviar el comportament de les tecles de la fila superior</translation> <translation id="4400963414856942668">Pots fer clic a l'estrella per afegir una pestanya a les adreces d'interès</translation> <translation id="4403775189117163360">Tria una altra carpeta</translation> -<translation id="440391631796167175">No s'ha trobat cap contrasenya poc segura</translation> <translation id="4404136731284211429">Torna a analitzar</translation> <translation id="4404843640767531781">El teu pare o la teva mare ha bloquejat <ph name="APP_NAME" />. Demana-li permís per utilitzar aquesta aplicació.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg i *.png</translation> @@ -4467,8 +4462,6 @@ <translation id="6242852299490624841">Posa el focus en aquesta pestanya</translation> <translation id="6243280677745499710">Establert actualment</translation> <translation id="6243774244933267674">El servidor no està disponible</translation> -<translation id="6244185221716469155">Les contrasenyes poc segures són fàcils d'endevinar. Assegura't de crear-ne de segures. - <ph name="BEGIN_LINK" />Consulta més consells de seguretat<ph name="END_LINK" />.</translation> <translation id="6244245036423700521">Importa un fitxer ONC</translation> <translation id="6246790815526961700">Penja des del dispositiu</translation> <translation id="6247620186971210352">No s'ha trobat cap aplicació</translation> @@ -6217,6 +6210,7 @@ <translation id="8281886186245836920">Omet</translation> <translation id="8283475148136688298">Codi d'autenticació rebutjat mentre es connectava a "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">tots els llocs web de <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Subtítols</translation> <translation id="8286036467436129157">Inicia la sessió</translation> <translation id="8286963743045814739">Pots navegar de manera privada utilitzant una finestra d'incògnit</translation> <translation id="8287902281644548111">Cerca per crida a l'API o URL</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index 4c1ce90..be021f5 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Chyba rozšíření</translation> <translation id="1246158006305844142">Vaše aplikace a nastavení se budou synchronizovat do všech zařízení Chrome OS, na kterých jste přihlášeni pomocí svého účtu Google. Možnosti synchronizace prohlížeče naleznete v <ph name="LINK_BEGIN" />nastavení Chromu<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Odstranit návrh ze schránky?</translation> -<translation id="1249643471736608405">Plugin <ph name="PLUGIN_NAME" /> byl zablokován, protože jeho podpora byla ukončena</translation> <translation id="1251366534849411931">Je očekávána levá složená závorka: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Tímto vymažete <ph name="TOTAL_USAGE" /> dat, která uložily weby a nainstalované aplikace</translation> <translation id="125220115284141797">Výchozí</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Domácí síť, bez roamingu</translation> <translation id="1315056510003830387">Zákaz používat Flash</translation> -<translation id="1315144594965013365">Obě zařízení musí být odemknutá, blízko u sebe a musí v nich být zapnuto Bluetooth. Pokud sdílíte soubory s Chromebookem, musí v něm být zapnuté sdílení nablízko (výběrem hodin otevřete stavovou oblast a potom vyberte Sdílení nablízko).</translation> <translation id="1316136264406804862">Vyhledávání...</translation> <translation id="1316495628809031177">Synchronizace je pozastavena</translation> <translation id="1317637799698924700">Dokovací stanice bude fungovat v režimu kompatibilním s rozhraním USB Type-C.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Ohrožení bezpečnosti certifikační autority</translation> <translation id="2182058453334755893">Zkopírováno do schránky</translation> <translation id="2184515124301515068">Nechat Chrome zvolit, kdy weby mohou přehrávat zvuk (doporučeno)</translation> -<translation id="2187243482123994665">Aktivita uživatele</translation> <translation id="2187675480456493911">Synchronizuje se s jinými zařízeními v účtu. Změny nastavení provedené jinými uživateli se nesynchronizují. <ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Chyba při importu certifikátu serveru</translation> <translation id="2187906491731510095">Rozšíření byla aktualizována</translation> @@ -2703,7 +2700,6 @@ <translation id="4104163789986725820">E&xport...</translation> <translation id="4107048419833779140">Identifikovat a vysouvat úložná zařízení</translation> <translation id="4109135793348361820">Přesunout okno k uživateli <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Přizpůsobení velikosti a stylu titulků aplikacím, které toto nastavení podporují</translation> <translation id="4110490973560452005">Stažení bylo dokončeno: <ph name="FILE_NAME" />. Stisknutím kombinace kláves Shift+F6 přejdete na lištu se staženými soubory.</translation> <translation id="4110686435123617899">Vyberte album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Prohlížejte internet v režimu vysokého kontrastu</translation> @@ -2916,7 +2912,6 @@ <translation id="4400632832271803360">Podržením tlačítka spouštěče přepnete chování tlačítek v horním řádku</translation> <translation id="4400963414856942668">Kliknutím na hvězdičku můžete kartu přidat do záložek</translation> <translation id="4403775189117163360">Vybrat jinou složku</translation> -<translation id="440391631796167175">Nebyla nalezena žádná slabá hesla</translation> <translation id="4404136731284211429">Znovu zkontrolovat</translation> <translation id="4404843640767531781">Tvůj rodič aplikaci <ph name="APP_NAME" /> zablokoval. Pokud ji chceš používat, požádej rodiče o oprávnění.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4457,8 +4452,6 @@ <translation id="6242852299490624841">Vybrat tuto kartu</translation> <translation id="6243280677745499710">Aktuálně nastaveno</translation> <translation id="6243774244933267674">Server není dostupný</translation> -<translation id="6244185221716469155">Slabá hesla lze snadno uhodnout. Vždy se snažte vytvářet silná hesla. - <ph name="BEGIN_LINK" />Další tipy k zabezpečení<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importovat soubor ONC</translation> <translation id="6246790815526961700">Nahrát ze zařízení</translation> <translation id="6247620186971210352">Nebyly nalezeny žádné aplikace</translation> @@ -6205,6 +6198,7 @@ <translation id="8281886186245836920">Přeskočit</translation> <translation id="8283475148136688298">Při připojování k zařízení <ph name="DEVICE_NAME" /> byl zamítnut ověřovací kód.</translation> <translation id="8284279544186306258">všechny weby <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Titulky</translation> <translation id="8286036467436129157">Přihlásit se</translation> <translation id="8286963743045814739">V anonymním okně můžete web procházet v soukromí.</translation> <translation id="8287902281644548111">Vyhledat podle adresy URL / volání API</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index 9b935c0..d9c9bb8 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Udvidelsesfejl</translation> <translation id="1246158006305844142">Dine apps og indstillinger synkroniseres på tværs af alle de Chrome OS-enheder, hvor du er logget ind med din Google-konto. Du kan se muligheder for synkronisering af browseren i <ph name="LINK_BEGIN" />indstillingerne for Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Vil du fjerne forslaget fra udklipsholderen?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> blev blokeret, da pluginnet er udfaset</translation> <translation id="1251366534849411931">Forventet krøllet startparentes: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Denne handling rydder <ph name="TOTAL_USAGE" /> data, der er gemt af websites og installerede apps</translation> <translation id="125220115284141797">Standard</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN for Android</translation> <translation id="131461803491198646">Hjemmenetværk, uden roaming</translation> <translation id="1315056510003830387">Har ikke tilladelse til at bruge Flash</translation> -<translation id="1315144594965013365">Sørg for, at begge enheder er låst op, er i nærheden af hinanden, og at både Bluetooth og placering er aktiveret. Hvis du deler med en Chromebook, skal du sørge for, at "Deling tæt på" er aktiveret (åbn statusområdet ved at vælge klokkeslættet og "Deling tæt på").</translation> <translation id="1316136264406804862">Søger...</translation> <translation id="1316495628809031177">Synkroniseringen er sat på pause</translation> <translation id="1317637799698924700">Din dockingstation køres i USB-C-kompatibel tilstand.</translation> @@ -872,6 +870,7 @@ <translation id="1976307821760494606"><ph name="DOMAIN" /> har deaktiveret ADB-fejlretning. Dette medfører, at din <ph name="DEVICE_TYPE" /> nulstilles om 24 timer. Sikkerhedskopiér de filer, du vil beholde.</translation> <translation id="1977965994116744507">Flyt din telefon tættere på din <ph name="DEVICE_TYPE" /> for at låse den op.</translation> <translation id="1978006917103730774">Fremtidige software- og sikkerhedsopdateringer installeres automatisk.</translation> +<translation id="1978057560491495741">Fjern adresse</translation> <translation id="1979095679518582070">Deaktivering af denne funktion påvirker ikke denne enheds evne til at sende oplysninger, der skal bruges til vigtige tjenester som f.eks. systemopdateringer og sikkerhed.</translation> <translation id="1979280758666859181">Du er ved at skifte til en kanal med en ældre version af <ph name="PRODUCT_NAME" />. Kanalskiftet træder i kraft, når kanalversionen matcher den version, der i øjeblikket er installeret på din enhed.</translation> <translation id="197989455406964291">KDC understøtter ikke krypteringstypen</translation> @@ -1037,7 +1036,6 @@ <translation id="2178614541317717477">Sammensat nøglecenter</translation> <translation id="2182058453334755893">Kopieret til din udklipsholder</translation> <translation id="2184515124301515068">Lad Chrome bestemme, hvornår websites må afspille lyd (anbefales)</translation> -<translation id="2187243482123994665">Brugertilstedeværelse</translation> <translation id="2187675480456493911">Synkroniseret med andre enheder på din konto. De indstillinger, der ændres af andre brugere, synkroniseres ikke. <ph name="LINK_BEGIN" />Få flere oplysninger<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Fejl ved import af servercertifikat</translation> <translation id="2187906491731510095">Udvidelserne er opdateret</translation> @@ -1074,6 +1072,7 @@ <translation id="2224444042887712269">Denne indstilling tilhører <ph name="OWNER_EMAIL" />.</translation> <translation id="2224551243087462610">Rediger mappenavn</translation> <translation id="2225864335125757863">Skift disse adgangskoder med det samme for at beskytte din konto:</translation> +<translation id="2226204716217107988">Vil du skifte til en anden profil?</translation> <translation id="2226449515541314767">Dette website er blevet blokeret fra at have fuld kontrol over MIDI-enheder.</translation> <translation id="2226907662744526012">Lås automatisk op, når pinkoden er angivet</translation> <translation id="222704500187107962">Denne undtagelse fjernes automatisk, når du forlader den aktuelle inkognitosession</translation> @@ -1143,6 +1142,7 @@ <translation id="2307462900900812319">Konfigurer netværk</translation> <translation id="230927227160767054">Denne side ønsker at installere en tjenestehåndtering.</translation> <translation id="2309620859903500144">Dette website er blevet blokeret fra at få adgang til dine bevægelses- eller lyssensorer.</translation> +<translation id="2312219318583366810">Webadresse</translation> <translation id="2314165183524574721">Den aktuelle indstilling for synlighed er Skjult</translation> <translation id="2314774579020744484">Anvendt sprog ved oversættelse af sider</translation> <translation id="2315414688463285945">Der opstod en fejl ved konfiguration af Linux-filer. Prøv igen.</translation> @@ -2346,6 +2346,7 @@ <translation id="3713047097299026954">Der er ikke nogen logindata på denne sikkerhedsnøgle</translation> <translation id="3714195043138862580">Denne demoenhed er i deprovisioneret tilstand.</translation> <translation id="3714633008798122362">webkalender</translation> +<translation id="3715954932774762075">Apps og websites, der er tilgængelige på flere sprog, bruger det første understøttede sprog på denne liste. Disse præferencer synkroniseres med dine browserindstillinger. <ph name="BEGIN_LINK_LEARN_MORE" />Få flere oplysninger<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">Startside</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">Dig og Google</translation> @@ -2506,6 +2507,7 @@ <translation id="3882165008614329320">Eksisterende video fra kamera eller fil</translation> <translation id="3886446263141354045">Din anmodning om adgang til dette website er blevet sendt til <ph name="NAME" />.</translation> <translation id="3888550877729210209">Notetagning med <ph name="LOCK_SCREEN_APP_NAME" /></translation> +<translation id="3890064827463908288">Aktivér Chrome-synkronisering for at bruge Wi-Fi-synkronisering</translation> <translation id="3892414795099177503">Tilføj OpenVPN/L2TP...</translation> <translation id="3893536212201235195">Læse og redigere dine indstillinger for hjælpefunktioner</translation> <translation id="3893630138897523026">ChromeVox (talefeedback)</translation> @@ -2705,7 +2707,6 @@ <translation id="4104163789986725820">E&ksporter...</translation> <translation id="4107048419833779140">Identificer og fjern lagerenheder</translation> <translation id="4109135793348361820">Flyt vindue til <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Tilpas undertekststørrelse og -format for apps, der understøtter denne indstilling</translation> <translation id="4110490973560452005">[=1]1 download er fuldført: <ph name="FILE_NAME" />. Tryk på Shift+F6 for at skifte til downloadlinjen.</translation> <translation id="4110686435123617899">Vælg albummet <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Brug internettet i tilstanden Høj kontrast</translation> @@ -2918,7 +2919,6 @@ <translation id="4400632832271803360">Hold tasten Appliste nede for at skifte funktion for den øverste række taster</translation> <translation id="4400963414856942668">Du kan klikke på stjernen for at tilføje fanen som bogmærke</translation> <translation id="4403775189117163360">Vælg en anden mappe</translation> -<translation id="440391631796167175">Der blev ikke fundet nogen svage adgangskoder</translation> <translation id="4404136731284211429">Scan igen</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> er blokeret af din forælder. Bed din forælder om at give dig tilladelse til at bruge denne app.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -3779,6 +3779,7 @@ <translation id="5449588825071916739">Tilføj alle faner som bogmærker</translation> <translation id="5449716055534515760">Luk vin&due</translation> <translation id="5452974209916053028">Aktuel inkognitosession: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />, <ph name="RECENT_PERMISSIONS_CHANGE_1" />, <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">Boblen med tekst blev flyttet til <ph name="POSITION_ON_SCREEN_FROM_LEFT" /> % vandret, <ph name="POSITION_ON_SCREEN_FROM_TOP" /> % lodret</translation> <translation id="5454166040603940656">med <ph name="PROVIDER" /></translation> <translation id="5457113250005438886">Ugyldig</translation> <translation id="5457459357461771897">Læs og slet billeder, musik og andre medier på din computer</translation> @@ -3922,6 +3923,7 @@ <translation id="5602765853043467355">Ryd bogmærker, historik, adgangskoder osv. fra denne enhed</translation> <translation id="5605623530403479164">Andre søgemaskiner</translation> <translation id="5605758115928394442">Der blev sendt en notifikation til din telefon til bekræftelse af din identitet.</translation> +<translation id="560834977503641186">Wi-Fi-synkronisering, Få flere oplysninger</translation> <translation id="5608580678041221894">Tryk på følgende taster for at tilpasse eller flytte beskæringsområdet</translation> <translation id="5609231933459083978">Applikationen ser ud til at være ugyldig.</translation> <translation id="5610038042047936818">Skift til kameratilstand</translation> @@ -4112,6 +4114,7 @@ <translation id="5841270259333717135">Konfigurer Ethernet</translation> <translation id="5842497610951477805">Aktivering af Bluetooth</translation> <translation id="5843706793424741864">Fahrenheit</translation> +<translation id="584451707753263735">Livetekstning er synlig, tryk på F6 for at bruge cyklisk fokus</translation> <translation id="5844574845205796324">Foreslå nyt indhold til mig</translation> <translation id="5846200638699387931">Fejl i relationens syntaks: <ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">Installer opdateringer og apps. Ved at fortsætte accepterer du, at denne enhed også automatisk kan downloade og installere opdateringer og apps fra Google, dit mobilselskab og enhedsproducenten, muligvis ved hjælp af mobildata. Nogle af disse apps tilbyder køb i appen.</translation> @@ -4460,8 +4463,6 @@ <translation id="6242852299490624841">Sæt denne fane i fokus</translation> <translation id="6243280677745499710">Nuværende</translation> <translation id="6243774244933267674">Serveren er utilgængelig</translation> -<translation id="6244185221716469155">Svage adgangskoder er nemme at gætte. Sørg for at oprette en stærk adgangskode. - <ph name="BEGIN_LINK" />Se flere sikkerhedstips<ph name="END_LINK" />.</translation> <translation id="6244245036423700521">Importér ONC-fil</translation> <translation id="6246790815526961700">Upload fra enhed</translation> <translation id="6247620186971210352">Der blev ikke fundet nogen apps</translation> @@ -5369,6 +5370,7 @@ <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> er nu i fuld skærm.</translation> <translation id="7340650977506865820">Websitet deler din skærm</translation> <translation id="7341834142292923918">Udvidelsen anmoder om adgang til dette website</translation> +<translation id="7343372807593926528">Beskriv problemet, før du sender feedback</translation> <translation id="7345706641791090287">Bekræft din adgangskode</translation> <translation id="7346909386216857016">OK</translation> <translation id="7347452120014970266">Denne handling rydder alle de data og cookies, der er gemt af <ph name="ORIGIN_NAME" /> og de apps, den har installeret</translation> @@ -5784,6 +5786,7 @@ <translation id="7819857487979277519">PSK (WPA eller RSN)</translation> <translation id="7819992334107904369">Chrome-synkronisering</translation> <translation id="782057141565633384">K&opiér webadressen til videoen</translation> +<translation id="7822187537422052256">Er du sikker på, at du vil fjerne denne adresse?</translation> <translation id="7824864914877854148">Sikkerhedskopieringen kunne ikke fuldføres på grund af en fejl</translation> <translation id="7825666486843191125">Alle kontakter i nærheden, når din skærm er låst op</translation> <translation id="782590969421016895">Brug aktuelle sider</translation> @@ -6208,6 +6211,7 @@ <translation id="8281886186245836920">Spring over</translation> <translation id="8283475148136688298">Godkendelseskoden blev afvist under oprettelse af forbindelse til "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">alle websites på <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Undertekster</translation> <translation id="8286036467436129157">Log ind</translation> <translation id="8286963743045814739">Du kan bruge nettet privat ved hjælp af et inkognitovindue</translation> <translation id="8287902281644548111">Søg efter API-opkald/webadresse</translation> @@ -6309,6 +6313,7 @@ <translation id="8419098111404128271">Søgeresultater for "<ph name="SEARCH_TEXT" />"</translation> <translation id="8419368276599091549">Velkommen til din <ph name="DEVICE_TYPE" /></translation> <translation id="8420308167132684745">Rediger opslag i ordbogen</translation> +<translation id="8421361468937925547">Livetekstning (kun på engelsk)</translation> <translation id="8422787418163030046">Bakke mangler</translation> <translation id="8425213833346101688">Skift</translation> <translation id="8425492902634685834">Fastgør til proceslinje</translation> @@ -6337,6 +6342,7 @@ <translation id="8449036207308062757">Administrer lagerplads</translation> <translation id="8452135315243592079">SIM-kort mangler</translation> <translation id="8455026683977728932">Illustration, der viser, at ADB kunne ikke aktiveres</translation> +<translation id="8456398879271637452">Livetekstning er synlig, tryk på Ctrl+Tilbage eller Ctrl+Frem for at bruge cyklisk fokus</translation> <translation id="845702320058262034">Der kan ikke oprettes forbindelse. Sørg for, at Bluetooth er aktiveret på din telefon.</translation> <translation id="8457451314607652708">Importér bogmærker</translation> <translation id="8458627787104127436">Åbn alle (<ph name="URL_COUNT" />) i et nyt vindue</translation> @@ -6848,6 +6854,7 @@ <translation id="9027459031423301635">Åbn link på ny &fane</translation> <translation id="9030515284705930323">Din organisation har ikke aktiveret Google Play Butik for din konto. Kontakt din administrator for at få yderligere oplysninger.</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269">"<ph name="PLUGIN_NAME" />" understøttes ikke længere</translation> <translation id="9031549947500880805">Sikkerhedskopiér i Google Drev. Gendan nemt dine data, eller skift enhed når som helst. Din backup omfatter appdata.</translation> <translation id="9033765790910064284">Fortsæt alligevel</translation> <translation id="9033857511263905942">&Indsæt</translation> @@ -6856,6 +6863,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{Du har ét forsøg tilbage.}one{Du har # forsøg tilbage.}other{Du har # forsøg tilbage.}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571">Vil du opdatere adgangskoden til <ph name="ORIGIN" />?</translation> +<translation id="9041049756004505730">Livetekstning er synlig, tryk på ⌘+Option+pil op eller pil ned for at bruge cycklisk fokus</translation> <translation id="9041692268811217999">Din administrator har deaktiveret adgangen til lokale filer på din maskine</translation> <translation id="904224458472510106">Denne handling kan ikke fortrydes</translation> <translation id="9042893549633094279">Sikkerhed og privatliv</translation> @@ -6894,6 +6902,7 @@ <translation id="9088446193279799727">Linux kunne ikke konfigureres. Opret forbindelse til internettet, og prøv igen.</translation> <translation id="9088917181875854783">Bekræft, at denne adgangsnøgle vises på "<ph name="DEVICE_NAME" />":</translation> <translation id="9089416786594320554">Inputmetoder</translation> +<translation id="909108997331068008">Profilen tilhørende <ph name="EXISTING_USER" /> er allerede logget ind på <ph name="NEW_USER" /></translation> <translation id="9093429538970210897">Det anbefales at sikkerhedskopiere filer, i tilfælde af at opgraderingen ikke kan fuldføres. Når du starter opgraderingen, lukker Linux (beta) ned. Gem åbne filer, før du fortsætter.</translation> <translation id="9094033019050270033">Opdater adgangskoden</translation> <translation id="9094038138851891550">Brugernavnet er ugyldigt</translation> @@ -7067,5 +7076,6 @@ <translation id="994289308992179865">&Sløjfe</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">Etablerer sikker forbindelse...</translation> +<translation id="99731366405731005">Aktivér <ph name="LINK1_BEGIN" />Chrome-synkronisering<ph name="LINK1_END" /> for at bruge Wi-Fi-synkronisering. <ph name="LINK2_BEGIN" />Få flere oplysninger<ph name="LINK2_END" /></translation> <translation id="998747458861718449">U&ndersøg</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 818c9295..9a7a620 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Erweiterungsfehler</translation> <translation id="1246158006305844142">Ihre Apps und Einstellungen werden auf allen Chrome OS-Geräten synchronisiert, bei denen Sie mit Ihrem Google-Konto angemeldet sind. Die Optionen zur Browsersynchronisation finden Sie in den<ph name="LINK_BEGIN" />Chrome-Einstellungen<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Vorschlag aus Zwischenablage entfernen?</translation> -<translation id="1249643471736608405">Das Plug-in <ph name="PLUGIN_NAME" /> wurde blockiert, weil es eingestellt wurde</translation> <translation id="1251366534849411931">Erwartete öffnende geschweifte Klammer: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Dadurch werden <ph name="TOTAL_USAGE" /> an von Websites oder installierten Apps gespeicherten Daten gelöscht</translation> <translation id="125220115284141797">Standard</translation> @@ -278,7 +277,6 @@ <translation id="1313705515580255288">Ihre Lesezeichen, Ihr Verlauf und andere Einstellungen werden mit Ihrem Google-Konto synchronisiert.</translation> <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Heimnetzwerk, kein Roaming</translation> -<translation id="1315144594965013365">Beide Geräte müssen entsperrt sein und sich nah beieinander befinden. Außerdem muss Bluetooth aktiviert sein. Wenn Sie Inhalte mit einem Chromebook teilen, muss Nearby Share darauf aktiviert sein (wählen Sie die Uhrzeit aus, um den Statusbereich zu öffnen, und wählen Sie "Nearby Share").</translation> <translation id="1316136264406804862">Suche läuft...</translation> <translation id="1316495628809031177">Synchronisierung pausiert</translation> <translation id="1317637799698924700">Ihre Dockingstation arbeitet im Modus für USB Typ-C-Kompatibilität.</translation> @@ -1024,7 +1022,6 @@ <translation id="2178614541317717477">Kompromittierung der Zertifizierungsstelle</translation> <translation id="2182058453334755893">In die Zwischenablage kopiert</translation> <translation id="2184515124301515068">Chrome die Entscheidung überlassen, wann Audioinhalte auf Websites abgespielt werden (empfohlen)</translation> -<translation id="2187243482123994665">Anwesenheit des Nutzers</translation> <translation id="2187675480456493911">Mit anderen Geräten in Ihrem Konto synchronisiert. Von anderen Nutzern geänderte Einstellungen werden nicht synchronisiert. <ph name="LINK_BEGIN" />Weitere Informationen<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Fehler beim Importieren des Serverzertifikats</translation> <translation id="2187906491731510095">Erweiterungen wurden aktualisiert</translation> @@ -2677,7 +2674,6 @@ <translation id="4104163789986725820">E&xportieren...</translation> <translation id="4107048419833779140">Speichergeräte ermitteln und auswerfen</translation> <translation id="4109135793348361820">Fenster zu <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) verschieben</translation> -<translation id="411031910327788420">Größe und Stil der Untertitel in Apps anpassen, die diese Einstellung unterstützen</translation> <translation id="4110490973560452005">Download abgeschlossen: <ph name="FILE_NAME" />. Drücken Sie Umschalttaste + F6, um zum Bereich mit der Downloadleiste zu wechseln.</translation> <translation id="4110686435123617899">Album <ph name="TITLE" /> <ph name="DESC" /> auswählen</translation> <translation id="4110895898888439383">Das Web in Modus mit hohem Kontrast durchsuchen</translation> @@ -4415,8 +4411,6 @@ <translation id="6242852299490624841">Diesen Tab fokussieren</translation> <translation id="6243280677745499710">Derzeit festgelegt</translation> <translation id="6243774244933267674">Server nicht verfügbar</translation> -<translation id="6244185221716469155">Schwache Passwörter sind einfach zu erraten. Erstellen Sie deshalb am besten starke Passwörter. - <ph name="BEGIN_LINK" />Weitere Sicherheitstipps ansehen.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC-Datei importieren</translation> <translation id="6246790815526961700">Von Gerät hochladen</translation> <translation id="6247620186971210352">Keine Apps gefunden</translation> @@ -6142,6 +6136,7 @@ <translation id="8281886186245836920">Überspringen</translation> <translation id="8283475148136688298">Beim Herstellen der Verbindung zu "<ph name="DEVICE_NAME" />" wurde der Authentifizierungscode zurückgewiesen.</translation> <translation id="8284279544186306258">alle <ph name="WEBSITE_1" />-Websites</translation> +<translation id="8284326494547611709">Untertitel</translation> <translation id="8286036467436129157">Anmelden</translation> <translation id="8286963743045814739">In einem Inkognitofenster können Sie privat surfen</translation> <translation id="8287902281644548111">Anhand des API-Aufrufs bzw. der URL suchen</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index 8915bb6..3aae37a5d 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Σφάλμα επέκτασης</translation> <translation id="1246158006305844142">Οι εφαρμογές και οι ρυθμίσεις σας θα συγχρονιστούν σε όλες τις συσκευές Chrome OS, στις οποίες έχετε συνδεθεί με τον Λογαριασμό σας Google. Για επιλογές συγχρονισμού προγράμματος περιήγησης, μεταβείτε στις <ph name="LINK_BEGIN" />Ρυθμίσεις Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Θέλετε να καταργήσετε την πρόταση από το πρόχειρο;</translation> -<translation id="1249643471736608405">Το πρόσθετο <ph name="PLUGIN_NAME" /> αποκλείστηκε γιατί έχει καταργηθεί</translation> <translation id="1251366534849411931">Αναμενόμενο άγκιστρο ανοίγματος: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Με αυτήν την ενέργεια θα διαγραφούν <ph name="TOTAL_USAGE" /> των δεδομένων που έχουν αποθηκευτεί από ιστοτόπους και τις εγκατεστημένες εφαρμογές τους.</translation> <translation id="125220115284141797">Προεπιλογή</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Εγχώριο δίκτυο, χωρίς περιαγωγή </translation> <translation id="1315056510003830387">Δεν επιτρέπεται να χρησιμοποιούν Flash</translation> -<translation id="1315144594965013365">Βεβαιωθείτε ότι και οι δύο συσκευές είναι ξεκλειδωμένες, βρίσκονται κοντά η μία στην άλλη και έχουν ενεργοποιημένο το Bluetooth. Εάν κάνετε κοινή χρήση με ένα Chromebook, βεβαιωθείτε ότι έχετε ενεργοποιήσει σε αυτό την Κοινοποίηση κοντά (ανοίξτε την περιοχή κατάστασης επιλέγοντας την ώρα και έπειτα επιλέξτε Κοινοποίηση κοντά).</translation> <translation id="1316136264406804862">Αναζήτηση...</translation> <translation id="1316495628809031177">Ο συγχρονισμός τέθηκε σε παύση</translation> <translation id="1317637799698924700">Η βάση σύνδεσης θα βρίσκεται σε λειτουργία συμβατότητας USB τύπου C.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">Παραβίαση αρχής έκδοσης πιστοποιητικών</translation> <translation id="2182058453334755893">Αντιγράφηκε στο πρόχειρό σας</translation> <translation id="2184515124301515068">Επιτρέψτε στο Chrome να επιλέξει πότε οι ιστότοποι μπορούν να αναπαράγουν ήχο (συνιστάται)</translation> -<translation id="2187243482123994665">Παρουσία χρήστη</translation> <translation id="2187675480456493911">Έγινε συγχρονισμός με άλλες συσκευές στον λογαριασμό σας. Οι ρυθμίσεις που τροποποιούνται από άλλους χρήστες δεν θα συγχρονίζονται. <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Σφάλμα εισαγωγής του πιστοποιητικού διακομιστή </translation> <translation id="2187906491731510095">Οι επεκτάσεις ενημερώθηκαν</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">Ε&ξαγωγή...</translation> <translation id="4107048419833779140">Ταυτοποίηση και κατάργηση συσκευών αποθηκευτικού χώρου</translation> <translation id="4109135793348361820">Μετακίνηση παραθύρου στο χρήστη <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Προσαρμόστε το μέγεθος και το στιλ των υπότιτλων για εφαρμογές που υποστηρίζουν αυτήν τη ρύθμιση.</translation> <translation id="4110490973560452005">Η λήψη ολοκληρώθηκε: <ph name="FILE_NAME" />. Πατήστε Shift+F6 για να μεταβείτε στη γραμμή λήψεων.</translation> <translation id="4110686435123617899">Επιλογή λευκώματος <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Περιήγηση στον ιστό με τη λειτουργία υψηλής αντίθεσης</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">Πατήστε παρατεταμένα το πλήκτρο Εφαρμογής εκκίνησης, για να αλλάξετε τη συμπεριφορά των πλήκτρων της επάνω σειράς</translation> <translation id="4400963414856942668">Μπορείτε να κάνετε κλικ στο αστέρι για να προσθέσετε σελιδοδείκτη σε μια καρτέλα</translation> <translation id="4403775189117163360">Επιλέξτε διαφορετικό φάκελο</translation> -<translation id="440391631796167175">Δεν βρέθηκαν ασθενείς κωδικοί πρόσβασης</translation> <translation id="4404136731284211429">Εκ νέου σάρωση</translation> <translation id="4404843640767531781">Η εφαρμογή <ph name="APP_NAME" /> αποκλείστηκε από τον γονέα σου. Ζήτησε άδεια από τον γονέα σου για να χρησιμοποιήσεις την εφαρμογή.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4468,8 +4463,6 @@ <translation id="6242852299490624841">Εστίαση σε αυτήν την καρτέλα</translation> <translation id="6243280677745499710">Έχει οριστεί</translation> <translation id="6243774244933267674">Ο διακομιστής δεν είναι διαθέσιμος</translation> -<translation id="6244185221716469155">Είναι εύκολο να μαντέψει κανείς τους ασθενείς κωδικούς πρόσβασης. Βεβαιωθείτε ότι δημιουργείτε ισχυρούς κωδικούς πρόσβασης. - <ph name="BEGIN_LINK" />Δείτε περισσότερες συμβουλές ασφάλειας.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Εισαγωγή αρχείου ONC</translation> <translation id="6246790815526961700">Μεταφόρτωση από τη συσκευή</translation> <translation id="6247620186971210352">Δεν βρέθηκαν εφαρμογές</translation> @@ -6219,6 +6212,7 @@ <translation id="8281886186245836920">Παράβλεψη</translation> <translation id="8283475148136688298">Ο κωδικός ελέγχου ταυτότητας απορρίφθηκε κατά τη σύνδεση στη συσκευή "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">όλους τους ιστότοπους <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Υπότιτλοι</translation> <translation id="8286036467436129157">Σύνδεση</translation> <translation id="8286963743045814739">Μπορείτε να περιηγηθείτε ιδιωτικά χρησιμοποιώντας ένα παράθυρο για ανώνυμη περιήγηση</translation> <translation id="8287902281644548111">Αναζήτηση κατά κλήση API/URL</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index 9b55515..9ac8616a 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Extension error</translation> <translation id="1246158006305844142">Your apps and settings will sync across all Chrome OS devices where you are signed in with your Google Account. For browser sync options, go to<ph name="LINK_BEGIN" />Chrome settings<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Remove suggestion from clipboard?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> was blocked because it is deprecated</translation> <translation id="1251366534849411931">Expected opening curly bracket: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">This will clear <ph name="TOTAL_USAGE" /> of data stored by sites and installed apps</translation> <translation id="125220115284141797">Default</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Home network, not roaming</translation> <translation id="1315056510003830387">Not allowed to use Flash</translation> -<translation id="1315144594965013365">Make sure that both devices are unlocked, close together and have Bluetooth turned on. If you’re sharing with a Chromebook, make sure that it has Nearby Sharing turned on (open the status area by selecting the time, then select Nearby Share).</translation> <translation id="1316136264406804862">Searching...</translation> <translation id="1316495628809031177">Sync is paused</translation> <translation id="1317637799698924700">Your docking station will operate in USB Type-C compatible mode.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA Compromise</translation> <translation id="2182058453334755893">Copied to your Clipboard</translation> <translation id="2184515124301515068">Let Chrome choose when sites can play sound (recommended)</translation> -<translation id="2187243482123994665">User presence</translation> <translation id="2187675480456493911">Synced with other devices on your account. Settings modified by other users will not be synced. <ph name="LINK_BEGIN" />Learn more<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Server Certificate Import Error</translation> <translation id="2187906491731510095">Extensions updated</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">E&xport...</translation> <translation id="4107048419833779140">Identify and eject storage devices</translation> <translation id="4109135793348361820">Move window to <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Customise caption size and style for apps that support this setting</translation> <translation id="4110490973560452005">Download complete: <ph name="FILE_NAME" />. Press Shift+F6 to cycle to the downloads bar area.</translation> <translation id="4110686435123617899">Select album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Browse the web in high contrast mode</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">Hold the Launcher key to switch the behaviour of the top-row keys</translation> <translation id="4400963414856942668">You can click the star to bookmark a tab</translation> <translation id="4403775189117163360">Choose a different folder</translation> -<translation id="440391631796167175">No weak passwords found</translation> <translation id="4404136731284211429">Scan again</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> is blocked by your parent. Ask your parent for permission to use this app.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4467,8 +4462,6 @@ <translation id="6242852299490624841">Focus this tab</translation> <translation id="6243280677745499710">Currently set</translation> <translation id="6243774244933267674">Server unavailable</translation> -<translation id="6244185221716469155">Weak passwords are easy to guess. Make sure that you’re creating strong passwords. - <ph name="BEGIN_LINK" />See more security tips.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Import ONC file</translation> <translation id="6246790815526961700">Upload from device</translation> <translation id="6247620186971210352">No apps found.</translation> @@ -6218,6 +6211,7 @@ <translation id="8281886186245836920">Skip</translation> <translation id="8283475148136688298">Authentication code rejected while connecting to "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">all <ph name="WEBSITE_1" /> sites</translation> +<translation id="8284326494547611709">Captions</translation> <translation id="8286036467436129157">Sign In</translation> <translation id="8286963743045814739">You can browse privately using an incognito window</translation> <translation id="8287902281644548111">Search by API call/URL</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index 13a5654..b6f2b1e3 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Error de extensión</translation> <translation id="1246158006305844142">Se sincronizarán tus apps y opciones de configuración en todos los dispositivos con el Sistema operativo Chrome a los que hayas accedido con tu Cuenta de Google. Para ver las opciones de sincronización del navegador, ve a la <ph name="LINK_BEGIN" />configuración de Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">¿Quieres quitar la sugerencia del portapapeles?</translation> -<translation id="1249643471736608405">Se bloqueó <ph name="PLUGIN_NAME" /> porque dejó de estar disponible</translation> <translation id="1251366534849411931">Llave de apertura esperada: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Esta acción borrará <ph name="TOTAL_USAGE" /> de datos almacenados por sitios y apps instaladas</translation> <translation id="125220115284141797">Predeterminado</translation> @@ -278,7 +277,7 @@ <translation id="1313705515580255288">Los favoritos, el historial y demás parámetros de configuración se sincronizarán con tu cuenta de Google.</translation> <translation id="1314565355471455267">VPN de Android</translation> <translation id="131461803491198646">Red local, no en modo roaming</translation> -<translation id="1315144594965013365">Asegúrate de que ambos dispositivos estén cerca el uno del otro, desbloqueados y con el Bluetooth activado. Si quieres compartir archivos con una Chromebook, asegúrate de tener activado Compartir con Nearby (selecciona la hora para abrir el área de estado y, luego, selecciona Compartir con Nearby).</translation> +<translation id="1315056510003830387">No puede usar Flash</translation> <translation id="1316136264406804862">Buscando...</translation> <translation id="1316495628809031177">Se pausó la sincronización</translation> <translation id="1317637799698924700">La estación de conectores funcionará en modo compatible con USB tipo C.</translation> @@ -337,6 +336,7 @@ <translation id="1386791642444521222">Activar una SIM física</translation> <translation id="1387519831959169718">Para que tu actividad de navegación no se mezcle con la de otras personas, puedes crear un nuevo perfil para <ph name="NEW_USER" />.</translation> <translation id="138784436342154190">¿Deseas restaurar la página de inicio predeterminada?</translation> +<translation id="1388253969141979417">Puede usar el micrófono</translation> <translation id="1388728792929436380">Cuando se completen las actualizaciones, se reiniciará el dispositivo <ph name="DEVICE_TYPE" />.</translation> <translation id="1389342855416376185">No permitir contenido protegido</translation> <translation id="1390548061267426325">Abrir como pestaña normal</translation> @@ -387,6 +387,7 @@ <translation id="1433811987160647649">Preguntar antes de acceder</translation> <translation id="1434696352799406980">Esta acción restablecerá la página de inicio, la página Nueva pestaña, el motor de búsqueda y las pestañas fijas. Además, inhabilitará todas las extensiones y borrará datos temporales, como las cookies. No se borrarán tus favoritos, historial ni contraseñas guardadas.</translation> <translation id="1434886155212424586">La página Nueva pestaña es la nueva página principal.</translation> +<translation id="1435515966666225466">Puede usar un complemento para acceder a la computadora</translation> <translation id="1436390408194692385">Período de validez: <ph name="TICKET_TIME_LEFT" /></translation> <translation id="1436671784520050284">Continuar con la configuración</translation> <translation id="1436784010935106834">Eliminado</translation> @@ -470,6 +471,7 @@ <translation id="1530838837447122178">Abrir configuración del mouse y el panel táctil</translation> <translation id="1531004739673299060">Ventana de la app</translation> <translation id="1531275250079031713">Mostrar el cuadro de diálogo para agregar Wi-Fi nueva</translation> +<translation id="1535228823998016251">Alto</translation> <translation id="1536754031901697553">Desconectando…</translation> <translation id="1537254971476575106">Lupa de pantalla completa</translation> <translation id="15373452373711364">Cursor del mouse grande</translation> @@ -553,6 +555,7 @@ <translation id="1627408615528139100">Ya se descargó</translation> <translation id="1628948239858170093">¿Quieres analizar el archivo antes de abrirlo?</translation> <translation id="1629314197035607094">Caducó la contraseña</translation> +<translation id="163072119192489970">Puede completar el envío y la recepción de datos</translation> <translation id="1630768113285622200">Restablecer y continuar</translation> <translation id="1632082166874334883">Contraseñas almacenadas en tu Cuenta de Google</translation> <translation id="1632803087685957583">Permite ajustar la velocidad de repetición del teclado, la predicción de palabras y más</translation> @@ -750,6 +753,7 @@ <translation id="1841705068325380214">Se inhabilitó la extensión <ph name="EXTENSION_NAME" /></translation> <translation id="184273675144259287">Reemplaza tus archivos y apps de Linux con una copia de seguridad anterior</translation> <translation id="1842766183094193446">¿Realmente quieres habilitar el modo de demostración?</translation> +<translation id="1845727111305721124">Puede reproducir sonido</translation> <translation id="1846308012215045257">Presionar Ctrl+clic para ejecutar <ph name="PLUGIN_NAME" /></translation> <translation id="1849186935225320012">Esta página tiene el control total de los dispositivos MIDI.</translation> <translation id="1850508293116537636">Girar &a la derecha</translation> @@ -774,6 +778,7 @@ <translation id="187145082678092583">Menos apps</translation> <translation id="1871534214638631766">Muestra información relacionada cuando haces clic con el botón derecho o cuando mantienes presionado el contenido</translation> <translation id="1871615898038944731">Tu <ph name="DEVICE_TYPE" /> está actualizado</translation> +<translation id="1874248162548993294">Puede mostrar cualquier anuncio</translation> <translation id="1874972853365565008">{NUM_TABS,plural, =1{Mover la pestaña a otra ventana}other{Mover las pestañas a otra ventana}}</translation> <translation id="1875386316419689002">Esta pestaña está conectada a un dispositivo HID.</translation> <translation id="1875387611427697908">Este elemento se puede agregar solamente desde <ph name="CHROME_WEB_STORE" /></translation> @@ -829,6 +834,7 @@ <translation id="1931152874660185993">No hay componentes instalados.</translation> <translation id="1932098463447129402">No antes</translation> <translation id="1933809209549026293">Conecta un mouse o un teclado. Si usas un dispositivo Bluetooth, asegúrate de que esté preparado para la sincronización.</translation> +<translation id="1935303383381416800">Puede ver tu ubicación</translation> <translation id="1936931585862840749">Usa un número para indicar la cantidad de copias que deseas imprimir (1 a <ph name="MAX_COPIES" />).</translation> <translation id="1937774647013465102">No se puede importar el tipo de arquitectura de contenedores <ph name="ARCHITECTURE_CONTAINER" /> con este dispositivo porque es <ph name="ARCHITECTURE_DEVICE" />. Puedes intentar restablecer este contenedor en otro dispositivo o acceder a los archivos en su interior con la app de Archivos.</translation> <translation id="1938351510777341717">Tecla externa Comando</translation> @@ -946,6 +952,7 @@ <translation id="2090165459409185032">Para recuperar la información de la cuenta, accede a google.com/accounts/recovery.</translation> <translation id="2090876986345970080">Configuración de seguridad del sistema</translation> <translation id="2091887806945687916">Sonido</translation> +<translation id="209539936453343974">Para configurar los controles parentales, un niño debe tener una Cuenta de Google administrada por un padre o una madre. <ph name="DEVICE_TYPE_PLURAL" /> permiten al padre o la madre configurar el límite de tiempo de uso, aprobar o bloquear sitios web y mucho más con la app de Family Link. Si el niño necesita hacer tarea en sitios como Google Classroom, más tarde se puede agregar una cuenta de institución educativa.</translation> <translation id="2096715839409389970">Borrar cookies de terceros</translation> <translation id="2097372108957554726">Debes acceder a Chrome para registrar nuevos dispositivos.</translation> <translation id="2098805196501063469">Revisar las contraseñas restantes</translation> @@ -1025,7 +1032,6 @@ <translation id="2178614541317717477">Compromiso de entidad de certificación</translation> <translation id="2182058453334755893">Se copió en tu portapapeles</translation> <translation id="2184515124301515068">Permitir que Chrome elija cuándo los sitios pueden reproducir sonido (recomendado)</translation> -<translation id="2187243482123994665">Presencia del usuario</translation> <translation id="2187675480456493911">La red está sincronizada con otros dispositivos de tu cuenta. No se sincronizarán las opciones de configuración que modifiquen otros usuarios. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Error en el servidor de importación de certificado</translation> <translation id="2187906491731510095">Se actualizaron las extensiones</translation> @@ -1096,6 +1102,7 @@ <translation id="2261323523305321874">Tu administrador hizo un cambio que afecta todo el sistema e inhabilita algunos perfiles antiguos.</translation> <translation id="2262332168014443534">El modo lite ahora permite navegar de forma más rápida por todas las páginas, incluidas las que tienen el protocolo HTTPS.</translation> <translation id="2262477216570151239">Tiempo para repetición</translation> +<translation id="2262888617381992508">No puede reproducir contenido protegido</translation> <translation id="2263189956353037928">Salir y volver a acceder</translation> <translation id="2263371730707937087">Frecuencia de actualización de la pantalla</translation> <translation id="22665427234727190">Preguntar cuando un sitio desee acceder a dispositivos Bluetooth (recomendado)</translation> @@ -1364,6 +1371,7 @@ <translation id="2571655996835834626">Permite cambiar la configuración que controla el acceso de los sitios web a ciertas funciones, como las cookies, JavaScript, los complementos, la ubicación geográfica, el micrófono, la cámara, etc.</translation> <translation id="2572032849266859634">Se concedió acceso de solo lectura a <ph name="VOLUME_NAME" />.</translation> <translation id="2575247648642144396">Este ícono estará visible cuando la extensión se pueda utilizar en la página actual. Para usar esta extensión, haz clic en el ícono o presiona <ph name="EXTENSION_SHORTCUT" />.</translation> +<translation id="2575441894380764255">No puede mostrar anuncios intrusivos o engañosos</translation> <translation id="257779572837908839">Configurar como Chromebox para reuniones</translation> <translation id="2579232805407578790">No se pudo establecer una conexión con el servidor. Comprueba la conexión de red y vuelve a intentarlo. Si el problema persiste, reinicia la Chromebook. Código de error: <ph name="ERROR_CODE" />.</translation> <translation id="2580889980133367162">Siempre permitir que <ph name="HOST" /> descargue varios archivos</translation> @@ -1630,6 +1638,7 @@ <translation id="2880660355386638022">Ubicación de ventanas</translation> <translation id="2881076733170862447">Cuando haces clic en la extensión</translation> <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> se reiniciará y se restablecerá en un momento.</translation> +<translation id="288387288628762616">Puede usar Flash</translation> <translation id="2885378588091291677">Administrador de tareas</translation> <translation id="2885729872133513017">Hubo un problema cuando se intentó decodificar la respuesta del servidor.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> @@ -1664,6 +1673,7 @@ <translation id="2923234477033317484">Quitar esta cuenta</translation> <translation id="2926085873880284723">Restablecer accesos directos predeterminados</translation> <translation id="2927017729816812676">Almacenamiento en caché</translation> +<translation id="2928795416630981206">Puede realizar un seguimiento de la posición de la cámara</translation> <translation id="2931157624143513983">Ajustar al área de impresión</translation> <translation id="2932085390869194046">Sugerir contraseña…</translation> <translation id="2932330436172705843"><ph name="PROFILE_DISPLAY_NAME" /> (cuenta para niños)</translation> @@ -1671,6 +1681,7 @@ <translation id="2932883381142163287">Informar sobre abusos</translation> <translation id="2933632078076743449">Última actualización</translation> <translation id="2934999512438267372">Se permitió el control total de los dispositivos MIDI</translation> +<translation id="2935654492420446828">Agrega una cuenta de institución educativa más tarde</translation> <translation id="2936851848721175671">Crear copia de seguridad y restablecer</translation> <translation id="2938225289965773019">Abrir vínculos de <ph name="PROTOCOL" /></translation> <translation id="2938845886082362843">Visualiza y borra los datos de acceso almacenados en la llave de seguridad</translation> @@ -1774,6 +1785,7 @@ <translation id="3060379269883947824">Habilitar Seleccionar para pronunciar</translation> <translation id="3060952009917586498">Cambia el idioma del dispositivo. El idioma actual es <ph name="LANGUAGE" />.</translation> <translation id="3065041951436100775">La pestaña terminó los comentarios.</translation> +<translation id="306535478112428611">No puede editar archivos ni carpetas del dispositivo</translation> <translation id="3065522099314259755">Latencia de repetición del teclado</translation> <translation id="3067198179881736288">¿Deseas instalar la app?</translation> <translation id="3067198360141518313">Ejecutar este complemento</translation> @@ -1909,6 +1921,7 @@ <translation id="324849028894344899"><ph name="WINDOW_TITLE" />: Error de red</translation> <translation id="3248902735035392926">La seguridad es importante. Ahora, tómate un momento para <ph name="BEGIN_LINK" />revisar tus extensiones<ph name="END_LINK" /></translation> <translation id="3251759466064201842"><No forma parte de un certificado></translation> +<translation id="325238099842880997">Establece reglas digitales básicas que permitan que los niños jueguen, exploren y hagan tarea en el hogar</translation> <translation id="3253225298092156258">No disponible</translation> <translation id="3253448572569133955">Cuenta desconocida</translation> <translation id="3254084468305910013">{COUNT,plural, =0{No se encontraron problemas de seguridad}=1{Se encontró {COUNT} problema de seguridad}other{Se encontraron {COUNT} problemas de seguridad}}</translation> @@ -2036,6 +2049,7 @@ <translation id="3404249063913988450">Habilitar el protector de pantalla</translation> <translation id="3405664148539009465">Personalizar fuentes</translation> <translation id="3405763860805964263">...</translation> +<translation id="3406290648907941085">Puede usar datos y dispositivos de realidad virtual</translation> <translation id="3406396172897554194">Buscar por idioma o nombre de método de entrada</translation> <translation id="3406605057700382950">Mo&strar la barra de favoritos</translation> <translation id="340671561090997290">{NUM_EXTENSIONS,plural, =1{Es posible que esta extensión sea peligrosa}other{Es posible que estas extensiones sean peligrosas}}</translation> @@ -2200,6 +2214,7 @@ <translation id="3586806079541226322">No se puede abrir este archivo.</translation> <translation id="3586931643579894722">Ocultar detalles</translation> <translation id="3587482841069643663">Todos</translation> +<translation id="3588790464166520201">Puede instalar controladores de pago</translation> <translation id="3589766037099229847">Se bloqueó el contenido no seguro</translation> <translation id="3590194807845837023">Desbloquear perfil y volver a iniciar</translation> <translation id="3590295622232282437">Ingresando a la sesión administrada</translation> @@ -2425,6 +2440,7 @@ <translation id="3822559385185038546">El administrador controla este proxy</translation> <translation id="3823310065043511710">Se recomienda tener al menos <ph name="INSTALL_SIZE" /> de espacio para Linux.</translation> <translation id="3824621460022590830">El token de inscripción del dispositivo no es válido. Comunícate con el administrador o el propietario de tu dispositivo. Código de error: <ph name="ERROR_CODE" />.</translation> +<translation id="3826071569074535339">Puede usar sensores de movimiento</translation> <translation id="3826440694796503677">Tu administrador inhabilitó la opción para agregar más Cuentas de Google</translation> <translation id="3827306204503227641">Seguir permitiendo los complementos no incluidos en la zona de pruebas</translation> <translation id="3827774300009121996">&Pantalla completa</translation> @@ -2477,6 +2493,8 @@ <translation id="3873423927483480833">Muestra los PIN</translation> <translation id="3873915545594852654">Hubo un problema con ARC++.</translation> <translation id="3874164307099183178">Activar el Asistente de Google</translation> +<translation id="3877075909000773256">Configuración de Compartir con Nearby para el dispositivo de <ph name="USER_NAME" />, quien comparte contenido con la cuenta <ph name="USER_EMAIL" />.</translation> +<translation id="387771067039689031">No puede usar un complemento para acceder a la computadora</translation> <translation id="3879748587602334249">Administrador de descargas</translation> <translation id="3881478300875776315">Mostrar menos líneas</translation> <translation id="3882165008614329320">Video existente de la cámara o archivo</translation> @@ -2513,6 +2531,7 @@ <translation id="3919145445993746351">Para que tus extensiones estén en todas tus computadoras, activa la sincronización</translation> <translation id="3920504717067627103">Directivas del certificado</translation> <translation id="392089482157167418">Habilitar ChromeVox (comentarios por voz)</translation> +<translation id="3920909973552939961">No puede instalar controladores de pago</translation> <translation id="3923184630988645767">Uso de datos</translation> <translation id="3923676227229836009">Esta página puede ver archivos</translation> <translation id="3924145049010392604">Meta</translation> @@ -2637,6 +2656,7 @@ <translation id="4058793769387728514">Controlar documento ahora</translation> <translation id="406070391919917862">Aplicaciones de fondo</translation> <translation id="4061374428807229313">Para compartir, haz clic con el botón derecho en una carpeta de la app de Archivos y, luego, selecciona "Compartir con Parallels Desktop".</translation> +<translation id="406213378265872299">Comportamientos personalizados</translation> <translation id="4065876735068446555">Es posible que la red que estás usando (<ph name="NETWORK_ID" />) requiera que visites la página de acceso.</translation> <translation id="4066207411788646768">Revisa la conexión para ver las impresoras disponibles en tu red</translation> <translation id="4068776064906523561">Huellas digitales guardadas</translation> @@ -2679,7 +2699,6 @@ <translation id="4104163789986725820">E&xportar...</translation> <translation id="4107048419833779140">Identificar y expulsar los dispositivos de almacenamiento</translation> <translation id="4109135793348361820">Mover ventana a <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Personaliza el tamaño y el estilo de los subtítulos para las apps compatibles con esta configuración.</translation> <translation id="4110490973560452005">Se completó la descarga: <ph name="FILE_NAME" />. Presiona mayúscula + F6 para ir al área de la barra de descargas.</translation> <translation id="4110686435123617899">Seleccionar álbum <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Navegar en la Web en el modo de contraste alto</translation> @@ -2784,6 +2803,7 @@ <translation id="425573743389990240">Tasa de descarga de batería en vatios (un valor negativo significa que la batería se está cargando)</translation> <translation id="4256316378292851214">Guardar &video como...</translation> <translation id="4258348331913189841">Sistemas de archivos</translation> +<translation id="4259388776256904261">Esta acción puede demorar unos minutos</translation> <translation id="4260182282978351200">Es posible que el archivo <ph name="FILE_NAME" /> sea peligroso. ¿Quieres enviarlo al Programa de Protección Avanzada de Google para que lo analicemos? Presiona mayúscula + F6 para ir al área de la barra de descargas.</translation> <translation id="4263223596040212967">Comprueba el diseño de tu teclado y vuelve a intentarlo.</translation> <translation id="4263757076580287579">Se canceló el registro de la impresora.</translation> @@ -2935,6 +2955,7 @@ <translation id="4450974146388585462">Diagnosticar</translation> <translation id="4451479197788154834">La contraseña está guardada en este dispositivo y en tu Cuenta de Google</translation> <translation id="4451757071857432900">Bloqueados en sitios que muestran anuncios intrusivos o engañosos (opción recomendada)</translation> +<translation id="4453205916657964690">Máscara de subred</translation> <translation id="4453946976636652378">Buscar en <ph name="SEARCH_ENGINE_NAME" /> o escribir una URL</translation> <translation id="4459169140545916303">Activo hace <ph name="DEVICE_LAST_ACTIVATED_TIME" /> días</translation> <translation id="4460014764210899310">Desagrupar</translation> @@ -2962,6 +2983,7 @@ <translation id="4481530544597605423">Dispositivos no sincronizados</translation> <translation id="4483049906298469269">no se pudo hacer ping en la puerta de enlace de la red no predeterminada</translation> <translation id="4487489714832036847">En lugar de software tradicional, las Chromebooks utilizan apps. Obtén apps de productividad, entretenimiento y mucho más.</translation> +<translation id="4488257340342212116">Puede usar la cámara</translation> <translation id="4488502501195719518">¿Borrar todos los datos?</translation> <translation id="449232563137139956">Por lo general los sitios muestran imágenes para proporcionar una referencia visual, como fotos de tiendas en línea o artículos de noticias.</translation> <translation id="4493468155686877504">Recomendado (<ph name="INSTALL_SIZE" />)</translation> @@ -2994,6 +3016,7 @@ <translation id="4524832533047962394">El modo de inscripción proporcionado no es compatible con esta versión del sistema operativo. Asegúrate de que estás ejecutando la versión más reciente.</translation> <translation id="4527186207340858212">¿Deseas crear un nuevo perfil de trabajo?</translation> <translation id="452750746583162491">Revisa tus datos sincronizados</translation> +<translation id="4527929807707405172">Habilita el desplazamiento inverso. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation> <translation id="4528494169189661126">Sugerencia de traducción</translation> <translation id="4530494379350999373">Origen</translation> <translation id="4531924570968473143">¿A quién quieres agregar a este <ph name="DEVICE_TYPE" />?</translation> @@ -3014,6 +3037,7 @@ <translation id="4545028762441890696">Para volver a habilitarla, acepta los permisos nuevos:</translation> <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="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> @@ -3073,6 +3097,7 @@ <translation id="4608500690299898628">&Buscar</translation> <translation id="4608520674724523647">Ilustración de inscripción correcta</translation> <translation id="4608703838363792434"><ph name="FILE_NAME" /> incluye contenido sensible</translation> +<translation id="4609987916561367134">Puede usar JavaScript</translation> <translation id="4610162781778310380"><ph name="PLUGIN_NAME" /> detectó un error</translation> <translation id="4610637590575890427">¿Tal vez quieres ir a <ph name="SITE" />?</translation> <translation id="4611114513649582138">Conexión de datos disponible</translation> @@ -3184,6 +3209,7 @@ <translation id="473775607612524610">Actualizar</translation> <translation id="473936925429402449">Seleccionado, contenido adicional: <ph name="CURRENT_ELEMENT" /> de <ph name="TOTAL_ELEMENTS" /></translation> <translation id="4739639199548674512">Tickets</translation> +<translation id="4742334355511750246">No puede mostrar imágenes</translation> <translation id="4743260470722568160"><ph name="BEGIN_LINK" />Obtener información sobre cómo actualizar las aplicaciones<ph name="END_LINK" /></translation> <translation id="4744981231093950366">{NUM_TABS,plural, =1{Activar el sonido del sitio}other{Activar el sonido de los sitios}}</translation> <translation id="4746351372139058112">Mensajes</translation> @@ -3319,6 +3345,7 @@ <translation id="4908811072292128752">Abre una pestaña nueva para navegar en dos sitios al mismo tiempo</translation> <translation id="4909038193460299775">Debido a que esta cuenta la administra <ph name="DOMAIN" />, tus favoritos, historial, contraseñas y otras opciones de configuración se borrarán de este dispositivo. Sin embargo, tus datos permanecerán almacenados en tu cuenta de Google y se podrán administrar en el <ph name="BEGIN_LINK" />Panel de control de Google<ph name="END_LINK" />.</translation> <translation id="4912643508233590958">Reactivaciones</translation> +<translation id="4915961947098019832">Puede mostrar imágenes</translation> <translation id="4916542008280060967">¿Quieres permitir que el sitio edite <ph name="FILE_NAME" />?</translation> <translation id="491691592645955587">Cambiar a un navegador seguro</translation> <translation id="4917385247580444890">Fuerte</translation> @@ -3406,6 +3433,7 @@ <translation id="5027550639139316293">Enviar certificado por correo electrónico</translation> <translation id="5027562294707732951">Agregar extensión</translation> <translation id="5029568752722684782">Borrar la copia</translation> +<translation id="5033137252639132982">No puede usar sensores de movimiento</translation> <translation id="5033266061063942743">Formas geométricas</translation> <translation id="5036662165765606524">No permitir que ningún sitio descargue varios archivos automáticamente</translation> <translation id="5037676449506322593">Seleccionar todo</translation> @@ -3455,6 +3483,7 @@ <translation id="5088172560898466307">Nombre de host del servidor</translation> <translation id="5088534251099454936">PKCS N. º 1, SHA-512 con encriptación RSA</translation> <translation id="5089810972385038852">Estado</translation> +<translation id="5090637338841444533">No puede realizar un seguimiento de la posición de la cámara</translation> <translation id="5094721898978802975">Comunicarse con aplicaciones nativas en cooperación</translation> <translation id="5097002363526479830">Error al conectar a la red "<ph name="NAME" />": <ph name="DETAILS" /></translation> <translation id="5097649414558628673">Herramienta: <ph name="PRINT_NAME" /></translation> @@ -3763,6 +3792,7 @@ <translation id="5471768120198416576">Hola, soy la voz que leerá tus textos.</translation> <translation id="5472627187093107397">Guardar contraseñas para este sitio</translation> <translation id="5473333559083690127">Vuelve a ingresar el PIN nuevo</translation> +<translation id="5481273127572794904">No puede descargar múltiples archivos de forma automática</translation> <translation id="5481941284378890518">Agregar impresoras cercanas</translation> <translation id="5483785310822538350">Revocar acceso al archivo y al dispositivo</translation> <translation id="5485080380723335835">Por razones de seguridad, se bloqueó tu <ph name="DEVICE_TYPE" />. Ingresa tu contraseña manualmente para continuar.</translation> @@ -3784,6 +3814,7 @@ <translation id="5495466433285976480">Esta acción eliminará todos los archivos, los datos y los usuarios locales, entre otros parámetros de configuración, la próxima vez que reinicies. Todos los usuarios deberán volver a acceder.</translation> <translation id="5495597166260341369">Pantalla encendida</translation> <translation id="5496587651328244253">Organizar</translation> +<translation id="5496730470963166430">No puede enviar ventanas emergentes ni usar redireccionamientos</translation> <translation id="5497251278400702716">Este archivo</translation> <translation id="5498967291577176373">Escribe más rápido con las sugerencias de texto para tu nombre, dirección o número de teléfono</translation> <translation id="5499313591153584299">Este archivo puede dañar el equipo.</translation> @@ -3791,6 +3822,7 @@ <translation id="5500709606820808700">Hoy se ejecutó la verificación de seguridad</translation> <translation id="5501809658163361512">{COUNT,plural, =1{No fue posible recibir <ph name="ATTACHMENTS" /> de <ph name="DEVICE_NAME" />}other{No fue posible recibir <ph name="ATTACHMENTS" /> de <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Importado desde Firefox</translation> +<translation id="5502915260472117187">Un niño</translation> <translation id="5503982651688210506">Seguir permitiendo que <ph name="HOST" /> use y mueva la cámara y use el micrófono</translation> <translation id="5505264765875738116">Los sitios no podrán preguntarte si quieres recibir notificaciones</translation> <translation id="5505307013568720083">Se agotó la tinta</translation> @@ -3878,6 +3910,7 @@ <translation id="5596627076506792578">Más opciones</translation> <translation id="5600706100022181951">Para descargar la actualización, se usarán <ph name="UPDATE_SIZE_MB" /> MB de datos móviles. ¿Deseas continuar?</translation> <translation id="5601503069213153581">PIN</translation> +<translation id="5601823921345337195">No puede conectarse con dispositivos MIDI</translation> <translation id="5602765853043467355">Borrar favoritos, historial, contraseñas y otras opciones de configuración de este dispositivo</translation> <translation id="5605623530403479164">Otros motores de búsqueda</translation> <translation id="5605758115928394442">Se envió una notificación a tu teléfono para confirmar que eres tú</translation> @@ -3998,6 +4031,7 @@ <translation id="5747552184818312860">Caduca</translation> <translation id="5747785204778348146">Programador: versión inestable</translation> <translation id="5747809636523347288">&Pegar y dirigirse a <ph name="URL" /></translation> +<translation id="5754152670305761216">Puede reproducir contenido protegido</translation> <translation id="5756163054456765343">C&entro de ayuda</translation> <translation id="5759728514498647443"><ph name="APP_NAME" /> podrá leer los documentos que envíes a imprimir a través de <ph name="APP_NAME" />.</translation> <translation id="5763751966069581670">No se encuentraron dispositivos USB</translation> @@ -4417,8 +4451,6 @@ <translation id="6242852299490624841">Enfocar esta pestaña</translation> <translation id="6243280677745499710">Establecido actualmente</translation> <translation id="6243774244933267674">Servidor no disponible</translation> -<translation id="6244185221716469155">Las contraseñas poco seguras son fáciles de adivinar. Asegúrate de crear contraseñas seguras. - <ph name="BEGIN_LINK" />Obtén más sugerencias de seguridad.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importar archivo ONC</translation> <translation id="6246790815526961700">Subir desde el dispositivo</translation> <translation id="6247620186971210352">No se encontraron apps</translation> @@ -4466,6 +4498,7 @@ <translation id="6295158916970320988">Todos los sitios</translation> <translation id="6295855836753816081">Guardando…</translation> <translation id="6298962879096096191">Usar Google Play para instalar apps de Android</translation> +<translation id="6300177430812514606">No puede completar el envío ni la recepción de datos</translation> <translation id="630065524203833229">&Salir</translation> <translation id="6300718114348072351">No se pudo configurar <ph name="PRINTER_NAME" /> automáticamente. Especifica los detalles avanzados de la impresora. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation> <translation id="6301076166764763868">Para separar tu navegación personal de la de <ph name="EXISTING_USER" />, crea un nuevo perfil para <ph name="NEW_USER" />.</translation> @@ -4543,6 +4576,7 @@ <translation id="6390020764191254941">Mueve la pestaña a una ventana nueva</translation> <translation id="6390799748543157332">Las páginas a las que accedas desde esta ventana no aparecerán en el historial del navegador ni dejarán rastros (por ejemplo, cookies) en la computadora después de cerrar todas las ventanas abiertas de la sesión de invitado. Los archivos descargados permanecerán intactos.</translation> <translation id="6393156038355142111">Sugerir contraseña segura</translation> +<translation id="6393550101331051049">Puede mostrar contenido no seguro</translation> <translation id="6395423953133416962">Enviar <ph name="BEGIN_LINK1" />información del sistema<ph name="END_LINK1" /> y <ph name="BEGIN_LINK2" />métricas<ph name="END_LINK2" /></translation> <translation id="6396988158856674517">Impedir que los sitios usen los sensores de movimiento</translation> <translation id="6398715114293939307">Quitar Google Play Store</translation> @@ -4575,6 +4609,7 @@ <translation id="6425556984042222041">Velocidad para texto a voz</translation> <translation id="6426200009596957090">Abrir configuración de ChromeVox</translation> <translation id="642654727595919401"><ph name="DOMAIN" /> requiere que hagas una copia de seguridad de tus datos y devuelvas este dispositivo <ph name="DEVICE_TYPE" /> en el transcurso de 1 semana. <ph name="LINK_BEGIN" />Ver detalles<ph name="LINK_END" /></translation> +<translation id="642729974267661262">No puede reproducir sonido</translation> <translation id="6428982734197629783">Procesando imagen</translation> <translation id="6429384232893414837">Error en la actualización</translation> <translation id="6430814529589430811">Certificado único ASCII con codificación Base64</translation> @@ -4603,6 +4638,7 @@ <translation id="6458701200018867744">No se pudo realizar la descarga (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation> <translation id="6459488832681039634">Usar la selección para buscar</translation> <translation id="6459799433792303855">La ventana activa se movió a otra pantalla.</translation> +<translation id="6460566145397380451">Puede conectarse a dispositivos MIDI</translation> <translation id="6460601847208524483">Buscar siguiente</translation> <translation id="6461170143930046705">Buscando redes…</translation> <translation id="6463795194797719782">&Edición</translation> @@ -4634,6 +4670,7 @@ <translation id="6499681088828539489">Deshabilitar proxies para redes compartidas</translation> <translation id="650266656685499220">Para crear álbumes, ve a Google Fotos</translation> <translation id="6503077044568424649">Más visitados</translation> +<translation id="650457560773015827">Botón izquierdo</translation> <translation id="6504611359718185067">Conectarse a Internet para agregar una impresora</translation> <translation id="6506374932220792071">Firma X9.62 ECDSA con SHA-256</translation> <translation id="6508248480704296122">Relacionada con <ph name="NAME_PH" /></translation> @@ -4835,6 +4872,7 @@ <translation id="676560328519657314">Tus formas de pago de Google Pay</translation> <translation id="6767566652486411142">Elegir otro idioma…</translation> <translation id="6767639283522617719">No se puede unir al dominio. Asegúrate de que sea correcta la configuración de la unidad organizacional.</translation> +<translation id="6768034047581882264">No puede mostrar contenido no seguro</translation> <translation id="6769557323306147204"><ph name="ORGANIZATION_NAME" /> te recomienda que actualices este dispositivo.</translation> <translation id="6769712124046837540">Agregando impresora…</translation> <translation id="6770602306803890733">Mejora la seguridad para ti y todos los usuarios de la Web</translation> @@ -4926,6 +4964,7 @@ <translation id="6865313869410766144">Datos del formulario de autocompletar</translation> <translation id="6865598234501509159">La página no está en <ph name="LANGUAGE" /></translation> <translation id="6865708901122695652">Registros de acontecimientos de WebRTC (<ph name="WEBRTC_EVENT_LOG_COUNT" />)</translation> +<translation id="686609795364435700">Silencio</translation> <translation id="686664946474413495">Temperatura de color</translation> <translation id="6868934826811377550">Ver detalles</translation> <translation id="6871644448911473373">Respondedor de OCSP:<ph name="LOCATION" /></translation> @@ -4975,6 +5014,7 @@ <translation id="6922745772873733498">Ingresa un PIN para imprimir</translation> <translation id="6923132443355966645">Desplazar/Hacer clic</translation> <translation id="6923633482430812883">Se produjo un error al activar el uso compartido. Asegúrate de que el servidor de archivos al que te estás conectando sea compatible con SMBv2 o versiones posteriores.</translation> +<translation id="6929126689972602640">Los controles parentales no son compatibles con las cuentas de instituciones educativas. Si quieres agregar una cuenta de institución educativa para acceder a Google Classroom y otros sitios web a fin de hacer tarea en el hogar, primero accede con la cuenta personal del niño. Puedes agregar la cuenta de institución educativa más tarde en la configuración.</translation> <translation id="6929760895658557216">Ok Google</translation> <translation id="6930036377490597025">Llave de seguridad externa o sensor integrado</translation> <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{Se rechazó una extensión}other{Se rechazaron # extensiones}}</translation> @@ -5015,6 +5055,7 @@ <translation id="6972629891077993081">Dispositivos HID</translation> <translation id="6972754398087986839">Comenzar</translation> <translation id="6972887130317925583">Cambiaste correctamente la contraseña hackeada. Puedes revisar las contraseñas en cualquier momento, en <ph name="SETTINGS" />.</translation> +<translation id="697312151395002334">Puede enviar ventanas emergentes y usar redireccionamientos</translation> <translation id="6973611239564315524">Hay disponible una actualización a Debian 10 (Buster)</translation> <translation id="6974609594866392343">Modo de demostración sin conexión</translation> <translation id="6977381486153291903">Revisión de firmware</translation> @@ -5037,6 +5078,7 @@ <translation id="6995899638241819463">Advertirme si quedan expuestas las contraseñas ante una violación de la seguridad de los datos</translation> <translation id="6997642619627518301"><ph name="NAME_PH" />: Registro de actividad</translation> <translation id="6997707937646349884">En tus dispositivos:</translation> +<translation id="6998093258894828179">Ocultar tarjetas</translation> <translation id="6998793565256476099">Inscribe el dispositivo para realizar videoconferencias</translation> <translation id="6999956497249459195">Grupo nuevo</translation> <translation id="7000206553895739324"><ph name="PRINTER_NAME" /> está conectada, pero debe configurarse</translation> @@ -5053,6 +5095,7 @@ <translation id="7005848115657603926">Rango de páginas no válido, utiliza <ph name="EXAMPLE_PAGE_RANGE" /></translation> <translation id="7006634003215061422">Margen inferior</translation> <translation id="7007648447224463482">Abrir todo en una ventana nueva</translation> +<translation id="7009709314043432820"><ph name="APP_NAME" /> está utilizando la cámara</translation> <translation id="701080569351381435">Ver código fuente</translation> <translation id="7014174261166285193">Error de instalación</translation> <translation id="7017004637493394352">Di "OK Google" otra vez.</translation> @@ -5072,6 +5115,7 @@ <translation id="7038632520572155338">Accesibilidad con interruptores</translation> <translation id="7039326228527141150">Acceder a dispositivos USB de <ph name="VENDOR_NAME" /></translation> <translation id="7039912931802252762">Inicio de sesión de tarjeta inteligente de Microsoft</translation> +<translation id="7039951224110875196">Crear una Cuenta de Google para un niño</translation> <translation id="7040230719604914234">Operador</translation> <translation id="7043108582968290193">¡Listo! No se encontraron aplicaciones incompatibles.</translation> <translation id="7044124535091449260">Más información sobre el acceso a sitios</translation> @@ -5143,6 +5187,7 @@ <translation id="7121362699166175603">Borra el historial y las sugerencias de autocompletado en la barra de direcciones. Es posible que tu cuenta de Google tenga otros formularios del historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="7121438501124788993">Modo de desarrollador</translation> <translation id="7121728544325372695">Guiones inteligentes</translation> +<translation id="7123030151043029868">Puede descargar múltiples archivos de forma automática</translation> <translation id="7123360114020465152">Ya no es compatible</translation> <translation id="7125148293026877011">Borrar Crostini</translation> <translation id="7127980134843952133">Historial de descargas</translation> @@ -5157,6 +5202,7 @@ <translation id="7136984461011502314">Bienvenido a <ph name="PRODUCT_NAME" /></translation> <translation id="7136993520339022828">Se produjo un error. Elige otras imágenes y vuelve a intentarlo.</translation> <translation id="713888829801648570">La contraseña no se pudo verificar porque no tienes conexión a Internet.</translation> +<translation id="7139627972753429585"><ph name="APP_NAME" /> está usando el micrófono</translation> <translation id="7140928199327930795">No hay otros dispositivos disponibles.</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="7143207342074048698">Conectando</translation> @@ -5296,6 +5342,7 @@ <translation id="7324297612904500502">Foro de la versión Beta</translation> <translation id="7325209047678309347">El papel está atorado</translation> <translation id="7325437708553334317">Extensión de alto contraste</translation> +<translation id="7326004502692201767">Configura <ph name="DEVICE_TYPE" /> para un niño</translation> <translation id="7328699668338161242">El Asistente ya puede reconocer tu voz</translation> <translation id="7328867076235380839">La combinación no es válida</translation> <translation id="7329154610228416156">Se produjo un error de acceso porque está configurado para usar una URL no segura (<ph name="BLOCKED_URL" />). Comunícate con el administrador.</translation> @@ -5420,6 +5467,7 @@ <translation id="7465635034594602553">Se produjo un error. Espera unos minutos y vuelve a ejecutar <ph name="APP_NAME" />.</translation> <translation id="7465778193084373987">URL de revocación del certificado de Netscape</translation> <translation id="7469894403370665791">Conectarse automáticamente a esta red</translation> +<translation id="7470424110735398630">Puede ver el contenido del portapapeles</translation> <translation id="747114903913869239">Error: No se puede decodificar la extensión</translation> <translation id="7473891865547856676">No, gracias</translation> <translation id="747459581954555080">Restaurar todo</translation> @@ -5529,6 +5577,7 @@ <translation id="7607002721634913082">Detenido</translation> <translation id="7608810328871051088">Preferencias de Android</translation> <translation id="7609148976235050828">Conéctate a Internet y vuelve a intentarlo.</translation> +<translation id="7612655942094160088">Habilita las funciones del teléfono conectado.</translation> <translation id="7614260613810441905">Preguntar cuando un sitio quiera editar archivos o carpetas de tu dispositivo (recomendado)</translation> <translation id="761530003705945209">Crea una copia de seguridad en Google Drive. Restaura tus datos o cambia de dispositivo en cualquier momento con facilidad. Se incluyen datos de apps. Se suben las copias de seguridad a Google y se encriptan con la contraseña de tu Cuenta de Google.</translation> <translation id="7615365294369022248">Se produjo un error al agregar una cuenta</translation> @@ -5647,6 +5696,7 @@ <translation id="7732111077498238432">La red está controlada por políticas</translation> <translation id="7737115349420013392">Vinculando con "<ph name="DEVICE_NAME" />"…</translation> <translation id="7737238973539693982">Borrar Linux (Beta)</translation> +<translation id="7737948071472253612">No puede usar la cámara</translation> <translation id="7740996059027112821">Estándar</translation> <translation id="7742706086992565332">Puedes establecer el nivel del zoom en sitios web determinados.</translation> <translation id="774377079771918250">Elige dónde guardarla</translation> @@ -5655,6 +5705,7 @@ <translation id="7750228210027921155">Pantalla en pantalla</translation> <translation id="7751260505918304024">Mostrar todo</translation> <translation id="7753735457098489144">No se pudo instalar porque el espacio de almacenamiento es insuficiente. Para liberar espacio, borra archivos del almacenamiento del dispositivo.</translation> +<translation id="7754347746598978109">No puede usar JavaScript</translation> <translation id="7754704193130578113">Preguntar ubicación antes de descargar</translation> <translation id="7755287808199759310">Uno de tus padres puede desbloquearlo por ti</translation> <translation id="7757592200364144203">Cambiar el nombre del dispositivo</translation> @@ -5707,6 +5758,7 @@ <translation id="7798844538707273832">Se bloqueó automáticamente <ph name="PERMISSION" /></translation> <translation id="7799299114731150374">Se estableció el fondo de pantalla correctamente</translation> <translation id="7800518121066352902">Girar &a la izquierda</translation> +<translation id="7802539296536804623">No se muestran tarjetas en esta página</translation> <translation id="780301667611848630">No, gracias</translation> <translation id="7804072833593604762">Pestaña cerrada</translation> <translation id="7805768142964895445">Estado</translation> @@ -6135,6 +6187,7 @@ <translation id="826905130698769948">El Certificado de cliente no es válido</translation> <translation id="8270242299912238708">Documentos PDF</translation> <translation id="827097179112817503">Mostrar el botón de la Página principal</translation> +<translation id="8271379370373330993">Padre o madre, los siguientes pasos son para ti. Después de configurar la cuenta, puedes devolverle el dispositivo <ph name="DEVICE_TYPE" /> tu hijo.</translation> <translation id="8272443605911821513">Para administrar tus extensiones, haz clic en Extensiones en el menú "Más herramientas".</translation> <translation id="8274332263553132018">Transmitir archivo</translation> <translation id="8274924778568117936">No apagues ni cierres el dispositivo <ph name="DEVICE_TYPE" /> hasta que finalice la actualización. Cuando el proceso termine, el dispositivo <ph name="DEVICE_TYPE" /> se reiniciará.</translation> @@ -6145,6 +6198,7 @@ <translation id="8281886186245836920">Omitir</translation> <translation id="8283475148136688298">El código de autenticación se rechazó mientras se establecía la conexión con "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">todos los sitios de <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Subtítulos</translation> <translation id="8286036467436129157">Iniciar sesión</translation> <translation id="8286963743045814739">Puedes navegar de forma privada con una ventana de incógnito</translation> <translation id="8287902281644548111">Busca por URL o llamada a la API</translation> @@ -6158,6 +6212,7 @@ <translation id="8300011035382349091">Edita el favorito para esta pestaña</translation> <translation id="8300374739238450534">Azul noche</translation> <translation id="8300849813060516376">OTASP falló</translation> +<translation id="8304383784961451596">No tienes autorización para usar este dispositivo. Comunícate con el administrador para solicitar permiso de acceso o bien accede con una Cuenta de Google supervisada por Family Link.</translation> <translation id="8308179586020895837">Preguntar si <ph name="HOST" /> quiere acceder a la cámara</translation> <translation id="830868413617744215">Beta</translation> <translation id="8309458809024885768">El certificado ya existe</translation> @@ -6171,6 +6226,7 @@ <translation id="8322814362483282060">Esta página no tiene permiso para acceder al micrófono.</translation> <translation id="8323167517179506834">Ingresar URL</translation> <translation id="8324784016256120271">Los sitios pueden usar cookies para ver la actividad de navegación en diferentes sitios, por ejemplo, con el fin de personalizar anuncios.</translation> +<translation id="8325413836429495820">No puede ver el contenido del portapapeles</translation> <translation id="8326478304147373412">PKCS N. º 7, cadena de certificados</translation> <translation id="8327039559959785305">Se produjo un error al montar archivos de Linux. Vuelve a intentarlo.</translation> <translation id="8327676037044516220">Configuración de contenido y permisos</translation> @@ -6220,6 +6276,7 @@ <translation id="8382913212082956454">Copiar dir&ección de correo electrónico</translation> <translation id="8386091599636877289">No se encontró la política.</translation> <translation id="8386903983509584791">Finalizó la búsqueda</translation> +<translation id="8387361103813440603">No puede ver tu ubicación</translation> <translation id="8389416080014625855">Crear un código QR para esta página</translation> <translation id="8389492867173948260">Permitir que esta extensión lea y cambie todos tus datos en los sitios web que visitas:</translation> <translation id="8390449457866780408">El servidor no está disponible.</translation> @@ -6404,6 +6461,7 @@ <translation id="8621866727807194849">Tu computadora tiene software dañino. Chrome lo está quitando, inhabilitando las extensiones y restableciendo la configuración. Estas acciones harán que tu navegador vuelva a funcionar normalmente.</translation> <translation id="8621979332865976405">Compartir la pantalla completa</translation> <translation id="862542460444371744">&Extensiones</translation> +<translation id="8625663000550647058">No puede usar el micrófono</translation> <translation id="862727964348362408">En suspensión</translation> <translation id="862750493060684461">Caché CSS</translation> <translation id="8627706565932943526">Error al sincronizar</translation> @@ -6484,6 +6542,7 @@ <translation id="8714838604780058252">Gráficos en segundo plano</translation> <translation id="8715480913140015283">La pestaña en segundo plano está usando tu cámara</translation> <translation id="8716931980467311658">¿Quieres borrar todos los datos y las apps de Linux que se encuentran en tu carpeta Archivos de Linux de este <ph name="DEVICE_TYPE" />?</translation> +<translation id="8717145295869185525">No puede usar datos ni dispositivos de realidad virtual</translation> <translation id="8717864919010420084">Copiar vínculo</translation> <translation id="8719472795285728850">Escuchando actividades de extensiones…</translation> <translation id="8719653885894320876">Se produjo un error al descargar <ph name="PLUGIN_NAME" /></translation> @@ -6905,6 +6964,7 @@ <translation id="9179734824669616955">Configurar Linux (Beta) en tu <ph name="DEVICE_TYPE" /></translation> <translation id="9180281769944411366">Este proceso puede demorar unos minutos. Se está iniciando el contenedor de Linux.</translation> <translation id="9180380851667544951">El sitio puede compartir la pantalla</translation> +<translation id="9186963452600581158">Acceder con la Cuenta de Google de un niño</translation> <translation id="9188732951356337132">Envía datos de uso y diagnóstico. De forma automática, este dispositivo está enviando a Google datos de diagnóstico y sobre el uso del dispositivo y las apps. Esta información no se usará para identificar a tu hijo y ayudará a lograr la estabilidad de las apps y el sistema, entre otras mejoras. Algunos datos agregados también ayudarán a las apps y los socios de Google, como los desarrolladores de Android. Si habilitaste la "Actividad de web y de aplicaciones adicional" en la Cuenta de Google de tu hijo, es posible que se almacenen estos datos en esa cuenta. <ph name="BEGIN_LINK2" />Más información<ph name="END_LINK2" /></translation> <translation id="9190063653747922532">L2TP/IPsec + clave previamente compartida</translation> <translation id="9198090666959937775">Usa tu teléfono Android como llave de seguridad</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index a58aff4..3d3665d 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Error de extensión</translation> <translation id="1246158006305844142">Tus aplicaciones y ajustes se sincronizarán en todos los dispositivos Chrome OS en los que hayas iniciado sesión con tu cuenta de Google. Para ver las opciones de sincronización del navegador, ve a la <ph name="LINK_BEGIN" />configuración de Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">¿Quitar la sugerencia del portapapeles?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> se ha bloqueado porque está obsoleto</translation> <translation id="1251366534849411931">Falta una llave de apertura: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Esta acción borrará <ph name="TOTAL_USAGE" /> de datos almacenados por sitios web y aplicaciones instaladas</translation> <translation id="125220115284141797">Predeterminados</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN de Android</translation> <translation id="131461803491198646">Red doméstica, sin itinerancia</translation> <translation id="1315056510003830387">No puede usar Flash</translation> -<translation id="1315144594965013365">Asegúrate de que los dos dispositivos estén desbloqueados, se encuentren cerca y tengan el Bluetooth activado. Si vas a compartir archivos con un Chromebook, comprueba que Compartir con Nearby esté activo (selecciona la hora para abrir el área de estado y luego selecciona Compartir con Nearby).</translation> <translation id="1316136264406804862">Buscando...</translation> <translation id="1316495628809031177">La sincronización está en pausa</translation> <translation id="1317637799698924700">Tu base funcionará en el modo compatible con USB tipo C.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Compromiso de entidad emisora de certificados</translation> <translation id="2182058453334755893">Se ha copiado en tu portapapeles</translation> <translation id="2184515124301515068">Permitir que Chrome elija cuándo los sitios web pueden reproducir sonidos (recomendado)</translation> -<translation id="2187243482123994665">Presencia del usuario</translation> <translation id="2187675480456493911">La red está sincronizada con otros dispositivos de tu cuenta. Los ajustes modificados por otros usuarios no se sincronizarán. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Error de importación del certificado de servidor</translation> <translation id="2187906491731510095">Se han actualizado las extensiones</translation> @@ -2704,7 +2701,6 @@ <translation id="4104163789986725820">E&xportar...</translation> <translation id="4107048419833779140">Identificar y expulsar dispositivos de almacenamiento</translation> <translation id="4109135793348361820">Mover ventana a <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Personaliza el tamaño y el estilo de los subtítulos en las aplicaciones que admiten este ajuste.</translation> <translation id="4110490973560452005">Descarga completa: <ph name="FILE_NAME" />. Pulsa Mayús+F6 para desplazarte al área de la barra de descargas.</translation> <translation id="4110686435123617899">Seleccionar álbum <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Navega por la Web con el modo de contraste alto</translation> @@ -2917,7 +2913,6 @@ <translation id="4400632832271803360">Mantén pulsado el menú de aplicaciones para cambiar el comportamiento de las teclas de la fila superior</translation> <translation id="4400963414856942668">Haz clic en la estrella para añadir una pestaña a marcadores</translation> <translation id="4403775189117163360">Elegir otra carpeta</translation> -<translation id="440391631796167175">No se han encontrado contraseñas poco seguras</translation> <translation id="4404136731284211429">Volver a analizar</translation> <translation id="4404843640767531781">Tu padre o madre ha bloqueado <ph name="APP_NAME" />. Pídele permiso para usar esta aplicación.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4458,8 +4453,6 @@ <translation id="6242852299490624841">Destacar esta pestaña</translation> <translation id="6243280677745499710">Establecido actualmente</translation> <translation id="6243774244933267674">Servidor no disponible</translation> -<translation id="6244185221716469155">Las contraseñas poco seguras son fáciles de adivinar. Asegúrate de que tus contraseñas sean seguras. - <ph name="BEGIN_LINK" />Ver más consejos de seguridad<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importar archivo ONC</translation> <translation id="6246790815526961700">Subir desde dispositivo</translation> <translation id="6247620186971210352">No se han encontrado aplicaciones</translation> @@ -6207,6 +6200,7 @@ <translation id="8281886186245836920">Saltar</translation> <translation id="8283475148136688298">Se ha rechazado el código de autenticación mientras se establecía conexión con <ph name="DEVICE_NAME" />.</translation> <translation id="8284279544186306258">todos los sitios de <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Subtítulos</translation> <translation id="8286036467436129157">Iniciar sesión</translation> <translation id="8286963743045814739">Puedes navegar en privado con una ventana de incógnito</translation> <translation id="8287902281644548111">Buscar por llamada a la API o URL</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index 3fedb3b..7930e4e3 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Laienduse viga</translation> <translation id="1246158006305844142">Teie rakendused ja seaded sünkroonitakse kõigis Chrome OS-i seadmetes, kuhu olete oma Google'i kontoga sisse logitud. Brauseri sünkroonimisvalikute nägemiseks avage <ph name="LINK_BEGIN" />Chrome'i seaded<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Kas eemaldada soovitus lõikelaualt?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> blokeeriti, sest selle tugi katkestati</translation> <translation id="1251366534849411931">Vaja on esimest looksulgu: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">See kustutab <ph name="TOTAL_USAGE" /> ulatuses saitide ja installitud rakenduste salvestatud andmeid</translation> <translation id="125220115284141797">Vaikeseade</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Androidi VPN</translation> <translation id="131461803491198646">Koduvõrk, mitte rändlus</translation> <translation id="1315056510003830387">Pole lubatud kasutada Flashi</translation> -<translation id="1315144594965013365">Veenduge, et mõlemad seadmed oleksid avatud, lähestikku ning Bluetooth oleks sisse lülitatud. Kui jagate Chromebookiga, veenduge, et funktsioon Läheduses jagamine oleks aktiveeritud (avage olekuala, valides kellaaja, seejärel tehke valik Läheduses jagamine).</translation> <translation id="1316136264406804862">Otsimine ...</translation> <translation id="1316495628809031177">Sünkroonimine on peatatud</translation> <translation id="1317637799698924700">Teie dokkimisjaam töötab C-tüüpi USB-ga ühilduvas režiimis.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">CA turvarike</translation> <translation id="2182058453334755893">Kopeeritud lõikelauale</translation> <translation id="2184515124301515068">Luba Chrome'il valida, millal saidid võivad heli esitada (soovitatav)</translation> -<translation id="2187243482123994665">Kasutaja kohalolek</translation> <translation id="2187675480456493911">Sünkroonitud muude teie kontol olevate seadmetega. Teiste kasutajate muudetud seadeid ei sünkroonita. <ph name="LINK_BEGIN" />Lisateave<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Serveri sertifikaadi impordi viga</translation> <translation id="2187906491731510095">Laiendused on värskendatud</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">&Ekspordi...</translation> <translation id="4107048419833779140">Salvestusseadmete tuvastamine ja väljutamine</translation> <translation id="4109135793348361820">Teisalda aken kasutaja <ph name="USER_NAME" /> töölauale (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Kohandage subtiitrite suurust ja stiili rakenduste puhul, mis seda seadet toetavad</translation> <translation id="4110490973560452005">Allalaadimine on lõpule viidud: <ph name="FILE_NAME" />. Allalaadimiste riba valikute vahel vahetamiseks vajutage klahvikombinatsiooni Tõstuklahv + F6.</translation> <translation id="4110686435123617899">Valige album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Sirvige veebi suure kontrastsusega režiimis</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Ülemise rea klahvide toimingu vahetamiseks hoidke all käivitajaklahvi</translation> <translation id="4400963414856942668">Vahelehe järjehoidjatesse lisamiseks klõpsake tärnil</translation> <translation id="4403775189117163360">Valige teine kaust</translation> -<translation id="440391631796167175">Ühtegi nõrka parooli ei leitud</translation> <translation id="4404136731284211429">Skanni uuesti</translation> <translation id="4404843640767531781">Rakenduse <ph name="APP_NAME" /> blokeeris sinu vanem. Küsi vanemalt luba selle rakenduse kasutamiseks.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">Tõsta see vaheleht esile</translation> <translation id="6243280677745499710">Praegu määratud</translation> <translation id="6243774244933267674">Server ei ole saadaval</translation> -<translation id="6244185221716469155">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="6244245036423700521">Impordi ONC-fail</translation> <translation id="6246790815526961700">Seadmest üleslaadimine</translation> <translation id="6247620186971210352">Ühtegi rakendust ei leitud</translation> @@ -6208,6 +6201,7 @@ <translation id="8281886186245836920">Jäta vahele</translation> <translation id="8283475148136688298">Autentimiskood lükati seadmega „<ph name="DEVICE_NAME" />” ühenduse loomisel tagasi.</translation> <translation id="8284279544186306258">kõik domeeni <ph name="WEBSITE_1" /> saidid</translation> +<translation id="8284326494547611709">Subtiitrid</translation> <translation id="8286036467436129157">Logi sisse</translation> <translation id="8286963743045814739">Inkognito aknas saab privaatselt sirvida</translation> <translation id="8287902281644548111">API kutsungi/URL-i järgi otsimine</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index b383f05..c229374 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Luzapenaren errorea</translation> <translation id="1246158006305844142">Aplikazioak eta ezarpenak Chrome OS darabilten gailu guztietan sinkronizatuko dira, Google-ko kontuarekin saioa hasita badaukazu haietan. Arakatzailea sinkronizatzeko aukerak ikusteko, joan <ph name="LINK_BEGIN" />Chrome-ren ezarpenetara<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Iradokizuna arbeletik kendu nahi duzu?</translation> -<translation id="1249643471736608405">Blokeatu egin da <ph name="PLUGIN_NAME" /> zaharkituta dagoelako</translation> <translation id="1251366534849411931">Ezkerreko giltza behar da: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Webguneek eta instalatutako aplikazioek gordetako datuen <ph name="TOTAL_USAGE" /> garbituko dira</translation> <translation id="125220115284141797">Lehenetsiak</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN sarea</translation> <translation id="131461803491198646">Tokiko sarea, ez ibiltaritza</translation> <translation id="1315056510003830387">Ezin du erabili Flash</translation> -<translation id="1315144594965013365">Egiaztatu bi gailuak desblokeatuta eta elkarrengandik hurbil daudela, eta Bluetooth-a aktibatuta daukatela. Chromebook batekin edukia partekatzeko asmoa baduzu, egiaztatu Nearby Sharing aktibatuta daukala (hautatu ordua egoeraren eremua irekitzeko, eta, gero, hautatu Nearby Share).</translation> <translation id="1316136264406804862">Bilatzen…</translation> <translation id="1316495628809031177">Sinkronizazioa pausatuta dago</translation> <translation id="1317637799698924700">C motako USB egokigailuekiko (USB Type-C) bateragarritasun moduan funtzionatuko du oinarriak.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Autoritate ziurtagiri-emailea kolokan</translation> <translation id="2182058453334755893">Arbelean kopiatu da</translation> <translation id="2184515124301515068">Utzi Chrome-k erabaki dezan zer webguneri baimenduko dion soinua erreproduzitzea (gomendatua)</translation> -<translation id="2187243482123994665">Erabiltzailearen presentzia</translation> <translation id="2187675480456493911">Kontuko beste gailu batzuekin sinkronizatuta dago. Ez dira sinkronizatuko beste erabiltzaileek aldatutako ezarpenak. <ph name="LINK_BEGIN" />Lortu informazio gehiago<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Errore bat gertatu da zerbitzariaren ziurtagiria inportatzean</translation> <translation id="2187906491731510095">Eguneratu dira luzapenak</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">E&sportatu…</translation> <translation id="4107048419833779140">Identifikatu eta kanporatu memoria-gailuak</translation> <translation id="4109135793348361820">Eraman leihoa <ph name="USER_NAME" /> erabiltzailearen mahaigainera (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Pertsonalizatu azpitituluen tamaina eta estiloa ezarpen hori onartzen duten aplikazioetan</translation> <translation id="4110490973560452005">Deskargatu da: <ph name="FILE_NAME" />. Sakatu Maius + F6 deskargen barraren eremura iritsi arte.</translation> <translation id="4110686435123617899">Hautatu <ph name="TITLE" /> (<ph name="DESC" />) albuma</translation> <translation id="4110895898888439383">Arakatu sarea kontraste handiko moduan</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Goiko errenkadako teklen portaera aldatzeko, eduki sakatuta Abiarazlea tekla</translation> <translation id="4400963414856942668">Fitxen laster-markak egiteko, egin klik izarrean</translation> <translation id="4403775189117163360">Aukeratu beste karpeta bat</translation> -<translation id="440391631796167175">Pasahitz guztiak seguruak dira</translation> <translation id="4404136731284211429">Aztertu berriro</translation> <translation id="4404843640767531781">Guraso batek <ph name="APP_NAME" /> blokeatu du. Eska iezaiozu baimena aplikazioa erabiltzeko.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">Fokuratu fitxa</translation> <translation id="6243280677745499710">Ezarrita dagoena</translation> <translation id="6243774244933267674">Zerbitzaria ez dago erabilgarri</translation> -<translation id="6244185221716469155">Seguruak ez diren pasahitzak erraz asmatzen dira. Ziurtatu pasahitz seguruak sortzen dituzula. - <ph name="BEGIN_LINK" />Ikusi segurtasun-aholku gehiago.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Inportatu ONC fitxategia</translation> <translation id="6246790815526961700">Kargatu gailutik</translation> <translation id="6247620186971210352">Ez da aurkitu aplikaziorik</translation> @@ -6207,6 +6200,7 @@ <translation id="8281886186245836920">Saltatu</translation> <translation id="8283475148136688298">Autentifikazioa baztertu egin da "<ph name="DEVICE_NAME" />" gailura konektatzean.</translation> <translation id="8284279544186306258"><ph name="WEBSITE_1" /> webguneak</translation> +<translation id="8284326494547611709">Azpitituluak</translation> <translation id="8286036467436129157">Hasi saioa</translation> <translation id="8286963743045814739">Sarea modu pribatuan araka dezakezu ezkutuko moduko leihoak erabilita</translation> <translation id="8287902281644548111">Bilatu API deiaren edo URLaren arabera</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index d04157e1..a005ca0 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">خطای افزونه</translation> <translation id="1246158006305844142">برنامهها و تنظیماتتان در همه دستگاههای «سیستمعامل Chrome» که با حساب Google خود در آنها به سیستم وارد شدهاید همگامسازی خواهد شد. برای گزینههای همگامسازی مرورگر، به <ph name="LINK_BEGIN" />تنظیمات Chrome<ph name="LINK_END" /> بروید.</translation> <translation id="1246905108078336582">پیشنهاد از بریدهدان حذف شود؟</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> چون منسوخ شده است، مسدود شد</translation> <translation id="1251366534849411931">اینجا باید آکولاد باز باشد: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">با این کار <ph name="TOTAL_USAGE" /> از دادههایی که سایتها و برنامههای نصبشده ذخیره کردهاند پاک میشود</translation> <translation id="125220115284141797">پیشفرض</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">شبکه اصلی، بدون فراگردی</translation> <translation id="1315056510003830387">اجازه ندارد از Flash استفاده کند</translation> -<translation id="1315144594965013365">مطمئن شوید قفل هر دو دستگاه باز باشد، نزدیک یکدیگر باشند، و بلوتوث در هر دو دستگاه روشن باشد. اگر درحال همرسانی با Chromebook هستید، مطمئن شوید «همرسانی با اطراف» در آن روشن باشد (ناحیه نشانگر وضعیت را با انتخاب کردن زمان باز کنید، سپس «همرسانی با اطراف» را انتخاب کنید).</translation> <translation id="1316136264406804862">در حال جستجو...</translation> <translation id="1316495628809031177">همگامسازی موقتاً متوقف شده است</translation> <translation id="1317637799698924700">ایستگاه پایه اتصال در حالت سازگار با «USB نوع C» کار میکند.</translation> @@ -1035,7 +1033,6 @@ <translation id="2178614541317717477">بی اعتبارشدن CA</translation> <translation id="2182058453334755893">در بریدهدان کپی شد</translation> <translation id="2184515124301515068">Chrome انتخاب کند سایتها چه موقع صدا پخش کنند (توصیه میشود)</translation> -<translation id="2187243482123994665">حضور کاربر</translation> <translation id="2187675480456493911">با دستگاههای دیگر در حسابتان همگامسازی شده است. تنظیماتی که دیگر کاربران تغییر دادهاند همگامسازی نخواهد شد. <ph name="LINK_BEGIN" />بیشتر بدانید<ph name="LINK_END" /></translation> <translation id="2187895286714876935">خطای وارد کردن مجوز سرور</translation> <translation id="2187906491731510095">افزونهها بهروزرسانی شدند</translation> @@ -2707,7 +2704,6 @@ <translation id="4104163789986725820">&صادر کردن...</translation> <translation id="4107048419833779140">شناسایی و خارج کردن دستگاههای ذخیرهسازی</translation> <translation id="4109135793348361820">انتقال پنجره به <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">اندازه و سبک زیرنویس ناشنوایان را برای برنامههایی که از این تنظیم پشتیبانی میکنند سفارشی میکند</translation> <translation id="4110490973560452005">بارگیری کامل شد: <ph name="FILE_NAME" />. برای چرخش در قسمت نوار بارگیریها، Shift+F6 را فشار دهید.</translation> <translation id="4110686435123617899">انتخاب آلبوم <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">مرور وب در حالت کنتراست بالا</translation> @@ -2920,7 +2916,6 @@ <translation id="4400632832271803360">برای تغییر عملکرد کلیدهای ردیف بالا، کلید «راهانداز» را نگهدارید</translation> <translation id="4400963414856942668">برای نشانکگذاری یک برگه، میتوانید روی ستاره کلیک کنید</translation> <translation id="4403775189117163360">پوشه دیگری را انتخاب کنید</translation> -<translation id="440391631796167175">هیچ گذرواژه ضعیفی پیدا نشد</translation> <translation id="4404136731284211429">اسکن دوباره</translation> <translation id="4404843640767531781">ولیتان <ph name="APP_NAME" /> را مسدود کرده است. از ولیتان بخواهید استفاده از این برنامه را مجاز کند.</translation> <translation id="4405117686468554883">*.jpeg، *.jpg، *.png</translation> @@ -4464,8 +4459,6 @@ <translation id="6242852299490624841">متمرکز کردن این برگه</translation> <translation id="6243280677745499710">درحال حاضر تنظیم شده است</translation> <translation id="6243774244933267674">سرور در دسترس نیست</translation> -<translation id="6244185221716469155">گذرواژههای ضعیف را میتوان بهراحتی حدس زد. مطمئن شوید گذرواژههایی که ایجاد میکنید قوی باشند. - <ph name="BEGIN_LINK" />نکتههای امنیتی بیشتری ببینید<ph name="END_LINK" />.</translation> <translation id="6244245036423700521">وارد کردن فایل «پیکربندی شبکه باز» (ONC)</translation> <translation id="6246790815526961700">بارگذاری از دستگاه</translation> <translation id="6247620186971210352">برنامهای پیدا نشد</translation> @@ -6215,6 +6208,7 @@ <translation id="8281886186245836920">رد شدن</translation> <translation id="8283475148136688298">هنگام اتصال به «<ph name="DEVICE_NAME" />» کد راستیآزمایی رد شد.</translation> <translation id="8284279544186306258">همه سایتهای <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">زیرنویسها</translation> <translation id="8286036467436129157">ورود به سیستم</translation> <translation id="8286963743045814739">با پنجره ناشناس، میتوانید خصوصی مرور کنید</translation> <translation id="8287902281644548111">جستجو براساس فراخوانی API/نشانی وب</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index 104b354..94d38077 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Laajennusvirhe</translation> <translation id="1246158006305844142">Sovelluksesi ja asetuksesi synkronoidaan kaikilla Chrome OS ‑laitteilla, joilla olet kirjautuneena Google-tilillesi. Näet selaimen synkronointiasetukset <ph name="LINK_BEGIN" />Chromen asetuksista<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Poistetaanko ehdotus leikepöydältä?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> estettiin, koska se on poistettu käytöstä.</translation> <translation id="1251366534849411931">Odotettu aloittava kaarisulje: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Tämä poistaa <ph name="TOTAL_USAGE" /> dataa, jonka sivustot ja niiden asentamat sovellukset ovat tallentaneet.</translation> <translation id="125220115284141797">Oletus</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Kotiverkko, ei roaming-tilassa </translation> <translation id="1315056510003830387">Flashin käyttö sallittu</translation> -<translation id="1315144594965013365">Varmista, että kumpikaan laite ei ole lukittuna, että ne ovat lähekkäin ja että Bluetooth on päällä. Jos jaat Chromebookilla, varmista että Lähijakaminen on päällä (avaa tila-alue valitsemalla aika ja sitten Lähijakaminen).</translation> <translation id="1316136264406804862">Haetaan...</translation> <translation id="1316495628809031177">Synkronointi on keskeytetty</translation> <translation id="1317637799698924700">Telineesi toimii USB Type-C ‑yhteensopivassa tilassa.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Myöntäjäkompromissi</translation> <translation id="2182058453334755893">Kopioitu leikepöydälle</translation> <translation id="2184515124301515068">Anna Chromen valita, milloin sivustot voivat toistaa ääniä (suositus)</translation> -<translation id="2187243482123994665">Käyttäjän paikallaolo</translation> <translation id="2187675480456493911">Synkronoitu muiden tililläsi olevien laitteiden kanssa. Muiden käyttäjien muuttamia asetuksia ei synkronoida. <ph name="LINK_BEGIN" />Lue lisää<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Palvelimen varmenteen tuontivirhe</translation> <translation id="2187906491731510095">Laajennukset päivitetty</translation> @@ -2702,7 +2699,6 @@ <translation id="4104163789986725820">V&ie...</translation> <translation id="4107048419833779140">Tunnistaa ja poistaa tallennuslaitteet</translation> <translation id="4109135793348361820">Siirrä ikkuna käyttäjälle <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Muokkaa tekstitysten kokoa ja tyyliä sovelluksissa, jotka tukevat tätä asetusta</translation> <translation id="4110490973560452005">Lataus valmis: <ph name="FILE_NAME" />. Paina Shift + F6 siirtyäksesi latauspalkkialueelle.</translation> <translation id="4110686435123617899">Valitse albumi <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Selaa internetiä Suuri kontrasti ‑tilassa</translation> @@ -2915,7 +2911,6 @@ <translation id="4400632832271803360">Pidä Käynnistysohjelma-näppäintä pohjassa, niin voit vaihtaa ylärivin näppäinten toimintaa.</translation> <translation id="4400963414856942668">Voit lisätä välilehden kirjanmerkkeihin klikkaamalla tähteä</translation> <translation id="4403775189117163360">Valitse toinen kansio</translation> -<translation id="440391631796167175">Heikkoja salasanoja ei löytynyt</translation> <translation id="4404136731284211429">Hae uudelleen</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> on vanhempasi estämä. Pyydä vanhemmaltasi lupaa käyttää tätä sovellusta.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4458,8 +4453,6 @@ <translation id="6242852299490624841">Aseta tämä välilehti aktiiviseksi</translation> <translation id="6243280677745499710">Nykyinen taustakuva</translation> <translation id="6243774244933267674">Palvelin ei ole käytettävissä</translation> -<translation id="6244185221716469155">Heikko salasana on helppo arvata. Muista käyttää vahvoja salasanoja. - <ph name="BEGIN_LINK" />Katso muita tietoturvavinkkejä.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Tuo ONC-tiedosto</translation> <translation id="6246790815526961700">Lataa laitteelta</translation> <translation id="6247620186971210352">Sovelluksia ei löytynyt.</translation> @@ -6206,6 +6199,7 @@ <translation id="8281886186245836920">Ohita</translation> <translation id="8283475148136688298">Todennuskoodi hylättiin yhdistettäessä laitteeseen <ph name="DEVICE_NAME" />.</translation> <translation id="8284279544186306258">kaikki verkkotunnuksen <ph name="WEBSITE_1" /> sivustot</translation> +<translation id="8284326494547611709">Tekstitykset</translation> <translation id="8286036467436129157">Kirjaudu sisään</translation> <translation id="8286963743045814739">Voit selata verkkoa yksityisesti incognito-ikkunan avulla.</translation> <translation id="8287902281644548111">Hae API-kutsun/URL-osoitteen mukaan</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index 4024556..23add80 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Error sa extension</translation> <translation id="1246158006305844142">Magsi-sync ang iyong mga app at setting sa lahat ng Chrome OS device kung saan ka naka-sign in gamit ang Google account mo. Para sa mga opsyon sa pag-sync ng browser, pumunta sa<ph name="LINK_BEGIN" />mga setting ng Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Alisin ang suhestyon mula sa clipboard?</translation> -<translation id="1249643471736608405">Na-block ang <ph name="PLUGIN_NAME" /> dahil hindi na ito ginagamit</translation> <translation id="1251366534849411931">Inaasahang opening curly brace: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Iki-clear nito ang <ph name="TOTAL_USAGE" /> ng data na na-store ng mga site at naka-install na app</translation> <translation id="125220115284141797">Default</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Home network, hindi roaming</translation> <translation id="1315056510003830387">Hindi pinapayagang gumamit ng Flash</translation> -<translation id="1315144594965013365">Tiyaking naka-unlock at magkalapit ang dalawang device, at naka-on ang Bluetooth ng mga ito. Kung nagbabahagi ka sa isang Chromebook, tiyaking naka-on ang Nearby Sharing nito (buksan ang lugar ng status sa pamamagitan ng pagpili sa oras, pagkatapos ay piliin ang Nearby Share).</translation> <translation id="1316136264406804862">Naghahanap...</translation> <translation id="1316495628809031177">Naka-pause ang pag-sync</translation> <translation id="1317637799698924700">Gagana ang iyong istasyon ng pag-dock sa USB Type-C compatible mode.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">CA Compromise</translation> <translation id="2182058453334755893">Kinopya sa Iyong Clipboard</translation> <translation id="2184515124301515068">Hayaan ang Chrome na pumili kung kailan makakapag-play ng tunog ang mga site (inirerekomenda)</translation> -<translation id="2187243482123994665">Pagiging aktibo ng user</translation> <translation id="2187675480456493911">Naka-sync sa iba pang device sa iyong account. Hindi masi-sync ang mga setting na binago ng iba pang user. <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Error sa Pag-import ng Certificate ng Server</translation> <translation id="2187906491731510095">Na-update ang mga extension</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">I-e&xport...</translation> <translation id="4107048419833779140">Kumilala at mag-eject ng mga storage device</translation> <translation id="4109135793348361820">Ilipat ang window sa <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Mag-customize ng laki at istilo ng caption para sa mga app na sumusuporta sa setting na ito</translation> <translation id="4110490973560452005">Na-download na: <ph name="FILE_NAME" />. Pindutin ang Shift+F6 para mag-cycle sa lugar ng bar ng mga download.</translation> <translation id="4110686435123617899">Piliin ang album na <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">I-browse ang web sa high contrast mode</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Pindutin nang matagal ang key ng Launcher upang mapalitan ang gawi ng mga key sa itaas na row</translation> <translation id="4400963414856942668">Puwede mong i-click ang star para mag-bookmark ng tab</translation> <translation id="4403775189117163360">Pumili ng ibang folder</translation> -<translation id="440391631796167175">Walang nakitang mahinang password</translation> <translation id="4404136731284211429">I-scan ulit</translation> <translation id="4404843640767531781">Na-block ng iyong magulang ang <ph name="APP_NAME" />. Humiling sa iyong magulang ng pahintulot na gamitin ang app na ito.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, at *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">I-focus ang tab na ito</translation> <translation id="6243280677745499710">Kasalukuyang nakatakda</translation> <translation id="6243774244933267674">Hindi available ang server</translation> -<translation id="6244185221716469155">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="6244245036423700521">I-import ang ONC File</translation> <translation id="6246790815526961700">Mag-upload mula sa device</translation> <translation id="6247620186971210352">Walang nakitang app</translation> @@ -6208,6 +6201,7 @@ <translation id="8281886186245836920">Laktawan</translation> <translation id="8283475148136688298">Tinanggihan ang code sa pagpapatunay habang kumokonekta sa "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">lahat ng site ng <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Mga Caption</translation> <translation id="8286036467436129157">Mag-sign In</translation> <translation id="8286963743045814739">Maaari kang mag-browse nang pribado gamit ang isang incognito window</translation> <translation id="8287902281644548111">Maghanap ayon sa API call/URL</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index 779b086a..51d1222a 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Erreur au niveau des extensions</translation> <translation id="1246158006305844142">Vos applications et vos paramètres seront synchronisés sur tous les appareils Chrome OS sur lesquels vous êtes connecté avec votre compte Google. Pour voir les options de synchronisation du navigateur, accédez aux <ph name="LINK_BEGIN" />paramètres de Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Supprimer la suggestion du presse-papiers?</translation> -<translation id="1249643471736608405">Le plugiciel <ph name="PLUGIN_NAME" /> a été bloqué parce qu'il est obsolète</translation> <translation id="1251366534849411931">Accolade ouvrante attendue : <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Cette action effacera <ph name="TOTAL_USAGE" /> des données stockées par les sites et les applications installées</translation> <translation id="125220115284141797">Par défaut</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">RPV Android</translation> <translation id="131461803491198646">Réseau domestique, sans itinérance</translation> <translation id="1315056510003830387">Non autorisés à utiliser Flash</translation> -<translation id="1315144594965013365">Assurez-vous que les deux appareils sont déverrouillés, à proximité l'un de l'autre, et que le Bluetooth est activé. Si vous effectuez le partage avec un Chromebook, assurez-vous que le partage à proximité est activé sur celui-ci (ouvrez la zone de notifications en sélectionnant l'heure, puis en sélectionnant l'option Partage à proximité).</translation> <translation id="1316136264406804862">Recherche en cours…</translation> <translation id="1316495628809031177">Synchronisation interrompue</translation> <translation id="1317637799698924700">Votre station d'accueil fonctionnera en mode de compatibilité USB de type C.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Autorité de certification compromise</translation> <translation id="2182058453334755893">Copié dans votre presse-papiers</translation> <translation id="2184515124301515068">Autoriser Chrome à choisir lorsque des sites peuvent faire jouer du son (recommandé)</translation> -<translation id="2187243482123994665">Présence de l'utilisateur</translation> <translation id="2187675480456493911">Synchronisé avec d'autres appareils associés à votre compte. Les modifications apportées par d'autres utilisateurs ne seront pas synchronisées. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Erreur d'importation du certificat serveur</translation> <translation id="2187906491731510095">Extensions mises à jour</translation> @@ -2706,7 +2703,6 @@ <translation id="4104163789986725820">E&xporter...</translation> <translation id="4107048419833779140">Identifier et éjecter la mémoire de stockage des appareils</translation> <translation id="4109135793348361820">Déplacer la fenêtre vers le bureau de <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Personnalisez la taille et le style des sous-titres pour les applications qui prennent en charge ce paramètre</translation> <translation id="4110490973560452005">Téléchargement terminé : <ph name="FILE_NAME" />. Appuyer sur Maj+F6 pour aller à la barre des téléchargements.</translation> <translation id="4110686435123617899">Sélectionner un album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Parcourir le Web en mode de contraste élevé</translation> @@ -2919,7 +2915,6 @@ <translation id="4400632832271803360">Maintenez la touche Lanceur d'applications enfoncée pour modifier la fonction des touches de la rangée supérieure</translation> <translation id="4400963414856942668">Vous pouvez cliquer sur l'étoile pour ajouter un onglet aux favoris</translation> <translation id="4403775189117163360">Choisir un autre dossier</translation> -<translation id="440391631796167175">Aucun mot de passe faible trouvé</translation> <translation id="4404136731284211429">Analyser à nouveau</translation> <translation id="4404843640767531781">L'application <ph name="APP_NAME" /> est bloquée par ton parent. Pour l'utiliser, demande l'autorisation à ton parent.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4460,8 +4455,6 @@ <translation id="6242852299490624841">Mettre cet onglet en évidence</translation> <translation id="6243280677745499710">Fond d'écran actuel</translation> <translation id="6243774244933267674">Serveur inaccessible.</translation> -<translation id="6244185221716469155">Les mots de passe faibles sont faciles à deviner. Assurez-vous de créer des mots de passe forts. - <ph name="BEGIN_LINK" />Consultez plus d'astuces de sécurité.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importer un fichier ONC</translation> <translation id="6246790815526961700">Téléverser à partir de l'appareil</translation> <translation id="6247620186971210352">Aucune application trouvée</translation> @@ -6208,6 +6201,7 @@ <translation id="8281886186245836920">Passer</translation> <translation id="8283475148136688298">Refus du code d'authentification lors de la connexion à l'appareil « <ph name="DEVICE_NAME" /> ».</translation> <translation id="8284279544186306258">tous les sites <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Sous-titres</translation> <translation id="8286036467436129157">Se connecter</translation> <translation id="8286963743045814739">Vous pouvez naviguer de manière anonyme à l'aide d'une fenêtre de navigation privée</translation> <translation id="8287902281644548111">Rechercher par appel d'API ou par URL</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index d36b36b..ffb994d0 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Erreur au niveau des extensions.</translation> <translation id="1246158006305844142">Vos applications et paramètres seront synchronisés sur tous les appareils Chrome OS où vous êtes connecté à votre compte Google. Pour les options de synchronisation du navigateur, accédez aux <ph name="LINK_BEGIN" />paramètres Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Supprimer la suggestion du presse-papiers ?</translation> -<translation id="1249643471736608405">Le plug-in "<ph name="PLUGIN_NAME" />" a été bloqué, car il est obsolète</translation> <translation id="1251366534849411931">Accolade ouvrante attendue : <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Cette action effacera <ph name="TOTAL_USAGE" /> des données stockées par les sites et les applications installées</translation> <translation id="125220115284141797">Par défaut</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN Android</translation> <translation id="131461803491198646">Réseau domestique, sans itinérance</translation> <translation id="1315056510003830387">Non autorisé à utiliser Flash</translation> -<translation id="1315144594965013365">Assurez-vous que les deux appareils sont déverrouillés, à proximité l'un de l'autre, et que le Bluetooth est activé sur chacun d'eux. Si vous partagez des fichiers à l'aide d'un Chromebook, assurez-vous que la fonctionnalité Partage à proximité est activée sur celui-ci. Pour cela, ouvrez la zone d'état en sélectionnant l'heure, puis sélectionnez "Partage à proximité".</translation> <translation id="1316136264406804862">Recherche en cours…</translation> <translation id="1316495628809031177">Synchronisation en pause</translation> <translation id="1317637799698924700">Votre station d'accueil fonctionnera dans le mode compatible USB Type-C.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Autorité de certification compromise</translation> <translation id="2182058453334755893">Copié dans le presse-papiers</translation> <translation id="2184515124301515068">Chrome détermine quand activer le son des sites (recommandé)</translation> -<translation id="2187243482123994665">Présence de l'utilisateur</translation> <translation id="2187675480456493911">Ce réseau est synchronisé avec d'autres appareils associés à votre compte. En revanche, les modifications apportées par ces utilisateurs ne seront pas synchronisées. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Erreur d'importation du certificat serveur</translation> <translation id="2187906491731510095">Extensions mises à jour</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">E&xporter...</translation> <translation id="4107048419833779140">Identifier et exclure des périphériques de stockage</translation> <translation id="4109135793348361820">Déplacer la fenêtre vers <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Personnalisez la taille et le style des sous-titres pour les applications compatibles avec ce paramètre</translation> <translation id="4110490973560452005">Téléchargement terminé : <ph name="FILE_NAME" />. Appuyez sur Maj+F6 pour accéder à la zone de la barre de téléchargements.</translation> <translation id="4110686435123617899">Sélectionner l'album "<ph name="TITLE" />" (<ph name="DESC" />)</translation> <translation id="4110895898888439383">Parcourir le Web en mode Contraste élevé</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Maintenir la touche du lanceur d'applications enfoncée pour modifier la fonction des touches de la rangée supérieure</translation> <translation id="4400963414856942668">Vous pouvez cliquer sur l'étoile pour ajouter un onglet à vos favoris</translation> <translation id="4403775189117163360">Choisir un autre dossier</translation> -<translation id="440391631796167175">Aucun mot de passe peu sécurisé trouvé</translation> <translation id="4404136731284211429">Analyser de nouveau</translation> <translation id="4404843640767531781">L'application <ph name="APP_NAME" /> est bloquée par l'un de tes parents. Tu as besoin de leur autorisation pour l'utiliser.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4460,8 +4455,6 @@ <translation id="6242852299490624841">Sélectionner cet onglet</translation> <translation id="6243280677745499710">Actuellement défini</translation> <translation id="6243774244933267674">Serveur indisponible.</translation> -<translation id="6244185221716469155">Les mots de passe peu sécurisés sont faciles à deviner. Assurez-vous de créer des mots de passe sécurisés. - <ph name="BEGIN_LINK" />Découvrez d'autres conseils de sécurité.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importer le fichier ONC</translation> <translation id="6246790815526961700">Importer depuis l'appareil</translation> <translation id="6247620186971210352">Aucune application n'a été trouvée</translation> @@ -6209,6 +6202,7 @@ <translation id="8281886186245836920">Passer</translation> <translation id="8283475148136688298">Refus du code d'authentification lors de la connexion à l'appareil "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">tous les sites <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Sous-titres</translation> <translation id="8286036467436129157">Connexion</translation> <translation id="8286963743045814739">Vous pouvez parcourir le Web en mode privé à l'aide d'une fenêtre de navigation privée</translation> <translation id="8287902281644548111">Rechercher par appel d'API/URL</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index 5588275..09acb28 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Erro de extensión</translation> <translation id="1246158006305844142">As túas aplicacións e opcións de configuración sincronizaranse en todos os dispositivos Chrome OS nos que teñas a sesión iniciada na túa Conta de Google. Para ver as opción de sincronización do navegador, accede á <ph name="LINK_BEGIN" />configuración de Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Queres quitar a suxestión do portapapeis?</translation> -<translation id="1249643471736608405">O complemento <ph name="PLUGIN_NAME" /> bloqueouse porque quedou obsoleto</translation> <translation id="1251366534849411931">Falta unha chave de apertura: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Ao realizar esta acción, borraranse <ph name="TOTAL_USAGE" /> dos datos que almacenasen os sitios e as aplicacións instaladas</translation> <translation id="125220115284141797">Predeterminadas</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN de Android</translation> <translation id="131461803491198646">Rede doméstica, sen itinerancia</translation> <translation id="1315056510003830387">Sitios que non poden usar Flash</translation> -<translation id="1315144594965013365">Asegúrate de que os dous dispositivos estean desbloqueados, preto o un do outro e co Bluetooth activado. Se vas compartir contido cun Chromebook, asegúrate de que teña activada a función Compartir por Nearby (abre a área de estado seleccionando a hora e, a continuación, selecciona Compartir por Nearby).</translation> <translation id="1316136264406804862">Buscando...</translation> <translation id="1316495628809031177">A sincronización púxose en pausa</translation> <translation id="1317637799698924700">A túa base funcionará no modo de compatibilidade con USB tipo C.</translation> @@ -1036,7 +1034,6 @@ <translation id="2178614541317717477">Compromiso de entidade emisora de certificados</translation> <translation id="2182058453334755893">Copiouse o contido no teu portapapeis</translation> <translation id="2184515124301515068">Permite que Chrome decida cando poden reproducir son os sitios (opción recomendada)</translation> -<translation id="2187243482123994665">Estado de actividade do usuario</translation> <translation id="2187675480456493911">A rede está sincronizada con outros dispositivos da túa conta. Non se sincronizarán as opcións de configuración modificadas por outros usuarios. <ph name="LINK_BEGIN" />Máis información<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Erro de importación do certificado do servidor</translation> <translation id="2187906491731510095">Actualizáronse as extensións</translation> @@ -2704,7 +2701,6 @@ <translation id="4104163789986725820">E&xportar...</translation> <translation id="4107048419833779140">Identificar e expulsar dispositivos de almacenamento</translation> <translation id="4109135793348361820">Mover ventá a <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Personaliza o tamaño e o estilo dos subtítulos para as aplicacións compatibles con esta opción de configuración</translation> <translation id="4110490973560452005">Completouse a descarga: <ph name="FILE_NAME" />. Preme Maiús+F6 para acceder á área da barra de descargas.</translation> <translation id="4110686435123617899">Seleccionar álbum <ph name="TITLE" /> (<ph name="DESC" />)</translation> <translation id="4110895898888439383">Navega pola web no modo de contraste alto</translation> @@ -2917,7 +2913,6 @@ <translation id="4400632832271803360">Mantén premida a tecla do menú de aplicacións para cambiar o comportamento das teclas da fila superior</translation> <translation id="4400963414856942668">Podes facer clic na estrela para engadir unha pestana aos marcadores</translation> <translation id="4403775189117163360">Escoller un cartafol diferente</translation> -<translation id="440391631796167175">Non se atopou ningún contrasinal pouco seguro</translation> <translation id="4404136731284211429">Buscar de novo</translation> <translation id="4404843640767531781">O teu pai ou nai bloqueou <ph name="APP_NAME" />. Pídelle permiso para utilizar esta aplicación.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg e *.png</translation> @@ -4458,8 +4453,6 @@ <translation id="6242852299490624841">Enfocar esta pestana</translation> <translation id="6243280677745499710">Establecido actualmente</translation> <translation id="6243774244933267674">Servidor non dispoñible</translation> -<translation id="6244185221716469155">Os contrasinais pouco seguros son fáciles de adiviñar. Asegúrate de crear contrasinais seguros. - <ph name="BEGIN_LINK" />Ver máis consellos de seguranza<ph name="END_LINK" />.</translation> <translation id="6244245036423700521">Importar ficheiro ONC</translation> <translation id="6246790815526961700">Cargar desde o dispositivo</translation> <translation id="6247620186971210352">Non se atoparon aplicacións</translation> @@ -6206,6 +6199,7 @@ <translation id="8281886186245836920">Omitir</translation> <translation id="8283475148136688298">Código de autenticación rexeitado durante a conexión con "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">todos os sitios de <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Subtítulos</translation> <translation id="8286036467436129157">Iniciar sesión</translation> <translation id="8286963743045814739">Podes navegar de forma privada usando unha ventá do modo de incógnito</translation> <translation id="8287902281644548111">Busca por URL ou chamada de API</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index 800c9b8..3c2a332 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">એક્સટેંશન ભૂલ</translation> <translation id="1246158006305844142">તમે તમારા Google એકાઉન્ટ વડે જેમાં સાઇન ઇન કર્યું છે, તે તમામ Chrome OS ડિવાઇસ પર તમારી ઍપ અને સેટિંગ સિંક કરવામાં આવશે. બ્રાઉઝર સિંક કરવાના વિકલ્પો માટે, <ph name="LINK_BEGIN" />Chrome સેટિંગ<ph name="LINK_END" /> પર જાઓ.</translation> <translation id="1246905108078336582">શું ક્લિપબોર્ડમાંથી સૂચન કાઢી નાખીએ?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" />ને ટાળવામાં આવી હોવાથી બ્લૉક કરવામાં આવી છે</translation> <translation id="1251366534849411931">અપેક્ષિત ખુલતો વાંકળિયો કૌંસ: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">આમ કરવાથી સાઇટ અને ઇન્સ્ટૉલ કરેલી ઍપ દ્વારા સ્ટોર કરવામાં આવેલો <ph name="TOTAL_USAGE" /> ડેટા સાફ કરવામાં આવશે</translation> <translation id="125220115284141797">ડિફૉલ્ટ</translation> @@ -278,7 +277,6 @@ <translation id="1313705515580255288">તમારા બુકમાર્ક, ઇતિહાસ અને બીજા સેટિંગ તમારા Google એકાઉન્ટ સાથે સિંક કરવામાં આવશે.</translation> <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">હોમ નેટવર્ક, રોમિંગ નહીં</translation> -<translation id="1315144594965013365">ખાતરી કરો કે બન્ને ડિવાઇસ અનલૉક કરેલા અને નજીક જ હોય તેમજ તેમાં બ્લૂટૂથની સુવિધા ચાલુ કરેલી હોય. જો તમે કોઈ Chromebook સાથે શેર કરી રહ્યાં હો, તો ખાતરી કરો કે તેમાં 'નજીકની શેરિંગ' સુવિધા ચાલુ કરી હોય (સમય પસંદ કરીને સ્ટેટસ એરિયા ખોલો, પછી 'નજીકના શેર' પસંદ કરો).</translation> <translation id="1316136264406804862">શોધી રહ્યું છે ...</translation> <translation id="1316495628809031177">સિંક થોભાવ્યું છે</translation> <translation id="1317637799698924700">તમારું ડૉકિંગ સ્ટેશન USB Type-C સુસંગત મોડમાં ઑપરેટ થશે.</translation> @@ -1024,7 +1022,6 @@ <translation id="2178614541317717477">CA સમાધાન</translation> <translation id="2182058453334755893">તમારા ક્લિપબોર્ડ પર કૉપિ કરવામાં આવ્યું</translation> <translation id="2184515124301515068">સાઇટ સાઉન્ડ ક્યારે ચલાવી શકે તે Chromeને પસંદ કરવા દો (સુઝાવ આપેલ)</translation> -<translation id="2187243482123994665">વપરાશકર્તાની હાજરી</translation> <translation id="2187675480456493911">તમારા એકાઉન્ટ પરના અન્ય ડિવાઇસ સાથે સિંક કરેલું. અન્ય વપરાશકર્તાઓ દ્વારા બદલવામાં આવેલા સેટિંગ સિંક કરવામાં આવશે નહીં. <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation> <translation id="2187895286714876935">સર્વર પ્રમાણપત્ર આયાત કરવામાં ભૂલ</translation> <translation id="2187906491731510095">એક્સ્ટેંશન અપડેટ કર્યા</translation> @@ -2678,7 +2675,6 @@ <translation id="4104163789986725820">નિ&કાસ કરો...</translation> <translation id="4107048419833779140">સ્ટોરેજ ઉપકરણોને ઓળખો અને તેને બહાર કાઢો</translation> <translation id="4109135793348361820"><ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) પર વિંડો ખસેડો</translation> -<translation id="411031910327788420">આ સેટિંગને સપોર્ટ કરતી ઍપ માટે કૅપ્શનનું કદ અને શૈલી કસ્ટમાઇઝ કરો</translation> <translation id="4110490973560452005">ડાઉનલોડ પૂર્ણ થયું: <ph name="FILE_NAME" />. ડાઉનલોડ બાર ક્ષેત્રમાં પહોંચવા માટે Shift+F6 દબાવો.</translation> <translation id="4110686435123617899">પસંદ કરો આલ્બમ <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">ઉચ્ચ કોન્ટ્રાસ્ટ મોડમાં વેબ બ્રાઉઝ કરો</translation> @@ -4418,8 +4414,6 @@ <translation id="6242852299490624841">આ ટૅબ પર ફોકસ કરો</translation> <translation id="6243280677745499710">હાલમાં સેટ કરેલ</translation> <translation id="6243774244933267674">સર્વર અનુપલબ્ધ</translation> -<translation id="6244185221716469155">નબળા પાસવર્ડનું અનુમાન કરવું સરળ હોય છે. તમે સશક્ત પાસવર્ડ બનાવવાની ખાતરી કરો. - <ph name="BEGIN_LINK" />સુરક્ષા સંબંધિત વધુ ટિપ જુઓ.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC ફાઇલની આયાત કરો</translation> <translation id="6246790815526961700">ડિવાઇસમાંથી અપડેટ</translation> <translation id="6247620186971210352">કોઈ ઍપ મળી નથી</translation> @@ -6140,6 +6134,7 @@ <translation id="8281886186245836920">છોડો</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" થી કનેક્ટ કરતી વખતે પ્રમાણીકરણ કોડ નકારવામાં આવ્યો.</translation> <translation id="8284279544186306258">તમામ <ph name="WEBSITE_1" /> સાઇટ્સ</translation> +<translation id="8284326494547611709">કૅપ્શન્સ</translation> <translation id="8286036467436129157">સાઇન ઇન કરો</translation> <translation id="8286963743045814739">તમે છુપી વિંડોનો ઉપયોગ કરીને ખાનગી રૂપે બ્રાઉઝ કરી શકો છો</translation> <translation id="8287902281644548111">API કૉલ/URL અનુસાર શોધ કરો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index 8650556..b05c019 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">एक्सटेंशन गड़बड़ी</translation> <translation id="1246158006305844142">आपके ऐप्लिकेशन और सेटिंग उन सभी Chrome OS डिवाइस में सिंक हो जाएंगी जिनमें आपने अपने Google खाते से साइन किया है. ब्राउज़र को सिंक करने के विकल्पों के लिए,<ph name="LINK_BEGIN" />Chrome की सेटिंग<ph name="LINK_END" /> पर जाएं.</translation> <translation id="1246905108078336582">क्लिपबोर्ड से सुझाव हटाना चाहते हैं?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> अब काम नहीं करता, इसलिए इसे ब्लॉक कर दिया गया</translation> <translation id="1251366534849411931">शुरुआत में दिखने वाले ज़रूरी कर्ली ब्रेस: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">इससे, साइटों और इंस्टॉल किए गए ऐप्लिकेशन के सेव किए गए कुल डेटा में से <ph name="TOTAL_USAGE" /> डेटा मिट जाएगा</translation> <translation id="125220115284141797">डिफ़ॉल्ट</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">होम नेटवर्क, रोमिंग नहीं</translation> <translation id="1315056510003830387">फ़्लैश इस्तेमाल करने की अनुमति नहीं है</translation> -<translation id="1315144594965013365">पक्का करें कि दोनों डिवाइस अनलॉक हों और एक-दूसरे के पास रखे हों. साथ ही, ब्लूटूथ चालू हो. अगर आप किसी Chromebook के साथ फ़ाइलें शेयर कर रहे हैं, तो पक्का करें कि उसमें आस-पास शेयर करने की सुविधा चालू हो (समय चुनकर, स्टेटस बताने वाली जगह खोलें और इसके बाद, आस-पास शेयर करने की सुविधा चुनें).</translation> <translation id="1316136264406804862">खोज रहा है...</translation> <translation id="1316495628809031177">सिंक रोका हुआ है</translation> <translation id="1317637799698924700">आपका डॉकिंग स्टेशन, यूएसबी टाइप-सी पर काम करने वाले मोड पर चलेगा.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">CA समझौता</translation> <translation id="2182058453334755893">आपके क्लिपबोर्ड पर कॉपी किया गया</translation> <translation id="2184515124301515068">Chrome को चुनने दें कि साइटें कब आवाज़ चला सकती हैं (सुझाव)</translation> -<translation id="2187243482123994665">उपयोगकर्ता की मौजूदगी</translation> <translation id="2187675480456493911">आपके खाते पर अन्य डिवाइस से सिंक किया गया. अन्य उपयोगकर्ताओं के सेटिंग में किए गए बदलाव सिंक नहीं होंगे. <ph name="LINK_BEGIN" />ज़्यादा जानें<ph name="LINK_END" /></translation> <translation id="2187895286714876935">सर्वर प्रमाणपत्र आयात गड़बड़ी</translation> <translation id="2187906491731510095">एक्सटेंशन अपडेट किए गए</translation> @@ -2704,7 +2701,6 @@ <translation id="4104163789986725820">नि&र्यात करें...</translation> <translation id="4107048419833779140">मेमोरी डिवाइसों की पहचान करें और उन्हें निकालें</translation> <translation id="4109135793348361820">विंडो को <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) पर ले जाएं</translation> -<translation id="411031910327788420">इस सेटिंग के साथ काम करने वाले ऐप्लिकेशन के लिए, कैप्शन के साइज़ और स्टाइल को पसंद के मुताबिक बनाने की सुविधा</translation> <translation id="4110490973560452005">डाउनलोड पूरा हो गया: <ph name="FILE_NAME" />. डाउनलोड बार वाले हिस्से पर जाने के लिए Shift+F6 दबाएं.</translation> <translation id="4110686435123617899">एल्बम चुनें <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">उच्च कंट्रास्ट मोड में वेब ब्राउज़ करें</translation> @@ -2917,7 +2913,6 @@ <translation id="4400632832271803360">शीर्ष-पंक्ति वाली कुंजियों का व्यवहार स्विच करने के लिए Launcher कुंजी दबाए रखें</translation> <translation id="4400963414856942668">टैब को बुकमार्क करने के लिए आप स्टार के निशान पर क्लिक कर सकते हैं</translation> <translation id="4403775189117163360">कोई दूसरा फ़ोल्डर चुनें</translation> -<translation id="440391631796167175">कोई कमज़ोर पासवर्ड नहीं मिला</translation> <translation id="4404136731284211429">फिर से स्कैन करें</translation> <translation id="4404843640767531781">आपके माता-पिता ने <ph name="APP_NAME" /> को ब्लॉक किया है. उनसे इस ऐप्लिकेशन का इस्तेमाल करने की अनुमति लें.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4458,8 +4453,6 @@ <translation id="6242852299490624841">इस टैब पर फ़ोकस करें</translation> <translation id="6243280677745499710">इस समय सेट है</translation> <translation id="6243774244933267674">सर्वर अनुपलब्ध है</translation> -<translation id="6244185221716469155">कमज़ोर पासवर्ड का अंदाज़ा लगाना आसान होता है. पक्का करें कि आप मज़बूत पासवर्ड बना रहे हैं. - <ph name="BEGIN_LINK" />सुरक्षा से जुड़ी और सलाह देखें.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC फ़ाइल इंपोर्ट करें</translation> <translation id="6246790815526961700">डिवाइस से अपलोड करें</translation> <translation id="6247620186971210352">कोई ऐप्लिकेशन नहीं मिला</translation> @@ -6206,6 +6199,7 @@ <translation id="8281886186245836920">अभी नहीं</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" से कनेक्ट करते समय प्रमाणीकरण कोड अस्वीकार हो गया.</translation> <translation id="8284279544186306258">सभी <ph name="WEBSITE_1" /> साइटें</translation> +<translation id="8284326494547611709">कैप्शन</translation> <translation id="8286036467436129157">साइन इन करें</translation> <translation id="8286963743045814739">आप गुप्त विंडो का उपयोग करके निजी रूप से ब्राउज़ कर सकते हैं</translation> <translation id="8287902281644548111">एपीआई कॉल/यूआरएल के हिसाब से खोजें</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index 3d188e6e..037e69e 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Pogreška proširenja</translation> <translation id="1246158006305844142">Vaše aplikacije i postavke sinkronizirat će se na svim uređajima s OS-om Chrome na kojima ste prijavljeni svojim Google računom. Za opcije sinkronizacije preglednika otvorite <ph name="LINK_BEGIN" />postavke Chromea<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Želite li ukloniti prijedlog iz međuspremnika?</translation> -<translation id="1249643471736608405">Dodatak <ph name="PLUGIN_NAME" /> blokiran je jer je zastario</translation> <translation id="1251366534849411931">Očekivano otvaranje vitičaste zagrade: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Izbrisat će se <ph name="TOTAL_USAGE" /> podataka koje su spremile web-lokacije i instalirane aplikacije</translation> <translation id="125220115284141797">Zadano</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Matična mreža, bez roaminga</translation> <translation id="1315056510003830387">Nije dopuštena upotreba Flasha</translation> -<translation id="1315144594965013365">Provjerite jesu li oba uređaja otključana, blizu jedan drugome te imaju li uključen Bluetooth. Ako dijelite s Chromebookom, provjerite je li Dijeljenje s Android uređajima uključeno (otvorite područje statusa tako što ćete odabrati vrijeme, a zatim odaberite Dijeljenje s Android uređajima).</translation> <translation id="1316136264406804862">Pretraživanje...</translation> <translation id="1316495628809031177">Sinkronizacija je pauzirana</translation> <translation id="1317637799698924700">Priključna stanica radit će u načinu kompatibilnom s USB-om vrste C.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA kompromis</translation> <translation id="2182058453334755893">Kopirano u međuspremnik</translation> <translation id="2184515124301515068">Neka Chrome odluči kada web-lokacije mogu reproducirati zvuk (preporučeno)</translation> -<translation id="2187243482123994665">Korisnikova prisutnost</translation> <translation id="2187675480456493911">Sinkronizirano s drugim uređajima na vašem računu. Postavke koje izmijene drugi korisnici neće se sinkronizirati. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Pogreška pri uvozu Certifikata poslužitelja</translation> <translation id="2187906491731510095">Proširenja ažurirana</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">I&zvoz...</translation> <translation id="4107048419833779140">Prepoznaj i izbaci uređaje za pohranu</translation> <translation id="4109135793348361820">Premjesti prozor korisniku <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Prilagođavaju veličinu i stil titlova za aplikacije koje podržavaju tu postavku</translation> <translation id="4110490973560452005">Preuzimanje je dovršeno: <ph name="FILE_NAME" />. Pritisnite Shift + F6 da biste došli do područja trake preuzimanja.</translation> <translation id="4110686435123617899">Odaberite album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Pregledavajte web u načinu rada s visokim kontrastom</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">Držite tipku Pokretač da biste izmjenjivali ponašanje tipki u najvišem retku</translation> <translation id="4400963414856942668">Karticu možete označiti klikom na zvjezdicu</translation> <translation id="4403775189117163360">Odaberite drugu mapu</translation> -<translation id="440391631796167175">Nije pronađena nijedna slaba zaporka</translation> <translation id="4404136731284211429">Pretraži ponovo</translation> <translation id="4404843640767531781">Tvoj roditelj blokirao je aplikaciju <ph name="APP_NAME" />. Ako želiš koristiti tu aplikaciju, traži dopuštenje od roditelja.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4467,8 +4462,6 @@ <translation id="6242852299490624841">Fokusiraj tu karticu</translation> <translation id="6243280677745499710">Trenutačno postavljeno</translation> <translation id="6243774244933267674">Poslužitelj nije dostupan</translation> -<translation id="6244185221716469155">Slabe zaporke lako je pogoditi. Neka vaše zaporke obavezno budu snažne. - <ph name="BEGIN_LINK" />Pročitajte još sigurnosnih savjeta<ph name="END_LINK" />.</translation> <translation id="6244245036423700521">Uvoz ONC datoteke</translation> <translation id="6246790815526961700">Prijenos s uređaja</translation> <translation id="6247620186971210352">Aplikacije nisu pronađene</translation> @@ -6218,6 +6211,7 @@ <translation id="8281886186245836920">Preskoči</translation> <translation id="8283475148136688298">Autentifikacijski kôd odbijen je prilikom povezivanja s uređajem "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">sve web-lokacije <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Titlovi</translation> <translation id="8286036467436129157">Prijava</translation> <translation id="8286963743045814739">Možete pregledavati privatno u anonimnom prozoru</translation> <translation id="8287902281644548111">Pretražujte prema pozivu za API/URL-u</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index 87b617d..d1524442 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Bővítménnyel kapcsolatos hiba</translation> <translation id="1246158006305844142">Az Ön alkalmazásai és beállításai szinkronizálódnak minden olyan Chrome OS-eszközön, amelyen Google-fiókjával van bejelentkezve. A böngésző szinkronizálási beállításait a <ph name="LINK_BEGIN" />Chrome-beállításokban<ph name="LINK_END" /> találja.</translation> <translation id="1246905108078336582">Eltávolítja a javaslatot a vágólapról?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> letiltva, mert megszüntették</translation> <translation id="1251366534849411931">Hiányzó nyitó kapcsos zárójel: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Ezzel törli a webhelyek és telepített alkalmazások által tárolt összesen <ph name="TOTAL_USAGE" />-nyi adatot</translation> <translation id="125220115284141797">Alapértelmezett</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Otthoni hálózat, nincs roaming</translation> <translation id="1315056510003830387">Nem használhatják a Flasht</translation> -<translation id="1315144594965013365">Győződjön meg arról, hogy mindkét eszköz fel van oldva, közel vannak egymáshoz, és be van rajtuk kapcsolva a Bluetooth. Ha Chromebookkal oszt meg tartalmat, ellenőrizze, hogy a Közeli megosztás be van-e kapcsolva rajta (az időpont kijelölésével nyissa meg az állapotsort, majd válassza a Közeli megosztás funkciót).</translation> <translation id="1316136264406804862">Keresés...</translation> <translation id="1316495628809031177">A szinkronizálás szünetel</translation> <translation id="1317637799698924700">A dokkolóállomás C típusú USB-vel kompatibilis módban fog futni.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">A tanúsítványkibocsátó veszélyeztetve</translation> <translation id="2182058453334755893">Vágólapra másolva</translation> <translation id="2184515124301515068">A Chrome dönthet arról, hogy a webhelyek lejátszhatnak-e hangot (ajánlott)</translation> -<translation id="2187243482123994665">Felhasználói jelenlét</translation> <translation id="2187675480456493911">Szinkronizálva van a fiókjában lévő egyéb eszközökkel. A más felhasználók által módosított beállításokat a rendszer nem szinkronizálja majd. <ph name="LINK_BEGIN" />További információ<ph name="LINK_END" />.</translation> <translation id="2187895286714876935">Hiba a szervertanúsítvány importálásánál</translation> <translation id="2187906491731510095">Bővítmények frissítve</translation> @@ -2709,7 +2706,6 @@ <translation id="4104163789986725820">E&xportálás...</translation> <translation id="4107048419833779140">Tárolóeszközök azonosítása és kiadása</translation> <translation id="4109135793348361820">Az ablak áthelyezése <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) asztalára</translation> -<translation id="411031910327788420">Személyre szabhatja a felirat méretét és stílusát azokban az alkalmazásokban, amelyek támogatják ezt a beállítást</translation> <translation id="4110490973560452005">A letöltés befejeződött: <ph name="FILE_NAME" />. A Shift+F6 billentyűparancs lenyomásával a letöltéssáv területére léphet.</translation> <translation id="4110686435123617899">A következő album kiválasztása: <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Böngészhet az interneten kontrasztos megjelenítési módban</translation> @@ -2922,7 +2918,6 @@ <translation id="4400632832271803360">A legfelső billentyűsor viselkedésének módosításához tartsa lenyomva az Indítót</translation> <translation id="4400963414856942668">A lapot úgy is hozzáadhatja a könyvjelzőkhöz, hogy a csillagra kattint</translation> <translation id="4403775189117163360">Másik mappa választása</translation> -<translation id="440391631796167175">Nem található gyenge jelszó</translation> <translation id="4404136731284211429">Vizsgálat újra</translation> <translation id="4404843640767531781">Szülőd letiltotta a(z) <ph name="APP_NAME" /> alkalmazást. Kérj engedélyt tőle az alkalmazás használatára.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4468,8 +4463,6 @@ <translation id="6242852299490624841">Fókusz erre a lapra</translation> <translation id="6243280677745499710">Jelenleg beállított</translation> <translation id="6243774244933267674">A szerver nem érhető el</translation> -<translation id="6244185221716469155">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="6244245036423700521">ONC-fájl importálása</translation> <translation id="6246790815526961700">Feltöltés az eszközről</translation> <translation id="6247620186971210352">Nem található alkalmazás</translation> @@ -6219,6 +6212,7 @@ <translation id="8281886186245836920">Kihagyás</translation> <translation id="8283475148136688298">A(z) „<ph name="DEVICE_NAME" />” eszközhöz való csatlakozás közben a rendszer visszautasította a hitelesítési kódot.</translation> <translation id="8284279544186306258">minden <ph name="WEBSITE_1" /> webhelyen</translation> +<translation id="8284326494547611709">Feliratok</translation> <translation id="8286036467436129157">Bejelentkezés</translation> <translation id="8286963743045814739">Privát módban böngészhet, ha inkognitó ablakot használ</translation> <translation id="8287902281644548111">Keresés API-hívás/URL szerint</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index 96b1959..1745f25 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -225,7 +225,6 @@ <translation id="1244303850296295656">Ընդլայնման սխալ</translation> <translation id="1246158006305844142">Ձեր հավելվածներն ու կարգավորումները կհամաժամացվեն բոլոր Chrome OS սարքերում, որոնցում մտած եք ձեր Google հաշիվ։ Դիտարկիչներում համաժամացման տարբերակներին ծանոթանալու համար անցեք <ph name="LINK_BEGIN" />Chrome-ի կարգավորումներ<ph name="LINK_END" />։</translation> <translation id="1246905108078336582">Հեռացնե՞լ առաջարկը սեղմատախտակից:</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" />-ն արգելափակվել է, քանի որ այն հնացած է</translation> <translation id="1251366534849411931">Պակասում է բացող ձևավոր փակագիծ՝ <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Կայքերի և տեղադրված հավելվածների կողմից պահված <ph name="TOTAL_USAGE" /> ծավալով տվյալները կջնջվեն։</translation> <translation id="125220115284141797">Կանխադրված</translation> @@ -280,7 +279,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Տնային ցանց, առանց ռոումինգի</translation> <translation id="1315056510003830387">Չի թույլատրվում օգտագործել Flash բովանդակություն</translation> -<translation id="1315144594965013365">Համոզվեք, որ երկու սարքերն ապակողպված են, միմյանց մոտ են, և սարքերում միացված է Bluetooth-ը։ Եթե դուք կիսվում եք ֆայլերով Chromebook սարքի հետ, համոզվեք, որ այնտեղ միացված է «Փոխանակում մոտակա սարքերի հետ» գործառույթը (բացեք վիճակի տարածքը՝ սեղմելով ժամացույցի վրա, ապա ընտրեք «Փոխանակում մոտակա սարքերի հետ»)։</translation> <translation id="1316136264406804862">Որոնում...</translation> <translation id="1316495628809031177">Համաժամացումն ընդհատված է</translation> <translation id="1317637799698924700">Ձեր դոկ-կայանը կաշխատի USB Type-C-ի հետ համատեղելի ռեժիմում:</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">Բացահայտված հավաստագրման կենտրոն</translation> <translation id="2182058453334755893">Պատճենվեց սեղմատախտակին</translation> <translation id="2184515124301515068">Թույլ տալ Chrome-ին ընտրել՝ որ կայքերում ձայն նվագարկվի (խորհուրդ է տրվում)</translation> -<translation id="2187243482123994665">Օգտատիրոջ ներկայություն</translation> <translation id="2187675480456493911">Համաժամացված է ձեր հաշվին կցված այլ սարքերի հետ։ Այլ օգտատերերի կողմից փոփոխված կարգավորումները չեն համաժամացվի։ <ph name="LINK_BEGIN" />Իմանալ ավելին<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Սերվերի վկայագրի ներմուծման սխալ</translation> <translation id="2187906491731510095">Ընդլայնումները թարմացվել են</translation> @@ -2706,7 +2703,6 @@ <translation id="4104163789986725820">Ար&տահանել…</translation> <translation id="4107048419833779140">Գտնել և անջատել հիշասարքերը</translation> <translation id="4109135793348361820">Տեղափոխել պատուհանը <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Անհատականացրեք ենթագրերի չափսը և ոճը այն հավելվածների համար, որոնք աջակցում են այս գործառույթը</translation> <translation id="4110490973560452005">Ներբեռնումն ավարտվեց. <ph name="FILE_NAME" />: Սեղմեք Shift+F6՝ ներբեռնումների գոտու տարածք անցնելու համար:</translation> <translation id="4110686435123617899">Ընտրեք ալբոմը՝ «<ph name="TITLE" />» (<ph name="DESC" />)</translation> <translation id="4110895898888439383">Կայքերի բարձր կոնտրաստի ռեժիմ</translation> @@ -2919,7 +2915,6 @@ <translation id="4400632832271803360">Վերևի շարքի ստեղները փոխարկելու համար սեղմած պահեք գործարկիչի ստեղնը</translation> <translation id="4400963414856942668">Ներդիրն էջանշելու համար սեղմեք աստղը</translation> <translation id="4403775189117163360">Ընտրեք մեկ այլ պանակ</translation> -<translation id="440391631796167175">Թույլ գաղտնաբառեր չեն գտնվել</translation> <translation id="4404136731284211429">Նորից ստուգել</translation> <translation id="4404843640767531781">Ձեր ծնողն արգելափակել է <ph name="APP_NAME" /> հավելվածը։ Խնդրեք նրան տրամադրել ձեզ հավելվածի օգտագործման թույլտվություն։</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4463,8 +4458,6 @@ <translation id="6242852299490624841">Անցնել այս ներդիրին</translation> <translation id="6243280677745499710">Այժմ տեղադրված է</translation> <translation id="6243774244933267674">Սերվերը մատչելի չէ</translation> -<translation id="6244185221716469155">Թույլ գաղտնաբառերը հեշտ է գուշակել։ Համոզվեք, որ հուսալի գաղտնաբառեր եք ստեղծում։ - <ph name="BEGIN_LINK" />Դիտել հաշվի պաշտպանության այլ խորհուրդներ<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Ներմուծել ONC ֆայլ</translation> <translation id="6246790815526961700">Վերբեռնել սարքից</translation> <translation id="6247620186971210352">Հավելվածներ չեն գտնվել</translation> @@ -6210,6 +6203,7 @@ <translation id="8281886186245836920">Բաց թողնել</translation> <translation id="8283475148136688298">«<ph name="DEVICE_NAME" />» սարքին կապակցվելիս իսկորոշման կոդը մերժվեց:</translation> <translation id="8284279544186306258">բոլոր <ph name="WEBSITE_1" /> կայքերը</translation> +<translation id="8284326494547611709">Ենթագրեր</translation> <translation id="8286036467436129157">Մուտք գործել</translation> <translation id="8286963743045814739">Գաղտնի դիտարկման համար օգտագործեք ինկոգնիտո պատուհան:</translation> <translation id="8287902281644548111">Որոնեք ըստ URL-ի կամ API-ի հարցման</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index b0b31d1..8f2ed4d 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Kesalahan ekstensi</translation> <translation id="1246158006305844142">Aplikasi dan setelan Anda akan disinkronkan di semua perangkat Chrome OS tempat Anda login dengan Akun Google. Untuk opsi sinkronisasi browser, buka <ph name="LINK_BEGIN" />setelan Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Hapus saran dari papan klip?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> diblokir karena sudah tidak tersedia</translation> <translation id="1251366534849411931">Sepertinya ada kurung kurawal terbuka: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Ini akan menghapus <ph name="TOTAL_USAGE" /> data yang disimpan oleh situs dan aplikasi yang terinstal di dalamnya</translation> <translation id="125220115284141797">Default</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN Android</translation> <translation id="131461803491198646">Jaringan asal, tidak dalam jelajah</translation> <translation id="1315056510003830387">Tidak diizinkan menggunakan Flash</translation> -<translation id="1315144594965013365">Pastikan kedua perangkat tidak terkunci, berdekatan, serta mengaktifkan Bluetooth. Jika Anda berbagi dengan Chromebook, pastikan Chromebook mengaktifkan fitur Berbagi Langsung (buka area status dengan memilih waktu, lalu pilih Berbagi Langsung).</translation> <translation id="1316136264406804862">Menelusuri...</translation> <translation id="1316495628809031177">Sinkronisasi dijeda</translation> <translation id="1317637799698924700">Stasiun dok Anda akan berfungsi dalam mode yang kompatibel dengan USB Type-C.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">CA Mencurigakan</translation> <translation id="2182058453334755893">Disalin ke Papan Klip Anda</translation> <translation id="2184515124301515068">Izinkan Chrome memilih kapan situs dapat memutar suara (direkomendasikan)</translation> -<translation id="2187243482123994665">Kehadiran pengguna</translation> <translation id="2187675480456493911">Disinkronkan dengan perangkat lain di akun Anda. Setelan yang diubah oleh pengguna lain tidak akan disinkronkan. <ph name="LINK_BEGIN" />Pelajari lebih lanjut<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Kesalahan Impor Sertifikat Server</translation> <translation id="2187906491731510095">Ekstensi diupdate</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">E&kspor...</translation> <translation id="4107048419833779140">Identifikasi dan keluarkan perangkat penyimpanan</translation> <translation id="4109135793348361820">Pindahkan jendela ke <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Menyesuaikan ukuran dan gaya teks untuk aplikasi yang mendukung setelan ini</translation> <translation id="4110490973560452005">Download selesai: <ph name="FILE_NAME" />. Tekan Shift+F6 untuk masuk ke area kotak download</translation> <translation id="4110686435123617899">Pilih album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Akses web dalam mode kontras tinggi</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Tahan tombol Peluncur untuk mengubah perilaku tombol baris atas</translation> <translation id="4400963414856942668">Anda dapat mengklik bintang untuk mem-bookmark tab</translation> <translation id="4403775189117163360">Pilih folder yang berbeda</translation> -<translation id="440391631796167175">Tidak ditemukan sandi lemah</translation> <translation id="4404136731284211429">Pindai lagi</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> diblokir oleh orang tuamu. Minta izin orang tuamu untuk menggunakan aplikasi ini.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">Fokuskan tab ini</translation> <translation id="6243280677745499710">Yang disetel saat ini</translation> <translation id="6243774244933267674">Server tidak tersedia</translation> -<translation id="6244185221716469155">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="6244245036423700521">Impor File ONC</translation> <translation id="6246790815526961700">Upload dari perangkat</translation> <translation id="6247620186971210352">Tidak ditemukan aplikasi</translation> @@ -6208,6 +6201,7 @@ <translation id="8281886186245836920">Lewati</translation> <translation id="8283475148136688298">Kode autentikasi ditolak saat menyambung ke "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">semua situs <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Teks</translation> <translation id="8286036467436129157">Login</translation> <translation id="8286963743045814739">Anda dapat melakukan browsing rahasia menggunakan jendela samaran</translation> <translation id="8287902281644548111">Telusuri berdasarkan panggilan API/URL</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index 39298272..644765b 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Villa í viðbót</translation> <translation id="1246158006305844142">Forritin þín og stillingarnar verða samstillt í öllum Chrome OS tækjum sem þú skráðir þig inn á með Google reikningnum þínum. Valkostir fyrir samstillingu vafra má finna í <ph name="LINK_BEGIN" />Stillingar Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Fjarlægja tillögu af klippiborði?</translation> -<translation id="1249643471736608405">Lokað var á <ph name="PLUGIN_NAME" /> vegna þess að hún er úrelt</translation> <translation id="1251366534849411931">Búist var við opnum slaufusviga: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Þetta hreinsar <ph name="TOTAL_USAGE" /> af gögnum sem vefsvæði og uppsett forrit geyma</translation> <translation id="125220115284141797">Sjálfgefið</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Heimanet, ekki í reiki</translation> <translation id="1315056510003830387">Mega ekki nota Flash</translation> -<translation id="1315144594965013365">Gakktu úr skugga um að hvorugt tækið sé læst, settu þau nálægt hvort öðru og hafðu kveikt á Bluetooth. Ef þú deilir með Chromebook skaltu tryggja að kveikt sé á nærdeilingu í henni (opnaðu stöðusvæðið með því að velja tíma og síðan nærdeilingu).</translation> <translation id="1316136264406804862">Leitar...</translation> <translation id="1316495628809031177">Hlé er á samstillingu</translation> <translation id="1317637799698924700">Tengd dokka virkar í samhæfisstillingu USB (C-gerð).</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA-öryggisbrestur</translation> <translation id="2182058453334755893">Afritað á klippiborðið</translation> <translation id="2184515124301515068">Leyfa Chrome að velja hvenær vefsvæði geta spilað hljóð (ráðlagt)</translation> -<translation id="2187243482123994665">Viðvera notanda</translation> <translation id="2187675480456493911">Samstillt við önnur tæki á reikningnum. Breytingar annarra notenda á stillingum verða ekki samstilltar. <ph name="LINK_BEGIN" />Frekari upplýsingar<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Villa við innflutning á vottorði þjóns</translation> <translation id="2187906491731510095">Viðbætur uppfærðar</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">Flytja út...</translation> <translation id="4107048419833779140">Bera kennsl á og aftengja geymslutæki</translation> <translation id="4109135793348361820">Færa glugga á <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Sérsníða stærð og stíl skjátexta fyrir forrit sem styðja þessa stillingu</translation> <translation id="4110490973560452005">Niðurhali lokið: <ph name="FILE_NAME" />. Ýttu á Shift+F6 til að fara á niðurhalsstikuna.</translation> <translation id="4110686435123617899">Velja albúm <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Nota stillingu fyrir mikil birtuskil við vefskoðun</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">Haltu ræsihnappinum inni til að breyta hegðun lykla í efstu röðinni</translation> <translation id="4400963414856942668">Þú getur smellt á stjörnuna til að bókamerkja flipa</translation> <translation id="4403775189117163360">Velja aðra möppu</translation> -<translation id="440391631796167175">Engin léleg aðgangsorð fundust</translation> <translation id="4404136731284211429">Leita aftur</translation> <translation id="4404843640767531781">Foreldri þitt hefur sett <ph name="APP_NAME" /> á bannlista. Biddu foreldri þitt um leyfi til að nota þetta forrit.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4467,8 +4462,6 @@ <translation id="6242852299490624841">Setja þennan flipa í fókus</translation> <translation id="6243280677745499710">Valið núna</translation> <translation id="6243774244933267674">Ekki næst í netþjóninn</translation> -<translation id="6244185221716469155">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="6244245036423700521">Flytja ONC-skrá inn</translation> <translation id="6246790815526961700">Hlaða upp úr tæki</translation> <translation id="6247620186971210352">Engin forrit fundust</translation> @@ -6217,6 +6210,7 @@ <translation id="8281886186245836920">Sleppa</translation> <translation id="8283475148136688298">Staðfestingarkóða hafnað þegar reynt var að tengjast „<ph name="DEVICE_NAME" />“.</translation> <translation id="8284279544186306258">öllum vefsvæðum <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Skjátextar</translation> <translation id="8286036467436129157">Skrá inn</translation> <translation id="8286963743045814739">Þú getur vafrað í leyni með því að nota huliðsglugga</translation> <translation id="8287902281644548111">Leita eftir forritaskilakalli / vefslóð</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index f9c2384..7c4dbc6 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Errore delle estensioni</translation> <translation id="1246158006305844142">Le app e le impostazioni verranno sincronizzate su tutti i dispositivi Chrome OS a cui hai effettuato l'accesso con il tuo Account Google. Per le opzioni di sincronizzazione del browser, vai alle <ph name="LINK_BEGIN" />impostazioni di Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Rimuovere il suggerimento dagli appunti?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> è stato bloccato perché è obsoleto</translation> <translation id="1251366534849411931">Parentesi graffa aperta prevista: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Verranno cancellati <ph name="TOTAL_USAGE" /> di dati memorizzati da siti e app installate</translation> <translation id="125220115284141797">Predefiniti</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN Android</translation> <translation id="131461803491198646">Rete domestica, roaming non attivo</translation> <translation id="1315056510003830387">Non possono utilizzare Flash</translation> -<translation id="1315144594965013365">Assicurati che entrambi i dispositivi siano sbloccati e vicini, nonché che il Bluetooth sia attivo. Se vuoi attivare la condivisione con un Chromebook, assicurati che su tale dispositivo sia attiva la funzionalità Condivisione nelle vicinanze (apri l'area di stato selezionando l'ora, quindi seleziona Condivisione nelle vicinanze).</translation> <translation id="1316136264406804862">Ricerca in corso...</translation> <translation id="1316495628809031177">Sincronizzazione in pausa</translation> <translation id="1317637799698924700">La dock station funzionerà alla modalità compatibile con USB Type-C.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Compromesso CA</translation> <translation id="2182058453334755893">Copia negli appunti eseguita</translation> <translation id="2184515124301515068">Consenti a Chrome di scegliere quando i siti possono riprodurre audio (opzione consigliata)</translation> -<translation id="2187243482123994665">Presenza dell'utente</translation> <translation id="2187675480456493911">Sincronizzata con altri dispositivi sul tuo account. Le impostazioni modificate da altri utenti non verranno sincronizzate. <ph name="LINK_BEGIN" />Ulteriori informazioni<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Errore di importazione del certificato del server</translation> <translation id="2187906491731510095">Estensioni aggiornate</translation> @@ -2704,7 +2701,6 @@ <translation id="4104163789986725820">E&sporta...</translation> <translation id="4107048419833779140">Identifica ed espelli i dispositivi di archiviazione</translation> <translation id="4109135793348361820">Sposta finestra su <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Personalizza dimensioni e stile dei sottotitoli per le app che supportano questa impostazione</translation> <translation id="4110490973560452005">Download completato: <ph name="FILE_NAME" />. Premi MAIUSC+F6 per passare alla parte con la barra dei download.</translation> <translation id="4110686435123617899">Seleziona l'album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Naviga sul Web in modalità Contrasto elevato</translation> @@ -2917,7 +2913,6 @@ <translation id="4400632832271803360">Tieni premuto il tasto Avvio applicazioni per modificare la funzione dei tasti della fila superiore.</translation> <translation id="4400963414856942668">Puoi fare clic sulla stella per aggiungere una scheda ai preferiti</translation> <translation id="4403775189117163360">Scegli una cartella diversa</translation> -<translation id="440391631796167175">Nessuna password inefficace trovata</translation> <translation id="4404136731284211429">Analizza di nuovo</translation> <translation id="4404843640767531781">L'app <ph name="APP_NAME" /> è stata bloccata da un genitore. Chiedi al tuo genitore l'autorizzazione per poterla usare.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4458,8 +4453,6 @@ <translation id="6242852299490624841">Imposta stato attivo su questa scheda</translation> <translation id="6243280677745499710">Attualmente impostato</translation> <translation id="6243774244933267674">Server non disponibile</translation> -<translation id="6244185221716469155">Le password inefficaci sono facili da indovinare. Assicurati di creare password efficaci. - <ph name="BEGIN_LINK" />Leggi altri suggerimenti per la sicurezza.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importa file ONC</translation> <translation id="6246790815526961700">Carica dal dispositivo</translation> <translation id="6247620186971210352">Nessuna app trovata</translation> @@ -6206,6 +6199,7 @@ <translation id="8281886186245836920">Salta</translation> <translation id="8283475148136688298">Codice di autenticazione respinto durante la connessione a "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">tutti i siti <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Sottotitoli</translation> <translation id="8286036467436129157">Accedi</translation> <translation id="8286963743045814739">Puoi navigare in privato usando una finestra di navigazione in incognito</translation> <translation id="8287902281644548111">Cerca per chiamata API/URL</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 3d27446..77987ad 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">שגיאת תוסף</translation> <translation id="1246158006305844142">האפליקציות וההגדרות שלך יסתנכרנו בין כל מכשירי Chrome OS שאליהם נכנסת עם חשבון Google שלך. כדי לראות את אפשרויות סנכרון הדפדפן, יש לעבור אל <ph name="LINK_BEGIN" />הגדרות Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">להסיר את ההצעה מהלוח?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> נחסם מפני שהוא הוצא כבר משימוש</translation> <translation id="1251366534849411931">חסרים סוגריים מסולסלים פותחים: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">הפעולה הזו תגרום למחיקת נתונים בנפח של <ph name="TOTAL_USAGE" /> שאוחסנו על ידי אתרים ואפליקציות מותקנות</translation> <translation id="125220115284141797">ברירת מחדל</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">רשת ביתית, לא בנדידה</translation> <translation id="1315056510003830387">לא מורשים להשתמש ב-Flash</translation> -<translation id="1315144594965013365">יש לוודא ששני המכשירים אינם נעולים, שהם קרובים זה לזה ושבשניהם מופעל Bluetooth. אם השיתוף נעשה עם Chromebook, יש לוודא שהתכונה 'שיתוף בקרבת מקום' פועלת (פותחים את אזור הסטטוס על ידי בחירה בזמן, ולאחר מכן בוחרים 'שיתוף בקרבת מקום').</translation> <translation id="1316136264406804862">מחפש...</translation> <translation id="1316495628809031177">הסינכרון הושהה</translation> <translation id="1317637799698924700">תחנת העגינה תעבוד במצב התואם ל-USB-C.</translation> @@ -1034,7 +1032,6 @@ <translation id="2178614541317717477">רשות האישורים (CA) בסכנה</translation> <translation id="2182058453334755893">הועתק אל הלוח</translation> <translation id="2184515124301515068">Chrome יקבע מתי אתרים יכולים להפעיל צלילים (מומלץ)</translation> -<translation id="2187243482123994665">נוכחות משתמש</translation> <translation id="2187675480456493911">בוצע סנכרון עם מכשירים אחרים בחשבון שלך. הגדרות ששונו על-ידי משתמשים אחרים לא יסונכרנו. <ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation> <translation id="2187895286714876935">שגיאת ייבוא של אישור שרת</translation> <translation id="2187906491731510095">התוספים עודכנו</translation> @@ -2703,7 +2700,6 @@ <translation id="4104163789986725820">יי&צא...</translation> <translation id="4107048419833779140">לזהות ולהוציא התקני אחסון</translation> <translation id="4109135793348361820">העבר חלון אל <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">התאמה אישית של הגודל והסגנון של הכתוביות לאפליקציות שתומכות בהגדרה זו</translation> <translation id="4110490973560452005">ההורדה הושלמה: <ph name="FILE_NAME" />. אפשר להקיש על Shift+F6 כדי לעבור לאזור סרגל ההורדות.</translation> <translation id="4110686435123617899">בחירת האלבום <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">גלישה באינטרנט במצב ניגודיות גבוהה</translation> @@ -2916,7 +2912,6 @@ <translation id="4400632832271803360">יש להחזיק את המקש של מרכז האפליקציות כדי לשנות את ההתנהגות של מקשי השורה העליונה</translation> <translation id="4400963414856942668">בלחיצה על סימן הכוכב אפשר להוסיף כרטיסייה לסימניות</translation> <translation id="4403775189117163360">בחירת תיקייה אחרת</translation> -<translation id="440391631796167175">לא נמצאו סיסמאות חלשות</translation> <translation id="4404136731284211429">סריקה חוזרת</translation> <translation id="4404843640767531781">האפליקציה <ph name="APP_NAME" /> נחסמה על ידי ההורה שלך. יש לבקש רשות מההורה כדי להשתמש באפליקציה הזו.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -3431,7 +3426,7 @@ <translation id="5017643436812738274">ניתן לנווט בדפים באמצעות סמן הטקסט. כדי להפסיק, אפשר להקיש על Ctrl+Search+7.</translation> <translation id="5017828934289857214">אני רוצה תזכורת מאוחר יותר</translation> <translation id="5018207570537526145">פתיחת אתר התוסף</translation> -<translation id="5018526990965779848">שליחת מידע לגבי אופן השימוש בנתונים וניתוח הביצועים. כדי לתרום לשיפור חוויית המשתמש ב-Android, אפשר לשלוח אל Google באופן אוטומטי נתוני אבחון, נתוני מכשיר ונתוני שימוש באפליקציות. הנתונים האלה יעזרו לשמור על היציבות של המערכת ושל האפליקציות ולבצע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לשפר את האפליקציות של Google וכן יעזרו לשותפים של Google, כמו מפתחים של Android. אם הופעלה ההגדרה 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלך.</translation> +<translation id="5018526990965779848">שליחת מידע לגבי אופן השימוש בנתונים וניתוח הביצועים. כדי לתרום לשיפור חוויית השימוש ב-Android, אפשר לשלוח אל Google באופן אוטומטי נתוני אבחון, נתוני מכשיר ונתוני שימוש באפליקציות. הנתונים האלה יעזרו לשמור על היציבות של המערכת ושל האפליקציות ולבצע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לשפר את האפליקציות של Google וכן יעזרו לשותפים של Google, כמו מפתחים של Android. אם הופעלה ההגדרה 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלך.</translation> <translation id="5019392775062123007">המכשיר שלך גלוי למכשירים אחרים בקרבת מקום בתור <ph name="DEVICE_NAME" /></translation> <translation id="5021750053540820849">עדיין לא מעודכן</translation> <translation id="5026806129670917316">הפעלת Wi-Fi</translation> @@ -4457,8 +4452,6 @@ <translation id="6242852299490624841">הדגשת הכרטיסייה הזו</translation> <translation id="6243280677745499710">מוגדר עכשיו</translation> <translation id="6243774244933267674">השרת אינו זמין</translation> -<translation id="6244185221716469155">קל לנחש סיסמאות חלשות. חשוב להגדיר סיסמאות חזקות. - <ph name="BEGIN_LINK" />לטיפים נוספים לגבי אבטחה.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ייבוא קובץ ONC</translation> <translation id="6246790815526961700">העלאה מהמכשיר</translation> <translation id="6247620186971210352">לא נמצאו אפליקציות</translation> @@ -6207,6 +6200,7 @@ <translation id="8281886186245836920">דילוג</translation> <translation id="8283475148136688298">קוד האימות נדחה בעת ההתחברות ל-"<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">כל אתרי <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">כתוביות</translation> <translation id="8286036467436129157">כניסה</translation> <translation id="8286963743045814739">אפשר לגלוש בפרטיות בעזרת חלון גלישה בסתר</translation> <translation id="8287902281644548111">חיפוש לפי קריאה ל-API/כתובת URL</translation> @@ -6754,7 +6748,7 @@ <translation id="8926389886865778422">אל תשאל שוב</translation> <translation id="892706138619340876">בוצע איפוס של חלק מההגדרות</translation> <translation id="8930351635855238750">הגדרות חדשות של קובצי Cookie ייכנסו לתוקף לאחר הטעינה מחדש של הדף</translation> -<translation id="8930622219860340959">אלחוט</translation> +<translation id="8930622219860340959">אלחוטי</translation> <translation id="8931076093143205651">שליחת מידע לגבי אופן השימוש בנתונים וניתוח הביצועים. כדי לתרום לשיפור חוויית המשתמש ב-Android, אפשר לשלוח אל Google באופן אוטומטי נתוני אבחון, נתוני מכשיר ונתוני שימוש באפליקציות. הנתונים האלה יעזרו לשמור על היציבות של המערכת ושל האפליקציות ולבצע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לשפר את האפליקציות של Google וכן יעזרו לשותפים של Google, כמו מפתחים של Android. ההגדרה הזו נאכפת על-ידי הבעלים. ייתכן שהבעלים יבחרו לשלוח אל Google נתוני אבחון ונתוני שימוש של המכשיר. אם הופעלה ההגדרה 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלך.</translation> <translation id="8931394284949551895">מכשירים חדשים</translation> <translation id="8931475688782629595">ניהול הסנכרון</translation> @@ -6861,7 +6855,7 @@ <translation id="9044646465488564462">ההתחברות לרשת נכשלה: <ph name="DETAILS" /></translation> <translation id="9045430190527754450">שליחת כתובת האינטרנט של הדף שאליו ניסית להגיע אל Google</translation> <translation id="9046895021617826162">החיבור נכשל</translation> -<translation id="9050666287014529139">משפט-סיסמה</translation> +<translation id="9050666287014529139">ביטוי סיסמה</translation> <translation id="9052208328806230490">רשמת את המדפסות שלך ב-<ph name="CLOUD_PRINT_NAME" /> באמצעות החשבון <ph name="EMAIL" /></translation> <translation id="9052404922357793350">המשך חסימה</translation> <translation id="9053563360605707198">הדפסה על שני הצדדים</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index 7205ace46..fb891f16 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">拡張機能のエラー</translation> <translation id="1246158006305844142">Google アカウントでログインしているすべての Chrome OS デバイス間でアプリや設定が同期されます。ブラウザの同期オプションについては、<ph name="LINK_BEGIN" />Chrome の設定<ph name="LINK_END" />をご覧ください。</translation> <translation id="1246905108078336582">クリップボードから候補を削除してもよろしいですか?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> はバージョンが古いためブロックされました</translation> <translation id="1251366534849411931">開始の中かっこがありません: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">サイトにより保存された <ph name="TOTAL_USAGE" /> のデータとインストールされたアプリが削除されます</translation> <translation id="125220115284141797">デフォルト</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">ホーム ネットワーク、ローミングなし</translation> <translation id="1315056510003830387">Flash の使用を許可しないサイト</translation> -<translation id="1315144594965013365">両方のデバイスでロックが解除されていること、お互いが近くにあること、Bluetooth が有効になっていることを確認してください。Chromebook でファイルを共有する場合は、Chromebook でニアバイシェアが有効になっていることも確認してください(時刻を選択してステータス領域を開き、ニアバイシェアを選択します)。</translation> <translation id="1316136264406804862">検索しています...</translation> <translation id="1316495628809031177">同期は一時停止中です</translation> <translation id="1317637799698924700">ドッキング ステーションは USB Type-C 互換モードで動作します。</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">認証局が侵害された</translation> <translation id="2182058453334755893">クリップボードにコピーされました</translation> <translation id="2184515124301515068">サイトで音声が再生される可能性がある場合、Chrome で自動的に許可またはブロックする(推奨)</translation> -<translation id="2187243482123994665">ユーザーのアクティブ状態</translation> <translation id="2187675480456493911">アカウントの他のデバイスと同期しています。他のユーザーが変更した設定は同期されません。<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation> <translation id="2187895286714876935">サーバー証明書インポート エラー</translation> <translation id="2187906491731510095">拡張機能が更新されました</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">エクスポート(&X)</translation> <translation id="4107048419833779140">ストレージ デバイスの認識と取り外し</translation> <translation id="4109135793348361820"><ph name="USER_NAME" />(<ph name="USER_EMAIL" />)にウィンドウを移動</translation> -<translation id="411031910327788420">字幕のサイズとスタイルをカスタマイズして、この設定をサポートしているアプリに適用します</translation> <translation id="4110490973560452005">ダウンロードが完了しました(<ph name="FILE_NAME" />)。ダウンロード バーの領域に切り替えるには Shift+F6 キーを押してください。</translation> <translation id="4110686435123617899">アルバム「<ph name="TITLE" />」の <ph name="DESC" />を選択</translation> <translation id="4110895898888439383">ハイ コントラスト モードでウェブをブラウジングする</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">キーボードの最上段にあるキーの動作を切り替えるには、ランチャー キーを押したままにします</translation> <translation id="4400963414856942668">スターアイコンをクリックしてタブをブックマークに追加できます</translation> <translation id="4403775189117163360">別のフォルダを選択</translation> -<translation id="440391631796167175">脆弱なパスワードは検出されませんでした</translation> <translation id="4404136731284211429">再スキャン</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> は保護者によってブロックされています。このアプリを使用するには、保護者の許可が必要です。</translation> <translation id="4405117686468554883">*.jpeg、*.jpg、*.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">このタブをフォーカス</translation> <translation id="6243280677745499710">現在設定されている壁紙</translation> <translation id="6243774244933267674">サーバーを使用できません</translation> -<translation id="6244185221716469155">脆弱なパスワードは簡単に推測されてしまいます。安全なパスワードを作成してください。 - <ph name="BEGIN_LINK" />セキュリティに関する他のヒントを見る<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC ファイルのインポート</translation> <translation id="6246790815526961700">デバイスからアップロード</translation> <translation id="6247620186971210352">アプリが見つかりません</translation> @@ -6208,6 +6201,7 @@ <translation id="8281886186245836920">スキップ</translation> <translation id="8283475148136688298">「<ph name="DEVICE_NAME" />」への接続中に、認証コードが拒否されました。</translation> <translation id="8284279544186306258"><ph name="WEBSITE_1" /> の全サイト</translation> +<translation id="8284326494547611709">字幕</translation> <translation id="8286036467436129157">ログイン</translation> <translation id="8286963743045814739">シークレット ウィンドウを使って、シークレット モードで閲覧できます</translation> <translation id="8287902281644548111">API 呼び出しまたは URL で検索</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index e3f7bfb7..e57b6b0 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">გაფართოების შეცდომა</translation> <translation id="1246158006305844142">თქვენი აპები და პარამეტრები სინქრონიზებული იქნება თქვენს ყველა Chrome OS მოწყობილობასთან, რომელზეც შესული ხართ თქვენი Google ანგარიშით. ბრაუზერის სინქრონიზაციის პარამეტრების სანახავად გადადით <ph name="LINK_BEGIN" />Chrome-ის პარამეტრებზე<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">გსურთ შემოთავაზების გაცვლის ბუფერიდან ამოშლა?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> დაიბლოკა, რადგან ის მოძველებულია</translation> <translation id="1251366534849411931">მოსალოდნელი იყო გამხსნელი ფიგურული ფრჩხილი: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">ამ მოქმედებით გასუფთავდება საიტებისა და დაინსტალირებული აპების მიერ შენახული მონაცემების <ph name="TOTAL_USAGE" /></translation> <translation id="125220115284141797">ნაგულისხმევი</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">სახლის ქსელი, როუმინგის გარეშე</translation> <translation id="1315056510003830387">Flash-ის გამოყენება დაუშვებელია</translation> -<translation id="1315144594965013365">დარწმუნდით, რომ ორივე მოწყობილობა განბლოკილია, ახლოსაა ერთმანეთთან და მათზე ჩართულია Bluetooth. თუ Chromebook-თან აზიარებთ, მასზე ჩართული უნდა იყოს მახლობლად გაზიარება (ამისთვის გახსენით სტატუსის არე — ჯერ აირჩიეთ დრო, შემდეგ კი მახლობლად გაზიარება).</translation> <translation id="1316136264406804862">მიმდინარეობს ძიება…</translation> <translation id="1316495628809031177">სინქრონიზაცია შეჩერებულია</translation> <translation id="1317637799698924700">თქვენი სამაგრი იმუშავებს USB Type-C-თან თავსებად რეჟიმში.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">CA კომპრომისი</translation> <translation id="2182058453334755893">დაკოპირდა თქვენს გაცვლის ბუფერში</translation> <translation id="2184515124301515068">საიტებისთვის ხმის დაკვრის დაშვების Chrome-ისთვის მინდობა (რეკომენდებული)</translation> -<translation id="2187243482123994665">მომხმარებლის დასწრება</translation> <translation id="2187675480456493911">სინქრონიზებულია თქვენს ანგარიშთან დაკავშირებულ სხვა მოწყობილობებს შორის. სხვა მომხმარებლების მიერ შეცვლილი პარამეტრები არ იქნება სინქრონიზებული. <ph name="LINK_BEGIN" />შეიტყვეთ მეტი<ph name="LINK_END" /></translation> <translation id="2187895286714876935">სერვერის სერტიფიკატის იმპორტის შეცდომა</translation> <translation id="2187906491731510095">გაფართოებები განახლდა</translation> @@ -2704,7 +2701,6 @@ <translation id="4104163789986725820">ე&ქსპორტი…</translation> <translation id="4107048419833779140">მეხსიერების მოწყობილობების იდენტიფიცირება და ამოღება</translation> <translation id="4109135793348361820">ფანჯრის გადატანა <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">სუბტიტრების ზომისა და სტილის მორგება აპებისთვის, რომელთა მიერაც მხარდაჭერილია ეს პარამეტრი</translation> <translation id="4110490973560452005">ჩამოტვირთვა დასრულდა: <ph name="FILE_NAME" />. ჩამოტვირთვების ზოლის არეზე გადასასვლელად დააჭირეთ კლავიშთა კომბინაციას: Shift+F6.</translation> <translation id="4110686435123617899">აირჩიეთ ალბომი <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">დაათვალიერეთ ვები მაღალკონტრასტულ რეჟიმში</translation> @@ -2917,7 +2913,6 @@ <translation id="4400632832271803360">ზედა მწკრივის კლავიშების რეჟიმის გადასართავად ხანგრძლივად დააჭირეთ გამშვების კლავიშს</translation> <translation id="4400963414856942668">ჩანართის სანიშნეებში დასამატებლად შეგიძლიათ დააწკაპუნოთ ვარსკვლავს</translation> <translation id="4403775189117163360">სხვა საქაღალდის არჩევა</translation> -<translation id="440391631796167175">სუსტი პაროლები არ მოიძებნა</translation> <translation id="4404136731284211429">ხელახლა სკანირება</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> დაბლოკილია თქვენი მშობლის მიერ. ამ აპის გამოსაყენებლად დაგჭირდებათ მშობლის ნებართვა.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4458,8 +4453,6 @@ <translation id="6242852299490624841">ამ ჩანართის ფოკუსში მოქცევა</translation> <translation id="6243280677745499710">ამჟამად დაყენებული</translation> <translation id="6243774244933267674">სერვერი მიუწვდომელია</translation> -<translation id="6244185221716469155">სუსტი პაროლები ადვილი გამოსაცნობია, ამიტომ პაროლის შექმნისას ძლიერი ვარიანტები უნდა მოიფიქროთ. - <ph name="BEGIN_LINK" />გაეცანით უსაფრთხოებასთან დაკავშირებულ სხვა რჩევებს.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC ფაილის იმპორტირება</translation> <translation id="6246790815526961700">მოწყობილობიდან ატვირთვა</translation> <translation id="6247620186971210352">აპები ვერ მოიძებნა</translation> @@ -6205,6 +6198,7 @@ <translation id="8281886186245836920">გამოტოვება</translation> <translation id="8283475148136688298">ავთენტიფიკაციის კოდი უარყოფილი იქნა „<ph name="DEVICE_NAME" />“-თან დაკავშირების დროს.</translation> <translation id="8284279544186306258">ყველა <ph name="WEBSITE_1" /> ვებგვერდები</translation> +<translation id="8284326494547611709">ტიტრები</translation> <translation id="8286036467436129157">შესვლა</translation> <translation id="8286963743045814739">ვების კონფიდენციალურად დასათვალიერებლად შეგიძლიათ გამოიყენოთ ინკოგნიტო ფანჯარა</translation> <translation id="8287902281644548111">API გამოძახების/URL-ის მიხედვით ძიება</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index ac8ad16..a06475d2 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Кеңейтім қатесі</translation> <translation id="1246158006305844142">Қолданбаларыңыз бен параметрлеріңіз Google есептік жазбасымен кірген барлық Chrome OS құрылғыларында синхрондалады. Браузерді синхрондау опцияларын<ph name="LINK_BEGIN" />Chrome параметрлерінен<ph name="LINK_END" /> қараңыз.</translation> <translation id="1246905108078336582">Ұсыныс буферден өшірілсін бе?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> бөгелді, себебі ол қолданыстын шығарылған.</translation> <translation id="1251366534849411931">Ирек жақша ашылмаған: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Сайттарда және орнатылған қолданбаларда сақталған <ph name="TOTAL_USAGE" /> дерек өшіріледі.</translation> <translation id="125220115284141797">Әдепкі</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Роуминг емес, үй желісі</translation> <translation id="1315056510003830387">Flash бағдарламасын пайдалануға рұқсаты жоқтар</translation> -<translation id="1315144594965013365">Екі құрылғының да құлпы ашық, бір-біріне жақын және Bluetooth функциялары қосулы екеніне көз жеткізіңіз. Егер Chromebook құрылғысымен бөлісетін болсаңыз, Nearby Share қосулы (уақытты таңдау арқылы күй аумағын ашып, Nearby Share функциясын таңдаңыз) екеніне көз жеткізіңіз.</translation> <translation id="1316136264406804862">Ізделуде…</translation> <translation id="1316495628809031177">Синхрондау кідіртілді</translation> <translation id="1317637799698924700">Қондыру станциясы USB Type-C портымен үйлесімді режимде жұмыс істейді.</translation> @@ -1034,7 +1032,6 @@ <translation id="2178614541317717477">CA келісімі</translation> <translation id="2182058453334755893">Буферге көшірілді</translation> <translation id="2184515124301515068">Chrome браузерінде сайттардың дыбысты автоматты ойнатуына тыйым салу (ұсынылады)</translation> -<translation id="2187243482123994665">Пайдаланушының бар-жоғы</translation> <translation id="2187675480456493911">Есептік жазбаңыздағы басқа құрылғылармен синхрондалған. Басқа пайдаланушылар өзгерткен параметрлер синхрондалмайды. <ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Сервер сертификатын импорттау қатесі</translation> <translation id="2187906491731510095">Кеңейтімдер жаңартылды</translation> @@ -2702,7 +2699,6 @@ <translation id="4104163789986725820">Э&кспорттау…</translation> <translation id="4107048419833779140">Жад құрылғыларын анықтау және шығару</translation> <translation id="4109135793348361820">Терезені <ph name="USER_NAME" /> пайдаланушысына (<ph name="USER_EMAIL" />) жылжыту</translation> -<translation id="411031910327788420">Бұл параметрлерді пайдалануға болатын қолданбалар үшін субтитрлер өлшемі мен стилін реттеңіз.</translation> <translation id="4110490973560452005">Жүктеп алу аяқталды: <ph name="FILE_NAME" />. Жүктеп алынғандар жолағы аумағына оралу үшін Shift+F6 пернелерін басыңыз.</translation> <translation id="4110686435123617899">"<ph name="TITLE" />" альбомын таңдаңыз (<ph name="DESC" />).</translation> <translation id="4110895898888439383">Беттерді жоғары контраст режимінде қараңыз</translation> @@ -2915,7 +2911,6 @@ <translation id="4400632832271803360">Жоғарғы қатардағы пернелердің әрекетін ауыстыру үшін қосқыш пернесін басып тұрыңыз</translation> <translation id="4400963414856942668">Қойындыға бетбелгі қою үшін жұлдызды басуыңызға болады.</translation> <translation id="4403775189117163360">Басқа қалта таңдаңыз</translation> -<translation id="440391631796167175">Ешқандай оңай құпия сөз табылмады.</translation> <translation id="4404136731284211429">Қайта іздеу</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> қолданбасын ата-анаңыз бөгеді. Оны пайдалану үшін ата-анаңыздан рұқсат сұраңыз.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4456,8 +4451,6 @@ <translation id="6242852299490624841">Осы қойындыны ерекшелеу</translation> <translation id="6243280677745499710">Орнатылып тұрған</translation> <translation id="6243774244933267674">Сервер қолжетімсіз</translation> -<translation id="6244185221716469155">Құпия сөзіңіз оңай болса, оны табу оңай болады. Күрделі құпия сөз орнатыңыз. - <ph name="BEGIN_LINK" />Қауіпсіздікке қатысты басқа кеңестерді де көріңіз.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC файлын импорттау</translation> <translation id="6246790815526961700">Құрылғыдан жүктеп салу</translation> <translation id="6247620186971210352">Ешқандай қолданбалар табылмады.</translation> @@ -6204,6 +6197,7 @@ <translation id="8281886186245836920">Өткізіп жіберу</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" құрылғысына қосылу кезінде аутентификация коды қабылданбады.</translation> <translation id="8284279544186306258">барлық <ph name="WEBSITE_1" /> сайттары</translation> +<translation id="8284326494547611709">Титрлер</translation> <translation id="8286036467436129157">Кіру</translation> <translation id="8286963743045814739">Инкогнито терезесі арқылы интернетті оңаша шолуыңызға болады</translation> <translation id="8287902281644548111">API шақыруы/URL бойынша іздеу</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb index dc2f756..97c5661 100644 --- a/chrome/app/resources/generated_resources_km.xtb +++ b/chrome/app/resources/generated_resources_km.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">កំហុសឆ្គងកម្មវិធីបន្ថែម</translation> <translation id="1246158006305844142">ការកំណត់ និងកម្មវិធីរបស់អ្នកនឹងធ្វើសមកាលកម្មនៅលើឧបករណ៍ Chrome OS ទាំងអស់ ដែលអ្នកចូលដោយប្រើគណនី Google របស់អ្នក។ សូមចូលទៅកាន់<ph name="LINK_BEGIN" />ការកំណត់ Chrome<ph name="LINK_END" /> សម្រាប់ជម្រើសសមកាលកម្មកម្មវិធីរុករកតាមអ៊ីនធឺណិត។</translation> <translation id="1246905108078336582">លុបការណែនាំចេញពីឃ្លីបបត?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> ត្រូវបានទប់ស្កាត់ ដោយសារវាត្រូវបានបញ្ឈប់</translation> <translation id="1251366534849411931">ត្រូវមានឃ្នាបបើក៖ <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">សកម្មភាពនេះនឹងសម្អាតទិន្នន័យទំហំ <ph name="TOTAL_USAGE" /> ដែលបានរក្សាទុកដោយគេហទំព័រ និងកម្មវិធីដែលបានដំឡើង</translation> <translation id="125220115284141797">លំនាំដើម</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">បណ្តាញនៅផ្ទះ មិនមែនរ៉ូមីងទេ</translation> <translation id="1315056510003830387">មិនអនុញ្ញាតឱ្យប្រើ Flash ទេ</translation> -<translation id="1315144594965013365">សូមប្រាកដថាឧបករណ៍ទាំងពីរមិនជាប់សោ នៅជិតគ្នា និងបានបើកប៊្លូធូស។ ប្រសិនបើអ្នកកំពុងចែករំលែកជាមួយ Chromebook សូមប្រាកដថា វាបានបើកការចែករំលែកនៅជិត (បើកតំបន់ស្ថានភាពដោយជ្រើសរើសពេលវេលា រួចជ្រើសរើសការចែករំលែកនៅជិត)។</translation> <translation id="1316136264406804862">កំពុងស្វែងរក...</translation> <translation id="1316495628809031177">សមកាលកម្មត្រូវបានផ្អាក</translation> <translation id="1317637799698924700">ឧបករណ៍ភ្ជាប់របស់អ្នកនឹងធ្វើប្រតិបត្តិការនៅក្នុងមុខងារដែលត្រូវគ្នាជាមួយ USB ប្រភេទ C ។</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">CA សម្រួល</translation> <translation id="2182058453334755893">បានចម្លងទៅក្នុងឃ្លីបបតរបស់អ្នក</translation> <translation id="2184515124301515068">អនុញ្ញាតឱ្យ Chrome ជ្រើសរើសថាតើពេលណាដែលគេហទំព័រអាចចាក់សំឡេងបាន (បានណែនាំ)</translation> -<translation id="2187243482123994665">វត្តមានរបស់អ្នកប្រើប្រាស់</translation> <translation id="2187675480456493911">បានធ្វើសមកាលកម្មជាមួយឧបករណ៍ផ្សេងទៀតនៅលើគណនីរបស់អ្នក។ ការកំណត់ដែលបានកែប្រែដោយអ្នកប្រើប្រាស់ផ្សេងទៀតនឹងមិនត្រូវបានធ្វើសមកាលកម្មទេ។ <ph name="LINK_BEGIN" />ស្វែងយល់បន្ថែម<ph name="LINK_END" /></translation> <translation id="2187895286714876935">កំហុសឆ្គងការនាំចូលវិញ្ញាបនប័ត្រម៉ាស៊ីនមេ</translation> <translation id="2187906491731510095">បានដំឡើងជំនាន់កម្មវិធីបន្ថែម</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">នាំចេញ...</translation> <translation id="4107048419833779140">កំណត់អត្តសញ្ញាណ និងដកឧបករណ៍ផ្ទុកចេញ។</translation> <translation id="4109135793348361820">ផ្លាស់ទីផ្ទាំងទៅ <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">ប្ដូររចនាប័ទ្ម និងទំហំអក្សររត់តាមបំណង សម្រាប់កម្មវិធីដែលអាចប្រើការកំណត់នេះ</translation> <translation id="4110490973560452005">ការទាញយកបានបញ្ចប់៖ <ph name="FILE_NAME" /> ។ សូមចុច Shift+F6 ដើម្បីប្ដូរទៅផ្នែករបាទាញយក។</translation> <translation id="4110686435123617899">ជ្រើសរើសអាល់ប៊ុម <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">រុករកបណ្ដាញដោយប្រើមុខងារភាពដិតកម្រិតខ្ពស់</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">ចុចប៊ូតុងកម្មវិធីចាប់ផ្ដើមឲ្យជាប់ ដើម្បីប្តូរលក្ខណៈគ្រាប់ចុចនៅជួរខាងលើ</translation> <translation id="4400963414856942668">អ្នកអាចចុចរូបផ្កាយ ដើម្បីចំណាំផ្ទាំង</translation> <translation id="4403775189117163360">ជ្រើសរើសថតផ្សេង</translation> -<translation id="440391631796167175">រកមិនឃើញពាក្យសម្ងាត់ខ្សោយទេ</translation> <translation id="4404136731284211429">ស្កេនម្តងទៀត</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> ត្រូវបានទប់ស្កាត់ដោយមាតាបិតារបស់អ្នក។ សូមស្នើសុំការអនុញ្ញាតពីមាតាបិតារបស់អ្នក ដើម្បីប្រើកម្មវិធីនេះ។</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4460,8 +4455,6 @@ <translation id="6242852299490624841">ផ្ដោតផ្ទាំងនេះ</translation> <translation id="6243280677745499710">ឥឡូវនេះបានកំណត់ហើយ</translation> <translation id="6243774244933267674">ម៉ាស៊ីនមេមិនមានទេ។</translation> -<translation id="6244185221716469155">ពាក្យសម្ងាត់ខ្សោយមានភាពងាយស្រួលក្នុងការទាយដឹង។ សូមប្រាកដថាអ្នកកំពុងបង្កើតពាក្យសម្ងាត់ខ្លាំង។ - <ph name="BEGIN_LINK" />មើលគន្លឹះសុវត្ថិភាពច្រើនទៀត។<ph name="END_LINK" /></translation> <translation id="6244245036423700521">នាំចូលឯកសារ ONC</translation> <translation id="6246790815526961700">បង្ហោះពីឧបករណ៍</translation> <translation id="6247620186971210352">រកមិនឃើញកម្មវិធីទេ</translation> @@ -6208,6 +6201,7 @@ <translation id="8281886186245836920">រំលង</translation> <translation id="8283475148136688298">លេខកូដសម្គាល់អត្តសញ្ញាណបានបដិសេធ ខណៈពេលកំពុងភ្ជាប់ទៅ "<ph name="DEVICE_NAME" />"។</translation> <translation id="8284279544186306258">គេហទំព័រ <ph name="WEBSITE_1" /> ទាំងអស់</translation> +<translation id="8284326494547611709">អត្ថបទពិពណ៌នា</translation> <translation id="8286036467436129157">ចូល</translation> <translation id="8286963743045814739">អ្នកអាចរុករកជាលក្ខណៈឯកជន ដោយប្រើវិនដូឯកជន</translation> <translation id="8287902281644548111">ស្វែងរកតាមរយៈការហៅទូរសព្ទតាម API/URL</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index abb48574..fc558d1 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">ವಿಸ್ತರಣೆ ದೋಷ</translation> <translation id="1246158006305844142">ನಿಮ್ಮ Google ಖಾತೆಯೊಂದಿಗೆ ನೀವು ಸೈನ್ ಇನ್ ಮಾಡಿದ ಎಲ್ಲಾ Chrome OS ಸಾಧನಗಳಲ್ಲಿ ನಿಮ್ಮ ಆ್ಯಪ್ಗಳು ಮತ್ತು ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಸಿಂಕ್ ಮಾಡಲಾಗುತ್ತದೆ. ಬ್ರೌಸರ್ ಸಿಂಕ್ ಆಯ್ಕೆಗಳಿಗಾಗಿ, <ph name="LINK_BEGIN" />Chrome ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ<ph name="LINK_END" /> ಹೋಗಿ.</translation> <translation id="1246905108078336582">ಕ್ಲಿಪ್ಬೋರ್ಡ್ನಿಂದ ಸಲಹೆಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದೇ?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> ತಡೆಹಿಡಿಯಲಾಗಿದೆ, ಹೀಗಾಗಿ ಅದನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation> <translation id="1251366534849411931">ಓಪನಿಂಗ್ ಕರ್ಲಿ ಬ್ರಾಕೆಟ್ ಅನ್ನು ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">ಸೈಟ್ಗಳು ಮತ್ತು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿದ ಆ್ಯಪ್ಗಳಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ <ph name="TOTAL_USAGE" /> ಡೇಟಾವನ್ನು ಇದು ತೆರವುಗೊಳಿಸುತ್ತದೆ</translation> <translation id="125220115284141797">ಡಿಫಾಲ್ಟ್</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">ಹೋಮ್ ನೆಟ್ವರ್ಕ್, ರೋಮಿಂಗ್ ಇಲ್ಲ</translation> <translation id="1315056510003830387">Flash ಬಳಸಲು ಈ ಸೈಟ್ಗಳಿಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ</translation> -<translation id="1315144594965013365">ಎರಡೂ ಸಾಧನಗಳು ಅನ್ಲಾಕ್ ಆಗಿವೆ ಮತ್ತು ಪರಸ್ಪರ ಹತ್ತಿರದಲ್ಲಿವೆ, ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ನೀವು Chromebook ಜೊತೆಗೆ ಹಂಚಿಕೊಳ್ಳುತ್ತಿದ್ದರೆ, ಅದರಲ್ಲಿ Nearby ಶೇರಿಂಗ್ ಆನ್ ಆಗಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ (ಸಮಯವನ್ನು ಆಯ್ಕೆಮಾಡುವ ಮೂಲಕ ಸ್ಥಿತಿ ಪ್ರದೇಶವನ್ನು ತೆರೆಯಿರಿ, ನಂತರ Nearby ಶೇರ್ ಆಯ್ಕೆಮಾಡಿ).</translation> <translation id="1316136264406804862">ಹುಡುಕಲಾಗುತ್ತಿದೆ...</translation> <translation id="1316495628809031177">ಸಿಂಕ್ ಅನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ</translation> <translation id="1317637799698924700">USB ಟೈಪ್-C ಗೆ ಹೊಂದಾಣಿಕೆಯಾಗುವ ಮೋಡ್ನಲ್ಲಿ ನಿಮ್ಮ ಡಾಕಿಂಗ್ ಸ್ಟೇಶನ್ ಕೆಲಸ ಮಾಡುತ್ತದೆ.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA ಹೊಂದಾಣಿಕೆ</translation> <translation id="2182058453334755893">ನಿಮ್ಮ ಕ್ಲಿಪ್ಬೋರ್ಡ್ಗೆ ನಕಲಿಸಲಾಗಿದೆ</translation> <translation id="2184515124301515068">ಯಾವ ಸೈಟ್ಗಳು ಧ್ವನಿಯನ್ನು ಪ್ಲೇ ಮಾಡಬೇಕು ಎಂಬುದನ್ನು Chrome ಆಯ್ಕೆ ಮಾಡಲಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation> -<translation id="2187243482123994665">ಬಳಕೆದಾರರ ಉಪಸ್ಥಿತಿ</translation> <translation id="2187675480456493911">ನಿಮ್ಮ ಖಾತೆಯಲ್ಲಿ ಇತರ ಸಾಧನಗಳ ಜೊತೆಗೆ ಸಿಂಕ್ ಮಾಡಲಾಗಿದೆ. ಇತರ ಬಳಕೆದಾರರು ಮಾರ್ಪಡಿಸಿದ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಸಿಂಕ್ ಮಾಡುವುದಿಲ್ಲ. <ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation> <translation id="2187895286714876935">ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರದ ಆಮದು ದೋಷ</translation> <translation id="2187906491731510095">ವಿಸ್ತರಣೆಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗಿದೆ</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">ರ&ಫ್ತು...</translation> <translation id="4107048419833779140">ಸಂಗ್ರಹಣೆ ಸಾಧನಗಳನ್ನು ಗುರುತಿಸಿ ಮತ್ತು ತೆಗೆದುಹಾಕಿ</translation> <translation id="4109135793348361820">ವಿಂಡೋವನ್ನು <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) ಗೆ ಸರಿಸಿ</translation> -<translation id="411031910327788420">ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬೆಂಬಲಿಸುವ ಆ್ಯಪ್ಗಳಿಗೆ ಶೀರ್ಷಿಕೆ ಗಾತ್ರ ಮತ್ತು ಶೈಲಿಯನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ</translation> <translation id="4110490973560452005">ಡೌನ್ಲೋಡ್ ಪೂರ್ಣಗೊಂಡಿದೆ: <ph name="FILE_NAME" />. ಡೌನ್ಲೋಡ್ ಪಟ್ಟಿಯ ಜಾಗಕ್ಕೆ ಹೋಗಲು Shift+F6 ಅನ್ನು ಒತ್ತಿ.</translation> <translation id="4110686435123617899">ಆಲ್ಬಮ್ ಆಯ್ಕೆ ಮಾಡಿ <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">ಅಧಿಕ ಕಾಂಟ್ರಾಸ್ಟ್ ಮೋಡ್ನಲ್ಲಿ ವೆಬ್ ಅನ್ನು ಬ್ರೌಸ್ ಮಾಡಿ</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">ಮೇಲಿನ-ಸಾಲುಗಳ ಕೀಗಳ ನಡವಳಿಕೆಯನ್ನು ಬದಲಿಸಲು ಲಾಂಚರ್ ಕೀ ಅನ್ನು ಒತ್ತಿ ಹಿಡಿಯಿರಿ</translation> <translation id="4400963414856942668">ಟ್ಯಾಬ್ ಅನ್ನು ಬುಕ್ಮಾರ್ಕ್ ಮಾಡಲು ನೀವು ಸ್ಟಾರ್ ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡಬಹುದು</translation> <translation id="4403775189117163360">ಬೇರೊಂದು ಫೋಲ್ಡರ್ ಆಯ್ಕೆಮಾಡಿ</translation> -<translation id="440391631796167175">ಯಾವುದೇ ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್ಗಳು ಕಂಡುಬಂದಿಲ್ಲ</translation> <translation id="4404136731284211429">ಮತ್ತೆ ಸ್ಕ್ಯಾನ್ ಮಾಡಿ</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> ಅನ್ನು ನಿಮ್ಮ ಪೋಷಕರು ನಿರ್ಬಂಧಿಸಿದ್ದಾರೆ ಈ ಆ್ಯಪ್ ಬಳಸುವುದಕ್ಕೆ, ನಿಮ್ಮ ಪೋಷಕರ ಅನುಮತಿಯನ್ನು ಕೇಳಿ.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4461,8 +4456,6 @@ <translation id="6242852299490624841">ಈ ಟ್ಯಾಬ್ ಮೇಲೆ ಗಮನಹರಿಸಿ</translation> <translation id="6243280677745499710">ಪ್ರಸ್ತುತವಾಗಿ ಹೊಂದಿಸಿರುವುದು</translation> <translation id="6243774244933267674">ಸರ್ವರ್ ಲಭ್ಯವಿಲ್ಲ</translation> -<translation id="6244185221716469155">ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಸುಲಭವಾಗಿ ಊಹಿಸಬಹುದು. ನೀವು ಸದೃಢ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ರಚಿಸುತ್ತಿದ್ದೀರಿ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. - <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ಭದ್ರತಾ ಸಲಹೆಗಳನ್ನು ನೋಡಿ.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC ಫೈಲ್ ಆಮದು ಮಾಡಿ</translation> <translation id="6246790815526961700">ಸಾಧನದಿಂದ ಅಪ್ಲೋಡ್ ಮಾಡಿ</translation> <translation id="6247620186971210352">ಯಾವುದೇ ಆ್ಯಪ್ಗಳು ಕಂಡುಬಂದಿಲ್ಲ</translation> @@ -6207,6 +6200,7 @@ <translation id="8281886186245836920">ಸ್ಕಿಪ್</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" ಗೆ ಸಂಪರ್ಕಪಡಿಸುವಾಗ ದೃಢೀಕರಣ ಕೋಡ್ ಅನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ.</translation> <translation id="8284279544186306258">ಎಲ್ಲಾ <ph name="WEBSITE_1" /> ಸೈಟ್ಗಳು</translation> +<translation id="8284326494547611709">ಶೀರ್ಷಿಕೆಗಳು</translation> <translation id="8286036467436129157">ಸೈನ್ ಇನ್</translation> <translation id="8286963743045814739">ಅದೃಶ್ಯ ವಿಂಡೋವನ್ನು ಬಳಸುವ ಮೂಲಕ ನೀವು ಖಾಸಗಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡಬಹುದು</translation> <translation id="8287902281644548111">API ಕರೆ/URL ಪ್ರಕಾರವಾಗಿ ಹುಡುಕಿ</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index 12d4303..f3bbeac 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">확장 프로그램 오류</translation> <translation id="1246158006305844142">앱 및 설정은 Google 계정으로 로그인한 모든 Chrome OS 기기와 동기화됩니다. 브라우저 동기화 옵션을 보려면 <ph name="LINK_BEGIN" />Chrome 설정<ph name="LINK_END" />으로 이동하세요.</translation> <translation id="1246905108078336582">클립보드에서 추천 항목을 삭제하시겠습니까?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" />이(가) 지원 중단되어 차단되었습니다.</translation> <translation id="1251366534849411931">열림 중괄호 누락: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">사이트 및 설치된 앱에서 저장한 <ph name="TOTAL_USAGE" />의 데이터가 삭제됩니다.</translation> <translation id="125220115284141797">기본</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">홈 네트워크 로밍 안함</translation> <translation id="1315056510003830387">플래시 사용이 허용되지 않음</translation> -<translation id="1315144594965013365">두 기기 모두 잠금 해제되어 있고 가까이에 있으며 블루투스가 켜져 있어야 합니다. Chromebook과 공유하는 경우 Chromebook의 Nearby Share가 사용 설정되어 있는지 확인하세요. 시간, Nearby Share를 차례로 선택하면 상태 영역에서 확인할 수 있습니다.</translation> <translation id="1316136264406804862">검색 중...</translation> <translation id="1316495628809031177">동기화 일시중지됨</translation> <translation id="1317637799698924700">현재 도킹 스테이션은 USB 타입-C 호환 모드에서 작동합니다.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">CA 손상</translation> <translation id="2182058453334755893">클립보드에 복사됨</translation> <translation id="2184515124301515068">사이트의 소리 재생 여부를 Chrome이 결정(권장)</translation> -<translation id="2187243482123994665">사용자 접속 상태</translation> <translation id="2187675480456493911">계정에 연결된 다른 기기와 동기화되어 있습니다. 다른 사용자가 수정한 설정은 동기화되지 않습니다. <ph name="LINK_BEGIN" />자세히 알아보기<ph name="LINK_END" /></translation> <translation id="2187895286714876935">서버 인증서 가져오기 오류</translation> <translation id="2187906491731510095">확장 프로그램 업데이트됨</translation> @@ -2703,7 +2700,6 @@ <translation id="4104163789986725820">내보내기(&X)...</translation> <translation id="4107048419833779140">외부 저장장치 식별 및 제거</translation> <translation id="4109135793348361820">창을 <ph name="USER_NAME" />(<ph name="USER_EMAIL" />)님에게로 이동</translation> -<translation id="411031910327788420">이 설정을 지원하는 앱에 적용할 자막 크기와 스타일을 맞춤설정합니다.</translation> <translation id="4110490973560452005">다운로드 완료: <ph name="FILE_NAME" />. 다운로드바 영역으로 이동하려면 Shift+F6를 누르세요.</translation> <translation id="4110686435123617899">앨범 <ph name="TITLE" /> <ph name="DESC" /> 선택</translation> <translation id="4110895898888439383">고대비 모드로 웹 탐색</translation> @@ -2916,7 +2912,6 @@ <translation id="4400632832271803360">맨 윗 줄 키의 동작을 전환하려면 런처 키를 길게 누르세요.</translation> <translation id="4400963414856942668">별표를 클릭하여 탭을 북마크에 추가할 수 있습니다.</translation> <translation id="4403775189117163360">다른 폴더 선택</translation> -<translation id="440391631796167175">취약한 비밀번호 없음</translation> <translation id="4404136731284211429">다시 검색</translation> <translation id="4404843640767531781">부모님이 <ph name="APP_NAME" /> 앱을 차단했습니다. 이 앱을 사용하려면 부모님에게 권한을 요청하세요.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4457,8 +4452,6 @@ <translation id="6242852299490624841">이 탭에 포커스</translation> <translation id="6243280677745499710">현재 설정</translation> <translation id="6243774244933267674">서버를 사용할 수 없음</translation> -<translation id="6244185221716469155">취약한 비밀번호는 추측하기 쉽습니다. 안전한 비밀번호를 설정하세요. - <ph name="BEGIN_LINK" />보안 도움말 더보기<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC 파일 가져오기</translation> <translation id="6246790815526961700">기기에서 업로드</translation> <translation id="6247620186971210352">앱이 없습니다.</translation> @@ -6206,6 +6199,7 @@ <translation id="8281886186245836920">건너뛰기</translation> <translation id="8283475148136688298">'<ph name="DEVICE_NAME" />'에 연결하는 동안 인증 코드가 거부되었습니다.</translation> <translation id="8284279544186306258">모든 <ph name="WEBSITE_1" /> 사이트</translation> +<translation id="8284326494547611709">자막</translation> <translation id="8286036467436129157">로그인</translation> <translation id="8286963743045814739">시크릿 창을 사용하면 비공개로 탐색할 수 있습니다.</translation> <translation id="8287902281644548111">API 호출/URL로 검색</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index 542a3f92..d34ccd1 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Кеңейтүү катасы</translation> <translation id="1246158006305844142">Колдонмолор менен жөндөөлөр Google аккаунтуңуз менен кирип турган бардык Chrome OS түзмөктөрүндө шайкештирилет. Серепчини шайкештирүү параметрлерин көрүү үчүн <ph name="LINK_BEGIN" />Chrome жөндөөлөрүнө<ph name="LINK_END" /> өтүңүз.</translation> <translation id="1246905108078336582">Сунуш алмашуу буферинен өчүрүлсүнбү?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> жоюлгандыктан, бөгөттөлдү</translation> <translation id="1251366534849411931">Ачуучу ийри кашаа жетишпейт: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Ушуну менен сайттар менен колдонмолор ээлеп турган <ph name="TOTAL_USAGE" /> орун бошотулат</translation> <translation id="125220115284141797">Демейки</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Үй тармагы, роуминг жок</translation> <translation id="1315056510003830387">Flash'ти колдоно албайт</translation> -<translation id="1315144594965013365">Эки түзмөктүн тең кулпусу ачылып, бири-бирине жакын жайгашып, Bluetooth күйүп турушу керек. Chromebook менен бөлүшүп жатсаңыз, андагы Nearby Sharing күйүк экенин текшериңиз (убакытты тандоо менен статус аймагын ачып, Nearby Share функциясын тандаңыз).</translation> <translation id="1316136264406804862">Изделүүдө…</translation> <translation id="1316495628809031177">Шайкештирүү тындырылды</translation> <translation id="1317637799698924700">Док бекетиңиз C тибиндеги USB менен шайкеш режимде иштейт.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">ТБ компрометациясы</translation> <translation id="2182058453334755893">Алмашуу буферине көчүрүлдү</translation> <translation id="2184515124301515068">Сайттардын добушун чыгарууну Chrome'го табыштаңыз (сунушталат)</translation> -<translation id="2187243482123994665">Колдонуучунун сайтта же сайтта эместиги</translation> <translation id="2187675480456493911">Аккаунтуңуздагы башка түзмөктөр менен шайкештирилди. Башка колдонуучу өзгөрткөн жөндөө шайкештирилбейт. <ph name="LINK_BEGIN" />Кеңири маалымат<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Сервердин тастыктамасын импорттоо катасы.</translation> <translation id="2187906491731510095">Кеңейтүүлөр жаңырды</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">Э&кспорттоо…</translation> <translation id="4107048419833779140">Сактагыч түзмөктөрү аныкталып, чыгарылсын</translation> <translation id="4109135793348361820">Терезени буга <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) жылдыруу</translation> -<translation id="411031910327788420">Бул жөндөө иштеген колдонмолордо коштомо жазуулардын өлчөмүн жана стилин ыңгайлаштыруу</translation> <translation id="4110490973560452005">Жүктөп алуу аяктады: <ph name="FILE_NAME" />. Жүктөлүп алынган файлдар тилкесине өтүү үчүн Shift+F6 баскычтарын басыңыз.</translation> <translation id="4110686435123617899">Альбом тандаңыз <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Интернетти жогорку контраст режиминде серептеңиз</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Жогорку катардагы баскычтардын аракеттерин которуштуруу үчүн, Жүргүзгүч баскычын басып туруңуз</translation> <translation id="4400963414856942668">Өтмөктү кыстармаларга кошуу үчүн жылдызчаны чыкылдатып коюңуз</translation> <translation id="4403775189117163360">Башка папканы тандоо</translation> -<translation id="440391631796167175">Начар сырсөздөр табылган жок</translation> <translation id="4404136731284211429">Кайра текшерүү</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> колдонмосун ата-энең бөгөттөп койгон. Ата-энеңден бул колдонмону иштетүүгө уруксат сура.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">Бул өтмөктү фокустоо</translation> <translation id="6243280677745499710">Учурда тушкагаз катары орнотулган</translation> <translation id="6243774244933267674">Сервер жеткиликсиз.</translation> -<translation id="6244185221716469155">Начар сырсөздөрдү билип алуу оңой. Татаал сырсөздөрдү түзүңүз. - <ph name="BEGIN_LINK" />Дагы башка коопсуздук кеңештерин алуу.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC файлын өткөрүп алуу</translation> <translation id="6246790815526961700">Түзмөктөн жүктөп берүү</translation> <translation id="6247620186971210352">Колдонмолор табылган жок</translation> @@ -6207,6 +6200,7 @@ <translation id="8281886186245836920">Өткөрүп жиберүү</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" туташып жатканда аныктыкты текшерүү коду четке кагылды.</translation> <translation id="8284279544186306258">бардык <ph name="WEBSITE_1" /> сайттар</translation> +<translation id="8284326494547611709">Коштомо жазуулар</translation> <translation id="8286036467436129157">Кириңиз</translation> <translation id="8286963743045814739">Жашыруун терезени ачып алып, купуя серептей аласыз</translation> <translation id="8287902281644548111">API чалуу/URL боюнча издөө</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index 88550d5..caeadec 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">ສ່ວນຂະຫຍາຍຜິດພາດ</translation> <translation id="1246158006305844142">ແອັບ ແລະ ການຕັ້ງຄ່າຂອງທ່ານຈະຊິ້ງຂໍ້ມູນໃນທົ່ວອຸປະກອນ Chrome OS ທີ່ທ່ານເຂົ້າສູ່ລະບົບດ້ວຍບັນຊີ Google ຂອງທ່ານ. ສຳລັບຕົວເລືອກການຊິ້ງຂໍ້ມູນ, ກະລຸນາໄປທີ່<ph name="LINK_BEGIN" />ການຕັ້ງຄ່າ Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">ລຶບການແນະນຳອອກຈາກຄລິບບອດບໍ?</translation> -<translation id="1249643471736608405">ບລັອກ <ph name="PLUGIN_NAME" /> ໄວ້ແລ້ວ ເພາະວ່າລະບົບເຊົາຮອງຮັບມັນແລ້ວ</translation> <translation id="1251366534849411931">ເຄື່ອງໝາຍວົງປີກກາເປີດທີ່ຕ້ອງມີ: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">ນີ້ຈະລຶບລ້າງຂໍ້ມູນ <ph name="TOTAL_USAGE" /> ທີ່ເກັບໄວ້ໂດຍເວັບໄຊ ແລະ ແອັບທີ່ຕິດຕັ້ງໄວ້</translation> <translation id="125220115284141797">ຄ່າເລີ່ມຕົ້ນ</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">ເຄືອຂ່າຍພາຍໃນ, ບໍ່ໂຣມມິງ</translation> <translation id="1315056510003830387">ບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ໃຊ້ Flash</translation> -<translation id="1315144594965013365">ກະລຸນາກວດສອບວ່າອຸປະກອນທັງສອງປົດລັອກແລ້ວ, ຢູ່ໃກ້ກັນ ແລະ ເປີດ Bluetooth. ຖ້າທ່ານກຳລັງແບ່ງປັນກັບ Chromebook, ກະລຸນາກວດໃຫ້ແນ່ໃຈວ່າມັນໄດ້ເປີດການແບ່ງປັນໃກ້ຄຽງແລ້ວ (ເປີດພື້ນທີ່ສະຖານະໂດຍການເລືອກເວລາ, ຈາກນັ້ນເລືອກການແບ່ງປັນໃກ້ຄຽງ).</translation> <translation id="1316136264406804862">ກຳລັງຊອກຫາ...</translation> <translation id="1316495628809031177">ຢຸດການຊິ້ງຂໍ້ມູນໄວ້ຊົ່ວຄາວ</translation> <translation id="1317637799698924700">ແທ່ນວາງສາກຂອງທ່ານຈະເຮັດວຽກໃນໂໝດທີ່ເຂົ້າກັນໄດ້ກັບ USB Type-C.</translation> @@ -1035,7 +1033,6 @@ <translation id="2178614541317717477">ຜ່ອນຜັນ CA</translation> <translation id="2182058453334755893">ອັດສຳເນົາໃສ່ຄລິບບອດຂອງທ່ານແລ້ວ</translation> <translation id="2184515124301515068">ໃຫ້ Chrome ເລືອກວ່າເວັບໄຊສາມາດຫຼິ້ນສຽງໄດ້ເວລາໃດ (ແນະນຳ)</translation> -<translation id="2187243482123994665">ການເຄື່ອນໄຫວນຳໃຊ້ຂອງຜູ້ໃຊ້</translation> <translation id="2187675480456493911">ຊິ້ງຂໍ້ມູນກັບອຸປະກອນອື່ນໃນບັນຊີຂອງທ່ານແລ້ວ. ລະບົບຈະບໍ່ຊິ້ງຂໍ້ມູນການຕັ້ງຄ່າທີ່ຜູ້ໃຊ້ອື່ນແກ້ໄຂ. <ph name="LINK_BEGIN" />ສຶກສາເພີ່ມເຕີມ<ph name="LINK_END" /></translation> <translation id="2187895286714876935">ການນໍາໃບຢັ້ງຢືນເຊີບເວີເຂົ້າຜິດພາດ</translation> <translation id="2187906491731510095">ອັບເດດສ່ວນຂະຫຍາຍແລ້ວ</translation> @@ -2703,7 +2700,6 @@ <translation id="4104163789986725820">ສົ່ງອອກ...</translation> <translation id="4107048419833779140">ລະບຸ ແລະ ປະຕິເສດອຸປະກອນເກັບຂໍ້ມູນ</translation> <translation id="4109135793348361820">ຍ້າຍໜ້າຕ່າງໄປຫາ <ph name="USER_NAME" /> ( <ph name="USER_EMAIL" /> )</translation> -<translation id="411031910327788420">ປັບແຕ່ງຂະໜາດ ແລະ ຮູບແບບຄຳບັນຍາຍສຳລັບແອັບທີ່ຮອງຮັບການຕັ້ງຄ່ານີ້</translation> <translation id="4110490973560452005">ການດາວໂຫຼດສຳເລັດແລ້ວ: <ph name="FILE_NAME" />. ກົດ Shift+F6 ເພື່ອໝຸນວົນໄປຫາບໍລິເວນແຖບການດາວໂຫຼດ.</translation> <translation id="4110686435123617899">ເລືອກອະລະບ້ຳ <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">ທ່ອງເວັບໃນໂໝດຄົມຊັດສູງ</translation> @@ -2916,7 +2912,6 @@ <translation id="4400632832271803360">ກົດປຸ່ມຕົວເປີດໃຊ້ຄ້າງໄວ້ເພື່ອປ່ຽນພຶດຕິກຳຂອງປຸ່ມແຖວເທິງ</translation> <translation id="4400963414856942668">ທ່ານສາມາດຄລິກໃສ່ຮູບດາວເພື່ອບຸກມາກແຖບໃດໜຶ່ງໄວ້</translation> <translation id="4403775189117163360">ເລືອກໂຟນເດີອື່ນ</translation> -<translation id="440391631796167175">ບໍ່ເຫັນລະຫັດຜ່ານງ່າຍ</translation> <translation id="4404136731284211429">ສະແກນອີກ</translation> <translation id="4404843640767531781">ພໍ່ແມ່ຂອງທ່ານບລັອກ <ph name="APP_NAME" /> ໄວ້ ຂໍອະນຸຍາດນຳພໍ່ແມ່ຂອງທ່ານເພື່ອໃຊ້ແອັບນີ້.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4457,8 +4452,6 @@ <translation id="6242852299490624841">ໂຟກັສແຖບນີ້</translation> <translation id="6243280677745499710">ຕັ້ງຕອນນີ້ເລີຍ</translation> <translation id="6243774244933267674">ບໍ່ມີເຊີບເວີຢູ່</translation> -<translation id="6244185221716469155">ລະຫັດຜ່ານງ່າຍແມ່ນລະຫັດຜ່ານທີ່ເດົາໄດ້ງ່າຍ. ໃຫ້ແນ່ໃຈວ່າທ່ານກຳລັງສ້າງລະຫັດຜ່ານຍາກ. - <ph name="BEGIN_LINK" />ເບິ່ງຄຳແນະນຳຄວາມປອດໄພເພີ່ມເຕີມ.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ນຳເຂົ້າໄຟລ໌ ONC</translation> <translation id="6246790815526961700">ອັບໂຫຼດຈາກອຸປະກອນ</translation> <translation id="6247620186971210352">ບໍ່ພົບແອັບໃດໆ</translation> @@ -6204,6 +6197,7 @@ <translation id="8281886186245836920">ຂ້າມ</translation> <translation id="8283475148136688298">ລະຫັດການຮັບຮອງຖືກປະຕິເສດໃນຂະນະທີ່ກໍາລັງເຊື່ອມຕໍ່ກັບ "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">ທຸກເວັບໄຊທ໌ <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">ຄໍາບັນຍາຍພາບ</translation> <translation id="8286036467436129157">ເຂົ້າສູ່ລະບົບ</translation> <translation id="8286963743045814739">ທ່ານສາມາດທ່ອງເວັບແບບເປັນສ່ວນຕົວໂດຍໃຊ້ໜ້າຈໍທີ່ບໍ່ເປີດເຜີຍຕົວຕົນໄດ້</translation> <translation id="8287902281644548111">ຊອກຫາຕາມການເອີ້ນໃຊ້ API/URL</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index bfc092a..427f493 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Plėtinio klaida</translation> <translation id="1246158006305844142">Programos ir nustatymai bus sinchronizuojami visuose „Chrome“ įrenginiuose, kuriuose esate prisijungę naudodami „Google“ paskyrą. Jei reikia naršyklės sinchronizavimo parinkčių, eikite į <ph name="LINK_BEGIN" />„Chrome“ nustatymų skiltį<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Pašalinti pasiūlymą iš iškarpinės?</translation> -<translation id="1249643471736608405">Papildinys „<ph name="PLUGIN_NAME" />“ užblokuotas, nes jis nebenaudojamas</translation> <translation id="1251366534849411931">Pradžioje turi būti nurodytas riestinis skliaustas: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Bus išvalyta <ph name="TOTAL_USAGE" /> svetainių ir įdiegtų programų saugomų duomenų</translation> <translation id="125220115284141797">Numatytoji</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">„Android“ VPN</translation> <translation id="131461803491198646">Namų tinklas, ne tarptinklinis ryšys</translation> <translation id="1315056510003830387">Neleidžiama naudoti „Flash“</translation> -<translation id="1315144594965013365">Įsitikinkite, kad abu įrenginiai yra atrakinti, vienas šalia kito ir juose įjungtas „Bluetooth“ ryšys. Bendrindami su „Chromebook“ įsitikinkite, kad jame įjungta Bendrinimo netoliese funkcija (pasirinkdami laiką atidarykite būsenos sritį, tada pasirinkite Bendrinimą netoliese).</translation> <translation id="1316136264406804862">Ieškoma...</translation> <translation id="1316495628809031177">Sinchronizavimas pristabdytas</translation> <translation id="1317637799698924700">Jūsų doko stotis veiks su „Type-C“ USB suderinamu režimu.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA pažeidimo galimybė</translation> <translation id="2182058453334755893">Nukopijuota į iškarpinę</translation> <translation id="2184515124301515068">Leisti „Chrome“ pasirinkti, kada svetainės gali leisti garsą (rekomenduojama)</translation> -<translation id="2187243482123994665">Naudotojo buvimas</translation> <translation id="2187675480456493911">Sinchronizuojama su kitais įrenginiais jūsų paskyroje. Kitų naudotojų pakeisti nustatymai nebus sinchronizuojami. <ph name="LINK_BEGIN" />Sužinokite daugiau<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Serverio sertifikato importavimo klaida</translation> <translation id="2187906491731510095">Plėtiniai atnaujinti</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">Eksportuoti...</translation> <translation id="4107048419833779140">Identifikuoti ir pašalinti saugyklos įrenginius</translation> <translation id="4109135793348361820">Perkelti langą <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Tinkinkite subtitrų dydį ir stilių šį nustatymą palaikančiose programose</translation> <translation id="4110490973560452005">Atsisiuntimas baigtas: <ph name="FILE_NAME" />. Kad perjungtumėte į atsisiuntimų juostą, paspauskite „Shift“ + F6.</translation> <translation id="4110686435123617899">Pasirinkti albumą „<ph name="TITLE" />“ (<ph name="DESC" />)</translation> <translation id="4110895898888439383">Žiniatinklio naršymas didelio kontrasto režimu</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">Laikykite paspaustą paleidimo priemonės klavišą, kad perjungtumėte viršutinės eilutės klavišų veikimą</translation> <translation id="4400963414856942668">Galite spustelėti žvaigždutę, kad pažymėtumėte skirtuką</translation> <translation id="4403775189117163360">Pasirinkti kitą aplanką</translation> -<translation id="440391631796167175">Nerasta nesudėtingų slaptažodžių</translation> <translation id="4404136731284211429">Nuskaityti dar kartą</translation> <translation id="4404843640767531781">Programą „<ph name="APP_NAME" />“ užblokavo vienas iš tėvų. Paprašykite vieno iš tėvų leidimo naudoti šią programą.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4468,8 +4463,6 @@ <translation id="6242852299490624841">Paryškinti šį skirtuką</translation> <translation id="6243280677745499710">Šiuo metu nustatytas</translation> <translation id="6243774244933267674">Serveris negalimas</translation> -<translation id="6244185221716469155">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="6244245036423700521">Importuoti ONC failą</translation> <translation id="6246790815526961700">Įkelti iš įrenginio</translation> <translation id="6247620186971210352">Nerasta programų</translation> @@ -6219,6 +6212,7 @@ <translation id="8281886186245836920">Praleisti</translation> <translation id="8283475148136688298">Autentifikavimo kodas atšauktas prisijungiant prie „<ph name="DEVICE_NAME" />“.</translation> <translation id="8284279544186306258">visos <ph name="WEBSITE_1" /> svetainės</translation> +<translation id="8284326494547611709">Subtitrai</translation> <translation id="8286036467436129157">Prisijungti</translation> <translation id="8286963743045814739">Galite naršyti privačiai naudodami inkognito langą</translation> <translation id="8287902281644548111">Ieškoti pagal API iškvietimą / URL</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index c447d9e..d108f554 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Paplašinājuma kļūda</translation> <translation id="1246158006305844142">Jūsu lietotnes un iestatījumi tiks sinhronizēti visās Chrome OS ierīcēs, kurās esat pierakstījies, izmantojot savu Google kontu. Lai skatītu pārlūkprogrammas sinhronizācijas opcijas, dodieties uz <ph name="LINK_BEGIN" />Chrome iestatījumi<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Vai noņemt ieteikumu no starpliktuves?</translation> -<translation id="1249643471736608405">Spraudnis <ph name="PLUGIN_NAME" /> tika bloķēts, jo tā lietošana tika pārtraukta</translation> <translation id="1251366534849411931">Jābūt figūriekavai: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Tādējādi tiks notīrīti <ph name="TOTAL_USAGE" /> datu, kas tiek glabāti vietnēs un instalētajās lietotnēs.</translation> <translation id="125220115284141797">Noklusējums</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Mājas tīkls bez viesabonēšanas</translation> <translation id="1315056510003830387">Nedrīkst izmantot Flash</translation> -<translation id="1315144594965013365">Abām ierīcēm ir jābūt atbloķētām un jāatrodas blakus, turklāt tajās jābūt ieslēgtai tehnoloģijai Bluetooth. Ja vēlaties veikt kopīgošanu ar Chromebook datoru, datorā jāieslēdz funkcija Kopīgošana tuvumā (atveriet statusa apgabalu, atlasot laiku, un pēc tam atlasiet vienumu Kopīgošana tuvumā).</translation> <translation id="1316136264406804862">Notiek meklēšana...</translation> <translation id="1316495628809031177">Sinhronizācija ir apturēta</translation> <translation id="1317637799698924700">Jūsu dokstacija darbosies ar USB Type-C saderīgā režīmā.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA drošības politikas apdraudējums</translation> <translation id="2182058453334755893">Kopēts jūsu starpliktuvē</translation> <translation id="2184515124301515068">Atļaut pārlūkam Chrome izvēlēties, kad vietnēs var atskaņot skaņu (ieteicams)</translation> -<translation id="2187243482123994665">Lietotāja aktivitāte</translation> <translation id="2187675480456493911">Tīkls ir sinhronizēts ar citām ierīcēm jūsu kontā. Iestatījumi, kurus ir mainījuši citi lietotāji, netiks sinhronizēti. <ph name="LINK_BEGIN" />Uzziniet vairāk<ph name="LINK_END" />.</translation> <translation id="2187895286714876935">Servera sertifikāta importēšanas kļūda</translation> <translation id="2187906491731510095">Paplašinājumi ir atjaunināti</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">E&ksportēt...</translation> <translation id="4107048419833779140">Identificēt un atvienot atmiņas ierīces</translation> <translation id="4109135793348361820">Pārvietot logu uz šī lietotāja darbvirsmu: <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Pielāgojiet subtitru lielumu un stilu lietotnēs, kurās tiek atbalstīts šis iestatījums.</translation> <translation id="4110490973560452005">Lejupielāde ir pabeigta: <ph name="FILE_NAME" />. Nospiediet taustiņus Shift+F6, lai pārslēgtos uz lejupielāžu joslas zonu.</translation> <translation id="4110686435123617899">Atlasīt albumu <ph name="TITLE" />: <ph name="DESC" /></translation> <translation id="4110895898888439383">Pārlūkojiet tīmekli augsta kontrasta režīmā</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">Turiet palaišanas programmas taustiņu, lai pārslēgtu augšējās rindas taustiņu funkcijas.</translation> <translation id="4400963414856942668">Noklikšķiniet uz zvaigznītes ikonas, lai saglabātu cilni kā grāmatzīmi.</translation> <translation id="4403775189117163360">Izvēlēties citu mapi</translation> -<translation id="440391631796167175">Netika atrasta neviena nedroša parole</translation> <translation id="4404136731284211429">Meklēt vēlreiz</translation> <translation id="4404843640767531781">Lietotni <ph name="APP_NAME" /> bloķēja kāds no jūsu vecākiem. Lai izmantotu šo lietotni, lūdziet vecākiem piešķirt atļauju.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4467,8 +4462,6 @@ <translation id="6242852299490624841">Izcelt šo cilni</translation> <translation id="6243280677745499710">Šobrīd iestatīta</translation> <translation id="6243774244933267674">Serveris nav pieejams.</translation> -<translation id="6244185221716469155">Nedrošas paroles ir viegli uzminēt. Noteikti izveidojiet drošas paroles. - <ph name="BEGIN_LINK" />Skatīt vairāk drošības padomu.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importēt ONC failu</translation> <translation id="6246790815526961700">Augšupielādēt no ierīces</translation> <translation id="6247620186971210352">Netika atrasta neviena lietotne</translation> @@ -6217,6 +6210,7 @@ <translation id="8281886186245836920">Izlaist</translation> <translation id="8283475148136688298">Veidojot savienojumu ar ierīci <ph name="DEVICE_NAME" />, autentifikācijas kods tika noraidīts.</translation> <translation id="8284279544186306258">visās <ph name="WEBSITE_1" /> vietnēs</translation> +<translation id="8284326494547611709">Paraksti</translation> <translation id="8286036467436129157">Pierakstīties</translation> <translation id="8286963743045814739">Varat pārlūkot tīmekli privāti inkognito režīma logā.</translation> <translation id="8287902281644548111">Meklēt pēc API izsaukuma/URL</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index 678e33b..a779344 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Грешка на наставка</translation> <translation id="1246158006305844142">Вашите апликации и поставки ќе се синхронизираат на сите уреди со Chrome OS каде што сте најавени со сметката на Google. За опциите за синхронизирање на прелистувачот, одете во <ph name="LINK_BEGIN" />Поставки за Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Дали да се отстрани предлогот од привремената меморија?</translation> -<translation id="1249643471736608405">Приклучокот <ph name="PLUGIN_NAME" /> е блокиран затоа што е неподдржан</translation> <translation id="1251366534849411931">Се очекува лева голема заграда: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Ова ќе ги избрише податоците (<ph name="TOTAL_USAGE" />) складирани од сајтовите и инсталираните апликации</translation> <translation id="125220115284141797">Стандардни</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Домашна мрежа, не е во роаминг</translation> <translation id="1315056510003830387">Не им е дозволено да ја користат Flash</translation> -<translation id="1315144594965013365">Проверете дали двата уреди се отклучени, блиску еден до друг и дали имаат вклучено Bluetooth. Ако споделувате со Chromebook, треба да е вклучена „Споделување во близина“ (отворете ја статусната област со избирање на времето, а потоа изберете „Споделување во близина“).</translation> <translation id="1316136264406804862">Се пребарува…</translation> <translation id="1316495628809031177">Синхронизацијата е паузирана</translation> <translation id="1317637799698924700">Станицата за полнење ќе работи во компатибилен режим на USB-адаптер од типот C.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">ЦА е изложен на ризик</translation> <translation id="2182058453334755893">Копирано во привремената меморија</translation> <translation id="2184515124301515068">Дозволете му на Chrome да избира кога сајтовите може да пуштаат звук (се препорачува)</translation> -<translation id="2187243482123994665">Присуство на корисник</translation> <translation id="2187675480456493911">Синхронизирано со други уреди на вашата сметка. Поставките што другите корисници ги измениле нема да се синхронизираат. <ph name="LINK_BEGIN" />Дознајте повеќе<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Грешка при увезување сертификат на сервер</translation> <translation id="2187906491731510095">Ажурирани екстензии</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">Из&вези...</translation> <translation id="4107048419833779140">Идентификувај и отстранувај надворешни мемории</translation> <translation id="4109135793348361820">Помести прозорец кај <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Приспособете ги големината и стилот на титловите за апликациите што ја поддржуваат поставкава</translation> <translation id="4110490973560452005">Преземањето е завршено: <ph name="FILE_NAME" />. Притиснете Shift+F6 за да одите до областа на лентата за преземања.</translation> <translation id="4110686435123617899">Изберете го албумот <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Прелистувајте на интернет во режим со висок контраст</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">Држете го копчето „Стартер“ за да го промените однесувањето на копчињата во најгорниот ред</translation> <translation id="4400963414856942668">Може да кликнете на ѕвездата за да обележите картичка</translation> <translation id="4403775189117163360">Одберете друга папка</translation> -<translation id="440391631796167175">Не се најдени слаби лозинки</translation> <translation id="4404136731284211429">Скенирај пак</translation> <translation id="4404843640767531781">Твојот родител ја блокирал <ph name="APP_NAME" />. Побарај дозвола од родителот за користење на апликацијава.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4467,8 +4462,6 @@ <translation id="6242852299490624841">Фокусирајте ја картичкава</translation> <translation id="6243280677745499710">Поставен во моментов</translation> <translation id="6243774244933267674">Серверот не е достапен</translation> -<translation id="6244185221716469155">Слабите лозинки се лесни за погаѓање. Уверете се дека создавате силни лозинки. - <ph name="BEGIN_LINK" />Погледнете повеќе совети за безбедност.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Увези ONC-датотека</translation> <translation id="6246790815526961700">Прикачете од уред</translation> <translation id="6247620186971210352">Не се најдени апликации</translation> @@ -6220,6 +6213,7 @@ <translation id="8281886186245836920">Прескокни</translation> <translation id="8283475148136688298">Отфрлен код за автентикацијата при поврзување со „<ph name="DEVICE_NAME" />“.</translation> <translation id="8284279544186306258">сите локации на <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Титлови</translation> <translation id="8286036467436129157">Најави се</translation> <translation id="8286963743045814739">Може да прелистувате приватно со инкогнито прозорец</translation> <translation id="8287902281644548111">Пребарувајте по повик/URL на API</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index 3943879..c0058c69 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">വിപുലീകരണ പിശക്</translation> <translation id="1246158006305844142">നിങ്ങളുടെ Google അക്കൗണ്ട് ഉപയോഗിച്ച് സൈൻ ഇൻ ചെയ്തിട്ടുള്ള എല്ലാ Chrome OS ഉപകരണങ്ങളിലുമുടനീളം നിങ്ങളുടെ ആപ്പുകളും ക്രമീകരണവും സമന്വയിപ്പിക്കും. ബ്രൗസർ സമന്വയിപ്പിക്കൽ ഓപ്ഷനുകൾക്ക് <ph name="LINK_BEGIN" />Chrome ക്രമീകരണത്തിലേക്ക്<ph name="LINK_END" /> പോവുക.</translation> <translation id="1246905108078336582">ക്ലിപ്പ്ബോർഡിൽ നിന്ന് നിർദ്ദേശം നീക്കം ചെയ്യണോ?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> അവസാനിപ്പിച്ചതിനാൽ ഇത് ബ്ലോക്ക് ചെയ്തു</translation> <translation id="1251366534849411931">പ്രതീക്ഷിച്ചത് ഓപ്പൺ ചുരുൾ ബ്രാക്കറ്റ്: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">ഇത് സൈറ്റുകളും ഇൻസ്റ്റാൾ ചെയ്തിരിക്കുന്ന ആപ്പുകളും സംഭരിച്ചിട്ടുള്ള <ph name="TOTAL_USAGE" /> ഡാറ്റ മായ്ക്കും</translation> <translation id="125220115284141797">ഡിഫോൾട്ട്</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">ഹോം നെറ്റ്വര്ക്ക്, റോമിംഗ് അല്ല</translation> <translation id="1315056510003830387">Flash ഉപയോഗിക്കാൻ അനുവാദമില്ല</translation> -<translation id="1315144594965013365">രണ്ട് ഉപകരണങ്ങളും അൺലോക്ക് ചെയ്തിട്ടുണ്ടെന്നും അടുത്തടുത്താണ് ഉള്ളതെന്നും Bluetooth ഓണാക്കിയിട്ടുണ്ടെന്നും ഉറപ്പാക്കുക. Chromebook-മായാണ് പങ്കിടുന്നതെങ്കിൽ അതിലെ സമീപമുള്ള പങ്കിടൽ ഓണാക്കിയിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക (സമയം തിരഞ്ഞെടുത്ത് സ്റ്റാറ്റസ് ഏരിയ തുറക്കുക, ശേഷം സമീപമുള്ള പങ്കിടൽ തിരഞ്ഞെടുക്കുക).</translation> <translation id="1316136264406804862">തിരയുന്നു...</translation> <translation id="1316495628809031177">സമന്വയം താൽക്കാലികമായി നിർത്തി</translation> <translation id="1317637799698924700">USB Type-C അനുയോജ്യതാ മോഡിൽ നിങ്ങളുടെ ഡോക്കിംഗ് സ്റ്റേഷൻ പ്രവർത്തിക്കും.</translation> @@ -1035,7 +1033,6 @@ <translation id="2178614541317717477">CA കോംപ്രമൈസ്</translation> <translation id="2182058453334755893">നിങ്ങളുടെ ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി</translation> <translation id="2184515124301515068">സൈറ്റുകൾക്ക് എപ്പോൾ ശബ്ദം പ്ലേ ചെയ്യാനാവും എന്നത് (ശുപാർശ ചെയ്തത്) തിരഞ്ഞെടുക്കാൻ Chrome-നെ അനുവദിക്കുക</translation> -<translation id="2187243482123994665">ഉപയോക്തൃ സാന്നിധ്യം</translation> <translation id="2187675480456493911">നിങ്ങളുടെ അക്കൗണ്ടിലെ മറ്റ് ഉപകരണങ്ങളുമായി സമന്വയിപ്പിച്ചു. മറ്റ് ഉപയോക്താക്കൾ പരിഷ്കരിച്ച ക്രമീകരണം സമന്വയിപ്പിക്കില്ല. <ph name="LINK_BEGIN" />കൂടുതലറിയുക<ph name="LINK_END" /></translation> <translation id="2187895286714876935">സെര്വര് സാക്ഷ്യപത്ര ഇറക്കുമതി പിശക്</translation> <translation id="2187906491731510095">വിപുലീകരണങ്ങൾ അപ്ഡേറ്റ് ചെയ്തു</translation> @@ -2706,7 +2703,6 @@ <translation id="4104163789986725820">കയ&റ്റുമതി ചെയ്യുക...</translation> <translation id="4107048419833779140">സ്റ്റോറേജ് ഉപകരണം തിരിച്ചറിഞ്ഞ് ഒഴിവാക്കുക</translation> <translation id="4109135793348361820">വിൻഡോ <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) എന്നതിലേക്ക് നീക്കുക</translation> -<translation id="411031910327788420">ഈ ക്രമീകരണം പിന്തുണയ്ക്കുന്ന ആപ്പുകൾക്കായി അടിക്കുറിപ്പിന്റെ വലുപ്പവും സ്റ്റൈലും ഇഷ്ടാനുസൃതമാക്കുക</translation> <translation id="4110490973560452005">ഡൗൺലോഡ് പൂർത്തിയായി: <ph name="FILE_NAME" />. ഡൗണ്ലോഡ് വിവരങ്ങളുടെ ബാര് ഏരിയയിലേക്ക് പോകാൻ, Shift+F6 അമർത്തുക.</translation> <translation id="4110686435123617899"><ph name="TITLE" /> <ph name="DESC" /> ആൽബം തിരഞ്ഞെടുക്കുക</translation> <translation id="4110895898888439383">ഉയർന്ന ദൃശ്യതീവ്രതാ മോഡിൽ വെബ് ബ്രൗസ് ചെയ്യുക</translation> @@ -2919,7 +2915,6 @@ <translation id="4400632832271803360">മുകൾ-വരിയിലെ കീകളുടെ പ്രവർത്തനരീതി മാറ്റാൻ 'ലോഞ്ചർ' കീ അമർത്തിപ്പിടിക്കുക</translation> <translation id="4400963414856942668">ഒരു ടാബ് ബുക്ക്മാർക്ക് ചെയ്യാൻ നക്ഷത്ര ചിഹ്നത്തിൽ ക്ലിക്ക് ചെയ്യുക</translation> <translation id="4403775189117163360">മറ്റൊരു ഫോൾഡർ തിരഞ്ഞെടുക്കുക</translation> -<translation id="440391631796167175">ദുർബലമായ പാസ്വേഡുകളൊന്നും കണ്ടെത്തിയില്ല</translation> <translation id="4404136731284211429">വീണ്ടും സ്കാൻ ചെയ്യുക</translation> <translation id="4404843640767531781">നിങ്ങളുടെ രക്ഷിതാവ് <ph name="APP_NAME" /> ബ്ലോക്ക് ചെയ്തു. ഈ ആപ്പ് ഉപയോഗിക്കാൻ രക്ഷിതാവിനോട് അനുവാദം ചോദിക്കുക.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4465,8 +4460,6 @@ <translation id="6242852299490624841">ഈ ടാബ് ഫോക്കസ് ചെയ്യുക</translation> <translation id="6243280677745499710">നിലവിൽ സജ്ജീകരിച്ചിരിക്കുന്നത്</translation> <translation id="6243774244933267674">സെർവർ ലഭ്യമല്ല</translation> -<translation id="6244185221716469155">ദുർബലമായ പാസ്വേഡുകൾ ഊഹിക്കാൻ എളുപ്പമാണ്. നിങ്ങൾ സൃഷ്ടിക്കുന്നത് ശക്തമായ പാസ്വേഡുകളാണെന്ന് ഉറപ്പാക്കുക. - <ph name="BEGIN_LINK" />കൂടുതൽ സുരക്ഷാ നുറുങ്ങുകൾ കാണുക<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC ഫയൽ ഇമ്പോർട്ട് ചെയ്യുക</translation> <translation id="6246790815526961700">ഉപകരണത്തിൽ നിന്ന് അപ്ലോഡ് ചെയ്യുക</translation> <translation id="6247620186971210352">ആപ്പുകളൊന്നും കണ്ടെത്തിയില്ല</translation> @@ -6216,6 +6209,7 @@ <translation id="8281886186245836920">ഉപേക്ഷിക്കുക</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" എന്നതിലേക്ക് കണക്റ്റ് ചെയ്യുമ്പോൾ പരിശോധിച്ചുറപ്പിക്കൽ കോഡ് നിരസിച്ചു.</translation> <translation id="8284279544186306258">എല്ലാ <ph name="WEBSITE_1" /> സൈറ്റുകളും</translation> +<translation id="8284326494547611709">അടിക്കുറിപ്പുകൾ</translation> <translation id="8286036467436129157">സൈൻ ഇൻ ചെയ്യുക</translation> <translation id="8286963743045814739">അദൃശ്യ വിൻഡോ ഉപയോഗിച്ച് നിങ്ങൾക്ക് സ്വകാര്യമായി ബ്രൗസ് ചെയ്യാനാകും</translation> <translation id="8287902281644548111">API കോൾ/URL പ്രകാരം തിരയുക</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index 64064ae..945edfd1 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Өргөтгөлийн алдаа</translation> <translation id="1246158006305844142">Таны Google бүртгэлээрээ нэвтэрсэн Chrome үйлдлийн системтэй бүх төхөөрөмж дээр таны аппууд болон тохиргоог синк хийнэ. Хөтчийг синк хийх сонголтыг харах бол<ph name="LINK_BEGIN" />Chrome-н тохиргоо<ph name="LINK_END" /> руу очно уу.</translation> <translation id="1246905108078336582">Түр санах ойгоос зөвлөмжийг устгах уу?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> хуучирсан тул үүнийг хориглосон байна</translation> <translation id="1251366534849411931">Хээтэй хаалтыг нээхээр хүлээж байсан <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Энэ нь сайтууд болон суулгасан аппуудын хадгалсан <ph name="TOTAL_USAGE" />-н өгөгдлийг арилгана</translation> <translation id="125220115284141797">Өгөгдмөл</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Андройд VPN</translation> <translation id="131461803491198646">Үндсэн сүлжээ, роуминг биш</translation> <translation id="1315056510003830387">Flash ашиглахыг зөвшөөрөөгүй</translation> -<translation id="1315144594965013365">Хоёр төхөөрөмжийн түгжээг хоёуланг нь тайлсан эсэх, хоорондоо ойрхон эсэх, Bluetooth-г нь асаасан эсэхээ шалгана уу. Та Chromebook-тэй хуваалцаж байгаа бол Ойролцоо хуваалцах онцлог нь асаалттай байгаа эсэхийг шалгана уу (цаг сонгож төлөв байдал илэрхийлэгчийг нээгээд, Ойролцоо хуваалцах онцлогийг сонгоно уу).</translation> <translation id="1316136264406804862">Хайж байна...</translation> <translation id="1316495628809031177">Синк хийхийг түр зогсоосон</translation> <translation id="1317637799698924700">Таны холбогч станц USB C-Төрлийн тохирох горимд ажиллана.</translation> @@ -1033,7 +1031,6 @@ <translation id="2178614541317717477">CA Compromise</translation> <translation id="2182058453334755893">Түр санах ой руу хуулсан</translation> <translation id="2184515124301515068">Сайтуудад дуу тоглуулах боломжтой үеийг сонгох зөвшөөрлийг Chrome-д олгох (санал болгосон)</translation> -<translation id="2187243482123994665">Хэрэглэгч байгаа эсэх</translation> <translation id="2187675480456493911">Таны бүртгэл дээрх бусад төхөөрөмжтэй синк хийдэг. Бусад хэрэглэгчийн өөрчилсөн тохиргоог синк хийхгүй. <ph name="LINK_BEGIN" />Нэмэлт мэдээлэл авах<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Серверийн Гэрчилгээг Импортлох үеийн алдаа</translation> <translation id="2187906491731510095">Өргөтгөлийг шинэчилсэн</translation> @@ -2699,7 +2696,6 @@ <translation id="4104163789986725820">Экспортлох ...</translation> <translation id="4107048419833779140">Хадгалах төхөөрөмжийг таних, салгах</translation> <translation id="4109135793348361820">Цонхыг <ph name="USER_NAME" /> ( <ph name="USER_EMAIL" /> ) руу зөөх</translation> -<translation id="411031910327788420">Энэ тохиргоог дэмждэг аппуудад зориулж хадмалын хэмжээ болон загварыг тохируулах</translation> <translation id="4110490973560452005">Татаж дууссан: <ph name="FILE_NAME" />. Татаж авсан файл хадгалах эсвэл нээх хэсэгт гүйлгэхийн тулд Shift+F6-г дарна уу.</translation> <translation id="4110686435123617899"><ph name="TITLE" /> цомгийг <ph name="DESC" /> сонгох</translation> <translation id="4110895898888439383">Вебийг өндөр нягтшилтай горимд хөтлөх</translation> @@ -2912,7 +2908,6 @@ <translation id="4400632832271803360">Дээд мөрний түлхүүрийн функцийг сэлгэхийн тулд Эхлүүлэгч түлхүүрийг дарна уу</translation> <translation id="4400963414856942668">Энэ табыг тэмдэглэхийн тулд одыг товшино уу</translation> <translation id="4403775189117163360">Өөр фолдер сонгоно уу</translation> -<translation id="440391631796167175">Сул нууц үг олдсонгүй</translation> <translation id="4404136731284211429">Дахин скан хийх</translation> <translation id="4404843640767531781">Таны эцэг эх <ph name="APP_NAME" />-г блоклосон байна. Энэ аппыг ашиглах зөвшөөрлийг эцэг эхээсээ хүснэ үү.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4453,8 +4448,6 @@ <translation id="6242852299490624841">Энэ табын фокусыг тохируулах</translation> <translation id="6243280677745499710">Одоогийн тохируулсан ханын зураг</translation> <translation id="6243774244933267674">Серверүүд боломжгүй байна</translation> -<translation id="6244185221716469155">Сул нууц үгийг таахад хялбар байдаг. Сайн нууц үг үүсгэж байгаа эсэхээ шалгаарай. - <ph name="BEGIN_LINK" />Аюулгүй байдлын бусад зөвлөгөөг харна уу.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC файлыг импорт хийх</translation> <translation id="6246790815526961700">Төхөөрөмжөөс байршуулах</translation> <translation id="6247620186971210352">Апп олдсонгүй</translation> @@ -6198,6 +6191,7 @@ <translation id="8281886186245836920">Алгасах</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" руу холбогдож байх явцад таниулах кодыг буцаасан.</translation> <translation id="8284279544186306258">бүх <ph name="WEBSITE_1" /> сайтууд</translation> +<translation id="8284326494547611709">Тайлбар</translation> <translation id="8286036467436129157">Нэвтрэх</translation> <translation id="8286963743045814739">Та нууцлалтай цонх ашиглан хувийн хайлт хийх боломжтой</translation> <translation id="8287902281644548111">API дуудлага/URL-р хайх</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index 5e44d64c..9c7a406 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">एक्स्टेंशन एरर</translation> <translation id="1246158006305844142">तुमची अॅप्स आणि सेटिंग्ज तुम्ही तुमच्या Google खात्याने साइन इन केलेल्या सर्व Chrome OS डिव्हाइसवर सिंक होतील. ब्राउझर सिंक पर्यायांसाठी, <ph name="LINK_BEGIN" />Chrome सेटिंग्ज<ph name="LINK_END" /> वर जा.</translation> <translation id="1246905108078336582">क्लिपबोर्डवरून सूचना काढून टाकायची आहे का?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> नापसंत असल्यामुळे ब्लॉक केले गेले आहे</translation> <translation id="1251366534849411931">अपेक्षित खुला महिरपी कंस: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">हे साइट आणि इंस्टॉल केलेल्या ॲप्सनी स्टोअर केलेला <ph name="TOTAL_USAGE" /> डेटा साफ करेल</translation> <translation id="125220115284141797">डीफॉल्ट</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">घरगुती नेटवर्क, रोमिंग नाही</translation> <translation id="1315056510003830387">फ्लॅश वापरण्याची अनुमती नाही</translation> -<translation id="1315144594965013365">तुमची दोन्ही डिव्हाइस अनलॉक केली असल्याची, ती एकमेकांच्या जवळ धरल्याची आणि त्यांचे ब्लूटूथ सुरू केलेले असल्याची खात्री करा. तुम्ही Chromebook सह शेअर करत असल्यास, Nearby सह शेअरिंग सुरू केले असल्याची खात्री करा (वेळ निवडून स्थिती क्षेत्र उघडा, त्यानंतर Nearby सह शेअरिंग निवडा).</translation> <translation id="1316136264406804862">शोधत आहे...</translation> <translation id="1316495628809031177">सिंक थांबवले आहे</translation> <translation id="1317637799698924700">तुमचे डॉकिंग स्टेशन हे USB केबल कंपॅटिबिल मोडमध्ये काम करेल.</translation> @@ -1036,7 +1034,6 @@ <translation id="2178614541317717477">CA तडजोड</translation> <translation id="2182058453334755893">तुमच्या क्लिपबोर्डवर कॉपी केले</translation> <translation id="2184515124301515068">जेव्हा साइट आवाज प्ले करेल तेव्हा Chrome ला निवड करू दे (शिफारस केलेले)</translation> -<translation id="2187243482123994665">वापरकर्त्याची ॲक्टिव्हिटी</translation> <translation id="2187675480456493911">तुमच्या खात्यावरील इतर डिव्हाइसशी सिंक केले आहे. इतर वापरकर्त्यांनी बदललेली सेटिंग्ज सिंक केली जाणार नाहीत. <ph name="LINK_BEGIN" />अधिक जाणून घ्या<ph name="LINK_END" /></translation> <translation id="2187895286714876935">सर्व्हर सर्टिफिकेट आयात एरर</translation> <translation id="2187906491731510095">विस्तार अपडेट केले</translation> @@ -2702,7 +2699,6 @@ <translation id="4104163789986725820">नि&र्यात करा...</translation> <translation id="4107048419833779140">स्टोरेज डिव्हाइस ओळखा आणि बाहेर काढून टाका</translation> <translation id="4109135793348361820"><ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) वर विंडो हलवा</translation> -<translation id="411031910327788420">या सेटिंगला सपोर्ट करणाऱ्या ॲप्ससाठी कॅप्शनचा आकार आणि शैली कस्टमाइझ करा</translation> <translation id="4110490973560452005">डाउनलोड पूर्ण: <ph name="FILE_NAME" />. डाउनलोड बार भागाकडे जाण्यासाठी Shift+F6 दाबा.</translation> <translation id="4110686435123617899"><ph name="TITLE" /><ph name="DESC" /> अल्बम निवडा</translation> <translation id="4110895898888439383">उच्च कॉन्ट्रास्ट मोडमध्ये वेब ब्राउझ करा</translation> @@ -2915,7 +2911,6 @@ <translation id="4400632832271803360">शीर्ष-पंक्ती की चे वर्तन स्विच करण्यासाठी लाँचर की धरून ठेवा.</translation> <translation id="4400963414856942668">तुम्ही टॅब बुकमार्क करण्यासाठी ताऱ्यावर क्लिक करू शकता</translation> <translation id="4403775189117163360">वेगळे फोल्डर निवडा</translation> -<translation id="440391631796167175">कमकुवत पासवर्ड आढळले नाहीत</translation> <translation id="4404136731284211429">पुन्हा स्कॅन करा</translation> <translation id="4404843640767531781">तुमच्या पालकाने <ph name="APP_NAME" /> ब्लॉक केले आहे. तुमच्या पालकाकडे हे अॅप वापरण्याची परवानगी मागा.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4457,8 +4452,6 @@ <translation id="6242852299490624841">या टॅबवर फोकस करा</translation> <translation id="6243280677745499710">सध्या सेट केला आहे</translation> <translation id="6243774244933267674">सर्व्हर अनुपलब्ध</translation> -<translation id="6244185221716469155">कमकुवत पासवर्ड ओळखणे सोपे असते. तुम्ही क्लिष्ट पासवर्ड तयार करत असल्याची खात्री करा. - <ph name="BEGIN_LINK" />आणखी सुरक्षा टिपा पाहा.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC फाइल इंपोर्ट करा</translation> <translation id="6246790815526961700">डिव्हाइसवरून अपलोड करा</translation> <translation id="6247620186971210352">कोणतीही अॅप्स आढळली नाहीत</translation> @@ -6204,6 +6197,7 @@ <translation id="8281886186245836920">वगळा</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" शी कनेक्ट करताना ऑथेंटिकेशन कोड नाकारण्यात आला.</translation> <translation id="8284279544186306258">सर्व <ph name="WEBSITE_1" /> साइट</translation> +<translation id="8284326494547611709">मथळे</translation> <translation id="8286036467436129157">साइन इन</translation> <translation id="8286963743045814739">तुम्ही गुप्त विंडो वापरून खाजगीरीत्या ब्राउझ करू शकता</translation> <translation id="8287902281644548111">API कॉल/URL नुसार शोधा</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index c12f2d2..2d6dd43 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Ralat sambungan</translation> <translation id="1246158006305844142">Apl dan tetapan anda akan disegerakkan pada semua peranti OS Chrome yang anda gunakan untuk log masuk dengan akaun Google anda. Untuk mendapatkan pilihan penyegerakan penyemak imbas, lawati <ph name="LINK_BEGIN" />tetapan Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Alih keluar cadangan daripada papan keratan?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> disekat kerana telah ditamatkan</translation> <translation id="1251366534849411931">Tiada tanda kurung keriting pembuka: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Tindakan ini akan mengosongkan <ph name="TOTAL_USAGE" /> daripada data yang disimpan oleh tapak dan apl yang dipasang</translation> <translation id="125220115284141797">Lalai</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN Android</translation> <translation id="131461803491198646">Rangkaian utama, bukan perayauan</translation> <translation id="1315056510003830387">Tidak dibenarkan untuk menggunakan Flash</translation> -<translation id="1315144594965013365">Pastikan kedua-dua peranti dibuka dikunci, berada berhampiran satu sama lain dan Bluetooth telah dihidupkan. Jika anda membuat perkongsian dengan Chromebook, pastikan Kongsi Berdekatan dihidupkan (buka ruang status dengan memilih masa, kemudian pilih Kongsi Berdekatan).</translation> <translation id="1316136264406804862">Mencari...</translation> <translation id="1316495628809031177">Penyegerakan dijeda</translation> <translation id="1317637799698924700">Stesen dok anda akan beroperasi dalam mod serasi USB Jenis-C.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Tolak ansur CA</translation> <translation id="2182058453334755893">Disalin ke Papan Keratan Anda</translation> <translation id="2184515124301515068">Benarkan Chrome memilih masa tapak boleh memainkan bunyi (disyorkan)</translation> -<translation id="2187243482123994665">Kehadiran pengguna</translation> <translation id="2187675480456493911">Disegerakkan dengan peranti lain dalam akaun anda. Tetapan yang diubah suai oleh pengguna lain tidak akan disegerakkan. <ph name="LINK_BEGIN" />Ketahui lebih lanjut<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Ralat Import Sijil Pelayan</translation> <translation id="2187906491731510095">Sambungan dikemas kini</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">E&ksport...</translation> <translation id="4107048419833779140">Kenal pasti dan keluarkan peranti storan</translation> <translation id="4109135793348361820">Alihkan tetingkap ke <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Sesuaikan saiz dan gaya sari kata untuk apl yang menyokong tetapan ini</translation> <translation id="4110490973560452005">Muat turun selesai: <ph name="FILE_NAME" />. Tekan Shift+F6 untuk pergi ke kawasan bar muat turun.</translation> <translation id="4110686435123617899">Pilih album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Semak imbas web dalam mod kontras tinggi</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Tekan dan tahan kekunci Launcher untuk menukar gelagat kekunci di baris atas</translation> <translation id="4400963414856942668">Anda boleh mengklik bintang untuk menandai tab</translation> <translation id="4403775189117163360">Pilih folder yang lain</translation> -<translation id="440391631796167175">Tiada kata laluan lemah ditemukan</translation> <translation id="4404136731284211429">Imbas lagi</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> disekat oleh ibu/bapa anda. Minta kebenaran untuk menggunakan apl ini daripada ibu bapa anda.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">Fokus pada tab ini</translation> <translation id="6243280677745499710">Ditetapkan pada masa ini</translation> <translation id="6243774244933267674">Pelayan tidak tersedia</translation> -<translation id="6244185221716469155">Kata laluan yang lemah mudah diteka. Pastikan anda membuat kata laluan yang kukuh. - <ph name="BEGIN_LINK" />Lihat pelbagai lagi petua keselamatan.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Import Fail ONC</translation> <translation id="6246790815526961700">Muat naik daripada peranti</translation> <translation id="6247620186971210352">Tiada apl ditemukan</translation> @@ -6208,6 +6201,7 @@ <translation id="8281886186245836920">Langkau</translation> <translation id="8283475148136688298">Kod pengesahan ditolak semasa menyambung ke "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">semua tapak <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Kapsyen</translation> <translation id="8286036467436129157">Log Masuk</translation> <translation id="8286963743045814739">Anda boleh menyemak imbas secara tertutup menggunakan tetingkap inkognito</translation> <translation id="8287902281644548111">Cari menggunakan panggilan API/URL</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index 1a9f4b3..07223e4 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">အိတ်စတန်းရှင်း မှားယွင်းမှု</translation> <translation id="1246158006305844142">သင်၏ Google အကောင့်ဖြင့် လက်မှတ်ထိုးဝင်ထားသော Chrome OS စက်အားလုံးတွင် သင့်အက်ပ်နှင့် ဆက်တင်များကို စင့်ခ်လုပ်ပါမည်။ ဘရောင်ဇာစင့်ခ်လုပ်ခြင်း ရွေးစရာများအတွက် <ph name="LINK_BEGIN" />Chrome ဆက်တင်များ<ph name="LINK_END" /> သို့သွားပါ။</translation> <translation id="1246905108078336582">ကလစ်ဘုတ်မှ အကြံပြုချက်ကို ဖယ်ရှားလိုပါသလား။</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> ရပ်ဆိုင်းသွားသဖြင့် ၎င်းကို ပိတ်ထားသည်</translation> <translation id="1251366534849411931">အဖွင့် တွန့်ကွင်းတစ်ခု လိုနေသည်- <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">ဤလုပ်ဆောင်ချက်က ဝဘ်ဆိုက်များနှင့် ထည့်သွင်းထားသော အက်ပ်များက သိမ်းထားသည့် ဒေတာ <ph name="TOTAL_USAGE" /> ကို ရှင်းထုတ်လိုက်ပါမည်</translation> <translation id="125220115284141797">မူရင်း</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">ပင်မ ကွန်ရက်၊ ရိုမင်း မဟုတ်ပါ</translation> <translation id="1315056510003830387">'ဖလက်ရှ်' သုံးရန် ခွင့်ပြုမထားပါ</translation> -<translation id="1315144594965013365">စက်နှစ်ခုလုံးပွင့်နေပြီး အတူကပ်ထားကာ ဘလူးတုသ်ဖွင့်ထားကြောင်း သေချာပါစေ။ Chromebook ဖြင့် မျှဝေနေပါက ၎င်းတွင် 'အနီးတစ်ဝိုက် မျှဝေခြင်း' ဖွင့်ထားကြောင်း သေချာပါစေ (အချိန်ရွေးချယ်ပြီး အခြေအနေပြနေရာကို ဖွင့်ပါ၊ ထို့နောက် 'အနီးတစ်ဝိုက် မျှဝေခြင်း' ကိုရွေးပါ)။</translation> <translation id="1316136264406804862">ရှာဖွေနေသည်...</translation> <translation id="1316495628809031177">စင့်ခ်လုပ်ခြင်းကို ခေတ္တရပ်ထားသည်</translation> <translation id="1317637799698924700">သင်၏ အထိုင်စက်ကို USB Type-C ကိုက်ညီမှုမုဒ်တွင်သာ အသုံးပြုနိုင်ပါမည်။</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA သံသယဖြစ်ခံခဲ့ရ</translation> <translation id="2182058453334755893">'သင့်ကလစ်ဘုတ်' သို့ မိတ္တူကူးထားသည်</translation> <translation id="2184515124301515068">ဝဘ်ဆိုက်များ အသံဖွင့်နိုင်ခြင်းရှိမရှိကို Chrome အား ရွေးချယ်ခွင့်ပေးပါ (အကြံပြုထားသည်)</translation> -<translation id="2187243482123994665">အသုံးပြုသူ ရှိနေမှု</translation> <translation id="2187675480456493911">သင့်အကောင့်ရှိ အခြားစက်များနှင့် စင့်ခ်လုပ်ထားသည်။ အခြားအသုံးပြုသူများ ပြုပြင်ထားသော ဆက်တင်များကို စင့်ခ်လုပ်မည်မဟုတ်ပါ။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> <translation id="2187895286714876935">ဆာဗာ လက်မှတ် တင်သွင်းမှု အမှား</translation> <translation id="2187906491731510095">နောက်ဆက်တွဲများ အပ်ဒိတ်လုပ်ပြီးပါပြီ</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">တင်&ပို့ရန်...</translation> <translation id="4107048419833779140">သိုလှောင်မှုပစ္စည်းကို ရှာဖွေရွေးထုတ်ပြီး ဖြုတ်ပါ</translation> <translation id="4109135793348361820"><ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) သို့ဝင်းဒိုးအား ရွှေ့ရန်</translation> -<translation id="411031910327788420">ဤဆက်တင်ကိုပံ့ပိုးသော အက်ပ်များအတွက် စာတန်းအရွယ်အစားနှင့် ပုံစံကို စိတ်ကြိုက်ပြုလုပ်ပေးသည်</translation> <translation id="4110490973560452005">ဒေါင်းလုဒ်လုပ်ပြီးပါပြီ− <ph name="FILE_NAME" />။ ဒေါင်းလုဒ်များ ဘားဧရိယာသို့ သွားရန် Shift+F6 နှိပ်ပါ။</translation> <translation id="4110686435123617899"><ph name="TITLE" /> <ph name="DESC" /> အယ်လ်ဘမ်ရွေးရန်</translation> <translation id="4110895898888439383">ဝဘ်ဆိုက်ကို အဖြူအမည်း ခြားနားချက်မြင့်သည့်မုဒ်တွင် ဖွင့်ကြည့်ရန်</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">အပေါ်ဆုံးအတန်း ခလုတ်များ၏ လုပ်ဆောင်ချက်ကိုပြောင်းရန် Launcher ခလုတ်ကို ဖိထားပါ</translation> <translation id="4400963414856942668">ကြယ်ပွင့်ကို နှိပ်ပြီး တဘ်၏လိပ်စာကို မှတ်ထားနိုင်သည်</translation> <translation id="4403775189117163360">အခြားဖိုင်တွဲတစ်ခု ရွေးပါ</translation> -<translation id="440391631796167175">လုံခြုံမှုလျော့နည်းသည့် စကားဝှက် မရှိပါ</translation> <translation id="4404136731284211429">ထပ်ရှာရန်</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> ကို သင့်မိဘက ပိတ်ထားသည်။ ဤအက်ပ်အသုံးပြုရန် သင့်မိဘထံ ခွင့်တောင်းပါ။</translation> <translation id="4405117686468554883">*.jpeg၊ *.jpg၊ *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">ဤတဘ်ကို အထူးဖော်ပြရန်</translation> <translation id="6243280677745499710">လောလောဆယ် သတ်မှတ်ထားသည်</translation> <translation id="6243774244933267674">ဆာဗာမရနိုင်ပါ</translation> -<translation id="6244185221716469155">လုံခြုံမှုလျော့နည်းသည့် စကားဝှက်များကို အလွယ်တကူ ခန့်မှန်းနိုင်သည်။ လုံခြုံမှုမြင့်သည့် စကားဝှက်များကို သတ်မှတ်ပါ။ - <ph name="BEGIN_LINK" />နောက်ထပ် လုံခြုံရေးအကြံပြုချက်များ ကြည့်ရန်။<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC ဖိုင် ထည့်သွင်းရန်</translation> <translation id="6246790815526961700">ကိရိယာမှ အပ်လုဒ်လုပ်ရန်</translation> <translation id="6247620186971210352">မည်သည့်အက်ပ်မျှ မတွေ့ပါ</translation> @@ -6205,6 +6198,7 @@ <translation id="8281886186245836920">ကျော်ရန်</translation> <translation id="8283475148136688298">Authentication code rejected while connecting to "<ph name="DEVICE_NAME" />" သို့ချိတ်ဆက်နေစဉ် စစ်မှန်ကြောင်း အတည်ပြုခြင်းကုဒ် ပယ်ချခဲ့ရ။</translation> <translation id="8284279544186306258">ဆိုက်များ <ph name="WEBSITE_1" />အားလုံး</translation> +<translation id="8284326494547611709">စာတန်းများ</translation> <translation id="8286036467436129157">လက်မှတ်ထိုးဝင်ရန်</translation> <translation id="8286963743045814739">ရုပ်ဖျက်ဝင်းဒိုးသုံးပြီး သီးသန့်ကြည့်ရှုနိုင်ပါသည်</translation> <translation id="8287902281644548111">API ခေါ်ဆိုမှု/URL တို့ဖြင့် ရှာရန်</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index 36a0c457..ef1eab7 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -222,7 +222,6 @@ <translation id="1244303850296295656">एक्स्टेन्सन त्रुटि</translation> <translation id="1246158006305844142">तपाईंले आफ्नो Google खातामार्फत साइन इन गर्नुभएका Chrome OS चल्ने यन्त्रहरूमा तपाईंका एप तथा सेटिङ सिंक हुने छन्। ब्राउजरका सिंकसम्बन्धी विकल्पहरू हेर्न <ph name="LINK_BEGIN" />Chrome का सेटिङ<ph name="LINK_END" />मा जानुहोस्।</translation> <translation id="1246905108078336582">क्लिपबोर्डको सुझाव हटाउने हो?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> लाई चल्तीबाट हटाइएको हुनाले यसमाथि रोक लगाइयो</translation> <translation id="1251366534849411931">बायाँ मझौला कोष्ठक हुनु पर्ने हो: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">यस कार्यले साइट तथा इन्स्टल गरिएका एपहरूले भण्डारण गरेको <ph name="TOTAL_USAGE" /> डेटा मेटाउने छ</translation> <translation id="125220115284141797">पूर्वनिर्धारित</translation> @@ -277,7 +276,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">गृह सञ्जाल, रोम गरिरहेको छैन</translation> <translation id="1315056510003830387">Flash प्रयोग गर्न अनुमति नदिइएका साइटहरू</translation> -<translation id="1315144594965013365">दुवै यन्त्र अनलक गरिएका छन्, एकअर्काको नजिकै छन् र दुवैको ब्लुटुथ अन गरिएको छ भन्ने कुरा सुनिश्चित गर्नुहोस्। तपाईं कुनै Chromebook सँग सेयर गर्दै हुनुहुन्छ भने त्यसको नजिकैका यन्त्रसँग सेयर गर्ने सुविधा अन गरिएको छ भन्ने कुरा सुनिश्चित गर्नुहोस् (समय देखिने ठाउँ चयन गरेर वस्तुस्थिति क्षेत्र खोल्नुहोस् र त्यसपछि नजिकैका यन्त्रसँग सेयर गर्ने सुविधा चयन गर्नुहोस्)।</translation> <translation id="1316136264406804862">खोज्दै...</translation> <translation id="1316495628809031177">सिंक पज गरिएको छ</translation> <translation id="1317637799698924700">तपाईंको डकिङ स्टेसन USB Type-C सँग मिल्दो मोडमा काम गर्ने छ।</translation> @@ -1033,7 +1031,6 @@ <translation id="2178614541317717477">CA सम्झौता</translation> <translation id="2182058453334755893">तपाईंको क्लिपबोर्डमा प्रतिलिपि गरियो</translation> <translation id="2184515124301515068">साइटहरूले ध्वनि कहिले प्ले गर्न सक्छन् भन्ने कुरा Chrome लाई छनौट गर्न दिनुहोस् (सिफारिस गरिएको)</translation> -<translation id="2187243482123994665">प्रयोगकर्ताको उपस्थिति</translation> <translation id="2187675480456493911">तपाईंको खाता साइन इन गरिएका अन्य यन्त्रमा सिंक गरिएको छ। अन्य प्रयोगकर्ताहरूले परिमार्जन गरेका सेटिङ सिंक गरिने छैनन्। <ph name="LINK_BEGIN" />थप जान्नुहोस्<ph name="LINK_END" /></translation> <translation id="2187895286714876935">सर्भर प्रमाणपत्र आयात त्रुटि</translation> <translation id="2187906491731510095">विस्तारहरू अद्यावधिक गरिए</translation> @@ -2701,7 +2698,6 @@ <translation id="4104163789986725820">नि&र्यात...</translation> <translation id="4107048419833779140">भण्डारण यन्त्रहरू पहिचान गर्नुहोस् तथा निकाल्नुहोस्</translation> <translation id="4109135793348361820">विण्डोलाई <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) मा सार्नुहोस्</translation> -<translation id="411031910327788420">यो सेटिङ प्रयोग गर्न मिल्ने एपहरूमा क्याप्सनको आकार र शैली आफूले चाहेअनुसारको बनाउनुहोस्</translation> <translation id="4110490973560452005">डाउनलोड सम्पन्न भयो: <ph name="FILE_NAME" />। डाउनलोडहरूको पट्टीमा जान Shift+F6 थिच्नुहोस्।</translation> <translation id="4110686435123617899"><ph name="TITLE" /> <ph name="DESC" /> एल्बम चयन गर्नुहोस्</translation> <translation id="4110895898888439383">उच्च कन्ट्रास्ट मोडमा वेब ब्राउज गर्नुहोस्</translation> @@ -2914,7 +2910,6 @@ <translation id="4400632832271803360">शीर्ष-पङ्क्तिका कुञ्जीहरूको व्यवहार बदल्न लन्चर कुञ्जीलाई थिचिराख्नुहोस्</translation> <translation id="4400963414856942668">तपाईं कुनै ट्याबमा पुस्तक चिन्ह लगाउनका लागि तारा चिन्हमा क्लिक गर्न सक्नुहुन्छ</translation> <translation id="4403775189117163360">कुनै अर्को फोल्डर छनौट गर्नुहोस्</translation> -<translation id="440391631796167175">कुनै कमजोर पासवर्ड भेट्टिएन</translation> <translation id="4404136731284211429">फेरि स्क्यान गर्नुहोस्</translation> <translation id="4404843640767531781">तपाईंका अभिभावकले <ph name="APP_NAME" /> माथि रोक लगाउनुभएको छ। यो एप प्रयोग गर्न आफ्ना अभिभावकको अनुमति लिनुहोस्।</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4454,8 +4449,6 @@ <translation id="6242852299490624841">यो ट्याबमा केन्द्रित गर्नुहोस्</translation> <translation id="6243280677745499710">हाल सेट गरिएको</translation> <translation id="6243774244933267674">सर्भर अनुपलब्ध</translation> -<translation id="6244185221716469155">कमजोर पासवर्डहरू सजिलैसँग अनुमान लगाउन सकिन्छ। त्यसैले भरपर्दा पासवर्डहरू राख्न नबिर्सनुहोला। - <ph name="BEGIN_LINK" />सुरक्षासम्बन्धी थप सुझावहरू हेर्नुहोस्।<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC फाइल इम्पोर्ट गर्नुहोस्</translation> <translation id="6246790815526961700">यन्त्रबाट अपलोड गर्नुहोस्</translation> <translation id="6247620186971210352">कुनै पनि एप भेटिएन</translation> @@ -6202,6 +6195,7 @@ <translation id="8281886186245836920">त्याग्नुहोस्</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" मा जडान गर्दा प्रमाणीकरण कोड अस्वीकार गरियो।</translation> <translation id="8284279544186306258">सबै <ph name="WEBSITE_1" /> साइटहरू</translation> +<translation id="8284326494547611709">क्याप्सन</translation> <translation id="8286036467436129157">साइन इन गर्नुहोस्</translation> <translation id="8286963743045814739">तपाईं कुनै इन्कोग्निटो विन्डो प्रयोग गरी निजी रूपमा ब्राउज गर्न सक्नुहुन्छ</translation> <translation id="8287902281644548111">API कल/URL का आधारमा खोज्नुहोस्</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index 16eaecc..49154e17 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Fout met extensie</translation> <translation id="1246158006305844142">Je apps en instellingen worden gesynchroniseerd voor alle Chrome OS-apparaten waarop je bent ingelogd met je Google-account. Ga naar de <ph name="LINK_BEGIN" />Chrome-instellingen<ph name="LINK_END" /> voor opties voor browsersynchronisatie.</translation> <translation id="1246905108078336582">Suggestie verwijderen van klembord?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> is geblokkeerd omdat deze is verouderd</translation> <translation id="1251366534849411931">Verwachte openingsaccolade <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Hiermee wis je <ph name="TOTAL_USAGE" /> van de gegevens die zijn opgeslagen door sites en geïnstalleerde apps</translation> <translation id="125220115284141797">Standaard</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Thuisnetwerk zonder roaming</translation> <translation id="1315056510003830387">Geen toestemming om Flash te gebruiken</translation> -<translation id="1315144594965013365">Zorg dat beide apparaten zijn ontgrendeld, bij elkaar in de buurt zijn en dat bluetooth is ingeschakeld. Als je content deelt met een Chromebook, zorg je dat 'Dichtbij delen' daarop is ingeschakeld (open het statusgedeelte door de tijd te selecteren en selecteer 'Dichtbij delen').</translation> <translation id="1316136264406804862">Zoeken...</translation> <translation id="1316495628809031177">Synchronisatie is onderbroken</translation> <translation id="1317637799698924700">Je dockingstation werkt in de voor USB Type-C-geschikte modus.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Inbreuk op CA</translation> <translation id="2182058453334755893">Naar klembord gekopieerd</translation> <translation id="2184515124301515068">Chrome laten kiezen wanneer sites geluid mogen afspelen (aanbevolen)</translation> -<translation id="2187243482123994665">Aanwezigheid van gebruiker</translation> <translation id="2187675480456493911">Gesynchroniseerd met andere apparaten in je account. Instellingen die zijn aangepast door andere gebruikers, worden niet gesynchroniseerd. <ph name="LINK_BEGIN" />Meer informatie<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Fout bij importeren van servercertificaat</translation> <translation id="2187906491731510095">Extensies geüpdatet</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">E&xporteren...</translation> <translation id="4107048419833779140">Opslagapparaten identificeren en verwijderen</translation> <translation id="4109135793348361820">Venster verplaatsen naar <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Pas het formaat en de stijl van de ondertiteling aan voor apps die deze instelling ondersteunen</translation> <translation id="4110490973560452005">Download voltooid: <ph name="FILE_NAME" />. Druk op Shift+F6 om naar het gedeelte met de downloadbalk te gaan.</translation> <translation id="4110686435123617899">Album selecteren: <ph name="TITLE" /> (<ph name="DESC" />)</translation> <translation id="4110895898888439383">Surf op internet in de modus voor hoog contrast</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Houd de Launcher-toets ingedrukt om het gedrag van de toetsen in de bovenste rij om te schakelen</translation> <translation id="4400963414856942668">Je kunt op de ster klikken om een bookmark voor een tabblad in te stellen</translation> <translation id="4403775189117163360">Een andere map kiezen</translation> -<translation id="440391631796167175">Geen zwakke wachtwoorden gevonden</translation> <translation id="4404136731284211429">Opnieuw scannen</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> is geblokkeerd door je ouder. Vraag je ouder toestemming om deze app te gebruiken.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">Focus op dit tabblad plaatsen</translation> <translation id="6243280677745499710">Momenteel ingesteld</translation> <translation id="6243774244933267674">Server is niet beschikbaar</translation> -<translation id="6244185221716469155">Zwakke wachtwoorden zijn makkelijk te raden. Stel sterke wachtwoorden in. - <ph name="BEGIN_LINK" />Meer beveiligingstips bekijken<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC-bestand importeren</translation> <translation id="6246790815526961700">Uploaden via apparaat</translation> <translation id="6247620186971210352">Geen apps gevonden</translation> @@ -6207,6 +6200,7 @@ <translation id="8281886186245836920">Overslaan</translation> <translation id="8283475148136688298">Verificatiecode geweigerd tijdens verbinden met '<ph name="DEVICE_NAME" />'.</translation> <translation id="8284279544186306258">alle sites op <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Ondertiteling</translation> <translation id="8286036467436129157">Inloggen</translation> <translation id="8286963743045814739">Je kunt privé browsen in een incognitovenster</translation> <translation id="8287902281644548111">Zoeken op API-aanroep/URL</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index a9b89ee..c93cd1f 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Feil med utvidelse</translation> <translation id="1246158006305844142">Appene og innstillingene dine blir synkronisert på alle Chrome OS-enheter hvor du er logget på med Google-kontoen din. For alternativer for nettlesersynkronisering, gå til<ph name="LINK_BEGIN" />Chrome-innstillingene<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Vil du fjerne forslaget fra utklippstavlen?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> ble blokkert fordi det er avviklet</translation> <translation id="1251366534849411931">Forventet venstrestilt krøllparentes: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Dette sletter <ph name="TOTAL_USAGE" /> data som er lagret av nettsteder og installerte apper</translation> <translation id="125220115284141797">Standard</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Hjemmenettverk, datastreifing ikke aktivert</translation> <translation id="1315056510003830387">Nettsteder som ikke har lov til å bruke Flash</translation> -<translation id="1315144594965013365">Kontrollér at begge enhetene er låst opp, er i nærheten av hverandre og har Bluetooth påslått. Hvis du deler med en Chromebook, må du sørge for at den har nærdeling påslått (åpne statusfeltet ved å velge tidspunktet, og velg deretter Nærdeling).</translation> <translation id="1316136264406804862">Søker …</translation> <translation id="1316495628809031177">Synkroniseringen er satt på pause</translation> <translation id="1317637799698924700">Dokkingstasjonen kjører i USB-C-kompatibel modus.</translation> @@ -1035,7 +1033,6 @@ <translation id="2178614541317717477">Sertifiseringsinstans-kompromiss</translation> <translation id="2182058453334755893">Kopiert til utklippstavlen</translation> <translation id="2184515124301515068">La Chrome velge når nettsteder kan spille av lyd (anbefalt)</translation> -<translation id="2187243482123994665">Brukertilstedeværelse</translation> <translation id="2187675480456493911">Synkronisert med andre enheter på kontoen. Innstillinger som endres av andre brukere, blir ikke synkronisert. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Feil ved import av tjenersertifikat</translation> <translation id="2187906491731510095">Utvidelser er oppdatert</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">E&ksportér</translation> <translation id="4107048419833779140">Identifiser og løs ut lagringsenheter</translation> <translation id="4109135793348361820">Flytt vinduet til <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Tilpass størrelsen og stilen på tekstingen i apper som støtter denne innstillingen</translation> <translation id="4110490973560452005">Nedlastingen er fullført: <ph name="FILE_NAME" />. Trykk på Shift+F6 for å gå til nedlastingsraden.</translation> <translation id="4110686435123617899">Velg albumet <ph name="TITLE" /> med <ph name="DESC" /></translation> <translation id="4110895898888439383">Surf på nettet i høykontrastmodus</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Hold Appoversikt-tasten inne for å endre funksjonene for tastene på øverste rad</translation> <translation id="4400963414856942668">Du kan klikke på stjernen for å bokmerke en fane</translation> <translation id="4403775189117163360">Velg en annen mappe</translation> -<translation id="440391631796167175">Fant ingen svake passord</translation> <translation id="4404136731284211429">Gjennomsøk på nytt</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> er blokkert av forelderen din. Spør forelderen din om tillatelse til å bruke denne appen.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4462,8 +4457,6 @@ <translation id="6242852299490624841">Fokusér på denne fanen</translation> <translation id="6243280677745499710">Nåværende bakgrunn</translation> <translation id="6243774244933267674">Tjeneren er ikke tilgjengelig</translation> -<translation id="6244185221716469155">Svake passord er enkle å gjette. Sørg for at du lager sterke passord. - <ph name="BEGIN_LINK" />Se flere sikkerhetstips.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importér ONC-fil</translation> <translation id="6246790815526961700">Last opp fra enheten</translation> <translation id="6247620186971210352">Fant ingen apper</translation> @@ -6213,6 +6206,7 @@ <translation id="8281886186245836920">Hopp over</translation> <translation id="8283475148136688298">Autentiseringskoden ble avvist under tilkobling til <ph name="DEVICE_NAME" />.</translation> <translation id="8284279544186306258">alle <ph name="WEBSITE_1" />-nettsteder</translation> +<translation id="8284326494547611709">Teksting</translation> <translation id="8286036467436129157">Logg på</translation> <translation id="8286963743045814739">Med et inkognitovindu kan du besøke nettsteder anonymt</translation> <translation id="8287902281644548111">Søk etter API-kall/nettadresser</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index 196da37..2a2d55d4 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -223,7 +223,6 @@ <translation id="1244303850296295656">ଏକ୍ସଟେନ୍ସନ୍ ତ୍ରୁଟି</translation> <translation id="1246158006305844142">ଆପଣ ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟ ସହିତ ସାଇନ୍ ଇନ୍ କରିଥିବା ସମସ୍ତ Chrome OS ଡିଭାଇସରେ ଆପଣଙ୍କର ଆପ୍ସ ଏବଂ ସେଟିଂସ୍ ସିଙ୍କ୍ ହେବ। ବ୍ରାଉଜର୍ ସିଙ୍କ୍ ବିକଳ୍ପଗୁଡ଼ିକ ପାଇଁ, <ph name="LINK_BEGIN" />Chrome ସେଟିଂସ<ph name="LINK_END" />କୁ ଯାଆନ୍ତୁ।</translation> <translation id="1246905108078336582">କ୍ଲିପ୍ବୋର୍ଡରୁ ପ୍ରସ୍ତାବ କାଢ଼ି ଦେବେ?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> ବ୍ଲକ୍ କରାଯାଇଥିଲା କାରଣ ଏହାକୁ ଅଗ୍ରାହ୍ୟ କରାଯାଇଛି</translation> <translation id="1251366534849411931">ପ୍ରତ୍ୟାଶିତ ଖୋଲାଥିବା କୁଟିଳ ବନ୍ଧନୀ: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">ଏହା ସାଇଟ୍ ଏବଂ ଇନଷ୍ଟଲ୍ କରାଯାଇଥିବା ଆପଗୁଡ଼ିକ ଦ୍ୱାରା ଷ୍ଟୋର୍ କରାଯାଇଥିବା <ph name="TOTAL_USAGE" /> ଡାଟାକୁ ଖାଲି କରିଦେବ</translation> <translation id="125220115284141797">ଡିଫଲ୍ଟ</translation> @@ -278,7 +277,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">ହୋମ୍ ନେଟ୍ୱର୍କ, ରୋମିଂ ନୁହେଁ</translation> <translation id="1315056510003830387">ଫ୍ଲାସ୍ ବ୍ୟବହାର କରିବାକୁ ଅନୁମତି ଦିଆଯାଇନାହିଁ</translation> -<translation id="1315144594965013365">ଉଭୟ ଡିଭାଇସକୁ ଅନଲକ୍ କରାଯାଇଛି, ସେଗୁଡ଼ିକ ପାଖାପାଖି ରହିଛି ଏବଂ ବ୍ଲୁଟୁଥ୍ ଚାଲୁ ଅଛି ବୋଲି ସୁନିଶ୍ଚିତ କରନ୍ତୁ। ଯଦି ଆପଣ ଏକ Chromebook ସହ ସେୟାର୍ କରୁଛନ୍ତି, ତେବେ ସେଥିରେ Nearby Share ଚାଲୁ କରାଯାଇଛି ବୋଲି ସୁନିଶ୍ଚିତ କରନ୍ତୁ (ସମୟ ଚୟନ କରି ସ୍ଥିତି କ୍ଷେତ୍ର ଖୋଲନ୍ତୁ, ତା'ପରେ Nearby Share ଚୟନ କରନ୍ତୁ)।</translation> <translation id="1316136264406804862">ସନ୍ଧାନ କରୁଛି…</translation> <translation id="1316495628809031177">ସିଙ୍କ୍ ବିରତ ଅଛି</translation> <translation id="1317637799698924700">USB ପ୍ରକାର-C ସୁସଙ୍ଗତ ମୋଡ୍ରେ ଆପଣଙ୍କର ଡକିଂ ଷ୍ଟେସନ୍ କାର୍ଯ୍ୟ କରିବ।</translation> @@ -1031,7 +1029,6 @@ <translation id="2178614541317717477">CA କମ୍ପ୍ରୋମାଇଜ୍</translation> <translation id="2182058453334755893">ଆପଣଙ୍କର କ୍ଲିପ୍ବୋର୍ଡକୁ କପି କରାଯାଇଛି</translation> <translation id="2184515124301515068">ସାଇଟ୍ଗୁଡ଼ିକ କେତେବେଳେ ସାଉଣ୍ଡ୍ ଚାଲୁ କରିବେ ତାହା Chromeକୁ ବାଛିବାକୁ ଦିଅନ୍ତୁ (ସୁପାରିଶ କରାଯାଇଛି)</translation> -<translation id="2187243482123994665">ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ସକ୍ରିୟତା</translation> <translation id="2187675480456493911">ଆପଣଙ୍କ ଆକାଉଣ୍ଟରେ ଥିବା ଅନ୍ୟ ଡିଭାଇସଗୁଡ଼ିକ ସହ ସିଙ୍କ୍ ହୋଇଛି। ଅନ୍ୟ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ଦ୍ୱାରା ପରିବର୍ତ୍ତନ କରାଯାଇଥିବା ସେଟିଂସ୍ ସିଙ୍କ୍ ହେବ ନାହିଁ। <ph name="LINK_BEGIN" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="LINK_END" /></translation> <translation id="2187895286714876935">ସର୍ଭର୍ ସାର୍ଟିଫିକେଟ୍ ଇମ୍ପୋର୍ଟ କରିବାରେ ତ୍ରୁଟି</translation> <translation id="2187906491731510095">ଏକ୍ସଟେନ୍ସନ୍ଗୁଡ଼ିକ ଅପ୍ଡେଟ୍ କରାଯାଇଛି</translation> @@ -2697,7 +2694,6 @@ <translation id="4104163789986725820">ଏକ୍ସପୋର୍ଟ...</translation> <translation id="4107048419833779140">ଷ୍ଟୋରେଜ୍ ଡିଭାଇସ୍ଗୁଡ଼ିକ ଚିହ୍ନଟ କରନ୍ତୁ ଏବଂ ବାହାର କରନ୍ତୁ</translation> <translation id="4109135793348361820"><ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)କୁ ୱିଣ୍ଡୋ ନିଅନ୍ତୁ</translation> -<translation id="411031910327788420">ଏହି ସେଟିଂକୁ ସମର୍ଥନ କରୁଥିବା ଆପଗୁଡ଼ିକ ପାଇଁ କ୍ୟାପ୍ସନର ଆକାର ଏବଂ ଷ୍ଟାଇଲକୁ କଷ୍ଟମାଇଜ୍ କରନ୍ତୁ</translation> <translation id="4110490973560452005">ଡାଉନ୍ଲୋଡ୍ ଶେଷ ହୋଇଛି: <ph name="FILE_NAME" />। ଡାଉନ୍ଲୋଡ୍ ବାର୍ କ୍ଷେତ୍ରକୁ ଯିବାକୁ Shift+F6କୁ ଦବାନ୍ତୁ।</translation> <translation id="4110686435123617899">ଆଲବମ୍ <ph name="TITLE" /> <ph name="DESC" /> ଚୟନ କରନ୍ତୁ</translation> <translation id="4110895898888439383">ଉଚ୍ଚ କଣ୍ଟ୍ରାଷ୍ଟ ମୋଡ୍ରେ ୱେବ୍ ବ୍ରାଉଜ୍ କରନ୍ତୁ</translation> @@ -2910,7 +2906,6 @@ <translation id="4400632832271803360">ଶୀର୍ଷ-ଧାଡିରେ ଥିବା କୀଗୁଡ଼ିକର ଆଚରଣ ସ୍ୱିଚ୍ କରିବାକୁ ଲଞ୍ଚର୍ କୀ ଧରି ରଖନ୍ତୁ</translation> <translation id="4400963414856942668">ଏକ ଟାବ୍କୁ ବୁକ୍ମାର୍କ କରିବା ପାଇଁ ଆପଣ ତାରା ଚିହ୍ନରେ କ୍ଲିକ୍ କରିପାରିବେ</translation> <translation id="4403775189117163360">ଏକ ଭିନ୍ନ ଫୋଲ୍ଡର୍ ବାଛନ୍ତୁ</translation> -<translation id="440391631796167175">କୌଣସି ଦୁର୍ବଳ ପାସୱାର୍ଡ ମିଳିଲା ନାହିଁ</translation> <translation id="4404136731284211429">ପୁଣି ସ୍କାନ୍ କରନ୍ତୁ</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> ଆପଣଙ୍କ ବାପାମାଙ୍କ ଦ୍ୱାରା ବ୍ଲକ୍ କରାଯାଇଛି। ଏହି ଆପ୍ ବ୍ୟବହାର କରିବା ପାଇଁ ଅନୁମତି ଦେବାକୁ ଆପଣଙ୍କ ବାପାମାଙ୍କୁ କୁହନ୍ତୁ।</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4451,8 +4446,6 @@ <translation id="6242852299490624841">ଏହି ଟାବ୍ ପ୍ରତି ଧ୍ୟାନ ଦିଅନ୍ତୁ</translation> <translation id="6243280677745499710">ବର୍ତ୍ତମାନ ସେଟ୍ ହୋଇଛି</translation> <translation id="6243774244933267674">ସର୍ଭର୍ ଉପଲବ୍ଧ ନାହିଁ</translation> -<translation id="6244185221716469155">ଦୁର୍ବଳ ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଅନୁମାନ କରିବା ସହଜ ଅଟେ। ଆପଣ ଜଟିଳ ପାସୱାର୍ଡଗୁଡ଼ିକୁ ତିଆରି କରିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ। - <ph name="BEGIN_LINK" />ଅଧିକ ସୁରକ୍ଷା ଟିପ୍ସ ଦେଖନ୍ତୁ।<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC ଫାଇଲ୍ ଇମ୍ପୋର୍ଟ କରନ୍ତୁ</translation> <translation id="6246790815526961700">ଡିଭାଇସ୍ରୁ ଅପ୍ଲୋଡ୍ କରନ୍ତୁ</translation> <translation id="6247620186971210352">କୌଣସି ଆପ୍ ମିଳିଲା ନାହିଁ</translation> @@ -6199,6 +6192,7 @@ <translation id="8281886186245836920">ଛାଡ଼ିଦିଅନ୍ତୁ</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />"କୁ ସଂଯୋଗ କରୁଥିବା ସମୟରେ ପ୍ରମାଣିକତା କୋଡ୍ ଅଗ୍ରାହ୍ୟ କରାଗଲା।</translation> <translation id="8284279544186306258">ସମସ୍ତ <ph name="WEBSITE_1" /> ସାଇଟ୍</translation> +<translation id="8284326494547611709">କ୍ୟାପସନ୍</translation> <translation id="8286036467436129157">ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation> <translation id="8286963743045814739">ଆପଣ ଏକ ଇନ୍କଗ୍ନିଟୋ ୱିଣ୍ଡୋ ବ୍ୟବହାର କରି ବ୍ୟକ୍ତିଗତ ଭାବେ ବ୍ରାଉଜ୍ କରିପାରିବେ</translation> <translation id="8287902281644548111">API କଲ୍/URL ଦ୍ୱାରା ସନ୍ଧାନ କରନ୍ତୁ</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index ed0521db..408430d 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">ਐਕਸਟੈਂਸ਼ਨ ਗੜਬੜ</translation> <translation id="1246158006305844142">ਤੁਹਾਡੀਆਂ ਐਪਾਂ ਅਤੇ ਸੈਟਿੰਗਾਂ ਦਾ ਉਹਨਾਂ ਸਾਰੇ Chrome OS ਡੀਵਾਈਸਾਂ ਨਾਲ ਸਮਕਾਲੀਕਰਨ ਕੀਤਾ ਜਾਵੇਗਾ, ਜਿੱਥੇ ਤੁਸੀਂ ਆਪਣੇ Google ਖਾਤੇ ਨਾਲ ਸਾਈਨ-ਇਨ ਹੋ। ਬ੍ਰਾਊਜ਼ਰ ਸਮਕਾਲੀਕਰਨ ਵਿਕਲਪਾਂ ਲਈ, <ph name="LINK_BEGIN" />Chrome ਸੈਟਿੰਗਾਂ<ph name="LINK_END" /> 'ਤੇ ਜਾਓ।</translation> <translation id="1246905108078336582">ਕੀ ਕਲਿੱਪਬੋਰਡ ਤੋਂ ਸੁਝਾਅ ਨੂੰ ਹਟਾਉਣਾ ਹੈ?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> ਨੂੰ ਨਾਪਸੰਦ ਹੋਣ ਕਰਕੇ ਬਲਾਕ ਕੀਤਾ ਗਿਆ</translation> <translation id="1251366534849411931">ਕੁੰਡਲਦਾਰ ਬ੍ਰੇਸ ਦੀ ਸੰਭਾਵੀ ਸ਼ੁਰੂਆਤ: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">ਇੰਝ ਕਰਨ ਨਾਲ ਸਾਈਟਾਂ ਅਤੇ ਸਥਾਪਤ ਕੀਤੀਆਂ ਐਪਾਂ ਦੇ <ph name="TOTAL_USAGE" /> ਡਾਟੇ ਨੂੰ ਕਲੀਅਰ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ</translation> <translation id="125220115284141797">ਪੂਰਵ-ਨਿਰਧਾਰਤ</translation> @@ -278,7 +277,6 @@ <translation id="1313705515580255288">ਤੁਹਾਡੇ ਬੁੱਕਮਾਰਕ, ਇਤਿਹਾਸ ਅਤੇ ਹੋਰ ਸੈਟਿੰਗਾਂ ਨੂੰ ਤੁਹਾਡੇ Google ਖਾਤੇ 'ਤੇ ਸਿੰਕ ਕੀਤਾ ਜਾਵੇਗਾ।</translation> <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">ਘਰੇਲੂ ਨੈੱਟਵਰਕ, ਰੋਮਿੰਗ ਨਹੀਂ</translation> -<translation id="1315144594965013365">ਪੱਕਾ ਕਰੋ ਕਿ ਦੋਵੇਂ ਡੀਵਾਈਸ ਅਣਲਾਕ ਹੋਣ, ਇੱਕ-ਦੂਜੇ ਦੇ ਨੇੜੇ ਹੋਣ ਅਤੇ ਬਲੂਟੁੱਥ ਚਾਲੂ ਹੋਵੇ। ਜੇ ਤੁਸੀਂ Chromebook ਨਾਲ ਸਾਂਝਾ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਪੱਕਾ ਕਰੋ ਕਿ ਇਸ ਵਿੱਚ 'ਨਜ਼ਦੀਕੀ ਸਾਂਝ' ਚਾਲੂ ਹੈ (ਸਮੇਂ ਨੂੰ ਚੁਣ ਕੇ ਸਥਿਤੀ ਖੇਤਰ ਖੋਲ੍ਹੋ, ਫਿਰ 'ਨਜ਼ਦੀਕੀ ਸਾਂਝ' ਚੁਣੋ)।</translation> <translation id="1316136264406804862">ਖੋਜ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ...</translation> <translation id="1316495628809031177">ਸਮਕਾਲੀਕਰਨ ਰੋਕਿਆ ਗਿਆ</translation> <translation id="1317637799698924700">ਤੁਹਾਡਾ ਡੌਕਿੰਗ ਸਟੇਸ਼ਨ USB ਪ੍ਰਕਾਰ-C ਅਨੁਰੂਪਤਾ ਮੋਡ ਵਿੱਚ ਕੰਮ ਕਰੇਗਾ।</translation> @@ -1028,7 +1026,6 @@ <translation id="2178614541317717477">CA ਸਮਝੌਤਾ</translation> <translation id="2182058453334755893">ਤੁਹਾਡੇ ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕੀਤਾ ਗਿਆ</translation> <translation id="2184515124301515068">Chrome ਨੂੰ ਚੁਣਨ ਦਿਓ ਕਿ ਸਾਈਟਾਂ ਕਦੋਂ ਧੁਨੀ ਚਲਾ ਸਕਦੀਆਂ ਹਨ (ਸਿਫ਼ਾਰਸ਼ੀ)</translation> -<translation id="2187243482123994665">ਵਰਤੋਂਕਾਰ ਦੀ ਮੌਜੂਦਗੀ</translation> <translation id="2187675480456493911">ਤੁਹਾਡੇ ਖਾਤੇ 'ਤੇ ਹੋਰ ਡੀਵਾਈਸਾਂ ਨਾਲ ਸਮਕਾਲੀਕਰਨ ਕੀਤਾ ਗਿਆ। ਹੋਰ ਵਰਤੋਂਕਾਰਾਂ ਵੱਲੋਂ ਸੋਧੀਆਂ ਗਈਆਂ ਸੈਟਿੰਗਾਂ ਦਾ ਸਮਕਾਲੀਕਰਨ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ। <ph name="LINK_BEGIN" />ਹੋਰ ਜਾਣੋ<ph name="LINK_END" /></translation> <translation id="2187895286714876935">ਸਰਵਰ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਆਯਾਤ ਗੜਬੜ</translation> <translation id="2187906491731510095">ਐਕਸਟੈਂਸ਼ਨਾਂ ਅੱਪਡੇਟ ਕੀਤੀਆਂ ਗਈਆਂ</translation> @@ -2680,7 +2677,6 @@ <translation id="4104163789986725820">ਨਿ&ਰਯਾਤ ਕਰੋ..</translation> <translation id="4107048419833779140">ਸਟੋਰੇਜ ਡੀਵਾਈਸਾਂ ਪਛਾਣੋ ਅਤੇ ਬਾਹਰ ਕੱਢੋ</translation> <translation id="4109135793348361820">window ਨੂੰ <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) ਵਿੱਚ ਮੂਵ ਕਰੋ</translation> -<translation id="411031910327788420">ਉਹਨਾਂ ਐਪਾਂ ਲਈ ਸੁਰਖੀ ਦੇ ਆਕਾਰ ਅਤੇ ਸਟਾਈਲ ਨੂੰ ਵਿਉਂਤਬੱਧ ਕਰੋ ਜੋ ਇਸ ਸੈਟਿੰਗ ਦਾ ਸਮਰਥਨ ਕਰਦੀਆਂ ਹਨ</translation> <translation id="4110490973560452005">ਡਾਊਨਲੋਡ ਮੁਕੰਮਲ ਹੋਇਆ: <ph name="FILE_NAME" />. ਡਾਊਨਲੋਡ ਬਾਰ ਖੇਤਰ ਵਿੱਚ ਜਾਣ ਲਈ Shift+F6 ਦਬਾਓ।</translation> <translation id="4110686435123617899">ਐਲਬਮ ਚੁਣੋ <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">ਉੱਚ ਕੰਟ੍ਰਾਸਟ ਮੋਡ ਵਿੱਚ ਵੈੱਬ ਬ੍ਰਾਊਜ਼ ਕਰੋ</translation> @@ -4418,8 +4414,6 @@ <translation id="6242852299490624841">ਇਸ ਟੈਬ 'ਤੇ ਫੋਕਸ ਕਰੋ</translation> <translation id="6243280677745499710">ਇਸ ਵੇਲੇ ਸੈੱਟ ਹੈ</translation> <translation id="6243774244933267674">ਸਰਵਰ ਅਣਉਪਲਬਧ</translation> -<translation id="6244185221716469155">ਕਮਜ਼ੋਰ ਪਾਸਵਰਡਾਂ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਉਣਾ ਆਸਾਨ ਹੁੰਦਾ ਹੈ। ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਮਜ਼ਬੂਤ ਪਾਸਵਰਡ ਬਣਾ ਰਹੇ ਹੋ। - <ph name="BEGIN_LINK" />ਹੋਰ ਸੁਰੱਖਿਆ ਨੁਕਤੇ ਦੇਖੋ।<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC ਫ਼ਾਈਲ ਆਯਾਤ ਕਰੋ</translation> <translation id="6246790815526961700">ਡੀਵਾਈਸ ਵਿੱਚੋਂ ਅੱਪਲੋਡ ਕਰੋ</translation> <translation id="6247620186971210352">ਕੋਈ ਐਪ ਨਹੀਂ ਮਿਲੀ</translation> @@ -6143,6 +6137,7 @@ <translation id="8281886186245836920">ਛੱਡੋ</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਵੇਲੇ ਪ੍ਰਮਾਣੀਕਰਨ ਕੋਡ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ।</translation> <translation id="8284279544186306258">ਸਾਰੀਆਂ <ph name="WEBSITE_1" /> ਸਾਈਟਾਂ</translation> +<translation id="8284326494547611709">ਸੁਰਖੀਆਂ</translation> <translation id="8286036467436129157">ਸਾਈਨ-ਇਨ ਕਰੋ</translation> <translation id="8286963743045814739">ਤੁਸੀਂ ਕਿਸੇ ਇਨਕੋਗਨਿਟੋ ਵਿੰਡੋ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਨਿੱਜੀ ਤੌਰ 'ਤੇ ਬ੍ਰਾਊਜ਼ ਕਰ ਸਕਦੇ ਹੋ</translation> <translation id="8287902281644548111">API ਕਾਲ ਜਾਂ URL ਰਾਹੀਂ ਖੋਜੋ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index 81dfaa6..5a06585 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Błąd rozszerzenia</translation> <translation id="1246158006305844142">Po zalogowaniu się na konto Google Twoje aplikacje i ustawienia zsynchronizują się na wszystkich urządzeniach z Chrome OS. Opcje synchronizacji przeglądarek znajdziesz w <ph name="LINK_BEGIN" />ustawieniach Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Usunąć podpowiedź ze schowka?</translation> -<translation id="1249643471736608405">Wtyczka <ph name="PLUGIN_NAME" /> została zablokowana, ponieważ jest wycofana</translation> <translation id="1251366534849411931">Oczekiwany otwierający nawias klamrowy: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Spowoduje to usunięcie <ph name="TOTAL_USAGE" /> danych zapisanych przez strony i zainstalowane aplikacje</translation> <translation id="125220115284141797">Domyślne</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN na Androida</translation> <translation id="131461803491198646">Sieć macierzysta, nie w roamingu</translation> <translation id="1315056510003830387">Nie zezwolono na używanie Flasha</translation> -<translation id="1315144594965013365">Dopilnuj, by obydwa urządzenia były odblokowane, znajdowały się blisko siebie i miały włączony Bluetooth. Jeśli chcesz coś udostępnić Chromebookowi, upewnij się, że ma włączone Udostępnianie w pobliżu (kliknij godzinę, by otworzyć pasek stanu, a potem wybierz Udostępnianie w pobliżu).</translation> <translation id="1316136264406804862">Trwa wyszukiwanie...</translation> <translation id="1316495628809031177">Synchronizacja została wstrzymana</translation> <translation id="1317637799698924700">Stacja dokująca będzie działać w trybie zgodności z USB typu C.</translation> @@ -1034,7 +1032,6 @@ <translation id="2178614541317717477">Naruszenie bezpieczeństwa urzędu certyfikacji</translation> <translation id="2182058453334755893">Skopiowano do schowka</translation> <translation id="2184515124301515068">Niech Chrome decyduje, które strony mogą odtwarzać dźwięk (zalecane)</translation> -<translation id="2187243482123994665">Obecność użytkownika</translation> <translation id="2187675480456493911">Sieć jest zsynchronizowana ze wszystkimi urządzeniami na Twoim koncie. Ustawienia zmienione przez innych użytkowników nie zostaną zsynchronizowane. <ph name="LINK_BEGIN" />Więcej informacji<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Błąd importowania certyfikatu serwera</translation> <translation id="2187906491731510095">Rozszerzenia zaktualizowane</translation> @@ -2706,7 +2703,6 @@ <translation id="4104163789986725820">E&ksportuj</translation> <translation id="4107048419833779140">Rozpoznawanie i wysuwanie urządzeń pamięci</translation> <translation id="4109135793348361820">Przesuń okno do: <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Dostosuj rozmiar i styl napisów w aplikacjach, które obsługują to ustawienie.</translation> <translation id="4110490973560452005">Pobrano plik: <ph name="FILE_NAME" />. Naciśnij Shift+F6, by przejść do obszaru paska pobranych plików.</translation> <translation id="4110686435123617899">Wybierz album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Przeglądaj strony w trybie dużego kontrastu</translation> @@ -2919,7 +2915,6 @@ <translation id="4400632832271803360">Przytrzymaj klawisz programu uruchamiającego, by zmienić działanie klawiszy z górnego rzędu</translation> <translation id="4400963414856942668">Aby dodać kartę do zakładek, możesz kliknąć gwiazdkę</translation> <translation id="4403775189117163360">Wybierz inny folder</translation> -<translation id="440391631796167175">Nie znaleziono słabych haseł</translation> <translation id="4404136731284211429">Skanuj ponownie</translation> <translation id="4404843640767531781">Twój rodzic zablokował aplikację <ph name="APP_NAME" />. Aby móc z niej korzystać, poproś go o pozwolenie.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4463,8 +4458,6 @@ <translation id="6242852299490624841">Ustaw tę kartę jako aktywną</translation> <translation id="6243280677745499710">Obecnie ustawiona</translation> <translation id="6243774244933267674">Serwer niedostępny</translation> -<translation id="6244185221716469155">Słabe hasła są łatwe do odgadnięcia. Pamiętaj, by używać tylko silnych haseł. - <ph name="BEGIN_LINK" />Więcej wskazówek dotyczących bezpieczeństwa<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importuj plik ONC</translation> <translation id="6246790815526961700">Prześlij z urządzenia</translation> <translation id="6247620186971210352">Nie znaleziono aplikacji</translation> @@ -6214,6 +6207,7 @@ <translation id="8281886186245836920">Pomiń</translation> <translation id="8283475148136688298">Podczas łączenia się z urządzeniem „<ph name="DEVICE_NAME" />” został odrzucony kod uwierzytelniania.</translation> <translation id="8284279544186306258">wszystkie strony <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Napisy</translation> <translation id="8286036467436129157">Zaloguj się</translation> <translation id="8286963743045814739">Możesz przeglądać prywatnie w oknie incognito</translation> <translation id="8287902281644548111">Wyszukaj według wywołania interfejsu API lub adresu URL</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index 39da4333..450de9d 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Erro na extensão</translation> <translation id="1246158006305844142">Seus apps e suas configurações serão sincronizados por todos os dispositivos Chrome OS conectados à sua Conta do Google. Para ver as opções de sincronização do navegador, acesse as <ph name="LINK_BEGIN" />configurações do Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Remover sugestão da área de transferência?</translation> -<translation id="1249643471736608405">O plug-in <ph name="PLUGIN_NAME" /> foi bloqueado porque está obsoleto</translation> <translation id="1251366534849411931">Chave de abertura esperada: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Isso limpará <ph name="TOTAL_USAGE" /> de dados de armazenados por sites e apps instalados</translation> <translation id="125220115284141797">Padrão</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN do Android</translation> <translation id="131461803491198646">Rede doméstica, não está em roaming</translation> <translation id="1315056510003830387">Bloquear o uso do Flash</translation> -<translation id="1315144594965013365">Verifique se os dois dispositivos estão desbloqueados, próximos um do outro e com o Bluetooth ativado. Se você estiver compartilhando com um Chromebook, abra a área de status clicando no horário e selecione "Compartilhar por proximidade" para verificar se o recurso está ativado.</translation> <translation id="1316136264406804862">Pesquisando...</translation> <translation id="1316495628809031177">A sincronização está pausada</translation> <translation id="1317637799698924700">Sua base de encaixe funcionará no modo de compatibilidade com USB-C.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">Compromisso da autoridade de certificação</translation> <translation id="2182058453334755893">Copiado para a área de transferência</translation> <translation id="2184515124301515068">Permitir que Chrome defina quando os sites podem reproduzir sons (recomendado)</translation> -<translation id="2187243482123994665">Presença do usuário</translation> <translation id="2187675480456493911">Sincronizada com outros dispositivos na sua conta. As configurações modificadas por outros usuários não serão sincronizadas. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Erro de importação do certificado de servidor</translation> <translation id="2187906491731510095">Extensões atualizadas</translation> @@ -2711,7 +2708,6 @@ <translation id="4104163789986725820">E&xportar...</translation> <translation id="4107048419833779140">Identificar e ejetar dispositivos de armazenamento</translation> <translation id="4109135793348361820">Mover janela para <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Personalizar o tamanho e o estilo das legendas em apps compatíveis com esta configuração</translation> <translation id="4110490973560452005">Download concluído: <ph name="FILE_NAME" />. Pressione Shift+F6 para voltar à área da barra de downloads.</translation> <translation id="4110686435123617899">Selecionar álbum <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Navegue na Web usando o modo de alto contraste</translation> @@ -2924,7 +2920,6 @@ <translation id="4400632832271803360">Toque na tecla Iniciador e mantenha-a pressionada para alternar o comportamento das teclas de função</translation> <translation id="4400963414856942668">Você pode clicar no ícone da estrela para adicionar uma guia aos favoritos</translation> <translation id="4403775189117163360">Escolher uma pasta diferente</translation> -<translation id="440391631796167175">Nenhuma senha fraca encontrada</translation> <translation id="4404136731284211429">Verificar novamente</translation> <translation id="4404843640767531781">O app <ph name="APP_NAME" /> foi bloqueado pelo seu pai/mãe. É necessário pedir permissão para usá-lo.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4470,8 +4465,6 @@ <translation id="6242852299490624841">Focar esta guia</translation> <translation id="6243280677745499710">Definido no momento</translation> <translation id="6243774244933267674">Servidor não disponível</translation> -<translation id="6244185221716469155">Senhas fracas são fáceis de adivinhar. Crie senhas fortes. - <ph name="BEGIN_LINK" />Veja mais dicas de segurança<ph name="END_LINK" />.</translation> <translation id="6244245036423700521">Importar arquivo ONC</translation> <translation id="6246790815526961700">Upload do dispositivo</translation> <translation id="6247620186971210352">Nenhum app encontrado</translation> @@ -6221,6 +6214,7 @@ <translation id="8281886186245836920">Pular</translation> <translation id="8283475148136688298">Código de autenticação rejeitado durante a conexão com "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">todos os sites de <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Legendas</translation> <translation id="8286036467436129157">Fazer login</translation> <translation id="8286963743045814739">Você pode navegar com privacidade usando uma janela anônima</translation> <translation id="8287902281644548111">Pesquisar por chamada de API/URL</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index 180a1e8..aa791c7 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Erro de extensão</translation> <translation id="1246158006305844142">As suas apps e definições serão sincronizadas em todos os dispositivos Chrome OS nos quais tenha sessão iniciada com a Conta Google. Para ver as opções de sincronização do navegador, aceda às <ph name="LINK_BEGIN" />definições do Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Remover a sugestão da área de transferência?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> foi bloqueado por ter sido descontinuado.</translation> <translation id="1251366534849411931">Chaveta de abertura esperada: <ph name="ERROR_LINE" />.</translation> <translation id="1251480783646955802">Esta ação irá limpar <ph name="TOTAL_USAGE" /> de dados armazenados pelos sites e apps instaladas.</translation> <translation id="125220115284141797">Predefinidas</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN Android</translation> <translation id="131461803491198646">Rede doméstica, sem roaming</translation> <translation id="1315056510003830387">Sem autorização para utilizar o Flash</translation> -<translation id="1315144594965013365">Certifique-se de que ambos os dispositivos estão desbloqueados, próximos um do outro e têm o Bluetooth ativado. Se estiver a partilhar com um Chromebook, certifique-se de que tem a funcionalidade Partilhar com Nearby ativada (selecione a hora para abrir a barra de estado e, em seguida, selecione Partilhar com Nearby).</translation> <translation id="1316136264406804862">A pesquisar...</translation> <translation id="1316495628809031177">A sincronização está em pausa.</translation> <translation id="1317637799698924700">A estação de ancoragem vai funcionar no modo compatível com USB tipo C.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">AC comprometida</translation> <translation id="2182058453334755893">Copiado para a área de transferência.</translation> <translation id="2184515124301515068">Permitir que o Chrome escolha quando os sites podem reproduzir som (recomendado)</translation> -<translation id="2187243482123994665">Presença do utilizador</translation> <translation id="2187675480456493911">Sincronizada com outros dispositivos na sua conta. As definições modificadas por outros utilizadores não serão sincronizadas. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Erro na importação do certificado do servidor</translation> <translation id="2187906491731510095">Extensões atualizadas.</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">E&xportar...</translation> <translation id="4107048419833779140">Identificar e ejetar dispositivos de armazenamento</translation> <translation id="4109135793348361820">Mover a janela para <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Personalize o tamanho e o estilo das legendas para apps que suportam esta definição.</translation> <translation id="4110490973560452005">Transferência concluída: <ph name="FILE_NAME" />. Prima Shift+F6 para aceder à área da barra de transferências.</translation> <translation id="4110686435123617899">Selecionar o álbum <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Navegar na Web no Modo de alto contraste</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">Prima sem soltar a tecla do iniciador para alterar o comportamento das teclas da linha superior.</translation> <translation id="4400963414856942668">Pode clicar na estrela para adicionar um separador aos marcadores</translation> <translation id="4403775189117163360">Escolher uma pasta diferente</translation> -<translation id="440391631796167175">Não foram encontradas palavras-passe fracas.</translation> <translation id="4404136731284211429">Procurar novamente</translation> <translation id="4404843640767531781">A app <ph name="APP_NAME" /> foi bloqueada pelo teu Pai ou Mãe. Solicita autorização ao teu Pai ou Mãe para utilizares esta app.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4468,8 +4463,6 @@ <translation id="6242852299490624841">Focar este separador</translation> <translation id="6243280677745499710">Definida atualmente</translation> <translation id="6243774244933267674">Servidor indisponível</translation> -<translation id="6244185221716469155">As palavras-passe fracas são fáceis de adivinhar. Certifique-se de que cria palavras-passe fortes. - <ph name="BEGIN_LINK" />Veja mais sugestões de segurança.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importar ficheiro ONC</translation> <translation id="6246790815526961700">Carregar a partir do dispositivo</translation> <translation id="6247620186971210352">Não foram encontradas aplicações.</translation> @@ -6218,6 +6211,7 @@ <translation id="8281886186245836920">Ignorar</translation> <translation id="8283475148136688298">O código de autenticação foi rejeitado ao ligar a "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">todos os sites de <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Legendas</translation> <translation id="8286036467436129157">Iniciar Sessão</translation> <translation id="8286963743045814739">Pode navegar em privado com uma janela de navegação anónima</translation> <translation id="8287902281644548111">Pesquisar por chamada da API/URL</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index 3d864af5..09206ac 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Eroare privind extensiile</translation> <translation id="1246158006305844142">Aplicațiile și setările se vor sincroniza pe toate dispozitivele cu sistemul de operare Chrome pe care te-ai conectat folosind contul Google. Pentru opțiunile de sincronizare a browserului, accesează <ph name="LINK_BEGIN" />Setările Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Elimini sugestia din clipboard?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> a fost blocat deoarece este învechit</translation> <translation id="1251366534849411931">Se așteaptă o acoladă de deschidere: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Astfel, se vor șterge <ph name="TOTAL_USAGE" /> din datele stocate de site-uri și de aplicațiile instalate</translation> <translation id="125220115284141797">Prestabilită</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN Android</translation> <translation id="131461803491198646">Rețeaua de domiciliu, nu de roaming</translation> <translation id="1315056510003830387">Nu au permisiunea de a folosi Flash</translation> -<translation id="1315144594965013365">Asigură-te că ambele dispozitive sunt deblocate, apropiate unul de celălalt și au activată conexiunea Bluetooth. Dacă trimiți fișiere unui Chromebook, asigură-te că are funcția Nearby Share deschisă (deschide zona de stare selectând ora, apoi selectează Nearby Share).</translation> <translation id="1316136264406804862">Se caută...</translation> <translation id="1316495628809031177">Sincronizarea este întreruptă</translation> <translation id="1317637799698924700">Stația de andocare va funcționa în modul compatibil cu USB Type-C.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Compromitere CA</translation> <translation id="2182058453334755893">Copiat în clipboard</translation> <translation id="2184515124301515068">Permite Chrome să aleagă când site-urile pot reda sunet (recomandat)</translation> -<translation id="2187243482123994665">Prezența utilizatorului</translation> <translation id="2187675480456493911">Sincronizată cu alte dispozitive din contul tău. Setările modificate de alți utilizatori nu vor fi sincronizate. <ph name="LINK_BEGIN" />Află mai multe<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Eroare de import a certificatului serverului</translation> <translation id="2187906491731510095">Extensiile au fost actualizate</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">E&xportă...</translation> <translation id="4107048419833779140">Identifică și elimină dispozitivele de stocare</translation> <translation id="4109135793348361820">Mutați fereastra la <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Personalizează dimensiunea și stilul subtitrărilor pentru aplicațiile care acceptă această setare</translation> <translation id="4110490973560452005">Descărcare finalizată: <ph name="FILE_NAME" />. Apasă Shift+F6 ca să revii la zona barei de descărcări.</translation> <translation id="4110686435123617899">Selectează albumul <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Navighează pe web în modul Contrast ridicat</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Ține apăsată tasta Lansator pentru a schimba comportamentul tastelor de pe rândul de sus</translation> <translation id="4400963414856942668">Poți da clic pe pictograma stea pentru a marca o filă</translation> <translation id="4403775189117163360">Alege alt dosar</translation> -<translation id="440391631796167175">Nu s-au găsit parole slabe</translation> <translation id="4404136731284211429">Verifică din nou</translation> <translation id="4404843640767531781">Aplicația <ph name="APP_NAME" /> a fost blocată de părintele tău. Solicită părintelui permisiunea de a folosi această aplicație.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">Focalizează această filă</translation> <translation id="6243280677745499710">Setată în prezent</translation> <translation id="6243774244933267674">Server indisponibil</translation> -<translation id="6244185221716469155">Parolele slabe sunt ușor de ghicit. Creează parole puternice. - <ph name="BEGIN_LINK" />Vezi mai multe sfaturi de securitate.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importă fișierul ONC</translation> <translation id="6246790815526961700">Încarcă de pe dispozitiv</translation> <translation id="6247620186971210352">Nu s-au găsit aplicații</translation> @@ -6208,6 +6201,7 @@ <translation id="8281886186245836920">Omite</translation> <translation id="8283475148136688298">Codul de autentificare a fost respins în timpul conectării la „<ph name="DEVICE_NAME" />”.</translation> <translation id="8284279544186306258">toate site-urile <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Subtitrări</translation> <translation id="8286036467436129157">Conectați-vă</translation> <translation id="8286963743045814739">Poți naviga privat folosind o fereastră incognito</translation> <translation id="8287902281644548111">Caută după apelarea API-ului/adresa URL</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index e5da0da..5dbb4b0 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Ошибка расширения</translation> <translation id="1246158006305844142">Ваши приложения и настройки синхронизируются на всех устройствах Chrome OS, на которых вы вошли в аккаунт Google. Изменить параметры синхронизации браузера можно в <ph name="LINK_BEGIN" />настройках Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Удалить подсказку из буфера обмена?</translation> -<translation id="1249643471736608405">Плагин <ph name="PLUGIN_NAME" /> заблокирован, так как он больше не поддерживается.</translation> <translation id="1251366534849411931">Отсутствует ожидаемая открывающая фигурная скобка: <ph name="ERROR_LINE" />.</translation> <translation id="1251480783646955802">Будут удалены сохраненные данные сайтов и установленных с них приложений (<ph name="TOTAL_USAGE" />).</translation> <translation id="125220115284141797">По умолчанию</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Домашняя сеть, без роуминга</translation> <translation id="1315056510003830387">Запретить сайтам использовать Flash</translation> -<translation id="1315144594965013365">Оба устройства должны быть разблокированы и находиться рядом, также на них должна быть включена технология Bluetooth. Если вы делитесь файлами и ссылками с устройством Chromebook, убедитесь, что на нем включена функция "Обмен с окружением" (откройте панель состояния, нажав на часы, и выберите "Обмен с окружением").</translation> <translation id="1316136264406804862">Поиск...</translation> <translation id="1316495628809031177">Синхронизация приостановлена.</translation> <translation id="1317637799698924700">Док-станция будет работать в режиме совместимости с USB Type-C.</translation> @@ -1036,7 +1034,6 @@ <translation id="2178614541317717477">Скомпрометированный ЦС</translation> <translation id="2182058453334755893">Скопировано в буфер обмена.</translation> <translation id="2184515124301515068">Разрешить браузеру определять, на каких сайтах можно воспроизводить звук (рекомендуется)</translation> -<translation id="2187243482123994665">Присутствие пользователя</translation> <translation id="2187675480456493911">Синхронизировано с другими устройствами в вашем аккаунте. Настройки, измененные другими пользователями, не будут синхронизироваться. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Ошибка при импорте сертификата сервера</translation> <translation id="2187906491731510095">Расширения обновлены</translation> @@ -2703,7 +2700,6 @@ <translation id="4104163789986725820">Э&кспорт...</translation> <translation id="4107048419833779140">Идентификация и извлечение запоминающих устройств</translation> <translation id="4109135793348361820">Перенести окно на рабочий стол пользователя <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Функция позволяет настроить стиль и размер субтитров для приложений, поддерживающих эту настройку</translation> <translation id="4110490973560452005">Скачивание завершено: <ph name="FILE_NAME" />. Чтобы перейти к панели загрузок, нажмите Shift + F6.</translation> <translation id="4110686435123617899">Выбрать альбом "<ph name="TITLE" />" с описанием "<ph name="DESC" />"</translation> <translation id="4110895898888439383">Просматривайте веб-страницы в режиме высокой контрастности.</translation> @@ -2916,7 +2912,6 @@ <translation id="4400632832271803360">Чтобы сменить функции клавиш верхнего ряда, удерживайте клавишу Launcher</translation> <translation id="4400963414856942668">Чтобы добавить страницу в закладки, нажмите на значок звездочки.</translation> <translation id="4403775189117163360">Выбрать другую папку</translation> -<translation id="440391631796167175">Простых паролей не найдено</translation> <translation id="4404136731284211429">Сканировать</translation> <translation id="4404843640767531781">Чтобы пользоваться приложением "<ph name="APP_NAME" />", требуется разрешение родителя.</translation> <translation id="4405117686468554883">*.JPEG, *.JPG, *.PNG</translation> @@ -4457,8 +4452,6 @@ <translation id="6242852299490624841">Переключиться на эту вкладку</translation> <translation id="6243280677745499710">Установлено как обои</translation> <translation id="6243774244933267674">Сервер недоступен</translation> -<translation id="6244185221716469155">Простые пароли легко подобрать. Устанавливайте надежные пароли. - <ph name="BEGIN_LINK" />Получить больше советов по безопасности<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Импортировать файл ONC</translation> <translation id="6246790815526961700">Загрузить с устройства</translation> <translation id="6247620186971210352">Приложения не найдены.</translation> @@ -6205,6 +6198,7 @@ <translation id="8281886186245836920">Пропустить</translation> <translation id="8283475148136688298">При подключении к "<ph name="DEVICE_NAME" />" код аутентификации был отклонен.</translation> <translation id="8284279544186306258">все сайты <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Титры</translation> <translation id="8286036467436129157">Вход</translation> <translation id="8286963743045814739">В режиме инкогнито можно просматривать сайты анонимно</translation> <translation id="8287902281644548111">Поиск по URL или запросу к API</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index edbacf7f..18cdf0e0 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">දිගු දෝෂය</translation> <translation id="1246158006305844142">ඔබේ යෙදුම් සහ සැකසීම් ඔබ ඔබේ Google ගිණුම මඟින් පුරනය වී ඇති සියලුම Chrome OS උපාංග අතරින් සමමුහූර්ත වෙයි. බ්රවුසර සමමුහූර්ත විකල්ප සඳහා,<ph name="LINK_BEGIN" />Chrome සැකසීම්<ph name="LINK_END" /> වෙත යන්න.</translation> <translation id="1246905108078336582">පසුරු පුවරුවෙන් යෝජනාව ඉවත් කරන්නේද?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> අත් හැර ඇති බැවින් අවහිර කරන ලදි</translation> <translation id="1251366534849411931">අපේක්ෂිත විවෘත රැළි කඹය: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">මෙය වෙබ් අඩවිවලින් සහ ස්ථාපිත යෙදුම්වලින් ගබඩා කරනු ලැබූ දත්ත <ph name="TOTAL_USAGE" /> ක් හිස් කරයි</translation> <translation id="125220115284141797">පෙරනිමි</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">නිවෙස් ජාලය, සංක්රමණයේ නොවේ</translation> <translation id="1315056510003830387">සැණෙළිය භාවිත කිරීමට ඉඩ නොදේ</translation> -<translation id="1315144594965013365">උපාංග දෙකම අගුලු හැර, එකිනෙකට ළංව සහ බ්ලූටූත් ක්රියාත්මක කර ඇති බව සහතික කර ගන්න. ඔබ Chromebook එකක් සමග බෙදා ගන්නේ නම්, එය ළඟ බෙදා ගැනීම ක්රියාත්මක කර ඇති බවට සහතික කර ගන්න (වේලාව තේරීමෙන් තත්ත්ව ප්රදේශය විවෘත කරන්න, ඉන්පසු ළඟ බෙදා ගැනීම තෝරන්න).</translation> <translation id="1316136264406804862">සොයමින්...</translation> <translation id="1316495628809031177">සමමුහුර්ත කිරීම විරාමය කරන ලදී</translation> <translation id="1317637799698924700">ඔබේ ඩොක් කිරීමේ ස්ථානය USB Type-C හට ගැළපෙන ප්රකාරයේ ක්රියා කරයි.</translation> @@ -1034,7 +1032,6 @@ <translation id="2178614541317717477">CA සම්මුතිය</translation> <translation id="2182058453334755893">ඔබේ පසුරු පුවරුවට පිටපත් කළා</translation> <translation id="2184515124301515068">අඩවි හට හඬ වාදනය කළ හැකි වේලාව තේරීමට Chrome හට ඉඩ දෙන්න (නිර්දේශිත)</translation> -<translation id="2187243482123994665">පරිශීලකයාගේ සිටීම</translation> <translation id="2187675480456493911">ඔබේ ගිණුම මත අනෙකුත් උපාංග සමඟ සමමුහූර්ත කෙරේ. අනෙකුත් පරිශීලකයින් විසින් වෙනස් කරන ලද සැකසීම් සමමුහූර්ත නොකරේ. <ph name="LINK_BEGIN" />තවත් දැන ගන්න<ph name="LINK_END" /></translation> <translation id="2187895286714876935">සේවාදායක සහතික ආනයන දෝශය</translation> <translation id="2187906491731510095">දිගු යාවත්කාලීනයි</translation> @@ -2703,7 +2700,6 @@ <translation id="4104163789986725820">අපනයන (&x)...</translation> <translation id="4107048419833779140">ආචයන උපාංග හඳුනා ගෙන බැහැර කරන්න</translation> <translation id="4109135793348361820">කවුළුව <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) වෙත ගෙනයන්න</translation> -<translation id="411031910327788420">මෙම සැකසීමට සහාය දක්වන යෙදුම් සඳහා සිරස්තල තරම සහ මෝස්තරය අභිරුචිකරණය කරන්න</translation> <translation id="4110490973560452005">බාගැනීම සම්පූර්ණයි: <ph name="FILE_NAME" />. බාගැනීම් තීරු ප්රදේශයට මාරු වීමට Shift+F6 ඔබන්න.</translation> <translation id="4110686435123617899">ඇල්බමය තෝරන්න <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">ඉහළ අසමානතා ප්රකාරයෙන් වෙබය බ්රවුස් කරන්න</translation> @@ -2916,7 +2912,6 @@ <translation id="4400632832271803360">ඉහළ පේළියේ යතුරු හැසිරීම මාරු කිරීමට දියත්කරණ යතුර අල්ලාගෙන සිටින්න</translation> <translation id="4400963414856942668">ඔබට පටිත්තක් පිටුසන් කිරීමට තරුව ක්ලික් කළ හැක</translation> <translation id="4403775189117163360">වෙනත් ෆෝල්ඩරයක් තෝරන්න</translation> -<translation id="440391631796167175">දුර්වල මුරපද හමු නොවිය</translation> <translation id="4404136731284211429">නැවත ස්කෑන් කරන්න</translation> <translation id="4404843640767531781">ඔබේ මාපිය <ph name="APP_NAME" /> අවහිර කර ඇත. මෙම යෙදුම භාවිත කිරීමට ඔබේ මාපියවරුන්ගෙන් අවසර ඉල්ලන්න.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4458,8 +4453,6 @@ <translation id="6242852299490624841">මෙම පටිත්තට අවධානය යොමු කරන්න</translation> <translation id="6243280677745499710">දැනට සකසා ඇත</translation> <translation id="6243774244933267674">සර්වරය නොමැත</translation> -<translation id="6244185221716469155">දුර්වල මුරපද අනුමානය කිරීමට පහසුයි. ඔබ ප්රබල මුරපද තනන බව සහතික කර ගන්න. - <ph name="BEGIN_LINK" />තවත් ආරක්ෂක ඉඟි බලන්න.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC ගොනුව ආයාත කරන්න</translation> <translation id="6246790815526961700">උපාංගයෙන් යාවත්කාලීන කිරීම</translation> <translation id="6247620186971210352">යෙදුම් හමු නොවීය</translation> @@ -6203,6 +6196,7 @@ <translation id="8281886186245836920">මඟහරින්න</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" හා සම්බන්ධ වන අතරතුර සත්යාපන කේතය ප්රතික්ෂේප කෙරිණ.</translation> <translation id="8284279544186306258">සියලු <ph name="WEBSITE_1" /> අඩවි</translation> +<translation id="8284326494547611709">සිරස්තල</translation> <translation id="8286036467436129157">පුරන්න</translation> <translation id="8286963743045814739">ඔබට අප්රසිද්ධ කවුළුවක් භාවිතයෙන් රහසිගතව බ්රවුස් කළ හැක</translation> <translation id="8287902281644548111">API ඇමතුමට/URL එකට අනුව සොයන්න</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index dc11ede..c5298181 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Chyba rozšírenia</translation> <translation id="1246158006305844142">Vaše aplikácie a nastavenia budú synchronizované vo všetkých zariadeniach Chrome OS, v ktorých ste sa prihlásili pomocou svojho účtu Google. Možnosti synchronizácie prehliadača nájdete v <ph name="LINK_BEGIN" />nastaveniach Chromu<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Chcete odstrániť návrh zo schránky?</translation> -<translation id="1249643471736608405">Doplnok <ph name="PLUGIN_NAME" /> bol zablokovaný, pretože jeho podpora bola ukončená</translation> <translation id="1251366534849411931">Očakávaná úvodná zložená zátvorka: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Týmto vymažete <ph name="TOTAL_USAGE" /> dát uložených webmi a nainštalovanými aplikáciami.</translation> <translation id="125220115284141797">Predvolené</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Domáca sieť, bez roamingu</translation> <translation id="1315056510003830387">Nemôže používať obsah Flash</translation> -<translation id="1315144594965013365">Obe zariadenia musia byť odomknuté, blízko seba a mať zapnuté rozhranie Bluetooth. Ak zdieľate s Chromebookom, uistite sa, či má zapnuté zdieľanie nablízku (otvorte stavovú oblasť výberom času a potom vyberte Zdieľanie nablízku).</translation> <translation id="1316136264406804862">Prebieha vyhľadávanie...</translation> <translation id="1316495628809031177">Synchronizácia je pozastavená</translation> <translation id="1317637799698924700">Dok bude fungovať v režime kompatibilnom s rozhraním USB typu C.</translation> @@ -872,6 +870,7 @@ <translation id="1976307821760494606">Doména <ph name="DOMAIN" /> deaktivovala ladenie ADB. Vaše zariadenie <ph name="DEVICE_TYPE" /> sa preto o 24 hodín resetuje. Zálohujte si všetky súbory, ktoré si chcete ponechať.</translation> <translation id="1977965994116744507">Ak chcete odomknúť zariadenie <ph name="DEVICE_TYPE" />, priblížte k nemu svoj telefón.</translation> <translation id="1978006917103730774">Budúce aktualizácie softvéru a zabezpečenia sa budú inštalovať automaticky.</translation> +<translation id="1978057560491495741">Odstránenie adresy</translation> <translation id="1979095679518582070">Vypnutím tejto funkcie neovplyvníte schopnosť tohto zariadenia odosielať informácie potrebné na fungovanie základných služieb, ako sú aktualizácie systému a zabezpečenie.</translation> <translation id="1979280758666859181">Chystáte sa zmeniť na kanál so staršou verziou prehliadača <ph name="PRODUCT_NAME" />. Zmena kanála sa prejaví, keď sa verzia kanála bude zhodovať s verziou, ktorá je momentálne nainštalovaná v zariadení.</translation> <translation id="197989455406964291">KDC nepodporuje typ šifrovania</translation> @@ -1037,7 +1036,6 @@ <translation id="2178614541317717477">Ohrozenie zabezpečenia CA</translation> <translation id="2182058453334755893">Skopírované do schránky</translation> <translation id="2184515124301515068">Povoľte Chromu vyberať, kedy môžu weby prehrať zvuk (odporúčané)</translation> -<translation id="2187243482123994665">Prítomnosť používateľa</translation> <translation id="2187675480456493911">Synchronizované s ostatnými zariadeniami vo vašom účte. Nastavenia upravené ostatnými používateľmi nebudú synchronizované. <ph name="LINK_BEGIN" />Ďalšie informácie<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Chyba importovania certifikátu servera</translation> <translation id="2187906491731510095">Rozšírenia boli aktualizované</translation> @@ -1074,6 +1072,7 @@ <translation id="2224444042887712269">Nastavenie patrí používateľovi <ph name="OWNER_EMAIL" />.</translation> <translation id="2224551243087462610">Upraviť názov priečinka</translation> <translation id="2225864335125757863">Ak chcete zabezpečiť svoj účet, okamžite zmeňte tieto heslá:</translation> +<translation id="2226204716217107988">Chcete prepnúť na iný profil?</translation> <translation id="2226449515541314767">Týmto stránkam bola zablokovaná úplná kontrola nad zariadeniami MIDI.</translation> <translation id="2226907662744526012">Automaticky odomknúť po zadaní kódu PIN</translation> <translation id="222704500187107962">Táto výnimka bude automaticky odstránená po ukončení aktuálnej relácie anonymného režimu</translation> @@ -1143,6 +1142,7 @@ <translation id="2307462900900812319">Konfigurovať sieť</translation> <translation id="230927227160767054">Táto stránka chce nainštalovať obslužný nástroj služby.</translation> <translation id="2309620859903500144">Tento web má zablokovaný prístup k senzorom pohybu alebo svetla.</translation> +<translation id="2312219318583366810">Webová adresa stránky</translation> <translation id="2314165183524574721">Aktuálne nastavenie viditeľnosti je Skryté</translation> <translation id="2314774579020744484">Jazyk použitý pri preklade stránok</translation> <translation id="2315414688463285945">Pri konfigurovaní súborov systému Linux sa vyskytla chyba. Skúste to znova.</translation> @@ -2345,6 +2345,7 @@ <translation id="3713047097299026954">Tento bezpečnostný kľúč nemá žiadne prihlasovacie údaje</translation> <translation id="3714195043138862580">Toto zariadenie s ukážkou bolo uvedené do stavu zrušenia prístupu.</translation> <translation id="3714633008798122362">webový kalendár</translation> +<translation id="3715954932774762075">Aplikácie a weby dostupné vo viacerých jazykoch použijú prvý podporovaný jazyk z tohto zoznamu. Tieto predvoľby sú synchronizované s nastaveniami vášho prehliadača. <ph name="BEGIN_LINK_LEARN_MORE" />Ďalšie informácie<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">Domovská stránka</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">Vy a Google</translation> @@ -2505,6 +2506,7 @@ <translation id="3882165008614329320">Existujúce video z fotoaparátu alebo súboru</translation> <translation id="3886446263141354045">Vaša žiadosť o prístup na tento web sa odoslala správcovi <ph name="NAME" /></translation> <translation id="3888550877729210209">Písanie poznámok v aplikácii <ph name="LOCK_SCREEN_APP_NAME" /></translation> +<translation id="3890064827463908288">Zapnite synchronizáciu Chromu, aby ste mohli používať Synchronizáciu Wi-Fi</translation> <translation id="3892414795099177503">Pridať OpenVPN / L2TP...</translation> <translation id="3893536212201235195">Čítať a zmeniť nastavenia zjednodušenia ovládania</translation> <translation id="3893630138897523026">ChromeVox (hlasová spätná väzba)</translation> @@ -2704,7 +2706,6 @@ <translation id="4104163789986725820">E&xportovať...</translation> <translation id="4107048419833779140">Identifikovať a vysunúť zariadenia s úložiskom</translation> <translation id="4109135793348361820">Presunúť okno k používateľovi <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Prispôsobenie veľkosti a štýlu titulkov pre aplikácie, ktoré toto nastavenie podporujú</translation> <translation id="4110490973560452005">Dokončilo sa sťahovanie súboru: <ph name="FILE_NAME" />. Stláčaním klávesov Shift+F6 prejdite do oblasti panela so stiahnutými súbormi.</translation> <translation id="4110686435123617899">Vyberte album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Prehliadajte web v režime vysokého kontrastu</translation> @@ -2917,7 +2918,6 @@ <translation id="4400632832271803360">Pridržaním klávesa spúšťača prepnete správanie klávesov v hornom riadku</translation> <translation id="4400963414856942668">Kartu uložíte ako záložku kliknutím na hviezdičku</translation> <translation id="4403775189117163360">Vybrať iný priečinok</translation> -<translation id="440391631796167175">Neboli nájdené žiadne slabé heslá</translation> <translation id="4404136731284211429">Znova skontrolovať</translation> <translation id="4404843640767531781">Aplikáciu <ph name="APP_NAME" /> zablokoval tvoj rodič. Ak chceš používať túto aplikáciu, požiadaj rodiča o povolenie.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -3778,6 +3778,7 @@ <translation id="5449588825071916739">Všetky karty uložiť ako záložky</translation> <translation id="5449716055534515760">Zavrieť o&kno</translation> <translation id="5452974209916053028">Aktuálna relácia anonymného režimu: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />, <ph name="RECENT_PERMISSIONS_CHANGE_1" />, <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">Bublinu s prepisom ste presunuli <ph name="POSITION_ON_SCREEN_FROM_LEFT" /> % naprieč a <ph name="POSITION_ON_SCREEN_FROM_TOP" /> % nadol</translation> <translation id="5454166040603940656">s poskytovateľom <ph name="PROVIDER" /></translation> <translation id="5457113250005438886">Neplatné</translation> <translation id="5457459357461771897">Čítať a odstraňovať fotky, hudbu a ďalšie médiá z tohto počítača</translation> @@ -3921,6 +3922,7 @@ <translation id="5602765853043467355">Vymazať záložky, históriu, heslá a ďalší obsah z tohto zariadenia</translation> <translation id="5605623530403479164">Iné vyhľadávače</translation> <translation id="5605758115928394442">Do vášho telefónu bolo odoslané upozornenie, ktorým overíte, že ste to vy.</translation> +<translation id="560834977503641186">Synchronizácia Wi-Fi, ďalšie informácie</translation> <translation id="5608580678041221894">Oblasť orezania môžete upraviť alebo presunúť klepnutím na nasledujúce klávesy</translation> <translation id="5609231933459083978">Aplikácia je pravdepodobne neplatná.</translation> <translation id="5610038042047936818">Prepnúť na režimu fotoaparátu</translation> @@ -4111,6 +4113,7 @@ <translation id="5841270259333717135">Konfigurácia ethernetu</translation> <translation id="5842497610951477805">Povolenie rozhrania Bluetooth</translation> <translation id="5843706793424741864">Fahrenheit</translation> +<translation id="584451707753263735">Živý prepis je viditeľný, označenie prepnete klávesom F6</translation> <translation id="5844574845205796324">Navrhovať nový obsah na prieskum</translation> <translation id="5846200638699387931">Chyba syntaxe vzťahu: <ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">Inštalácia aktualizácií a aplikácií. Pokračovaním vyjadrujete súhlas s tým, že toto zariadenie môže tiež automaticky sťahovať a inštalovať aktualizácie a aplikácie od Googlu, operátora a výrobcu zariadenia a v prípade potreby pri tom môže používať mobilné dáta. Niektoré z týchto aplikácií môžu ponúkať nákupy v aplikácii.</translation> @@ -4458,8 +4461,6 @@ <translation id="6242852299490624841">Označiť túto kartu</translation> <translation id="6243280677745499710">Práve nastavená</translation> <translation id="6243774244933267674">Server je nedostupný</translation> -<translation id="6244185221716469155">Slabé heslá sa dajú ľahko uhádnuť. Vždy sa snažte vytvárať silné heslá. - <ph name="BEGIN_LINK" />Ďalšie tipy na zabezpečenie<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importovať súbor ONC</translation> <translation id="6246790815526961700">Nahrať zo zariadenia</translation> <translation id="6247620186971210352">Nenašli sa žiadne aplikácie</translation> @@ -5367,6 +5368,7 @@ <translation id="7340431621085453413">Stránka <ph name="FULLSCREEN_ORIGIN" /> sa teraz zobrazuje na celú obrazovku.</translation> <translation id="7340650977506865820">Web zdieľa vašu obrazovku</translation> <translation id="7341834142292923918">Požaduje prístup k tomuto webu</translation> +<translation id="7343372807593926528">Opíšte problém a až potom odošlite spätnú väzbu.</translation> <translation id="7345706641791090287">Potvrdenie hesla</translation> <translation id="7346909386216857016">Dobre</translation> <translation id="7347452120014970266">Týmto vymažete všetky dáta a súbory cookie uložené zdrojom <ph name="ORIGIN_NAME" /> a jeho nainštalovanými aplikáciami.</translation> @@ -5783,6 +5785,7 @@ <translation id="7819857487979277519">PSK (WPA alebo RSN)</translation> <translation id="7819992334107904369">Synchronizácia Chromu</translation> <translation id="782057141565633384">K&opírovať adresu videa</translation> +<translation id="7822187537422052256">Naozaj chcete odstrániť túto adresu?</translation> <translation id="7824864914877854148">Zálohovanie sa nepodarilo dokončiť pre chybu</translation> <translation id="7825666486843191125">Všetky kontakty vo vašom okolí, keď je obrazovka odomknutá</translation> <translation id="782590969421016895">Použiť aktuálne stránky</translation> @@ -6206,6 +6209,7 @@ <translation id="8281886186245836920">Preskočiť</translation> <translation id="8283475148136688298">Kód overenia totožnosti sa počas pripájania k zariadeniu <ph name="DEVICE_NAME" /> odmietol.</translation> <translation id="8284279544186306258">všetky weby <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Titulky</translation> <translation id="8286036467436129157">Prihlásenie</translation> <translation id="8286963743045814739">Prehliadať v súkromí môžete v okne inkognito</translation> <translation id="8287902281644548111">Hľadajte podľa volania rozhrania API alebo webovej adresy</translation> @@ -6307,6 +6311,7 @@ <translation id="8419098111404128271">Výsledky vyhľadávania pre výraz „<ph name="SEARCH_TEXT" />“</translation> <translation id="8419368276599091549">Vitajte v zariadení <ph name="DEVICE_TYPE" />!</translation> <translation id="8420308167132684745">Upraviť záznamy slovníka</translation> +<translation id="8421361468937925547">Živý prepis (iba v angličtine)</translation> <translation id="8422787418163030046">Chýba zásobník</translation> <translation id="8425213833346101688">Zmeniť</translation> <translation id="8425492902634685834">Pripnúť na panel úloh</translation> @@ -6335,6 +6340,7 @@ <translation id="8449036207308062757">Spravovať úložisko</translation> <translation id="8452135315243592079">Chýba SIM karta</translation> <translation id="8455026683977728932">Nepodarilo sa aktivovať vytváranie obrázkov pomocou nástroja ADB</translation> +<translation id="8456398879271637452">Živý prepis je viditeľný, označenie preneste klávesmi Ctrl + Späť alebo Ctrl + Ďalej</translation> <translation id="845702320058262034">Nedá sa pripojiť. Skontrolujte, či je v telefóne zapnuté rozhranie Bluetooth.</translation> <translation id="8457451314607652708">Import záložiek</translation> <translation id="8458627787104127436">Otvoriť všetky (<ph name="URL_COUNT" />) v novom okne</translation> @@ -6845,6 +6851,7 @@ <translation id="9027459031423301635">Otvoriť odkaz na novej &karte</translation> <translation id="9030515284705930323">Vaša organizácia nepovoľuje vo vašom účte Obchod Google Play. Ak chcete získať ďalšie informácie, kontaktujte svojho správcu.</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269">Doplnok <ph name="PLUGIN_NAME" /> už nie je podporovaný</translation> <translation id="9031549947500880805">Zálohovanie na Disk Google. Jednoducho kedykoľvek obnovte svoje údaje alebo prejdite na iné zariadenie. Záloha obsahuje dáta aplikácií.</translation> <translation id="9033765790910064284">Aj tak pokračovať</translation> <translation id="9033857511263905942">&Prilepiť</translation> @@ -6853,6 +6860,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{Zostáva posledný pokus.}few{Zostávajú # pokusy.}many{You have # attempts remaining.}other{Zostáva # pokusov.}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571">Aktualizovať heslo pre adresu <ph name="ORIGIN" />?</translation> +<translation id="9041049756004505730">Živý prepis je viditeľný, označenie prepnete klávesmi ⌘ + Option + šípka nahor alebo nadol</translation> <translation id="9041692268811217999">Prístup k miestnym súborom vo vašom počítači zakázal správca</translation> <translation id="904224458472510106">Táto operácia sa nedá vrátiť späť</translation> <translation id="9042893549633094279">Ochrana súkromia a zabezpečenie</translation> @@ -6891,6 +6899,7 @@ <translation id="9088446193279799727">Linux sa nepodarilo nakonfigurovať. Pripojte sa k internetu a skúste to znova.</translation> <translation id="9088917181875854783">Potvrďte, že tento prístupový kľúč sa zobrazuje na zariadení „<ph name="DEVICE_NAME" />“:</translation> <translation id="9089416786594320554">Metódy vstupu</translation> +<translation id="909108997331068008">Profil používateľa <ph name="EXISTING_USER" /> je už prihlásený do účtu <ph name="NEW_USER" /></translation> <translation id="9093429538970210897">Zálohovanie súborov sa odporúča v prípade, že inováciu nie je možné dokončiť. Keď spustíte inováciu, Linux (Beta) sa vypne. Pred pokračovaním uložte otvorené súbory.</translation> <translation id="9094033019050270033">Aktualizovať heslo</translation> <translation id="9094038138851891550">Neplatné používateľské meno</translation> @@ -7064,5 +7073,6 @@ <translation id="994289308992179865">Opa&kovať</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">Prebieha nadväzovanie zabezpečeného spojenia...</translation> +<translation id="99731366405731005">Zapnite <ph name="LINK1_BEGIN" />synchronizáciu Chromu<ph name="LINK1_END" />, aby ste mohli používať Synchronizáciu Wi-Fi. <ph name="LINK2_BEGIN" />Ďalšie informácie<ph name="LINK2_END" /></translation> <translation id="998747458861718449">P&reskúmať</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 609a2ad..9a79d06 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Napaka razširitve</translation> <translation id="1246158006305844142">Vaše aplikacije in nastavitve se bodo sinhronizirale v vseh napravah s sistemom Chrome OS, v katerih ste prijavljeni z računom Google. Če vas zanimajo možnosti sinhronizacije brskalnika, odprite <ph name="LINK_BEGIN" />Chromove nastavitve<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Ali želite odstraniti predlog iz odložišča?</translation> -<translation id="1249643471736608405">Vtičnik <ph name="PLUGIN_NAME" /> je blokiran, ker je zastarel</translation> <translation id="1251366534849411931">Pričakovan zaviti oklepaj: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">S tem boste izbrisali <ph name="TOTAL_USAGE" /> podatkov, ki so jih shranila spletna mesta in nameščene aplikacije.</translation> <translation id="125220115284141797">Privzeto</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Domače omrežje, brez gostovanja</translation> <translation id="1315056510003830387">Ni dovoljena uporaba Flasha</translation> -<translation id="1315144594965013365">Prepričajte se, da sta obe napravi odklenjeni, blizu druga druge ter imata vklopljen Bluetooth. Če delite s Chromebookom, mora biti v njem vklopljena funkcija Deljenje v bližini (odprite območje stanja tako, da izberete uro, nato izberite Deljenje v bližini).</translation> <translation id="1316136264406804862">Iskanje ...</translation> <translation id="1316495628809031177">Sinhronizacija je zaustavljena</translation> <translation id="1317637799698924700">Priklopna postaja deluje v načinu, združljivem z USB Type-C.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">Overitelj potrdil ni več varen</translation> <translation id="2182058453334755893">Kopirano v odložišče</translation> <translation id="2184515124301515068">Naj Chrome izbere, kdaj lahko spletna mesta predvajajo zvok (priporočeno)</translation> -<translation id="2187243482123994665">Prisotnost uporabnika</translation> <translation id="2187675480456493911">Sinhronizirano z drugimi napravami v računu. Nastavitve, ki jih spremenijo drugi uporabniki, ne bodo sinhronizirane. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Napaka pri uvozu strežniškega potrdila</translation> <translation id="2187906491731510095">Razširitve posodobljene</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">I&zvozi ...</translation> <translation id="4107048419833779140">Prepoznavanje in izmet naprav za shranjevanje</translation> <translation id="4109135793348361820">Premakni okno uporabniku <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Prilagajanje velikosti in sloga podnapisov za aplikacije, ki podpirajo to nastavitev</translation> <translation id="4110490973560452005">Prenos je končan: <ph name="FILE_NAME" />. Pritisnite Shift + F6, če želite krožiti do območja vrstice s prenosi.</translation> <translation id="4110686435123617899">Izberite album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Brskajte po spletu v visokokontrastnem načinu</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">Če želite spremeniti delovanje tipk v zgornji vrstici, pridržite tipko za zaganjalnik</translation> <translation id="4400963414856942668">Če želite zavihek dodati med zaznamke, lahko kliknete zvezdico</translation> <translation id="4403775189117163360">Izberi drugo mapo</translation> -<translation id="440391631796167175">Najdeno ni bilo nobeno šibko geslo.</translation> <translation id="4404136731284211429">Znova išči</translation> <translation id="4404843640767531781">Aplikacijo <ph name="APP_NAME" /> je blokiral starš. Če želiš uporabljati to aplikacijo, prosi starša za dovoljenje.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4469,8 +4464,6 @@ <translation id="6242852299490624841">Izberi ta zavihek</translation> <translation id="6243280677745499710">Trenutno nastavljeno</translation> <translation id="6243774244933267674">Strežnik ni na voljo</translation> -<translation id="6244185221716469155">Šibka gesla je preprosto ugotoviti. Ustvarite zapletena gesla. - <ph name="BEGIN_LINK" />Oglejte si več varnostnih nasvetov.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Uvoz datoteke ONC</translation> <translation id="6246790815526961700">Nalaganje iz naprave</translation> <translation id="6247620186971210352">Ni aplikacij</translation> @@ -6220,6 +6213,7 @@ <translation id="8281886186245836920">Preskoči</translation> <translation id="8283475148136688298">Med povezovanjem z napravo »<ph name="DEVICE_NAME" />« je bilo preklicana koda za preverjanje pristnosti.</translation> <translation id="8284279544186306258">vsa spletna mesta <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Napisi</translation> <translation id="8286036467436129157">Prijava</translation> <translation id="8286963743045814739">Z oknom brez beleženja zgodovine lahko zasebno brskate</translation> <translation id="8287902281644548111">Iskanje po klicu API-jul/URL-ju</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index 34ee1125..a1cd00b 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Shtesa e paketës</translation> <translation id="1246158006305844142">Aplikacionet dhe cilësimet e tua do të sinkronizohen nëpër të gjitha pajisjet me sistem operativ Chrome ku je identifikuar me llogarinë tënde të Google. Për opsionet e sinkronizimit të shfletuesit, shko te<ph name="LINK_BEGIN" />cilësimet e Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Të hiqet sugjerimi nga kujtesa e fragmenteve?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> u bllokua sepse është i vjetruar</translation> <translation id="1251366534849411931">Kllapë gjarpërushe hapëse e pritshme: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Kjo do të pastrojë <ph name="TOTAL_USAGE" /> të dhëna të ruajtura nga sajtet dhe aplikacionet e instaluara</translation> <translation id="125220115284141797">Parazgjedhja</translation> @@ -278,7 +277,6 @@ <translation id="1313705515580255288">Faqeshënuesit e tu, historiku dhe cilësime të tjera do të sinkronizohen në llogarinë tënde të Google.</translation> <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Rrjeti vendor, jo në roaming</translation> -<translation id="1315144594965013365">Sigurohu që të dyja pajisjet të jenë të shkyçura, pranë njëra-tjetrës, si dhe të kenë të aktivizuar Bluetooth-in. Nëse po ndan me një Chromebook, sigurohu që të ketë "Ndarjen në afërsi" të aktivizuar (hap zonën e statusit duke zgjedhur orën dhe më pas zgjidh "Ndarjen në afërsi").</translation> <translation id="1316136264406804862">Po kërkon...</translation> <translation id="1316495628809031177">Sinkronizimi është vendosur në pauzë</translation> <translation id="1317637799698924700">Stacioni yt do të funksionojë në modalitetin e pajtueshëm me USB të tipit C.</translation> @@ -1026,7 +1024,6 @@ <translation id="2178614541317717477">Komprometim i autoritetit të certifikimit</translation> <translation id="2182058453334755893">Kopjuar te kujtesa e fragmenteve</translation> <translation id="2184515124301515068">Lejo që Chrome të zgjedhë se cilat sajte mund të luajnë tinguj (rekomandohet)</translation> -<translation id="2187243482123994665">Prania e përdoruesit</translation> <translation id="2187675480456493911">Sinkronizuar me pajisjet e tjera në llogarinë tënde. Cilësimet e modifikuara nga përdoruesit e tjerë nuk do të sinkronizohen. <ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Gabim në importimin e certifikatës së serverit</translation> <translation id="2187906491731510095">Shtesat u përditësuan</translation> @@ -2684,7 +2681,6 @@ <translation id="4104163789986725820">E&ksporto...</translation> <translation id="4107048419833779140">Identifiko dhe nxirr pajisjet e hapësirës së ruajtjes</translation> <translation id="4109135793348361820">Lëvize dritaren te <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Personalizo madhësinë dhe stilin për aplikacionet që e mbështesin këtë cilësim.</translation> <translation id="4110490973560452005">Shkarkimi përfundoi: <ph name="FILE_NAME" />. Shtyp Shift+F6 për të kaluar në cikël në zonën e shiritit të shkarkimeve.</translation> <translation id="4110686435123617899">Zgjidh albumin <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Shfleto në ueb në modalitetin me kontrast të lartë</translation> @@ -4425,8 +4421,6 @@ <translation id="6242852299490624841">Fokuso këtë skedë</translation> <translation id="6243280677745499710">Caktuar aktualisht</translation> <translation id="6243774244933267674">Serveri është jashtë shërbimit</translation> -<translation id="6244185221716469155">Fjalëkalimet e dobëta mund të gjenden me lehtësi. Sigurohu që po krijon fjalëkalime të forta. - <ph name="BEGIN_LINK" />Shiko më shumë këshilla sigurie.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Importo skedarin ONC</translation> <translation id="6246790815526961700">Ngarko nga pajisja</translation> <translation id="6247620186971210352">Nuk u gjet asnjë aplikacion</translation> @@ -6153,6 +6147,7 @@ <translation id="8281886186245836920">Kapërceje</translation> <translation id="8283475148136688298">U refuzua kodi i vërtetimit gjatë lidhjes me "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">të gjitha faqet <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Titrat</translation> <translation id="8286036467436129157">Identifikohu</translation> <translation id="8286963743045814739">Mund të shfletosh në mënyrë private duke përdorur një dritare "të fshehtë"</translation> <translation id="8287902281644548111">Kërko sipas thirrjes së API-së/URL-së</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index 1a0f795..164c809c 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Greška dodatka</translation> <translation id="1246158006305844142">Aplikacije i podešavanja će se sinhronizovati na svim Chrome OS uređajima na kojima ste prijavljeni pomoću svog Google naloga. Opcije sinhronizacije pregledača pronađite u <ph name="LINK_BEGIN" />podešavanjima Chrome-a<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Želite li da uklonite predlog iz privremene memorije?</translation> -<translation id="1249643471736608405">Dodatna komponenta <ph name="PLUGIN_NAME" /> je blokirana jer je zastarela.</translation> <translation id="1251366534849411931">Nedostaje otvorena vitičasta zagrada: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Ovim brišete <ph name="TOTAL_USAGE" /> podataka koje čuvaju sajtovi i instalirane aplikacije</translation> <translation id="125220115284141797">Podrazumevane</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Matična mreža, nije u romingu</translation> <translation id="1315056510003830387">Nije im dozvoljeno da koriste Flash</translation> -<translation id="1315144594965013365">Uverite se da su oba uređaja otključana, blizu jedan drugom i da je uključen Bluetooth. Ako delite sa Chromebook-om, uverite se da mu je uključeno Deljenje u blizini (otvorite oblast statusa tako što ćete izabrati vreme, pa izaberite Deljenje u blizini).</translation> <translation id="1316136264406804862">Pretraživanje...</translation> <translation id="1316495628809031177">Sinhronizacija je pauzirana</translation> <translation id="1317637799698924700">Bazna stanica će raditi u režimu kompatibilnom sa USB-om tipa C.</translation> @@ -1035,7 +1033,6 @@ <translation id="2178614541317717477">CA je kompromitovan</translation> <translation id="2182058453334755893">Kopirano je u privremenu memoriju</translation> <translation id="2184515124301515068">Neka Chrome odabere kada sajtovi mogu da puste zvuk (preporučeno)</translation> -<translation id="2187243482123994665">Prisustvo korisnika</translation> <translation id="2187675480456493911">Sinhronizovano je sa ostalim uređajima na nalogu. Podešavanja koja menjaju drugi korisnici se ne sinhronizuju. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Greška pri uvozu serverskog sertifikata</translation> <translation id="2187906491731510095">Dodaci su ažurirani</translation> @@ -2707,7 +2704,6 @@ <translation id="4104163789986725820">I&zvezi...</translation> <translation id="4107048419833779140">identifikuje i izbacuje memorijske uređaje</translation> <translation id="4109135793348361820">Premesti prozor kod <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Prilagodite veličinu i stil titla za aplikacije koje podržavaju ovo podešavanje</translation> <translation id="4110490973560452005">Preuzimanje je dovršeno: <ph name="FILE_NAME" />. Pritisnite Shift + F6 da biste prešli na oblast trake sa preuzimanjima.</translation> <translation id="4110686435123617899">Izaberite album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Pregledajte veb u režimu visokog kontrasta</translation> @@ -2920,7 +2916,6 @@ <translation id="4400632832271803360">Zadržite taster za Pokretač da biste promenili ponašanje tastera u gornjem redu</translation> <translation id="4400963414856942668">Možete da obeležite stranicu klikom na karticu</translation> <translation id="4403775189117163360">Odaberite drugi direktorijum</translation> -<translation id="440391631796167175">Nije pronađena nijedna slaba lozinka</translation> <translation id="4404136731284211429">Skeniraj ponovo</translation> <translation id="4404843640767531781">Roditelj blokira aplikaciju <ph name="APP_NAME" />. Zatraži od roditelja dozvolu za korišćenje ove aplikacije.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4465,8 +4460,6 @@ <translation id="6242852299490624841">Stavi ovu karticu u fokus</translation> <translation id="6243280677745499710">Trenutno podešena</translation> <translation id="6243774244933267674">Server je nedostupan</translation> -<translation id="6244185221716469155">Slabe lozinke lako mogu da se pogode. Obavezno napravite jake lozinke. - <ph name="BEGIN_LINK" />Pogledajte još saveta za bezbednost.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Uvezi ONC datoteku</translation> <translation id="6246790815526961700">Otpremite sa uređaja</translation> <translation id="6247620186971210352">Nije pronađena nijedna aplikacija</translation> @@ -6216,6 +6209,7 @@ <translation id="8281886186245836920">Preskoči</translation> <translation id="8283475148136688298">Kôd potvrde autentičnosti je odbijen tokom povezivanja sa „<ph name="DEVICE_NAME" />“.</translation> <translation id="8284279544186306258">svi <ph name="WEBSITE_1" /> sajtovi</translation> +<translation id="8284326494547611709">Titl</translation> <translation id="8286036467436129157">Prijavi me</translation> <translation id="8286963743045814739">Možete da pregledate privatno u prozoru bez arhiviranja</translation> <translation id="8287902281644548111">Pretražite prema API pozivu/URL-u</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index 231d402..0bd6fef 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Грешка додатка</translation> <translation id="1246158006305844142">Апликације и подешавања ће се синхронизовати на свим Chrome OS уређајима на којима сте пријављени помоћу свог Google налога. Опције синхронизације прегледача пронађите у <ph name="LINK_BEGIN" />подешавањима Chrome-а<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Желите ли да уклоните предлог из привремене меморије?</translation> -<translation id="1249643471736608405">Додатна компонента <ph name="PLUGIN_NAME" /> је блокирана јер је застарела.</translation> <translation id="1251366534849411931">Недостаје отворена витичаста заграда: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Овим бришете <ph name="TOTAL_USAGE" /> података које чувају сајтови и инсталиране апликације</translation> <translation id="125220115284141797">Подразумеване</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Матична мрежа, није у ромингу</translation> <translation id="1315056510003830387">Није им дозвољено да користе Flash</translation> -<translation id="1315144594965013365">Уверите се да су оба уређаја откључана, близу један другом и да је укључен Bluetooth. Ако делите са Chromebook-ом, уверите се да му је укључено Дељење у близини (отворите област статуса тако што ћете изабрати време, па изаберите Дељење у близини).</translation> <translation id="1316136264406804862">Претраживање...</translation> <translation id="1316495628809031177">Синхронизација је паузирана</translation> <translation id="1317637799698924700">Базна станица ће радити у режиму компатибилном са USB-ом типа C.</translation> @@ -1035,7 +1033,6 @@ <translation id="2178614541317717477">CA је компромитован</translation> <translation id="2182058453334755893">Копирано је у привремену меморију</translation> <translation id="2184515124301515068">Нека Chrome одабере када сајтови могу да пусте звук (препоручено)</translation> -<translation id="2187243482123994665">Присуство корисника</translation> <translation id="2187675480456493911">Синхронизовано је са осталим уређајима на налогу. Подешавања која мењају други корисници се не синхронизују. <ph name="LINK_BEGIN" />Сазнајте више<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Грешка при увозу серверског сертификата</translation> <translation id="2187906491731510095">Додаци су ажурирани</translation> @@ -2707,7 +2704,6 @@ <translation id="4104163789986725820">И&звези...</translation> <translation id="4107048419833779140">идентификује и избацује меморијске уређаје</translation> <translation id="4109135793348361820">Премести прозор код <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Прилагодите величину и стил титла за апликације које подржавају ово подешавање</translation> <translation id="4110490973560452005">Преузимање је довршено: <ph name="FILE_NAME" />. Притисните Shift + F6 да бисте прешли на област траке са преузимањима.</translation> <translation id="4110686435123617899">Изаберите албум <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Прегледајте веб у режиму високог контраста</translation> @@ -2920,7 +2916,6 @@ <translation id="4400632832271803360">Задржите тастер за Покретач да бисте променили понашање тастера у горњем реду</translation> <translation id="4400963414856942668">Можете да обележите страницу кликом на картицу</translation> <translation id="4403775189117163360">Одаберите други директоријум</translation> -<translation id="440391631796167175">Није пронађена ниједна слаба лозинка</translation> <translation id="4404136731284211429">Скенирај поново</translation> <translation id="4404843640767531781">Родитељ блокира апликацију <ph name="APP_NAME" />. Затражи од родитеља дозволу за коришћење ове апликације.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4465,8 +4460,6 @@ <translation id="6242852299490624841">Стави ову картицу у фокус</translation> <translation id="6243280677745499710">Тренутно подешена</translation> <translation id="6243774244933267674">Сервер је недоступан</translation> -<translation id="6244185221716469155">Слабе лозинке лако могу да се погоде. Обавезно направите јаке лозинке. - <ph name="BEGIN_LINK" />Погледајте још савета за безбедност.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Увези ONC датотеку</translation> <translation id="6246790815526961700">Отпремите са уређаја</translation> <translation id="6247620186971210352">Није пронађена ниједна апликација</translation> @@ -6216,6 +6209,7 @@ <translation id="8281886186245836920">Прескочи</translation> <translation id="8283475148136688298">Кôд потврде аутентичности је одбијен током повезивања са „<ph name="DEVICE_NAME" />“.</translation> <translation id="8284279544186306258">сви <ph name="WEBSITE_1" /> сајтови</translation> +<translation id="8284326494547611709">Титл</translation> <translation id="8286036467436129157">Пријави ме</translation> <translation id="8286963743045814739">Можете да прегледате приватно у прозору без архивирања</translation> <translation id="8287902281644548111">Претражите према API позиву/URL-у</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index 6531fae..1408750 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Fel i tillägg</translation> <translation id="1246158006305844142">Appar och inställningar synkroniseras på alla Chrome OS-enheter där du är inloggad på ditt Google-konto. Alternativ för synkronisering av webbläsaren finns i <ph name="LINK_BEGIN" />Chrome-inställningarna<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Vill du ta bort förslaget från urklipp?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> har blockerats eftersom det har fasats ut</translation> <translation id="1251366534849411931">Oväntad vänster klammerparentes: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802"><ph name="TOTAL_USAGE" /> data som har lagrats av webbplatser och installerade appar raderas</translation> <translation id="125220115284141797">Standard</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Hemnätverk, ingen roaming</translation> <translation id="1315056510003830387">Får inte använda Flash</translation> -<translation id="1315144594965013365">Se till att båda enheterna är upplåsta, att de är nära varandra och att Bluetooth är aktiverat. Om du delar med en Chromebook kontrollerar du att Närdelning har aktiverats (öppna statusfältet genom att välja klockan och välj sedan Närdelning).</translation> <translation id="1316136264406804862">Söker ...</translation> <translation id="1316495628809031177">Synkroniseringen har pausats</translation> <translation id="1317637799698924700">Dockningsstationen körs i kompatibilitetsläge med USB Type-C.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA-kompromiss</translation> <translation id="2182058453334755893">Kopierat till urklipp</translation> <translation id="2184515124301515068">Låt Chrome välja när webbplatser kan spela upp ljud (rekommenderas)</translation> -<translation id="2187243482123994665">Användarens närvaro</translation> <translation id="2187675480456493911">Synkroniseras med andra enheter i kontot. Inställningar som andra användare har ändrat synkroniseras inte. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Fel vid import av servercertifikat</translation> <translation id="2187906491731510095">Tillägg har uppdaterats</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">E&xportera...</translation> <translation id="4107048419833779140">Identifiera och mata ut lagringsenheter</translation> <translation id="4109135793348361820">Flytta fönster till <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Anpassa storlek och format på textningen för appar som har stöd för inställningen</translation> <translation id="4110490973560452005">Nedladdningen är klar: <ph name="FILE_NAME" />. Stega till nedladdningsfältet med Skift+F6.</translation> <translation id="4110686435123617899">Välj detta album: <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Surfa på webben i högkontrastläge</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">Håll ned starttangenten om du vill ändra hur tangenterna på översta raden fungerar</translation> <translation id="4400963414856942668">Du kan lägga till ett bokmärke för fliken genom att klicka på stjärnan</translation> <translation id="4403775189117163360">Välj en annan mapp</translation> -<translation id="440391631796167175">Inga svaga lösenord hittades</translation> <translation id="4404136731284211429">Sök igen</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> blockeras av en förälder. Be en förälder om behörighet att använda den här appen.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4467,8 +4462,6 @@ <translation id="6242852299490624841">Fokusera på den här fliken</translation> <translation id="6243280677745499710">Nuvarande</translation> <translation id="6243774244933267674">Servern är inte tillgänglig</translation> -<translation id="6244185221716469155">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="6244245036423700521">Importera ONC-fil</translation> <translation id="6246790815526961700">Ladda upp från enheten</translation> <translation id="6247620186971210352">Inga appar hittades</translation> @@ -6218,6 +6211,7 @@ <translation id="8281886186245836920">Hoppa över</translation> <translation id="8283475148136688298">Autentiseringskoden avvisades vid anslutning till <ph name="DEVICE_NAME" />.</translation> <translation id="8284279544186306258">alla <ph name="WEBSITE_1" />-webbplatser</translation> +<translation id="8284326494547611709">Textning</translation> <translation id="8286036467436129157">Logga in</translation> <translation id="8286963743045814739">Du kan surfa privat med ett inkognitofönster</translation> <translation id="8287902281644548111">Sök efter API-anrop/webbadress</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index a0a90d5..654ac80 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Hitilafu ya kiendelezi</translation> <translation id="1246158006305844142">Mipangilio na programu zako zitasawazishwa kwenye vifaa vyote vinavyotumia Mfumo wa Uendeshaji wa Chrome, ambavyo umetumia kuingia katika akaunti yako ya Google. Ili upate chaguo za kusawazisha kwenye kivinjari, nenda katika <ph name="LINK_BEGIN" />Mipangilio ya Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Je, ungependa kuondoa pendekezo kwenye ubao wa kunakili?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> imezuiwa kwa sababu iliacha kuendesha huduma</translation> <translation id="1251366534849411931">Hamna mchirizi wa kufungua: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Hatua hii itafuta <ph name="TOTAL_USAGE" /> za data iliyohifadhiwa na tovuti na programu zilizosakinishwa</translation> <translation id="125220115284141797">Chaguomsingi</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">VPN ya Android</translation> <translation id="131461803491198646">Uko katika mtandao wako wa kawaida</translation> <translation id="1315056510003830387">Zisizoruhusiwa kutumia Flash</translation> -<translation id="1315144594965013365">Hakikisha kuwa vifaa vyote viwili vimefunguliwa, vinakaribiana na Bluetooth imewashwa. Iwapo unashiriki na kifaa cha Chromebook, hakikisha kwamba kipengele cha Uhamishaji wa Karibu kimewashwa (fungua eneo la hali kwa kuchagua saa, kisha uchague Uhamishaji wa Karibu).</translation> <translation id="1316136264406804862">Inatafuta...</translation> <translation id="1316495628809031177">Imesitisha Usawazishaji</translation> <translation id="1317637799698924700">Sehemu ya kituo chako itatumia hali inayooana na USB Aina ya C.</translation> @@ -869,6 +867,7 @@ <translation id="1976307821760494606"><ph name="DOMAIN" /> imezima utatuzi wa ADB. Hatua hii itarejesha mipangilio ambayo <ph name="DEVICE_TYPE" /> yako ilitoka nayo kiwandani, baada ya saa 24. Hifadhi nakala za faili zozote ambazo ungependa zisipotee.</translation> <translation id="1977965994116744507">Sogeza simu yako karibu ili ukifungue kifaa chako cha <ph name="DEVICE_TYPE" />.</translation> <translation id="1978006917103730774">Masasisho ya baadaye ya programu na usalama yatasakinishwa kiotomatiki.</translation> +<translation id="1978057560491495741">Ondoa anwani</translation> <translation id="1979095679518582070">Hatua ya kuzima kipengele hiki haiathiri uwezo wa kifaa hiki wa kutuma maelezo yanayohitajika kutekeleza huduma muhimu kama vile masasisho ya mfumo na usalama.</translation> <translation id="1979280758666859181">Unabadilisha hadi kituo chenye toleo zee la <ph name="PRODUCT_NAME" />. Mabadiliko ya kituo yatatumika wakati toleo la kituo linalingana na toleo lililosanidiwa kwenye kifaa chako.</translation> <translation id="197989455406964291">KDC haitumii aina ya usimbaji fiche</translation> @@ -1034,7 +1033,6 @@ <translation id="2178614541317717477">Kuvurugwa kwa Mamlaka ya Cheti</translation> <translation id="2182058453334755893">Yamenakiliwa kwenye Ubao wa Kunakili</translation> <translation id="2184515124301515068">Ruhusu Chrome ichague wakati ambapo tovuti zitacheza sauti (inapendekezwa)</translation> -<translation id="2187243482123994665">Upatikanaji wa mtumiaji</translation> <translation id="2187675480456493911">Umesawazishwa na vifaa vingine kwenye akaunti yako. Mipangilio iliyorekebishwa na watumiaji wengine haitasawazishwa. <ph name="LINK_BEGIN" />Pata maelezo zaidi<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Hitilafu ya Kuleta Cheti cha Seva</translation> <translation id="2187906491731510095">Imesasisha viendelezi</translation> @@ -1071,6 +1069,7 @@ <translation id="2224444042887712269">Mipangilio hii ni ya <ph name="OWNER_EMAIL" />.</translation> <translation id="2224551243087462610">Badilisha jina la folda</translation> <translation id="2225864335125757863">Badilisha manenosiri haya mara moja ili udumishe usalama wa akaunti yako:</translation> +<translation id="2226204716217107988">Ungependa kutumia wasifu mwingine?</translation> <translation id="2226449515541314767">Tovuti imezuiwa isiwe na udhibiti kamili wa vifaa vya MIDI.</translation> <translation id="2226907662744526012">Fungua kiotomatiki baada ya PIN kuwekwa</translation> <translation id="222704500187107962">Mipangilio hii maalum itaondolewa kiotomatiki baada ya kufunga kipindi cha sasa cha Hali Fiche</translation> @@ -1140,6 +1139,7 @@ <translation id="2307462900900812319">Sanidi mtandao</translation> <translation id="230927227160767054">Ukarasa huu anataka kusakinisha kishikizi cha huduma.</translation> <translation id="2309620859903500144">Tovuti hii imezuiliwa ili isifikie vitambuzi vya mwangaza au mwendo.</translation> +<translation id="2312219318583366810">URL ya Ukurasa</translation> <translation id="2314165183524574721">Mipangilio ya sasa ya uonekanaji ni 'kimefichwa'</translation> <translation id="2314774579020744484">Lugha inayotumiwa wakati wa kutafsiri kurasa</translation> <translation id="2315414688463285945">Hitilafu imetokea wakati wa kuweka mipangilio ya faili za Linux. Tafadhali jaribu tena.</translation> @@ -2343,6 +2343,7 @@ <translation id="3713047097299026954">Ufunguo huu wa usalama hauna data yoyote ya kuingia katika akaunti</translation> <translation id="3714195043138862580">Kifaa hiki cha onyesho kimewekwa kwenye hali ya kuondoa idhini ya kutumia.</translation> <translation id="3714633008798122362">kalenda ya wavuti</translation> +<translation id="3715954932774762075">Programu na tovuti zinazopatikana katika lugha nyingi zitatumia lugha ya kwanza inayoweza kutumika kwenye orodha hii. Mapendeleo haya husawazishwa na mipangilio ya kivinjari chako. <ph name="BEGIN_LINK_LEARN_MORE" />Pata maelezo zaidi<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">Ukurasa wa Mwanzo</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">Wewe na Google</translation> @@ -2503,6 +2504,7 @@ <translation id="3882165008614329320">Video iliyopo kutoka kwenye kamera au faili</translation> <translation id="3886446263141354045">Ombi lako la kufikia tovuti hii limetumwa kwa <ph name="NAME" /></translation> <translation id="3888550877729210209">Madokezo yanachukuliwa na <ph name="LOCK_SCREEN_APP_NAME" /></translation> +<translation id="3890064827463908288">Washa kipengele cha Usawazishaji wa Chrome ili uweze kutumia kipengele cha Usawazishaji Wi-Fi</translation> <translation id="3892414795099177503">Ongeza OpenVPN / L2TP...</translation> <translation id="3893536212201235195">Kusoma na ubadilishe mipangilio yako ya ufikiaji</translation> <translation id="3893630138897523026">ChromeVox (maoni yaliyotamkwa)</translation> @@ -2700,7 +2702,6 @@ <translation id="4104163789986725820">&Hamisha...</translation> <translation id="4107048419833779140">Tambua na uondoe vifaa vya hifadhi</translation> <translation id="4109135793348361820">Hamisha dirisha hadi kwa <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Weka mapendeleo ya ukubwa na muundo wa manukuu katika programu zinazotumia mipangilio hii</translation> <translation id="4110490973560452005">Imemaliza kupakua: <ph name="FILE_NAME" />. Bonyeza Shift+F6 ili uende kwenye eneo la upau wa vipakuliwa.</translation> <translation id="4110686435123617899">Chagua albamu ya <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Vinjari wavuti katika hali ya utofautishaji wa juu</translation> @@ -2913,7 +2914,6 @@ <translation id="4400632832271803360">Shikilia kitufe cha Kifungua Programu ili ubadilishe utendaji wa vitufe vya juu vya safu mlalo</translation> <translation id="4400963414856942668">Unaweza kubofya nyota ili ualamishe kichupo</translation> <translation id="4403775189117163360">Chagua folda tofauti</translation> -<translation id="440391631796167175">Hakuna manenosiri dhaifu yaliyopatikana</translation> <translation id="4404136731284211429">Changanua tena</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> imezuiwa na mzazi wako. Mwombe mzazi wako ruhusa ya kutumia programu hii.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -3774,6 +3774,7 @@ <translation id="5449588825071916739">Alamisha Vichupo Vyote</translation> <translation id="5449716055534515760">Funga Dirisha</translation> <translation id="5452974209916053028">Kipindi cha sasa cha hali fiche: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />, <ph name="RECENT_PERMISSIONS_CHANGE_1" />, <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">Kiputo cha manukuu kimesogezwa <ph name="POSITION_ON_SCREEN_FROM_LEFT" />% kwenda upande mwingine, <ph name="POSITION_ON_SCREEN_FROM_TOP" />% kwenda chini</translation> <translation id="5454166040603940656">na <ph name="PROVIDER" /></translation> <translation id="5457113250005438886">Haiwezi kutumika</translation> <translation id="5457459357461771897">Soma na ufute picha, muziki, na maudhui mengine kwenye kompyuta yako</translation> @@ -3917,6 +3918,7 @@ <translation id="5602765853043467355">Futa alamisho, historia, manenosiri na mengineyo kwenye kifaa hiki</translation> <translation id="5605623530403479164">Mitambo mingine ya kutafuta</translation> <translation id="5605758115928394442">Arifa imetumwa kwenye simu yako ili kuthibitisha ni wewe.</translation> +<translation id="560834977503641186">Usawazishaji Wi-Fi, Pata Maelezo Zaidi</translation> <translation id="5608580678041221894">Gusa vitufe vinavyofuata ili urekebishe au usogeze eneo la kupunguzia</translation> <translation id="5609231933459083978">Programu inaonekana kuwa batili.</translation> <translation id="5610038042047936818">Badili utumie hali ya kamera</translation> @@ -4107,6 +4109,7 @@ <translation id="5841270259333717135">Weka mipangilio ya Ethaneti</translation> <translation id="5842497610951477805">Washa Bluetooth</translation> <translation id="5843706793424741864">Farenhaiti</translation> +<translation id="584451707753263735">Kiputo cha Manukuu Papo Hapo kinaonekana, bonyeza F6 ili ukiangazie</translation> <translation id="5844574845205796324">Pendekeza maudhui mapya ya kugundua</translation> <translation id="5846200638699387931">Hitilafu ya sintaksia ya uhusiano: <ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">Sakinisha masasisho na programu Kwa kuendelea, unakubali kuwa kifaa hiki kinaweza pia kupakua na kusakinisha kiotomatiki programu na masasisho kutoka Google, mtoa huduma wako na mtengenezaji wake, kwa kutumia data ya mtandao wa simu panapowezekana. Baadhi ya programu hizi zinaweza kuwa na ununuzi wa ndani ya programu.</translation> @@ -4454,8 +4457,6 @@ <translation id="6242852299490624841">Lenga kichupo hiki</translation> <translation id="6243280677745499710">Mandhari yaliyopo</translation> <translation id="6243774244933267674">Seva haipatikani.</translation> -<translation id="6244185221716469155">Ni rahisi kukisia manenosiri dhaifu. Hakikisha kuwa unatunga manenosiri thabiti. - <ph name="BEGIN_LINK" />Angalia vidokezo zaidi vya usalama.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Pakia Faili ya ONC</translation> <translation id="6246790815526961700">Pakia kutoka kwenye kifaa</translation> <translation id="6247620186971210352">Haikupata programu zozote</translation> @@ -5363,6 +5364,7 @@ <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> sasa ni skrini nzima.</translation> <translation id="7340650977506865820">Tovuti inashiriki skrini yako</translation> <translation id="7341834142292923918">Ingependa kufikia tovuti hii</translation> +<translation id="7343372807593926528">Tafadhali fafanua tatizo kabla ya kutuma maoni.</translation> <translation id="7345706641791090287">Thibitisha nenosiri lako</translation> <translation id="7346909386216857016">Sawa, nimeelewa</translation> <translation id="7347452120014970266">Hatua hii itafuta data na vidakuzi vyote vilivyohifadhiwa na <ph name="ORIGIN_NAME" /> na programu zake zilizosakinishwa</translation> @@ -5780,6 +5782,7 @@ <translation id="7819857487979277519">PSK (WPA au RSN)</translation> <translation id="7819992334107904369">Usawazishaji wa Chrome</translation> <translation id="782057141565633384">Nakili anwani ya video</translation> +<translation id="7822187537422052256">Una uhakika kuwa unataka kuondoa anwani hii?</translation> <translation id="7824864914877854148">Imeshindwa kukamilisha kuhifadhi nakala kutokana na hitilafu</translation> <translation id="7825666486843191125">Anwani zote zilizo karibu nawe ukiwa umefungua skrini yako</translation> <translation id="782590969421016895">Tumia kurasa za sasa</translation> @@ -6205,6 +6208,7 @@ <translation id="8281886186245836920">Ruka</translation> <translation id="8283475148136688298">Msimbo wa uthibitishaji umekataliwa wakati ikiunganisha kwa "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">tovuti zote <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Manukuu</translation> <translation id="8286036467436129157">Ingia</translation> <translation id="8286963743045814739">Unaweza kuvinjari kwa faragha ukitumia dirisha fiche</translation> <translation id="8287902281644548111">Tafuta kulingana na simu ya API/URL</translation> @@ -6306,6 +6310,7 @@ <translation id="8419098111404128271">Matokeo ya utafutaji wa '<ph name="SEARCH_TEXT" />'</translation> <translation id="8419368276599091549">Karibu kwenye <ph name="DEVICE_TYPE" /> yako!</translation> <translation id="8420308167132684745">Badilisha vitomeo vya kamusi</translation> +<translation id="8421361468937925547">Manukuu Papo Hapo (Kiingereza pekee)</translation> <translation id="8422787418163030046">Trei haipo</translation> <translation id="8425213833346101688">Badilisha</translation> <translation id="8425492902634685834">Bandikiza kwenye Upau wa Shughuli</translation> @@ -6334,6 +6339,7 @@ <translation id="8449036207308062757">Dhibiti hifadhi</translation> <translation id="8452135315243592079">Hakuna SIM kadi</translation> <translation id="8455026683977728932">Imeshindwa kuwasha mchoro wa ADB</translation> +<translation id="8456398879271637452">Kiputo cha Manukuu Papo Hapo kinaonekana, bonyeza Ctrl + Back au Ctrl + Forward ili ukiangazie</translation> <translation id="845702320058262034">Imeshindwa kuunganisha. Hakikisha kwamba umewasha Bluetooth ya simu yako.</translation> <translation id="8457451314607652708">Leta alamisho</translation> <translation id="8458627787104127436">Fungua zote (<ph name="URL_COUNT" />) katika dirisha jipya</translation> @@ -6844,6 +6850,7 @@ <translation id="9027459031423301635">Fungua Kiungo katika Kichupo &Kipya</translation> <translation id="9030515284705930323">Shirika lako halijaruhusu Duka la Google Play kwa akaunti yako. Wasiliana na msimamizi wako kwa maelezo zaidi.</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269"><ph name="PLUGIN_NAME" /> haiwezi kutumika tena</translation> <translation id="9031549947500880805">Hifadhi nakala kwenye Hifadhi ya Google. Rejesha data au ubadilishe kifaa unachotumia kwa urahisi wakati wowote. Nakala unayohifadhi huwa na data ya programu.</translation> <translation id="9033765790910064284">Endelea tu</translation> <translation id="9033857511263905942">&Bandika</translation> @@ -6852,6 +6859,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{Umebakisha mara moja ya kujaribu.}other{Umebakisha mara # za kujaribu.}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571">Ungependa kusasisha nenosiri la <ph name="ORIGIN" />?</translation> +<translation id="9041049756004505730">Kiputo cha Manukuu Papo Hapo kinaonekana, bonyeza ⌘ + Option + kishale cha Juu au cha Chini ili uangazie kiputo</translation> <translation id="9041692268811217999">Ufikiaji wa faili za ndani kwenye mashine yako umezimwa na msimamizi wako</translation> <translation id="904224458472510106">Kitendo hiki hakiwezi kutenduliwa</translation> <translation id="9042893549633094279">Faragha na usalama</translation> @@ -6890,6 +6898,7 @@ <translation id="9088446193279799727">Imeshindwa kuweka mipangilio ya Linux. Unganisha kwenye intaneti kisha ujaribu tena.</translation> <translation id="9088917181875854783">Tafadhali thibitisha nenosiri hili limeonyeshwa kwenye "<ph name="DEVICE_NAME" />":</translation> <translation id="9089416786594320554">Mbinu za Kuweka</translation> +<translation id="909108997331068008">Tayari wasifu wa <ph name="EXISTING_USER" /> umetumika kuingia katika akaunti ya <ph name="NEW_USER" /></translation> <translation id="9093429538970210897">Hatua ya kuhifadhi nakala za faili inapendekezwa ikitokea kuwa mchakato wa kusasisha hautakamilika. Hatua ya kuanza kusasisha itasababisha kuzimwa kwa Linux (Beta). Tafadhali hifadhi faili ulizofungua kabla ya kuendelea.</translation> <translation id="9094033019050270033">Sasisha nenosiri</translation> <translation id="9094038138851891550">Jina la mtumiaji si sahihi</translation> @@ -7063,5 +7072,6 @@ <translation id="994289308992179865">&Rudia-Rudia</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">Inaanzisha muunganisho salama...</translation> +<translation id="99731366405731005">Washa kipengele cha <ph name="LINK1_BEGIN" />Usawazishaji wa Chrome<ph name="LINK1_END" /> ili uweze kutumia kipengele cha Usawazishaji Wi-Fi. <ph name="LINK2_BEGIN" />Pata maelezo zaidi<ph name="LINK2_END" /></translation> <translation id="998747458861718449">Kagua</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index 585d586..be4b938 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">நீட்டிப்புப் பிழை</translation> <translation id="1246158006305844142">நீங்கள் Google கணக்கின் மூலம் உள்நுழைந்துள்ள Chrome OS சாதனங்கள் அனைத்திலும் உங்கள் ஆப்ஸும் அமைப்புகளும் ஒத்திசையும். உலாவி ஒத்திசைவு விருப்பங்களுக்கு, <ph name="LINK_BEGIN" />Chrome அமைப்புகளுக்குச்<ph name="LINK_END" /> செல்லவும்.</translation> <translation id="1246905108078336582">கிளிப்போர்டிலிருந்து பரிந்துரையை அகற்றவா?</translation> -<translation id="1249643471736608405">நிறுத்தப்பட்டுள்ளதன் காரணமாக <ph name="PLUGIN_NAME" /> தடைசெய்யப்பட்டுள்ளது.</translation> <translation id="1251366534849411931">திறந்த நெளி அடைப்புக்குறி இல்லை: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">இது தளங்கள், நிறுவப்பட்ட ஆப்ஸ் ஆகியவற்றால் சேமிக்கப்பட்ட <ph name="TOTAL_USAGE" /> தரவை அழிக்கும்</translation> <translation id="125220115284141797">இயல்பு</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">உள்ளூர் நெட்வொர்க், ரோமிங் இல்லை</translation> <translation id="1315056510003830387">Flashஐப் பயன்படுத்த அனுமதி இல்லாத தளங்கள்</translation> -<translation id="1315144594965013365">இரண்டு சாதனங்களும் அன்லாக் செய்யப்பட்டிருப்பதையும் அருகருகே இருப்பதையும் அவற்றில் புளூடூத் ஆன் செய்யப்பட்டிருப்பதையும் உறுதிசெய்துகொள்ளவும். Chromebookகுடன் பகிர்கிறீர்கள் எனில் அதில் ‘அருகிலுள்ளவற்றுடன் பகிர்தல்’ அம்சம் ஆன் செய்யப்பட்டிருப்பதை உறுதிசெய்துகொள்ளவும் (நேரத்தைத் தேர்ந்தெடுத்து நிலைப் பகுதியைத் திறந்துவிட்டு ‘அருகிலுள்ளவற்றுடன் பகிர்தல்’ அம்சத்தைத் தேர்ந்தெடுக்கவும்).</translation> <translation id="1316136264406804862">தேடுகிறது...</translation> <translation id="1316495628809031177">ஒத்திசைவு இடைநிறுத்தப்பட்டது</translation> <translation id="1317637799698924700">'USB டைப்-சி இணக்கத்தன்மைப் பயன்முறையில்' உங்கள் டாக் செய்வதற்கான நிலையம் இயங்கும்.</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA இணக்கம்</translation> <translation id="2182058453334755893">உங்கள் கிளிப்போர்டுக்கு நகலெடுக்கப்பட்டது</translation> <translation id="2184515124301515068">தளங்கள் எப்போது ஒலியை இயக்கலாம் என்பதை Chrome தேர்வு செய்ய அனுமதிக்கவும் (பரிந்துரைக்கப்படுவது)</translation> -<translation id="2187243482123994665">பயனர் செயல்நிலை</translation> <translation id="2187675480456493911">உங்கள் கணக்கில் உள்ள பிற சாதனங்களுடன் ஒத்திசைக்கப்பட்டது. பிற பயனர்கள் மாற்றியமைக்கும் அமைப்புகள் ஒத்திசைக்கப்படாது. <ph name="LINK_BEGIN" />மேலும் அறிக<ph name="LINK_END" /></translation> <translation id="2187895286714876935">சேவையக சான்றிதழ் இறக்குமதி பிழை</translation> <translation id="2187906491731510095">நீட்டிப்புகள் புதுப்பிக்கப்பட்டன</translation> @@ -2710,7 +2707,6 @@ <translation id="4104163789986725820">ஏற்று&மதி...</translation> <translation id="4107048419833779140">சேமிப்பகச் சாதனங்களைக் கண்டறிந்து, வெளியேற்றுதல்</translation> <translation id="4109135793348361820"><ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) க்குச் சாளரத்தை நகர்த்து</translation> -<translation id="411031910327788420">இந்த அமைப்பு ஆதரிக்கப்படும் ஆப்ஸில் வசனத்தின் அளவையும் நடையையும் பிரத்தியேகமாக்குக</translation> <translation id="4110490973560452005">பதிவிறக்கம் முடிந்தது: <ph name="FILE_NAME" />. பதிவிறக்கங்கள் பட்டிப் பகுதிக்குச் சுழற்ற, Shift+F6 விசைகளை அழுத்தவும்.</translation> <translation id="4110686435123617899"><ph name="TITLE" /> <ph name="DESC" /> ஆல்பத்தைத் தேர்வுசெய்யும்</translation> <translation id="4110895898888439383">அதிக ஒளி மாறுபாட்டுப் பயன்முறையில் இணையத்தில் உலாவுதல்</translation> @@ -2923,7 +2919,6 @@ <translation id="4400632832271803360">மேல் வரிசையில் உள்ள விசைகளின் செயல்பாட்டை மாற்ற, தொடக்கி விசையைத் தொடர்ந்து அழுத்திப் பிடிக்கவும்</translation> <translation id="4400963414856942668">தாவலை புக்மார்க் செய்ய நட்சத்திரத்தை கிளிக் செய்யலாம்</translation> <translation id="4403775189117163360">வேறு கோப்புறையைத் தேர்வுசெய்</translation> -<translation id="440391631796167175">வலுவற்றக் கடவுச்சொற்கள் இல்லை</translation> <translation id="4404136731284211429">மீண்டும் ஸ்கேன் செய்</translation> <translation id="4404843640767531781">உங்கள் பெற்றோரால் <ph name="APP_NAME" /> தடுக்கப்பட்டுள்ளது. இந்த ஆப்ஸைப் பயன்படுத்த உங்கள் பெற்றோரிடம் அனுமதி கேட்கவும்.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4468,8 +4463,6 @@ <translation id="6242852299490624841">இந்தத் தாவலை மையப்படுத்து</translation> <translation id="6243280677745499710">தற்போது அமைக்கப்பட்டுள்ளது</translation> <translation id="6243774244933267674">சேவையகம் கிடைக்கவில்லை</translation> -<translation id="6244185221716469155">வலுவற்ற கடவுச்சொற்களை யூகிப்பது எளிது. வலிமையான கடவுச்சொற்களை உருவாக்கவும். - <ph name="BEGIN_LINK" />கூடுதல் உதவிக்குறிப்புகளைக் காண்க.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC கோப்பினை இறக்கு</translation> <translation id="6246790815526961700">சாதனத்திலிருந்து பதிவேற்று</translation> <translation id="6247620186971210352">ஆப்ஸ் எதுவும் கண்டறியப்படவில்லை</translation> @@ -6219,6 +6212,7 @@ <translation id="8281886186245836920">தவிர்</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" உடன் இணைக்கும்போது அங்கீகரிப்புக் குறியீடு நிராகரிக்கப்பட்டது.</translation> <translation id="8284279544186306258">எல்லா <ph name="WEBSITE_1" /> தளங்களும்</translation> +<translation id="8284326494547611709">வசனங்கள்</translation> <translation id="8286036467436129157">உள்நுழை</translation> <translation id="8286963743045814739">மறைநிலைச் சாளரத்தைப் பயன்படுத்தி, தனிப்பட்ட முறையில் உலாவலாம்</translation> <translation id="8287902281644548111">API அழைப்பு/URLபடி தேடு</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index 4fc678a1..6b16a7f 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">ఎక్స్టెన్షన్ ఎర్రర్</translation> <translation id="1246158006305844142">మీరు Google ఖాతాతో సైన్ ఇన్ చేసిన Chrome OS పరికరాల అంతటా మీ యాప్లు, సెట్టింగ్లు సింక్ చేయబడతాయి. బ్రౌజర్ సింక్ ఎంపికల కోసం, <ph name="LINK_BEGIN" />Chrome సెట్టింగ్ల<ph name="LINK_END" />కు వెళ్లండి.</translation> <translation id="1246905108078336582">క్లిప్బోర్డ్ నుండి సూచనను తొలగించాలా?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> విస్మరించబడింది కాబట్టి అది బ్లాక్ చేయబడింది</translation> <translation id="1251366534849411931">తెరిచి ఉన్న వంకర కలుపు ఉండాలి: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">దీని వలన సైట్లు, ఇన్స్టాల్ చేయబడిన యాప్లు స్టోర్ చేసిన <ph name="TOTAL_USAGE" /> డేటా తొలగిపోతుంది.</translation> <translation id="125220115284141797">ఆటోమేటిక్ సెట్టింగ్</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">హోమ్ నెట్వర్క్, రోమింగ్ కాదు</translation> <translation id="1315056510003830387">ఫ్లాష్ను ఉపయోగించడానికి అనుమతించబడలేదు</translation> -<translation id="1315144594965013365">రెండు పరికరాలూ అన్లాక్ అయి, దగ్గరగా ఉన్నాయని, వాటిలో బ్లూటూత్ ఆన్ చేసి ఉందని నిర్ధారించుకోండి. మీరు Chromebookతో షేర్ చేస్తుంటే, దానిలో సమీప షేరింగ్ ఫీచర్ ఆన్లో ఉందని నిర్ధారించుకోండి (సమయాన్ని ఎంచుకోవడం ద్వారా స్టేటస్ ప్రాంతాన్ని తెరిచి, ఆపై సమీప షేరింగ్ను ఎంచుకోండి).</translation> <translation id="1316136264406804862">శోధిస్తోంది...</translation> <translation id="1316495628809031177">సమకాలీకరణ పాజ్ చేయబడింది</translation> <translation id="1317637799698924700">మీ డాకింగ్ స్టేషన్, USB టైప్-సి అనుకూలత మోడ్లో ఆపరేట్ చేయబడుతుంది.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">CA రాజీ</translation> <translation id="2182058453334755893">మీ క్లిప్బోర్డ్కు కాపీ చేయబడింది</translation> <translation id="2184515124301515068">సైట్లు ధ్వనిని ఎప్పుడు ప్లే చేయాలనేది Chrome ఎంచుకునేలా సెట్ చేయండి (సిఫార్సు చేయబడింది)</translation> -<translation id="2187243482123994665">యూజర్ ఉనికి</translation> <translation id="2187675480456493911">మీ ఖాతాలోని ఇతర పరికరాలతో సింక్ చేయబడింది. ఇతర యూజర్ల చేత మార్చబడిన సెట్టింగ్లు సింక్ చేయబడవు. <ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation> <translation id="2187895286714876935">సర్వర్ ప్రమాణపత్రం దిగుమతి లోపం</translation> <translation id="2187906491731510095">పొడిగింపులు నవీకరించబడ్డాయి</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">ఎ&గుమతి...</translation> <translation id="4107048419833779140">నిల్వ డివైజ్లను గుర్తించి, తొలగించండి</translation> <translation id="4109135793348361820">విండోను <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)కు తరలించు</translation> -<translation id="411031910327788420">ఈ సెట్టింగ్ను సపోర్ట్ చేసే యాప్ల కోసం క్యాప్షన్ సైజ్, స్టయిల్ను అనుకూలీకరించండి</translation> <translation id="4110490973560452005">డౌన్లోడ్ పూర్తయింది: <ph name="FILE_NAME" />. డౌన్లోడ్ల బార్ ప్రాంతంలోకి వెళ్లడం కోసం Shift+F6 నొక్కండి.</translation> <translation id="4110686435123617899"><ph name="TITLE" /> <ph name="DESC" /> ఆల్బమ్ను ఎంచుకోండి</translation> <translation id="4110895898888439383">అధిక కాంట్రాస్ట్ మోడ్లో వెబ్ను బ్రౌజ్ చేయండి</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">ఎగువ-అడ్డు వరుసలోని కీల ప్రవర్తనను మార్చడానికి లాంచర్ కీని నొక్కి ఉంచండి</translation> <translation id="4400963414856942668">మీరు ట్యాబ్ను బుక్మార్క్ చేయడానికి నక్షత్రం గుర్తును క్లిక్ చేయవచ్చు</translation> <translation id="4403775189117163360">వేరొక ఫోల్డర్ను ఎంచుకోండి</translation> -<translation id="440391631796167175">బలహీనమైన పాస్వర్డ్లు ఏవీ కనుగొనబడలేదు</translation> <translation id="4404136731284211429">మళ్లీ స్కాన్ చేయి</translation> <translation id="4404843640767531781"><ph name="APP_NAME" />ను మీ తల్లి/తండ్రి బ్లాక్ చేశారు. ఈ యాప్ను ఉపయోగించడానికి మీ తల్లి/తండ్రి అనుమతిని అడగండి.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">ఈ ట్యాబ్పై దృష్టి కేంద్రీకరించు</translation> <translation id="6243280677745499710">ప్రస్తుతం సెట్ చేసినది</translation> <translation id="6243774244933267674">సర్వర్ అందుబాటులో లేదు</translation> -<translation id="6244185221716469155">బలహీనమైన పాస్వర్డ్లను ఊహించడం చాలా సులభం. మీరు శక్తివంతమైన పాస్వర్డ్లను క్రియేట్ చేస్తున్నారని నిర్ధారించుకోండి. - <ph name="BEGIN_LINK" />మరిన్ని భద్రతా చిట్కాలను చూడండి.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC ఫైల్ను దిగుమతి చేయి</translation> <translation id="6246790815526961700">పరికరం నుండి అప్లోడ్ చేయి</translation> <translation id="6247620186971210352">యాప్లు ఏవీ కనుగొనబడలేదు</translation> @@ -6204,6 +6197,7 @@ <translation id="8281886186245836920">దాటవేయి</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />"కు కనెక్ట్ చేస్తున్నప్పుడు ప్రామాణీకరణ కోడ్ తిరస్కరించబడింది.</translation> <translation id="8284279544186306258">అన్ని <ph name="WEBSITE_1" /> వెబ్సైట్లు</translation> +<translation id="8284326494547611709">క్యాప్షన్లు</translation> <translation id="8286036467436129157">సైన్ ఇన్ చేయండి</translation> <translation id="8286963743045814739">అజ్ఞాత విండోను ఉపయోగించి మీరు ప్రైవేట్గా బ్రౌజ్ చేయవచ్చు</translation> <translation id="8287902281644548111">API కాల్/URL ద్వారా శోధించండి</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index be592a38..862ceac 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">ข้อผิดพลาดของส่วนขยาย</translation> <translation id="1246158006305844142">แอปและการตั้งค่าของคุณจะซิงค์กับอุปกรณ์ Chrome OS ทั้งหมดที่คุณลงชื่อเข้าใช้ไว้ด้วยบัญชี Google ดูตัวเลือกการซิงค์เบราว์เซอร์ได้ที่<ph name="LINK_BEGIN" />การตั้งค่า Chrome<ph name="LINK_END" /></translation> <translation id="1246905108078336582">นำคำแนะนำออกจากคลิปบอร์ดไหม</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> ถูกบล็อกเนื่องจากเลิกใช้งานไปแล้ว</translation> <translation id="1251366534849411931">เครื่องหมายวงเล็บปีกกาเปิดที่ต้องมี: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">การดำเนินการนี้จะล้างข้อมูลที่เว็บไซต์และแอปต่างๆ จัดเก็บไว้รวมทั้งสิ้น <ph name="TOTAL_USAGE" /></translation> <translation id="125220115284141797">ค่าเริ่มต้น</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">เครือข่ายในประเทศ ไม่ใช่โรมมิ่ง</translation> <translation id="1315056510003830387">ไม่ได้รับอนุญาตให้ใช้ Flash</translation> -<translation id="1315144594965013365">ตรวจสอบว่าอุปกรณ์ทั้ง 2 เครื่องปลดล็อกแล้ว อยู่ใกล้กัน และเปิดบลูทูธอยู่ หากจะแชร์กับ Chromebook ให้ตรวจสอบว่าเปิดการแชร์ใกล้เคียงแล้ว (เปิดพื้นที่แสดงสถานะโดยเลือกเวลา จากนั้นเลือกการแชร์ใกล้เคียง)</translation> <translation id="1316136264406804862">กำลังค้นหา...</translation> <translation id="1316495628809031177">หยุดซิงค์ชั่วคราว</translation> <translation id="1317637799698924700">แท่นชาร์จจะทำงานในโหมดที่เข้ากันได้กับ USB Type-C</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">ผู้มีสิทธิ์ออกใบรับรองไม่สมบูรณ์</translation> <translation id="2182058453334755893">คัดลอกไปยังคลิปบอร์ดแล้ว</translation> <translation id="2184515124301515068">ให้ Chrome เลือกว่าเว็บไซต์จะเล่นเสียงได้เมื่อใด (แนะนำ)</translation> -<translation id="2187243482123994665">การใช้งานอยู่ของผู้ใช้</translation> <translation id="2187675480456493911">ซิงค์กับอุปกรณ์อื่นในบัญชีของคุณแล้ว ระบบจะไม่ซิงค์การตั้งค่าที่ผู้ใช้คนอื่นๆ แก้ไข <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation> <translation id="2187895286714876935">ข้อผิดพลาดในการนำเข้าใบรับรองเซิร์ฟเวอร์</translation> <translation id="2187906491731510095">อัปเดตส่วนขยายแล้ว</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">ส่ง&ออก</translation> <translation id="4107048419833779140">ระบุและยกเลิกการต่อเชื่อมอุปกรณ์จัดเก็บข้อมูล</translation> <translation id="4109135793348361820">ย้ายหน้าต่างไปยัง <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">ปรับแต่งขนาดและรูปแบบของคำบรรยายสำหรับแอปที่รองรับการตั้งค่านี้</translation> <translation id="4110490973560452005">ดาวน์โหลดเสร็จสมบูรณ์: <ph name="FILE_NAME" /> กด Shift+F6 เพื่อวนกลับไปยังบริเวณแถบดาวน์โหลด</translation> <translation id="4110686435123617899">เลือกอัลบั้ม <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">ท่องเว็บในโหมดคอนทราสต์สูง</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">กดแป้น "Launcher" ค้างไว้เพื่อเปลี่ยนการทำงานของแป้นแถวบนสุด</translation> <translation id="4400963414856942668">คุณคลิกดาวเพื่อบุ๊กมาร์กแท็บได้</translation> <translation id="4403775189117163360">เลือกโฟลเดอร์อื่น</translation> -<translation id="440391631796167175">ไม่พบรหัสผ่านที่ไม่รัดกุม</translation> <translation id="4404136731284211429">สแกนอีกครั้ง</translation> <translation id="4404843640767531781">ผู้ปกครองของคุณบล็อก <ph name="APP_NAME" /> ไว้ โปรดขอสิทธิ์จากผู้ปกครองเพื่อใช้แอปนี้</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">โฟกัสแท็บนี้</translation> <translation id="6243280677745499710">วอลเปเปอร์ปัจจุบัน</translation> <translation id="6243774244933267674">เซิร์ฟเวอร์ไม่พร้อมใช้งาน</translation> -<translation id="6244185221716469155">รหัสผ่านที่ไม่รัดกุมนั้นคาดเดาได้ง่าย ตรวจสอบว่าคุณกำลังตั้งรหัสผ่านที่รัดกุม - <ph name="BEGIN_LINK" />ดูเคล็ดลับความปลอดภัยเพิ่มเติม<ph name="END_LINK" /></translation> <translation id="6244245036423700521">นำเข้าไฟล์ ONC</translation> <translation id="6246790815526961700">อัปโหลดจากอุปกรณ์</translation> <translation id="6247620186971210352">ไม่พบแอป</translation> @@ -6208,6 +6201,7 @@ <translation id="8281886186245836920">ข้าม</translation> <translation id="8283475148136688298">รหัสการตรวจสอบสิทธิ์ถูกปฏิเสธขณะที่เชื่อมต่อกับ "<ph name="DEVICE_NAME" />"</translation> <translation id="8284279544186306258">ไซต์ <ph name="WEBSITE_1" /> ทั้งหมด</translation> +<translation id="8284326494547611709">คำบรรยาย</translation> <translation id="8286036467436129157">ลงชื่อเข้าใช้</translation> <translation id="8286963743045814739">คุณจะท่องเว็บแบบส่วนตัวได้โดยใช้หน้าต่างที่ไม่ระบุตัวตน</translation> <translation id="8287902281644548111">ค้นหาตามการเรียก API/URL</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index 22194a7..0feb3ed 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Uzantı hatası</translation> <translation id="1246158006305844142">Uygulamalarınız ve ayarlarınız, Google hesabınızla oturum açtığınız tüm Chrome OS cihazlarında senkronize edilir. Tarayıcı senkronizasyon seçenekleri için <ph name="LINK_BEGIN" />Chrome ayarlarına<ph name="LINK_END" /> gidin.</translation> <translation id="1246905108078336582">Öneri panodan kaldırılsın mı?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> eklentisi kullanımdan kaldırıldığı için engellendi</translation> <translation id="1251366534849411931">Küme açma parantezi olması bekleniyor: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Bu işlem, siteler ve yükledikleri uygulamalar tarafından depolanan <ph name="TOTAL_USAGE" /> veriyi temizleyecek.</translation> <translation id="125220115284141797">Varsayılan</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Ev ağı, dolaşımda değil</translation> <translation id="1315056510003830387">Flash kullanmasına izin verilmeyen siteler</translation> -<translation id="1315144594965013365">Her iki cihazın da kilidinin açık ve birbirine yakın olduğundan, Bluetooth ayarlarının etkin olduğundan emin olun. Bir Chromebook ile paylaşıyorsanız Yakındakilerle Paylaş özelliğinin açık olduğundan emin olun (saati seçerek durum alanını açıp Yakındakilerle Paylaş'ı seçin).</translation> <translation id="1316136264406804862">Aranıyor...</translation> <translation id="1316495628809031177">Senkronizasyon duraklatıldı</translation> <translation id="1317637799698924700">Yuva istasyonunuz USB Type-C uyumlu modda çalışır.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">CA Uzlaşması</translation> <translation id="2182058453334755893">Panonuza Kopyalandı</translation> <translation id="2184515124301515068">Sitelerin ne zaman ses çalacağını Chrome'un seçmesine izin verin (önerilir)</translation> -<translation id="2187243482123994665">Kullanıcı etkinliği</translation> <translation id="2187675480456493911">Hesabınızdaki diğer cihazlarla senkronize edildi. Diğer kullanıcılar tarafından değiştirilen ayarlar senkronize edilmez. <ph name="LINK_BEGIN" />Daha fazla bilgi<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Sunucu Sertifikası İçe Aktarma Hatası</translation> <translation id="2187906491731510095">Uzantılar güncellendi</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">&Dışa Aktar...</translation> <translation id="4107048419833779140">Depolama cihazlarını tanımlama ve çıkarma</translation> <translation id="4109135793348361820">Pencereyi <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) kullanıcısına taşı</translation> -<translation id="411031910327788420">Bu ayarı destekleyen uygulamalar için altyazı boyutunu ve stilini özelleştirin</translation> <translation id="4110490973560452005">İndirme işlemi tamamlandı: <ph name="FILE_NAME" />. İndirme çubuğu alanına gitmek için Üst Karakter+F6 tuşlarına basın.</translation> <translation id="4110686435123617899"><ph name="TITLE" /> <ph name="DESC" /> albümünü seçin</translation> <translation id="4110895898888439383">Web'e yüksek karşıtlık modunda göz atın</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Üst satırdaki tuşların davranışını değiştirmek için Başlatıcı tuşunu basılı tutun</translation> <translation id="4400963414856942668">Sekmeye yer işareti koymak için yıldızı tıklayabilirsiniz</translation> <translation id="4403775189117163360">Farklı bir klasör seçin</translation> -<translation id="440391631796167175">Zayıf şifre bulunmadı</translation> <translation id="4404136731284211429">Tekrar tara</translation> <translation id="4404843640767531781"><ph name="APP_NAME" />, ebeveyniniz tarafından engellendi. Bu uygulamayı kullanmak için ebeveyninizden izin isteyin.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4460,8 +4455,6 @@ <translation id="6242852299490624841">Bu sekmeyi odakla</translation> <translation id="6243280677745499710">Şu anda ayarlı</translation> <translation id="6243774244933267674">Sunucu kullanılamıyor</translation> -<translation id="6244185221716469155">Zayıf şifrelerin tahmin edilmesi kolaydır. Güçlü şifreler oluşturduğunuzdan emin olun. - <ph name="BEGIN_LINK" />Güvenlikle ilgili daha fazla ipucu görün.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC Dosyasını İçe Aktar</translation> <translation id="6246790815526961700">Cihazdan yükle</translation> <translation id="6247620186971210352">Uygulama bulunamadı</translation> @@ -6208,6 +6201,7 @@ <translation id="8281886186245836920">Atla</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" cihazına bağlanırken kimlik doğrulaması kodu reddedildi.</translation> <translation id="8284279544186306258">tüm <ph name="WEBSITE_1" /> siteleri</translation> +<translation id="8284326494547611709">Altyazılar</translation> <translation id="8286036467436129157">Oturum Aç</translation> <translation id="8286963743045814739">Gizli pencere kullanarak gizli olarak göz atabilirsiniz</translation> <translation id="8287902281644548111">API çağrısına/URL'ye göre arayın</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index 977461f..6f8269a 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Помилка розширення</translation> <translation id="1246158006305844142">Ваші додатки й налаштування буде синхронізовано на всіх пристроях з ОС Chrome, де ви ввійшли в обліковий запис Google. Щоб переглянути параметри синхронізації веб-переглядача, перейдіть у <ph name="LINK_BEGIN" />налаштування Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Видалити пропозицію з буфера обміну?</translation> -<translation id="1249643471736608405">Плагін <ph name="PLUGIN_NAME" /> заблоковано, оскільки він більше не підтримується</translation> <translation id="1251366534849411931">Очікується ліва фігурна дужка: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Буде видалено <ph name="TOTAL_USAGE" /> даних, збережених сайтами та встановленими додатками</translation> <translation id="125220115284141797">За умовчанням</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Домашня мережа, без роумінгу</translation> <translation id="1315056510003830387">Заборонено використовувати Flash</translation> -<translation id="1315144594965013365">Переконайтеся, що обидва пристрої розблоковані, розташовані поруч і на них увімкнено Bluetooth. Якщо ви хочете надіслати файли на комп'ютер Chromebook, увімкніть на ньому функцію "Передавання поблизу" (для цього відкрийте панель стану, натиснувши час, і виберіть "Передавання поблизу").</translation> <translation id="1316136264406804862">Пошук...</translation> <translation id="1316495628809031177">Синхронізацію призупинено</translation> <translation id="1317637799698924700">Док-станція працюватиме в режимі сумісності з USB Type-C.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Дискредитація ЦС</translation> <translation id="2182058453334755893">Скопійовано в буфер обміну</translation> <translation id="2184515124301515068">Дозволити Chrome вибирати, коли відтворювати звук на сайтах (рекомендується)</translation> -<translation id="2187243482123994665">Інформація про присутність</translation> <translation id="2187675480456493911">Мережу синхронізовано з іншими пристроями у вашому обліковому записі. Налаштування, які змінюють інші користувачі, не синхронізуватимуться. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Помилка імпортування сертифіката сервера</translation> <translation id="2187906491731510095">Розширення оновлено</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">Е&кспортувати...</translation> <translation id="4107048419833779140">Виявляти й вилучати пристрої пам’яті</translation> <translation id="4109135793348361820">Перемістити вікно на робочий стіл користувача <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Налаштуйте розмір і стиль субтитрів для додатків, що підтримують цю функцію</translation> <translation id="4110490973560452005">Завантажено: <ph name="FILE_NAME" />. Натисніть Shift+F6, щоб перейти на панель завантажень.</translation> <translation id="4110686435123617899">Вибрати альбом "<ph name="TITLE" />" з описом "<ph name="DESC" />"</translation> <translation id="4110895898888439383">Переглядати сторінки в режимі високого контрасту</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Утримуйте клавішу панелі запуску, щоб змінити функції клавіш верхнього ряду</translation> <translation id="4400963414856942668">Щоб створити закладку для вкладки, натисніть значок зірочки</translation> <translation id="4403775189117163360">Вибрати іншу папку</translation> -<translation id="440391631796167175">Усі паролі надійні</translation> <translation id="4404136731284211429">Шукати знову</translation> <translation id="4404843640767531781">Додаток <ph name="APP_NAME" /> заблоковано батьками. Попроси в них дозвіл використовувати цей додаток.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">Виділити цю вкладку</translation> <translation id="6243280677745499710">Налаштовано зараз</translation> <translation id="6243774244933267674">Сервер недоступний</translation> -<translation id="6244185221716469155">Ненадійні паролі можна легко вгадати, тому переконайтеся, що ваші є безпечними. - <ph name="BEGIN_LINK" />Перегляньте інші поради щодо безпеки<ph name="END_LINK" />.</translation> <translation id="6244245036423700521">Імпортувати файл ONC</translation> <translation id="6246790815526961700">Завантажити з пристрою</translation> <translation id="6247620186971210352">Немає додатків</translation> @@ -6208,6 +6201,7 @@ <translation id="8281886186245836920">Пропустити</translation> <translation id="8283475148136688298">Код автентифікації відхилено під час під’єднання до "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">усі сайти <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Субтитри</translation> <translation id="8286036467436129157">Вхід</translation> <translation id="8286963743045814739">Ви можете переглядати веб-сторінки конфіденційно в режимі анонімного перегляду</translation> <translation id="8287902281644548111">Шукати за викликом API чи URL-адресою</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index fef2ef1..b5ab3c4 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -225,7 +225,6 @@ <translation id="1244303850296295656">ایکسٹینشن میں خرابی</translation> <translation id="1246158006305844142">آپ کی ایپس اور ترتیبات ان تمام Chrome OS آلات میں مطابقت پذیر ہوں گی جہاں آپ اپنے Google اکاؤنٹ کے ساتھ سائن ان ہیں۔ براؤزر کے مطابقت پذیری کے اختیارات کے ليے <ph name="LINK_BEGIN" />Chrome کی ترتیبات<ph name="LINK_END" /> پر جائیں۔</translation> <translation id="1246905108078336582">کلپ بورڈ سے تجویز ہٹائیں؟</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> فرسودہ ہونے کی وجہ سے مسدود کر دیا گیا</translation> <translation id="1251366534849411931">ابتدائی خمیدہ قوسین کی توقع ہے: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">اس سے سائٹس اور انسٹال کردہ ایپس کا <ph name="TOTAL_USAGE" /> اسٹور کردہ ڈیٹا صاف ہو جائے گا</translation> <translation id="125220115284141797">ڈیفالٹ</translation> @@ -280,7 +279,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">ہوم نیٹ ورک، رومنگ نہیں</translation> <translation id="1315056510003830387">Flash استعمال کرنے کی اجازت نہیں ہے</translation> -<translation id="1315144594965013365">اس بات کو یقینی بنائیں کہ دونوں آلات غیر مقفل ہیں، ایک دوسرے کے قریب ہیں اور ان میں بلوٹوتھ آن ہے۔ اگر آپ کسی Chromebook کے ساتھ اشتراک کر رہے ہیں تو اس بات کو یقینی بنائیں کہ اس میں قریبی آلات کے ساتھ اشتراک آن ہوچکا ہے (وقت کو منتخب کرکے اسٹیٹس ایریا کھولیں، پھر قریبی آلات کے ساتھ اشتراک کو منتخب کریں)۔</translation> <translation id="1316136264406804862">تلاش ہو رہی ہے…</translation> <translation id="1316495628809031177">مطابقت پذیری موقوف ہے</translation> <translation id="1317637799698924700">آپ کا ڈاکنگ اسٹیشن USB ٹائپ سی موافق موڈ میں آپریٹ کرے گا۔</translation> @@ -1038,7 +1036,6 @@ <translation id="2178614541317717477">CA سمجھوتہ</translation> <translation id="2182058453334755893">آپ کے کلپ بورڈ پر کاپی کر دیا گیا</translation> <translation id="2184515124301515068">Chrome کو منتخب کرنے دیں کہ سائٹس کب آواز چلا سکتی ہیں (تجویز کردہ)</translation> -<translation id="2187243482123994665">صارف کی موجودگی</translation> <translation id="2187675480456493911">آپ کے اکاؤنٹ پر موجود دیگر آلات کے ساتھ مطابقت پذیر۔ دوسرے صارفین کے ذریعے ترمیم کی گئی ترتیبات کو مطابقت پذیر نہیں کیا جائے گا۔ <ph name="LINK_BEGIN" />مزید جانیں<ph name="LINK_END" /></translation> <translation id="2187895286714876935">سرور سرٹیفکیٹ کی درآمد میں خرابی</translation> <translation id="2187906491731510095">ایکسٹینشنز اپ ڈیٹ ہو گئیں</translation> @@ -2706,7 +2703,6 @@ <translation id="4104163789986725820">برآ&مد کریں…</translation> <translation id="4107048419833779140">اسٹوریج کے آلات کی شناخت کر کے انہیں خارج کریں</translation> <translation id="4109135793348361820">ونڈو کو <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) میں منتقل کریں</translation> -<translation id="411031910327788420">اس ترتیب کو سپورٹ کرنے والی ایپس کے ليے کیپشن سائز اور طرز کو حسب ضرورت بنائیں</translation> <translation id="4110490973560452005">ڈاؤن لوڈ مکمل ہو گیا: <ph name="FILE_NAME" />۔ ڈاؤن لوڈز بار ایریا پر جانے کے لیے Shift+F6 دبائيں۔</translation> <translation id="4110686435123617899">البم <ph name="TITLE" /> <ph name="DESC" /> منتخب کریں</translation> <translation id="4110895898888439383">اعلی تناسب امتزاج وضع میں ویب براؤز کریں</translation> @@ -2919,7 +2915,6 @@ <translation id="4400632832271803360">سر فہرست قطار کی کلیدوں کے برتاؤ کو سوئچ کرنے کیلئے، لانچر کی کلید کو دبائے رکھیں</translation> <translation id="4400963414856942668">ٹیپ کو بُک مارک کرنے کے لیے آپ ستارہ پر کلک کر سکتے ہيں</translation> <translation id="4403775189117163360">ایک مختلف فولڈر منتخب کریں</translation> -<translation id="440391631796167175">کوئی کمزور پاس ورڈز نہیں ملے</translation> <translation id="4404136731284211429">دوبارہ اسکین کریں</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> آپ کے والدین کے ذریعے مسدود ہے۔ اپنے والدین سے اس ایپ کا استعمال کرنے کی اجازت طلب کریں۔</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4460,8 +4455,6 @@ <translation id="6242852299490624841">اس ٹیب کو فوکس کریں</translation> <translation id="6243280677745499710">فی الحال سیٹ ہے</translation> <translation id="6243774244933267674">سرور دستیاب نہیں ہے</translation> -<translation id="6244185221716469155">کمزور پاس ورڈز کا اندازہ لگانا آسان ہوتا ہے۔ مضبوط پاس ورڈز تخلیق کرنا یقینی بنائیں۔ - <ph name="BEGIN_LINK" />سیکیورٹی کی مزید تجاویز دیکھیں۔<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC فائل درآمد کریں</translation> <translation id="6246790815526961700">آلے سے اپ لوڈ کریں</translation> <translation id="6247620186971210352">کوئی ایپ نہیں ملی</translation> @@ -6209,6 +6202,7 @@ <translation id="8281886186245836920">نظر انداز کریں</translation> <translation id="8283475148136688298">"<ph name="DEVICE_NAME" />" سے منسلک کیے جانے کے وقت توثیقی کوڈ کو مسترد کر دیا گیا۔</translation> <translation id="8284279544186306258">سبھی <ph name="WEBSITE_1" /> سائٹس</translation> +<translation id="8284326494547611709">کیپشنز</translation> <translation id="8286036467436129157">سائن ان کریں</translation> <translation id="8286963743045814739">آپ پوشیدگی ونڈو کے ذریعے نجی طور پر براؤز کر سکتے ہيں</translation> <translation id="8287902281644548111">API کال/URL کے لحاظ سے تلاش کریں</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index 0b0890c..6e62ce5 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -225,7 +225,6 @@ <translation id="1244303850296295656">Kengaytma xatoligi</translation> <translation id="1246158006305844142">Ilova va sozlamalaringiz Google hisobingiz bilan kirilgan barcha Chrome OS qurilmalaringizda sinxronlanadi. Brauzer sinxronizatsiyasi parametrlarini <ph name="LINK_BEGIN" />Chrome sozlamalari<ph name="LINK_END" /> orqali sozlash mumkin.</translation> <translation id="1246905108078336582">Klipbord taklifi olib tashlansinmi?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> plagini eskirganligi sababli bloklandi</translation> <translation id="1251366534849411931">Chap figurali qavs kiritilmagan: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Oʻrnatilgan ilovalar va saytlar joylagan <ph name="TOTAL_USAGE" /> maʼlumot tozalab tashlanadi</translation> <translation id="125220115284141797">Asosiy</translation> @@ -280,7 +279,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Roumingsiz uy tarmog‘i</translation> <translation id="1315056510003830387">Flash ishlatish taqiqlangan</translation> -<translation id="1315144594965013365">Ikkala qurilma ham ochiq, orasidagi masofa yaqin va Bluetooth yoniq ekanini tekshiring. Agar Chromebook qurilmasiga yuborsangiz, unda Yaqin-atrofga yuborish (holat qatorida vaqt va Yaqin-atrofga yuborishni tanlang) funksiyasi yoniqligini tekshiring.</translation> <translation id="1316136264406804862">Qidirilmoqda...</translation> <translation id="1316495628809031177">Sinxronizatsiya pauza qilingan</translation> <translation id="1317637799698924700">Dok stansiya USB Type-C bilan mos rejimda ishlaydi.</translation> @@ -870,6 +868,7 @@ <translation id="1976307821760494606">ADB tuzatish vositasi <ph name="DOMAIN" /> tomonidan faolsizlantirildi. Barcha <ph name="DEVICE_TYPE" /> parametrlari 24 soatdan keyin asl holatiga qaytariladi. Kerakli fayllarni saqlab qolish uchun ularni zaxiralang.</translation> <translation id="1977965994116744507"><ph name="DEVICE_TYPE" /> qurilmasini qulfdan chiqarish uchun telefoningizni yaqinlashtiring.</translation> <translation id="1978006917103730774">Dastur va xavfsizlik sozlamalari avtomatik yangilanadi.</translation> +<translation id="1978057560491495741">Manzilni olib tashlash</translation> <translation id="1979095679518582070">Bu funksiya faol boʻlmasa ham tizim yangilanishlari va xavfsizlik kabi asosiy xizmatlarni yaxshilash maqsadida qurilma axborotlari yuborilaveradi.</translation> <translation id="1979280758666859181">Siz <ph name="PRODUCT_NAME" />‘ning ancha eski versiyasidan yangilanish kanaliga o‘tyapsiz. O‘zgartirishlar kuchga kirishi uchun kanal versiyasi qurilmangizdagi joriy versiya bilan bir xil bo‘lishi kerak.</translation> <translation id="197989455406964291">KDC bunday shifrlash turi bilan mos emas</translation> @@ -1035,7 +1034,6 @@ <translation id="2178614541317717477">Sertifikat markazi (CA) oshkor bo‘lishi</translation> <translation id="2182058453334755893">Vaqtinchalik xotiraga nusxalandi</translation> <translation id="2184515124301515068">Ovoz ijrosi Chromening o‘ziga havola (tavsiya etiladi)</translation> -<translation id="2187243482123994665">Foydalanuvchining faolligi</translation> <translation id="2187675480456493911">Hisobingizdagi boshqa qurilmalarga sinxronlandi. Boshqa foydalanuvchilar oʻzgartirgan sozlamalar sinxronlanmaydi. <ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Server sertifikatini import qilishda xatolik yuz berdi</translation> <translation id="2187906491731510095">Kengaytmalar yangilandi</translation> @@ -1072,6 +1070,7 @@ <translation id="2224444042887712269">Bu sozlama <ph name="OWNER_EMAIL" /> tomonidan o‘rnatilingan.</translation> <translation id="2224551243087462610">Jild nomini o‘zgartirish</translation> <translation id="2225864335125757863">Hisobingiz xavfsiz saqlanishi uchun bu parollarni darhol yangilang:</translation> +<translation id="2226204716217107988">Boshqa profilni tanlaysizmi?</translation> <translation id="2226449515541314767">Bu saytda MIDI qurilmalari ustidan to‘liq boshqaruv taqiqlangan.</translation> <translation id="2226907662744526012">Qulfni PIN kiritish orqali avtomatik yechish</translation> <translation id="222704500187107962">Joriy inkognito seansi tugashi bilan bu istisno avtomatik olib tashlanadi</translation> @@ -1141,6 +1140,7 @@ <translation id="2307462900900812319">Tarmoqni sozlash</translation> <translation id="230927227160767054">Bu sahifa xizmatga ishlov beruvchi vosita o‘rnatishga urinmoqda.</translation> <translation id="2309620859903500144">Bu sahifa uchun harakat yoki yorug‘lik sensorlaridan foydalanish taqiqlandi</translation> +<translation id="2312219318583366810">Sahifa URL manzili</translation> <translation id="2314165183524574721">Ayni vaqtda hech kimga koʻrinmaslik sozlangan</translation> <translation id="2314774579020744484">Tarjima qilishda ishlatiladigan til</translation> <translation id="2315414688463285945">Linux fayllarini sozlab bo‘lmadi. Qaytadan urining.</translation> @@ -2344,6 +2344,7 @@ <translation id="3713047097299026954">Bu elektron kalitda hech qanday kirish maʼlumotlari saqlanmagan</translation> <translation id="3714195043138862580">Bu demo qurilma qaydnomadan olib tashlandi.</translation> <translation id="3714633008798122362">veb-taqvim</translation> +<translation id="3715954932774762075">Bir nechta tilda ishlaydigan ilova va saytlar shu roʻyxatdagi birinchi mos tilni ishlatadi. Bu parametrlar brauzeringiz sozlamalari bilan sinxronlanadi. <ph name="BEGIN_LINK_LEARN_MORE" />Batafsil<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">Bosh sahifa</translation> <translation id="372062398998492895">CUPS printerlar</translation> <translation id="3721119614952978349">Siz va Google</translation> @@ -2504,6 +2505,7 @@ <translation id="3882165008614329320">Kamera yoki galereyadan olingan video</translation> <translation id="3886446263141354045">Bu saytni ochishga ruxsat so‘rovi <ph name="NAME" />ga yuborildi</translation> <translation id="3888550877729210209">Qaydlar <ph name="LOCK_SCREEN_APP_NAME" /> dasturida yoziladi</translation> +<translation id="3890064827463908288">Wi-Fi tarmoqlarni sinxronlash uchun Chrome sinxronizatsiyasini yoqing</translation> <translation id="3892414795099177503">OpenVPN yoki L2TP qo‘shish...</translation> <translation id="3893536212201235195">Maxsus imkoniyatlar sozlamarini o‘qish va o‘zgartirish</translation> <translation id="3893630138897523026">ChromeVox (ovozli ta’rif)</translation> @@ -2703,7 +2705,6 @@ <translation id="4104163789986725820">&Eksport qilish...</translation> <translation id="4107048419833779140">Xotira qurilmalarini aniqlash va uzib qo‘yish</translation> <translation id="4109135793348361820">Oynani <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />) foydalanuvchisi ish stoliga ko‘chirish</translation> -<translation id="411031910327788420">Bu sozlama ishlaydigan ilovalar uchun taglavhalar hajmi va uslubini sozlang</translation> <translation id="4110490973560452005">Yuklab olindi: <ph name="FILE_NAME" />. Yuklanmalar paneliga qaytish uchun Shift+F6 tugmalarini bosing.</translation> <translation id="4110686435123617899"><ph name="TITLE" /> <ph name="DESC" /> nomli albomni tanlang</translation> <translation id="4110895898888439383">Internetni yuqori kontrastli rejimda kezish</translation> @@ -2916,7 +2917,6 @@ <translation id="4400632832271803360">Yuqori qatordagi tugmalar rejimni almashtirish uchun qidiruv tugmasini bosib turing</translation> <translation id="4400963414856942668">Varaqni bukmarklash uchun yulduzchani bosing</translation> <translation id="4403775189117163360">Boshqa jildni tanlash</translation> -<translation id="440391631796167175">Kuchsiz parol topilmadi</translation> <translation id="4404136731284211429">Yana qidirish</translation> <translation id="4404843640767531781"><ph name="APP_NAME" /> ota-onangiz tomonidan bloklangan. Bu ilovadan foydalanish uchun ota-onangizdan ruxsat oling.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -3777,6 +3777,7 @@ <translation id="5449588825071916739">Barcha ichki oynalarni xatcho‘pga qo‘shish</translation> <translation id="5449716055534515760">Oynani &yopish</translation> <translation id="5452974209916053028">Joriy inkognito seans: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />, <ph name="RECENT_PERMISSIONS_CHANGE_1" />, <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">Izoh paneli oʻngga <ph name="POSITION_ON_SCREEN_FROM_LEFT" />% va pastga <ph name="POSITION_ON_SCREEN_FROM_TOP" />% surildi</translation> <translation id="5454166040603940656"><ph name="PROVIDER" /> yordamida</translation> <translation id="5457113250005438886">Yaroqsiz</translation> <translation id="5457459357461771897">Kompyuteringizdagi rasmlar, musiqa va boshqa mediafayllarni ko‘rish va o‘chirib yuborishga ruxsat</translation> @@ -3920,6 +3921,7 @@ <translation id="5602765853043467355">Qurilmadagi xatcho‘plar, tarix, parollar va boshqa ma’lumotlarni tozalash</translation> <translation id="5605623530403479164">Boshqa qidiruv tizimlari</translation> <translation id="5605758115928394442">Telefoningizga bildirishnoma yuborildi. Shaxsingizni tasdiqlang.</translation> +<translation id="560834977503641186">Wi-Fi sinxronizatsiyasi, Batafsil</translation> <translation id="5608580678041221894">Qirqilayotgan maydonni surish yoki moslash uchun quyidagi tugmalar ustiga bosing</translation> <translation id="5609231933459083978">Ilova nomi noto‘g‘ri kiritilganga o‘xshaydi.</translation> <translation id="5610038042047936818">Foto rejimini yoqish</translation> @@ -4110,6 +4112,7 @@ <translation id="5841270259333717135">Ethernet tarmoqni sozlash</translation> <translation id="5842497610951477805">Bluetooth yoniq</translation> <translation id="5843706793424741864">Farengeyt</translation> +<translation id="584451707753263735">Jonli izoh yoniq, fokuslash uchun F6 tugmasini bosing</translation> <translation id="5844574845205796324">Tanishuv uchun yangi kontent takliflari</translation> <translation id="5846200638699387931">Konfiguratsiya bilan bogʻliq imloviy xato: <ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">Yangilanishlar va ilovalarni oʻrnating. Davom etish orqali siz bu qurilma Google, aloqa operatoringiz va qurilma ishlab chiqaruvchisidan dasturiy yangilanish va ilovalarni mobil internet orqali ham avtomatik ravishda yuklab olishi va oʻrnatishiga rozilik bildirgan hisoblanasiz. Ayrim ilovalar ilova ichida xaridlarni taklif etishi mumkin.</translation> @@ -4457,8 +4460,6 @@ <translation id="6242852299490624841">Shu varaqni fokuslash</translation> <translation id="6243280677745499710">Hozirda tanlangan</translation> <translation id="6243774244933267674">Server ish faoliyatida emas</translation> -<translation id="6244185221716469155">Kuchsiz parollar oson topiladi. Kuchli parol yarating. - <ph name="BEGIN_LINK" />Xavfsizlikka oid boshqa maslahatlar bilan tanishing.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">ONC faylni import qilish</translation> <translation id="6246790815526961700">Qurilmadan yuklash</translation> <translation id="6247620186971210352">Hech qanday ilova topilmadi</translation> @@ -5366,6 +5367,7 @@ <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> endi to‘liq ekranda ko‘rsatilmoqda.</translation> <translation id="7340650977506865820">Sayt ekraningizni namoyish qilmoqda</translation> <translation id="7341834142292923918">Bu saytga ruxsat olmoqchi</translation> +<translation id="7343372807593926528">Fikr-mulohaza yuborishdan oldin muammo haqida batafsil yozing.</translation> <translation id="7345706641791090287">Parolni tasdiqlang</translation> <translation id="7346909386216857016">OK</translation> <translation id="7347452120014970266">Bunda <ph name="ORIGIN_NAME" /> saytidan saqlangan barcha maʼlumotlar, cookie fayllar va oʻrnatilgan ilovalar tozalab tashlanadi</translation> @@ -5781,6 +5783,7 @@ <translation id="7819857487979277519">PSK (WPA yoki RSN)</translation> <translation id="7819992334107904369">Chrome Sync</translation> <translation id="782057141565633384">Videoning URL manzilini nusxalash</translation> +<translation id="7822187537422052256">Bu manzil olib tashlansinmi?</translation> <translation id="7824864914877854148">Xato tufayli zaxiralanmadi</translation> <translation id="7825666486843191125">Ekran ochiqligida yaqin-atrofdagi barcha kontaktlar</translation> <translation id="782590969421016895">Joriy sahifalarni ishlatish</translation> @@ -6204,6 +6207,7 @@ <translation id="8281886186245836920">Tashlab ketish</translation> <translation id="8283475148136688298">“<ph name="DEVICE_NAME" />” qurilmasiga ulanishda haqiqiylik tekshiruvi kodi rad etildi.</translation> <translation id="8284279544186306258">barcha <ph name="WEBSITE_1" /> saytlari</translation> +<translation id="8284326494547611709">Taglavhalar</translation> <translation id="8286036467436129157">Kirish</translation> <translation id="8286963743045814739">Inkognito oynada internetni yashirin kezishingiz mumkin</translation> <translation id="8287902281644548111">API soʻrovi yoki URL manzil asosida qidirish</translation> @@ -6305,6 +6309,7 @@ <translation id="8419098111404128271">“<ph name="SEARCH_TEXT" />” uchun qidiruv natijalari</translation> <translation id="8419368276599091549"><ph name="DEVICE_TYPE" /> qurilmasiga xush kelibsiz!</translation> <translation id="8420308167132684745">Lugʻat yozuvlarini tahrirlash</translation> +<translation id="8421361468937925547">Jonli izoh (Faqat ingliz tilida)</translation> <translation id="8422787418163030046">Tarnov joyida emas</translation> <translation id="8425213833346101688">O‘zgartirish</translation> <translation id="8425492902634685834">Vazifalar paneliga qadash</translation> @@ -6333,6 +6338,7 @@ <translation id="8449036207308062757">Xotirani boshqarish</translation> <translation id="8452135315243592079">Yo‘qolgan SIM karta</translation> <translation id="8455026683977728932">ADB illustratsiyasi ishga tushmadi</translation> +<translation id="8456398879271637452">Jonli izoh yoniq, fokuslash uchun Ctrl + Back yoki Ctrl + Forward tugmalarini bosing</translation> <translation id="845702320058262034">Ulanilmadi. Telefoningizda Bluetooth yoniqligini tekshiring</translation> <translation id="8457451314607652708">Xatcho‘plarni import qilish</translation> <translation id="8458627787104127436">Barchasini (<ph name="URL_COUNT" />) yangi oynalarda ochish</translation> @@ -6843,6 +6849,7 @@ <translation id="9027459031423301635">&Havolani yangi ichki oynada ochish</translation> <translation id="9030515284705930323">Hisobingizda Google Play Market ta’minoti tashkilotingiz tomonidan yoqilmagan. Batafsil axborot uchun administratoringiz bilan bog‘laning.</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269"><ph name="PLUGIN_NAME" /> endi ishlamaydi</translation> <translation id="9031549947500880805">Google Drive omboriga zaxiralash. Maʼlumotlaringizni osongina tiklang yoki qurilmani istalgan vaqt almashtiring. Zaxira ichida ilova maʼlumotlari ham bor.</translation> <translation id="9033765790910064284">Baribir davom ettirilsin</translation> <translation id="9033857511263905942">&Joylash</translation> @@ -6851,6 +6858,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{Yana bir marta urinishingiz mumkin.}other{Yana # marta urinishingiz mumkin.}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571"><ph name="ORIGIN" /> uchun parol yangilansinmi?</translation> +<translation id="9041049756004505730">Jonli izoh yoniq, fokuslash uchun ⌘ + Option + Tepaga yoki Pastga strelka tugmalarini bosing</translation> <translation id="9041692268811217999">Kompyuteringizdagi fayllarga kirish administrator tomonidan taqiqlab qo‘yilgan</translation> <translation id="904224458472510106">Bu amalni bekor qilish imkonsiz</translation> <translation id="9042893549633094279">Maxfiylik va xavfsizlik</translation> @@ -6889,6 +6897,7 @@ <translation id="9088446193279799727">Linux sozlanmadi. Internetga ulanib, qaytadan urining.</translation> <translation id="9088917181875854783">“<ph name="DEVICE_NAME" />” qurilmasida kalit iborani tasdiqlang:</translation> <translation id="9089416786594320554">Matn kiritish</translation> +<translation id="909108997331068008"><ph name="EXISTING_USER" /> profili allaqachon <ph name="NEW_USER" /> hisobidan kirgan</translation> <translation id="9093429538970210897">Yangilanish bajarilmay qolmasligi uchun fayllarni zaxiralash tavsiya etiladi. Yangilanish Linux (Beta) seansining yakunlanishidan boshlanadi. Davom etish uchun ochiq fayllarni saqlab oling.</translation> <translation id="9094033019050270033">Parolni yangilash</translation> <translation id="9094038138851891550">Foydalanuvchi nomi yaroqsiz</translation> @@ -7063,5 +7072,6 @@ <translation id="994289308992179865">&Takrorlash</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">Xavfsiz aloqa o‘rnatilmoqda...</translation> +<translation id="99731366405731005">Wi-Fi tarmoqlarni sinxronlash uchun <ph name="LINK1_BEGIN" />Chrome sinxronizatsiyasini<ph name="LINK1_END" /> yoqing <ph name="LINK2_BEGIN" />Batafsil<ph name="LINK2_END" /></translation> <translation id="998747458861718449">Kodini ko‘rish</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index 7db00cd..11ebcd8 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Lỗi tiện ích</translation> <translation id="1246158006305844142">Các ứng dụng và tùy chọn cài đặt của bạn sẽ đồng bộ hóa trên mọi thiết bị Chrome OS mà bạn đã đăng nhập bằng Tài khoản Google của mình. Để biết các tùy chọn đồng bộ hóa trình duyệt, hãy chuyển đến phần <ph name="LINK_BEGIN" />Cài đặt Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Xóa nội dung đề xuất khỏi khay nhớ tạm?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> bị chặn vì đã ngừng hoạt động</translation> <translation id="1251366534849411931">Thiếu dấu ngoặc nhọn mở: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Thao tác này sẽ xóa <ph name="TOTAL_USAGE" /> dữ liệu lưu trữ trong các trang web và ứng dụng đã cài đặt</translation> <translation id="125220115284141797">Mặc định</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Mạng chủ, không chuyển vùng</translation> <translation id="1315056510003830387">Không được phép sử dụng đèn Flash</translation> -<translation id="1315144594965013365">Hãy đảm bảo cả hai thiết bị đã mở khóa, ở gần nhau và đã bật Bluetooth. Nếu bạn đang chia sẻ với Chromebook, hãy đảm bảo thiết bị này đã bật tính năng Chia sẻ lân cận (mở khu vực trạng thái bằng cách chọn giờ, sau đó chọn tính năng Chia sẻ lân cận).</translation> <translation id="1316136264406804862">Đang tìm kiếm...</translation> <translation id="1316495628809031177">Quá trình đồng bộ hóa hiện tạm dừng</translation> <translation id="1317637799698924700">Đế sạc sẽ hoạt động ở chế độ tương thích với USB Type-C.</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">Lộ CA</translation> <translation id="2182058453334755893">Đã sao chép vào khay nhớ tạm</translation> <translation id="2184515124301515068">Cho phép Chrome chọn thời điểm trang web có thể phát âm thanh (khuyên dùng)</translation> -<translation id="2187243482123994665">Hoạt động của người dùng</translation> <translation id="2187675480456493911">Đã đồng bộ hóa với các thiết bị khác trên tài khoản của bạn. Các tùy chọn cài đặt do những người dùng khác sửa đổi sẽ không được đồng bộ hóa. <ph name="LINK_BEGIN" />Tìm hiểu thêm<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Lỗi nhập chứng chỉ máy chủ</translation> <translation id="2187906491731510095">Đã cập nhật tiện ích</translation> @@ -2705,7 +2702,6 @@ <translation id="4104163789986725820">X&uất...</translation> <translation id="4107048419833779140">Nhận dạng và ngắt kết nối thiết bị lưu trữ</translation> <translation id="4109135793348361820">Di chuyển cửa sổ đến <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Tùy chỉnh kích thước và kiểu phụ đề cho những ứng dụng hỗ trợ tùy chọn cài đặt này</translation> <translation id="4110490973560452005">Đã tải xuống xong: <ph name="FILE_NAME" />. Nhấn tổ hợp phím Shift + F6 để chuyển tới khu vực thanh Tệp đã tải xuống.</translation> <translation id="4110686435123617899">Chọn album <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Duyệt web trong chế độ tương phản cao</translation> @@ -2918,7 +2914,6 @@ <translation id="4400632832271803360">Giữ phím Trình khởi chạy để chuyển đổi chức năng của các phím hàng trên cùng</translation> <translation id="4400963414856942668">Bạn có thể nhấp vào dấu sao để đánh dấu một thẻ</translation> <translation id="4403775189117163360">Chọn một thư mục khác</translation> -<translation id="440391631796167175">Không phát hiện thấy mật khẩu yếu</translation> <translation id="4404136731284211429">Quét lại</translation> <translation id="4404843640767531781">Cha mẹ bạn đã chặn <ph name="APP_NAME" />. Hãy xin phép cha mẹ cấp quyền sử dụng ứng dụng này.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4459,8 +4454,6 @@ <translation id="6242852299490624841">Lấy tiêu điểm thẻ này</translation> <translation id="6243280677745499710">Hiện đã được đặt</translation> <translation id="6243774244933267674">Máy chủ không khả dụng</translation> -<translation id="6244185221716469155">Mật khẩu yếu thường dễ đoán. Hãy nhớ tạo mật khẩu mạnh. - <ph name="BEGIN_LINK" />Xem các mẹo bảo mật khác.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Nhập tệp ONC</translation> <translation id="6246790815526961700">Tải lên từ thiết bị</translation> <translation id="6247620186971210352">Không tìm thấy ứng dụng nào</translation> @@ -6208,6 +6201,7 @@ <translation id="8281886186245836920">Bỏ qua</translation> <translation id="8283475148136688298">Mã xác thực bị từ chối trong khi kết nối với "<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">tất cả trang web <ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Phụ đề</translation> <translation id="8286036467436129157">Đăng nhập</translation> <translation id="8286963743045814739">Bạn có thể duyệt web riêng tư bằng cách sử dụng cửa sổ ẩn danh</translation> <translation id="8287902281644548111">Tìm kiếm theo lệnh gọi API/URL</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index 3350b75..421857a 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">扩展程序错误</translation> <translation id="1246158006305844142">您的应用和设置会在您使用自己的 Google 帐号登录的所有 Chrome 操作系统设备上保持同步。如需了解浏览器同步选项,请转到 <ph name="LINK_BEGIN" />Chrome 设置<ph name="LINK_END" />。</translation> <translation id="1246905108078336582">从剪贴板中移除建议?</translation> -<translation id="1249643471736608405">“<ph name="PLUGIN_NAME" />”已被屏蔽,因为它已被弃用</translation> <translation id="1251366534849411931">缺少左大括号:<ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">此操作会清除网站及安装的应用存储的 <ph name="TOTAL_USAGE" /> 数据</translation> <translation id="125220115284141797">默认</translation> @@ -278,7 +277,7 @@ <translation id="1313705515580255288">系统会将您的书签、浏览记录和其他设置同步到您的Google帐号。</translation> <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">家庭网络,非漫游</translation> -<translation id="1315144594965013365">请确保这两部设备均已解锁、相距很近且均已开启蓝牙。如果您的分享对象是一部 Chromebook,请确保已为它开启“附近分享”功能(先通过选择时间打开状态区,然后选择“附近分享”)。</translation> +<translation id="1315056510003830387">不允许使用 Flash</translation> <translation id="1316136264406804862">正在搜索...</translation> <translation id="1316495628809031177">同步已暂停</translation> <translation id="1317637799698924700">您的基座将以与 USB C 型兼容的模式运行。</translation> @@ -337,6 +336,7 @@ <translation id="1386791642444521222">激活实体 SIM 卡</translation> <translation id="1387519831959169718">若要将您的浏览数据与 <ph name="NEW_USER" /> 的浏览数据分隔开来,您可为该用户创建一份新的个人资料</translation> <translation id="138784436342154190">要恢复默认启动页吗?</translation> +<translation id="1388253969141979417">允许使用您的麦克风</translation> <translation id="1388728792929436380">待更新完毕后,<ph name="DEVICE_TYPE" /> 将会重启。</translation> <translation id="1389342855416376185">禁用受保护内容</translation> <translation id="1390548061267426325">在常规标签页中打开</translation> @@ -387,6 +387,7 @@ <translation id="1433811987160647649">使用前先询问</translation> <translation id="1434696352799406980">这将重置您的启动页、“打开新的标签页”页面、搜索引擎和固定标签页,同时还会停用所有扩展程序并清除临时数据(例如 Cookie)。但是,系统不会清除您的书签、历史记录和保存的密码。</translation> <translation id="1434886155212424586">首页是新标签页</translation> +<translation id="1435515966666225466">允许使用插件访问您的计算机</translation> <translation id="1436390408194692385">有效期:<ph name="TICKET_TIME_LEFT" /></translation> <translation id="1436671784520050284">继续设置</translation> <translation id="1436784010935106834">已删除</translation> @@ -470,6 +471,7 @@ <translation id="1530838837447122178">打开鼠标和触控板设备设置</translation> <translation id="1531004739673299060">应用窗口</translation> <translation id="1531275250079031713">显示“添加新 Wi-Fi 网络”对话框</translation> +<translation id="1535228823998016251">大</translation> <translation id="1536754031901697553">正在断开连接…</translation> <translation id="1537254971476575106">全屏放大镜</translation> <translation id="15373452373711364">大号鼠标光标</translation> @@ -553,6 +555,7 @@ <translation id="1627408615528139100">已下载</translation> <translation id="1628948239858170093">打开前,先扫描文件?</translation> <translation id="1629314197035607094">密码已过期</translation> +<translation id="163072119192489970">允许完成数据收发操作</translation> <translation id="1630768113285622200">重启并继续</translation> <translation id="1632082166874334883">您的 Google 帐号中存储的密码</translation> <translation id="1632803087685957583">可让您调整键盘重复输入速率、字词预测功能等</translation> @@ -750,6 +753,7 @@ <translation id="1841705068325380214"><ph name="EXTENSION_NAME" /> 已被禁用</translation> <translation id="184273675144259287">以先前的备份替换您的 Linux 应用和文件</translation> <translation id="1842766183094193446">确定要启用演示模式吗?</translation> +<translation id="1845727111305721124">允许播放声音</translation> <translation id="1846308012215045257">按住 Ctrl 键的同时点击即可运行 <ph name="PLUGIN_NAME" /></translation> <translation id="1849186935225320012">此页面可以完全控制 MIDI 设备。</translation> <translation id="1850508293116537636">顺时针旋转(&C)</translation> @@ -774,6 +778,7 @@ <translation id="187145082678092583">收起部分应用</translation> <translation id="1871534214638631766">在您右键点击或长按内容时显示相关信息</translation> <translation id="1871615898038944731">您的 <ph name="DEVICE_TYPE" /> 使用的操作系统已为最新版本</translation> +<translation id="1874248162548993294">允许展示任何广告</translation> <translation id="1874972853365565008">{NUM_TABS,plural, =1{将标签页移至另一个窗口}other{将标签页移至另一个窗口}}</translation> <translation id="1875386316419689002">此标签页已连接到 HID 设备。</translation> <translation id="1875387611427697908">只能通过<ph name="CHROME_WEB_STORE" />添加此项内容</translation> @@ -829,6 +834,7 @@ <translation id="1931152874660185993">没有安装任何组件。</translation> <translation id="1932098463447129402">不早于</translation> <translation id="1933809209549026293">请连接鼠标或键盘。如果您使用蓝牙设备,请确保它可进行配对。</translation> +<translation id="1935303383381416800">允许查看您的位置信息</translation> <translation id="1936931585862840749">请使用一个介于 1-<ph name="MAX_COPIES" /> 之间的数字来表明要打印多少份。</translation> <translation id="1937774647013465102">无法使用此设备(即 <ph name="ARCHITECTURE_DEVICE" />)导入容器架构类型 <ph name="ARCHITECTURE_CONTAINER" />。您既可尝试将此容器恢复到另一设备中,也可使用“文件”应用打开此容器映像内的文件以进行访问。</translation> <translation id="1938351510777341717">外部命令</translation> @@ -946,6 +952,7 @@ <translation id="2090165459409185032">要恢复您的帐号信息,请访问 google.com/accounts/recovery</translation> <translation id="2090876986345970080">系统安全设置</translation> <translation id="2091887806945687916">声音</translation> +<translation id="209539936453343974">如果您要设置家长控制,孩子必须有一个由家长管理的 Google 帐号。通过 <ph name="DEVICE_TYPE_PLURAL" />,家长可以使用 Family Link 应用来设定设备使用时限、允许/禁止访问网站以及执行其他操作。家长还可于需要时添加学校帐号,以方便孩子在 Google 课堂等网站上完成学校作业。</translation> <translation id="2096715839409389970">清除第三方 Cookie</translation> <translation id="2097372108957554726">您需要登录 Chrome 才能注册新设备</translation> <translation id="2098805196501063469">检查其余的密码</translation> @@ -1025,7 +1032,6 @@ <translation id="2178614541317717477">CA 泄漏</translation> <translation id="2182058453334755893">已复制到您的剪贴板</translation> <translation id="2184515124301515068">让 Chrome 选择何时允许网站播放声音(推荐)</translation> -<translation id="2187243482123994665">用户活跃状态</translation> <translation id="2187675480456493911">已与您帐号中的其他设备同步。其他用户修改的设置不会进行同步。<ph name="LINK_BEGIN" />了解详情<ph name="LINK_END" /></translation> <translation id="2187895286714876935">服务器证书导入错误</translation> <translation id="2187906491731510095">扩展程序已更新</translation> @@ -1096,6 +1102,7 @@ <translation id="2261323523305321874">您的管理员做出了一项系统级更改,致使一些旧个人资料遭到停用。</translation> <translation id="2262332168014443534">现在,精简模式可使所有网页(包括 HTTPS 网页)以更快的速度加载。</translation> <translation id="2262477216570151239">重复前的延迟时间</translation> +<translation id="2262888617381992508">不允许播放受保护内容</translation> <translation id="2263189956353037928">退出并重新登录</translation> <translation id="2263371730707937087">屏幕刷新频率</translation> <translation id="22665427234727190">在网站想访问蓝牙设备时询问您(推荐)</translation> @@ -1363,6 +1370,7 @@ <translation id="2571655996835834626">更改您用于控制以下权限的设置:网站对 Cookie、JavaScript、插件、地理位置信息、麦克风、摄像头等功能的使用权限。</translation> <translation id="2572032849266859634">已授予对 <ph name="VOLUME_NAME" />的只读权限。</translation> <translation id="2575247648642144396">仅当此扩展程序能够对当前网页采取操作时,该图标才会显示。要使用此扩展程序,请点击该图标或按 <ph name="EXTENSION_SHORTCUT" />。</translation> +<translation id="2575441894380764255">不允许展示侵扰性或误导性广告</translation> <translation id="257779572837908839">设为 Chromebox 会易设备</translation> <translation id="2579232805407578790">无法连接到服务器。请检查您的网络连接并重试。如果问题仍然存在,请重启您的 Chromebook。错误代码:<ph name="ERROR_CODE" />。</translation> <translation id="2580889980133367162">始终允许 <ph name="HOST" /> 下载多个文件</translation> @@ -1629,6 +1637,7 @@ <translation id="2880660355386638022">窗口放置</translation> <translation id="2881076733170862447">当您点击此扩展程序时</translation> <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> 将立即重新启动并重置</translation> +<translation id="288387288628762616">允许使用 Flash</translation> <translation id="2885378588091291677">任务管理器</translation> <translation id="2885729872133513017">对服务器响应进行解码时出问题了。</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> @@ -1663,6 +1672,7 @@ <translation id="2923234477033317484">移除此帐号</translation> <translation id="2926085873880284723">恢复默认快捷方式</translation> <translation id="2927017729816812676">缓存空间</translation> +<translation id="2928795416630981206">允许跟踪您的摄像头位置</translation> <translation id="2931157624143513983">适合可打印区域</translation> <translation id="2932085390869194046">建议密码…</translation> <translation id="2932330436172705843"><ph name="PROFILE_DISPLAY_NAME" />(未成年人帐号)</translation> @@ -1670,6 +1680,7 @@ <translation id="2932883381142163287">举报滥用行为</translation> <translation id="2933632078076743449">上次更新时间</translation> <translation id="2934999512438267372">已允许全面控制 MIDI 设备</translation> +<translation id="2935654492420446828">需要时再添加学校帐号</translation> <translation id="2936851848721175671">备份和恢复</translation> <translation id="2938225289965773019">打开<ph name="PROTOCOL" />链接</translation> <translation id="2938845886082362843">查看和删除您的安全密钥中存储的登录数据</translation> @@ -1773,6 +1784,7 @@ <translation id="3060379269883947824">启用“随选朗读”</translation> <translation id="3060952009917586498">更改设备语言。当前语言为<ph name="LANGUAGE" />。</translation> <translation id="3065041951436100775">标签页意外关闭反馈。</translation> +<translation id="306535478112428611">不允许修改您设备上的文件和文件夹</translation> <translation id="3065522099314259755">键盘重复延迟时间</translation> <translation id="3067198179881736288">安装应用?</translation> <translation id="3067198360141518313">运行此插件</translation> @@ -1908,6 +1920,7 @@ <translation id="324849028894344899"><ph name="WINDOW_TITLE" /> - 网络错误</translation> <translation id="3248902735035392926">安全至上。请花点时间<ph name="BEGIN_LINK" />立即检查一下您的扩展程序<ph name="END_LINK" />吧</translation> <translation id="3251759466064201842"><未包含在证书中></translation> +<translation id="325238099842880997">设置数字设备基本使用规则,以方便孩子在家中玩乐、探索和完成学校作业</translation> <translation id="3253225298092156258">无法选择</translation> <translation id="3253448572569133955">未知帐号</translation> <translation id="3254084468305910013">{COUNT,plural, =0{未发现任何安全问题}=1{发现了 {COUNT} 个安全问题}other{发现了 {COUNT} 个安全问题}}</translation> @@ -2035,6 +2048,7 @@ <translation id="3404249063913988450">启用屏保功能</translation> <translation id="3405664148539009465">自定义字体</translation> <translation id="3405763860805964263">…</translation> +<translation id="3406290648907941085">允许使用虚拟实境设备和数据</translation> <translation id="3406396172897554194">按语言或输入法名称搜索</translation> <translation id="3406605057700382950">显示书签栏(&S)</translation> <translation id="340671561090997290">{NUM_EXTENSIONS,plural, =1{这个扩展程序可能含有危险因素}other{这些扩展程序可能含有危险因素}}</translation> @@ -2199,6 +2213,7 @@ <translation id="3586806079541226322">无法打开此文件</translation> <translation id="3586931643579894722">隐藏详细信息</translation> <translation id="3587482841069643663">全部</translation> +<translation id="3588790464166520201">允许安装付款处理程序</translation> <translation id="3589766037099229847">已拦截不安全内容</translation> <translation id="3590194807845837023">解锁个人资料并重新启动</translation> <translation id="3590295622232282437">正在进入受管理自助服务终端。</translation> @@ -2424,6 +2439,7 @@ <translation id="3822559385185038546">此代理已由您的管理员强制启用</translation> <translation id="3823310065043511710">建议为 Linux 留出至少 <ph name="INSTALL_SIZE" /> 的空间。</translation> <translation id="3824621460022590830">设备注册令牌无效。请与设备所有者或管理员联系。错误代码:<ph name="ERROR_CODE" />。</translation> +<translation id="3826071569074535339">允许使用移动传感器</translation> <translation id="3826440694796503677">您的管理员已禁止添加更多 Google 帐号</translation> <translation id="3827306204503227641">继续允许使用未经过沙盒屏蔽的插件</translation> <translation id="3827774300009121996">全屏幕(&F)</translation> @@ -2476,6 +2492,8 @@ <translation id="3873423927483480833">显示 PIN 码</translation> <translation id="3873915545594852654">ARC++ 出问题了。</translation> <translation id="3874164307099183178">开启 Google 助理</translation> +<translation id="3877075909000773256"><ph name="USER_NAME" />的设备的“附近分享”设置,通过帐号 <ph name="USER_EMAIL" /> 分享。</translation> +<translation id="387771067039689031">不允许使用插件访问您的计算机</translation> <translation id="3879748587602334249">下载管理器</translation> <translation id="3881478300875776315">隐藏部分行</translation> <translation id="3882165008614329320">来自摄像头或文件的现有视频</translation> @@ -2512,6 +2530,7 @@ <translation id="3919145445993746351">若想在您的所有计算机上使用您的扩展程序,请开启同步功能</translation> <translation id="3920504717067627103">证书政策</translation> <translation id="392089482157167418">启用 ChromeVox(语音反馈)</translation> +<translation id="3920909973552939961">不允许安装付款处理程序</translation> <translation id="3923184630988645767">流量使用</translation> <translation id="3923676227229836009">此页面可查看文件</translation> <translation id="3924145049010392604">Meta</translation> @@ -2635,6 +2654,7 @@ <translation id="4058793769387728514">立即检查文稿</translation> <translation id="406070391919917862">后台应用</translation> <translation id="4061374428807229313">若要共享文件夹,请在“文件”应用中右键点击相应文件夹,然后选择“与 Parallels Desktop 共享”。</translation> +<translation id="406213378265872299">自定义的行为</translation> <translation id="4065876735068446555">您正在使用的网络 (<ph name="NETWORK_ID" />) 可能需要您访问其登录页面。</translation> <translation id="4066207411788646768">请检查您的网络连接状况,以查看网络中可用的打印机</translation> <translation id="4068776064906523561">已保存的指纹</translation> @@ -2677,7 +2697,6 @@ <translation id="4104163789986725820">导出(&X)...</translation> <translation id="4107048419833779140">识别并弹出存储设备</translation> <translation id="4109135793348361820">将窗口移至<ph name="USER_NAME" />(<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">针对支持此设置的应用自定义字幕大小和样式</translation> <translation id="4110490973560452005">下载完成:<ph name="FILE_NAME" />。按 Shift+F6 可切换到下载内容栏区域。</translation> <translation id="4110686435123617899">选择影集“<ph name="TITLE" />”,<ph name="DESC" /></translation> <translation id="4110895898888439383">以高反差模式浏览网页</translation> @@ -2782,6 +2801,7 @@ <translation id="425573743389990240">电池放电率(单位为瓦,负值表示电池正在充电)</translation> <translation id="4256316378292851214">视频存储为(&V)...</translation> <translation id="4258348331913189841">文件系统</translation> +<translation id="4259388776256904261">该过程可能需要一点时间</translation> <translation id="4260182282978351200"><ph name="FILE_NAME" /> 可能含有危险内容。发送给 Google 高级保护进行扫描?按 Shift+F6 可切换到“下载内容栏”区域。</translation> <translation id="4263223596040212967">请检查键盘布局,然后重试。</translation> <translation id="4263757076580287579">已取消注册打印机。</translation> @@ -2933,6 +2953,7 @@ <translation id="4450974146388585462">诊断</translation> <translation id="4451479197788154834">您的密码已保存到此设备上和您的 Google 帐号中</translation> <translation id="4451757071857432900">已禁止会展示侵扰性或误导性广告的网站显示广告(推荐)</translation> +<translation id="4453205916657964690">子网掩码</translation> <translation id="4453946976636652378">在<ph name="SEARCH_ENGINE_NAME" />中搜索,或者输入一个网址</translation> <translation id="4459169140545916303"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> 天前曾有活动</translation> <translation id="4460014764210899310">取消分组</translation> @@ -2960,6 +2981,7 @@ <translation id="4481530544597605423">未配对的设备</translation> <translation id="4483049906298469269">未能对非默认网关执行 ping 操作</translation> <translation id="4487489714832036847">Chromebook 使用应用代替传统软件。无论您是想提高办公效率、娱乐身心还是有其他需求,都能在这里找到合适的应用。</translation> +<translation id="4488257340342212116">允许使用您的摄像头</translation> <translation id="4488502501195719518">清除所有数据?</translation> <translation id="449232563137139956">网站通常会显示图片以提供插图(例如网店或新闻报道的图片)</translation> <translation id="4493468155686877504">建议大小 (<ph name="INSTALL_SIZE" />)</translation> @@ -2992,6 +3014,7 @@ <translation id="4524832533047962394">此版本的操作系统不支持所提供的注册模式。请确保您运行的是最新版本。</translation> <translation id="4527186207340858212">创建一份新的工作资料?</translation> <translation id="452750746583162491">查看您已同步的数据</translation> +<translation id="4527929807707405172">启用反向滚动。<ph name="LINK_BEGIN" />了解详情<ph name="LINK_END" /></translation> <translation id="4528494169189661126">建议翻译</translation> <translation id="4530494379350999373">来源</translation> <translation id="4531924570968473143">您想将谁添加到此 <ph name="DEVICE_TYPE" />?</translation> @@ -3012,6 +3035,7 @@ <translation id="4545028762441890696">要重新启用它,请接受新权限:</translation> <translation id="4545759655004063573">因权限不足而无法保存。请保存到其他位置。</translation> <translation id="4546308221697447294">使用 Google Chrome 进行快速浏览</translation> +<translation id="4546345569117159016">右键</translation> <translation id="4546692474302123343">Google 助理语音输入</translation> <translation id="4547659257713117923">没有从其他设备打开的标签页</translation> <translation id="4547672827276975204">自动设置</translation> @@ -3071,6 +3095,7 @@ <translation id="4608500690299898628">查找(&F)...</translation> <translation id="4608520674724523647">注册成功图示</translation> <translation id="4608703838363792434"><ph name="FILE_NAME" /> 包含敏感内容</translation> +<translation id="4609987916561367134">允许使用 JavaScript</translation> <translation id="4610162781778310380">“<ph name="PLUGIN_NAME" />”遇到了错误</translation> <translation id="4610637590575890427">您是不是要访问 <ph name="SITE" />?</translation> <translation id="4611114513649582138">有可用的数据网络连接</translation> @@ -3182,6 +3207,7 @@ <translation id="473775607612524610">更新</translation> <translation id="473936925429402449">已选择,第 <ph name="CURRENT_ELEMENT" /> 项附加内容,共 <ph name="TOTAL_ELEMENTS" /> 项</translation> <translation id="4739639199548674512">票据</translation> +<translation id="4742334355511750246">不允许显示图片</translation> <translation id="4743260470722568160"><ph name="BEGIN_LINK" />了解如何更新应用<ph name="END_LINK" /></translation> <translation id="4744981231093950366">{NUM_TABS,plural, =1{将这个网站取消静音}other{将这些网站取消静音}}</translation> <translation id="4746351372139058112">信息</translation> @@ -3317,6 +3343,7 @@ <translation id="4908811072292128752">只需打开一个新标签页,即可同时浏览两个网站</translation> <translation id="4909038193460299775">由于此帐号是由 <ph name="DOMAIN" /> 管理,因此系统将会从该设备中清除您的书签、历史记录、密码及其他设置。但是,您的数据依然会存储在您的 Google 帐号中,而且您可以通过 <ph name="BEGIN_LINK" />Google 信息中心<ph name="END_LINK" />管理这些数据。</translation> <translation id="4912643508233590958">闲置状态唤醒</translation> +<translation id="4915961947098019832">允许显示图片</translation> <translation id="4916542008280060967">允许此网站修改“<ph name="FILE_NAME" />”?</translation> <translation id="491691592645955587">切换到安全的浏览器</translation> <translation id="4917385247580444890">强</translation> @@ -3404,6 +3431,7 @@ <translation id="5027550639139316293">电子邮件证书</translation> <translation id="5027562294707732951">添加扩展程序</translation> <translation id="5029568752722684782">清除副本</translation> +<translation id="5033137252639132982">不允许使用移动传感器</translation> <translation id="5033266061063942743">几何图形</translation> <translation id="5036662165765606524">禁止任何网站自动下载多个文件</translation> <translation id="5037676449506322593">全选</translation> @@ -3453,6 +3481,7 @@ <translation id="5088172560898466307">服务器主机名</translation> <translation id="5088534251099454936">PKCS #1,带有 RSA 加密的 SHA-512</translation> <translation id="5089810972385038852">州/省/直辖市/自治区</translation> +<translation id="5090637338841444533">不允许跟踪您的摄像头位置</translation> <translation id="5094721898978802975">与协作的本机应用通信</translation> <translation id="5097002363526479830">无法连接到网络“<ph name="NAME" />”:<ph name="DETAILS" /></translation> <translation id="5097649414558628673">工具:<ph name="PRINT_NAME" /></translation> @@ -3761,6 +3790,7 @@ <translation id="5471768120198416576">您好!这是文字转语音的语音。</translation> <translation id="5472627187093107397">为此网站保存密码</translation> <translation id="5473333559083690127">请重新输入新的 PIN 码</translation> +<translation id="5481273127572794904">不允许自动下载多个文件</translation> <translation id="5481941284378890518">添加附近的打印机</translation> <translation id="5483785310822538350">撤消对文件和设备的访问权限</translation> <translation id="5485080380723335835">为了提升安全性,您的 <ph name="DEVICE_TYPE" /> 已被锁定。请手动输入您的密码以继续操作。</translation> @@ -3782,6 +3812,7 @@ <translation id="5495466433285976480">执行此操作后,所有本地用户、文件、数据和其他设置都将遭到删除,下次重启后您将再也看不到这些内容。所有用户均必须重新登录。</translation> <translation id="5495597166260341369">不关闭显示屏</translation> <translation id="5496587651328244253">整理</translation> +<translation id="5496730470963166430">不允许发送弹出式窗口或使用重定向</translation> <translation id="5497251278400702716">此文件</translation> <translation id="5498967291577176373">提供与您名字、地址或电话号码有关的内嵌建议,帮助您提高输入速度</translation> <translation id="5499313591153584299">此文件可能对您的计算机有害。</translation> @@ -3789,6 +3820,7 @@ <translation id="5500709606820808700">今天运行过安全检查</translation> <translation id="5501809658163361512">{COUNT,plural, =1{未能收到“<ph name="DEVICE_NAME" />”发来的 <ph name="ATTACHMENTS" />}other{未能收到“<ph name="DEVICE_NAME" />”发来的 <ph name="ATTACHMENTS" />}}</translation> <translation id="5502500733115278303">从 Firefox 导入</translation> +<translation id="5502915260472117187">孩子</translation> <translation id="5503982651688210506">继续允许 <ph name="HOST" /> 使用和移动您的摄像头,并允许其使用您的麦克风</translation> <translation id="5505264765875738116">网站无法询问能否向您发送通知</translation> <translation id="5505307013568720083">墨水已耗尽</translation> @@ -3876,6 +3908,7 @@ <translation id="5596627076506792578">更多选项</translation> <translation id="5600706100022181951">下载更新需要使用 <ph name="UPDATE_SIZE_MB" /> MB 的移动数据流量。要继续吗?</translation> <translation id="5601503069213153581">PIN</translation> +<translation id="5601823921345337195">不允许连接到 MIDI 设备</translation> <translation id="5602765853043467355">清除此设备上的书签、历史记录、密码等信息</translation> <translation id="5605623530403479164">其他搜索引擎</translation> <translation id="5605758115928394442">系统向您的手机发送了一条通知,以确认您的身份。</translation> @@ -3996,6 +4029,7 @@ <translation id="5747552184818312860">到期时间</translation> <translation id="5747785204778348146">开发者版本 - 不稳定</translation> <translation id="5747809636523347288">粘贴并转到 <ph name="URL" /></translation> +<translation id="5754152670305761216">允许播放受保护内容</translation> <translation id="5756163054456765343">帮助中心(&E)</translation> <translation id="5759728514498647443">您通过“<ph name="APP_NAME" />”发送以进行打印的文档可由“<ph name="APP_NAME" />”读取。</translation> <translation id="5763751966069581670">未找到任何 USB 设备</translation> @@ -4415,8 +4449,6 @@ <translation id="6242852299490624841">聚焦此标签页</translation> <translation id="6243280677745499710">当前设置的壁纸</translation> <translation id="6243774244933267674">服务器不可用</translation> -<translation id="6244185221716469155">安全系数低的密码容易被人猜到。请务必设置安全系数高的密码。 - <ph name="BEGIN_LINK" />查看更多安全提示<ph name="END_LINK" />。</translation> <translation id="6244245036423700521">导入 ONC 文件</translation> <translation id="6246790815526961700">从设备上传</translation> <translation id="6247620186971210352">未找到任何应用</translation> @@ -4464,6 +4496,7 @@ <translation id="6295158916970320988">所有网站</translation> <translation id="6295855836753816081">正在保存…</translation> <translation id="6298962879096096191">使用 Google Play 安装 Android 应用</translation> +<translation id="6300177430812514606">不允许完成数据收发操作</translation> <translation id="630065524203833229">退出(&X)</translation> <translation id="6300718114348072351">无法自动配置<ph name="PRINTER_NAME" />。请指定高级打印机详细信息。<ph name="LINK_BEGIN" />了解详情<ph name="LINK_END" /></translation> <translation id="6301076166764763868">若要将个人的浏览数据与 <ph name="EXISTING_USER" /> 的浏览数据分隔开来,请为 <ph name="NEW_USER" /> 创建一份新的个人资料</translation> @@ -4541,6 +4574,7 @@ <translation id="6390020764191254941">将标签页移至新窗口</translation> <translation id="6390799748543157332">当您关闭以访客身份打开的所有窗口后,您在此窗口中浏览的网页将不会显示在浏览器历史记录中,也不会在计算机上留下其他痕迹(例如Cookie)。不过,您下载的所有文件均会保留下来。</translation> <translation id="6393156038355142111">建议一个安全系数高的密码</translation> +<translation id="6393550101331051049">允许显示不安全内容</translation> <translation id="6395423953133416962">发送<ph name="BEGIN_LINK1" />系统信息<ph name="END_LINK1" />和<ph name="BEGIN_LINK2" />指标<ph name="END_LINK2" /></translation> <translation id="6396988158856674517">禁止网站使用动态传感器</translation> <translation id="6398715114293939307">移除 Google Play 商店</translation> @@ -4573,6 +4607,7 @@ <translation id="6425556984042222041">文字转语音的语速</translation> <translation id="6426200009596957090">打开 ChromeVox 设置</translation> <translation id="642654727595919401"><ph name="DOMAIN" /> 要求您备份自己的数据并在 1 周内退还此 <ph name="DEVICE_TYPE" />。<ph name="LINK_BEGIN" />查看详情<ph name="LINK_END" /></translation> +<translation id="642729974267661262">不允许播放声音</translation> <translation id="6428982734197629783">正在处理图片</translation> <translation id="6429384232893414837">更新错误</translation> <translation id="6430814529589430811">Base64 编码 ASCII,单一证书</translation> @@ -4601,6 +4636,7 @@ <translation id="6458701200018867744">上传失败(<ph name="WEBRTC_LOG_UPLOAD_TIME" />)。</translation> <translation id="6459488832681039634">使用所选内容查找</translation> <translation id="6459799433792303855">活动窗口已移至另一显示屏。</translation> +<translation id="6460566145397380451">允许连接到 MIDI 设备</translation> <translation id="6460601847208524483">查找下一个</translation> <translation id="6461170143930046705">正在搜索网络…</translation> <translation id="6463795194797719782">修改(&E)</translation> @@ -4632,6 +4668,7 @@ <translation id="6499681088828539489">禁止共享网络使用代理</translation> <translation id="650266656685499220">如需创建影集,请转至 Google 相册。</translation> <translation id="6503077044568424649">常去网站</translation> +<translation id="650457560773015827">左键</translation> <translation id="6504611359718185067">请连接到互联网以添加打印机</translation> <translation id="6506374932220792071">采用 SHA-256 算法的 X9.62 ECDSA 签名</translation> <translation id="6508248480704296122">已与“<ph name="NAME_PH" />”关联</translation> @@ -4833,6 +4870,7 @@ <translation id="676560328519657314">您在 Google Pay 中的付款方式</translation> <translation id="6767566652486411142">选择另一种语言…</translation> <translation id="6767639283522617719">无法加入到该网域中。请确保这一组织单元的设置正确无误。</translation> +<translation id="6768034047581882264">不允许显示不安全内容</translation> <translation id="6769557323306147204"><ph name="ORGANIZATION_NAME" />建议您更新此设备。</translation> <translation id="6769712124046837540">添加打印机…</translation> <translation id="6770602306803890733">为您和网络上的所有人提供更好的安全保障</translation> @@ -4924,6 +4962,7 @@ <translation id="6865313869410766144">自动填充表单数据</translation> <translation id="6865598234501509159">不是<ph name="LANGUAGE" />网页</translation> <translation id="6865708901122695652">WebRTC 事件日志 (<ph name="WEBRTC_EVENT_LOG_COUNT" />)</translation> +<translation id="686609795364435700">小</translation> <translation id="686664946474413495">色温</translation> <translation id="6868934826811377550">查看详情</translation> <translation id="6871644448911473373">OCSP 响应程序:<ph name="LOCATION" /></translation> @@ -4973,6 +5012,7 @@ <translation id="6922745772873733498">请输入 PIN 码以进行打印</translation> <translation id="6923132443355966645">滚动/点击</translation> <translation id="6923633482430812883">装载共享时出错。请检查您要连接的文件服务器是否支持 SMBv2 或更高版本。</translation> +<translation id="6929126689972602640">学校帐号不支持家长控制。如果您想添加学校帐号,让孩子能够访问 Google 课堂及其他网站以在家中完成学校作业,请先使用孩子的个人帐号登录。您可于需要时再在设置中添加学校帐号。</translation> <translation id="6929760895658557216">Okay Google</translation> <translation id="6930036377490597025">外部安全密钥或内置传感器</translation> <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{有 1 个扩展程序已被拒}other{有 # 个扩展程序已被拒}}</translation> @@ -5013,6 +5053,7 @@ <translation id="6972629891077993081">HID 设备</translation> <translation id="6972754398087986839">开始使用</translation> <translation id="6972887130317925583">已成功更改这个已泄露的密码。您随时可在“<ph name="SETTINGS" />”中检查您的密码。</translation> +<translation id="697312151395002334">允许发送弹出式窗口并使用重定向</translation> <translation id="6973611239564315524">可以升级至 Debian 10 (Buster)</translation> <translation id="6974609594866392343">离线演示模式</translation> <translation id="6977381486153291903">固件版本</translation> @@ -5035,6 +5076,7 @@ <translation id="6995899638241819463">在密码遭遇数据泄露时,向您发出警告</translation> <translation id="6997642619627518301"><ph name="NAME_PH" /> - 活动日志</translation> <translation id="6997707937646349884">在您的设备上:</translation> +<translation id="6998093258894828179">隐藏卡片</translation> <translation id="6998793565256476099">注册设备以进行视频会议</translation> <translation id="6999956497249459195">新建群组</translation> <translation id="7000206553895739324">“<ph name="PRINTER_NAME" />”已建立连接但需要配置</translation> @@ -5051,6 +5093,7 @@ <translation id="7005848115657603926">页码范围无效,请使用 <ph name="EXAMPLE_PAGE_RANGE" /></translation> <translation id="7006634003215061422">下边距</translation> <translation id="7007648447224463482">在新窗口中打开所有网址</translation> +<translation id="7009709314043432820"><ph name="APP_NAME" /> 正在使用您的摄像头</translation> <translation id="701080569351381435">显示源代码</translation> <translation id="7014174261166285193">安装失败。</translation> <translation id="7017004637493394352">再说一遍“Ok Google”</translation> @@ -5070,6 +5113,7 @@ <translation id="7038632520572155338">开关控制</translation> <translation id="7039326228527141150">访问来自<ph name="VENDOR_NAME" />的 USB 设备</translation> <translation id="7039912931802252762">Microsoft 智能卡登录</translation> +<translation id="7039951224110875196">为孩子创建 Google 帐号</translation> <translation id="7040230719604914234">运营商</translation> <translation id="7043108582968290193">大功告成!已无任何不兼容的应用。</translation> <translation id="7044124535091449260">详细了解网站访问权限</translation> @@ -5141,6 +5185,7 @@ <translation id="7121362699166175603">清除历史记录和地址栏中的自动填充项。您的 Google 帐号在 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 上可能有其他形式的浏览记录。</translation> <translation id="7121438501124788993">开发者模式</translation> <translation id="7121728544325372695">智能破折号</translation> +<translation id="7123030151043029868">允许自动下载多个文件</translation> <translation id="7123360114020465152">已不再受支持</translation> <translation id="7125148293026877011">删除 Crostini</translation> <translation id="7127980134843952133">下载记录</translation> @@ -5155,6 +5200,7 @@ <translation id="7136984461011502314">欢迎使用<ph name="PRODUCT_NAME" /></translation> <translation id="7136993520339022828">出错了。请选择其他图片以重试。</translation> <translation id="713888829801648570">抱歉,您目前处于离线状态,因此系统无法验证您的密码。</translation> +<translation id="7139627972753429585"><ph name="APP_NAME" /> 正在使用您的麦克风</translation> <translation id="7140928199327930795">没有其他可用的设备。</translation> <translation id="7141105143012495934">由于无法获取您的帐号详情,因此登录失败了。请与管理员联系或重试。</translation> <translation id="7143207342074048698">正在连接</translation> @@ -5294,6 +5340,7 @@ <translation id="7324297612904500502">Chrome(测试版)论坛</translation> <translation id="7325209047678309347">纸张卡住了</translation> <translation id="7325437708553334317">“高反差”扩展程序</translation> +<translation id="7326004502692201767">为孩子设置此 <ph name="DEVICE_TYPE" /></translation> <translation id="7328699668338161242">Google 助理已能识别出您的语音</translation> <translation id="7328867076235380839">无效的组合</translation> <translation id="7329154610228416156">由于已配置为使用不安全的网址 (<ph name="BLOCKED_URL" />),因此登录失败了。请与管理员联系。</translation> @@ -5418,6 +5465,7 @@ <translation id="7465635034594602553">出了点问题。请在几分钟后重新运行 <ph name="APP_NAME" />。</translation> <translation id="7465778193084373987">Netscape 证书吊销网址</translation> <translation id="7469894403370665791">自动连接到该网络</translation> +<translation id="7470424110735398630">允许查看您的剪贴板</translation> <translation id="747114903913869239">错误:无法对扩展程序进行解码</translation> <translation id="7473891865547856676">不,谢谢</translation> <translation id="747459581954555080">全部恢复</translation> @@ -5527,6 +5575,7 @@ <translation id="7607002721634913082">已暂停</translation> <translation id="7608810328871051088">Android 偏好设置</translation> <translation id="7609148976235050828">请连接到互联网,然后重试。</translation> +<translation id="7612655942094160088">启用已连接的手机功能。</translation> <translation id="7614260613810441905">在网站想要修改您设备上的文件或文件夹时先询问您(推荐)</translation> <translation id="761530003705945209">备份到 Google 云端硬盘。您随时可以轻松地恢复数据或更换设备。您的备份内容包含应用数据。您的备份内容将上传到 Google 并使用您的 Google 帐号密码进行加密。</translation> <translation id="7615365294369022248">添加帐号时出错</translation> @@ -5645,6 +5694,7 @@ <translation id="7732111077498238432">网络受政策控制</translation> <translation id="7737115349420013392">正在与“<ph name="DEVICE_NAME" />”配对…</translation> <translation id="7737238973539693982">删除 Linux(测试版)</translation> +<translation id="7737948071472253612">不允许使用您的摄像头</translation> <translation id="7740996059027112821">标准</translation> <translation id="7742706086992565332">您可以设置特定网站的缩放级别</translation> <translation id="774377079771918250">选择所需的保存位置</translation> @@ -5653,6 +5703,7 @@ <translation id="7750228210027921155">画中画</translation> <translation id="7751260505918304024">全部显示</translation> <translation id="7753735457098489144">存储空间不足,安装失败。如需释放空间,请从设备存储空间中删除文件。</translation> +<translation id="7754347746598978109">不允许使用 JavaScript</translation> <translation id="7754704193130578113">下载前询问每个文件的保存位置</translation> <translation id="7755287808199759310">您的父亲/母亲可为您取消屏蔽此网站</translation> <translation id="7757592200364144203">更改设备名称</translation> @@ -5705,6 +5756,7 @@ <translation id="7798844538707273832">已自动禁用<ph name="PERMISSION" /></translation> <translation id="7799299114731150374">已成功设置壁纸</translation> <translation id="7800518121066352902">逆时针旋转(&O)</translation> +<translation id="7802539296536804623">不在本页上显示卡片</translation> <translation id="780301667611848630">不用了,谢谢</translation> <translation id="7804072833593604762">已关闭标签页</translation> <translation id="7805768142964895445">状态</translation> @@ -6132,6 +6184,7 @@ <translation id="826905130698769948">客户端证书无效</translation> <translation id="8270242299912238708">PDF 文档</translation> <translation id="827097179112817503">显示“主页”按钮</translation> +<translation id="8271379370373330993">接下来的几个步骤需由家长完成。家长可在设置好帐号后将 <ph name="DEVICE_TYPE" /> 交还给孩子。</translation> <translation id="8272443605911821513">点击“更多工具”菜单中的“扩展程序”,可以管理您的扩展程序。</translation> <translation id="8274332263553132018">投射文件</translation> <translation id="8274924778568117936">在完成更新之前,请勿关闭您的 <ph name="DEVICE_TYPE" />。您的 <ph name="DEVICE_TYPE" /> 将会于安装完毕后重启。</translation> @@ -6142,6 +6195,7 @@ <translation id="8281886186245836920">跳过</translation> <translation id="8283475148136688298">连接到“<ph name="DEVICE_NAME" />”时身份验证码遭拒。</translation> <translation id="8284279544186306258">所有<ph name="WEBSITE_1" />网站</translation> +<translation id="8284326494547611709">字幕</translation> <translation id="8286036467436129157">登录</translation> <translation id="8286963743045814739">无痕式窗口可让您私密地浏览</translation> <translation id="8287902281644548111">按 API 调用/网址搜索</translation> @@ -6155,6 +6209,7 @@ <translation id="8300011035382349091">为此标签页修改书签</translation> <translation id="8300374739238450534">深夜蓝</translation> <translation id="8300849813060516376">OTASP 失败</translation> +<translation id="8304383784961451596">您无权使用此设备。请与管理员联系以获取登录权限,或者使用受 Family Link 监管的 Google 帐号登录。</translation> <translation id="8308179586020895837">当 <ph name="HOST" /> 想要使用摄像头时询问我</translation> <translation id="830868413617744215">测试版</translation> <translation id="8309458809024885768">证书已存在</translation> @@ -6168,6 +6223,7 @@ <translation id="8322814362483282060">系统已阻止此网页使用您的麦克风。</translation> <translation id="8323167517179506834">输入网址</translation> <translation id="8324784016256120271">网站可以使用 Cookie 查看您在各个不同网站上的浏览活动,以便实现某些功能或目的(例如为您展示个性化广告)</translation> +<translation id="8325413836429495820">不允许查看您的剪贴板</translation> <translation id="8326478304147373412">PKCS #7,证书链</translation> <translation id="8327039559959785305">装载 Linux 文件时出错。请重试。</translation> <translation id="8327676037044516220">权限和内容设置</translation> @@ -6217,6 +6273,7 @@ <translation id="8382913212082956454">复制电子邮件地址(&E)</translation> <translation id="8386091599636877289">找不到此政策。</translation> <translation id="8386903983509584791">已完成扫描</translation> +<translation id="8387361103813440603">不允许查看您的位置信息</translation> <translation id="8389416080014625855">为此页面创建二维码</translation> <translation id="8389492867173948260">允许此扩展程序读取和更改您在所访问的网站上留存的所有数据:</translation> <translation id="8390449457866780408">服务器无法使用。</translation> @@ -6401,6 +6458,7 @@ <translation id="8621866727807194849">您的计算机上存在有害软件。Chrome 正在移除该软件、恢复您的设置并停用扩展程序。这可确保您的浏览器能够重新正常运行。</translation> <translation id="8621979332865976405">共享您的整个屏幕</translation> <translation id="862542460444371744">扩展程序(&E)</translation> +<translation id="8625663000550647058">不允许使用您的麦克风</translation> <translation id="862727964348362408">已暂停</translation> <translation id="862750493060684461">CSS 缓存</translation> <translation id="8627706565932943526">同步错误</translation> @@ -6481,6 +6539,7 @@ <translation id="8714838604780058252">背景图形</translation> <translation id="8715480913140015283">背景标签页正在使用您的摄像头</translation> <translation id="8716931980467311658">要从这部 <ph name="DEVICE_TYPE" /> 中删除您“Linux 文件”文件夹中的所有 Linux 应用和数据吗?</translation> +<translation id="8717145295869185525">不允许使用虚拟实境设备和数据</translation> <translation id="8717864919010420084">复制链接</translation> <translation id="8719472795285728850">正在监听扩展程序活动…</translation> <translation id="8719653885894320876"><ph name="PLUGIN_NAME" /> 下载失败</translation> @@ -6902,6 +6961,7 @@ <translation id="9179734824669616955">在您的 <ph name="DEVICE_TYPE" /> 上设置 Linux(测试版)</translation> <translation id="9180281769944411366">此过程可能需要几分钟的时间。正在启动 Linux 容器。</translation> <translation id="9180380851667544951">该网站可能会共享您的屏幕</translation> +<translation id="9186963452600581158">使用孩子的 Google 帐号登录</translation> <translation id="9188732951356337132">发送使用情况数据和诊断数据。目前,此设备会自动向 Google 发送诊断数据、设备数据和应用使用情况数据。这些数据不会被用来辨识您孩子的身份,而是会被用来帮助提高系统和应用的稳定性以及实现其他方面的改进。部分汇总数据也会对 Google 应用和合作伙伴(例如 Android 开发者)有所帮助。如果您已为孩子开启“其他网络与应用活动记录”设置,这些数据可能会被保存到其 Google 帐号中。<ph name="BEGIN_LINK2" />了解详情<ph name="END_LINK2" /></translation> <translation id="9190063653747922532">L2TP/IPSec + 预共享密钥</translation> <translation id="9198090666959937775">使用您的 Android 手机作为安全密钥</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index 8a8c8ee..c16e8a9 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">擴充功能錯誤</translation> <translation id="1246158006305844142">您的應用程式和設定將會同步至所有您使用 Google 帳戶登入的 Chrome 作業系統裝置。如要瞭解瀏覽器同步選項,請前往<ph name="LINK_BEGIN" />Chrome 設定<ph name="LINK_END" />。</translation> <translation id="1246905108078336582">要從剪貼簿中移除建議嗎?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> 因已淘汰而被封鎖</translation> <translation id="1251366534849411931">缺少預期的開頭大括弧:<ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">此操作會清除網站儲存的資料 (共 <ph name="TOTAL_USAGE" />),以及所安裝的應用程式</translation> <translation id="125220115284141797">預設</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">家用網絡,非漫遊狀態</translation> <translation id="1315056510003830387">不允許使用 Flash</translation> -<translation id="1315144594965013365">請確保兩部裝置都已解鎖並放在一起,且已開啟藍牙功能。如果您要 Chromebook 分享檔案,請確認該 Chromebook 已開啟「咫尺共享」 (請透過選取時間開啟狀態區,然後選取「咫尺共享」)。</translation> <translation id="1316136264406804862">搜尋中...</translation> <translation id="1316495628809031177">已暫停同步處理</translation> <translation id="1317637799698924700">您的插座將以 USB-C 兼容模式執行。</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">CA 洩露</translation> <translation id="2182058453334755893">已複製至剪貼簿</translation> <translation id="2184515124301515068">允許 Chrome 選擇何時讓網站播放音效 (建議)</translation> -<translation id="2187243482123994665">使用者狀態</translation> <translation id="2187675480456493911">此網絡已與您帳戶上的其他裝置同步。系統不會同步處理其他使用者修改的設定。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation> <translation id="2187895286714876935">伺服器憑證匯入錯誤</translation> <translation id="2187906491731510095">擴充程式更新咗</translation> @@ -2704,7 +2701,6 @@ <translation id="4104163789986725820">匯出(&X)…</translation> <translation id="4107048419833779140">識別並退出儲存裝置</translation> <translation id="4109135793348361820">將視窗傳送給 <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">為支援此設定的應用程式自訂字幕大小和樣式</translation> <translation id="4110490973560452005">下載完成 :<ph name="FILE_NAME" />。按住 Shift+F6 鍵即可切換至下載內容列的位置。</translation> <translation id="4110686435123617899">揀相簿 <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">以高對比模式瀏覽網頁</translation> @@ -2917,7 +2913,6 @@ <translation id="4400632832271803360">按住啟動器鍵,即可切換最上排按鍵的執行動作</translation> <translation id="4400963414856942668">按一下「星號」即可將分頁加入書籤</translation> <translation id="4403775189117163360">選擇其他資料夾</translation> -<translation id="440391631796167175">找不到安全性弱的密碼</translation> <translation id="4404136731284211429">重新掃瞄</translation> <translation id="4404843640767531781">您的家長已封鎖「<ph name="APP_NAME" />」。請要求家長授權使用此應用程式。</translation> <translation id="4405117686468554883">*.jpeg、*.jpg、*.png</translation> @@ -4458,8 +4453,6 @@ <translation id="6242852299490624841">將焦點移至此分頁</translation> <translation id="6243280677745499710">目前設定的桌布</translation> <translation id="6243774244933267674">無法與伺服器連線</translation> -<translation id="6244185221716469155">安全性弱的密碼很容易被猜到。請務必設定安全性強的密碼。 - <ph name="BEGIN_LINK" />查看更多安全提示。<ph name="END_LINK" /></translation> <translation id="6244245036423700521">匯入 ONC 檔案</translation> <translation id="6246790815526961700">從裝置上載</translation> <translation id="6247620186971210352">找不到應用程式</translation> @@ -5586,7 +5579,7 @@ <translation id="7607002721634913082">已暫停</translation> <translation id="7608810328871051088">Android 偏好設定</translation> <translation id="7609148976235050828">請連線至互聯網,然後再試一次。</translation> -<translation id="7612655942094160088">啟用連接咗嘅手機功能。</translation> +<translation id="7612655942094160088">啟用連接手機嘅功能。</translation> <translation id="7614260613810441905">網站必須先詢問您,才能編輯裝置上的檔案或資料夾 (建議使用)</translation> <translation id="761530003705945209">備份至「Google 雲端硬碟」。您可隨時輕鬆還原資料或轉用其他裝置。備份包含應用程式資料。您的備份會上載至 Google,並透過您的 Google 帳戶密碼加密。</translation> <translation id="7615365294369022248">新增帳戶時發生錯誤</translation> @@ -6206,6 +6199,7 @@ <translation id="8281886186245836920">略過</translation> <translation id="8283475148136688298">驗證代碼在連線至「<ph name="DEVICE_NAME" />」時被拒。</translation> <translation id="8284279544186306258">所有 <ph name="WEBSITE_1" /> 網站</translation> +<translation id="8284326494547611709">字幕</translation> <translation id="8286036467436129157">登入</translation> <translation id="8286963743045814739">使用無痕式視窗,即可私密瀏覽</translation> <translation id="8287902281644548111">按 API 調用/網址搜尋</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index 37c5f3a..1821ebfc0 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">擴充功能錯誤</translation> <translation id="1246158006305844142">當你使用 Google 帳戶登入後,所有 Chrome 作業系統裝置上的應用程式和設定都會保持同步。如要查看瀏覽器同步處理選項,請前往 <ph name="LINK_BEGIN" />Chrome 設定<ph name="LINK_END" />。</translation> <translation id="1246905108078336582">要從剪貼簿中移除建議嗎?</translation> -<translation id="1249643471736608405">「<ph name="PLUGIN_NAME" />」因已淘汰而遭封鎖</translation> <translation id="1251366534849411931">缺少左大括弧:<ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">這會清除網站儲存的資料 (共 <ph name="TOTAL_USAGE" />),以及所安裝的應用程式</translation> <translation id="125220115284141797">預設值</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">家用網路,非漫遊狀態</translation> <translation id="1315056510003830387">不得使用 Flash</translation> -<translation id="1315144594965013365">請確認兩部裝置都已解鎖且彼此相鄰,並已開啟藍牙功能。如果要與 Chromebook 分享內容,請確認該 Chromebook 已開啟鄰近分享功能 (按一下電腦右下角顯示的時間欄位就能開啟狀態區,接著可以從中選取鄰近分享)。</translation> <translation id="1316136264406804862">搜尋中...</translation> <translation id="1316495628809031177">已暫停同步處理</translation> <translation id="1317637799698924700">你的座架將以 USB Type-C 相容模式執行。</translation> @@ -1037,7 +1035,6 @@ <translation id="2178614541317717477">CA 洩露</translation> <translation id="2182058453334755893">已複製到剪貼簿</translation> <translation id="2184515124301515068">讓 Chrome 自行判斷何時允許網站播放音訊 (建議使用)</translation> -<translation id="2187243482123994665">使用者狀態</translation> <translation id="2187675480456493911">已與你帳戶中的其他裝置同步。系統不會同步處理其他使用者修改的設定。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation> <translation id="2187895286714876935">伺服器憑證匯入錯誤</translation> <translation id="2187906491731510095">擴充功能已更新</translation> @@ -2703,7 +2700,6 @@ <translation id="4104163789986725820">匯出(&X)...</translation> <translation id="4107048419833779140">識別並退出儲存裝置</translation> <translation id="4109135793348361820">將視窗傳送給 <ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">針對支援這項設定的應用程式自訂字幕大小和風格</translation> <translation id="4110490973560452005">下載完成:<ph name="FILE_NAME" />。按下 Shift+F6 即可回到下載內容列區域。</translation> <translation id="4110686435123617899">選取相簿「<ph name="TITLE" />,<ph name="DESC" />」</translation> <translation id="4110895898888439383">以高對比模式瀏覽網路</translation> @@ -2916,7 +2912,6 @@ <translation id="4400632832271803360">按住啟動器鍵即可切換最上排按鍵的行為</translation> <translation id="4400963414856942668">按一下星號即可將分頁加入書籤</translation> <translation id="4403775189117163360">選擇其他資料夾</translation> -<translation id="440391631796167175">未發現任何低強度密碼</translation> <translation id="4404136731284211429">重新掃描</translation> <translation id="4404843640767531781">貴家長已封鎖「<ph name="APP_NAME" />」。如要使用這個應用程式,請要求家長授予權限。</translation> <translation id="4405117686468554883">*.jpeg、*.jpg、*.png</translation> @@ -4457,8 +4452,6 @@ <translation id="6242852299490624841">將焦點移至這個分頁</translation> <translation id="6243280677745499710">目前設定的桌布</translation> <translation id="6243774244933267674">無法與伺服器連線</translation> -<translation id="6244185221716469155">低強度密碼很容易讓有心人士猜中,請務必設定高強度密碼。 - <ph name="BEGIN_LINK" />查看更多安全性提示。<ph name="END_LINK" /></translation> <translation id="6244245036423700521">匯入 ONC 檔案</translation> <translation id="6246790815526961700">從裝置上傳</translation> <translation id="6247620186971210352">找不到應用程式</translation> @@ -6205,6 +6198,7 @@ <translation id="8281886186245836920">略過</translation> <translation id="8283475148136688298">驗證代碼在連線至「<ph name="DEVICE_NAME" />」時遭拒。</translation> <translation id="8284279544186306258">所有 <ph name="WEBSITE_1" /> 網站</translation> +<translation id="8284326494547611709">字幕</translation> <translation id="8286036467436129157">登入</translation> <translation id="8286963743045814739">使用無痕式視窗,安心進行私密瀏覽</translation> <translation id="8287902281644548111">依 API 呼叫/網址搜尋</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index 52ef82ad..4dd5a0bf 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -224,7 +224,6 @@ <translation id="1244303850296295656">Iphutha lesandiso</translation> <translation id="1246158006305844142">Izinhlelo zokusebenza nezilungiselelo zizovumelanisa kuwo wonke amadivayisi we-Chrome OS lapho ongene khona ngemvume nge-akhawunti yakho ye-Google. Ukuthola izinketho zokuvumelanisa isiphequluli, iya kuzilungiselelo ze-<ph name="LINK_BEGIN" />Chrome<ph name="LINK_END" />.</translation> <translation id="1246905108078336582">Susa isiphakamiso kusukela kubhodi lokunamathisela?</translation> -<translation id="1249643471736608405"><ph name="PLUGIN_NAME" /> ivinjelwe ngoba yehlisiwe</translation> <translation id="1251366534849411931">I-brace egoqekile yokuvuleka okulindelwe: <ph name="ERROR_LINE" /></translation> <translation id="1251480783646955802">Lokhu kuzosula idatha engu-<ph name="TOTAL_USAGE" /> egcinwe amasayithi nezinhlelo zokusebenza ezifakiwe</translation> <translation id="125220115284141797">Zenzekela</translation> @@ -279,7 +278,6 @@ <translation id="1314565355471455267">I-Android VPN</translation> <translation id="131461803491198646">Inethiwekhi yasekhaya, hhayi ukuzula</translation> <translation id="1315056510003830387">Ayivumelekile ukusebenzisa Ifuleshi</translation> -<translation id="1315144594965013365">Qiniseka ukuthi womabili amadivayisi avuliwe, asondelene, futhi avulwe i-Bluetooth. Uma wabelana nge-Chromebook, qiniseka ukuthi Inokuthumela Eduze okuvuliwe (vula indawo yesimo ngokukhetha isikhathi, bese ukhetha Ukuthumela Eduze).</translation> <translation id="1316136264406804862">Iyasesha...</translation> <translation id="1316495628809031177">Ukuvumelanisa kumiswe isikhashana</translation> <translation id="1317637799698924700">Isiteshi sakho sokudokha sizosebenza kumodi ehambisanayo ye-USB Type-C</translation> @@ -1036,7 +1034,6 @@ <translation id="2178614541317717477">Ukwehlisa izinga kwe-CA</translation> <translation id="2182058453334755893">Kukopishelwe kubhodi lakho lokunamathisela</translation> <translation id="2184515124301515068">Vumela i-Chrome ukuthi ikhethe uma amasayithi angakwazi ukudlala umsindo (kunconyiwe)</translation> -<translation id="2187243482123994665">Ukuba khona komsebenzisi</translation> <translation id="2187675480456493911">Ivunyelaniswe namanye amadivayisi ku-akhawunti yakho. Amasethingi alungiswe abanye abasebenzisi ngeke aze avunyelaniswe. <ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Iphutha lokungenisa isitifiketi seseva</translation> <translation id="2187906491731510095">Izandiso zubuyekeziwe</translation> @@ -2707,7 +2704,6 @@ <translation id="4104163789986725820">T&humela...</translation> <translation id="4107048419833779140">Khomba uphinde ukhiphe amadivayisi esitoreji</translation> <translation id="4109135793348361820">Hambisa iwindi ku-<ph name="USER_NAME" /> (<ph name="USER_EMAIL" />)</translation> -<translation id="411031910327788420">Enza ngendlela oyifisayo usayizi wegama-ncazo nesitayela sezinhlelo zakho zokusebenza esisekela le sethingi</translation> <translation id="4110490973560452005">Ukulanda kuqedile: <ph name="FILE_NAME" />. Cindezela ku-Shift+F6 ukuze wenze umjikelezo indawo yebha yokulandwa.</translation> <translation id="4110686435123617899">Khetha i-albhamu <ph name="TITLE" /> <ph name="DESC" /></translation> <translation id="4110895898888439383">Phequlula iwebhu ngemodi yokugqama okuphezulu</translation> @@ -2920,7 +2916,6 @@ <translation id="4400632832271803360">Bamba ukhiye wesiqalisi ukuze ushintshe phakathi kokuziphatha kokhiye berowu ephezulu</translation> <translation id="4400963414856942668">Ungachofoza inkanyezi ukuze ubhukhimakhe ithebhu</translation> <translation id="4403775189117163360">Khetha ifolda ehlukile</translation> -<translation id="440391631796167175">Akutholakalanga amaphasiwedi angaqinile</translation> <translation id="4404136731284211429">Skena futhi</translation> <translation id="4404843640767531781">I-<ph name="APP_NAME" /> ivinjwe ngumzali wakho. Cela umzali wakho imvume yokusebenzisa lolu hlelo lokusebenza.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -4467,8 +4462,6 @@ <translation id="6242852299490624841">Gxilisa le thebhu</translation> <translation id="6243280677745499710">Manje isethiwe</translation> <translation id="6243774244933267674">Iseva ayitholakali</translation> -<translation id="6244185221716469155">Amaphasiwedi angaqinile aqageleka kalula. Qiniseka ukuthi udala iphasiwedi eqinile. - <ph name="BEGIN_LINK" />Bona amathiphu amaningi okuvikeleka.<ph name="END_LINK" /></translation> <translation id="6244245036423700521">Ngenisa ifayela le-ONC</translation> <translation id="6246790815526961700">Layisha kusukela kudivayisi</translation> <translation id="6247620186971210352">Azikho izinhlelo zokusebenza ezitholiwe</translation> @@ -6217,6 +6210,7 @@ <translation id="8281886186245836920">Yeqa</translation> <translation id="8283475148136688298">Ikhodi yokuqinisekisa inqatshelwe ngenkathi kuxhumeka ku-"<ph name="DEVICE_NAME" />".</translation> <translation id="8284279544186306258">wonke amasayithi we-<ph name="WEBSITE_1" /></translation> +<translation id="8284326494547611709">Amazwibela</translation> <translation id="8286036467436129157">Ngena Ngemvume</translation> <translation id="8286963743045814739">Ungaphequlula ngokwemfihlo usebenzisa iwindi le-incognito</translation> <translation id="8287902281644548111">Sesha ngekholi ye-API/URL</translation>
diff --git a/chrome/app/resources/google_chrome_strings_as.xtb b/chrome/app/resources/google_chrome_strings_as.xtb index 3fc3771..72c1b84a 100644 --- a/chrome/app/resources/google_chrome_strings_as.xtb +++ b/chrome/app/resources/google_chrome_strings_as.xtb
@@ -8,6 +8,7 @@ কিছুমান সুবিধা উপলব্ধ নহ'ব পাৰে আৰু অগ্ৰাধিকাৰসমূহত কৰা সলনি কার্য ছেভ নহ'ব পাৰে।</translation> <translation id="1088300314857992706"><ph name="USER_EMAIL_ADDRESS" />এ আগতে Chrome ব্যৱহাৰ কৰি আছিল</translation> +<translation id="1088654056000736875">Chromeএ আপোনাৰ কম্পিউটাৰৰ পৰা ক্ষতিকাৰক ছফ্টৱেৰ আঁতৰাই আছে…</translation> <translation id="1097330777386562916">আপুনি Chromeৰ পৰা বাহিৰ হোৱা সময়ত কুকীসমূহ আৰু ছাইট ডেটা মচক</translation> <translation id="110877069173485804">এয়া হৈছে আপোনাৰ Chrome</translation> <translation id="1125124144982679672">Chrome কোনে ব্যৱহাৰ কৰি আছে?</translation> @@ -18,6 +19,7 @@ <translation id="1355000804395496115">আপোনাৰ কাৰ্মস্থান আৰু ব্যক্তিগত ব্ৰাউজিং পৃথক কৰিবলৈ অথবা এই ডিভাইচটো ব্যৱহাৰ কৰা বেলেগ বেলেগ লোকৰ বাবে Chromeত বেলেগ বেলেগ প্ৰ'ফাইলসমূহ ব্যৱহাৰ কৰক</translation> <translation id="137466361146087520">Google Chrome বিটা</translation> <translation id="1399397803214730675">এই কম্পিউটাৰটোৰ এটা অধিক শেহতীয়া Google Chrome সংস্কৰণ আছে। যদি ছফ্টৱেৰটোৱে কাম নকৰে তেন্তে Google Chrome আনইনষ্টল কৰি আকৌ চেষ্টা কৰক।</translation> +<translation id="140541193409212341">Chromeএ আপোনাৰ কম্পিউটাৰত ক্ষতিকাৰক ছফ্টৱেৰ আছেনে নাই পৰীক্ষা কৰি থকাৰ সময়ত আসোঁৱাহ হৈছে</translation> <translation id="1434626383986940139">Chrome Canary এপ্</translation> <translation id="1513277449617685876">ব্যক্তিগত আৰু <ph name="NEW_USER" /> ব্ৰাউজিং পৃথক কৰিবলৈ, Chromeত এটা নতুন প্ৰ'ফাইল সৃষ্টি কৰক</translation> <translation id="1553358976309200471">Chrome আপডে’ট কৰক</translation> @@ -59,6 +61,7 @@ <translation id="2429317896000329049">আপোনাৰ ড’মেইনত ছিংক কৰা সুবিধাটো নাই বাবে Google Chromeএ আপোনাৰ ডেটা ছিংক কৰিব নোৱাৰে।</translation> <translation id="2467438592969358367">Google Chromeএ আপোনাৰ পাছৱর্ডসমূহ ৰপ্তানি কৰিব খোজে। এই কার্যৰ বাবে অনুমতি দিবলৈ আপোনাৰ Windowsৰ পাছৱর্ড দিয়ক।</translation> <translation id="2485422356828889247">আনইনষ্টল কৰক</translation> +<translation id="252502352004572774">Chromeএ আপোনাৰ কম্পিউটাৰত ক্ষতিকাৰক ছফ্টৱেৰ আছেনে নাই পৰীক্ষা কৰি আছে…</translation> <translation id="2534507159460261402">Google Pay (Chromeলৈ প্ৰতিলিপি কৰা হ'ল)</translation> <translation id="2580411288591421699">বর্তমান ব্যৱহাৰ কৰি থকা Google Chromeৰ সংস্কৰণটো পুনৰ ইনষ্টল কৰিব নোৱাৰি। অনুগ্ৰহ কৰি Google Chrome বন্ধ কৰি পুনৰ চেষ্টা কৰক।</translation> <translation id="2586406160782125153">এই কাৰ্যই এই ডিভাইচটোৰ পৰা আপোনাৰ ব্ৰাউজিং ডেটা মচি পেলাব৷ আপোনাৰ ডেটা পাছত পুনৰুদ্ধাৰ কৰিবলৈ, Chromeত <ph name="USER_EMAIL" />.হিচাপে ছাইন ইন কৰক।</translation> @@ -113,10 +116,12 @@ <translation id="4050175100176540509">শেহতীয়া সংস্কৰণত কিছুমান গুৰুত্বপূর্ণ উন্নত সুৰক্ষাৰ ব্যৱস্থা আৰু নতুন সুবিধা উপলব্ধ।</translation> <translation id="4053720452172726777">Google Chrome কাষ্টমাইজ আৰু নিয়ন্ত্ৰণ কৰক</translation> <translation id="4110895483821904099">আপোনাৰ নতুন Chrome প্ৰ'ফাইল ছেট আপ কৰক</translation> +<translation id="4127976662406264741">{NUM_MINS,plural, =1{Chromeএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: এক মিনিটৰ আগত।}one{Chromeএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: {NUM_MINS} মিনিটৰ আগত।}other{Chromeএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: {NUM_MINS} মিনিটৰ আগত।}}</translation> <translation id="4143243756087420366">Chromeৰ নাম আৰু চিত্ৰ</translation> <translation id="4147555960264124640">আপুনি কোনো পৰিচালিত একাউণ্টৰ জৰিয়তে ছাইন ইন কৰিছে আৰু কোনো প্ৰশাসকক আপোনাৰ Google Chrome প্ৰ’ফাইলৰ নিয়ন্ত্ৰণ দিছে। আপোনাৰ এপ্, বুকমার্ক, ইতিহাস, পাছৱর্ড আৰু অন্য ছেটিংসমূহৰ দৰে নিজৰ Chrome ডেটা স্থায়ীভাৱে <ph name="USER_NAME" />ৰ সৈতে সংযুক্ত হ’ব। আপুনি Google একাউণ্ট ডেশ্বব’ৰ্ডৰ জৰিয়তে এই ডেটা মচিব পাৰিব কিন্তু আপুনি এই ডেটা অন্য একাউণ্টৰ সৈতে সংলগ্ন কৰিব নোৰাৰিব।<ph name="LEARN_MORE" /></translation> <translation id="4149882025268051530">ইনষ্টলাৰে আৰ্কাইভক অসংকুচিত কৰিব নোৱাৰিলে। অনুগ্ৰহ কৰি পুনৰ Google Chrome ডাউনল'ড কৰক।</translation> <translation id="4191857738314598978">{0,plural, =1{এদিনৰ ভিতৰত Chrome পুনৰ লঞ্চ কৰক}one{# দিনৰ ভিতৰত Chrome পুনৰ লঞ্চ কৰক}other{# দিনৰ ভিতৰত Chrome পুনৰ লঞ্চ কৰক}}</translation> +<translation id="4205362703535890467">Chromeএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: কালি।</translation> <translation id="4205939740494406371">Chromeএ আপোনাৰ পাছৱর্ডসমূহ পৰীক্ষা কৰিব নোৱাৰে। ২৪ ঘণ্টাৰ পাছত পুনৰ চেষ্টা কৰক অথবা <ph name="BEGIN_LINK" />আপোনাৰ Google একাউণ্টত পাছৱর্ডসমূহ পৰীক্ষা কৰক<ph name="END_LINK" />।</translation> <translation id="424864128008805179">Chromeৰ পৰা ছাইন আউট কৰিবনে?</translation> <translation id="4251615635259297716">এই একাউণ্টত আপোনাৰ Chrome ডেটা লিংক কৰিবনে?</translation> @@ -145,6 +150,7 @@ <translation id="4754614261631455953">Google Chrome Canary (mDNS-In)</translation> <translation id="4771048833395599659">এই ফাইলটো ক্ষতিকাৰক হ'ব পাৰে বাবে Chromeএ ইয়াক অৱৰোধ কৰিছে।</translation> <translation id="479167709087336770">এইটোৱে Google Searchত ব্যৱহৃত একেটা বানান পৰীক্ষকেই ব্যৱহাৰ কৰে। আপুনি ব্ৰাউজাৰত টাইপ কৰা পাঠ Googleলৈ পঠিওৱা হয়। আপুনি ছেটিংসমূহ-ত যিকোনো সময়তে এই আচৰণটো সলনি কৰিব পাৰে।</translation> +<translation id="4831688036548685548">Chromeএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: এক মুহূৰ্তৰ আগত।</translation> <translation id="4891791193823137474">Google Chromeক নেপথ্যত চলিবলৈ দিয়ক</translation> <translation id="4895437082222824641">Chromeৰ নতুন টে&বত লিংক খোলক</translation> <translation id="4953650215774548573">আপোনাৰ ডিফ'ল্ট ব্ৰাউজাৰ হিচাপে Google Chromeক ছেট কৰক</translation> @@ -160,6 +166,7 @@ <translation id="532046782124376502">সর্তকবার্তা: Google Chromeএ এক্সটেনশ্বনক আপোনাৰ ব্ৰাউজিঙৰ ইতিহাস ৰেকৰ্ড কৰাত বাধা দিব নোৱাৰে। এই এক্সটেনশ্বনটো ইনক’গনিট’ ম’ডত অক্ষম কৰিবলৈ এই বিকল্পটো বাছনিৰ পৰা বাদ দিয়ক।</translation> <translation id="5386244825306882791">এইটোৱে লগতে আপুনি Chrome আৰম্ভ কৰিলে বা Omniboxৰ পৰা সন্ধান কৰিলে কি পৃষ্ঠা খোল খায় সেয়া নিয়ন্ত্ৰণ কৰে।</translation> <translation id="5394833366792865639">Chrome টেব এটা শ্বেয়াৰ কৰক</translation> +<translation id="5409605318138185493">{NUM_DAYS,plural, =1{Chromeএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: ১ দিনৰ আগত।}one{Chromeএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: {NUM_DAYS} দিনৰ আগত।}other{Chromeএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: {NUM_DAYS} দিনৰ আগত।}}</translation> <translation id="5430073640787465221">আপোনাৰ পচন্দৰ ফাইলটো ব্যৱহাৰযোগ্য নহয় বা অমান্য। Google Chromeএ আপোনাৰ ছেটিংসমূহ পুনৰুদ্ধাৰ কৰিবলৈ সক্ষম নহ'ল।</translation> @@ -198,6 +205,7 @@ <translation id="6750954913813541382">Chromeএ বানানৰ আসোঁৱাহসমূহ আঁতৰাবলৈ আপুনি ব্ৰাউজাৰত টাইপ কৰা পাঠ Googleলৈ পঠিয়ায়</translation> <translation id="677276454032249905">যিকোনো প্ৰকাৰে Chrome বন্ধ কৰিবনে?</translation> <translation id="683440813066116847">mDNS ট্ৰেফিকক অনুমতি দিবলৈ Google Chrome বিটাৰ অন্তৰ্গামী নিয়ম।</translation> +<translation id="6861451385429799394"><ph name="BEGIN_LINK" />আপোনাৰ প্ৰশাসকে<ph name="END_LINK" /> Chromeৰ ক্ষতিকাৰক ছফ্টৱেৰ আছেনে নাই পৰীক্ষা কৰাৰ সুবিধাটো অক্ষম কৰিছে</translation> <translation id="6885412569789873916">Chrome বিটা এপ্সমূহ</translation> <translation id="6943584222992551122">এই ব্যক্তিজনৰ ব্ৰাউজিং ডেটা এই ডিভাইচৰপৰা মচা হ'ব। ডেটা পুনৰুদ্ধাৰ কৰিবলৈ <ph name="USER_EMAIL" /> হিচাপে Chromeত ছাইন ইন কৰক।</translation> <translation id="6967962315388095737">mDNS ট্ৰেফিকক অনুমতি দিবলৈ Google Chrome বিটাৰ অন্তৰ্গামী নিয়ম</translation> @@ -269,6 +277,7 @@ <translation id="8834965163890861871">Google Chromeএ পাছৱর্ডসমূহ সম্পাদনা কৰিবলৈ চেষ্টা কৰি আছে। এই কার্যৰ বাবে অনুমতি দিবলৈ আপোনাৰ Windowsৰ পাছৱৰ্ডটো টাইপ কৰক।</translation> <translation id="884296878221830158">এইটোৱে লগতে আপুনি Chromeৰ ব্যৱহাৰ কৰিলে বা গৃহপৃষ্ঠা বুটামটো ক্লিক কৰিলে কি পৃষ্ঠা দেখুওৱা হয় সেয়াও নিয়ন্ত্ৰণ কৰে।</translation> <translation id="8862326446509486874">ছিষ্টেম-পৰ্যায়ৰ ইনষ্টলৰ বাবে আপোনাৰ সঠিক অধিকাৰ নাই। প্রশাসক হিচাপে ইনষ্টলাৰটো পুনৰ চলাই চাওক।</translation> +<translation id="8907906903932240086">Chromeএ আপোনাৰ কম্পিউটাৰত ক্ষতিকাৰক ছফ্টৱেৰ আছেনে নাই পৰীক্ষা কৰিব পাৰে</translation> <translation id="8914504000324227558">Chrome পুনৰ লঞ্চ কৰক</translation> <translation id="8922193594870374009"><ph name="ORIGIN" />ৰ পৰা এটা নম্বৰ আপোনাৰ Android ফ’নলৈ পঠিয়াবলৈ দুয়োটা ডিভাইচত Chromeত ছাইন ইন কৰক।</translation> <translation id="8999208279178790196">{0,plural, =0{Chromeৰ এটা আপডে’ট উপলব্ধ}=1{Chromeৰ এটা আপডে’ট উপলব্ধ}one{# দিনৰ বাবে Chromeৰ এটা আপডে’ট উপলব্ধ}other{# দিনৰ বাবে Chromeৰ এটা আপডে’ট উপলব্ধ}}</translation> @@ -276,6 +285,7 @@ <translation id="9067395829937117663">Google Chromeক Windows 7 বা তাতোকৈ উন্নত সংস্কৰণৰ আৱশ্যক।</translation> <translation id="911206726377975832">লগতে আপোনাৰ ব্ৰাউজিং ডেটাও মচিবনে?</translation> <translation id="9138603949443464873">আপুনি কৰা সলনি কার্যসমূহ প্ৰযোজ্য কৰিবলৈ Chrome পুনৰ লঞ্চ কৰক</translation> +<translation id="9155112650704618965">{NUM_HOURS,plural, =1{Chromeএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিম পৰীক্ষা কৰা হৈছিল: ১ ঘণ্টাৰ আগত।}one{Chromeএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: {NUM_HOURS} ঘণ্টাৰ আগত।}other{Chromeএ আপোনাৰ কম্পিউটাৰত কোনো জ্ঞাত ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে। অন্তিমবাৰ পৰীক্ষা কৰা হৈছিল: {NUM_HOURS} ঘণ্টাৰ আগত।}}</translation> <translation id="919706545465235479">ছিংক আৰম্ভ কৰিবলৈ Chrome আপডে'ট কৰক</translation> <translation id="989369509083708165">Google Chrome আপোনাৰ ডিফ’ল্ট ব্ৰাউজাৰ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/google_chrome_strings_es-419.xtb b/chrome/app/resources/google_chrome_strings_es-419.xtb index 567c41c..7d66c0a 100644 --- a/chrome/app/resources/google_chrome_strings_es-419.xtb +++ b/chrome/app/resources/google_chrome_strings_es-419.xtb
@@ -6,6 +6,7 @@ <translation id="1051826050538111504">Tu computadora tiene software dañino. Chrome puede quitarlo, inhabilitar las extensiones y restablecer la configuración para que el navegador vuelva a funcionar correctamente.</translation> <translation id="1065672644894730302">No se pueden leer tus preferencias. Es posible que algunas funciones no estén disponibles y que no se guarden los cambios realizados a las preferencias.</translation> <translation id="1088300314857992706"><ph name="USER_EMAIL_ADDRESS" /> usaba Chrome anteriormente</translation> +<translation id="1088654056000736875">Chrome está quitando el software dañino de la computadora…</translation> <translation id="1097330777386562916">Borrar las cookies y los datos de los sitios cuando sales de Chrome</translation> <translation id="110877069173485804">Este es tu navegador Chrome</translation> <translation id="1125124144982679672">¿Quién usa Chrome?</translation> @@ -16,6 +17,7 @@ <translation id="1355000804395496115">Usa diferentes perfiles de Chrome para separar la navegación personal de la laboral, o para diferentes personas que usan este dispositivo.</translation> <translation id="137466361146087520">Google Chrome Beta</translation> <translation id="1399397803214730675">Este equipo ya cuenta con una versión más reciente de Google Chrome. Si el software no funciona, desinstala Google Chrome y descárgalo nuevamente.</translation> +<translation id="140541193409212341">Se produjo un error cuando Chrome buscaba software dañino en la computadora</translation> <translation id="1434626383986940139">Aplicaciones de Chrome Canary</translation> <translation id="1513277449617685876">Para separar tu navegación personal de la de <ph name="NEW_USER" />, crea un nuevo perfil de Chrome</translation> <translation id="1553358976309200471">Actualizar Chrome</translation> @@ -55,6 +57,7 @@ <translation id="2429317896000329049">Google Chrome no pudo sincronizar los datos porque la sincronización no está disponible para el dominio.</translation> <translation id="2467438592969358367">Google Chrome desea exportar tus contraseñas. Para permitirlo, ingresa tu contraseña de Windows.</translation> <translation id="2485422356828889247">Desinstalación</translation> +<translation id="252502352004572774">Chrome está buscando software dañino en la computadora…</translation> <translation id="2534507159460261402">Google Pay (copiada en Chrome)</translation> <translation id="2580411288591421699">No se puede instalar la misma versión de Google Chrome que se está ejecutando actualmente. Cierra Google Chrome e intenta nuevamente.</translation> <translation id="2586406160782125153">Esta acción borrará tus datos de navegación de este dispositivo. Si más adelante deseas recuperarlos, accede a tu cuenta en Chrome como <ph name="USER_EMAIL" />.</translation> @@ -109,10 +112,12 @@ <translation id="4050175100176540509">La última versión proporciona importantes mejoras de seguridad y nuevas funciones.</translation> <translation id="4053720452172726777">Personaliza y controla Google Chrome</translation> <translation id="4110895483821904099">Configura tu nuevo perfil de Chrome</translation> +<translation id="4127976662406264741">{NUM_MINS,plural, =1{Chrome no encontró software dañino conocido en la computadora. Última verificación: hace 1 minuto.}other{Chrome no encontró software dañino conocido en la computadora. Última verificación: hace {NUM_MINS} minutos.}}</translation> <translation id="4143243756087420366">Nombre y foto de Chrome</translation> <translation id="4147555960264124640">Estás por acceder con una cuenta administrada, lo que significa que proporcionarás al administrador el control sobre tu perfil de Google Chrome. Tus datos de Google Chrome, como las aplicaciones, los favoritos, el historial, las contraseñas y otros parámetros de configuración quedarán vinculados a <ph name="USER_NAME" /> de forma permanente. Podrás eliminar estos datos a través del Panel de control de Cuentas de Google, pero no podrás asociarlos a otra cuenta. <ph name="LEARN_MORE" /></translation> <translation id="4149882025268051530">El instalador no pudo descomprimir el archivo. Descargue Google Chrome nuevamente.</translation> <translation id="4191857738314598978">{0,plural, =1{Reinicia Chrome en el transcurso de 1 día}other{Reinicia Chrome en el transcurso de # días}}</translation> +<translation id="4205362703535890467">Chrome no encontró software dañino conocido en la computadora. Última verificación: ayer.</translation> <translation id="4205939740494406371">Chrome no puede revisar las contraseñas. Vuelve a intentarlo dentro de 24 horas o <ph name="BEGIN_LINK" />revisa las contraseñas en tu Cuenta de Google<ph name="END_LINK" />.</translation> <translation id="424864128008805179">¿Quieres salir de Chrome?</translation> <translation id="4251615635259297716">¿Quieres vincular tus datos de Google Chrome con esta cuenta?</translation> @@ -141,6 +146,7 @@ <translation id="4754614261631455953">Google Chrome Canary (tráfico mDNS entrante)</translation> <translation id="4771048833395599659">Chrome bloqueó este archivo porque podría ser peligroso.</translation> <translation id="479167709087336770">Se usará el mismo corrector ortográfico que se emplea en la Búsqueda de Google. El texto que escribes en el navegador se envía a Google. Puedes modificar este comportamiento en la configuración en cualquier momento.</translation> +<translation id="4831688036548685548">Chrome no encontró software dañino conocido en la computadora. Última verificación: hace un momento.</translation> <translation id="4891791193823137474">Permitir que Google Chrome se ejecute en segundo plano</translation> <translation id="4895437082222824641">Abrir vínculo en una pes&taña nueva de Chrome</translation> <translation id="4953650215774548573">Establecer Google Chrome como navegador predeterminado</translation> @@ -154,6 +160,7 @@ <translation id="532046782124376502">Advertencia: Google Chrome no puede impedir que las extensiones guarden tu historial de navegación. Para inhabilitar esta extensión en modo de navegación incógnito, desmarca esta opción.</translation> <translation id="5386244825306882791">También controla qué página se muestra al iniciar Chrome o al realizar búsquedas desde el cuadro multifunción.</translation> <translation id="5394833366792865639">Compartir una pestaña de Chrome</translation> +<translation id="5409605318138185493">{NUM_DAYS,plural, =1{Chrome no encontró software dañino conocido en la computadora. Última verificación: hace 1 día.}other{Chrome no encontró software dañino conocido en la computadora. Última verificación: hace {NUM_DAYS} días.}}</translation> <translation id="5430073640787465221">Tu archivo de preferencias está dañado o no es válido. Google Chrome no puede recuperar tu configuración.</translation> <translation id="556024056938947818">Google Chrome está intentando mostrar contraseñas.</translation> <translation id="5566025111015594046">Google Chrome (tráfico mDNS entrante)</translation> @@ -190,6 +197,7 @@ <translation id="6750954913813541382">Para corregir los errores ortográficos, Chrome envía a Google lo que escribes en el navegador</translation> <translation id="677276454032249905">¿Deseas salir de Chrome de todos modos?</translation> <translation id="683440813066116847">Regla de entrada para que Google Chrome Canary permita el tráfico mDNS.</translation> +<translation id="6861451385429799394"><ph name="BEGIN_LINK" />Tu administrador<ph name="END_LINK" /> inhabilitó la opción de búsqueda de software dañino de Chrome</translation> <translation id="6885412569789873916">Apps de Chrome Beta</translation> <translation id="6943584222992551122">Los datos de navegación de esta persona se borrarán de este dispositivo. Para recuperarlos, accede a Chrome como <ph name="USER_EMAIL" />.</translation> <translation id="6967962315388095737">Regla de entrada para que Google Chrome Beta permita el tráfico mDNS.</translation> @@ -261,6 +269,7 @@ <translation id="8834965163890861871">Google Chrome está intentando editar contraseñas. Para permitirlo, ingresa tu contraseña de Windows.</translation> <translation id="884296878221830158">También controla qué página se muestra al iniciar Chrome o al hacer clic en el botón de página principal.</translation> <translation id="8862326446509486874">No tienes los derechos que se requieren para realizar la instalación al nivel del sistema. Intenta ejecutar el instalador nuevamente como Administrador.</translation> +<translation id="8907906903932240086">Chrome puede buscar software dañino en la computadora</translation> <translation id="8914504000324227558">Volver a iniciar Chrome</translation> <translation id="8922193594870374009">Para enviar un número de <ph name="ORIGIN" /> a tu teléfono Android, accede a Chrome en ambos dispositivos.</translation> <translation id="8999208279178790196">{0,plural, =0{Hay una actualización de Chrome disponible}=1{Hay una actualización de Chrome disponible}other{Hay una actualización de Chrome disponible hace # días}}</translation> @@ -268,6 +277,7 @@ <translation id="9067395829937117663">Para usar Google Chrome, se requiere Windows 7 o versiones posteriores.</translation> <translation id="911206726377975832">¿También eliminar datos de navegación?</translation> <translation id="9138603949443464873">Para aplicar los cambios, vuelve a ejecutar Chrome</translation> +<translation id="9155112650704618965">{NUM_HOURS,plural, =1{Chrome no encontró software dañino conocido en la computadora. Última verificación: hace 1 hora.}other{Chrome no encontró software dañino conocido en la computadora. Última verificación: hace {NUM_HOURS} horas.}}</translation> <translation id="919706545465235479">Actualiza Chrome para iniciar la sincronización</translation> <translation id="989369509083708165">Google Chrome es tu navegador predeterminado</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/google_chrome_strings_uk.xtb b/chrome/app/resources/google_chrome_strings_uk.xtb index 9cee298c..e1236a8 100644 --- a/chrome/app/resources/google_chrome_strings_uk.xtb +++ b/chrome/app/resources/google_chrome_strings_uk.xtb
@@ -223,7 +223,7 @@ <translation id="7573289029918943991">Щоб дізнатися, чи пристрій використовує актуальну версію операційної системи, перейдіть у <ph name="LINK_BEGIN" />налаштування ОС Chrome<ph name="LINK_END" /></translation> <translation id="7592736734348559088">Google Chrome не вдалося синхронізувати ваші дані, оскільки дані для входу в обліковий запис застаріли.</translation> <translation id="7626032353295482388">Вітаємо у Chrome!</translation> -<translation id="7629695634924605473">Chrome повідомляє, коли ваші паролі зламують</translation> +<translation id="7629695634924605473">Якщо ваші паролі колись викрадуть, Chrome повідомить вас про це</translation> <translation id="7641148173327520642">Ваш системний адміністратор налаштував Google Chrome відкривати сторінку <ph name="TARGET_URL_HOSTNAME" /> в <ph name="ALTERNATIVE_BROWSER_NAME" />.</translation> <translation id="7651907282515937834">Логотип Chrome Enterprise</translation> <translation id="7747138024166251722">Програмі встановлення не вдалося створити тимчасовий каталог. Перевірте наявність вільного простору на диску та дозволу на встановлення програмного забезпечення.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-CN.xtb b/chrome/app/resources/google_chrome_strings_zh-CN.xtb index 97c827c..c36003c 100644 --- a/chrome/app/resources/google_chrome_strings_zh-CN.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-CN.xtb
@@ -6,6 +6,7 @@ <translation id="1051826050538111504">您的计算机上存在有害软件。Chrome 可以移除该软件、恢复您的设置并停用扩展程序,以确保您的浏览器能够重新正常运行。</translation> <translation id="1065672644894730302">系统无法读取您的偏好设置。某些功能可能无法使用,并且对偏好设置所做的更改不会保存。</translation> <translation id="1088300314857992706"><ph name="USER_EMAIL_ADDRESS" /> 之前使用的是 Chrome</translation> +<translation id="1088654056000736875">Chrome 正在从您的计算机中移除有害软件…</translation> <translation id="1097330777386562916">退出 Chrome 时清除 Cookie 及网站数据</translation> <translation id="110877069173485804">这是您的专属Chrome</translation> <translation id="1125124144982679672">谁在使用 Chrome?</translation> @@ -16,6 +17,7 @@ <translation id="1355000804395496115">在 Chrome 中使用不同的个人资料将工作上的浏览数据和个人的浏览数据分隔开来,或者为此设备的不同用户使用不同的个人资料</translation> <translation id="137466361146087520">Google Chrome 测试版</translation> <translation id="1399397803214730675">该计算机已安装了更高版本的 Google Chrome 浏览器。如果该软件无法正常运行,请卸载 Google Chrome 浏览器,然后重试。</translation> +<translation id="140541193409212341">Chrome 对您的计算机进行有害软件检查时出错</translation> <translation id="1434626383986940139">Chrome Canary 应用</translation> <translation id="1513277449617685876">若要将个人的浏览数据与 <ph name="NEW_USER" /> 的浏览数据分隔开来,请在 Chrome 中创建一份新的个人资料</translation> <translation id="1553358976309200471">更新 Chrome</translation> @@ -55,6 +57,7 @@ <translation id="2429317896000329049">由于您的网域停用了同步功能,Google Chrome无法同步您的数据。</translation> <translation id="2467438592969358367">Google Chrome 想导出您的密码。请输入您的 Windows 密码以允许此操作。</translation> <translation id="2485422356828889247">卸载</translation> +<translation id="252502352004572774">Chrome 正在检查您的计算机上是否存在有害软件…</translation> <translation id="2534507159460261402">Google Pay(已复制到 Chrome)</translation> <translation id="2580411288591421699">无法安装与当前运行版本相同的 Google Chrome 浏览器。请关闭 Google Chrome 浏览器,然后重试。</translation> <translation id="2586406160782125153">这会从这台设备上删除您的浏览数据。如果日后想要检索您的数据,届时请以 <ph name="USER_EMAIL" /> 的身份登录 Chrome。</translation> @@ -109,10 +112,12 @@ <translation id="4050175100176540509">最新版本不仅在安全性方面做出了重要改进,还提供了多项新功能。</translation> <translation id="4053720452172726777">自定义及控制 Google Chrome</translation> <translation id="4110895483821904099">设置您的新 Chrome 个人资料</translation> +<translation id="4127976662406264741">{NUM_MINS,plural, =1{Chrome 在您的计算机上未发现已知有害软件。上次检查时间:1 分钟前。}other{Chrome 在您的计算机上未发现已知有害软件。上次检查时间:{NUM_MINS} 分钟前。}}</translation> <translation id="4143243756087420366">Chrome 名称和图片</translation> <translation id="4147555960264124640">您目前登录的帐号是一个托管帐号,该帐号的管理员将能够控制您的 Google Chrome 个人资料。您的 Chrome 数据(例如您的应用、书签、历史记录、密码和其他设置)将永远与 <ph name="USER_NAME" /> 相关联。您可以通过 Google 帐号信息中心删除这些数据,但无法将这些数据与其他帐号相关联。<ph name="LEARN_MORE" /></translation> <translation id="4149882025268051530">安装程序无法解压缩存档文件。请重新下载 Google Chrome。</translation> <translation id="4191857738314598978">{0,plural, =1{请于 1 天内重新启动 Chrome}other{请于 # 天内重新启动 Chrome}}</translation> +<translation id="4205362703535890467">Chrome 在您的计算机上未发现已知有害软件。上次检查时间:昨天。</translation> <translation id="4205939740494406371">Chrome 无法检查您的密码。请过 24 小时再试,或者<ph name="BEGIN_LINK" />检查您的 Google 帐号中的密码<ph name="END_LINK" />。</translation> <translation id="424864128008805179">退出 Chrome?</translation> <translation id="4251615635259297716">是否将您的 Chrome 数据与此帐号相关联?</translation> @@ -141,6 +146,7 @@ <translation id="4754614261631455953">Google Chrome Canary (mDNS-In)</translation> <translation id="4771048833395599659">此文件可能存在危险,因此 Chrome 已将其拦截。</translation> <translation id="479167709087336770">这项服务会使用 Google 搜索所用的拼写检查工具。您在浏览器中输入的文字会被发送给 Google。您随时可在“设置”中更改此行为。</translation> +<translation id="4831688036548685548">Chrome 在您的计算机上未发现已知有害软件。上次检查时间:刚才。</translation> <translation id="4891791193823137474">让 Google Chrome 浏览器在后台运行</translation> <translation id="4895437082222824641">在 Chrome 新标签页中打开链接(&T)</translation> <translation id="4953650215774548573">将Google Chrome设为默认浏览器</translation> @@ -154,6 +160,7 @@ <translation id="532046782124376502">警告:Google Chrome 无法阻止扩展程序记录您的浏览活动。要在无痕模式下停用该扩展程序,请取消选中此选项。</translation> <translation id="5386244825306882791">它还能够控制您启动Chrome后或通过多功能框进行搜索时系统显示的页面。</translation> <translation id="5394833366792865639">共享 Chrome 标签页</translation> +<translation id="5409605318138185493">{NUM_DAYS,plural, =1{Chrome 在您的计算机上未发现已知有害软件。上次检查时间:1 天前。}other{Chrome 在您的计算机上未发现已知有害软件。上次检查时间:{NUM_DAYS} 天前。}}</translation> <translation id="5430073640787465221">您的偏好设置文件已损坏或无效。Google Chrome 浏览器无法恢复您的设置。</translation> <translation id="556024056938947818">Google Chrome 正尝试显示密码。</translation> <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation> @@ -190,6 +197,7 @@ <translation id="6750954913813541382">为了修正拼写错误,Chrome 会将您在浏览器中输入的文字发送给 Google</translation> <translation id="677276454032249905">仍要退出 Chrome?</translation> <translation id="683440813066116847">Google Chrome Canary版的入站规则,允许mDNS流量。</translation> +<translation id="6861451385429799394"><ph name="BEGIN_LINK" />您的管理员<ph name="END_LINK" />已停用 Chrome 的有害软件检查功能</translation> <translation id="6885412569789873916">Chrome 测试版应用</translation> <translation id="6943584222992551122">系统将会从此设备上删除该用户的浏览数据。要想恢复这些数据,请以“<ph name="USER_EMAIL" />”的身份登录 Chrome。</translation> <translation id="6967962315388095737">Google Chrome 测试版的入站规则,允许 mDNS 流量。</translation> @@ -261,6 +269,7 @@ <translation id="8834965163890861871">Google Chrome 正在尝试修改密码。请输入您的 Windows 密码以允许此操作。</translation> <translation id="884296878221830158">它还能够控制您启动Chrome或点击“主页”按钮后系统显示的页面。</translation> <translation id="8862326446509486874">您的权限不足,无法进行系统级安装。请尝试以管理员身份再次运行安装程序。</translation> +<translation id="8907906903932240086">Chrome 可以检查您的计算机上是否存在有害软件</translation> <translation id="8914504000324227558">重启 Chrome</translation> <translation id="8922193594870374009">若要从 <ph name="ORIGIN" /> 向您的 Android 手机发送电话号码,请在这两部设备上分别登录 Chrome。</translation> <translation id="8999208279178790196">{0,plural, =0{有一项可用的 Chrome 更新}=1{有一项可用的 Chrome 更新}other{有一项可用的 Chrome 更新(已发布 # 天)}}</translation> @@ -268,6 +277,7 @@ <translation id="9067395829937117663">Google Chrome 仅支持 Windows 7 或更高版本的操作系统。</translation> <translation id="911206726377975832">同时删除您的浏览数据吗?</translation> <translation id="9138603949443464873">要想应用您的更改,请重新启动 Chrome</translation> +<translation id="9155112650704618965">{NUM_HOURS,plural, =1{Chrome 在您的计算机上未发现已知有害软件。上次检查时间:1 小时前。}other{Chrome 在您的计算机上未发现已知有害软件。上次检查时间:{NUM_HOURS} 小时前。}}</translation> <translation id="919706545465235479">更新 Chrome 以开始同步</translation> <translation id="989369509083708165">Google Chrome 是您的默认浏览器</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/google_chrome_strings_zh-HK.xtb b/chrome/app/resources/google_chrome_strings_zh-HK.xtb index 5d0dc4b0..e51a5d2a3 100644 --- a/chrome/app/resources/google_chrome_strings_zh-HK.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
@@ -19,7 +19,7 @@ <translation id="1355000804395496115">在 Chrome 使用不同的設定檔,以便將工作和個人瀏覽區分開,或讓不同的使用者共用此裝置</translation> <translation id="137466361146087520">Google Chrome 測試版</translation> <translation id="1399397803214730675">這部電腦已安裝較新的 Google Chrome 版本,如果軟件無法工作,請解除安裝 Google Chrome,然後再試一次。</translation> -<translation id="140541193409212341">Chrome 對電腦進行有害軟件檢查時發生錯誤</translation> +<translation id="140541193409212341">Chrome 為電腦檢查有害軟件時發生錯誤</translation> <translation id="1434626383986940139">Chrome Canary 應用程式</translation> <translation id="1513277449617685876">如要將個人瀏覽與 <ph name="NEW_USER" /> 的瀏覽區分開,請在 Chrome 中建立新的設定檔</translation> <translation id="1553358976309200471">更新 Chrome</translation> @@ -276,7 +276,7 @@ <translation id="8834965163890861871">Google Chrome 正在嘗試編輯密碼。如果您同意,請輸入 Windows 密碼。</translation> <translation id="884296878221830158">這個擴充功能也會管制 Chrome 啟動時或您按一下 [主頁] 按鈕時所顯示的網頁。</translation> <translation id="8862326446509486874">您沒有在系統層級進行安裝的權限,請以管理員的身分執行安裝程式。</translation> -<translation id="8907906903932240086">Chrome 可對電腦進行有害軟件檢查</translation> +<translation id="8907906903932240086">Chrome 可為電腦檢查有害軟件</translation> <translation id="8914504000324227558">重新啟動 Chrome</translation> <translation id="8922193594870374009">如要將號碼從 <ph name="ORIGIN" /> 傳送至 Android 手機,請在這兩部裝置上登入 Chrome。</translation> <translation id="8999208279178790196">{0,plural, =0{有可用的 Chrome 更新}=1{有可用的 Chrome 更新}other{Chrome 更新已發佈 # 天}}</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 6d2bb0e..022ad2e5 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -2039,9 +2039,9 @@ "//components/metrics:call_stack_profile_params", "//components/metrics:component_metrics", "//components/metrics:content", - "//components/metrics:demographic_metrics_provider", "//components/metrics:net", "//components/metrics:ui", + "//components/metrics/demographics", "//components/metrics_services_manager", "//components/navigation_interception", "//components/navigation_metrics", @@ -5825,8 +5825,6 @@ "renderer_host/pepper/device_id_fetcher.h", "renderer_host/pepper/monitor_finder_mac.h", "renderer_host/pepper/monitor_finder_mac.mm", - "renderer_host/pepper/pepper_broker_message_filter.cc", - "renderer_host/pepper/pepper_broker_message_filter.h", "renderer_host/pepper/pepper_isolated_file_system_message_filter.cc", "renderer_host/pepper/pepper_isolated_file_system_message_filter.h", ]
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 472b5a7..ec6b054 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -355,6 +355,7 @@ #include "third_party/blink/public/mojom/site_engagement/site_engagement.mojom.h" #include "third_party/blink/public/mojom/user_agent/user_agent_metadata.mojom.h" #include "third_party/blink/public/mojom/webpreferences/web_preferences.mojom.h" +#include "third_party/blink/public/public_buildflags.h" #include "third_party/skia/include/core/SkColor.h" #include "third_party/widevine/cdm/buildflags.h" #include "ui/base/clipboard/clipboard_format_type.h" @@ -640,6 +641,10 @@ #include "chromeos/lacros/lacros_chrome_service_impl.h" #endif +#if BUILDFLAG(USE_MINIKIN_HYPHENATION) && !defined(OS_ANDROID) +#include "chrome/browser/component_updater/hyphenation_component_installer.h" +#endif + using base::FileDescriptor; using blink::web_pref::WebPreferences; using content::BrowserThread; @@ -2354,7 +2359,6 @@ embedder_support::kOriginTrialDisabledFeatures, embedder_support::kOriginTrialDisabledTokens, embedder_support::kOriginTrialPublicKey, - switches::kPpapiFlashArgs, switches::kPpapiFlashPath, switches::kPpapiFlashVersion, switches::kReaderModeHeuristics, @@ -5838,3 +5842,11 @@ } #endif // defined(OS_MAC) + +void ChromeContentBrowserClient::GetHyphenationDictionary( + base::OnceCallback<void(const base::FilePath&)> callback) { +#if BUILDFLAG(USE_MINIKIN_HYPHENATION) && !defined(OS_ANDROID) + component_updater::HyphenationComponentInstallerPolicy:: + GetHyphenationDictionary(std::move(callback)); +#endif +}
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h index 3252055..4dbca0a 100644 --- a/chrome/browser/chrome_content_browser_client.h +++ b/chrome/browser/chrome_content_browser_client.h
@@ -705,6 +705,9 @@ sandbox::SeatbeltExecClient* client) override; #endif // defined(OS_MAC) + void GetHyphenationDictionary( + base::OnceCallback<void(const base::FilePath&)>) override; + protected: static bool HandleWebUI(GURL* url, content::BrowserContext* browser_context); static bool HandleWebUIReverse(GURL* url,
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index 6ba5063a..b8bf5229 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -1748,6 +1748,8 @@ "login/screens/recommend_apps_screen.h", "login/screens/reset_screen.cc", "login/screens/reset_screen.h", + "login/screens/signin_fatal_error_screen.cc", + "login/screens/signin_fatal_error_screen.h", "login/screens/supervision_transition_screen.cc", "login/screens/supervision_transition_screen.h", "login/screens/sync_consent_screen.cc", @@ -3473,6 +3475,7 @@ "login/saml/password_expiry_notification_unittest.cc", "login/saml/password_sync_token_verifier_unittest.cc", "login/saml/saml_offline_signin_limiter_unittest.cc", + "login/screens/encryption_migration_screen_unittest.cc", "login/screens/network_screen_unittest.cc", "login/screens/recommend_apps/recommend_apps_fetcher_impl_unittest.cc", "login/screens/update_required_screen_unittest.cc", @@ -3766,7 +3769,6 @@ "../../common/extensions/api/file_system_provider/file_system_provider_handler_unittest.cc", "../ui/views/frame/immersive_mode_controller_ash_unittest.cc", "../ui/views/select_file_dialog_extension_unittest.cc", - "../ui/webui/chromeos/login/encryption_migration_screen_handler_unittest.cc", "../ui/webui/chromeos/login/l10n_util_test_util.cc", "../ui/webui/chromeos/login/l10n_util_test_util.h", "../ui/webui/chromeos/login/l10n_util_unittest.cc",
diff --git a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc b/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc index 3692fb68..f815120a 100644 --- a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc +++ b/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc
@@ -23,7 +23,12 @@ #include "build/build_config.h" #include "chrome/app/chrome_command_ids.h" #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/chromeos/login/screens/sync_consent_screen.h" +#include "chrome/browser/chromeos/login/test/device_state_mixin.h" +#include "chrome/browser/chromeos/login/test/login_manager_mixin.h" #include "chrome/browser/chromeos/login/test/oobe_base_test.h" +#include "chrome/browser/chromeos/profiles/profile_helper.h" +#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" #include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h" #include "chrome/browser/ui/browser.h" @@ -33,6 +38,7 @@ #include "chrome/common/extensions/extension_constants.h" #include "chrome/test/base/interactive_test_utils.h" #include "chrome/test/base/ui_test_utils.h" +#include "chromeos/constants/chromeos_features.h" #include "chromeos/constants/chromeos_switches.h" #include "components/user_manager/user_names.h" #include "content/public/browser/browser_task_traits.h" @@ -936,13 +942,7 @@ DISALLOW_COPY_AND_ASSIGN(OobeSpokenFeedbackTest); }; -#if defined(MEMORY_SANITIZER) -// Times out under MSan: https://crbug.com/1071693 -#define MAYBE_SpokenFeedbackInOobe DISABLED_SpokenFeedbackInOobe -#else -#define MAYBE_SpokenFeedbackInOobe SpokenFeedbackInOobe -#endif -IN_PROC_BROWSER_TEST_F(OobeSpokenFeedbackTest, MAYBE_SpokenFeedbackInOobe) { +IN_PROC_BROWSER_TEST_F(OobeSpokenFeedbackTest, SpokenFeedbackInOobe) { ui_controls::EnableUIControls(); ASSERT_FALSE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled()); AccessibilityManager::Get()->EnableSpokenFeedback(true); @@ -960,4 +960,45 @@ sm_.Replay(); } +class SigninToUserProfileSwitchTest : public OobeSpokenFeedbackTest { + public: + // OobeSpokenFeedbackTest: + void SetUpCommandLine(base::CommandLine* command_line) override { + OobeSpokenFeedbackTest::SetUpCommandLine(command_line); + // Force the help app to launch in the background. + command_line->AppendSwitch(switches::kForceFirstRunUI); + } + + protected: + LoginManagerMixin login_manager_{&mixin_host_}; + DeviceStateMixin device_state_{ + &mixin_host_, DeviceStateMixin::State::OOBE_COMPLETED_UNOWNED}; +}; + +// Verifies that spoken feedback correctly handles profile switch (signin -> +// user) and announces the sync consent screen correctly. +IN_PROC_BROWSER_TEST_F(SigninToUserProfileSwitchTest, LoginAsNewUser) { + // Force sync screen. + auto reset = SyncConsentScreen::ForceBrandedBuildForTesting(true); + AccessibilityManager::Get()->EnableSpokenFeedback(true); + sm_.ExpectSpeechPattern("*"); + + sm_.Call([this]() { + ASSERT_EQ(chromeos::AccessibilityManager::Get()->profile(), + ProfileHelper::GetSigninProfile()); + login_manager_.LoginAsNewRegularUser(); + }); + + std::string button_title = + features::IsSplitSettingsSyncEnabled() ? "Got it" : "Accept and continue"; + sm_.ExpectSpeech(button_title); + + // Check that profile switched to the active user. + sm_.Call([]() { + ASSERT_EQ(chromeos::AccessibilityManager::Get()->profile(), + ProfileManager::GetActiveUserProfile()); + }); + sm_.Replay(); +} + } // namespace chromeos
diff --git a/chrome/browser/chromeos/extensions/input_method_api.cc b/chrome/browser/chromeos/extensions/input_method_api.cc index 5b2b29c..1600889e 100644 --- a/chrome/browser/chromeos/extensions/input_method_api.cc +++ b/chrome/browser/chromeos/extensions/input_method_api.cc
@@ -160,7 +160,7 @@ return RespondNow(Error(InformativeError( base::StringPrintf("%s Input Method: %s", kErrorInvalidInputMethod, params->input_method_id.c_str()), - function_name()))); + static_function_name()))); } ExtensionFunction::ResponseAction @@ -190,13 +190,13 @@ SpellcheckService* spellcheck = SpellcheckServiceFactory::GetForContext(browser_context()); if (!spellcheck) { - return RespondNow( - Error(InformativeError(kErrorSpellCheckNotAvailable, function_name()))); + return RespondNow(Error(InformativeError(kErrorSpellCheckNotAvailable, + static_function_name()))); } SpellcheckCustomDictionary* dictionary = spellcheck->GetCustomDictionary(); if (!dictionary->IsLoaded()) { - return RespondNow(Error( - InformativeError(kErrorCustomDictionaryNotLoaded, function_name()))); + return RespondNow(Error(InformativeError(kErrorCustomDictionaryNotLoaded, + static_function_name()))); } const std::set<std::string>& words = dictionary->GetWords(); @@ -215,13 +215,13 @@ SpellcheckService* spellcheck = SpellcheckServiceFactory::GetForContext(browser_context()); if (!spellcheck) { - return RespondNow( - Error(InformativeError(kErrorSpellCheckNotAvailable, function_name()))); + return RespondNow(Error(InformativeError(kErrorSpellCheckNotAvailable, + static_function_name()))); } SpellcheckCustomDictionary* dictionary = spellcheck->GetCustomDictionary(); if (!dictionary->IsLoaded()) { - return RespondNow(Error( - InformativeError(kErrorCustomDictionaryNotLoaded, function_name()))); + return RespondNow(Error(InformativeError(kErrorCustomDictionaryNotLoaded, + static_function_name()))); } if (dictionary->AddWord(params->word)) @@ -235,7 +235,7 @@ return RespondNow(Error( InformativeError(base::StringPrintf("%s. Word: %s", kErrorInvalidWord, params->word.c_str()), - function_name()))); + static_function_name()))); } ExtensionFunction::ResponseAction @@ -243,8 +243,8 @@ syncer::SyncService* sync_service = ProfileSyncServiceFactory::GetForProfile( Profile::FromBrowserContext(browser_context())); if (!sync_service) - return RespondNow( - Error(InformativeError(kErrorSyncServiceNotReady, function_name()))); + return RespondNow(Error( + InformativeError(kErrorSyncServiceNotReady, static_function_name()))); std::unique_ptr<base::Value> ret(new base::Value( sync_service->GetUserSettings()->IsEncryptEverythingEnabled())); return RespondNow(OneArgument(std::move(ret))); @@ -297,7 +297,7 @@ return RespondNow(Error(InformativeError( base::StringPrintf("%s Input Method: %s", kErrorInvalidInputMethod, params->input_method_id.c_str()), - function_name()))); + static_function_name()))); content::WebContents* web_contents = GetSenderWebContents(); if (web_contents) { @@ -319,7 +319,7 @@ ui::IMEBridge::Get()->GetInputContextHandler(); if (!input_context) return RespondNow(Error(InformativeError( - kErrorInputContextHandlerNotAvailable, function_name()))); + kErrorInputContextHandlerNotAvailable, static_function_name()))); std::unique_ptr<GetSurroundingText::Params> params( GetSurroundingText::Params::Create(*args_)); @@ -328,7 +328,7 @@ base::StringPrintf("%s before_length = %d, after_length = %d.", kErrorInvalidParametersForGetSurroundingText, params->before_length, params->after_length), - function_name()))); + static_function_name()))); uint32_t param_before_length = (uint32_t)params->before_length; uint32_t param_after_length = (uint32_t)params->after_length; @@ -411,7 +411,7 @@ InputMethodEngineBase* engine = GetEngineIfActive(browser_context(), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); const auto parent_params = SetCompositionRange::Params::Create(*args_); const auto& params = parent_params->parameters; @@ -450,7 +450,7 @@ if (!engine->SetCompositionRange(params.context_id, params.selection_before, params.selection_after, segments, &error)) { - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } return RespondNow(NoArguments()); } @@ -461,7 +461,7 @@ InputMethodEngineBase* engine = GetEngineIfActive(browser_context(), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); const auto parent_params = SetComposingRange::Params::Create(*args_); const auto& params = parent_params->parameters; @@ -500,7 +500,7 @@ if (!engine->SetComposingRange(params.context_id, params.start, params.end, segments, &error)) { - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } return RespondNow(NoArguments()); } @@ -511,7 +511,7 @@ InputMethodEngineBase* engine = GetEngineIfActive(browser_context(), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); const auto parent_params = GetAutocorrectRange::Params::Create(*args_); const auto& params = parent_params->parameters; @@ -529,7 +529,7 @@ InputMethodEngineBase* engine = GetEngineIfActive(browser_context(), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); const auto parent_params = GetAutocorrectCharacterBounds::Params::Create(*args_); @@ -537,7 +537,7 @@ const gfx::Rect rect = engine->GetAutocorrectCharacterBounds(params.context_id, &error); if (rect.IsEmpty()) { - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } auto ret = std::make_unique<base::DictionaryValue>(); ret->SetInteger("x", rect.x()); @@ -553,7 +553,7 @@ InputMethodEngineBase* engine = GetEngineIfActive(browser_context(), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); const auto parent_params = SetAutocorrectRange::Params::Create(*args_); const auto& params = parent_params->parameters; @@ -562,7 +562,7 @@ params.selection_start, params.selection_end, &error)) { auto results = std::make_unique<base::ListValue>(); results->Append(std::make_unique<base::Value>(false)); - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } return RespondNow(NoArguments()); } @@ -573,7 +573,7 @@ InputMethodEngineBase* engine = GetEngineIfActive(browser_context(), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); std::unique_ptr<SetSelectionRange::Params> parent_params( SetSelectionRange::Params::Create(*args_)); @@ -585,7 +585,7 @@ auto results = std::make_unique<base::ListValue>(); results->Append(std::make_unique<base::Value>(false)); return RespondNow(ErrorWithArguments( - std::move(results), InformativeError(error, function_name()))); + std::move(results), InformativeError(error, static_function_name()))); } return RespondNow(OneArgument(std::make_unique<base::Value>(true))); } @@ -595,7 +595,7 @@ InputMethodEngineBase* engine = GetEngineIfActive(browser_context(), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); engine->Reset(); return RespondNow(NoArguments());
diff --git a/chrome/browser/chromeos/extensions/printing/printer_capabilities_provider_unittest.cc b/chrome/browser/chromeos/extensions/printing/printer_capabilities_provider_unittest.cc index aceadbed..8fe2e50 100644 --- a/chrome/browser/chromeos/extensions/printing/printer_capabilities_provider_unittest.cc +++ b/chrome/browser/chromeos/extensions/printing/printer_capabilities_provider_unittest.cc
@@ -131,7 +131,9 @@ capabilities->copies_max = 2; capabilities->color_changeable = true; // Add printer capabilities to |test_backend_|. - test_backend_->AddValidPrinter(kPrinterId, std::move(capabilities)); + test_backend_->AddValidPrinter( + kPrinterId, std::move(capabilities), + std::make_unique<printing::PrinterBasicInfo>()); base::RunLoop run_loop; printer_capabilities_provider_->GetPrinterCapabilities( @@ -157,7 +159,8 @@ // Add printer capabilities to |test_backend_|. test_backend_->AddValidPrinter( - kPrinterId, std::make_unique<printing::PrinterSemanticCapsAndDefaults>()); + kPrinterId, std::make_unique<printing::PrinterSemanticCapsAndDefaults>(), + std::make_unique<printing::PrinterBasicInfo>()); base::RunLoop run_loop; printer_capabilities_provider_->GetPrinterCapabilities( @@ -181,7 +184,8 @@ // Add printer capabilities to |test_backend_|. test_backend_->AddValidPrinter( - kPrinterId, std::make_unique<printing::PrinterSemanticCapsAndDefaults>()); + kPrinterId, std::make_unique<printing::PrinterSemanticCapsAndDefaults>(), + std::make_unique<printing::PrinterBasicInfo>()); base::RunLoop run_loop; printer_capabilities_provider_->GetPrinterCapabilities(
diff --git a/chrome/browser/chromeos/extensions/printing/printing_api_handler_unittest.cc b/chrome/browser/chromeos/extensions/printing/printing_api_handler_unittest.cc index 7c7863c40..2b65a45 100644 --- a/chrome/browser/chromeos/extensions/printing/printing_api_handler_unittest.cc +++ b/chrome/browser/chromeos/extensions/printing/printing_api_handler_unittest.cc
@@ -301,7 +301,9 @@ AddUnavailablePrinter(printer_id); // Add printer capabilities to |test_backend_|. - test_backend_->AddValidPrinter(printer_id, std::move(capabilities)); + test_backend_->AddValidPrinter( + printer_id, std::move(capabilities), + std::make_unique<printing::PrinterBasicInfo>()); } void OnJobSubmitted(base::RepeatingClosure run_loop_closure,
diff --git a/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc b/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc index ae41556..36e45998 100644 --- a/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc +++ b/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc
@@ -788,8 +788,14 @@ ::testing::Values(TestCase("sortColumns"), TestCase("sortColumns").InGuestMode())); +// TODO(crbug.com/1139247): Failing on ChromeOS. +#if defined(OS_CHROMEOS) +#define MAYBE_TabIndex DISABLED_TabIndex +#else +#define MAYBE_TabIndex TabIndex +#endif WRAPPED_INSTANTIATE_TEST_SUITE_P( - TabIndex, /* tab_index.js: */ + MAYBE_TabIndex, /* tab_index.js: */ FilesAppBrowserTest, ::testing::Values( TestCase("tabindexSearchBoxFocus").FilesNg(),
diff --git a/chrome/browser/chromeos/login/chrome_restart_request.cc b/chrome/browser/chromeos/login/chrome_restart_request.cc index bdbb127..82e8411 100644 --- a/chrome/browser/chromeos/login/chrome_restart_request.cc +++ b/chrome/browser/chromeos/login/chrome_restart_request.cc
@@ -125,7 +125,6 @@ ::switches::kGpuSandboxStartEarly, ::switches::kNumRasterThreads, ::switches::kPlatformDisallowsChromeOSDirectVideoDecoder, - ::switches::kPpapiFlashArgs, ::switches::kPpapiFlashPath, ::switches::kPpapiFlashVersion, ::switches::kPpapiInProcess,
diff --git a/chrome/browser/chromeos/login/encryption_migration_browsertest.cc b/chrome/browser/chromeos/login/encryption_migration_browsertest.cc index 6faf2b2..2c4336e 100644 --- a/chrome/browser/chromeos/login/encryption_migration_browsertest.cc +++ b/chrome/browser/chromeos/login/encryption_migration_browsertest.cc
@@ -13,6 +13,7 @@ #include "chrome/browser/chromeos/arc/policy/arc_policy_util.h" #include "chrome/browser/chromeos/login/login_wizard.h" #include "chrome/browser/chromeos/login/oobe_screen.h" +#include "chrome/browser/chromeos/login/screens/encryption_migration_screen.h" #include "chrome/browser/chromeos/login/test/js_checker.h" #include "chrome/browser/chromeos/login/test/login_manager_mixin.h" #include "chrome/browser/chromeos/login/test/oobe_base_test.h" @@ -20,7 +21,6 @@ #include "chrome/browser/chromeos/login/test/user_policy_mixin.h" #include "chrome/browser/chromeos/login/ui/login_display_host.h" #include "chrome/browser/chromeos/login/wizard_controller.h" -#include "chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" #include "chromeos/constants/chromeos_switches.h" @@ -83,11 +83,12 @@ FakeCryptohomeClient::Get()->set_run_default_dircrypto_migration(false); - // Configure encryption migration screen handler for test. - auto* handler = GetOobeUI()->GetHandler<EncryptionMigrationScreenHandler>(); - handler->SetFreeDiskSpaceFetcherForTesting(base::BindRepeating( + // Configure encryption migration screen for test. + EncryptionMigrationScreen* screen = EncryptionMigrationScreen::Get( + WizardController::default_controller()->screen_manager()); + screen->set_tick_clock_for_testing(&tick_clock_); + screen->set_free_disk_space_fetcher_for_testing(base::BindRepeating( &EncryptionMigrationTest::GetFreeSpace, base::Unretained(this))); - handler->SetTickClockForTesting(&tick_clock_); } protected:
diff --git a/chrome/browser/chromeos/login/existing_user_controller.cc b/chrome/browser/chromeos/login/existing_user_controller.cc index d86e1cf..c44eee2f 100644 --- a/chrome/browser/chromeos/login/existing_user_controller.cc +++ b/chrome/browser/chromeos/login/existing_user_controller.cc
@@ -955,11 +955,11 @@ DCHECK(migration_screen); migration_screen->SetUserContext(user_context); migration_screen->SetMode(migration_mode); - migration_screen->SetContinueLoginCallback(base::BindOnce( - &ExistingUserController::ContinuePerformLogin, weak_factory_.GetWeakPtr(), - login_performer_->auth_mode())); - migration_screen->SetRestartLoginCallback(base::BindOnce( - &ExistingUserController::RestartLogin, weak_factory_.GetWeakPtr())); + migration_screen->SetOperationCallbacks( + base::BindOnce(&ExistingUserController::ContinuePerformLogin, + weak_factory_.GetWeakPtr(), login_performer_->auth_mode()), + base::BindOnce(&ExistingUserController::RestartLogin, + weak_factory_.GetWeakPtr())); migration_screen->SetupInitialView(); }
diff --git a/chrome/browser/chromeos/login/oobe_screen.cc b/chrome/browser/chromeos/login/oobe_screen.cc index d7939d51..10418dd 100644 --- a/chrome/browser/chromeos/login/oobe_screen.cc +++ b/chrome/browser/chromeos/login/oobe_screen.cc
@@ -46,7 +46,6 @@ constexpr StaticOobeScreenId OobeScreen::SCREEN_CREATE_SUPERVISED_USER_FLOW_DEPRECATED; constexpr StaticOobeScreenId OobeScreen::SCREEN_CONFIRM_PASSWORD; -constexpr StaticOobeScreenId OobeScreen::SCREEN_FATAL_ERROR; constexpr StaticOobeScreenId OobeScreen::SCREEN_UNKNOWN; } // namespace chromeos
diff --git a/chrome/browser/chromeos/login/oobe_screen.h b/chrome/browser/chromeos/login/oobe_screen.h index 7099681..9606bd3 100644 --- a/chrome/browser/chromeos/login/oobe_screen.h +++ b/chrome/browser/chromeos/login/oobe_screen.h
@@ -58,7 +58,6 @@ SCREEN_CREATE_SUPERVISED_USER_FLOW_DEPRECATED{"supervised-user-creation"}; constexpr static StaticOobeScreenId SCREEN_CONFIRM_PASSWORD{ "saml-confirm-password"}; - constexpr static StaticOobeScreenId SCREEN_FATAL_ERROR{"fatal-error"}; constexpr static StaticOobeScreenId SCREEN_UNKNOWN{"unknown"}; };
diff --git a/chrome/browser/chromeos/login/saml/saml_browsertest.cc b/chrome/browser/chromeos/login/saml/saml_browsertest.cc index 47f5ce7..17255c5 100644 --- a/chrome/browser/chromeos/login/saml/saml_browsertest.cc +++ b/chrome/browser/chromeos/login/saml/saml_browsertest.cc
@@ -61,6 +61,7 @@ #include "chrome/browser/ui/login/login_handler_test_utils.h" #include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/saml_challenge_key_handler.h" +#include "chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.h" #include "chrome/browser/ui/webui/signin/signin_utils.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_paths.h" @@ -682,23 +683,15 @@ test::OobeJS().TapOnPath(kPasswordSubmit); } - std::string WaitForAndGetFatalErrorMessage() { - OobeScreenWaiter(OobeScreen::SCREEN_FATAL_ERROR).Wait(); + void ExpectFatalErrorMessage(const std::string& error_message) { + OobeScreenWaiter(SignInFatalErrorView::kScreenId).Wait(); EXPECT_TRUE(ash::LoginScreenTestApi::IsShutdownButtonShown()); EXPECT_FALSE(ash::LoginScreenTestApi::IsGuestButtonShown()); EXPECT_FALSE(ash::LoginScreenTestApi::IsAddUserButtonShown()); - std::string message_element = "$('fatal-error-card')"; - std::string error_message; - if (!content::ExecuteScriptAndExtractString( - GetLoginUI()->GetWebContents(), - "window.domAutomationController.send(" + message_element + - ".textContent);", - &error_message)) { - ADD_FAILURE(); - } - return error_message; + test::OobeJS().ExpectElementText(error_message, + {"signin-fatal-error", "subtitle"}); } FakeSamlIdp* fake_saml_idp() { return &fake_saml_idp_; } @@ -1061,8 +1054,8 @@ SigninFrameJS().TypeIntoPath("fake_password", {"Password"}); SigninFrameJS().TapOn("Submit"); - EXPECT_EQ(l10n_util::GetStringUTF8(IDS_LOGIN_FATAL_ERROR_NO_ACCOUNT_DETAILS), - WaitForAndGetFatalErrorMessage()); + ExpectFatalErrorMessage( + l10n_util::GetStringUTF8(IDS_LOGIN_FATAL_ERROR_NO_ACCOUNT_DETAILS)); } // Tests the password confirm flow when more than one password is scraped: show @@ -1094,9 +1087,8 @@ // Enter an unknown password 2nd time should go back fatal error message. SendConfirmPassword("wrong_password"); - EXPECT_EQ( - l10n_util::GetStringUTF8(IDS_LOGIN_FATAL_ERROR_PASSWORD_VERIFICATION), - WaitForAndGetFatalErrorMessage()); + ExpectFatalErrorMessage( + l10n_util::GetStringUTF8(IDS_LOGIN_FATAL_ERROR_PASSWORD_VERIFICATION)); } // Verifies that when the login flow redirects from one host to another, the @@ -1163,9 +1155,8 @@ "", "[]"); const GURL url = embedded_test_server()->base_url().Resolve("/SAML"); - EXPECT_EQ(l10n_util::GetStringFUTF8(IDS_LOGIN_FATAL_ERROR_TEXT_INSECURE_URL, - base::UTF8ToUTF16(url.spec())), - WaitForAndGetFatalErrorMessage()); + ExpectFatalErrorMessage(l10n_util::GetStringFUTF8( + IDS_LOGIN_FATAL_ERROR_TEXT_INSECURE_URL, base::UTF8ToUTF16(url.spec()))); } // Verifies that when GAIA attempts to redirect to a page served over http, not @@ -1183,9 +1174,8 @@ ->ShowSigninScreenForTest(saml_test_users::kFirstUserCorpExampleComEmail, "", "[]"); - EXPECT_EQ(l10n_util::GetStringFUTF8(IDS_LOGIN_FATAL_ERROR_TEXT_INSECURE_URL, - base::UTF8ToUTF16(url.spec())), - WaitForAndGetFatalErrorMessage()); + ExpectFatalErrorMessage(l10n_util::GetStringFUTF8( + IDS_LOGIN_FATAL_ERROR_TEXT_INSECURE_URL, base::UTF8ToUTF16(url.spec()))); } class SAMLEnrollmentTest : public SamlTest { @@ -1844,8 +1834,8 @@ SigninFrameJS().TapOn("Submit"); // SAML login fails: - EXPECT_EQ(l10n_util::GetStringUTF8(IDS_LOGIN_FATAL_ERROR_NO_ACCOUNT_DETAILS), - WaitForAndGetFatalErrorMessage()); + ExpectFatalErrorMessage( + l10n_util::GetStringUTF8(IDS_LOGIN_FATAL_ERROR_NO_ACCOUNT_DETAILS)); // Make sure no SAML password attributes are saved. // None are saved for the logged in user, since there is no logged in user:
diff --git a/chrome/browser/chromeos/login/screens/encryption_migration_screen.cc b/chrome/browser/chromeos/login/screens/encryption_migration_screen.cc index 6195d46..0dc770b 100644 --- a/chrome/browser/chromeos/login/screens/encryption_migration_screen.cc +++ b/chrome/browser/chromeos/login/screens/encryption_migration_screen.cc
@@ -4,25 +4,275 @@ #include "chrome/browser/chromeos/login/screens/encryption_migration_screen.h" +#include <cmath> +#include <string> #include <utility> +#include "base/bind.h" #include "base/check.h" +#include "base/command_line.h" +#include "base/files/file_path.h" +#include "base/metrics/histogram_macros.h" +#include "base/strings/string_number_conversions.h" +#include "base/strings/stringprintf.h" +#include "base/system/sys_info.h" +#include "base/task/post_task.h" +#include "base/task/thread_pool.h" +#include "base/threading/thread_task_runner_handle.h" +#include "base/time/default_tick_clock.h" +#include "base/time/tick_clock.h" +#include "base/time/time.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/chromeos/arc/arc_migration_constants.h" +#include "chrome/browser/chromeos/login/screens/encryption_migration_screen.h" +#include "chrome/browser/chromeos/login/ui/login_display_host.h" +#include "chrome/browser/chromeos/login/ui/login_feedback.h" #include "chrome/browser/chromeos/login/wizard_controller.h" -#include "chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h" +#include "chrome/browser/lifetime/application_lifetime.h" +#include "chrome/browser/profiles/profile.h" +#include "chromeos/constants/chromeos_switches.h" +#include "chromeos/cryptohome/async_method_caller.h" +#include "chromeos/cryptohome/cryptohome_util.h" +#include "chromeos/cryptohome/homedir_methods.h" +#include "chromeos/dbus/cryptohome/cryptohome_client.h" +#include "chromeos/dbus/dbus_thread_manager.h" +#include "chromeos/dbus/power/power_manager_client.h" +#include "chromeos/dbus/power/power_policy_controller.h" +#include "chromeos/dbus/power_manager/power_supply_properties.pb.h" +#include "components/user_manager/user_manager.h" +#include "content/public/browser/browser_thread.h" +#include "content/public/browser/device_service.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "services/device/public/mojom/wake_lock_provider.mojom.h" +#include "third_party/cros_system_api/dbus/service_constants.h" + +namespace { + +// Path to the mount point to check the available space. +constexpr char kCheckStoragePath[] = "/home"; + +constexpr char kUserActionStartMigration[] = "startMigration"; +constexpr char kUserActionSkipMigration[] = "skipMigration"; +constexpr char kUserActionRequestRestartOnLowStorage[] = + "requestRestartOnLowStorage"; +constexpr char kUserActionRequestRestartOnFailure[] = "requestRestartOnFailure"; +constexpr char kUserActionOpenFeedbackDialog[] = "openFeedbackDialog"; + +// If minimal migration takes this threshold or longer (in seconds), we +// will ask the user to re-enter their password. +constexpr int64_t kMinimalMigrationReenterPasswordThreshold = 45; + +// UMA names. +constexpr char kUmaNameFirstScreen[] = "Cryptohome.MigrationUI.FirstScreen"; +constexpr char kUmaNameUserChoice[] = "Cryptohome.MigrationUI.UserChoice"; +constexpr char kUmaNameMigrationResult[] = + "Cryptohome.MigrationUI.MigrationResult"; +constexpr char kUmaNameRemoveCryptohomeResult[] = + "Cryptohome.MigrationUI.RemoveCryptohomeResult"; +constexpr char kUmaNameConsumedBatteryPercent[] = + "Cryptohome.MigrationUI.ConsumedBatteryPercent"; +constexpr char kUmaNameVisibleScreen[] = "Cryptohome.MigrationUI.VisibleScreen"; + +// This enum must match the numbering for MigrationUIFirstScreen in +// histograms/enums.xml. Do not reorder or remove items, only add new items +// before FIRST_SCREEN_COUNT. +enum class FirstScreen { + FIRST_SCREEN_READY = 0, + FIRST_SCREEN_RESUME = 1, + FIRST_SCREEN_LOW_STORAGE = 2, + FIRST_SCREEN_ARC_KIOSK = 3, + FIRST_SCREEN_START_AUTOMATICALLY = 4, + FIRST_SCREEN_RESUME_MINIMAL = 5, + FIRST_SCREEN_START_AUTOMATICALLY_MINIMAL = 6, + FIRST_SCREEN_COUNT +}; + +// This enum must match the numbering for MigrationUIUserChoice in +// histograms/enums.xml. Do not reorder or remove items, only add new items +// before USER_CHOICE_COUNT. +enum class UserChoice { + USER_CHOICE_UPDATE = 0, + USER_CHOICE_SKIP = 1, + USER_CHOICE_RESTART_ON_FAILURE = 2, + USER_CHOICE_RESTART_ON_LOW_STORAGE = 3, + USER_CHOICE_REPORT_AN_ISSUE = 4, + USER_CHOICE_COUNT +}; + +// This enum must match the numbering for MigrationUIMigrationResult in +// histograms/enums.xml. Do not reorder or remove items, only add new items +// before COUNT. +enum class MigrationResult { + SUCCESS_IN_NEW_MIGRATION = 0, + SUCCESS_IN_RESUMED_MIGRATION = 1, + GENERAL_FAILURE_IN_NEW_MIGRATION = 2, + GENERAL_FAILURE_IN_RESUMED_MIGRATION = 3, + REQUEST_FAILURE_IN_NEW_MIGRATION = 4, + REQUEST_FAILURE_IN_RESUMED_MIGRATION = 5, + MOUNT_FAILURE_IN_NEW_MIGRATION = 6, + MOUNT_FAILURE_IN_RESUMED_MIGRATION = 7, + SUCCESS_IN_ARC_KIOSK_MIGRATION = 8, + GENERAL_FAILURE_IN_ARC_KIOSK_MIGRATION = 9, + REQUEST_FAILURE_IN_ARC_KIOSK_MIGRATION = 10, + MOUNT_FAILURE_IN_ARC_KIOSK_MIGRATION = 11, + COUNT +}; + +// This enum must match the numbering for MigrationUIRemoveCryptohomeResult in +// histograms/enums.xml. Do not reorder or remove items, only add new items +// before COUNT. +enum class RemoveCryptohomeResult { + SUCCESS_IN_NEW_MIGRATION = 0, + SUCCESS_IN_RESUMED_MIGRATION = 1, + FAILURE_IN_NEW_MIGRATION = 2, + FAILURE_IN_RESUMED_MIGRATION = 3, + SUCCESS_IN_ARC_KIOSK_MIGRATION = 4, + FAILURE_IN_ARC_KIOSK_MIGRATION = 5, + COUNT +}; + +bool IsTestingUI() { + return base::CommandLine::ForCurrentProcess()->HasSwitch( + chromeos::switches::kTestEncryptionMigrationUI); +} + +// Wrapper functions for histogram macros to avoid duplication of expanded code. +void RecordFirstScreen(FirstScreen first_screen) { + UMA_HISTOGRAM_ENUMERATION(kUmaNameFirstScreen, first_screen, + FirstScreen::FIRST_SCREEN_COUNT); +} + +void RecordUserChoice(UserChoice user_choice) { + UMA_HISTOGRAM_ENUMERATION(kUmaNameUserChoice, user_choice, + UserChoice::USER_CHOICE_COUNT); +} + +void RecordMigrationResult(MigrationResult migration_result) { + UMA_HISTOGRAM_ENUMERATION(kUmaNameMigrationResult, migration_result, + MigrationResult::COUNT); +} + +void RecordMigrationResultSuccess(bool resume, bool arc_kiosk) { + if (arc_kiosk) + RecordMigrationResult(MigrationResult::SUCCESS_IN_ARC_KIOSK_MIGRATION); + else if (resume) + RecordMigrationResult(MigrationResult::SUCCESS_IN_RESUMED_MIGRATION); + else + RecordMigrationResult(MigrationResult::SUCCESS_IN_NEW_MIGRATION); +} + +void RecordMigrationResultGeneralFailure(bool resume, bool arc_kiosk) { + if (arc_kiosk) { + RecordMigrationResult( + MigrationResult::GENERAL_FAILURE_IN_ARC_KIOSK_MIGRATION); + } else if (resume) { + RecordMigrationResult( + MigrationResult::GENERAL_FAILURE_IN_RESUMED_MIGRATION); + } else { + RecordMigrationResult(MigrationResult::GENERAL_FAILURE_IN_NEW_MIGRATION); + } +} + +void RecordMigrationResultRequestFailure(bool resume, bool arc_kiosk) { + if (arc_kiosk) { + RecordMigrationResult( + MigrationResult::REQUEST_FAILURE_IN_ARC_KIOSK_MIGRATION); + } else if (resume) { + RecordMigrationResult( + MigrationResult::REQUEST_FAILURE_IN_RESUMED_MIGRATION); + } else { + RecordMigrationResult(MigrationResult::REQUEST_FAILURE_IN_NEW_MIGRATION); + } +} + +void RecordMigrationResultMountFailure(bool resume, bool arc_kiosk) { + if (arc_kiosk) { + RecordMigrationResult( + MigrationResult::MOUNT_FAILURE_IN_ARC_KIOSK_MIGRATION); + } else if (resume) { + RecordMigrationResult(MigrationResult::MOUNT_FAILURE_IN_RESUMED_MIGRATION); + } else { + RecordMigrationResult(MigrationResult::MOUNT_FAILURE_IN_NEW_MIGRATION); + } +} + +void RecordRemoveCryptohomeResult(RemoveCryptohomeResult result) { + UMA_HISTOGRAM_ENUMERATION(kUmaNameRemoveCryptohomeResult, result, + RemoveCryptohomeResult::COUNT); +} + +void RecordRemoveCryptohomeResultSuccess(bool resume, bool arc_kiosk) { + if (arc_kiosk) { + RecordRemoveCryptohomeResult( + RemoveCryptohomeResult::SUCCESS_IN_ARC_KIOSK_MIGRATION); + } else if (resume) { + RecordRemoveCryptohomeResult( + RemoveCryptohomeResult::SUCCESS_IN_RESUMED_MIGRATION); + } else { + RecordRemoveCryptohomeResult( + RemoveCryptohomeResult::SUCCESS_IN_NEW_MIGRATION); + } +} + +void RecordRemoveCryptohomeResultFailure(bool resume, bool arc_kiosk) { + if (arc_kiosk) { + RecordRemoveCryptohomeResult( + RemoveCryptohomeResult::FAILURE_IN_ARC_KIOSK_MIGRATION); + } else if (resume) { + RecordRemoveCryptohomeResult( + RemoveCryptohomeResult::FAILURE_IN_RESUMED_MIGRATION); + } else { + RecordRemoveCryptohomeResult( + RemoveCryptohomeResult::FAILURE_IN_NEW_MIGRATION); + } +} + +// Chooses the value for the MigrationUIFirstScreen UMA stat. Not used for ARC +// kiosk. +FirstScreen GetFirstScreenForMode(chromeos::EncryptionMigrationMode mode) { + switch (mode) { + case chromeos::EncryptionMigrationMode::ASK_USER: + return FirstScreen::FIRST_SCREEN_READY; + case chromeos::EncryptionMigrationMode::START_MIGRATION: + return FirstScreen::FIRST_SCREEN_START_AUTOMATICALLY; + case chromeos::EncryptionMigrationMode::START_MINIMAL_MIGRATION: + return FirstScreen::FIRST_SCREEN_START_AUTOMATICALLY_MINIMAL; + case chromeos::EncryptionMigrationMode::RESUME_MIGRATION: + return FirstScreen::FIRST_SCREEN_RESUME; + case chromeos::EncryptionMigrationMode::RESUME_MINIMAL_MIGRATION: + return FirstScreen::FIRST_SCREEN_RESUME_MINIMAL; + default: + NOTREACHED(); + } +} + +} // namespace namespace chromeos { +// static +EncryptionMigrationScreen* EncryptionMigrationScreen::Get( + ScreenManager* manager) { + return static_cast<EncryptionMigrationScreen*>( + manager->GetScreen(EncryptionMigrationScreenView::kScreenId)); +} + EncryptionMigrationScreen::EncryptionMigrationScreen( EncryptionMigrationScreenView* view) : BaseScreen(EncryptionMigrationScreenView::kScreenId, OobeScreenPriority::DEFAULT), - view_(view) { + view_(view), + tick_clock_(base::DefaultTickClock::GetInstance()) { + free_disk_space_fetcher_ = base::Bind(&base::SysInfo::AmountOfFreeDiskSpace, + base::FilePath(kCheckStoragePath)); DCHECK(view_); if (view_) view_->SetDelegate(this); } EncryptionMigrationScreen::~EncryptionMigrationScreen() { + cryptohome_observer_.reset(); + power_manager_observer_.reset(); if (view_) view_->SetDelegate(nullptr); } @@ -46,29 +296,454 @@ void EncryptionMigrationScreen::SetUserContext( const UserContext& user_context) { DCHECK(view_); - view_->SetUserContext(user_context); + user_context_ = user_context; } void EncryptionMigrationScreen::SetMode(EncryptionMigrationMode mode) { DCHECK(view_); - view_->SetMode(mode); + mode_ = mode; + view_->SetIsResuming(IsStartImmediately()); } -void EncryptionMigrationScreen::SetContinueLoginCallback( - ContinueLoginCallback callback) { +void EncryptionMigrationScreen::SetOperationCallbacks( + ContinueLoginCallback continue_login_callback, + RestartLoginCallback restart_login_callback) { DCHECK(view_); - view_->SetContinueLoginCallback(std::move(callback)); -} - -void EncryptionMigrationScreen::SetRestartLoginCallback( - RestartLoginCallback callback) { - DCHECK(view_); - view_->SetRestartLoginCallback(std::move(callback)); + continue_login_callback_ = std::move(continue_login_callback); + restart_login_callback_ = std::move(restart_login_callback); } void EncryptionMigrationScreen::SetupInitialView() { DCHECK(view_); - view_->SetupInitialView(); + // Pass constant value(s) to the UI. + view_->SetNecessaryBatteryPercent(arc::kMigrationMinimumBatteryPercent); + + // If old encryption is detected in ARC kiosk mode, skip all checks (user + // confirmation, battery level, and remaining space) and start migration + // immediately. + if (IsArcKiosk()) { + RecordFirstScreen(FirstScreen::FIRST_SCREEN_ARC_KIOSK); + StartMigration(); + return; + } + power_manager_observer_ = std::make_unique< + ScopedObserver<PowerManagerClient, PowerManagerClient::Observer>>(this); + power_manager_observer_->Add(PowerManagerClient::Get()); + CheckAvailableStorage(); +} + +void EncryptionMigrationScreen::OnUserAction(const std::string& action_id) { + if (action_id == kUserActionStartMigration) { + HandleStartMigration(); + } else if (action_id == kUserActionSkipMigration) { + HandleSkipMigration(); + } else if (action_id == kUserActionRequestRestartOnLowStorage) { + HandleRequestRestartOnLowStorage(); + } else if (action_id == kUserActionRequestRestartOnFailure) { + HandleRequestRestartOnFailure(); + } else if (action_id == kUserActionOpenFeedbackDialog) { + HandleOpenFeedbackDialog(); + } else { + BaseScreen::OnUserAction(action_id); + } +} + +void EncryptionMigrationScreen::PowerChanged( + const power_manager::PowerSupplyProperties& proto) { + if (proto.has_battery_percent()) { + if (!current_battery_percent_) { + // If initial battery level is below the minimum, migration should start + // automatically once the device is charged enough. + if (proto.battery_percent() < arc::kMigrationMinimumBatteryPercent) { + should_migrate_on_enough_battery_ = true; + // If migration was forced by policy, stop forcing it (we don't want the + // user to have to wait until the battery is charged). + MaybeStopForcingMigration(); + } + } + current_battery_percent_ = proto.battery_percent(); + } else { + // If battery level is not provided, we regard it as 100% to start migration + // immediately. + current_battery_percent_ = 100.0; + } + + view_->SetBatteryState( + *current_battery_percent_, + *current_battery_percent_ >= arc::kMigrationMinimumBatteryPercent, + proto.battery_state() == + power_manager::PowerSupplyProperties_BatteryState_CHARGING); + + // If the migration was already requested and the battery level is enough now, + // The migration should start immediately. + if (*current_battery_percent_ >= arc::kMigrationMinimumBatteryPercent && + should_migrate_on_enough_battery_) { + should_migrate_on_enough_battery_ = false; + StartMigration(); + } +} + +void EncryptionMigrationScreen::HandleStartMigration() { + RecordUserChoice(UserChoice::USER_CHOICE_UPDATE); + WaitBatteryAndMigrate(); +} + +void EncryptionMigrationScreen::HandleSkipMigration() { + RecordUserChoice(UserChoice::USER_CHOICE_SKIP); + // If the user skips migration, we mount the cryptohome without performing the + // migration by reusing UserContext and LoginPerformer which were used in the + // previous attempt and dropping |is_forcing_dircrypto| flag in UserContext. + // In this case, the user can not launch ARC apps in the session, and will be + // asked to do the migration again in the next log-in attempt. + if (!continue_login_callback_.is_null()) { + user_context_.SetIsForcingDircrypto(false); + std::move(continue_login_callback_).Run(user_context_); + } +} + +void EncryptionMigrationScreen::HandleRequestRestartOnLowStorage() { + RecordUserChoice(UserChoice::USER_CHOICE_RESTART_ON_LOW_STORAGE); + PowerManagerClient::Get()->RequestRestart( + power_manager::REQUEST_RESTART_OTHER, + "login encryption migration low storage"); +} + +void EncryptionMigrationScreen::HandleRequestRestartOnFailure() { + RecordUserChoice(UserChoice::USER_CHOICE_RESTART_ON_FAILURE); + PowerManagerClient::Get()->RequestRestart( + power_manager::REQUEST_RESTART_OTHER, + "login encryption migration failure"); +} + +void EncryptionMigrationScreen::HandleOpenFeedbackDialog() { + RecordUserChoice(UserChoice::USER_CHOICE_REPORT_AN_ISSUE); + const std::string description = base::StringPrintf( + "Auto generated feedback for http://crbug.com/719266.\n" + "(uniquifier:%s)", + base::NumberToString(base::Time::Now().ToInternalValue()).c_str()); + login_feedback_ = std::make_unique<LoginFeedback>(Profile::FromWebUI( + LoginDisplayHost::default_host()->GetOobeUI()->web_ui())); + login_feedback_->Request(description, base::Closure()); +} + +void EncryptionMigrationScreen::UpdateUIState( + EncryptionMigrationScreenView::UIState state) { + if (state == current_ui_state_) + return; + + current_ui_state_ = state; + view_->SetUIState(state); + + // When this handler is about to show the READY screen, we should get the + // latest battery status and show it on the screen. + if (state == EncryptionMigrationScreenView::READY) + PowerManagerClient::Get()->RequestStatusUpdate(); + + // We should request wake lock and not shut down on lid close during + // migration. + if (state == EncryptionMigrationScreenView::MIGRATING || + state == EncryptionMigrationScreenView::MIGRATING_MINIMAL) { + GetWakeLock()->RequestWakeLock(); + PowerPolicyController::Get()->SetEncryptionMigrationActive(true); + } else { + GetWakeLock()->CancelWakeLock(); + PowerPolicyController::Get()->SetEncryptionMigrationActive(false); + } + + // Record which screen is visible to the user. + // We record it after delay to make sure that the user was actually able + // to see the screen (i.e. the screen is not just a flash). + base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( + FROM_HERE, + base::BindOnce(&EncryptionMigrationScreen::OnDelayedRecordVisibleScreen, + weak_ptr_factory_.GetWeakPtr(), state), + base::TimeDelta::FromSeconds(1)); +} + +void EncryptionMigrationScreen::CheckAvailableStorage() { + base::ThreadPool::PostTaskAndReplyWithResult( + FROM_HERE, {base::MayBlock(), base::TaskPriority::USER_VISIBLE}, + base::BindOnce(free_disk_space_fetcher_), + base::BindOnce(&EncryptionMigrationScreen::OnGetAvailableStorage, + weak_ptr_factory_.GetWeakPtr())); +} + +void EncryptionMigrationScreen::OnGetAvailableStorage(int64_t size) { + if (size >= arc::kMigrationMinimumAvailableStorage || IsTestingUI()) { + RecordFirstScreen(GetFirstScreenForMode(mode_)); + if (IsStartImmediately()) { + if (IsMinimalMigration()) + StartMigration(); + else + WaitBatteryAndMigrate(); + } else { + UpdateUIState(EncryptionMigrationScreenView::READY); + } + } else { + RecordFirstScreen(FirstScreen::FIRST_SCREEN_LOW_STORAGE); + view_->SetSpaceInfoInString( + size /* availableSpaceSize */, + arc::kMigrationMinimumAvailableStorage /* necessarySpaceSize */); + UpdateUIState(EncryptionMigrationScreenView::NOT_ENOUGH_STORAGE); + } +} + +void EncryptionMigrationScreen::WaitBatteryAndMigrate() { + if (current_battery_percent_) { + if (*current_battery_percent_ >= arc::kMigrationMinimumBatteryPercent) { + StartMigration(); + return; + } else { + // If migration was forced by policy, stop forcing it (we don't want the + // user to have to wait until the battery is charged). + MaybeStopForcingMigration(); + } + } + UpdateUIState(EncryptionMigrationScreenView::READY); + + should_migrate_on_enough_battery_ = true; + PowerManagerClient::Get()->RequestStatusUpdate(); +} + +void EncryptionMigrationScreen::StartMigration() { + UpdateUIState(GetMigratingUIState()); + if (current_battery_percent_) + initial_battery_percent_ = *current_battery_percent_; + + // Mount the existing eCryptfs vault to a temporary location for migration. + cryptohome::MountRequest mount; + cryptohome::AuthorizationRequest auth_request; + mount.set_to_migrate_from_ecryptfs(true); + if (IsArcKiosk()) { + mount.set_public_mount(true); + } else { + auth_request = CreateAuthorizationRequest(); + } + CryptohomeClient::Get()->MountEx( + cryptohome::CreateAccountIdentifierFromAccountId( + user_context_.GetAccountId()), + auth_request, mount, + base::BindOnce(&EncryptionMigrationScreen::OnMountExistingVault, + weak_ptr_factory_.GetWeakPtr())); +} + +void EncryptionMigrationScreen::OnMountExistingVault( + base::Optional<cryptohome::BaseReply> reply) { + cryptohome::MountError return_code = + cryptohome::MountExReplyToMountError(reply); + if (return_code != cryptohome::MOUNT_ERROR_NONE) { + RecordMigrationResultMountFailure(IsResumingIncompleteMigration(), + IsArcKiosk()); + UpdateUIState(EncryptionMigrationScreenView::MIGRATION_FAILED); + LOG(ERROR) << "Mount existing vault failed. Error: " << return_code; + return; + } + + // For minimal migration, start a timer which will measure how long migration + // took, so we can require a re sign-in if it took too long. + if (IsMinimalMigration()) + minimal_migration_start_ = tick_clock_->NowTicks(); + + cryptohome::MigrateToDircryptoRequest request; + request.set_minimal_migration(IsMinimalMigration()); + cryptohome_observer_ = std::make_unique< + ScopedObserver<CryptohomeClient, CryptohomeClient::Observer>>(this); + cryptohome_observer_->Add(CryptohomeClient::Get()); + CryptohomeClient::Get()->MigrateToDircrypto( + cryptohome::CreateAccountIdentifierFromAccountId( + user_context_.GetAccountId()), + request, + base::BindOnce(&EncryptionMigrationScreen::OnMigrationRequested, + weak_ptr_factory_.GetWeakPtr())); +} + +device::mojom::WakeLock* EncryptionMigrationScreen::GetWakeLock() { + // |wake_lock_| is lazy bound and reused, even after a connection error. + if (wake_lock_) + return wake_lock_.get(); + + mojo::PendingReceiver<device::mojom::WakeLock> receiver = + wake_lock_.BindNewPipeAndPassReceiver(); + + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + + mojo::Remote<device::mojom::WakeLockProvider> wake_lock_provider; + content::GetDeviceService().BindWakeLockProvider( + wake_lock_provider.BindNewPipeAndPassReceiver()); + wake_lock_provider->GetWakeLockWithoutContext( + device::mojom::WakeLockType::kPreventAppSuspension, + device::mojom::WakeLockReason::kOther, + "Encryption migration is in progress...", std::move(receiver)); + return wake_lock_.get(); +} + +void EncryptionMigrationScreen::RemoveCryptohome() { + // Set invalid token status so that user is forced to go through Gaia on the + // next sign-in. + user_manager::UserManager::Get()->SaveUserOAuthStatus( + user_context_.GetAccountId(), + user_manager::User::OAUTH2_TOKEN_STATUS_INVALID); + + const cryptohome::Identification cryptohome_id(user_context_.GetAccountId()); + + cryptohome::AccountIdentifier account_id_proto; + account_id_proto.set_account_id(cryptohome_id.id()); + + CryptohomeClient::Get()->RemoveEx( + account_id_proto, + base::BindOnce(&EncryptionMigrationScreen::OnRemoveCryptohome, + weak_ptr_factory_.GetWeakPtr())); +} + +void EncryptionMigrationScreen::OnRemoveCryptohome( + base::Optional<cryptohome::BaseReply> reply) { + cryptohome::MountError error = BaseReplyToMountError(reply); + if (error == cryptohome::MOUNT_ERROR_NONE) { + RecordRemoveCryptohomeResultSuccess(IsResumingIncompleteMigration(), + IsArcKiosk()); + } else { + LOG(ERROR) << "Removing cryptohome failed. return code: " + << reply.value().error(); + RecordRemoveCryptohomeResultFailure(IsResumingIncompleteMigration(), + IsArcKiosk()); + } + + UpdateUIState(EncryptionMigrationScreenView::MIGRATION_FAILED); +} + +cryptohome::AuthorizationRequest +EncryptionMigrationScreen::CreateAuthorizationRequest() { + // |key| is created in the same manner as CryptohomeAuthenticator. + const Key* key = user_context_.GetKey(); + // If the |key| is a plain text password, crash rather than attempting to + // mount the cryptohome with a plain text password. + CHECK_NE(Key::KEY_TYPE_PASSWORD_PLAIN, key->GetKeyType()); + cryptohome::AuthorizationRequest auth; + cryptohome::Key* auth_key = auth.mutable_key(); + // Don't set the authorization's key label, implicitly setting it to an + // empty string, which is a wildcard allowing any key to match. This is + // necessary because cryptohomes created by Chrome OS M38 and older will have + // a legacy key with no label while those created by Chrome OS M39 and newer + // will have a key with the label kCryptohomeGAIAKeyLabel. + auth_key->set_secret(key->GetSecret()); + return auth; +} + +bool EncryptionMigrationScreen::IsArcKiosk() const { + return user_context_.GetUserType() == user_manager::USER_TYPE_ARC_KIOSK_APP; +} + +void EncryptionMigrationScreen::DircryptoMigrationProgress( + cryptohome::DircryptoMigrationStatus status, + uint64_t current, + uint64_t total) { + switch (status) { + case cryptohome::DIRCRYPTO_MIGRATION_INITIALIZING: + UpdateUIState(GetMigratingUIState()); + break; + case cryptohome::DIRCRYPTO_MIGRATION_IN_PROGRESS: + UpdateUIState(GetMigratingUIState()); + view_->SetMigrationProgress(static_cast<double>(current) / total); + break; + case cryptohome::DIRCRYPTO_MIGRATION_SUCCESS: + RecordMigrationResultSuccess(IsResumingIncompleteMigration(), + IsArcKiosk()); + // Stop listening to the progress updates. + cryptohome_observer_.reset(); + // If the battery level decreased during migration, record the consumed + // battery level. + if (current_battery_percent_ && + *current_battery_percent_ < initial_battery_percent_) { + UMA_HISTOGRAM_PERCENTAGE( + kUmaNameConsumedBatteryPercent, + static_cast<int>(std::round(initial_battery_percent_ - + *current_battery_percent_))); + } + if (IsMinimalMigration() && !continue_login_callback_.is_null() && + !restart_login_callback_.is_null()) { + GetWakeLock()->CancelWakeLock(); + PowerPolicyController::Get()->SetEncryptionMigrationActive(false); + // If minimal migration was fast enough, continue with same sign-in + // data. Fast enough means that the elapsed time is under the defined + // threshold. + const base::TimeDelta elapsed_time = + tick_clock_->NowTicks() - minimal_migration_start_; + const bool require_password_reentry = + elapsed_time.InSeconds() > + kMinimalMigrationReenterPasswordThreshold; + if (require_password_reentry) + std::move(restart_login_callback_).Run(user_context_); + else + std::move(continue_login_callback_).Run(user_context_); + } else { + // Restart immediately after successful full migration. + PowerManagerClient::Get()->RequestRestart( + power_manager::REQUEST_RESTART_OTHER, + "login encryption migration success"); + } + break; + case cryptohome::DIRCRYPTO_MIGRATION_FAILED: + RecordMigrationResultGeneralFailure(IsResumingIncompleteMigration(), + IsArcKiosk()); + // Stop listening to the progress updates. + cryptohome_observer_.reset(); + // Shows error screen after removing user directory is completed. + RemoveCryptohome(); + break; + default: + break; + } +} + +void EncryptionMigrationScreen::OnMigrationRequested(bool success) { + if (!success) { + LOG(ERROR) << "Requesting MigrateToDircrypto failed."; + RecordMigrationResultRequestFailure(IsResumingIncompleteMigration(), + IsArcKiosk()); + UpdateUIState(EncryptionMigrationScreenView::MIGRATION_FAILED); + } +} + +void EncryptionMigrationScreen::OnDelayedRecordVisibleScreen( + EncryptionMigrationScreenView::UIState ui_state) { + if (current_ui_state_ != ui_state) + return; + + // If |current_ui_state_| is not changed for a second, record the current + // screen as a "visible" screen. + UMA_HISTOGRAM_ENUMERATION(kUmaNameVisibleScreen, ui_state, + EncryptionMigrationScreenView::COUNT); +} + +bool EncryptionMigrationScreen::IsResumingIncompleteMigration() const { + return mode_ == EncryptionMigrationMode::RESUME_MIGRATION; +} + +bool EncryptionMigrationScreen::IsStartImmediately() const { + return mode_ == EncryptionMigrationMode::START_MIGRATION || + mode_ == EncryptionMigrationMode::START_MINIMAL_MIGRATION || + mode_ == EncryptionMigrationMode::RESUME_MIGRATION || + mode_ == EncryptionMigrationMode::RESUME_MINIMAL_MIGRATION; +} + +bool EncryptionMigrationScreen::IsMinimalMigration() const { + return mode_ == EncryptionMigrationMode::START_MINIMAL_MIGRATION || + mode_ == EncryptionMigrationMode::RESUME_MINIMAL_MIGRATION; +} + +EncryptionMigrationScreenView::UIState +EncryptionMigrationScreen::GetMigratingUIState() const { + return IsMinimalMigration() ? EncryptionMigrationScreenView::MIGRATING_MINIMAL + : EncryptionMigrationScreenView::MIGRATING; +} + +void EncryptionMigrationScreen::MaybeStopForcingMigration() { + // |mode_| will be START_MIGRATION if migration was forced by user policy. + // If an incomplete migration is being resumed, it would be RESUME_MIGRATION. + // We only want to disable auto-starting migration in the first case. + if (mode_ == EncryptionMigrationMode::START_MIGRATION || + mode_ == EncryptionMigrationMode::START_MINIMAL_MIGRATION) + view_->SetIsResuming(false); } } // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screens/encryption_migration_screen.h b/chrome/browser/chromeos/login/screens/encryption_migration_screen.h index e8b5aace..40c1d22 100644 --- a/chrome/browser/chromeos/login/screens/encryption_migration_screen.h +++ b/chrome/browser/chromeos/login/screens/encryption_migration_screen.h
@@ -5,20 +5,49 @@ #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ENCRYPTION_MIGRATION_SCREEN_H_ #define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ENCRYPTION_MIGRATION_SCREEN_H_ +#include <memory> +#include <string> + #include "base/callback_forward.h" +#include "base/macros.h" +#include "base/optional.h" +#include "base/scoped_observer.h" #include "chrome/browser/chromeos/login/screens/base_screen.h" #include "chrome/browser/chromeos/login/screens/encryption_migration_mode.h" +#include "chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h" +#include "chromeos/cryptohome/cryptohome_parameters.h" +#include "chromeos/dbus/cryptohome/cryptohome_client.h" +#include "chromeos/dbus/cryptohome/rpc.pb.h" +#include "chromeos/dbus/power/power_manager_client.h" +#include "chromeos/login/auth/user_context.h" +#include "mojo/public/cpp/bindings/remote.h" +#include "services/device/public/mojom/wake_lock.mojom.h" +#include "third_party/cros_system_api/dbus/cryptohome/dbus-constants.h" + +namespace base { +class TickClock; +class TimeTicks; +} // namespace base namespace chromeos { class EncryptionMigrationScreenView; +class LoginFeedback; +class ScreenManager; class UserContext; -class EncryptionMigrationScreen : public BaseScreen { +class EncryptionMigrationScreen : public BaseScreen, + public PowerManagerClient::Observer, + public CryptohomeClient::Observer { public: using ContinueLoginCallback = base::OnceCallback<void(const UserContext&)>; using RestartLoginCallback = base::OnceCallback<void(const UserContext&)>; + // Callback that can be used to check free disk space. + using FreeDiskSpaceFetcher = base::RepeatingCallback<int64_t()>; + + static EncryptionMigrationScreen* Get(ScreenManager* manager); + explicit EncryptionMigrationScreen(EncryptionMigrationScreenView* view); ~EncryptionMigrationScreen() override; @@ -32,25 +61,146 @@ // Sets the migration mode. void SetMode(EncryptionMigrationMode mode); - // Sets a callback, which should be called when the user want to log in to the - // session from the migration UI. - void SetContinueLoginCallback(ContinueLoginCallback callback); - - // Sets a callback, which should be called when the user should re-enter their - // password. - void SetRestartLoginCallback(RestartLoginCallback callback); + // Sets continue login callback and restart log in callback, which should be + // called when the user want to log in to the session from the migration UI + // and when the user should re-enter their password. + void SetOperationCallbacks(ContinueLoginCallback continue_login_callback, + RestartLoginCallback restart_login_callback); // Setup the initial view in the migration UI. // This should be called after other state like UserContext, etc... are set. void SetupInitialView(); + // Testing only: Sets the free disk space fetcher. + void set_free_disk_space_fetcher_for_testing( + FreeDiskSpaceFetcher free_disk_space_fetcher) { + free_disk_space_fetcher_ = std::move(free_disk_space_fetcher); + } + + // Testing only: Sets the tick clock used to measure elapsed time during + // migration. + // This doesn't take the ownership of the clock. |tick_clock| must outlive + // the EncryptionMigrationScreenHandler instance. + void set_tick_clock_for_testing(const base::TickClock* tick_clock) { + tick_clock_ = tick_clock; + } + + protected: + virtual device::mojom::WakeLock* GetWakeLock(); + private: // BaseScreen: void ShowImpl() override; void HideImpl() override; + void OnUserAction(const std::string& action_id) override; + + // PowerManagerClient::Observer implementation: + void PowerChanged(const power_manager::PowerSupplyProperties& proto) override; + + // CryptohomeClient::Observer implementation: + void DircryptoMigrationProgress(cryptohome::DircryptoMigrationStatus status, + uint64_t current, + uint64_t total) override; + // Handlers for user actions. + void HandleStartMigration(); + void HandleSkipMigration(); + void HandleRequestRestartOnLowStorage(); + void HandleRequestRestartOnFailure(); + void HandleOpenFeedbackDialog(); + + // Updates UI state. + void UpdateUIState(EncryptionMigrationScreenView::UIState state); + + void CheckAvailableStorage(); + void OnGetAvailableStorage(int64_t size); + void WaitBatteryAndMigrate(); + void StartMigration(); + void OnMountExistingVault(base::Optional<cryptohome::BaseReply> reply); + // Removes cryptohome and shows the error screen after the removal finishes. + void RemoveCryptohome(); + void OnRemoveCryptohome(base::Optional<cryptohome::BaseReply> reply); + + // Creates authorization request for MountEx method using |user_context_|. + cryptohome::AuthorizationRequest CreateAuthorizationRequest(); + + // True if the session is in ARC kiosk mode. + bool IsArcKiosk() const; + + // Handlers for cryptohome API callbacks. + void OnMigrationRequested(bool success); + + // Records UMA about visible screen after delay. + void OnDelayedRecordVisibleScreen( + EncryptionMigrationScreenView::UIState state); + + // True if |mode_| suggests that we are resuming an incomplete migration. + bool IsResumingIncompleteMigration() const; + + // True if |mode_| suggests that migration should start immediately. + bool IsStartImmediately() const; + + // True if |mode_| suggests that we are starting or resuming a minimal + // migration. + bool IsMinimalMigration() const; + + // Returns the UIState we should be in when migration is in progress. + // This will be different between regular and minimal migration. + EncryptionMigrationScreenView::UIState GetMigratingUIState() const; + + // Stop forcing migration if it was forced by policy. + void MaybeStopForcingMigration(); EncryptionMigrationScreenView* view_; + // The current UI state which should be refrected in the web UI. + EncryptionMigrationScreenView::UIState current_ui_state_ = + EncryptionMigrationScreenView::INITIAL; + + // The current user's UserContext, which is used to request the migration to + // cryptohome. + UserContext user_context_; + + // The callback which is used to log in to the session from the migration UI. + ContinueLoginCallback continue_login_callback_; + + // The callback which is used to require the user to re-enter their password. + RestartLoginCallback restart_login_callback_; + + // The migration mode (ask user / start migration automatically / resume + // incomplete migratoin). + EncryptionMigrationMode mode_ = EncryptionMigrationMode::ASK_USER; + + // The current battery level. + base::Optional<double> current_battery_percent_; + + // True if the migration should start immediately once the battery level gets + // sufficient. + bool should_migrate_on_enough_battery_ = false; + + // The battery level at the timing that the migration starts. + double initial_battery_percent_ = 0.0; + + // Point in time when minimal migration started, as reported by |tick_clock_|. + base::TimeTicks minimal_migration_start_; + + mojo::Remote<device::mojom::WakeLock> wake_lock_; + + std::unique_ptr<LoginFeedback> login_feedback_; + + // Used to measure elapsed time during migration. + const base::TickClock* tick_clock_; + + FreeDiskSpaceFetcher free_disk_space_fetcher_; + + std::unique_ptr<ScopedObserver<CryptohomeClient, CryptohomeClient::Observer>> + cryptohome_observer_; + + std::unique_ptr< + ScopedObserver<PowerManagerClient, PowerManagerClient::Observer>> + power_manager_observer_; + + base::WeakPtrFactory<EncryptionMigrationScreen> weak_ptr_factory_{this}; + DISALLOW_COPY_AND_ASSIGN(EncryptionMigrationScreen); };
diff --git a/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler_unittest.cc b/chrome/browser/chromeos/login/screens/encryption_migration_screen_unittest.cc similarity index 73% rename from chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler_unittest.cc rename to chrome/browser/chromeos/login/screens/encryption_migration_screen_unittest.cc index bca31b6..932161e 100644 --- a/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler_unittest.cc +++ b/chrome/browser/chromeos/login/screens/encryption_migration_screen_unittest.cc
@@ -11,6 +11,7 @@ #include "base/test/task_environment.h" #include "chrome/browser/chromeos/arc/arc_migration_constants.h" #include "chrome/browser/chromeos/login/screens/encryption_migration_mode.h" +#include "chrome/browser/chromeos/login/screens/encryption_migration_screen.h" #include "chrome/browser/chromeos/login/users/mock_user_manager.h" #include "chrome/browser/ui/webui/chromeos/login/base_webui_handler.h" #include "chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h" @@ -39,7 +40,7 @@ namespace chromeos { namespace { -// Fake WakeLock implementation, required by EncryptionMigrationScreenHandler. +// Fake WakeLock implementation, required by EncryptionMigrationScreen. class FakeWakeLock : public device::mojom::WakeLock { public: FakeWakeLock() {} @@ -64,25 +65,18 @@ bool has_wakelock_ = false; }; -// Allows access to testing-only methods of EncryptionMigrationScreenHandler. -class TestEncryptionMigrationScreenHandler - : public EncryptionMigrationScreenHandler { +// Allows access to testing-only methods of EncryptionMigrationScreen. +class TestEncryptionMigrationScreen : public EncryptionMigrationScreen { public: - explicit TestEncryptionMigrationScreenHandler( - JSCallsContainer* js_calls_container) - : EncryptionMigrationScreenHandler(js_calls_container) { - SetFreeDiskSpaceFetcherForTesting(base::BindRepeating( - &TestEncryptionMigrationScreenHandler::FreeDiskSpaceFetcher, + explicit TestEncryptionMigrationScreen(EncryptionMigrationScreenView* view) + : EncryptionMigrationScreen(view) { + set_free_disk_space_fetcher_for_testing(base::BindRepeating( + &TestEncryptionMigrationScreen::FreeDiskSpaceFetcher, base::Unretained(this))); - SetTickClockForTesting(&testing_tick_clock_); + set_tick_clock_for_testing(&testing_tick_clock_); } - // Sets the testing WebUI. - void set_test_web_ui(content::TestWebUI* test_web_ui) { - set_web_ui(test_web_ui); - } - - // Sets the free disk space seen by EncryptionMigrationScreenHandler. + // Sets the free disk space seen by EncryptionMigrationScreen. void set_free_disk_space(int64_t free_disk_space) { free_disk_space_ = free_disk_space; } @@ -111,10 +105,30 @@ int64_t free_disk_space_; }; -class EncryptionMigrationScreenHandlerTest : public testing::Test { +class MockEncryptionMigrationScreenView : public EncryptionMigrationScreenView { public: - EncryptionMigrationScreenHandlerTest() = default; - ~EncryptionMigrationScreenHandlerTest() override = default; + MockEncryptionMigrationScreenView() = default; + ~MockEncryptionMigrationScreenView() override = default; + + MOCK_METHOD(void, Show, ()); + MOCK_METHOD(void, Hide, ()); + MOCK_METHOD(void, SetDelegate, (EncryptionMigrationScreen * delegate)); + MOCK_METHOD(void, + SetBatteryState, + (double batteryPercent, bool isEnoughBattery, bool isCharging)); + MOCK_METHOD(void, SetIsResuming, (bool isResuming)); + MOCK_METHOD(void, SetUIState, (UIState state)); + MOCK_METHOD(void, + SetSpaceInfoInString, + (int64_t availableSpaceSize, int64_t necessarySpaceSize)); + MOCK_METHOD(void, SetNecessaryBatteryPercent, (double batteryPercent)); + MOCK_METHOD(void, SetMigrationProgress, (double progress)); +}; + +class EncryptionMigrationScreenTest : public testing::Test { + public: + EncryptionMigrationScreenTest() = default; + ~EncryptionMigrationScreenTest() override = default; void SetUp() override { // Set up a MockUserManager. @@ -123,7 +137,7 @@ std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(mock_user_manager)); - // This is used by EncryptionMigrationScreenHandler to remove the existing + // This is used by EncryptionMigrationScreen to remove the existing // cryptohome. Ownership of mock_async_method_caller_ is transferred to // AsyncMethodCaller::InitializeForTesting. mock_async_method_caller_ = new cryptohome::MockAsyncMethodCaller; @@ -142,24 +156,20 @@ user_context_.SetKey( Key(Key::KeyType::KEY_TYPE_SALTED_SHA256, "salt", "secret")); - js_calls_container_.ExecuteDeferredJSCalls(&test_web_ui_); - encryption_migration_screen_handler_ = - std::make_unique<TestEncryptionMigrationScreenHandler>( - &js_calls_container_); - encryption_migration_screen_handler_->set_test_web_ui(&test_web_ui_); - encryption_migration_screen_handler_->SetContinueLoginCallback( - base::BindOnce(&EncryptionMigrationScreenHandlerTest::OnContinueLogin, + encryption_migration_screen_ = + std::make_unique<TestEncryptionMigrationScreen>(&mock_view_); + encryption_migration_screen_->SetOperationCallbacks( + base::BindOnce(&EncryptionMigrationScreenTest::OnContinueLogin, + base::Unretained(this)), + base::BindOnce(&EncryptionMigrationScreenTest::OnRestartLogin, base::Unretained(this))); - encryption_migration_screen_handler_->SetRestartLoginCallback( - base::BindOnce(&EncryptionMigrationScreenHandlerTest::OnRestartLogin, - base::Unretained(this))); - encryption_migration_screen_handler_->set_free_disk_space( + encryption_migration_screen_->set_free_disk_space( arc::kMigrationMinimumAvailableStorage); - encryption_migration_screen_handler_->SetUserContext(user_context_); + encryption_migration_screen_->SetUserContext(user_context_); } void TearDown() override { - encryption_migration_screen_handler_.reset(); + encryption_migration_screen_.reset(); PowerPolicyController::Shutdown(); PowerManagerClient::Shutdown(); @@ -168,16 +178,18 @@ } protected: + // A pointer to the EncryptionMigrationScreen used in this test. + std::unique_ptr<TestEncryptionMigrationScreen> encryption_migration_screen_; + + // Accessory objects needed by EncryptionMigrationScreen. + MockEncryptionMigrationScreenView mock_view_; + // Must be the first member. base::test::TaskEnvironment task_environment_; std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_enabler_; FakeCryptohomeClient* fake_cryptohome_client_ = nullptr; // unowned cryptohome::MockAsyncMethodCaller* mock_async_method_caller_ = nullptr; - JSCallsContainer js_calls_container_; - std::unique_ptr<TestEncryptionMigrationScreenHandler> - encryption_migration_screen_handler_; - content::TestWebUI test_web_ui_; // Will be set to true in ContinueLogin. bool continue_login_callback_called_ = false; @@ -189,7 +201,7 @@ UserContext user_context_; private: - // This will be called by EncryptionMigrationScreenHandler upon finished + // This will be called by EncryptionMigrationScreen upon finished // minimal migration when sign-in should continue. void OnContinueLogin(const UserContext& user_context) { EXPECT_FALSE(continue_login_callback_called_) @@ -200,7 +212,7 @@ continue_login_callback_called_ = true; } - // This will be called by EncryptionMigrationScreenHandler upon finished + // This will be called by EncryptionMigrationScreen upon finished // minimal migration when the user should re-enter their password. void OnRestartLogin(const UserContext& user_context) { EXPECT_FALSE(continue_login_callback_called_) @@ -215,22 +227,20 @@ } // namespace // Tests handling of a minimal migration run that finishes immediately. -TEST_F(EncryptionMigrationScreenHandlerTest, MinimalMigration) { - encryption_migration_screen_handler_->SetMode( +TEST_F(EncryptionMigrationScreenTest, MinimalMigration) { + encryption_migration_screen_->SetMode( EncryptionMigrationMode::START_MINIMAL_MIGRATION); - encryption_migration_screen_handler_->SetupInitialView(); + encryption_migration_screen_->SetupInitialView(); task_environment_.RunUntilIdle(); - EXPECT_TRUE( - encryption_migration_screen_handler_->fake_wake_lock()->HasWakeLock()); + EXPECT_TRUE(encryption_migration_screen_->fake_wake_lock()->HasWakeLock()); fake_cryptohome_client_->NotifyDircryptoMigrationProgress( cryptohome::DircryptoMigrationStatus::DIRCRYPTO_MIGRATION_SUCCESS, 0 /* current */, 0 /* total */); EXPECT_TRUE(continue_login_callback_called_); - EXPECT_FALSE( - encryption_migration_screen_handler_->fake_wake_lock()->HasWakeLock()); + EXPECT_FALSE(encryption_migration_screen_->fake_wake_lock()->HasWakeLock()); EXPECT_TRUE(fake_cryptohome_client_->to_migrate_from_ecryptfs()); EXPECT_TRUE(fake_cryptohome_client_->minimal_migration()); EXPECT_EQ(cryptohome::CreateAccountIdentifierFromAccountId( @@ -244,10 +254,10 @@ // Tests handling of a resumed minimal migration run. This should behave the // same way that a freshly started minimal migration does (only UMA stats are // different, but we don't test that at the moment). -TEST_F(EncryptionMigrationScreenHandlerTest, ResumeMinimalMigration) { - encryption_migration_screen_handler_->SetMode( +TEST_F(EncryptionMigrationScreenTest, ResumeMinimalMigration) { + encryption_migration_screen_->SetMode( EncryptionMigrationMode::RESUME_MINIMAL_MIGRATION); - encryption_migration_screen_handler_->SetupInitialView(); + encryption_migration_screen_->SetupInitialView(); task_environment_.RunUntilIdle(); @@ -267,16 +277,16 @@ } // Tests handling of a minimal migration run that takes a long time to finish. -// We expect that EncryptionMigrationScreenHandler will require the user to -// re-enter their password. -TEST_F(EncryptionMigrationScreenHandlerTest, MinimalMigrationSlow) { - encryption_migration_screen_handler_->SetMode( +// We expect that EncryptionMigrationScreen will require the user to re-enter +// their password. +TEST_F(EncryptionMigrationScreenTest, MinimalMigrationSlow) { + encryption_migration_screen_->SetMode( EncryptionMigrationMode::START_MINIMAL_MIGRATION); - encryption_migration_screen_handler_->SetupInitialView(); + encryption_migration_screen_->SetupInitialView(); task_environment_.RunUntilIdle(); - encryption_migration_screen_handler_->testing_tick_clock()->Advance( + encryption_migration_screen_->testing_tick_clock()->Advance( base::TimeDelta::FromMinutes(1)); fake_cryptohome_client_->NotifyDircryptoMigrationProgress( cryptohome::DircryptoMigrationStatus::DIRCRYPTO_MIGRATION_SUCCESS, @@ -294,14 +304,14 @@ } // Tests handling of a minimal migration run that fails. -TEST_F(EncryptionMigrationScreenHandlerTest, MinimalMigrationFails) { - encryption_migration_screen_handler_->SetMode( +TEST_F(EncryptionMigrationScreenTest, MinimalMigrationFails) { + encryption_migration_screen_->SetMode( EncryptionMigrationMode::START_MINIMAL_MIGRATION); - encryption_migration_screen_handler_->SetupInitialView(); + encryption_migration_screen_->SetupInitialView(); task_environment_.RunUntilIdle(); - encryption_migration_screen_handler_->testing_tick_clock()->Advance( + encryption_migration_screen_->testing_tick_clock()->Advance( base::TimeDelta::FromMinutes(1)); fake_cryptohome_client_->NotifyDircryptoMigrationProgress( cryptohome::DircryptoMigrationStatus::DIRCRYPTO_MIGRATION_FAILED,
diff --git a/chrome/browser/chromeos/login/screens/signin_fatal_error_screen.cc b/chrome/browser/chromeos/login/screens/signin_fatal_error_screen.cc new file mode 100644 index 0000000..8a78678b --- /dev/null +++ b/chrome/browser/chromeos/login/screens/signin_fatal_error_screen.cc
@@ -0,0 +1,67 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/login/screens/signin_fatal_error_screen.h" + +#include "base/optional.h" +#include "base/values.h" +#include "chrome/browser/chromeos/login/ui/login_display_host.h" +#include "chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.h" + +namespace { +constexpr char kUserActionScreenDismissed[] = "screen-dismissed"; +} // namespace + +namespace chromeos { + +SignInFatalErrorScreen::SignInFatalErrorScreen( + SignInFatalErrorView* view, + const base::RepeatingClosure& exit_callback) + : BaseScreen(SignInFatalErrorView::kScreenId, OobeScreenPriority::DEFAULT), + view_(view), + exit_callback_(exit_callback) { + DCHECK(view_); + view_->Bind(this); +} + +SignInFatalErrorScreen::~SignInFatalErrorScreen() { + if (view_) + view_->Unbind(); +} + +SignInFatalErrorScreen* SignInFatalErrorScreen::Get(ScreenManager* manager) { + return static_cast<SignInFatalErrorScreen*>( + manager->GetScreen(SignInFatalErrorView::kScreenId)); +} + +void SignInFatalErrorScreen::OnViewDestroyed(SignInFatalErrorView* view) { + if (view_ == view) + view_ = nullptr; +} + +void SignInFatalErrorScreen::SetErrorState(Error error, + const base::Value* params) { + error_state_ = error; + extra_error_info_ = params ? base::make_optional<base::Value>(params->Clone()) + : base::nullopt; +} + +void SignInFatalErrorScreen::ShowImpl() { + if (!view_) + return; + + view_->Show(error_state_, base::OptionalOrNullptr(extra_error_info_)); +} + +void SignInFatalErrorScreen::HideImpl() {} + +void SignInFatalErrorScreen::OnUserAction(const std::string& action_id) { + if (action_id == kUserActionScreenDismissed) { + exit_callback_.Run(); + } else { + BaseScreen::OnUserAction(action_id); + } +} + +} // namespace chromeos \ No newline at end of file
diff --git a/chrome/browser/chromeos/login/screens/signin_fatal_error_screen.h b/chrome/browser/chromeos/login/screens/signin_fatal_error_screen.h new file mode 100644 index 0000000..d170ecf --- /dev/null +++ b/chrome/browser/chromeos/login/screens/signin_fatal_error_screen.h
@@ -0,0 +1,61 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_SIGNIN_FATAL_ERROR_SCREEN_H_ +#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_SIGNIN_FATAL_ERROR_SCREEN_H_ + +#include <memory> +#include <string> + +#include "base/optional.h" +#include "base/values.h" +#include "chrome/browser/chromeos/login/screen_manager.h" +#include "chrome/browser/chromeos/login/screens/base_screen.h" + +namespace chromeos { + +class SignInFatalErrorView; + +// Controller for the gaia fatal error screen. +class SignInFatalErrorScreen : public BaseScreen { + public: + // Sets the error information to be shown on the screen + enum class Error { + UNKNOWN = 0, + SCRAPED_PASSWORD_VERIFICATION_FAILURE = 1, + INSECURE_CONTENT_BLOCKED = 2, + MISSING_GAIA_INFO = 3, + }; + + explicit SignInFatalErrorScreen(SignInFatalErrorView* view, + const base::RepeatingClosure& exit_callback); + SignInFatalErrorScreen(const SignInFatalErrorScreen&) = delete; + SignInFatalErrorScreen& operator=(const SignInFatalErrorScreen&) = delete; + ~SignInFatalErrorScreen() override; + + static SignInFatalErrorScreen* Get(ScreenManager* manager); + + // Called when the screen is being destroyed. This should call Unbind() on the + // associated View if this class is destroyed before that. + void OnViewDestroyed(SignInFatalErrorView* view); + + // Setting the error state. + void SetErrorState(Error error, const base::Value* params); + + private: + // BaseScreen: + void ShowImpl() override; + void HideImpl() override; + void OnUserAction(const std::string& action_id) override; + + Error error_state_ = Error::UNKNOWN; + base::Optional<base::Value> extra_error_info_; + + SignInFatalErrorView* view_ = nullptr; + base::RepeatingClosure exit_callback_; +}; + +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_SIGNIN_FATAL_ERROR_SCREEN_H_ \ No newline at end of file
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc b/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc index 42bd012..30cc3e7 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc +++ b/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc
@@ -34,6 +34,7 @@ #include "chrome/browser/ui/ash/wallpaper_controller_client.h" #include "chrome/browser/ui/webui/chromeos/login/gaia_password_changed_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h" +#include "chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/user_creation_screen_handler.h" #include "chromeos/login/auth/user_context.h"
diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc index ba49604d..c633e2d 100644 --- a/chrome/browser/chromeos/login/wizard_controller.cc +++ b/chrome/browser/chromeos/login/wizard_controller.cc
@@ -79,6 +79,7 @@ #include "chrome/browser/chromeos/login/screens/packaged_license_screen.h" #include "chrome/browser/chromeos/login/screens/recommend_apps_screen.h" #include "chrome/browser/chromeos/login/screens/reset_screen.h" +#include "chrome/browser/chromeos/login/screens/signin_fatal_error_screen.h" #include "chrome/browser/chromeos/login/screens/supervision_transition_screen.h" #include "chrome/browser/chromeos/login/screens/sync_consent_screen.h" #include "chrome/browser/chromeos/login/screens/tpm_error_screen.h" @@ -138,6 +139,7 @@ #include "chrome/browser/ui/webui/chromeos/login/packaged_license_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h" +#include "chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.h" @@ -675,6 +677,11 @@ base::BindRepeating(&WizardController::OnEduCoexistenceLoginScreenExit, weak_factory_.GetWeakPtr()))); + append(std::make_unique<SignInFatalErrorScreen>( + oobe_ui->GetView<SignInFatalErrorScreenHandler>(), + base::BindRepeating(&WizardController::OnSignInFatalErrorScreenExit, + weak_factory_.GetWeakPtr()))); + return result; } @@ -694,6 +701,18 @@ ShowLoginScreen(); } +void WizardController::ShowSignInFatalErrorScreen( + SignInFatalErrorScreen::Error error, + const base::Value* params) { + SignInFatalErrorScreen::Get(screen_manager())->SetErrorState(error, params); + AdvanceToScreen(SignInFatalErrorView::kScreenId); +} + +void WizardController::OnSignInFatalErrorScreenExit() { + OnScreenExit(SignInFatalErrorView::kScreenId, kDefaultExitReason); + AdvanceToScreen(GaiaView::kScreenId); +} + void WizardController::ShowLoginScreen() { // This may be triggered by multiply asynchronous events from the JS side. if (login_screen_started_) @@ -1768,7 +1787,8 @@ screen_id == FamilyLinkNoticeView::kScreenId || screen_id == GaiaView::kScreenId || screen_id == UserCreationView::kScreenId || - screen_id == ActiveDirectoryLoginView::kScreenId) { + screen_id == ActiveDirectoryLoginView::kScreenId || + screen_id == SignInFatalErrorView::kScreenId) { SetCurrentScreen(GetScreen(screen_id)); } else { NOTREACHED(); @@ -1924,7 +1944,8 @@ // static bool WizardController::IsSigninScreen(OobeScreenId screen_id) { return screen_id == UserCreationView::kScreenId || - screen_id == GaiaView::kScreenId; + screen_id == GaiaView::kScreenId || + screen_id == SignInFatalErrorView::kScreenId; } void WizardController::AddObserver(ScreenObserver* obs) {
diff --git a/chrome/browser/chromeos/login/wizard_controller.h b/chrome/browser/chromeos/login/wizard_controller.h index 1eb32ca4..e1625c5 100644 --- a/chrome/browser/chromeos/login/wizard_controller.h +++ b/chrome/browser/chromeos/login/wizard_controller.h
@@ -43,6 +43,7 @@ #include "chrome/browser/chromeos/login/screens/network_screen.h" #include "chrome/browser/chromeos/login/screens/packaged_license_screen.h" #include "chrome/browser/chromeos/login/screens/recommend_apps_screen.h" +#include "chrome/browser/chromeos/login/screens/signin_fatal_error_screen.h" #include "chrome/browser/chromeos/login/screens/sync_consent_screen.h" #include "chrome/browser/chromeos/login/screens/terms_of_service_screen.h" #include "chrome/browser/chromeos/login/screens/update_screen.h" @@ -198,6 +199,10 @@ // Configure and show active directory password change screen. void ShowActiveDirectoryPasswordChangeScreen(const std::string& username); + // Configure and show the signin fatal error screen. + void ShowSignInFatalErrorScreen(SignInFatalErrorScreen::Error error, + const base::Value* params); + // Show Family Link notice screen. void ShowFamilyLinkNoticeScreen(); @@ -308,6 +313,7 @@ void OnUserCreationScreenExit(UserCreationScreen::Result result); void OnGaiaScreenExit(GaiaScreen::Result result); void OnActiveDirectoryLoginScreenExit(); + void OnSignInFatalErrorScreenExit(); void OnEduCoexistenceLoginScreenExit( EduCoexistenceLoginScreen::Result result);
diff --git a/chrome/browser/component_updater/hyphenation_component_installer.cc b/chrome/browser/component_updater/hyphenation_component_installer.cc index d028f88..f06b25e1 100644 --- a/chrome/browser/component_updater/hyphenation_component_installer.cc +++ b/chrome/browser/component_updater/hyphenation_component_installer.cc
@@ -6,6 +6,8 @@ #include "base/files/file_util.h" #include "base/logging.h" +#include "base/no_destructor.h" +#include "base/threading/sequenced_task_runner_handle.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -25,6 +27,50 @@ constexpr base::FilePath::CharType kHyphenationRelativeInstallDir[] = FILE_PATH_LITERAL("hyphen-data"); +class HyphenationDirectory { + public: + static HyphenationDirectory* Get() { + static base::NoDestructor<HyphenationDirectory> hyphenation_directory; + return hyphenation_directory.get(); + } + + void Get(base::OnceCallback<void(const base::FilePath&)> callback) { + DVLOG(1) << __func__; + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + callbacks_.push_back(std::move(callback)); + if (!dir_.empty()) + FireCallbacks(); + } + + void Set(const base::FilePath& new_dir) { + DVLOG(1) << __func__ << "\"" << new_dir << "\""; + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + CHECK(!new_dir.empty()); + if (new_dir == dir_) + return; + dir_ = new_dir; + FireCallbacks(); + } + + private: + void FireCallbacks() { + DVLOG(1) << __func__ << " \"" << dir_ + << "\", callbacks=" << callbacks_.size(); + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + CHECK(!dir_.empty()); + std::vector<base::OnceCallback<void(const base::FilePath&)>> callbacks; + std::swap(callbacks, callbacks_); + for (base::OnceCallback<void(const base::FilePath&)>& callback : + callbacks) { + base::SequencedTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(std::move(callback), dir_)); + } + } + + base::FilePath dir_; + std::vector<base::OnceCallback<void(const base::FilePath&)>> callbacks_; +}; + } // namespace namespace component_updater { @@ -62,7 +108,8 @@ std::unique_ptr<base::DictionaryValue> manifest) { VLOG(1) << "Hyphenation Component ready, version " << version.GetString() << " in " << install_dir.value(); - // TODO(kojii): Pass `install_dir` to `hyphenation_impl.cc`. + HyphenationDirectory* hyphenation_directory = HyphenationDirectory::Get(); + hyphenation_directory->Set(install_dir); } // Called during startup and installation before ComponentReady(). @@ -98,6 +145,13 @@ return {}; } +// static +void HyphenationComponentInstallerPolicy::GetHyphenationDictionary( + base::OnceCallback<void(const base::FilePath&)> callback) { + HyphenationDirectory* hyphenation_directory = HyphenationDirectory::Get(); + hyphenation_directory->Get(std::move(callback)); +} + void RegisterHyphenationComponent(ComponentUpdateService* cus) { VLOG(1) << "Registering Hyphenation component."; auto installer = base::MakeRefCounted<ComponentInstaller>(
diff --git a/chrome/browser/component_updater/hyphenation_component_installer.h b/chrome/browser/component_updater/hyphenation_component_installer.h index 1c281c3..43d4918 100644 --- a/chrome/browser/component_updater/hyphenation_component_installer.h +++ b/chrome/browser/component_updater/hyphenation_component_installer.h
@@ -31,6 +31,9 @@ HyphenationComponentInstallerPolicy operator=( const HyphenationComponentInstallerPolicy&) = delete; + static void GetHyphenationDictionary( + base::OnceCallback<void(const base::FilePath&)> callback); + private: // The following methods override ComponentInstallerPolicy. bool SupportsGroupPolicyEnabledComponentUpdates() const override;
diff --git a/chrome/browser/extensions/api/browsing_data/browsing_data_unittest.cc b/chrome/browser/extensions/api/browsing_data/browsing_data_unittest.cc index a99ed81c..d1ffd3ac 100644 --- a/chrome/browser/extensions/api/browsing_data/browsing_data_unittest.cc +++ b/chrome/browser/extensions/api/browsing_data/browsing_data_unittest.cc
@@ -124,7 +124,7 @@ template <class ShortcutFunction> void RunAndCompareRemovalMask(uint64_t expected_mask) { scoped_refptr<ShortcutFunction> function = new ShortcutFunction(); - SCOPED_TRACE(ShortcutFunction::function_name()); + SCOPED_TRACE(ShortcutFunction::static_function_name()); EXPECT_EQ(NULL, RunFunctionAndReturnSingleResult( function.get(), std::string("[{\"since\": 1}]"), browser()));
diff --git a/chrome/browser/extensions/api/input_ime/input_ime_api.cc b/chrome/browser/extensions/api/input_ime/input_ime_api.cc index 52629e6..fe915dc 100644 --- a/chrome/browser/extensions/api/input_ime/input_ime_api.cc +++ b/chrome/browser/extensions/api/input_ime/input_ime_api.cc
@@ -327,7 +327,7 @@ InputMethodEngineBase* engine = GetEngineIfActive( Profile::FromBrowserContext(browser_context()), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); engine->KeyEventHandled(extension_id(), params->request_id, params->response); return RespondNow(NoArguments()); @@ -338,7 +338,7 @@ InputMethodEngineBase* engine = GetEngineIfActive( Profile::FromBrowserContext(browser_context()), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); std::unique_ptr<SetComposition::Params> parent_params( SetComposition::Params::Create(*args_)); @@ -374,7 +374,7 @@ std::make_unique<base::ListValue>(); results->Append(std::make_unique<base::Value>(false)); return RespondNow(ErrorWithArguments( - std::move(results), InformativeError(error, function_name()))); + std::move(results), InformativeError(error, static_function_name()))); } return RespondNow(OneArgument(std::make_unique<base::Value>(true))); } @@ -384,7 +384,7 @@ InputMethodEngineBase* engine = GetEngineIfActive( Profile::FromBrowserContext(browser_context()), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); std::unique_ptr<CommitText::Params> parent_params( CommitText::Params::Create(*args_)); @@ -394,7 +394,7 @@ std::make_unique<base::ListValue>(); results->Append(std::make_unique<base::Value>(false)); return RespondNow(ErrorWithArguments( - std::move(results), InformativeError(error, function_name()))); + std::move(results), InformativeError(error, static_function_name()))); } return RespondNow(OneArgument(std::make_unique<base::Value>(true))); } @@ -404,7 +404,7 @@ InputMethodEngineBase* engine = GetEngineIfActive( Profile::FromBrowserContext(browser_context()), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); std::unique_ptr<SendKeyEvents::Params> parent_params( SendKeyEvents::Params::Create(*args_)); @@ -430,7 +430,7 @@ if (!engine->SendKeyEvents(params.context_id, key_data_out, &error)) return RespondNow(Error(InformativeError( base::StringPrintf("%s %s", kErrorSetKeyEventsFail, error.c_str()), - function_name()))); + static_function_name()))); return RespondNow(NoArguments()); }
diff --git a/chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.cc b/chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.cc index 4f2e031..1a11c68 100644 --- a/chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.cc +++ b/chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.cc
@@ -654,7 +654,7 @@ InputMethodEngine* engine = GetEngineIfActive( Profile::FromBrowserContext(browser_context()), extension_id(), &error); if (!engine) { - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } std::unique_ptr<ClearComposition::Params> parent_params( @@ -666,10 +666,11 @@ std::unique_ptr<base::ListValue> results = std::make_unique<base::ListValue>(); results->Append(std::make_unique<base::Value>(success)); - return RespondNow( - success ? ArgumentList(std::move(results)) - : ErrorWithArguments(std::move(results), - InformativeError(error, function_name()))); + return RespondNow(success + ? ArgumentList(std::move(results)) + : ErrorWithArguments( + std::move(results), + InformativeError(error, static_function_name()))); } ExtensionFunction::ResponseAction InputImeHideInputViewFunction::Run() { @@ -677,7 +678,7 @@ InputMethodEngine* engine = GetEngineIfActive( Profile::FromBrowserContext(browser_context()), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); engine->HideInputView(); return RespondNow(NoArguments()); } @@ -688,7 +689,7 @@ InputMethodEngine* engine = GetEngineIfActive( Profile::FromBrowserContext(browser_context()), extension_id(), &error); if (!engine) { - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } std::unique_ptr<SetAssistiveWindowProperties::Params> parent_params( SetAssistiveWindowProperties::Params::Create(*args_)); @@ -705,7 +706,7 @@ engine->SetAssistiveWindowProperties(params.context_id, assistive_window, &error); if (!error.empty()) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); return RespondNow(OneArgument(std::make_unique<base::Value>(true))); } @@ -715,7 +716,7 @@ InputMethodEngine* engine = GetEngineIfActive( Profile::FromBrowserContext(browser_context()), extension_id(), &error); if (!engine) { - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } std::unique_ptr<SetAssistiveWindowButtonHighlighted::Params> parent_params( SetAssistiveWindowButtonHighlighted::Params::Create(*args_)); @@ -731,7 +732,7 @@ engine->SetButtonHighlighted(params.context_id, button, params.highlighted, &error); if (!error.empty()) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); return RespondNow(NoArguments()); } @@ -747,7 +748,7 @@ InputMethodEngine* engine = GetEngine(browser_context(), extension_id(), &error); if (!engine) { - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } const SetCandidateWindowProperties::Params::Parameters::Properties& @@ -759,7 +760,7 @@ std::make_unique<base::ListValue>(); results->Append(std::make_unique<base::Value>(false)); return RespondNow(ErrorWithArguments( - std::move(results), InformativeError(error, function_name()))); + std::move(results), InformativeError(error, static_function_name()))); } InputMethodEngine::CandidateWindowProperty properties_out = @@ -823,7 +824,7 @@ InputMethodEngine* engine = GetEngineIfActive( Profile::FromBrowserContext(browser_context()), extension_id(), &error); if (!engine) { - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } std::unique_ptr<SetCandidates::Params> parent_params( @@ -851,10 +852,11 @@ std::unique_ptr<base::ListValue> results = std::make_unique<base::ListValue>(); results->Append(std::make_unique<base::Value>(success)); - return RespondNow( - success ? ArgumentList(std::move(results)) - : ErrorWithArguments(std::move(results), - InformativeError(error, function_name()))); + return RespondNow(success + ? ArgumentList(std::move(results)) + : ErrorWithArguments( + std::move(results), + InformativeError(error, static_function_name()))); } ExtensionFunction::ResponseAction InputImeSetCursorPositionFunction::Run() { @@ -862,7 +864,7 @@ InputMethodEngine* engine = GetEngineIfActive( Profile::FromBrowserContext(browser_context()), extension_id(), &error); if (!engine) { - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } std::unique_ptr<SetCursorPosition::Params> parent_params( @@ -875,10 +877,11 @@ std::unique_ptr<base::ListValue> results = std::make_unique<base::ListValue>(); results->Append(std::make_unique<base::Value>(success)); - return RespondNow( - success ? ArgumentList(std::move(results)) - : ErrorWithArguments(std::move(results), - InformativeError(error, function_name()))); + return RespondNow(success + ? ArgumentList(std::move(results)) + : ErrorWithArguments( + std::move(results), + InformativeError(error, static_function_name()))); } ExtensionFunction::ResponseAction InputImeSetMenuItemsFunction::Run() { @@ -891,7 +894,7 @@ InputMethodEngine* engine = GetEngine(browser_context(), extension_id(), &error); if (!engine) { - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } std::vector<chromeos::input_method::InputMethodManager::MenuItem> items_out; @@ -903,7 +906,7 @@ if (!engine->SetMenuItems(items_out, &error)) { return RespondNow(Error(InformativeError( base::StringPrintf("%s %s", kErrorSetMenuItemsFail, error.c_str()), - function_name()))); + static_function_name()))); } return RespondNow(NoArguments()); } @@ -918,7 +921,7 @@ InputMethodEngine* engine = GetEngine(browser_context(), extension_id(), &error); if (!engine) { - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } std::vector<chromeos::input_method::InputMethodManager::MenuItem> items_out; @@ -930,7 +933,7 @@ if (!engine->UpdateMenuItems(items_out, &error)) { return RespondNow(Error(InformativeError( base::StringPrintf("%s %s", kErrorUpdateMenuItemsFail, error.c_str()), - function_name()))); + static_function_name()))); } return RespondNow(NoArguments()); } @@ -945,14 +948,14 @@ InputMethodEngine* engine = GetEngine(browser_context(), extension_id(), &error); if (!engine) { - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); } engine->DeleteSurroundingText(params.context_id, params.offset, params.length, &error); - return RespondNow(error.empty() - ? NoArguments() - : Error(InformativeError(error, function_name()))); + return RespondNow( + error.empty() ? NoArguments() + : Error(InformativeError(error, static_function_name()))); } ExtensionFunction::ResponseAction @@ -961,15 +964,15 @@ InputMethodEngine* engine = GetEngineIfActive( Profile::FromBrowserContext(browser_context()), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); std::unique_ptr<FinishComposingText::Params> parent_params( FinishComposingText::Params::Create(*args_)); const FinishComposingText::Params::Parameters& params = parent_params->parameters; engine->FinishComposingText(params.context_id, &error); - return RespondNow(error.empty() - ? NoArguments() - : Error(InformativeError(error, function_name()))); + return RespondNow( + error.empty() ? NoArguments() + : Error(InformativeError(error, static_function_name()))); } ExtensionFunction::ResponseAction @@ -986,13 +989,13 @@ GetEngineIfActive(Profile::FromBrowserContext(browser_context()), active_extension_id, &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); std::unique_ptr<NotifyImeMenuItemActivated::Params> params( NotifyImeMenuItemActivated::Params::Create(*args_)); if (params->engine_id != engine->GetActiveComponentId()) return RespondNow( - Error(InformativeError(kErrorEngineNotActive, function_name()))); + Error(InformativeError(kErrorEngineNotActive, static_function_name()))); engine->PropertyActivate(params->name); return RespondNow(NoArguments()); } @@ -1003,7 +1006,7 @@ InputMethodEngine* engine = GetEngineIfActive( Profile::FromBrowserContext(browser_context()), extension_id(), &error); if (!engine) - return RespondNow(Error(InformativeError(error, function_name()))); + return RespondNow(Error(InformativeError(error, static_function_name()))); auto bounds_list = std::make_unique<base::ListValue>(); for (const auto& bounds : engine->composition_bounds()) {
diff --git a/chrome/browser/extensions/extension_csp_bypass_browsertest.cc b/chrome/browser/extensions/extension_csp_bypass_browsertest.cc index 3c2ea1ab..9078e65 100644 --- a/chrome/browser/extensions/extension_csp_bypass_browsertest.cc +++ b/chrome/browser/extensions/extension_csp_bypass_browsertest.cc
@@ -179,4 +179,52 @@ EXPECT_TRUE(WasFrameWithScriptLoaded(frame)); } +// CSP:frame-ancestor is not bypassed by extensions. +IN_PROC_BROWSER_TEST_F(ExtensionCSPBypassTest, FrameAncestors) { + std::string manifest = R"( + { + "name": "CSP frame-ancestors", + "manifest_version": 2, + "version": "0.1", + "browser_action": { + "default_popup": "popup.html" + } + } + )"; + + std::string popup = R"( + <!doctype html> + <html> + <iframe src = "$1"></iframe> + </html> + )"; + + GURL iframe_url = embedded_test_server()->GetURL( + "/extensions/csp/frame-ancestors-none.html"); + popup = base::ReplaceStringPlaceholders(popup, {iframe_url.spec()}, nullptr); + + TestExtensionDir test_dir; + test_dir.WriteManifest(manifest); + test_dir.WriteFile(FILE_PATH_LITERAL("popup.html"), popup); + + const Extension* extension = LoadExtension(test_dir.UnpackedPath()); + ASSERT_TRUE(extension); + + content::WebContentsConsoleObserver console_observer(web_contents()); + console_observer.SetPattern( + "Refused to frame * because an ancestor violates *"); + + GURL popup_url = extension->GetResourceURL("popup.html"); + ASSERT_TRUE(content::NavigateToURL(web_contents(), popup_url)); + + // The iframe must be blocked because of CSP. + console_observer.Wait(); + std::vector<content::RenderFrameHost*> render_frame_hosts = + web_contents()->GetAllFrames(); + ASSERT_EQ(2u, render_frame_hosts.size()); + EXPECT_EQ(popup_url, render_frame_hosts[0]->GetLastCommittedURL()); + EXPECT_EQ(iframe_url, render_frame_hosts[1]->GetLastCommittedURL()); + EXPECT_TRUE(render_frame_hosts[1]->GetLastCommittedOrigin().opaque()); +} + } // namespace extensions
diff --git a/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc b/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc index 3548c7a4..e74db58 100644 --- a/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc +++ b/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc
@@ -29,7 +29,7 @@ #include "chrome/browser/sync/profile_sync_service_factory.h" #include "chrome/common/channel_info.h" #include "components/prefs/pref_service.h" -#include "components/sync/driver/about_sync_util.h" +#include "components/sync/driver/sync_internals_util.h" #include "components/sync/driver/sync_service.h" #include "content/public/browser/browser_thread.h" #include "extensions/browser/api/power/power_api.h"
diff --git a/chrome/browser/media/encrypted_media_browsertest.cc b/chrome/browser/media/encrypted_media_browsertest.cc index 7744efea..913828b 100644 --- a/chrome/browser/media/encrypted_media_browsertest.cc +++ b/chrome/browser/media/encrypted_media_browsertest.cc
@@ -372,7 +372,7 @@ // Make sure the Clear Key CDM is properly registered in CdmRegistry. EXPECT_TRUE(IsLibraryCdmRegistered(media::kClearKeyCdmGuid)); -#if defined(OS_LINUX) && defined(OS_CHROMEOS) +#if defined(OS_CHROMEOS) // QueryOutputProtectionStatus() is known to fail on Linux Chrome OS builds. std::string expected_title = kEmeUnitTestFailure; #else
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc index 8436c832..70e1b04 100644 --- a/chrome/browser/metrics/chrome_metrics_service_client.cc +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -74,7 +74,7 @@ #include "components/metrics/content/rendering_perf_metrics_provider.h" #include "components/metrics/content/subprocess_metrics_provider.h" #include "components/metrics/cpu_metrics_provider.h" -#include "components/metrics/demographic_metrics_provider.h" +#include "components/metrics/demographics/demographic_metrics_provider.h" #include "components/metrics/drive_metrics_provider.h" #include "components/metrics/entropy_state_provider.h" #include "components/metrics/metrics_log_uploader.h"
diff --git a/chrome/browser/metrics/metrics_service_user_demographics_browsertest.cc b/chrome/browser/metrics/metrics_service_user_demographics_browsertest.cc index 7021c6d..30aae0b 100644 --- a/chrome/browser/metrics/metrics_service_user_demographics_browsertest.cc +++ b/chrome/browser/metrics/metrics_service_user_demographics_browsertest.cc
@@ -23,9 +23,9 @@ #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" #include "chrome/browser/sync/test/integration/sync_test.h" #include "components/metrics/delegating_provider.h" -#include "components/metrics/demographic_metrics_provider.h" +#include "components/metrics/demographics/demographic_metrics_provider.h" +#include "components/metrics/demographics/demographic_metrics_test_utils.h" #include "components/metrics/metrics_switches.h" -#include "components/metrics/test/demographic_metrics_test_utils.h" #include "components/metrics_services_manager/metrics_services_manager.h" #include "components/sync/driver/sync_user_settings.h" #include "content/public/test/browser_test.h"
diff --git a/chrome/browser/metrics/perf/process_type_collector.cc b/chrome/browser/metrics/perf/process_type_collector.cc index 3b3bc28..2f0654f 100644 --- a/chrome/browser/metrics/perf/process_type_collector.cc +++ b/chrome/browser/metrics/perf/process_type_collector.cc
@@ -105,8 +105,6 @@ process = Process::ZYGOTE_PROCESS; } else if (type == switches::kPpapiPluginProcess) { process = Process::PPAPI_PLUGIN_PROCESS; - } else if (type == switches::kPpapiBrokerProcess) { - process = Process::PPAPI_BROKER_PROCESS; } process_types.emplace(pid, process);
diff --git a/chrome/browser/metrics/perf/process_type_collector_unittest.cc b/chrome/browser/metrics/perf/process_type_collector_unittest.cc index 2ed30a9..79ba9f80 100644 --- a/chrome/browser/metrics/perf/process_type_collector_unittest.cc +++ b/chrome/browser/metrics/perf/process_type_collector_unittest.cc
@@ -22,7 +22,6 @@ 4000 /opt/google/chrome/chrome --log-level=1 --type=utility 5000 /opt/google/chrome/chrome --type=zygote 6000 /opt/google/chrome/chrome --type=ppapi - 7000 /opt/google/chrome/chrome --type=ppapi-broker 7100 /opt/google/chrome/chrome --type=random-type 7200 /opt/google/chrome/chrome --no_type 129000 /opt/google/chrome/chrome --ppapi-flash-path=..../libpepflashplayer.so @@ -42,8 +41,6 @@ process_types->insert(google::protobuf::MapPair<uint32_t, Process>( 6000, Process::PPAPI_PLUGIN_PROCESS)); process_types->insert(google::protobuf::MapPair<uint32_t, Process>( - 7000, Process::PPAPI_BROKER_PROCESS)); - process_types->insert(google::protobuf::MapPair<uint32_t, Process>( 7100, Process::OTHER_PROCESS)); process_types->insert(google::protobuf::MapPair<uint32_t, Process>( 7200, Process::BROWSER_PROCESS));
diff --git a/chrome/browser/metrics/ukm_browsertest.cc b/chrome/browser/metrics/ukm_browsertest.cc index e80dd7c..4d5e7c0 100644 --- a/chrome/browser/metrics/ukm_browsertest.cc +++ b/chrome/browser/metrics/ukm_browsertest.cc
@@ -30,8 +30,8 @@ #include "chrome/browser/sync/test/integration/secondary_account_helper.h" #include "chrome/browser/sync/test/integration/sync_test.h" #include "chrome/browser/unified_consent/unified_consent_service_factory.h" -#include "components/metrics/demographic_metrics_provider.h" -#include "components/metrics/test/demographic_metrics_test_utils.h" +#include "components/metrics/demographics/demographic_metrics_provider.h" +#include "components/metrics/demographics/demographic_metrics_test_utils.h" #include "components/metrics_services_manager/metrics_services_manager.h" #include "components/signin/public/base/signin_buildflags.h" #include "components/signin/public/identity_manager/identity_manager.h"
diff --git a/chrome/browser/notifications/notification_platform_bridge_mac_unnotification.h b/chrome/browser/notifications/notification_platform_bridge_mac_unnotification.h index 1b70c495..e9f387d 100644 --- a/chrome/browser/notifications/notification_platform_bridge_mac_unnotification.h +++ b/chrome/browser/notifications/notification_platform_bridge_mac_unnotification.h
@@ -5,6 +5,8 @@ #ifndef CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_MAC_UNNOTIFICATION_H_ #define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_MAC_UNNOTIFICATION_H_ +#import <Foundation/Foundation.h> + #include <memory> #include <string> @@ -51,8 +53,6 @@ // Request permission to send notifications void RequestPermission(); - // Create default categories for banners and alerts - void CreateDefaultCategories(); private: // Cocoa class that receives callbacks from the UNUserNotificationCenter. @@ -64,6 +64,9 @@ // An object that keeps temp files alive long enough for macOS to pick up. NotificationImageRetainer image_retainer_; + + // An object that carries the categories for the notifications + base::scoped_nsobject<NSMutableSet> categories_; }; #endif // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_MAC_UNNOTIFICATION_H_
diff --git a/chrome/browser/notifications/notification_platform_bridge_mac_unnotification.mm b/chrome/browser/notifications/notification_platform_bridge_mac_unnotification.mm index e3813a0..09e6500 100644 --- a/chrome/browser/notifications/notification_platform_bridge_mac_unnotification.mm +++ b/chrome/browser/notifications/notification_platform_bridge_mac_unnotification.mm
@@ -19,19 +19,13 @@ #import "chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac.h" #include "chrome/grit/generated_resources.h" #include "content/public/browser/browser_task_traits.h" +#include "third_party/blink/public/common/notifications/notification_constants.h" #include "ui/base/l10n/l10n_util_mac.h" #include "ui/message_center/public/cpp/notification.h" @class UNMutableNotificationContent; @class UNUserNotificationCenter; -namespace { - -NSString* const kCloseAndSettingsCategory = @"CLOSE_AND_SETTINGS"; -NSString* const kCloseCategory = @"CLOSE"; - -} // namespace - // A Cocoa class that represents the delegate of UNUserNotificationCenter and // can forward commands to C++. API_AVAILABLE(macosx(10.14)) @@ -49,12 +43,12 @@ NotificationPlatformBridgeMacUNNotification( UNUserNotificationCenter* notification_center) : delegate_([UNNotificationCenterDelegate alloc]), - notification_center_([notification_center retain]) { + notification_center_([notification_center retain]), + categories_([[NSMutableSet alloc] init]) { [notification_center_ setDelegate:delegate_.get()]; // TODO(crbug/1129366): Determine when to request permission NotificationPlatformBridgeMacUNNotification::RequestPermission(); - NotificationPlatformBridgeMacUNNotification::CreateDefaultCategories(); } NotificationPlatformBridgeMacUNNotification:: @@ -68,8 +62,12 @@ Profile* profile, const message_center::Notification& notification, std::unique_ptr<NotificationCommon::Metadata> metadata) { - base::scoped_nsobject<UNNotificationBuilder> builder( - [[UNNotificationBuilder alloc] init]); + base::scoped_nsobject<UNNotificationBuilder> builder([[UNNotificationBuilder + alloc] + initWithCloseLabel:l10n_util::GetNSString(IDS_NOTIFICATION_BUTTON_CLOSE) + optionsLabel:l10n_util::GetNSString(IDS_NOTIFICATION_BUTTON_MORE) + settingsLabel:l10n_util::GetNSString( + IDS_NOTIFICATION_BUTTON_SETTINGS)]); base::string16 context_message = notification.items().empty() @@ -97,6 +95,18 @@ [builder setIconPath:base::SysUTF8ToNSString(path.value())]; } + [builder setShowSettingsButton:notification.should_show_settings_button()]; + const std::vector<message_center::ButtonInfo>& buttons = + notification.buttons(); + if (!buttons.empty()) { + DCHECK_LE(buttons.size(), blink::kNotificationMaxActions); + NSString* buttonOne = base::SysUTF16ToNSString(buttons[0].title); + NSString* buttonTwo = nullptr; + if (buttons.size() > 1) + buttonTwo = base::SysUTF16ToNSString(buttons[1].title); + [builder setButtons:buttonOne secondaryButton:buttonTwo]; + } + [builder setOrigin:base::SysUTF8ToNSString(notification.origin_url().spec())]; [builder setNotificationId:base::SysUTF8ToNSString(notification.id())]; [builder setProfileId:base::SysUTF8ToNSString(GetProfileId(profile))]; @@ -108,14 +118,13 @@ setNotificationType:[NSNumber numberWithInteger:static_cast<NSInteger>( notification_type)]]; - UNMutableNotificationContent* content = [builder buildUserNotification]; + UNNotificationCategory* category = [builder buildCategory]; + [categories_ addObject:category]; + // TODO(crbug/1138470): Determine when to remove UNNotificationCategory so + // that they do not accumulate during browser lifetime + [notification_center_ setNotificationCategories:categories_]; - // TODO(crbug/1136061): Add support for complex categories and move setting - // the categories to the place that will be building the complex categories - if (notification.should_show_settings_button()) - [content setCategoryIdentifier:kCloseAndSettingsCategory]; - else - [content setCategoryIdentifier:kCloseCategory]; + UNMutableNotificationContent* content = [builder buildUserNotification]; UNNotificationRequest* request = [UNNotificationRequest requestWithIdentifier:base::SysUTF8ToNSString(notification.id()) @@ -217,38 +226,6 @@ }]; } -void NotificationPlatformBridgeMacUNNotification::CreateDefaultCategories() { - UNNotificationAction* closeButton = [UNNotificationAction - actionWithIdentifier:notification_constants::kNotificationCloseButtonTag - title:l10n_util::GetNSString(IDS_NOTIFICATION_BUTTON_CLOSE) - options:UNNotificationActionOptionNone]; - - UNNotificationAction* settingsButton = [UNNotificationAction - actionWithIdentifier:notification_constants:: - kNotificationSettingsButtonTag - title:l10n_util::GetNSString( - IDS_NOTIFICATION_BUTTON_SETTINGS) - options:UNNotificationActionOptionForeground]; - - // The actions in categories are ordered by LIFO. So having closeButton at the - // end ensures that it is always the button on top. - UNNotificationCategory* closeAndSettingsCategory = [UNNotificationCategory - categoryWithIdentifier:kCloseAndSettingsCategory - actions:@[ settingsButton, closeButton ] - intentIdentifiers:@[] - options:UNNotificationCategoryOptionCustomDismissAction]; - - UNNotificationCategory* closeCategory = [UNNotificationCategory - categoryWithIdentifier:kCloseCategory - actions:@[ closeButton ] - intentIdentifiers:@[] - options:UNNotificationCategoryOptionCustomDismissAction]; - - [notification_center_ - setNotificationCategories:[NSSet setWithObjects:closeAndSettingsCategory, - closeCategory, nil]]; -} - // ///////////////////////////////////////////////////////////////////////////// @implementation UNNotificationCenterDelegate
diff --git a/chrome/browser/notifications/win/notification_template_builder.cc b/chrome/browser/notifications/win/notification_template_builder.cc index 1728a1c..3a55fb95 100644 --- a/chrome/browser/notifications/win/notification_template_builder.cc +++ b/chrome/browser/notifications/win/notification_template_builder.cc
@@ -26,6 +26,7 @@ #include "third_party/libxml/chromium/xml_writer.h" #include "ui/base/l10n/l10n_util.h" #include "ui/message_center/public/cpp/notification.h" +#include "ui/strings/grit/ui_strings.h" #include "url/gurl.h" #include "url/origin.h" @@ -341,10 +342,7 @@ xml_writer->StartElement(kActionElement); xml_writer->AddAttribute(kActivationType, kBackground); - // TODO(finnur): Add our own string here (we're past string-freeze so we're - // re-using the already translated "Close" from elsewhere). - xml_writer->AddAttribute( - kContent, l10n_util::GetStringUTF8(IDS_HISTORY_CLOSE_MENU_PROMO)); + xml_writer->AddAttribute(kContent, l10n_util::GetStringUTF8(IDS_APP_CLOSE)); copied_launch_id.set_is_for_dismiss_button(); xml_writer->AddAttribute(kArguments, copied_launch_id.Serialize()); xml_writer->EndElement();
diff --git a/chrome/browser/pdf/pdf_extension_test.cc b/chrome/browser/pdf/pdf_extension_test.cc index caa32b0..a55085ce 100644 --- a/chrome/browser/pdf/pdf_extension_test.cc +++ b/chrome/browser/pdf/pdf_extension_test.cc
@@ -3121,13 +3121,13 @@ PDFExtensionAccessibilityTextExtractionTest, testing::Bool()); +using AXTestPass = content::AccessibilityTreeFormatter::TestPass; + class PDFExtensionAccessibilityTreeDumpTest : public PDFExtensionTest, - public ::testing::WithParamInterface<std::pair<bool, size_t>> { + public ::testing::WithParamInterface<std::pair<bool, AXTestPass>> { public: - PDFExtensionAccessibilityTreeDumpTest() - : test_pass_(content::AccessibilityTreeFormatter::GetTestPass( - GetParam().second)) {} + PDFExtensionAccessibilityTreeDumpTest() : test_pass_(GetParam().second) {} ~PDFExtensionAccessibilityTreeDumpTest() override = default; void SetUpCommandLine(base::CommandLine* command_line) override { @@ -3291,19 +3291,30 @@ // Parameterize the tests so that each test-pass is run independently. struct DumpAccessibilityTreeTestPassToString { std::string operator()( - const ::testing::TestParamInfo<std::pair<bool, size_t>>& i) const { - std::string result = - content::AccessibilityTreeFormatter::GetTestPass(i.param.second).name; + const ::testing::TestParamInfo<std::pair<bool, AXTestPass>>& i) const { + std::string result = i.param.second.name; return result + (i.param.first ? "_updateEnabled" : "_updateDisabled"); } }; -INSTANTIATE_TEST_SUITE_P( - All, - PDFExtensionAccessibilityTreeDumpTest, - testing::ValuesIn(GetTestPairValues( - content::AccessibilityTreeFormatter::GetTestPasses().size())), - DumpAccessibilityTreeTestPassToString()); +// Constructs a list of accessibility tests, two for each accessibility tree +// formatter testpasses: one when pdf update is enabled and the second one when +// pdf update is disabled. +const std::vector<std::pair<bool, AXTestPass>> GetAXTestPairValues() { + std::vector<std::pair<bool, AXTestPass>> values; + std::vector<AXTestPass> passes = + content::AccessibilityTreeFormatter::GetTestPasses(); + for (auto pass : passes) { + values.emplace_back(std::make_pair(true, pass)); + values.emplace_back(std::make_pair(false, pass)); + } + return values; +} + +INSTANTIATE_TEST_SUITE_P(All, + PDFExtensionAccessibilityTreeDumpTest, + testing::ValuesIn(GetAXTestPairValues()), + DumpAccessibilityTreeTestPassToString()); IN_PROC_BROWSER_TEST_P(PDFExtensionAccessibilityTreeDumpTest, HelloWorld) { RunPDFTest(FILE_PATH_LITERAL("hello-world.pdf"));
diff --git a/chrome/browser/policy/messaging_layer/storage/storage_queue.cc b/chrome/browser/policy/messaging_layer/storage/storage_queue.cc index ca9d6be..cbd5616 100644 --- a/chrome/browser/policy/messaging_layer/storage/storage_queue.cc +++ b/chrome/browser/policy/messaging_layer/storage/storage_queue.cc
@@ -15,6 +15,7 @@ #include "base/bind.h" #include "base/callback.h" +#include "base/containers/flat_set.h" #include "base/files/file_enumerator.h" #include "base/files/file_path.h" #include "base/files/file_util.h" @@ -159,7 +160,8 @@ } // Enumerate data files and scan the last one to determine what sequence // numbers do we have (first and last). - RETURN_IF_ERROR(EnumerateDataFiles()); + base::flat_set<base::FilePath> used_files_set; + RETURN_IF_ERROR(EnumerateDataFiles(&used_files_set)); RETURN_IF_ERROR(ScanLastFile()); generation_id_ = base::RandUint64(); // reset it in case of inavaliability. if (next_seq_number_ > 0) { @@ -171,8 +173,10 @@ // last sequencing number and load both digest and generation id from there. // If there is no match, we bail out for now; later on we will instead // start a new generation from the next sequencing number (with no digest!) - RETURN_IF_ERROR(RestoreMetadata()); + RETURN_IF_ERROR(RestoreMetadata(&used_files_set)); } + // Delete all files except used ones. + DeleteUnusedFiles(used_files_set); // Initiate periodic uploading, if needed. if (!options_.upload_period().is_zero()) { upload_timer_.Start(FROM_HERE, options_.upload_period(), this, @@ -201,7 +205,35 @@ last_record_digest_ = wrapped_record->record_digest(); } -Status StorageQueue::EnumerateDataFiles() { +StatusOr<uint64_t> StorageQueue::AddDataFile( + const base::FilePath& full_name, + const base::FileEnumerator::FileInfo& file_info) { + const auto extension = full_name.Extension(); + if (extension.empty()) { + return Status(error::INTERNAL, + base::StrCat({"File has no extension: '", + full_name.MaybeAsASCII(), "'"})); + } + uint64_t file_seq_number = 0; + bool success = base::StringToUint64(extension.substr(1), &file_seq_number); + if (!success) { + return Status(error::INTERNAL, + base::StrCat({"File extension does not parse: '", + full_name.MaybeAsASCII(), "'"})); + } + if (!files_ + .emplace(file_seq_number, base::MakeRefCounted<SingleFile>( + full_name, file_info.GetSize())) + .second) { + return Status(error::ALREADY_EXISTS, + base::StrCat({"Sequencing duplicated: '", + full_name.MaybeAsASCII(), "'"})); + } + return file_seq_number; +} + +Status StorageQueue::EnumerateDataFiles( + base::flat_set<base::FilePath>* used_files_set) { DCHECK_CALLED_ON_VALID_SEQUENCE(storage_queue_sequence_checker_); // We need to set first_seq_number_ to 0 if this is the initialization // of an empty StorageQueue, and to the lowest seq number among all @@ -213,31 +245,17 @@ base::StrCat({options_.file_prefix(), FILE_PATH_LITERAL(".*")})); base::FilePath full_name; while (full_name = dir_enum.Next(), !full_name.empty()) { - const auto extension = dir_enum.GetInfo().GetName().Extension(); - if (extension.empty()) { - return Status(error::INTERNAL, - base::StrCat({"File has no extension: '", - full_name.MaybeAsASCII(), "'"})); + const auto file_seq_number_result = + AddDataFile(full_name, dir_enum.GetInfo()); + if (!file_seq_number_result.ok()) { + LOG(WARNING) << "Failed to add file " << full_name.MaybeAsASCII() + << ", status=" << file_seq_number_result.status(); + continue; } - uint64_t file_seq_number = 0; - bool success = base::StringToUint64(extension.substr(1), &file_seq_number); - if (!success) { - return Status(error::INTERNAL, - base::StrCat({"File extension does not parse: '", - full_name.MaybeAsASCII(), "'"})); - } - if (!files_ - .emplace(file_seq_number, - base::MakeRefCounted<SingleFile>( - full_name, dir_enum.GetInfo().GetSize())) - .second) { - return Status(error::ALREADY_EXISTS, - base::StrCat({"Sequencing duplicated: '", - full_name.MaybeAsASCII(), "'"})); - } + used_files_set->emplace(full_name); // File is in use. if (!first_seq_number.has_value() || - first_seq_number.value() > file_seq_number) { - first_seq_number = file_seq_number; + first_seq_number.value() > file_seq_number_result.ValueOrDie()) { + first_seq_number = file_seq_number_result.ValueOrDie(); } } // first_seq_number.has_value() is true only if we found some files. @@ -467,7 +485,8 @@ return Status::StatusOK(); } -Status StorageQueue::RestoreMetadata() { +Status StorageQueue::RestoreMetadata( + base::flat_set<base::FilePath>* used_files_set) { // Enumerate all meta-files into a map seq_number->file_path. std::map<uint64_t, base::FilePath> meta_files_paths; base::FileEnumerator dir_enum( @@ -499,11 +518,11 @@ base::NumberToString(next_seq_number_ - 1)})); } // Match found. Load the metadata. - auto meta_file = base::MakeRefCounted<SingleFile>( + const base::FilePath meta_file_path = options_.directory() .Append(METADATA_NAME) - .AddExtensionASCII(base::NumberToString(next_seq_number_ - 1)), - /*size=*/0); + .AddExtensionASCII(base::NumberToString(next_seq_number_ - 1)); + auto meta_file = base::MakeRefCounted<SingleFile>(meta_file_path, /*size=*/0); RETURN_IF_ERROR(meta_file->Open(/*read_only=*/true)); // Read generation id. auto read_result = meta_file->Read(/*pos=*/0, sizeof(generation_id_)); @@ -525,16 +544,25 @@ " status=", read_result.status().ToString()})); } last_record_digest_ = std::string(read_result.ValueOrDie()); - // Delete other metadata files. - for (const auto& file_path : meta_files_paths) { - if (file_path.first == next_seq_number_ - 1) { - continue; // Skip the file we just used. - } - base::DeleteFile(file_path.second); // Ignore any errors. - } + // Store used metadata file. + used_files_set->emplace(meta_file_path); return Status::StatusOK(); } +void StorageQueue::DeleteUnusedFiles( + const base::flat_set<base::FilePath>& used_files_setused_files_set) { + base::FileEnumerator dir_enum(options_.directory(), + /*recursive=*/true, + base::FileEnumerator::FILES); + base::FilePath full_name; + while (full_name = dir_enum.Next(), !full_name.empty()) { + if (used_files_setused_files_set.count(full_name) > 0) { + continue; // File is used, keep it. + } + DeleteFile(full_name); + } +} + void StorageQueue::DeleteOutdatedMetadata(uint64_t seq_number_to_keep) { std::vector<base::FilePath> files_to_delete; base::FileEnumerator dir_enum(
diff --git a/chrome/browser/policy/messaging_layer/storage/storage_queue.h b/chrome/browser/policy/messaging_layer/storage/storage_queue.h index 3a9381e6..bf118c6 100644 --- a/chrome/browser/policy/messaging_layer/storage/storage_queue.h +++ b/chrome/browser/policy/messaging_layer/storage/storage_queue.h
@@ -279,7 +279,8 @@ // Helper method for Init(): enumerates all data files in the directory. // Valid file names are <prefix>.<seq_number>, any other names are ignored. - Status EnumerateDataFiles(); + // Adds used data files to the set. + Status EnumerateDataFiles(base::flat_set<base::FilePath>* used_files_set); // Helper method for Init(): scans the last file in StorageQueue, if there are // files at all, and learns the latest sequencing number. Otherwise (if there @@ -308,7 +309,12 @@ // Helper method for Init(): locates file with metadata that matches the // last sequencing number and loads metadat from it. - Status RestoreMetadata(); + // Adds used metadata file to the set. + Status RestoreMetadata(base::flat_set<base::FilePath>* used_files_set); + + // Delete all files except those listed in the set. + void DeleteUnusedFiles( + const base::flat_set<base::FilePath>& used_files_setused_files_set); // Helper method for Write(): deletes meta files up to, but not including // |seq_number_to_keep|. Any errors are ignored.
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index 51814700..25d00f36 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc
@@ -239,7 +239,6 @@ #include "chrome/browser/signin/signin_promo.h" #include "chrome/browser/ui/startup/startup_browser_creator.h" #include "chrome/browser/ui/webui/history/foreign_session_handler.h" -#include "chrome/browser/ui/webui/history/history_ui.h" #include "chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.h" #include "chrome/browser/ui/webui/settings/settings_ui.h" #include "chrome/browser/upgrade_detector/upgrade_detector.h" @@ -478,6 +477,9 @@ const char kWasOnboardingFeatureCheckedBefore[] = "profile.was_pwm_onboarding_feature_checked_before"; +// Deprecated 10/2020 +const char kHistoryMenuPromoShown[] = "history.menu_promo_shown"; + // Register local state used only for migration (clearing or moving to a new // key). void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { @@ -541,6 +543,8 @@ registry->RegisterIntegerPref(kPasswordManagerOnboardingState, 0); registry->RegisterBooleanPref(kWasOnboardingFeatureCheckedBefore, false); + + registry->RegisterBooleanPref(kHistoryMenuPromoShown, true); } } // namespace @@ -885,7 +889,6 @@ first_run::RegisterProfilePrefs(registry); gcm::RegisterProfilePrefs(registry); HatsService::RegisterProfilePrefs(registry); - HistoryUI::RegisterProfilePrefs(registry); InstantService::RegisterProfilePrefs(registry); media_router::RegisterProfilePrefs(registry); NewTabPageHandler::RegisterProfilePrefs(registry); @@ -1119,4 +1122,7 @@ profile_prefs->ClearPref(kPluginsDeprecationInfobarLastShown); profile_prefs->ClearPref(kPasswordManagerOnboardingState); profile_prefs->ClearPref(kWasOnboardingFeatureCheckedBefore); + + // Added 10/2020 + profile_prefs->ClearPref(kHistoryMenuPromoShown); }
diff --git a/chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc b/chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc index aa50b881..8758790 100644 --- a/chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc +++ b/chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc
@@ -558,15 +558,13 @@ class NoStatePrefetchBrowserTestHttpCache : public NoStatePrefetchBrowserTest, - public testing::WithParamInterface<std::tuple<bool, bool, bool>> { + public testing::WithParamInterface<std::tuple<bool, bool>> { protected: void SetUp() override { bool split_cache_by_network_isolation_key; bool append_frame_origin_to_network_isolation_key; - bool use_prefetch_loader; std::tie(split_cache_by_network_isolation_key, - append_frame_origin_to_network_isolation_key, - use_prefetch_loader) = GetParam(); + append_frame_origin_to_network_isolation_key) = GetParam(); std::vector<base::Feature> disabled_and_enabled_features[2]; @@ -574,8 +572,6 @@ .push_back(net::features::kSplitCacheByNetworkIsolationKey); disabled_and_enabled_features[append_frame_origin_to_network_isolation_key] .push_back(net::features::kAppendFrameOriginToNetworkIsolationKey); - disabled_and_enabled_features[use_prefetch_loader].push_back( - features::kNoStatePrefetchUsingPrefetchLoader); feature_list_.InitWithFeatures(disabled_and_enabled_features[true], disabled_and_enabled_features[false]); @@ -596,8 +592,8 @@ NoStatePrefetchBrowserTestHttpCache_DefaultAndAppendFrameOrigin, PrefetchTwoCrossOriginFrames) { bool append_frame_origin_to_network_isolation_key; - std::tie(std::ignore, append_frame_origin_to_network_isolation_key, - std::ignore) = GetParam(); + std::tie(std::ignore, append_frame_origin_to_network_isolation_key) = + GetParam(); GURL image_src = embedded_test_server()->GetURL("/prerender/cacheable_image.png"); @@ -627,9 +623,7 @@ INSTANTIATE_TEST_SUITE_P( All, NoStatePrefetchBrowserTestHttpCache_DefaultAndAppendFrameOrigin, - ::testing::Combine(::testing::Values(true), - ::testing::Bool(), - ::testing::Bool())); + ::testing::Combine(::testing::Values(true), ::testing::Bool())); // Checks that a page is correctly prefetched in the case of a // <link rel=prerender> tag and the JavaScript on the page is not executed. @@ -708,9 +702,7 @@ INSTANTIATE_TEST_SUITE_P( All, NoStatePrefetchBrowserTestHttpCache_DefaultAndDoubleKeyedHttpCache, - ::testing::Combine(::testing::Bool(), - ::testing::Values(false), - ::testing::Bool())); + ::testing::Combine(::testing::Bool(), ::testing::Values(false))); // Checks that the expected resource types are fetched via NoState Prefetch. IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, PrefetchAllResourceTypes) {
diff --git a/chrome/browser/profiles/profile_window_browsertest.cc b/chrome/browser/profiles/profile_window_browsertest.cc index c6fdc181..84a5530 100644 --- a/chrome/browser/profiles/profile_window_browsertest.cc +++ b/chrome/browser/profiles/profile_window_browsertest.cc
@@ -31,6 +31,7 @@ #include "chrome/browser/ui/user_manager.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/search_test_utils.h" +#include "chrome/test/base/testing_profile.h" #include "chrome/test/base/ui_test_utils.h" #include "chrome/test/base/web_ui_browser_test.h" #include "components/account_id/account_id.h" @@ -49,6 +50,8 @@ namespace { +enum ProfileWindowType { INCOGNITO, GUEST, EPHEMERAL_GUEST }; + // Code related to history borrowed from: // chrome/browser/history/history_browsertest.cc @@ -153,43 +156,51 @@ return browser; } -class OTRProfileWindowBrowserTest : public ProfileWindowBrowserTest, - public testing::WithParamInterface<bool> { +class ProfileWindowCountBrowserTest + : public ProfileWindowBrowserTest, + public testing::WithParamInterface<ProfileWindowType> { protected: - OTRProfileWindowBrowserTest() { is_guest_ = GetParam(); } + ProfileWindowCountBrowserTest() { + ProfileWindowType profile_type = GetParam(); + is_incognito_ = profile_type == ProfileWindowType::INCOGNITO; + if (!is_incognito_) + TestingProfile::SetScopedFeatureListForEphemeralGuestProfiles( + scoped_feature_list_, + profile_type == ProfileWindowType::EPHEMERAL_GUEST); + } int GetWindowCount() { - return is_guest_ ? BrowserList::GetGuestBrowserCount() - : BrowserList::GetOffTheRecordBrowsersActiveForProfile( - browser()->profile()); + return is_incognito_ ? BrowserList::GetOffTheRecordBrowsersActiveForProfile( + browser()->profile()) + : BrowserList::GetGuestBrowserCount(); } Browser* CreateGuestOrIncognitoBrowser() { Browser* new_browser; // When |profile_| is null this means no browsers have been created, // this is the first browser instance. - // |is_guest_| is used to determine which browser type to open. + // |is_incognito_| is used to determine which browser type to open. if (!profile_) { - new_browser = is_guest_ ? OpenGuestBrowser() - : CreateIncognitoBrowser(browser()->profile()); + new_browser = is_incognito_ ? CreateIncognitoBrowser(browser()->profile()) + : OpenGuestBrowser(); profile_ = new_browser->profile(); } else { - // Using |CreateIncognitoBrowser| to create OTR profile browser, if - // |profile_| is a guest profile this method opens a Guest Window. On the - // other hand if |profile_| is a primary profile it creates an incognito - // window for said profile. - new_browser = CreateIncognitoBrowser(profile_); + if (profile_->IsEphemeralGuestProfile()) + new_browser = CreateBrowser(profile_); + else + new_browser = CreateIncognitoBrowser(profile_); } return new_browser; } private: - bool is_guest_; + bool is_incognito_; + base::test::ScopedFeatureList scoped_feature_list_; Profile* profile_ = nullptr; }; -IN_PROC_BROWSER_TEST_P(OTRProfileWindowBrowserTest, CountOTRProfileWindows) { +IN_PROC_BROWSER_TEST_P(ProfileWindowCountBrowserTest, CountProfileWindows) { DCHECK_EQ(0, GetWindowCount()); // Create a browser and check the count. @@ -221,23 +232,44 @@ DCHECK_EQ(0, GetWindowCount()); } -INSTANTIATE_TEST_SUITE_P(IncognitoAndGuestWindowCount, - OTRProfileWindowBrowserTest, - /*is_guest_=*/testing::Bool()); +INSTANTIATE_TEST_SUITE_P(All, + ProfileWindowCountBrowserTest, + testing::Values(ProfileWindowType::INCOGNITO, + ProfileWindowType::GUEST, + ProfileWindowType::EPHEMERAL_GUEST)); -IN_PROC_BROWSER_TEST_F(ProfileWindowBrowserTest, OpenGuestBrowser) { +class GuestProfileWindowBrowserTest : public ProfileWindowBrowserTest, + public testing::WithParamInterface<bool> { + protected: + GuestProfileWindowBrowserTest() { + is_ephemeral_ = GetParam(); + + // Change the value if Ephemeral is not supported. + is_ephemeral_ &= + TestingProfile::SetScopedFeatureListForEphemeralGuestProfiles( + scoped_feature_list_, is_ephemeral_); + } + + bool IsEphemeral() { return is_ephemeral_; } + + private: + bool is_ephemeral_; + base::test::ScopedFeatureList scoped_feature_list_; +}; + +IN_PROC_BROWSER_TEST_P(GuestProfileWindowBrowserTest, OpenGuestBrowser) { EXPECT_TRUE(OpenGuestBrowser()); } -IN_PROC_BROWSER_TEST_F(ProfileWindowBrowserTest, GuestIsIncognito) { +IN_PROC_BROWSER_TEST_P(GuestProfileWindowBrowserTest, GuestIsOffTheRecord) { Profile* guest_profile = OpenGuestBrowser()->profile(); - if (guest_profile->IsEphemeralGuestProfile()) + if (IsEphemeral()) EXPECT_FALSE(guest_profile->IsOffTheRecord()); else EXPECT_TRUE(guest_profile->IsOffTheRecord()); } -IN_PROC_BROWSER_TEST_F(ProfileWindowBrowserTest, GuestIgnoresHistory) { +IN_PROC_BROWSER_TEST_P(GuestProfileWindowBrowserTest, GuestIgnoresHistory) { Browser* guest_browser = OpenGuestBrowser(); ui_test_utils::WaitForHistoryToLoad(HistoryServiceFactory::GetForProfile( @@ -258,7 +290,7 @@ ASSERT_EQ(expect_history, urls.size()); } -IN_PROC_BROWSER_TEST_F(ProfileWindowBrowserTest, GuestClearsCookies) { +IN_PROC_BROWSER_TEST_P(GuestProfileWindowBrowserTest, GuestClearsCookies) { Browser* guest_browser = OpenGuestBrowser(); Profile* guest_profile = guest_browser->profile(); @@ -281,7 +313,8 @@ ASSERT_EQ("", cookie); } -IN_PROC_BROWSER_TEST_F(ProfileWindowBrowserTest, GuestClearsFindInPageCache) { +IN_PROC_BROWSER_TEST_P(GuestProfileWindowBrowserTest, + GuestClearsFindInPageCache) { Browser* guest_browser = OpenGuestBrowser(); Profile* guest_profile = guest_browser->profile(); @@ -314,7 +347,12 @@ ->GetSearchPrepopulateText()); } -IN_PROC_BROWSER_TEST_F(ProfileWindowBrowserTest, GuestCannotSignin) { +IN_PROC_BROWSER_TEST_P(GuestProfileWindowBrowserTest, GuestCannotSignin) { + // TODO(https://crbug.com/1125474): Enable the test after identity manager is + // updated for ephemeral Guest profiles. + if (IsEphemeral()) + return; + Browser* guest_browser = OpenGuestBrowser(); signin::IdentityManager* identity_manager = @@ -324,7 +362,8 @@ ASSERT_FALSE(identity_manager); } -IN_PROC_BROWSER_TEST_F(ProfileWindowBrowserTest, GuestAppMenuLacksBookmarks) { +IN_PROC_BROWSER_TEST_P(GuestProfileWindowBrowserTest, + GuestAppMenuLacksBookmarks) { EmptyAcceleratorHandler accelerator_handler; // Verify the normal browser has a bookmark menu. AppMenuModel model_normal_profile(&accelerator_handler, browser()); @@ -337,6 +376,10 @@ EXPECT_EQ(-1, model_guest_profile.GetIndexOfCommandId(IDC_BOOKMARKS_MENU)); } +INSTANTIATE_TEST_SUITE_P(GuestProfileWindowBrowserTest, + GuestProfileWindowBrowserTest, + /*is_ephemeral=*/testing::Bool()); + IN_PROC_BROWSER_TEST_F(ProfileWindowBrowserTest, OpenBrowserWindowForProfile) { Profile* profile = browser()->profile(); size_t num_browsers = BrowserList::GetInstance()->size();
diff --git a/chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.cc b/chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.cc index c4805a3..89d28a8 100644 --- a/chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.cc +++ b/chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.cc
@@ -5,7 +5,6 @@ #include "chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h" #include "build/build_config.h" -#include "chrome/browser/renderer_host/pepper/pepper_broker_message_filter.h" #include "chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h" #include "content/public/browser/browser_ppapi_host.h" #include "ppapi/host/message_filter_host.h" @@ -36,19 +35,6 @@ if (!host_->IsValidInstance(instance)) return std::unique_ptr<ResourceHost>(); - // Private interfaces. - if (host_->GetPpapiHost()->permissions().HasPermission( - ppapi::PERMISSION_PRIVATE)) { - switch (message.type()) { - case PpapiHostMsg_Broker_Create::ID: { - scoped_refptr<ResourceMessageFilter> broker_filter( - new PepperBrokerMessageFilter(instance, host_)); - return std::unique_ptr<ResourceHost>(new MessageFilterHost( - host_->GetPpapiHost(), instance, resource, broker_filter)); - } - } - } - // Permissions for the following interfaces will be checked at the // time of the corresponding instance's methods calls (because // permission check can be performed only on the UI
diff --git a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc deleted file mode 100644 index 82fa5b7..0000000 --- a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc +++ /dev/null
@@ -1,71 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/renderer_host/pepper/pepper_broker_message_filter.h" - -#include <string> - -#include "chrome/browser/content_settings/host_content_settings_map_factory.h" -#include "chrome/browser/profiles/profile.h" -#include "components/content_settings/core/browser/host_content_settings_map.h" -#include "components/content_settings/core/common/content_settings.h" -#include "content/public/browser/browser_ppapi_host.h" -#include "content/public/browser/browser_task_traits.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/render_process_host.h" -#include "ipc/ipc_message_macros.h" -#include "ppapi/c/pp_errors.h" -#include "ppapi/host/dispatch_host_message.h" -#include "ppapi/proxy/ppapi_messages.h" -#include "url/gurl.h" - -using content::BrowserPpapiHost; -using content::BrowserThread; -using content::RenderProcessHost; - -PepperBrokerMessageFilter::PepperBrokerMessageFilter(PP_Instance instance, - BrowserPpapiHost* host) - : document_url_(host->GetDocumentURLForInstance(instance)) { - int unused; - host->GetRenderFrameIDsForInstance(instance, &render_process_id_, &unused); -} - -PepperBrokerMessageFilter::~PepperBrokerMessageFilter() {} - -scoped_refptr<base::SequencedTaskRunner> -PepperBrokerMessageFilter::OverrideTaskRunnerForMessage( - const IPC::Message& message) { - return content::GetUIThreadTaskRunner({}); -} - -int32_t PepperBrokerMessageFilter::OnResourceMessageReceived( - const IPC::Message& msg, - ppapi::host::HostMessageContext* context) { - PPAPI_BEGIN_MESSAGE_MAP(PepperBrokerMessageFilter, msg) - PPAPI_DISPATCH_HOST_RESOURCE_CALL_0(PpapiHostMsg_Broker_IsAllowed, - OnIsAllowed) - PPAPI_END_MESSAGE_MAP() - return PP_ERROR_FAILED; -} - -int32_t PepperBrokerMessageFilter::OnIsAllowed( - ppapi::host::HostMessageContext* context) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - if (!document_url_.is_valid()) - return PP_ERROR_FAILED; - RenderProcessHost* render_process_host = - RenderProcessHost::FromID(render_process_id_); - if (!render_process_host) - return PP_ERROR_FAILED; - Profile* profile = - Profile::FromBrowserContext(render_process_host->GetBrowserContext()); - HostContentSettingsMap* content_settings = - HostContentSettingsMapFactory::GetForProfile(profile); - ContentSetting setting = content_settings->GetContentSetting( - document_url_, document_url_, ContentSettingsType::PPAPI_BROKER, - std::string()); - if (setting == CONTENT_SETTING_ALLOW) - return PP_OK; - return PP_ERROR_FAILED; -}
diff --git a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.h b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.h deleted file mode 100644 index fcff9060..0000000 --- a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.h +++ /dev/null
@@ -1,50 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_BROKER_MESSAGE_FILTER_H_ -#define CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_BROKER_MESSAGE_FILTER_H_ - -#include <stdint.h> - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "ppapi/c/pp_instance.h" -#include "ppapi/host/resource_message_filter.h" -#include "url/gurl.h" - -namespace content { -class BrowserPpapiHost; -} - -namespace ppapi { -namespace host { -struct HostMessageContext; -} -} - -// This filter handles messages for the PepperBrokerHost on the UI thread. -class PepperBrokerMessageFilter : public ppapi::host::ResourceMessageFilter { - public: - PepperBrokerMessageFilter(PP_Instance instance, - content::BrowserPpapiHost* host); - - private: - ~PepperBrokerMessageFilter() override; - - // ppapi::host::ResourceMessageFilter overrides. - scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage( - const IPC::Message& message) override; - int32_t OnResourceMessageReceived( - const IPC::Message& msg, - ppapi::host::HostMessageContext* context) override; - - int32_t OnIsAllowed(ppapi::host::HostMessageContext* context); - - int render_process_id_; - GURL document_url_; - - DISALLOW_COPY_AND_ASSIGN(PepperBrokerMessageFilter); -}; - -#endif // CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_BROKER_MESSAGE_FILTER_H_
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn index 70581e8..788683f 100644 --- a/chrome/browser/resources/BUILD.gn +++ b/chrome/browser/resources/BUILD.gn
@@ -181,19 +181,20 @@ grit_flags = [ "-E", "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir), + "-E", + "root_src_dir=" + rebase_path("//", root_build_dir), ] - if (optimize_webui) { - source = "history/history_resources_vulcanized.grd" - - deps = [ "//chrome/browser/resources/history:build" ] - } else { - source = "history/history_resources.grd" - - deps = [ "//chrome/browser/resources/history:web_components" ] - } - defines = chrome_grit_defines + + # These arguments are needed since the grd is generated at build time. + enable_input_discovery_for_gn_analyze = false + defines += [ "SHARED_INTERMEDIATE_DIR=" + + rebase_path(root_gen_dir, root_build_dir) ] + history_gen_dir = "$root_gen_dir/chrome/browser/resources/history" + source = "$history_gen_dir/history_resources.grd" + deps = [ "//chrome/browser/resources/history:build_grd" ] + outputs = [ "grit/history_resources.h", "grit/history_resources_map.cc",
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_as.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_as.xtb index 4dee3456..171e496e 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_as.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_as.xtb
@@ -68,6 +68,7 @@ <translation id="1383876407941801731">Search</translation> <translation id="1396114365388024581">tablst</translation> <translation id="1405567553485452995">পাতল সেউজীয়া</translation> +<translation id="141454040365657399">পৃষ্ঠাৰ হে’ডাৰ</translation> <translation id="1417889266572670458">সাগৰৰ দৰে নীলা</translation> <translation id="1431911867058218151">প্লাম</translation> <translation id="1439316808600711881">rgn</translation> @@ -348,6 +349,7 @@ <translation id="3549141990712742152"><ph name="TEXT" /> কাট কৰক।</translation> <translation id="3549680091535286226">সাময়িকভাৱে কথন বন্ধ কৰিবলৈ দুটা আঙুলিৰে একেলগে টিপক</translation> <translation id="3564729643041517261">বৰ্তমানৰ ডিছপ্লে’ৰ শৈলীটো হৈছে কাষে-কাষে থকা</translation> +<translation id="3573145950452451508">পৃষ্ঠাৰ ফুটাৰ</translation> <translation id="3587482841069643663">সকলো</translation> <translation id="3589661172894441357">পৰিভাষা</translation> <translation id="3591784666823501596">ৰ'য়েল ব্লু</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_es-419.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_es-419.xtb index e2f336ef..55aeb44 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_es-419.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_es-419.xtb
@@ -68,6 +68,7 @@ <translation id="1383876407941801731">Buscar</translation> <translation id="1396114365388024581">tablst</translation> <translation id="1405567553485452995">Verde claro</translation> +<translation id="141454040365657399">Encabezado</translation> <translation id="1417889266572670458">Azul marino</translation> <translation id="1431911867058218151">Ciruela</translation> <translation id="1439316808600711881">rgn</translation> @@ -348,6 +349,7 @@ <translation id="3549141990712742152">Cortar <ph name="TEXT" /></translation> <translation id="3549680091535286226">Presiona con 2 dedos para silenciar la voz temporalmente</translation> <translation id="3564729643041517261">El estilo actual de la pantalla es lado a lado</translation> +<translation id="3573145950452451508">Pie de página</translation> <translation id="3587482841069643663">Todos</translation> <translation id="3589661172894441357">Glosario</translation> <translation id="3591784666823501596">Azul real</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-CN.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-CN.xtb index 2fa8c81a..337c964 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-CN.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-CN.xtb
@@ -68,6 +68,7 @@ <translation id="1383876407941801731">搜索</translation> <translation id="1396114365388024581">tablst</translation> <translation id="1405567553485452995">浅绿色</translation> +<translation id="141454040365657399">页首</translation> <translation id="1417889266572670458">海军蓝</translation> <translation id="1431911867058218151">梅红色</translation> <translation id="1439316808600711881">区域</translation> @@ -348,6 +349,7 @@ <translation id="3549141990712742152">剪切<ph name="TEXT" />。</translation> <translation id="3549680091535286226">用 2 根手指点按即可暂时关闭语音</translation> <translation id="3564729643041517261">当前的显示样式为并排</translation> +<translation id="3573145950452451508">页脚</translation> <translation id="3587482841069643663">全部</translation> <translation id="3589661172894441357">词汇表</translation> <translation id="3591784666823501596">宝蓝色</translation>
diff --git a/chrome/browser/resources/chromeos/login/components/oobe_dialog.css b/chrome/browser/resources/chromeos/login/components/oobe_dialog.css index ef37594..78a6776a 100644 --- a/chrome/browser/resources/chromeos/login/components/oobe_dialog.css +++ b/chrome/browser/resources/chromeos/login/components/oobe_dialog.css
@@ -56,6 +56,7 @@ #oobe-subtitle .fallback { color: var(--oobe-subheader-text-color); line-height: var(--subtitle-line-height); + overflow-wrap: break-word; margin: 0; }
diff --git a/chrome/browser/resources/chromeos/login/components/oobe_types.js b/chrome/browser/resources/chromeos/login/components/oobe_types.js index 5cfc3e4b..0380a16c 100644 --- a/chrome/browser/resources/chromeos/login/components/oobe_types.js +++ b/chrome/browser/resources/chromeos/login/components/oobe_types.js
@@ -153,3 +153,14 @@ NARROW: 'narrow', WIDE: 'wide', }; + +/** + * Fatal Error Codes from SignInFatalErrorScreen + * @enum {number} + */ +OobeTypes.FatalErrorCode = { + UNKNOWN: 0, + SCRAPED_PASSWORD_VERIFICATION_FAILURE: 1, + INSECURE_CONTENT_BLOCKED: 2, + MISSING_GAIA_INFO: 3, +}; \ No newline at end of file
diff --git a/chrome/browser/resources/chromeos/login/debug/debug.js b/chrome/browser/resources/chromeos/login/debug/debug.js index 013ac641..e321037 100644 --- a/chrome/browser/resources/chromeos/login/debug/debug.js +++ b/chrome/browser/resources/chromeos/login/debug/debug.js
@@ -452,6 +452,31 @@ kind: ScreenKind.ERROR, }, { + id: 'signin-fatal-error', + kind: ScreenKind.ERROR, + states: [ + { + id: 'SCRAPED_PASSWORD_VERIFICATION_FAILURE', + data: { + errorState: 1, + }, + }, + { + id: 'INSECURE_CONTENT_BLOCKED', + data: { + errorState: 2, + url: 'http://example.url/', + }, + }, + { + id: 'MISSING_GAIA_INFO', + data: { + errorState: 3, + }, + }, + ] + }, + { id: 'reset', kind: ScreenKind.OTHER, states: [ @@ -650,6 +675,7 @@ { id: 'encryption-migration', kind: ScreenKind.OTHER, + handledSteps: 'ready,migrating,not-enough-space', states: [ { id: 'ready', @@ -675,23 +701,12 @@ }, }, { - id: 'migration-failed', - trigger: (screen) => { - screen.setUIState(3); - }, - }, - { id: 'not-enough-space', trigger: (screen) => { screen.setUIState(4); - screen.setAvailableSpaceInString('1 GB'); - screen.setNecessarySpaceInString('2 GB'); - }, - }, - { - id: 'migrating-minimal', - trigger: (screen) => { - screen.setUIState(5); + screen.setSpaceInfoInString( + '1 GB' /* availableSpaceSize */, + '2 GB' /* necessarySpaceSize */); }, }, ], @@ -898,6 +913,20 @@ { id: 'marketing-opt-in', kind: ScreenKind.NORMAL, + states: [ + { + id: 'WithOptionToSubscribe', + trigger: (screen) => { + screen.setOptInVisibility(true); + }, + }, + { + id: 'NoOptionToSubscribe', + trigger: (screen) => { + screen.setOptInVisibility(false); + }, + }, + ], }, ];
diff --git a/chrome/browser/resources/chromeos/login/encryption_migration.js b/chrome/browser/resources/chromeos/login/encryption_migration.js index 009e0e6..ec888bdf 100644 --- a/chrome/browser/resources/chromeos/login/encryption_migration.js +++ b/chrome/browser/resources/chromeos/login/encryption_migration.js
@@ -9,7 +9,7 @@ /** * Enum for the UI states corresponding to sub steps inside migration screen. * These values must be kept in sync with - * EncryptionMigrationScreenHandler::UIState in C++ code and the order of the + * EncryptionMigrationScreenView::UIState in C++ code and the order of the * enum must be the same. * @enum {string} */ @@ -38,8 +38,7 @@ 'setIsResuming', 'setBatteryState', 'setNecessaryBatteryPercent', - 'setAvailableSpaceInString', - 'setNecessarySpaceInString', + 'setSpaceInfoInString', ], properties: { @@ -166,19 +165,14 @@ }, /** - * Updates the string representation of available space size. - * @param {string} space + * Updates the string representation of available space size and necessary + * space size. + * @param {string} availableSpaceSize + * @param {string} necessarySpaceSize */ - setAvailableSpaceInString(space) { - this.availableSpaceInString = space; - }, - - /** - * Updates the string representation of necessary space size. - * @param {string} space - */ - setNecessarySpaceInString(space) { - this.necessarySpaceInString = space; + setSpaceInfoInString(availableSpaceSize, necessarySpaceSize) { + this.availableSpaceInString = availableSpaceSize; + this.necessarySpaceInString = necessarySpaceSize; }, /** @@ -276,7 +270,7 @@ onUpgrade_() { // TODO(crbug.com/1133705) Move the logic from handler to screen object and // use userActed call. - chrome.send('startMigration'); + this.userActed('startMigration'); }, /** @@ -285,7 +279,7 @@ */ onSkip_() { this.isSkipped = true; - chrome.send('skipMigration'); + this.userActed('skipMigration'); }, /** @@ -293,7 +287,7 @@ * @private */ onRestartOnLowStorage_() { - chrome.send('requestRestartOnLowStorage'); + this.userActed('requestRestartOnLowStorage'); }, /** @@ -301,7 +295,7 @@ * @private */ onRestartOnFailure_() { - chrome.send('requestRestartOnFailure'); + this.userActed('requestRestartOnFailure'); }, /** @@ -309,6 +303,6 @@ * @private */ onReportAnIssue_() { - chrome.send('openFeedbackDialog'); + this.userActed('openFeedbackDialog'); }, });
diff --git a/chrome/browser/resources/chromeos/login/marketing_opt_in.html b/chrome/browser/resources/chromeos/login/marketing_opt_in.html index 7c1daa9..417dad073 100644 --- a/chrome/browser/resources/chromeos/login/marketing_opt_in.html +++ b/chrome/browser/resources/chromeos/login/marketing_opt_in.html
@@ -33,17 +33,18 @@ <oobe-dialog id="marketingOptInOverviewDialog" role="dialog" has-buttons hidden="[[isAccessibilitySettingsShown_]]" title-key="marketingOptInScreenTitle" - aria-label$="[[i18nDynamic(locale, 'marketingOptInScreenTitle')]]"> + aria-label$="[[i18nDynamic(locale, 'marketingOptInScreenTitle')]]" + aria-describedby="marketing-opt-in-subtitle"> <hd-iron-icon slot="oobe-icon" icon1x="oobe-32:checkmark" icon2x="oobe-32:checkmark"> </hd-iron-icon> - <div slot="subtitle" id="marketing-opt-in-subtitle" - hidden="[[!marketingOptInVisible_]]"> - [[i18nDynamic(locale, 'marketingOptInScreenSubtitle')]] - </div> - <div slot="subtitle" id="marketing-opt-in-subtitle" - hidden="[[marketingOptInVisible_]]"> - [[i18nDynamic(locale, 'marketingOptInScreenSubtitleWithDeviceName')]] + <div slot="subtitle" id="marketing-opt-in-subtitle"> + <div hidden="[[!marketingOptInVisible_]]"> + [[i18nDynamic(locale, 'marketingOptInScreenSubtitle')]] + </div> + <div hidden="[[marketingOptInVisible_]]"> + [[i18nDynamic(locale, 'marketingOptInScreenSubtitleWithDeviceName')]] + </div> </div> <div slot="footer" class="layout vertical flex"> <div class="marketing-option layout horizontal center" @@ -51,11 +52,11 @@ id="marketing-opt-in-toggle"> <hd-iron-icon icon1x="oobe-32:chromebook" icon2x="oobe-64:chromebook"> </hd-iron-icon> - <div id="chromebookUpdatesOptionLabel" class="flex"> + <div id="chromebookUpdatesOptionLabel" class="flex" aria-hidden="true"> [[i18nDynamic(locale, 'marketingOptInGetChromebookUpdates')]] </div> <cr-toggle id="chromebookUpdatesOption" checked - aria-labelledby="chromebookUpdatesOption"> + aria-labelledby="chromebookUpdatesOptionLabel"> </cr-toggle> </div> <div class="marketing-animation-container">
diff --git a/chrome/browser/resources/chromeos/login/marketing_opt_in.js b/chrome/browser/resources/chromeos/login/marketing_opt_in.js index c1dc0e9..df4889b 100644 --- a/chrome/browser/resources/chromeos/login/marketing_opt_in.js +++ b/chrome/browser/resources/chromeos/login/marketing_opt_in.js
@@ -70,6 +70,13 @@ }, /** + * Returns the control which should receive initial focus. + */ + get defaultControl() { + return this.$.marketingOptInOverviewDialog; + }, + + /** * This is 'on-tap' event handler for 'AcceptAndContinue/Next' buttons. * @private */
diff --git a/chrome/browser/resources/chromeos/login/md_login.html b/chrome/browser/resources/chromeos/login/md_login.html index 1161b047..c6346d5 100644 --- a/chrome/browser/resources/chromeos/login/md_login.html +++ b/chrome/browser/resources/chromeos/login/md_login.html
@@ -56,7 +56,6 @@ <link rel="stylesheet" href="oobe_screen_auto_enrollment_check.css"> <link rel="stylesheet" href="screen_app_launch_splash.css"> <link rel="stylesheet" href="screen_error_message.css"> -<link rel="stylesheet" href="screen_fatal_error.css"> <script src="chrome://oobe/keyboard_utils.js"></script> <script src="chrome://oobe/login.js"></script>
diff --git a/chrome/browser/resources/chromeos/login/md_login.js b/chrome/browser/resources/chromeos/login/md_login.js index 834c6b5c..0b60364 100644 --- a/chrome/browser/resources/chromeos/login/md_login.js +++ b/chrome/browser/resources/chromeos/login/md_login.js
@@ -25,7 +25,6 @@ // <include src="screen_app_launch_splash.js"> // <include src="screen_arc_terms_of_service.js"> // <include src="screen_error_message.js"> -// <include src="screen_fatal_error.js"> // <include src="screen_discover.js"> // <include src="screen_multidevice_setup.js"> @@ -55,7 +54,6 @@ login.ErrorMessageScreen.register(); login.ArcTermsOfServiceScreen.register(); login.AppLaunchSplashScreen.register(); - login.FatalErrorScreen.register(); login.DiscoverScreen.register(); login.MultiDeviceSetupScreen.register();
diff --git a/chrome/browser/resources/chromeos/login/oobe.html b/chrome/browser/resources/chromeos/login/oobe.html index 0e2c7af4..27f124b 100644 --- a/chrome/browser/resources/chromeos/login/oobe.html +++ b/chrome/browser/resources/chromeos/login/oobe.html
@@ -62,7 +62,6 @@ <link rel="stylesheet" href="screen_app_launch_splash.css"> <link rel="stylesheet" href="screen_error_message.css"> -<link rel="stylesheet" href="screen_fatal_error.css"> <script src="chrome://oobe/keyboard_utils.js"></script>
diff --git a/chrome/browser/resources/chromeos/login/oobe.js b/chrome/browser/resources/chromeos/login/oobe.js index 1a7ae608..d78387b 100644 --- a/chrome/browser/resources/chromeos/login/oobe.js +++ b/chrome/browser/resources/chromeos/login/oobe.js
@@ -26,7 +26,6 @@ // <include src="screen_app_launch_splash.js"> // <include src="screen_arc_terms_of_service.js"> // <include src="screen_error_message.js"> -// <include src="screen_fatal_error.js"> // <include src="screen_discover.js"> // <include src="screen_multidevice_setup.js"> @@ -51,7 +50,6 @@ login.ErrorMessageScreen.register(); login.ArcTermsOfServiceScreen.register(); login.AppLaunchSplashScreen.register(); - login.FatalErrorScreen.register(); login.DiscoverScreen.register(); login.MultiDeviceSetupScreen.register();
diff --git a/chrome/browser/resources/chromeos/login/screen_fatal_error.css b/chrome/browser/resources/chromeos/login/screen_fatal_error.css deleted file mode 100644 index 887ee2d..0000000 --- a/chrome/browser/resources/chromeos/login/screen_fatal_error.css +++ /dev/null
@@ -1,17 +0,0 @@ -/* Copyright 2014 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. */ - -#fatal-error { - height: 528px; /* Should be the same as #gaia-signin. */ - width: 448px; /* Should be the same as #gaia-signin. */ -} - -#fatal-error-card { - bottom: 0; - display: block; - left: 0; - position: absolute; - right: 0; - top: 0; -}
diff --git a/chrome/browser/resources/chromeos/login/screen_fatal_error.html b/chrome/browser/resources/chromeos/login/screen_fatal_error.html deleted file mode 100644 index 56892a01..0000000 --- a/chrome/browser/resources/chromeos/login/screen_fatal_error.html +++ /dev/null
@@ -1,6 +0,0 @@ -<link rel="import" href="chrome://oobe/custom_elements.html"> - -<div id="fatal-error" class="step hidden" hidden> - <notification-card id="fatal-error-card" type="fail"></notification-card> -</div> -
diff --git a/chrome/browser/resources/chromeos/login/screen_fatal_error.js b/chrome/browser/resources/chromeos/login/screen_fatal_error.js deleted file mode 100644 index 968a69c..0000000 --- a/chrome/browser/resources/chromeos/login/screen_fatal_error.js +++ /dev/null
@@ -1,56 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/** - * @fileoverview A simple message box screen implementation. - */ - -login.createScreen('FatalErrorScreen', 'fatal-error', function() { - return { - EXTERNAL_API: ['show'], - - /** - * Callback to run when the screen is dismissed. - * @type {function()} - */ - callback_: null, - - /** - * Saved UI states to restore when this screen hides. - * @type {Object} - */ - savedUIStates_: {}, - - /** @override */ - decorate() { - $('fatal-error-card') - .addEventListener('buttonclick', this.onDismiss_.bind(this)); - }, - - /** @override */ - get defaultControl() { - return $('fatal-error-card').submitButton; - }, - - /** - * Invoked when user clicks on the ok button. - */ - onDismiss_() { - this.callback_(); - }, - - /** - * Shows the fatal error string screen. - * @param {string} message The error message to show. - * @param {function()} callback The callback to be invoked when the - * screen is dismissed. - */ - show(message, buttonLabel, callback) { - $('fatal-error-card').textContent = message; - $('fatal-error-card').buttonLabel = buttonLabel; - this.callback_ = callback; - Oobe.showScreen({id: SCREEN_FATAL_ERROR}); - } - }; -});
diff --git a/chrome/browser/resources/chromeos/login/screen_gaia_signin.js b/chrome/browser/resources/chromeos/login/screen_gaia_signin.js index cb525b1..6781442 100644 --- a/chrome/browser/resources/chromeos/login/screen_gaia_signin.js +++ b/chrome/browser/resources/chromeos/login/screen_gaia_signin.js
@@ -1080,8 +1080,7 @@ } else { chrome.send('scrapedPasswordVerificationFailed'); this.showFatalAuthError_( - loadTimeData.getString('fatalErrorMessageVerificationFailed'), - loadTimeData.getString('fatalErrorTryAgainButton')); + OobeTypes.FatalErrorCode.SCRAPED_PASSWORD_VERIFICATION_FAILURE); } }, @@ -1145,18 +1144,17 @@ */ onInsecureContentBlocked_(url) { this.showFatalAuthError_( - loadTimeData.getStringF('fatalErrorMessageInsecureURL', url), - loadTimeData.getString('fatalErrorDoneButton')); + OobeTypes.FatalErrorCode.INSECURE_CONTENT_BLOCKED, {'url': url}); }, /** * Shows the fatal auth error. - * @param {string} message The error message to show. - * @param {string} buttonLabel The label to display on dismiss button. + * @param {OobeTypes.FatalErrorCode} error_code The error code + * @param {string} info Additional info * @private */ - showFatalAuthError_(message, buttonLabel) { - login.FatalErrorScreen.show(message, buttonLabel, Oobe.showSigninUI); + showFatalAuthError_(error_code, info) { + chrome.send('onFatalError', [error_code, info || {}]); }, /** @@ -1164,9 +1162,7 @@ * @private */ missingGaiaInfo_() { - this.showFatalAuthError_( - loadTimeData.getString('fatalErrorMessageNoAccountDetails'), - loadTimeData.getString('fatalErrorTryAgainButton')); + this.showFatalAuthError_(OobeTypes.FatalErrorCode.MISSING_GAIA_INFO); }, /**
diff --git a/chrome/browser/resources/chromeos/login/screen_signin_fatal_error.html b/chrome/browser/resources/chromeos/login/screen_signin_fatal_error.html new file mode 100644 index 0000000..d174bd9 --- /dev/null +++ b/chrome/browser/resources/chromeos/login/screen_signin_fatal_error.html
@@ -0,0 +1,22 @@ +<!-- Copyright 2020 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. --> + +<dom-module id="signin-fatal-error"> + <template> + <style include="oobe-dialog-host"> + </style> + <oobe-dialog id="signinFatalErrorDialog" role="dialog" has-buttons + title-key="errorGenericFatalErrorTitle"> + <hd-iron-icon slot="oobe-icon" + icon1x="oobe-32:alert" icon2x="oobe-64:alert"> + </hd-iron-icon> + <div id="subtitle" slot="subtitle">[[errorSubtitle_]]</div> + <div slot="bottom-buttons" class="layout horizontal end-justified"> + <oobe-text-button id="actionButton" inverse + text-key="[[computeButtonKey_(errorState_)]]" on-tap="onClick_"> + </oobe-text-button> + </div> + </oobe-dialog> + </template> +</dom-module> \ No newline at end of file
diff --git a/chrome/browser/resources/chromeos/login/screen_signin_fatal_error.js b/chrome/browser/resources/chromeos/login/screen_signin_fatal_error.js new file mode 100644 index 0000000..6d1f91e --- /dev/null +++ b/chrome/browser/resources/chromeos/login/screen_signin_fatal_error.js
@@ -0,0 +1,96 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +Polymer({ + is: 'signin-fatal-error', + + behaviors: [OobeI18nBehavior, OobeDialogHostBehavior, LoginScreenBehavior], + + properties: { + /** + * Subtitle that will be shown to the user describing the error + * @private + */ + errorSubtitle_: { + type: String, + computed: 'computeSubtitle_(locale, errorState_, params_)' + }, + + /** + * Error state from the screen + * @private + */ + errorState_: { + type: Number, + value: 0, + }, + + /** + * Additional information that will be used when creating the subtitle. + * @private + */ + params_: { + type: Object, + value: {}, + }, + }, + + ready() { + this.initializeLoginScreen('SignInFatalErrorScreen', { + resetAllowed: true, + }); + }, + + onClick_() { + this.userActed('screen-dismissed'); + }, + + // Invoked just before being shown. Contains all the data for the screen. + onBeforeShow(data) { + this.errorState_ = data && 'errorState' in data && data.errorState; + this.params_ = data; + }, + + /** + * Generates the key for the button that is shown to the + * user based on the error + * @param {number} error_state + * @private + */ + computeButtonKey_(error_state) { + if (this.errorState_ == OobeTypes.FatalErrorCode.INSECURE_CONTENT_BLOCKED) { + return 'fatalErrorDoneButton'; + } + + return 'fatalErrorTryAgainButton'; + }, + + /** + * Generates the subtitle that is shown to the + * user based on the error + * @param {string} locale + * @param {number} error_state + * @param {string} params + * @private + */ + computeSubtitle_(locale, error_state, params) { + switch (this.errorState_) { + case OobeTypes.FatalErrorCode.SCRAPED_PASSWORD_VERIFICATION_FAILURE: + return this.i18n('fatalErrorMessageVerificationFailed'); + case OobeTypes.FatalErrorCode.MISSING_GAIA_INFO: + return this.i18n('fatalErrorMessageNoAccountDetails'); + case OobeTypes.FatalErrorCode.INSECURE_CONTENT_BLOCKED: + return this.i18n( + 'fatalErrorMessageInsecureURL', + 'url' in this.params_ && this.params_.url); + case OobeTypes.FatalErrorCode.UNKNOWN: + return ''; + } + }, + + get defaultControl() { + return this.$.actionButton; + }, + +}); \ No newline at end of file
diff --git a/chrome/browser/resources/chromeos/login/structure/components_common.html b/chrome/browser/resources/chromeos/login/structure/components_common.html index 36e08444..6523a5b 100644 --- a/chrome/browser/resources/chromeos/login/structure/components_common.html +++ b/chrome/browser/resources/chromeos/login/structure/components_common.html
@@ -53,6 +53,7 @@ <include src="../screen_wrong_hwid.html"> <include src="../family_link_notice.html"> <include src="../user_creation.html"> +<include src="../screen_signin_fatal_error.html"> <include src="components_[OOBE].html">
diff --git a/chrome/browser/resources/chromeos/login/structure/components_common.js b/chrome/browser/resources/chromeos/login/structure/components_common.js index 9157aa2..427f2aca 100644 --- a/chrome/browser/resources/chromeos/login/structure/components_common.js +++ b/chrome/browser/resources/chromeos/login/structure/components_common.js
@@ -52,5 +52,6 @@ // <include src="../screen_wrong_hwid.js"> // <include src="../family_link_notice.js"> // <include src="../user_creation.js"> +// <include src="../screen_signin_fatal_error.js"> // <include src="components_[OOBE].js">
diff --git a/chrome/browser/resources/chromeos/login/structure/screens_common.html b/chrome/browser/resources/chromeos/login/structure/screens_common.html index dba1e96e..934c0466 100644 --- a/chrome/browser/resources/chromeos/login/structure/screens_common.html +++ b/chrome/browser/resources/chromeos/login/structure/screens_common.html
@@ -24,7 +24,8 @@ <include src="../screen_app_launch_splash.html"> <saml-confirm-password id="saml-confirm-password" class="step hidden" hidden> </saml-confirm-password> -<include src="../screen_fatal_error.html"> +<signin-fatal-error id="signin-fatal-error" class="step faded hidden"> +</signin-fatal-error> <device-disabled id="device-disabled" class="step hidden"> </device-disabled> <sync-consent id="sync-consent" class="step hidden" hidden></sync-consent>
diff --git a/chrome/browser/resources/history/BUILD.gn b/chrome/browser/resources/history/BUILD.gn index a461b0f0c..f1f8dd6 100644 --- a/chrome/browser/resources/history/BUILD.gn +++ b/chrome/browser/resources/history/BUILD.gn
@@ -6,10 +6,15 @@ import("//third_party/closure_compiler/compile_js.gni") import("//tools/grit/preprocess_grit.gni") import("//tools/polymer/html_to_js.gni") +import("//ui/webui/resources/tools/generate_grd.gni") import("../optimize_webui.gni") +preprocess_folder = "preprocessed" +preprocess_manifest = "preprocessed_manifest.json" +preprocess_gen_manifest = "preprocessed_gen_manifest.json" + if (optimize_webui) { - preprocess_folder = "preprocess" + build_manifest = "build_manifest.json" optimize_webui("build") { host = "history" @@ -23,6 +28,7 @@ "lazy_load.rollup.js", "shared.rollup.js", ] + out_manifest = "$target_gen_dir/$build_manifest" deps = [ ":preprocess", @@ -31,38 +37,65 @@ ] excludes = [ "chrome://resources/js/cr.m.js" ] } +} - preprocess_grit("preprocess") { - in_folder = "./" - out_folder = "$target_gen_dir/$preprocess_folder" - in_files = [ - "browser_service.js", - "constants.js", - "externs.js", - "history.js", - "lazy_load.js", - "query_manager.js", - "searched_label.js", +generate_grd("build_grd") { + grd_prefix = "history" + out_grd = "$target_gen_dir/${grd_prefix}_resources.grd" + input_files = [ + "history.html", + "images/sign_in_promo_dark.svg", + "images/sign_in_promo.svg", + ] + input_files_base_dir = rebase_path(".", "//") + + if (optimize_webui) { + deps = [ ":build" ] + manifest_files = [ "$target_gen_dir/$build_manifest" ] + } else { + deps = [ + ":preprocess", + ":preprocess_generated", + ] + manifest_files = [ + "$target_gen_dir/$preprocess_manifest", + "$target_gen_dir/$preprocess_gen_manifest", ] } +} - preprocess_grit("preprocess_generated") { - deps = [ ":web_components" ] - in_folder = target_gen_dir - out_folder = "$target_gen_dir/$preprocess_folder" - in_files = [ - "app.js", - "history_item.js", - "history_list.js", - "history_toolbar.js", - "router.js", - "shared_style.js", - "shared_vars.js", - "side_bar.js", - "synced_device_card.js", - "synced_device_manager.js", - ] - } +preprocess_grit("preprocess") { + in_folder = "./" + out_folder = "$target_gen_dir/$preprocess_folder" + out_manifest = "$target_gen_dir/$preprocess_manifest" + in_files = [ + "browser_service.js", + "constants.js", + "externs.js", + "history.js", + "lazy_load.js", + "query_manager.js", + "searched_label.js", + ] +} + +preprocess_grit("preprocess_generated") { + deps = [ ":web_components" ] + in_folder = target_gen_dir + out_folder = "$target_gen_dir/$preprocess_folder" + out_manifest = "$target_gen_dir/$preprocess_gen_manifest" + in_files = [ + "app.js", + "history_item.js", + "history_list.js", + "history_toolbar.js", + "router.js", + "shared_style.js", + "shared_vars.js", + "side_bar.js", + "synced_device_card.js", + "synced_device_manager.js", + ] } js_type_check("closure_compile") {
diff --git a/chrome/browser/resources/history/app.html b/chrome/browser/resources/history/app.html index 0afd8eb..3b859060 100644 --- a/chrome/browser/resources/history/app.html +++ b/chrome/browser/resources/history/app.html
@@ -47,7 +47,6 @@ query-info="[[queryResult_.info]]" querying="[[queryState_.querying]]" search-term="[[queryState_.searchTerm]]" - show-menu-promo="[[showMenuPromo_]]" spinner-active="[[shouldShowSpinner_(queryState_.querying, queryState_.incremental, queryState_.searchTerm)]]">
diff --git a/chrome/browser/resources/history/app.js b/chrome/browser/resources/history/app.js index 204a99c..432c070 100644 --- a/chrome/browser/resources/history/app.js +++ b/chrome/browser/resources/history/app.js
@@ -141,13 +141,6 @@ notify: true, }, - showMenuPromo_: { - type: Boolean, - value() { - return loadTimeData.getBoolean('showMenuPromo'); - }, - }, - /** @type {!QueryState} */ queryState_: Object, @@ -170,8 +163,6 @@ }, listeners: { - 'cr-toolbar-menu-promo-close': 'onCrToolbarMenuPromoClose_', - 'cr-toolbar-menu-promo-shown': 'onCrToolbarMenuPromoShown_', 'cr-toolbar-menu-tap': 'onCrToolbarMenuTap_', 'delete-selected': 'deleteSelected', 'history-checkbox-select': 'checkboxSelected', @@ -249,20 +240,9 @@ }, /** @private */ - onCrToolbarMenuPromoClose_() { - this.showMenuPromo_ = false; - }, - - /** @private */ - onCrToolbarMenuPromoShown_() { - this.browserService_.menuPromoShown(); - }, - - /** @private */ onCrToolbarMenuTap_() { const drawer = /** @type {!CrDrawerElement} */ (this.$.drawer.get()); drawer.toggle(); - this.showMenuPromo_ = false; }, /**
diff --git a/chrome/browser/resources/history/browser_service.js b/chrome/browser/resources/history/browser_service.js index f02be099..406c9865 100644 --- a/chrome/browser/resources/history/browser_service.js +++ b/chrome/browser/resources/history/browser_service.js
@@ -86,10 +86,6 @@ chrome.send('metricsHandler:recordTime', [histogram, time]); } - menuPromoShown() { - chrome.send('menuPromoShown'); - } - /** * @param {string} url * @param {string} target @@ -126,4 +122,3 @@ } addSingletonGetter(BrowserService); -
diff --git a/chrome/browser/resources/history/history_resources.grd b/chrome/browser/resources/history/history_resources.grd deleted file mode 100644 index 3268ac6..0000000 --- a/chrome/browser/resources/history/history_resources.grd +++ /dev/null
@@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<grit latest_public_release="0" current_release="1" output_all_resource_defines="false"> - <outputs> - <output filename="grit/history_resources.h" type="rc_header"> - <emit emit_type='prepend'></emit> - </output> - <output filename="grit/history_resources_map.cc" - type="resource_file_map_source" /> - <output filename="grit/history_resources_map.h" - type="resource_map_header" /> - <output filename="history_resources.pak" type="data_package" /> - </outputs> - <release seq="1"> - <includes> - <!-- Generated Polymer 3 elements --> - <include name="IDR_HISTORY_APP_JS" - file="${root_gen_dir}/chrome/browser/resources/history/app.js" - use_base_dir="false" type="BINDATA" preprocess="true" /> - <include name="IDR_HISTORY_HISTORY_ITEM_JS" - file="${root_gen_dir}/chrome/browser/resources/history/history_item.js" - use_base_dir="false" type="BINDATA" /> - <include name="IDR_HISTORY_HISTORY_LIST_JS" - file="${root_gen_dir}/chrome/browser/resources/history/history_list.js" - use_base_dir="false" type="BINDATA" /> - <include name="IDR_HISTORY_HISTORY_TOOLBAR_JS" - file="${root_gen_dir}/chrome/browser/resources/history/history_toolbar.js" - use_base_dir="false" type="BINDATA" /> - <include name="IDR_HISTORY_ROUTER_JS" - file="${root_gen_dir}/chrome/browser/resources/history/router.js" - use_base_dir="false" type="BINDATA" /> - <include name="IDR_HISTORY_SHARED_STYLE_JS" - file="${root_gen_dir}/chrome/browser/resources/history/shared_style.js" - use_base_dir="false" type="BINDATA" /> - <include name="IDR_HISTORY_SHARED_VARS_JS" - file="${root_gen_dir}/chrome/browser/resources/history/shared_vars.js" - use_base_dir="false" type="BINDATA" /> - <include name="IDR_HISTORY_SIDE_BAR_JS" - file="${root_gen_dir}/chrome/browser/resources/history/side_bar.js" - use_base_dir="false" type="BINDATA" /> - <include name="IDR_HISTORY_SYNCED_DEVICE_CARD_JS" - file="${root_gen_dir}/chrome/browser/resources/history/synced_device_card.js" - use_base_dir="false" type="BINDATA" /> - <include name="IDR_HISTORY_SYNCED_DEVICE_MANAGER_JS" - file="${root_gen_dir}/chrome/browser/resources/history/synced_device_manager.js" - use_base_dir="false" type="BINDATA" /> - - <include name="IDR_HISTORY_CONSTANTS_JS" - file="constants.js" - type="BINDATA" /> - <include name="IDR_HISTORY_EXTERNS_JS" - file="externs.js" - type="BINDATA" /> - <include name="IDR_HISTORY_HISTORY_HTML" - file="history.html" - preprocess="true" - type="BINDATA" /> - <include name="IDR_HISTORY_HISTORY_JS" - file="history.js" - type="BINDATA" /> - <include name="IDR_HISTORY_IMAGES_SIGN_IN_PROMO_DARK_SVG" - file="images\sign_in_promo_dark.svg" - type="BINDATA" /> - <include name="IDR_HISTORY_IMAGES_SIGN_IN_PROMO_SVG" - file="images\sign_in_promo.svg" - type="BINDATA" /> - <include name="IDR_HISTORY_BROWSER_SERVICE_JS" - file="browser_service.js" - type="BINDATA" /> - <include name="IDR_HISTORY_LAZY_LOAD_JS" - file="lazy_load.js" - type="BINDATA" /> - <include name="IDR_HISTORY_QUERY_MANAGER_JS" - file="query_manager.js" - type="BINDATA" /> - <include name="IDR_HISTORY_SEARCHED_LABEL_JS" - file="searched_label.js" - type="BINDATA" /> - </includes> - </release> -</grit>
diff --git a/chrome/browser/resources/history/history_resources_vulcanized.grd b/chrome/browser/resources/history/history_resources_vulcanized.grd deleted file mode 100644 index 22cb4a6..0000000 --- a/chrome/browser/resources/history/history_resources_vulcanized.grd +++ /dev/null
@@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<grit latest_public_release="0" current_release="1" output_all_resource_defines="false"> - <outputs> - <output filename="grit/history_resources.h" type="rc_header"> - <emit emit_type='prepend'></emit> - </output> - <output filename="grit/history_resources_map.cc" - type="resource_map_source" /> - <output filename="grit/history_resources_map.h" - type="resource_map_header" /> - <output filename="history_resources.pak" type="data_package" /> - </outputs> - <release seq="1"> - <includes> - <include name="IDR_HISTORY_HISTORY_HTML" - file="history.html" - preprocess="true" - type="BINDATA" /> - <include name="IDR_HISTORY_IMAGES_SIGN_IN_PROMO_DARK_SVG" - file="images\sign_in_promo_dark.svg" - type="BINDATA" /> - <include name="IDR_HISTORY_IMAGES_SIGN_IN_PROMO_SVG" - file="images\sign_in_promo.svg" - type="BINDATA" /> - <include name="IDR_HISTORY_HISTORY_ROLLUP_JS" - file="${root_gen_dir}\chrome\browser\resources\history\history.rollup.js" - type="BINDATA" - use_base_dir="false" /> - <include name="IDR_HISTORY_LAZY_LOAD_ROLLUP_JS" - file="${root_gen_dir}\chrome\browser\resources\history\lazy_load.rollup.js" - type="BINDATA" - use_base_dir="false" /> - <include name="IDR_HISTORY_SHARED_ROLLUP_JS" - file="${root_gen_dir}\chrome\browser\resources\history\shared.rollup.js" - type="BINDATA" - use_base_dir="false" /> - </includes> - </release> -</grit>
diff --git a/chrome/browser/resources/history/history_toolbar.html b/chrome/browser/resources/history/history_toolbar.html index 96cc750..3c0a5f2 100644 --- a/chrome/browser/resources/history/history_toolbar.html +++ b/chrome/browser/resources/history/history_toolbar.html
@@ -34,10 +34,7 @@ spinner-active="[[spinnerActive]]" autofocus show-menu="[[hasDrawer]]" - show-menu-promo="[[canShowMenuPromo_(showMenuPromo)]]" menu-label="$i18n{historyMenuButton}" - menu-promo="$i18n{menuPromo}" - close-menu-promo="$i18n{closeMenuPromo}" on-search-changed="onSearchChanged_"> </cr-toolbar> <cr-toolbar-selection-overlay show="[[itemsSelected_]]"
diff --git a/chrome/browser/resources/pdf/controller.js b/chrome/browser/resources/pdf/controller.js index f063c50..35c4a85 100644 --- a/chrome/browser/resources/pdf/controller.js +++ b/chrome/browser/resources/pdf/controller.js
@@ -62,7 +62,7 @@ .join(''); } -/** @abstract */ +/** @interface */ export class ContentController { constructor() {} @@ -72,22 +72,14 @@ viewportChanged() {} - /** @abstract */ rotateClockwise() {} - /** @abstract */ rotateCounterclockwise() {} - /** - * @param {boolean} displayAnnotations - * @abstract - */ + /** @param {boolean} displayAnnotations */ setDisplayAnnotations(displayAnnotations) {} - /** - * @param {boolean} enableTwoUpView - * @abstract - */ + /** @param {boolean} enableTwoUpView */ setTwoUpView(enableTwoUpView) {} /** Triggers printing of the current document. */ @@ -104,8 +96,7 @@ * @param {!SaveRequestType} requestType The type of save request. If * ANNOTATION, a response is required, otherwise the controller may save * the document to disk internally. - * @return {Promise<{fileName: string, dataToSave: ArrayBuffer}>} - * @abstract + * @return {!Promise<!{fileName: string, dataToSave: !ArrayBuffer}>} */ save(requestType) {} @@ -121,22 +112,21 @@ * Loads PDF document from `data` activates UI. * @param {string} fileName * @param {!ArrayBuffer} data - * @return {Promise<void>} - * @abstract + * @return {!Promise<void>} */ load(fileName, data) {} - /** - * Unloads the current document and removes the UI. - * @abstract - */ + /** Unloads the current document and removes the UI. */ unload() {} } -// PDF plugin controller, responsible for communicating with the embedded plugin -// element. Dispatches a 'plugin-message' event containing the message from the -// plugin, if a message type not handled by this controller is received. -export class PluginController extends ContentController { +/** + * PDF plugin controller, responsible for communicating with the embedded plugin + * element. Dispatches a 'plugin-message' event containing the message from the + * plugin, if a message type not handled by this controller is received. + * @implements {ContentController} + */ +export class PluginController { /** * @param {!HTMLEmbedElement} plugin * @param {!Viewport} viewport @@ -144,8 +134,6 @@ * @param {function():?Promise} getLoadedCallback */ constructor(plugin, viewport, getIsUserInitiatedCallback, getLoadedCallback) { - super(); - /** @private {!HTMLEmbedElement} */ this.plugin_ = plugin; @@ -197,6 +185,12 @@ this.postMessage_({type: 'updateScroll', x, y}); } + viewportChanged() {} + + redo() {} + + undo() {} + /** * Notify the plugin to stop reacting to scroll events while zoom is taking * place to avoid flickering.
diff --git a/chrome/browser/resources/pdf/ink_controller.js b/chrome/browser/resources/pdf/ink_controller.js index b880cec..7331bb0 100644 --- a/chrome/browser/resources/pdf/ink_controller.js +++ b/chrome/browser/resources/pdf/ink_controller.js
@@ -24,20 +24,21 @@ */ let ViewerInkHostElement; -// Controller for annotation mode, on Chrome OS only. Fires the following events -// from its event target: -// has-unsaved-changes: Fired to indicate there are ink annotations that have -// not been saved. -// set-annotation-undo-state: Contains information about whether undo or redo -// options are available. -export class InkController extends ContentController { +/** + * Controller for annotation mode, on Chrome OS only. Fires the following events + * from its event target: + * has-unsaved-changes: Fired to indicate there are ink annotations that have + * not been saved. + * set-annotation-undo-state: Contains information about whether undo or redo + * options are available. + * @implements {ContentController} + */ +export class InkController { /** * @param {!Viewport} viewport * @param {!HTMLDivElement} contentElement */ constructor(viewport, contentElement) { - super(); - /** @private {!Viewport} */ this.viewport_ = viewport; @@ -67,6 +68,12 @@ } } + beforeZoom() {} + + afterZoom() {} + + print() {} + /** @override */ rotateClockwise() { // TODO(dstockwell): implement rotation
diff --git a/chrome/browser/resources/settings/autofill_page/password_check.html b/chrome/browser/resources/settings/autofill_page/password_check.html index ded38a97..8205c9f 100644 --- a/chrome/browser/resources/settings/autofill_page/password_check.html +++ b/chrome/browser/resources/settings/autofill_page/password_check.html
@@ -119,21 +119,19 @@ $i18n{compromisedPasswordsDescription} </div> </div> - <div class="list-frame first"> - <iron-list id="leakedPasswordList" items="[[leakedPasswords]]"> - <template> - <password-check-list-item item="[[item]]" - on-more-actions-click="onMoreActionsClick_" - clicked-change-password= - "[[clickedChangePassword_(item, clickedChangePasswordIds_.size)]]" - on-change-password-clicked="onChangePasswordClick_" + <div id="leakedPasswordList" class="list-frame first"> + <template is="dom-repeat" items="[[leakedPasswords]]"> + <password-check-list-item item="[[item]]" + on-more-actions-click="onMoreActionsClick_" + clicked-change-password= + "[[clickedChangePassword_(item, clickedChangePasswordIds_.size)]]" + on-change-password-clicked="onChangePasswordClick_" <if expr="chromeos"> - token-request-manager="[[tokenRequestManager_]]" + token-request-manager="[[tokenRequestManager_]]" </if> - on-already-changed-password-click="onAlreadyChangedClick_"> - </password-check-list-item> - </template> - </iron-list> + on-already-changed-password-click="onAlreadyChangedClick_"> + </password-check-list-item> + </template> </div> <div class="list-frame vertical-list"> <div class="list-item secondary" hidden$="[[!isSignedOut_]]" @@ -154,21 +152,19 @@ inner-h-t-m-l="[[getWeakPasswordsHelpText_(isSyncingPasswords_)]]"> </div> </div> - <div class="list-frame first"> - <iron-list id="weakPasswordList" items="[[weakPasswords]]"> - <template> - <password-check-list-item item="[[item]]" - on-more-actions-click="onMoreActionsClick_" - clicked-change-password= - "[[clickedChangePassword_(item, clickedChangePasswordIds_.size)]]" - on-change-password-clicked="onChangePasswordClick_" + <div id="weakPasswordList" class="list-frame first"> + <template is="dom-repeat" items="[[weakPasswords]]"> + <password-check-list-item item="[[item]]" + on-more-actions-click="onMoreActionsClick_" + clicked-change-password= + "[[clickedChangePassword_(item, clickedChangePasswordIds_.size)]]" + on-change-password-clicked="onChangePasswordClick_" <if expr="chromeos"> - token-request-manager="[[tokenRequestManager_]]" + token-request-manager="[[tokenRequestManager_]]" </if> - on-already-changed-password-click="onAlreadyChangedClick_"> - </password-check-list-item> - </template> - </iron-list> + on-already-changed-password-click="onAlreadyChangedClick_"> + </password-check-list-item> + </template> </div> </div> <cr-action-menu id="moreActionsMenu" role-description="$i18n{menu}">
diff --git a/chrome/browser/resources/settings/metrics_browser_proxy.js b/chrome/browser/resources/settings/metrics_browser_proxy.js index f5b29af..c60681c 100644 --- a/chrome/browser/resources/settings/metrics_browser_proxy.js +++ b/chrome/browser/resources/settings/metrics_browser_proxy.js
@@ -58,8 +58,9 @@ SAFETY_CHECK_PASSWORDS_MANAGE_THROUGH_CARET_NAVIGATION: 7, SAFETY_CHECK_SAFE_BROWSING_MANAGE_THROUGH_CARET_NAVIGATION: 8, SAFETY_CHECK_EXTENSIONS_REVIEW_THROUGH_CARET_NAVIGATION: 9, + SAFETY_CHECK_CHROME_CLEANER_CARET_NAVIGATION: 10, // Leave this at the end. - COUNT: 10, + COUNT: 11, }; /**
diff --git a/chrome/browser/resources/settings/people_page/sync_page.js b/chrome/browser/resources/settings/people_page/sync_page.js index 1526e70..6469b5f 100644 --- a/chrome/browser/resources/settings/people_page/sync_page.js +++ b/chrome/browser/resources/settings/people_page/sync_page.js
@@ -88,6 +88,12 @@ }, /** @private */ + dataEncrypted_: { + type: Boolean, + computed: 'computeDataEncrypted_(syncPrefs.encryptAllData)' + }, + + /** @private */ encryptionExpanded_: { type: Boolean, value: false, @@ -140,7 +146,7 @@ }, observers: [ - 'expandEncryptionIfNeeded_(syncPrefs.encryptAllData, forceEncryptionExpanded)', + 'expandEncryptionIfNeeded_(dataEncrypted_, forceEncryptionExpanded)', ], /** @private {?settings.SyncBrowserProxy} */ @@ -441,6 +447,14 @@ }, /** + * @return {boolean} + * @private + */ + computeDataEncrypted_() { + return !!this.syncPrefs && this.syncPrefs.encryptAllData; + }, + + /** * Whether the encryption dropdown should be expanded by default. * @private */ @@ -451,8 +465,8 @@ this.encryptionExpanded_ = true; return; } - this.encryptionExpanded_ = - !!this.syncPrefs && this.syncPrefs.encryptAllData; + + this.encryptionExpanded_ = this.dataEncrypted_; }, /**
diff --git a/chrome/browser/resources/settings/safety_check_page/safety_check_chrome_cleaner_child.js b/chrome/browser/resources/settings/safety_check_page/safety_check_chrome_cleaner_child.js index 6c0cac02..a1b2ad5 100644 --- a/chrome/browser/resources/settings/safety_check_page/safety_check_chrome_cleaner_child.js +++ b/chrome/browser/resources/settings/safety_check_page/safety_check_chrome_cleaner_child.js
@@ -238,7 +238,9 @@ /** @private */ onRowClick_: function() { if (this.isRowClickable_()) { - // TODO(crbug.com/1087263): Log caret-based navigation. + this.logUserInteraction_( + SafetyCheckInteractions.SAFETY_CHECK_CHROME_CLEANER_CARET_NAVIGATION, + 'Settings.SafetyCheck.ChromeCleanerCaretNavigation'); this.navigateToFoilPage_(); } },
diff --git a/chrome/browser/resources/signin/profile_picker/navigation_behavior.js b/chrome/browser/resources/signin/profile_picker/navigation_behavior.js index 62c7f905..e4a0571 100644 --- a/chrome/browser/resources/signin/profile_picker/navigation_behavior.js +++ b/chrome/browser/resources/signin/profile_picker/navigation_behavior.js
@@ -4,7 +4,7 @@ import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js'; -import {isForceSigninEnabled, isSignInProfileCreationSupported} from './policy_helper.js'; +import {isBrowserSigninAllowed, isForceSigninEnabled, isSignInProfileCreationSupported} from './policy_helper.js'; /** * ProfilePickerPages enum. @@ -50,8 +50,7 @@ return 'mainView'; case Routes.NEW_PROFILE: // TODO(msalama): Adjust once sign in profile creation is supported. - // Check DisallowSignIn policy. - if (!isSignInProfileCreationSupported()) { + if (!isSignInProfileCreationSupported() || !isBrowserSigninAllowed()) { assert(!isForceSigninEnabled()); return ProfileCreationSteps.LOCAL_PROFILE_CUSTOMIZATION; }
diff --git a/chrome/browser/resources/signin/profile_picker/policy_helper.js b/chrome/browser/resources/signin/profile_picker/policy_helper.js index 17cc602..87736ba 100644 --- a/chrome/browser/resources/signin/profile_picker/policy_helper.js +++ b/chrome/browser/resources/signin/profile_picker/policy_helper.js
@@ -17,6 +17,11 @@ } /** @return {boolean} */ +export function isBrowserSigninAllowed() { + return loadTimeData.getBoolean('isBrowserSigninAllowed'); +} + +/** @return {boolean} */ export function isForceSigninEnabled() { const enabled = loadTimeData.getBoolean('isForceSigninEnabled'); // Force sign in policy is not supported yet. The picker should not be shown
diff --git a/chrome/browser/share/android/BUILD.gn b/chrome/browser/share/android/BUILD.gn index 7bbeda9..07e7853 100644 --- a/chrome/browser/share/android/BUILD.gn +++ b/chrome/browser/share/android/BUILD.gn
@@ -6,6 +6,7 @@ android_resources("java_resources") { sources = [ + "java/res/drawable-ldrtl/text_icon.xml", "java/res/drawable/camera_img.xml", "java/res/drawable/custom_toast_background.xml", "java/res/drawable/delete_icon.xml",
diff --git a/chrome/browser/share/android/java/res/drawable-ldrtl/text_icon.xml b/chrome/browser/share/android/java/res/drawable-ldrtl/text_icon.xml new file mode 100644 index 0000000..630609a --- /dev/null +++ b/chrome/browser/share/android/java/res/drawable-ldrtl/text_icon.xml
@@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2020 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> + <path + android:fillColor="@color/modern_grey_800" + android:pathData="m9.25,18.4286l13.75,0l-0,2.5714l-13.75,0zM1,8.1429l22,0l-0,2.5714l-22,0zM23,15.8571l-22,0l-0,-2.5714l22,0zM23,3l-0,2.5714l-22,0l-0,-2.5714z" + android:strokeWidth="1" /> +</vector>
diff --git a/chrome/browser/share/android/java/res/drawable/text_icon.xml b/chrome/browser/share/android/java/res/drawable/text_icon.xml index 0c4138bc..b1dedfb 100644 --- a/chrome/browser/share/android/java/res/drawable/text_icon.xml +++ b/chrome/browser/share/android/java/res/drawable/text_icon.xml
@@ -5,11 +5,10 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:pathData="M2,0L22.5714,0L22.5714,6.8571L20.8571,6.8571C20.4457,4.9714 20.6514,3.4629 20,2.88C19.3657,2.3143 17.7714,1.7143 15.7143,1.7143L14,1.7143L14,20.5714C14,21.9429 14.2057,22.3714 14.6343,22.6971C15.0629,23.0229 15.9886,23.2457 17.4286,23.3486L17.4286,24L7.1086,24L7.1086,23.3486C8.6,23.2286 9.5429,22.9886 9.9029,22.5943C10.28,22.2171 10.5714,22.0971 10.5714,20.5714L10.5714,1.7143L8.8571,1.7143C6.9029,1.7143 5.1714,2.3143 4.4686,2.88C3.7486,3.4457 4.0743,4.9543 3.7143,6.8571L2,6.8571L2,0Z" - android:strokeWidth="1" - android:fillColor="@color/modern_grey_800" - android:fillType="nonZero"/> + android:viewportHeight="24" + android:viewportWidth="24"> + <path + android:fillColor="@color/modern_grey_800" + android:pathData="M14.75,18.4286L1,18.4286L1,21L14.75,21L14.75,18.4286ZM23,8.1429L1,8.1429L1,10.7143L23,10.7143L23,8.1429ZM1,15.8571L23,15.8571L23,13.2857L1,13.2857L1,15.8571ZM1,3L1,5.5714L23,5.5714L23,3L1,3Z" + android:strokeWidth="1" /> </vector>
diff --git a/chrome/browser/subresource_filter/ads_intervention_manager_unittest.cc b/chrome/browser/subresource_filter/ads_intervention_manager_unittest.cc index 1d99ae3..e6c7230 100644 --- a/chrome/browser/subresource_filter/ads_intervention_manager_unittest.cc +++ b/chrome/browser/subresource_filter/ads_intervention_manager_unittest.cc
@@ -8,10 +8,10 @@ #include "base/test/simple_test_clock.h" #include "base/time/time.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" -#include "chrome/test/base/testing_profile.h" +#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" +#include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/subresource_filter/core/mojom/subresource_filter.mojom.h" +#include "components/sync_preferences/testing_pref_service_syncable.h" #include "content/public/test/browser_task_environment.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h" @@ -25,24 +25,44 @@ AdsInterventionManagerTest& operator=(const AdsInterventionManagerTest&) = delete; + // Creates and configures the AdsInterventionManager instance used by the + // tests, first creating the dependencies that need to be supplied to that + // instance. void SetUp() override { + HostContentSettingsMap::RegisterProfilePrefs(prefs_.registry()); + settings_map_ = new HostContentSettingsMap( + &prefs_, false /* is_off_the_record */, false /* store_last_modified */, + false /* restore_session */); + settings_manager_ = + std::make_unique<SubresourceFilterContentSettingsManager>( + settings_map_.get()); + ads_intervention_manager_ = - SubresourceFilterProfileContextFactory::GetForProfile(&testing_profile_) - ->ads_intervention_manager(); + std::make_unique<AdsInterventionManager>(settings_manager_.get()); test_clock_ = std::make_unique<base::SimpleTestClock>(); ads_intervention_manager_->set_clock_for_testing(test_clock_.get()); } + void TearDown() override { settings_map_->ShutdownOnUIThread(); } + base::SimpleTestClock* test_clock() { return test_clock_.get(); } protected: - // Owned by the testing_profile_. - AdsInterventionManager* ads_intervention_manager_ = nullptr; + // Used by the HostContentSettingsMap instance. + sync_preferences::TestingPrefServiceSyncable prefs_; + + // Used by the SubresourceFilterContentSettingsManager instance. + scoped_refptr<HostContentSettingsMap> settings_map_; + + // Used by the AdsInterventionManager instance. + std::unique_ptr<SubresourceFilterContentSettingsManager> settings_manager_; + + // Instance under test. + std::unique_ptr<AdsInterventionManager> ads_intervention_manager_; private: content::BrowserTaskEnvironment task_environment_; - TestingProfile testing_profile_; std::unique_ptr<base::SimpleTestClock> test_clock_; };
diff --git a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager_unittest.cc b/chrome/browser/subresource_filter/subresource_filter_content_settings_manager_unittest.cc index a60329c..82b49bb 100644 --- a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager_unittest.cc +++ b/chrome/browser/subresource_filter/subresource_filter_content_settings_manager_unittest.cc
@@ -14,13 +14,9 @@ #include "base/test/simple_test_clock.h" #include "base/time/default_clock.h" #include "base/time/time.h" -#include "chrome/browser/content_settings/host_content_settings_map_factory.h" -#include "chrome/browser/subresource_filter/chrome_subresource_filter_client.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" -#include "chrome/test/base/testing_profile.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/common/content_settings.h" +#include "components/sync_preferences/testing_pref_service_syncable.h" #include "content/public/test/browser_task_environment.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h" @@ -31,25 +27,32 @@ public: SubresourceFilterContentSettingsManagerTest() {} + // Creates and configures the SubresourceFilterContentSettingsManager instance + // used by the tests, first creating the dependencies that need to be supplied + // to that instance. void SetUp() override { + HostContentSettingsMap::RegisterProfilePrefs(prefs_.registry()); + settings_map_ = new HostContentSettingsMap( + &prefs_, false /* is_off_the_record */, false /* store_last_modified */, + false /* restore_session */); + settings_manager_ = - SubresourceFilterProfileContextFactory::GetForProfile(&testing_profile_) - ->settings_manager(); + std::make_unique<SubresourceFilterContentSettingsManager>( + settings_map_.get()); + settings_manager_->set_should_use_smart_ui_for_testing(true); } - HostContentSettingsMap* GetSettingsMap() { - return HostContentSettingsMapFactory::GetForProfile(profile()); - } + void TearDown() override { settings_map_->ShutdownOnUIThread(); } + + HostContentSettingsMap* GetSettingsMap() { return settings_map_.get(); } const base::HistogramTester& histogram_tester() { return histogram_tester_; } SubresourceFilterContentSettingsManager* settings_manager() { - return settings_manager_; + return settings_manager_.get(); } - TestingProfile* profile() { return &testing_profile_; } - ContentSetting GetContentSettingMatchingUrlWithEmptyPath(const GURL& url) { ContentSettingsForOneType host_settings; GetSettingsMap()->GetSettingsForOneType(ContentSettingsType::ADS, @@ -71,10 +74,15 @@ content::BrowserTaskEnvironment task_environment_{ base::test::TaskEnvironment::TimeSource::MOCK_TIME}; base::HistogramTester histogram_tester_; - TestingProfile testing_profile_; - // Owned by the testing_profile_. - SubresourceFilterContentSettingsManager* settings_manager_ = nullptr; + // Used by the HostContentSettingsMap instance. + sync_preferences::TestingPrefServiceSyncable prefs_; + + // Used by the SubresourceFilterContentSettingsManager instance. + scoped_refptr<HostContentSettingsMap> settings_map_; + + // Instance under test. + std::unique_ptr<SubresourceFilterContentSettingsManager> settings_manager_; DISALLOW_COPY_AND_ASSIGN(SubresourceFilterContentSettingsManagerTest); };
diff --git a/chrome/browser/sync/glue/extensions_activity_monitor_unittest.cc b/chrome/browser/sync/glue/extensions_activity_monitor_unittest.cc index 96cfe78..88ae52a 100644 --- a/chrome/browser/sync/glue/extensions_activity_monitor_unittest.cc +++ b/chrome/browser/sync/glue/extensions_activity_monitor_unittest.cc
@@ -53,8 +53,8 @@ void FireBookmarksApiEvent( const scoped_refptr<Extension>& extension, int repeats) { scoped_refptr<extensions::BookmarksFunction> bookmarks_function(new T()); - bookmarks_function->set_histogram_value(T::histogram_value()); - bookmarks_function->SetName(T::function_name()); + bookmarks_function->set_histogram_value(T::static_histogram_value()); + bookmarks_function->SetName(T::static_function_name()); // |bookmarks_function| won't be run, just passed to Notify(), so calling // ignore_did_respond_for_testing() is needed to avoid a DCHECK failure. bookmarks_function->ignore_did_respond_for_testing();
diff --git a/chrome/browser/sync/test/integration/profile_sync_service_harness.cc b/chrome/browser/sync/test/integration/profile_sync_service_harness.cc index 10b48cc99..69378e8 100644 --- a/chrome/browser/sync/test/integration/profile_sync_service_harness.cc +++ b/chrome/browser/sync/test/integration/profile_sync_service_harness.cc
@@ -24,8 +24,8 @@ #include "chrome/common/channel_info.h" #include "components/signin/public/identity_manager/identity_manager.h" #include "components/signin/public/identity_manager/identity_test_utils.h" -#include "components/sync/driver/about_sync_util.h" #include "components/sync/driver/sync_driver_switches.h" +#include "components/sync/driver/sync_internals_util.h" #include "components/sync/engine/sync_string_conversions.h" #include "components/sync/engine_impl/net/url_translator.h" #include "components/sync/engine_impl/traffic_logger.h"
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index ff5866a..c9226f8 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -2325,6 +2325,8 @@ "webui/chromeos/login/reset_screen_handler.h", "webui/chromeos/login/saml_challenge_key_handler.cc", "webui/chromeos/login/saml_challenge_key_handler.h", + "webui/chromeos/login/signin_fatal_error_screen_handler.cc", + "webui/chromeos/login/signin_fatal_error_screen_handler.h", "webui/chromeos/login/signin_screen_handler.cc", "webui/chromeos/login/signin_screen_handler.h", "webui/chromeos/login/supervision_transition_screen_handler.cc",
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb index 2bfc6c7..2edbd4f5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Blaai vinniger. Gebruik minder data.</translation> <translation id="3298243779924642547">Lig</translation> <translation id="3303414029551471755">Gaan voort om die inhoud af te laai?</translation> -<translation id="3306398118552023113">Hierdie program loop tans in Chrome</translation> <translation id="3315103659806849044">Jy pasmaak tans jou sinkronisering- en Google-diensinstellings. Tik op die Bevestig-knoppie naby die onderkant van die skerm om die aanskakel van sinkronisering te voltooi. Gaan op</translation> <translation id="3328801116991980348">Werfinligting</translation> <translation id="3334729583274622784">Verander lêeruitbreiding?</translation>
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 91ad638..474e54cd 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
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">በበለጠ ፍጥነት ያስሱ። ያነሰ ውሂብን ይጠቀሙ።</translation> <translation id="3298243779924642547">ቀላል</translation> <translation id="3303414029551471755">ይዘቱን ማውረድ ይቀጥል?</translation> -<translation id="3306398118552023113">ይህ መተግበሪያ በChrome ውስጥ እያሄደ ነው</translation> <translation id="3315103659806849044">እርስዎ በአሁኑ ጊዜ የእርስዎን የስምረት እና የGoogle አገልግሎት ቅንብሮችን እያበጁ ነው። ስምረትን ማብራቱን ለመጨረስ ከማያ ገጹ ታችኛው ክፍል አጠገብ ያለውን የአረጋግጥ አዝራር መታ ያድርጉ። ወደ ላይ ያስሱ</translation> <translation id="3328801116991980348">የጣቢያ መረጃ</translation> <translation id="3334729583274622784">የፋይል ቅጥያ ይቀየር?</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 0674409b..94839943 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">تصفُّح أسرع. واستخدام بيانات أقل.</translation> <translation id="3298243779924642547">نسخة خفيفة</translation> <translation id="3303414029551471755">هل ترغب في الاستمرار في تنزيل المحتوى؟</translation> -<translation id="3306398118552023113">يتم تشغيل هذا التطبيق في Chrome</translation> <translation id="3315103659806849044">يتم حاليًا تخصيص إعدادات خدمة Google والمزامنة. لإنهاء تفعيل المزامنة، يُرجى الضغط على زر "التأكيد" بالقرب من أسفل الشاشة. الانتقال إلى أعلى</translation> <translation id="3328801116991980348">معلومات الموقع الإلكتروني</translation> <translation id="3334729583274622784">هل تريد تغيير امتداد الملف؟</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb index 811d398..2869371 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
@@ -165,6 +165,7 @@ <translation id="2169830938017475061">Now</translation> <translation id="2175927920773552910">কিউআৰ ক’ড</translation> <translation id="218608176142494674">শ্বেয়াৰ কৰি থকা হৈছে</translation> +<translation id="2195339740518523951">Chromeৰ আটাইতকৈ শক্তিশালী সুৰক্ষা লাভ কৰক</translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> হিচাপে অব্যাহত ৰাখক</translation> <translation id="2234876718134438132">ছিংক আৰু Google সেৱা</translation> <translation id="2239812875700136898">সন্ধান কৰক বুটামটোৰ বিকল্পসমূহৰ পৰা আপোনাৰ কাহিনীসমূহ নিয়ন্ত্ৰণ কৰক</translation> @@ -256,6 +257,7 @@ <translation id="2893180576842394309">Googleএ Search আৰু অন্য Google সেৱাসমূহ ব্যক্তিগতকৰণ কৰিবলৈ আপোনাৰ ইতিহাস ব্যৱহাৰ কৰিব পাৰে</translation> <translation id="2898264748040935573">ষ্ট’ৰ কৰি ৰখা পাছৱৰ্ড সম্পাদনা কৰক</translation> <translation id="2900528713135656174">অনুষ্ঠান সৃষ্টি কৰক</translation> +<translation id="2901411048554510387"><ph name="WEBSITE_TITLE" />ৰ বাবে পৰামৰ্শ দেখুৱাই থকা হৈছে</translation> <translation id="2904414404539560095">টেব এটা শ্বেয়াৰ কৰিবলৈ সম্পূর্ণকৈ খোল খোৱা ডিভাইচসমূহৰ সূচী।</translation> <translation id="2905036901251765993">আশে-পাশে থকা লোকসকলৰ সৈতে শ্বেয়াৰ কৰিবলৈ তেওঁলোকক এই কিউআৰ ক’ডটো স্কেন কৰিবলৈ দিয়ক</translation> <translation id="2909615210195135082">Googleৰ জাননীসমূহৰ প্লেটফৰ্ম</translation> @@ -309,7 +311,6 @@ <translation id="3295530008794733555">ক্ষিপ্ৰভাৱে ব্ৰাউজ কৰক। কম ডেটা খৰচ কৰক।</translation> <translation id="3298243779924642547">লাইট</translation> <translation id="3303414029551471755">সমলখিনি ডাউনল’ড কৰিবলৈ আগবাঢ়িবনে?</translation> -<translation id="3306398118552023113">এই এপ্টো Chromeত চলি আছে</translation> <translation id="3315103659806849044">আপুনি বৰ্তমান আপোনাৰ ছিংক আৰু Google সেৱাৰ ছেটিংসমূহ কাষ্ট'মাইজ কৰি আছে। ছিংক অন কৰাটো সম্পূৰ্ণ কৰিবলৈ স্ক্রীণখনৰ একেবাৰে তলিৰ কাষত থকা নিশ্চিত কৰক বুটামটো টিপক। ওপৰলৈ যাওক</translation> <translation id="3328801116991980348">ছাইটৰ তথ্য</translation> <translation id="3334729583274622784">ফাইলটোৰ এক্সটেনশ্বন সলনি কৰিবনে?</translation> @@ -442,6 +443,7 @@ <translation id="4405224443901389797">ইয়ালৈ স্থানান্তৰ কৰক…</translation> <translation id="4411535500181276704">লাইট ম’ড</translation> <translation id="4415276339145661267">আপোনাৰ Google একাউণ্ট পৰিচালনা কৰক</translation> +<translation id="4427306783828095590">বৰ্ধিত সুৰক্ষাৰ সুবিধাটোৱে ফিশ্বিং আৰু মালৱেৰ অৱৰোধ কৰিবলৈ অধিক কাৰ্য কৰে</translation> <translation id="4440958355523780886">Googleএ প্ৰদান কৰা লাইট পৃষ্ঠা। প্ৰকৃত পৃষ্ঠাটো চাবলৈ টিপক।</translation> <translation id="4452411734226507615"><ph name="TAB_TITLE" /> টেব বন্ধ কৰক</translation> <translation id="4452548195519783679"><ph name="FOLDER_NAME" />লৈ বুকমার্ক কৰা হৈছে</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb index cb11d88..a1fe9da 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Daha sürətli axtarış edin. Daha az data istifadə edin.</translation> <translation id="3298243779924642547">Xəbərdarlıq</translation> <translation id="3303414029551471755">Kontentin endirilməsinə davam etmək istəyirsiniz?</translation> -<translation id="3306398118552023113">Bu tətbiq Chrome'da işləyir</translation> <translation id="3315103659806849044">Hazırda Sinxronizasiya və Google xidmət ayarlarını fərdiləşdirirsiniz. Sinxronizasiyanı aktiv etməyi tamamlamaq üçün ekranın aşağısına yaxın "Təsdiq edin" düyməsinə klikləyin. Yuxarı gedin</translation> <translation id="3328801116991980348">Sayt haqqında</translation> <translation id="3334729583274622784">Fayl artırması dəyişdirilsin?</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 340999b9..6488136 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Больш хуткая загрузка вэб-старонак і эканомія трафіка.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Перайсці да спампоўкі змесціва?</translation> -<translation id="3306398118552023113">Гэта праграма працуе ў браўзеры Chrome</translation> <translation id="3315103659806849044">Вы змяняеце налады сэрвісаў Google і сінхранізацыі. Каб завяршыць уключэнне сінхранізацыі, націсніце кнопку "Пацвердзіць" унізе экрана. Перайсці ўверх</translation> <translation id="3328801116991980348">Звесткі пра сайт</translation> <translation id="3334729583274622784">Змяніць пашырэнне файла?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb index ba5a3f7..475dce8 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">Заснемане на екрана</translation> <translation id="1111673857033749125">Тук ще се показват отметките, които сте запазили на другите си устройства.</translation> <translation id="1113597929977215864">Показване на опростения изглед</translation> +<translation id="1123070903960493543">Взаимодействието ви с Chrome, избраните от вас настройки, подробности за сривовете на Chrome</translation> <translation id="1126809382673880764">Няма защита срещу опасни уебсайтове, изтеглени файлове и разширения. Пак ще получавате защита посредством Безопасно сърфиране в други услуги на Google, където функцията се поддържа – например Gmail и Търсене.</translation> <translation id="1129510026454351943">Подробности: <ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{Предстои 1 изтегляне.}other{Предстоят # изтегляния.}}</translation> @@ -72,6 +73,7 @@ <translation id="1450753235335490080">Споделянето на <ph name="CONTENT_TYPE" /> не е възможно</translation> <translation id="1477626028522505441">Изтеглянето на „<ph name="FILE_NAME" />“ не бе успешно поради проблеми в сървъра.</translation> <translation id="1506061864768559482">Търсеща машина</translation> +<translation id="151267239139452619">Добавяне към изтеглянията</translation> <translation id="1513352483775369820">Отметки и посетени сайтове</translation> <translation id="1513858653616922153">Изтриване на паролата</translation> <translation id="1521774566618522728">Активно днес</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825">Спестихте <ph name="DATA" /></translation> <translation id="213279576345780926">Затворихте „<ph name="TAB_TITLE" />“</translation> <translation id="2139186145475833000">Добавяне към началния екран</translation> +<translation id="214888715418183969">Изберете какви данни сте готови да споделяте с Chrome. Показателите, които споделяте, ще се използват за подобряване на функциите, производителността и стабилността на Chrome.</translation> <translation id="2154484045852737596">Редактиране на картата</translation> <translation id="2154710561487035718">Копиране на URL адреса</translation> <translation id="2156074688469523661">Останали сайтове (<ph name="NUMBER_OF_SITES" />)</translation> @@ -166,6 +169,7 @@ <translation id="2175927920773552910">Код за бърза реакция</translation> <translation id="218608176142494674">Споделяне</translation> <translation id="2195339740518523951">Получете най-високото ниво на сигурност на Chrome</translation> +<translation id="2200113223741723867">Управление на споделянето на данни за употребата</translation> <translation id="2227444325776770048">Продължаване като <ph name="USER_FULL_NAME" /></translation> <translation id="2234876718134438132">Синхронизиране и услуги на Google</translation> <translation id="2239812875700136898">Контролирайте материалите от бутона „Опции за Discover“</translation> @@ -311,7 +315,6 @@ <translation id="3295530008794733555">Сърфирайте по-бързо. Използвайте по-малко данни.</translation> <translation id="3298243779924642547">Олекотена</translation> <translation id="3303414029551471755">Искате ли да продължите с изтеглянето на съдържанието?</translation> -<translation id="3306398118552023113">Това приложение се изпълнява в Chrome</translation> <translation id="3315103659806849044">Понастоящем персонализирате настройките си за синхронизиране и за услугите на Google. За да включите синхронизирането, докоснете бутона „Потвърждаване“ в долната част на екрана. Навигиране нагоре</translation> <translation id="3328801116991980348">Информация за сайта</translation> <translation id="3334729583274622784">Да се промени ли файловото разширение?</translation> @@ -371,12 +374,14 @@ <translation id="3771290962915251154">Тази настройка е деактивирана, защото родителските контроли са включени</translation> <translation id="3771694256347217732">Общи условия на Google</translation> <translation id="3773755127849930740"><ph name="BEGIN_LINK" />Включете Bluetooth<ph name="END_LINK" />, за да разрешите сдвояването</translation> +<translation id="3773856050682458546">Основните данни плюс информация за посещаваните от вас уебсайтове и за приложенията, които използвате</translation> <translation id="3775705724665058594">Изпращане до устройствата ви</translation> <translation id="3778956594442850293">Добавено към началния екран</translation> <translation id="3789841737615482174">Инсталиране</translation> <translation id="3810838688059735925">Видео</translation> <translation id="3810973564298564668">Управление</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> изтегляния бяха изтрити</translation> +<translation id="3848957262889631524">Google <ph name="APP_NAME" /> като ключ за сигурност</translation> <translation id="3856096718352044181">Моля, проверете дали този доставчик е валиден или опитайте отново по-късно</translation> <translation id="3861633093716975811">Популярни видеоклипове</translation> <translation id="3892148308691398805">Копиране на текста</translation> @@ -404,7 +409,9 @@ <translation id="3988466920954086464">Отворете този панел, за да видите динамичните резултати от търсенето</translation> <translation id="4000212216660919741">Начална страница в офлайн режим</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# ч}other{# ч}}</translation> +<translation id="4045764304651014138">Данни за употребата</translation> <translation id="4056223980640387499">Сепия</translation> +<translation id="4057643060762047384">Добавяне към:</translation> <translation id="4060598801229743805">Опциите са в горната част на екрана</translation> <translation id="4062305924942672200">Правна информация</translation> <translation id="4084682180776658562">Отметка</translation> @@ -545,6 +552,7 @@ <translation id="5039804452771397117">Разрешаване</translation> <translation id="5040262127954254034">Поверителност</translation> <translation id="5087580092889165836">Добавяне на карта</translation> +<translation id="5091249083535528968">Разширени данни за употребата</translation> <translation id="509429900233858213">Възникна грешка.</translation> <translation id="510275257476243843">Остава 1 час</translation> <translation id="5123685120097942451">Раздел в режим „инкогнито“</translation> @@ -651,6 +659,7 @@ <translation id="5833984609253377421">Споделяне на връзката</translation> <translation id="5836192821815272682">Актуализацията на Chrome се изтегля…</translation> <translation id="5853623416121554550">на пауза</translation> +<translation id="5854512288214985237">До Google не се изпращат статистика и сигнали за сривове</translation> <translation id="5854790677617711513">По-стари от 30 дни</translation> <translation id="5855546874025048181">Прецизиране: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">Chrome не може да включи адаптера за Bluetooth</translation> @@ -723,6 +732,7 @@ <translation id="6303969859164067831">Изход от профила и изключване на синхронизирането</translation> <translation id="6312687380483398334">Уеб приложения (без прекъсвания)</translation> <translation id="6316139424528454185">Неподдържана версия на Android</translation> +<translation id="6321526113093607004">Добавяне към отметките</translation> <translation id="6324034347079777476">Системното синхронизиране под Android е деактивирано</translation> <translation id="6333140779060797560">Споделяне чрез <ph name="APPLICATION" /></translation> <translation id="6337234675334993532">Шифроване</translation> @@ -740,6 +750,7 @@ <translation id="6402652558933147609"><ph name="ERROR_CODE" /> на адрес <ph name="VIOLATED_URL" /></translation> <translation id="6404511346730675251">Редактиране на отметката</translation> <translation id="6406506848690869874">Синхронизиранe</translation> +<translation id="6410404864818553978">Основни данни за употребата</translation> <translation id="6410883413783534063">Отворете няколко раздела, за да посетите различни страници едновременно</translation> <translation id="6412673304250309937">Проверка на URL адресите в съхраняван в Chrome списък с опасни сайтове. Ако сайт се опита да открадне паролата ви или изтеглите опасен файл от сайт, Chrome може също така да изпрати до „Безопасно сърфиране“ URL адресите и част от съдържанието на страницата.</translation> <translation id="641643625718530986">Печат…</translation> @@ -833,6 +844,7 @@ <translation id="7015203776128479407">Първоначалното настройване на синхронизирането не бе завършено. Синхронизирането е изключено.</translation> <translation id="7022756207310403729">Отваряне в браузъра</translation> <translation id="702463548815491781">Препоръчва се, когато TalkBack или достъпът с превключване са задействани</translation> +<translation id="7027549951530753705">Файлът „<ph name="ITEM_TITLE" />“ бе възстановен</translation> <translation id="7029809446516969842">Пароли</translation> <translation id="703523980599857277">Промяна на началната страница</translation> <translation id="7054588988317389591">Искате ли да получавате описания на изображенията?</translation> @@ -1014,6 +1026,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> и още сайтове</translation> <translation id="8327155640814342956">За оптимално сърфиране отворете, за да актуализирате Chrome</translation> <translation id="8349013245300336738">Сортиране по количеството използвани данни</translation> +<translation id="835847953965672673"><ph name="NUMBER_OF_DOWNLOADS" /> изтегляния бяха възстановени</translation> <translation id="8364299278605033898">Вижте популярните уебсайтове</translation> <translation id="8368027906805972958">Неизвестно или неподдържано устройство (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381">Пакетът за <ph name="LANG" /> е готов.</translation> @@ -1122,6 +1135,7 @@ <translation id="9148126808321036104">Влезте отново</translation> <translation id="9155898266292537608">Можете също да извършите търсене с бързо докосване на дума</translation> <translation id="9169507124922466868">Историята на навигацията е наполовина отворена</translation> +<translation id="9191031968346938109">Добавяне към…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{Проверено преди 1 минута}other{Проверено преди # минути}}</translation> <translation id="9204836675896933765">Остава 1 файл</translation> <translation id="9206873250291191720">А</translation> @@ -1134,6 +1148,7 @@ <translation id="938850635132480979">Грешка: <ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">Въведете пропуск</translation> <translation id="95817756606698420">Chrome може да използва <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> за търсене в Китай. Можете да промените това от <ph name="BEGIN_LINK" />Настройки<ph name="END_LINK" />.</translation> +<translation id="962979164594783469">Инсталиране на това приложение</translation> <translation id="968900484120156207">Посетените от вас страници се показват тук</translation> <translation id="970715775301869095">Остават <ph name="MINUTES" /> мин</translation> <translation id="974555521953189084">Въведете своя пропуск, за да започне синхронизирането</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb index 40566ad..618a00c9 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
@@ -309,7 +309,6 @@ <translation id="3295530008794733555">চটপট ব্রাউজ করুন। আরও কম ডেটা ব্যবহার করুন।</translation> <translation id="3298243779924642547">লাইট</translation> <translation id="3303414029551471755">কন্টেন্ট ডাউনলোড করার জন্য এগোতে চান?</translation> -<translation id="3306398118552023113">Chrome-এ এই অ্যাপটি চলছে</translation> <translation id="3315103659806849044">আপনি এখন আপনার সিঙ্ক এবং Google পরিষেবার সেটিংস কাস্টমাইজ করছেন। স্ক্রিনের নিচের দিকে থাকা 'কনফার্ম করুন' বোতামে ট্যাপ করে সিঙ্ক চালু দিন। উপরে নেভিগেট করুন</translation> <translation id="3328801116991980348">সাইট তথ্য</translation> <translation id="3334729583274622784">ফাইলের এক্সটেনশন পরিবর্তন করতে চান?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb index ac23e8b..a890ff99 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Pretražujte brže. Koristite manje podataka.</translation> <translation id="3298243779924642547">Jednostav.</translation> <translation id="3303414029551471755">Nastaviti s preuzimanjem sadržaja?</translation> -<translation id="3306398118552023113">Ova aplikacija je pokrenuta u Chromeu</translation> <translation id="3315103659806849044">Trenutno prilagođavate svoje postavke sinhronizacije i Googleovih usluga. Da završite uključivanje sinhronizacije, dodirnite dugme Potvrdi pri dnu ekrana. Idi gore</translation> <translation id="3328801116991980348">Informacije o web lokaciji</translation> <translation id="3334729583274622784">Promijeniti ekstenziju fajla?</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 2f7750d1..a9ecf7de3d2 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
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Navega més de pressa. Utilitza menys dades.</translation> <translation id="3298243779924642547">Mode bàsic</translation> <translation id="3303414029551471755">Voleu baixar el contingut?</translation> -<translation id="3306398118552023113">Aquesta aplicació s'està executant a Chrome</translation> <translation id="3315103659806849044">Estàs personalitzant la configuració de la sincronització i del servei de Google. Per acabar d'activar la sincronització, toca el botó Confirma que hi ha cap a la part inferior de la pantalla. Navega cap amunt</translation> <translation id="3328801116991980348">Informació del lloc web</translation> <translation id="3334729583274622784">Vols canviar l'extensió del fitxer?</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 583b7c7..ab5a988b 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Prohlížejte si internet rychleji. Využívejte méně dat.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Chcete pokračovat ke stažení obsahu?</translation> -<translation id="3306398118552023113">Tato aplikace je spuštěna v Chromu</translation> <translation id="3315103659806849044">Aktuálně upravujete své nastavení synchronizace a služeb Google. Zapnutí synchronizace dokončíte klepnutím na tlačítko Potvrdit, které se nachází u dolního okraje obrazovky. Přejít nahoru</translation> <translation id="3328801116991980348">Informace o stránkách</translation> <translation id="3334729583274622784">Změnit příponu souboru?</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 81d4d5f..b7b6b05d 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
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">Screenshot</translation> <translation id="1111673857033749125">Bogmærker, der er gemt på dine andre enheder, vises her.</translation> <translation id="1113597929977215864">Se enkel visning</translation> +<translation id="1123070903960493543">Den måde, du interagerer med Chrome på, de indstillinger, du har valgt, og oplysninger om Chrome-nedbrud</translation> <translation id="1126809382673880764">Beskytter dig ikke mod skadelige websites, downloads og udvidelser. Du er stadig beskyttet med Beskyttet browsing i andre Google-tjenester som f.eks. Gmail og Søgning, hvor dette er tilgængeligt.</translation> <translation id="1129510026454351943">Info: <ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{1 download afventer.}one{# download afventer.}other{# downloads afventer.}}</translation> @@ -72,6 +73,7 @@ <translation id="1450753235335490080">Delingen af <ph name="CONTENT_TYPE" /> mislykkedes</translation> <translation id="1477626028522505441">Download af <ph name="FILE_NAME" /> mislykkedes på grund af serverproblemer.</translation> <translation id="1506061864768559482">Søgemaskine</translation> +<translation id="151267239139452619">Føj til Downloads</translation> <translation id="1513352483775369820">Bogmærker og webhistorik</translation> <translation id="1513858653616922153">Slet adgangskoden</translation> <translation id="1521774566618522728">Aktiv i dag</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> sparet</translation> <translation id="213279576345780926">Lukkede <ph name="TAB_TITLE" /></translation> <translation id="2139186145475833000">Føj til startskærm</translation> +<translation id="214888715418183969">Vælg, hvad der gerne må deles med Chrome. De metrics, du deler, bruges til at hjælpe med at forbedre Chromes funktioner, ydeevne og stabilitet.</translation> <translation id="2154484045852737596">Rediger kort</translation> <translation id="2154710561487035718">Kopier webadresse</translation> <translation id="2156074688469523661">Tilbageværende websites (<ph name="NUMBER_OF_SITES" />)</translation> @@ -166,6 +169,7 @@ <translation id="2175927920773552910">QR-kode</translation> <translation id="218608176142494674">Deling</translation> <translation id="2195339740518523951">Få Chromes stærkeste beskyttelse</translation> +<translation id="2200113223741723867">Administrer deling af brugsdata</translation> <translation id="2227444325776770048">Fortsæt som <ph name="USER_FULL_NAME" /></translation> <translation id="2234876718134438132">Synkronisering og Google-tjenester</translation> <translation id="2239812875700136898">Administrer dine historier ved hjælp af knappen Indstillinger for Discover</translation> @@ -311,7 +315,6 @@ <translation id="3295530008794733555">Få hurtigere browsing. Brug mindre data.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Vil du fortsætte og downloade indholdet?</translation> -<translation id="3306398118552023113">Denne app kører i Chrome</translation> <translation id="3315103659806849044">Du tilpasser i øjeblikket dine indstillinger for Synkronisering og Google-tjenester. Afslut aktiveringen af synkronisering ved at trykke på knappen Bekræft nederst på skærmen. Gå op</translation> <translation id="3328801116991980348">Webstedoplysninger</translation> <translation id="3334729583274622784">Vil du ændre filtypen?</translation> @@ -371,12 +374,14 @@ <translation id="3771290962915251154">Denne indstilling er deaktiveret, fordi børnesikring er aktiveret</translation> <translation id="3771694256347217732">Googles servicevilkår</translation> <translation id="3773755127849930740"><ph name="BEGIN_LINK" />Slå Bluetooth til<ph name="END_LINK" /> for at tillade parring</translation> +<translation id="3773856050682458546">Grundlæggende data samt oplysninger om de websites, du besøger, og de apps, du bruger</translation> <translation id="3775705724665058594">Send til dine enheder</translation> <translation id="3778956594442850293">Føjet til startskærmen</translation> <translation id="3789841737615482174">Installer</translation> <translation id="3810838688059735925">Video</translation> <translation id="3810973564298564668">Valgmuligheder</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> downloads blev slettet</translation> +<translation id="3848957262889631524">Google <ph name="APP_NAME" /> som en sikkerhedsnøgle</translation> <translation id="3856096718352044181">Bekræft, at dette er en gyldig udbyder, eller prøv igen senere</translation> <translation id="3861633093716975811">Populære videoer</translation> <translation id="3892148308691398805">Kopiér tekst</translation> @@ -404,7 +409,9 @@ <translation id="3988466920954086464">Se direkte søgeresultater i dette panel</translation> <translation id="4000212216660919741">Hjemmet er offline</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# t.}one{# t.}other{# t.}}</translation> +<translation id="4045764304651014138">Brugsdata</translation> <translation id="4056223980640387499">Sepia</translation> +<translation id="4057643060762047384">Føj til:</translation> <translation id="4060598801229743805">Du finder de tilgængelige valgmuligheder øverst på skærmen</translation> <translation id="4062305924942672200">Juridiske oplysninger</translation> <translation id="4084682180776658562">Bogmærke</translation> @@ -545,6 +552,7 @@ <translation id="5039804452771397117">Tillad</translation> <translation id="5040262127954254034">Privatliv</translation> <translation id="5087580092889165836">Tilføj kort</translation> +<translation id="5091249083535528968">Udvidede brugsdata</translation> <translation id="509429900233858213">Der opstod en fejl.</translation> <translation id="510275257476243843">1 time tilbage</translation> <translation id="5123685120097942451">Inkognitofane</translation> @@ -651,6 +659,7 @@ <translation id="5833984609253377421">Del link</translation> <translation id="5836192821815272682">Downloader Chrome-opdateringen…</translation> <translation id="5853623416121554550">sat på pause</translation> +<translation id="5854512288214985237">Der sendes hverken statistik eller nedbrudsrapporter til Google</translation> <translation id="5854790677617711513">Ældre end 30 dage</translation> <translation id="5855546874025048181">Juster: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">Chrome kan ikke slå Bluetooth-adapteren til</translation> @@ -723,6 +732,7 @@ <translation id="6303969859164067831">Log ud, og deaktiver synkronisering</translation> <translation id="6312687380483398334">Webapps (lydløs)</translation> <translation id="6316139424528454185">Android-versionen understøttes ikke</translation> +<translation id="6321526113093607004">Føj til Bogmærker</translation> <translation id="6324034347079777476">Synkronisering af Android-systemet blev deaktiveret</translation> <translation id="6333140779060797560">Del via <ph name="APPLICATION" /></translation> <translation id="6337234675334993532">Kryptering</translation> @@ -740,6 +750,7 @@ <translation id="6402652558933147609"><ph name="ERROR_CODE" /> på <ph name="VIOLATED_URL" /></translation> <translation id="6404511346730675251">Rediger bogmærke</translation> <translation id="6406506848690869874">Synkronisering</translation> +<translation id="6410404864818553978">Grundlæggende brugsdata</translation> <translation id="6410883413783534063">Åbn faner for at besøge forskellige sider på samme tid</translation> <translation id="6412673304250309937">Tjekker webadresser ift. en liste over usikre websites, der er gemt i Chrome. Hvis et website forsøger at stjæle din adgangskode, eller når du downloader en skadelig fil, sender Chrome muligvis også webadresser, bl.a. mindre mængder sideindhold, til Beskyttet browsing.</translation> <translation id="641643625718530986">Udskriv…</translation> @@ -833,6 +844,7 @@ <translation id="7015203776128479407">Den indledende konfiguration af synkronisering blev ikke afsluttet. Synkronisering er deaktiveret.</translation> <translation id="7022756207310403729">Åbn i browser</translation> <translation id="702463548815491781">Anbefales, når TalkBack eller Kontaktadgang er aktiveret</translation> +<translation id="7027549951530753705">Gendannet den <ph name="ITEM_TITLE" /></translation> <translation id="7029809446516969842">Adgangskoder</translation> <translation id="703523980599857277">Skift startside</translation> <translation id="7054588988317389591">Vil du have billedbeskrivelser?</translation> @@ -1014,6 +1026,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> og andre websites</translation> <translation id="8327155640814342956">Opdater Chrome for at få den bedste browseroplevelse</translation> <translation id="8349013245300336738">Sortér efter mængden af data, der er brugt</translation> +<translation id="835847953965672673"><ph name="NUMBER_OF_DOWNLOADS" /> downloads blev gendannet</translation> <translation id="8364299278605033898">Se populære websites</translation> <translation id="8368027906805972958">Ukendt eller ikke-understøttet enhed (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381"><ph name="LANG" /> er klar.</translation> @@ -1122,6 +1135,7 @@ <translation id="9148126808321036104">Log ind igen</translation> <translation id="9155898266292537608">Du kan også søge med et hurtigt tryk på et ord</translation> <translation id="9169507124922466868">Navigationshistorikken er åbnet halvt</translation> +<translation id="9191031968346938109">Føj til…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{Tjekket for 1 minut siden}one{Tjekket for # minut siden}other{Tjekket for # minutter siden}}</translation> <translation id="9204836675896933765">1 fil tilbage</translation> <translation id="9206873250291191720">A</translation> @@ -1134,6 +1148,7 @@ <translation id="938850635132480979">Fejl: <ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">Angiv adgangssætning</translation> <translation id="95817756606698420">Chrome kan bruge <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> til søgninger i Kina. Du kan ændre dette i <ph name="BEGIN_LINK" />Indstillinger<ph name="END_LINK" />.</translation> +<translation id="962979164594783469">Installer denne app</translation> <translation id="968900484120156207">De sider, du besøger, vises her</translation> <translation id="970715775301869095"><ph name="MINUTES" /> minutter tilbage</translation> <translation id="974555521953189084">Angiv din adgangssætning for at starte synkroniseringen</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 52ba08c..70136aab 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
@@ -309,7 +309,6 @@ <translation id="3295530008794733555">Schneller surfen. Weniger Daten verbrauchen.</translation> <translation id="3298243779924642547">Lite-Modus</translation> <translation id="3303414029551471755">Inhalt herunterladen?</translation> -<translation id="3306398118552023113">Diese App wird in Chrome ausgeführt</translation> <translation id="3315103659806849044">Sie passen gerade die Einstellungen für "Synchronisierung und Google-Dienste" an Wenn Sie die Aktivierung der Synchronisierung abschließen möchten, tippen Sie unten auf dem Bildschirm auf "Bestätigen". Nach oben</translation> <translation id="3328801116991980348">Websiteinformationen</translation> <translation id="3334729583274622784">Dateiendung ändern?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb index 42375b56..133d16b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Ταχύτερη περιήγηση. Χρήση λιγότερων δεδομένων.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Συνέχεια για λήψη του περιεχομένου;</translation> -<translation id="3306398118552023113">Αυτή η εφαρμογή εκτελείται στο Chrome</translation> <translation id="3315103659806849044">Αυτήν τη στιγμή, προσαρμόζετε τις ρυθμίσεις του Συγχρονισμού και των Υπηρεσιών Google. Για να ολοκληρώσετε την ενεργοποίηση του συγχρονισμού, πατήστε το κουμπί Επιβεβαίωσης κοντά στην κορυφή της οθόνης. Πλοήγηση προς τα επάνω</translation> <translation id="3328801116991980348">Πληροφορίες ιστοτόπου</translation> <translation id="3334729583274622784">Θέλετε να αλλάξετε την επέκταση αρχείου;</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb index 8d14f0f..d94b9994 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Browse faster. Use less data.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Proceed to download the content?</translation> -<translation id="3306398118552023113">This app is running in Chrome</translation> <translation id="3315103659806849044">You are currently customising your Sync and Google service settings. To finish turning on sync, tap the Confirm button near the bottom of the screen. Navigate up</translation> <translation id="3328801116991980348">Site information</translation> <translation id="3334729583274622784">Change file extension?</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 1ff1cf4..a67fe6d7 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
@@ -165,6 +165,7 @@ <translation id="2169830938017475061">Ahora</translation> <translation id="2175927920773552910">Código QR</translation> <translation id="218608176142494674">Uso compartido</translation> +<translation id="2195339740518523951">Obtén la seguridad más sólida de Chrome</translation> <translation id="2227444325776770048">Continuar como <ph name="USER_FULL_NAME" /></translation> <translation id="2234876718134438132">Sincronización y servicios</translation> <translation id="2239812875700136898">Controla tus historias desde las opciones del botón Descubre</translation> @@ -256,6 +257,7 @@ <translation id="2893180576842394309">Es posible que Google use tu historial para personalizar la Búsqueda, los anuncios y otros servicios de Google</translation> <translation id="2898264748040935573">Edita la contraseña almacenada</translation> <translation id="2900528713135656174">Crear evento</translation> +<translation id="2901411048554510387">Se muestran sugerencias para <ph name="WEBSITE_TITLE" /></translation> <translation id="2904414404539560095">La lista de dispositivos con los que se puede compartir una pestaña está totalmente abierta.</translation> <translation id="2905036901251765993">Para permitir el uso compartido con personas cercanas, permíteles que escaneen este código QR</translation> <translation id="2909615210195135082">Plataforma de notificaciones de Google</translation> @@ -309,7 +311,6 @@ <translation id="3295530008794733555">Navega más rápido; usa menos datos</translation> <translation id="3298243779924642547">Básico</translation> <translation id="3303414029551471755">¿Deseas descargar el contenido?</translation> -<translation id="3306398118552023113">Esta app se ejecuta en Chrome</translation> <translation id="3315103659806849044">Estás personalizando la opción de configuración "Sincronización y servicios". Para activar la sincronización, presiona el botón Confirmar cerca de la parte inferior de la pantalla. Navegar hacia arriba</translation> <translation id="3328801116991980348">Información del sitio</translation> <translation id="3334729583274622784">¿Quieres cambiar la extensión del archivo?</translation> @@ -442,6 +443,7 @@ <translation id="4405224443901389797">Mover a…</translation> <translation id="4411535500181276704">Modo lite</translation> <translation id="4415276339145661267">Administrar tu Cuenta de Google</translation> +<translation id="4427306783828095590">La protección mejorada permite bloquear mejor la suplantación de identidad (phishing) y el software malicioso.</translation> <translation id="4440958355523780886">Google proporcionó la página básica. Presiona para cargar la versión original.</translation> <translation id="4452411734226507615">Cierra la pestaña <ph name="TAB_TITLE" /></translation> <translation id="4452548195519783679">Se agregó a favoritos en <ph name="FOLDER_NAME" /></translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb index bc3794ea..75b79c8 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Navega más rápido. Usa menos datos.</translation> <translation id="3298243779924642547">Básico</translation> <translation id="3303414029551471755">¿Quieres continuar para descargar el contenido?</translation> -<translation id="3306398118552023113">Esta aplicación se está ejecutando en Chrome</translation> <translation id="3315103659806849044">En estos momentos estás personalizando los ajustes de los servicios de Google y sincronización. Para activar finalmente la sincronización, toca el botón Confirmar, que se encuentra casi al final de la pantalla. Desplázate hacia arriba</translation> <translation id="3328801116991980348">Información del sitio</translation> <translation id="3334729583274622784">¿Cambiar la extensión del archivo?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb index 7e8f885..687b731 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Sirvige kiiremini. Kasutage vähem andmemahtu.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Kas soovite jätkata sisu allalaadimist?</translation> -<translation id="3306398118552023113">Rakendus töötab Chrome'is</translation> <translation id="3315103659806849044">Kohandate praegu sünkroonimise ja Google'i teenuste seadeid. Sünkroonimise sisselülitamiseks puudutage ekraani alaosas nuppu Kinnita. Liigu üles</translation> <translation id="3328801116991980348">Saiditeave</translation> <translation id="3334729583274622784">Kas muuta faililaiendit?</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 3c6bdef7..1577a16a 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Arakatu bizkorrago. Erabili datu gutxiago.</translation> <translation id="3298243779924642547">Oinarrizkoa</translation> <translation id="3303414029551471755">Aurrera egin eta edukia deskargatu nahi duzu?</translation> -<translation id="3306398118552023113">Chrome-n da abian aplikazioa</translation> <translation id="3315103659806849044">Sinkronizazioaren eta Google zerbitzuaren ezarpenak pertsonalizatzen ari zara. Sinkronizazioa aktibatzeko, sakatu pantailaren behealdean dagoen Berretsi botoia. Joan gora</translation> <translation id="3328801116991980348">Webgunearen informazioa</translation> <translation id="3334729583274622784">Fitxategi-luzapena aldatu nahi duzu?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb index 1fb7f32..24aad0d2 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">سریعتر مرور کنید. از داده کمتری استفاده کنید.</translation> <translation id="3298243779924642547">ساده</translation> <translation id="3303414029551471755">ادامه میدهید و محتوا را بارگیری میکنید؟</translation> -<translation id="3306398118552023113">این برنامه در Chrome درحال اجرا است</translation> <translation id="3315103659806849044">شما درحال سفارشی کردن تنظیمات همگامسازی و سرویسهای Google هستید. برای تکمیل روشن کردن همگامسازی، روی دکمه «تأیید» در پایین صفحه ضربه بزنید. پیمایش به بالا</translation> <translation id="3328801116991980348">اطلاعات سایت</translation> <translation id="3334729583274622784">پسوند فایل تغییر کند؟</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb index ccc981e..f3b54c3c 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Selaa nettiä nopeammin. Käytä vähemmän dataa.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Jatketaanko sisällön lataamiseen?</translation> -<translation id="3306398118552023113">Tämä sovellus on käynnissä Chromessa</translation> <translation id="3315103659806849044">Yksilöit parhaillaan synkronoinnin ja Google-palvelujen asetuksia. Viimeistele synkronoinnin käyttöönotto napauttamalla näytön alaosasta Vahvista-painiketta. Siirry ylös</translation> <translation id="3328801116991980348">Tietoja sivustosta</translation> <translation id="3334729583274622784">Vaihdetaanko tiedostotunniste?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb index 3b63f63..0a5db10 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Mag-browse nang mas mabilis. Gumamit ng mas kaunting data.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Magpatuloy na i-download ang content?</translation> -<translation id="3306398118552023113">Gumagana ang app na ito sa Chrome</translation> <translation id="3315103659806849044">Kasalukuyan mong kino-customize ang iyong mga setting ng Pag-sync at serbisyo ng Google. Para tapusin ang pag-on ng pag-sync, i-tap ang button na Kumpirmahin malapit sa ibaba ng screen. Mag-navigate pataas</translation> <translation id="3328801116991980348">Impormasyon ng site</translation> <translation id="3334729583274622784">Baguhin ang file extension?</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 9690cf9f..dc00f1c 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Naviguez plus vite. Utilisez moins de données.</translation> <translation id="3298243779924642547">Simplifié</translation> <translation id="3303414029551471755">Lancer le téléchargement du contenu?</translation> -<translation id="3306398118552023113">Cette application s'exécute dans Google Chrome</translation> <translation id="3315103659806849044">Vous personnalisez actuellement les paramètres relatifs aux services Google et à la synchronisation. Pour valider l'activation de la synchronisation, touchez le bouton Confirmer dans le bas de l'écran. Revenir au haut de la page</translation> <translation id="3328801116991980348">Information sur le site</translation> <translation id="3334729583274622784">Modifier l'extension du fichier?</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 e003f357..4804396 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Naviguez plus rapidement en consommant moins de données</translation> <translation id="3298243779924642547">Simplifié</translation> <translation id="3303414029551471755">Poursuivre et télécharger le contenu ?</translation> -<translation id="3306398118552023113">Cette application s'exécute dans Chrome</translation> <translation id="3315103659806849044">Vous personnalisez actuellement les paramètres relatifs aux services Google et à la synchronisation. Pour valider l'activation de la synchronisation, appuyez sur le bouton "Confirmer" en bas de l'écran. Revenir en haut de la page</translation> <translation id="3328801116991980348">Informations sur le site</translation> <translation id="3334729583274622784">Modifier l'extension du fichier ?</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 1b8c33148..26e4b6ca 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Navega máis rápido. Usa menos datos.</translation> <translation id="3298243779924642547">Básico</translation> <translation id="3303414029551471755">Queres continuar coa descarga do contido?</translation> -<translation id="3306398118552023113">Esta aplicación execútase en Chrome</translation> <translation id="3315103659806849044">Estás personalizando as opcións de configuración dos servizos de Google e de sincronización. Pera rematar de activar a sincronización, toca o botón Confirmar, situado preto da parte inferior da pantalla. Vai cara arriba</translation> <translation id="3328801116991980348">Información do sitio</translation> <translation id="3334729583274622784">Queres cambiar a extensión do ficheiro?</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 85e15886..0b99333 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
@@ -309,7 +309,6 @@ <translation id="3295530008794733555">વધુ ઝડપથી બ્રાઉઝ કરો. ઓછા ડેટાનો ઉપયોગ કરો.</translation> <translation id="3298243779924642547">લાઇટ</translation> <translation id="3303414029551471755">કન્ટેન્ટ ડાઉનલોડ કરવા માટે આગળ વધીએ?</translation> -<translation id="3306398118552023113">આ ઍપ Chromeમાં ચાલી રહી છે</translation> <translation id="3315103659806849044">તમે હાલમાં તમારા સિંક અને Google સેવા સેટિંગને કસ્ટમાઇઝ કરી રહ્યાં છો. સિંક ચાલુ કરવાનું પૂર્ણ કરવા માટે, સ્ક્રીનની નીચેની બાજુએ કન્ફર્મ કરો બટન પર ટૅપ કરો. ઉપર નૅવિગેટ કરો</translation> <translation id="3328801116991980348">સાઇટ માહિતી</translation> <translation id="3334729583274622784">ફાઇલનું એક્સ્ટેંશન બદલવું છે?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb index 1d395b9..fb5def8a 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">तेज़ी से ब्राउज़ करें. कम डेटा इस्तेमाल करें.</translation> <translation id="3298243779924642547">लाइट</translation> <translation id="3303414029551471755">सामग्री डाउनलोड करने के लिए आगे बढ़ें?</translation> -<translation id="3306398118552023113">Chrome में यह ऐप्लिकेशन चल रहा है</translation> <translation id="3315103659806849044">आप इस समय अपनी सिंक की सुविधा और Google सेवा की सेटिंग कस्टमाइज़ कर रहे हैं. सिंक चालू करने की प्रक्रिया पूरी करने के लिए, स्क्रीन के निचले हिस्से पर मौजूद 'पुष्टि करें' बटन पर टैप करें. ऊपर जाएं</translation> <translation id="3328801116991980348">साइट जानकारी</translation> <translation id="3334729583274622784">फ़ाइल एक्सटेंशन बदलना चाहते हैं?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb index 53928cea..d568afc 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Pregledavajte brže. Smanjite podatkovni promet.</translation> <translation id="3298243779924642547">Jednostav.</translation> <translation id="3303414029551471755">Želite li nastaviti s preuzimanjem sadržaja?</translation> -<translation id="3306398118552023113">Ova se aplikacija izvodi u Chromeu</translation> <translation id="3315103659806849044">Trenutačno prilagođavate postavke sinkronizacije i Googleovih usluga. Da biste dovršili uključivanje sinkronizacije, dodirnite gumb Potvrdi pri dnu zaslona. Natrag</translation> <translation id="3328801116991980348">Informacije o web-lokaciji</translation> <translation id="3334729583274622784">Promijeniti datotečni nastavak?</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 1aa8b5e..8dc80d05 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
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Gyorsabb böngészés. Kevesebb adathasználat.</translation> <translation id="3298243779924642547">Egyszerű</translation> <translation id="3303414029551471755">Biztosan letölti a tartalmat?</translation> -<translation id="3306398118552023113">Ez az alkalmazás fut a Chrome-ban</translation> <translation id="3315103659806849044">Jelenleg a Szinkronizálás és Google beállításait szabja személyre. A szinkronizálás bekapcsolásának véglegesítéséhez koppintson a képernyő alján található Megerősítés gombra. Fel</translation> <translation id="3328801116991980348">Webhelyadatok</translation> <translation id="3334729583274622784">Módosítja a fájl kiterjesztését?</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 37ca81e5..2a5326b 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Որոնեք ավելի արագ: Օգտագործեք ավելի քիչ թրաֆիկ:</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Ներբեռնե՞լ բովանդակությունը:</translation> -<translation id="3306398118552023113">Այս հավելվածն աշխատում է Chrome-ում</translation> <translation id="3315103659806849044">Դուք ներկայումս անհատականացնում եք համաժամացման և Google-ի ծառայությունների կարգավորումները: Անհատականացումն ավարտելու և համաժամացումը միացնելու համար հպեք «Հաստատել» կոճակին էկրանի ներքևի հատվածում: Անցնել վերև</translation> <translation id="3328801116991980348">Տեղեկություններ կայքի մասին</translation> <translation id="3334729583274622784">Փոխե՞լ ֆայլի ընդլայնումը</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb index b704146..213dc336 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Browsing lebih cepat. Gunakan lebih sedikit kuota.</translation> <translation id="3298243779924642547">Ringan</translation> <translation id="3303414029551471755">Lanjutkan untuk mendownload konten?</translation> -<translation id="3306398118552023113">Aplikasi ini dijalankan di Chrome</translation> <translation id="3315103659806849044">Anda sedang menyesuaikan setelan layanan Google dan Sinkronisasi. Untuk menyelesaikan pengaktifan sinkronisasi, ketuk Konfirmasi di dekat bagian bawah layar. Kembali ke atas</translation> <translation id="3328801116991980348">Informasi situs</translation> <translation id="3334729583274622784">Ubah ekstensi file?</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 f602991..7a6b669 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
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Vafraðu hraðar. Með minna gagnamagni.</translation> <translation id="3298243779924642547">Léttútgáfa</translation> <translation id="3303414029551471755">Viltu halda áfram og sækja efnið?</translation> -<translation id="3306398118552023113">Þetta forrit keyrir í Chrome</translation> <translation id="3315103659806849044">Þú ert að sérsníða stillingar samstillingar og þjónustu Google. Til að ljúka við að kveikja á samstillingu skaltu ýta á hnappinn „Staðfesta“ neðarlega á skjánum. Fara upp</translation> <translation id="3328801116991980348">Upplýsingar um vefsvæði</translation> <translation id="3334729583274622784">Breyta skráarendingu?</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 6f5d2d8..6bb828a 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Naviga più velocemente. Consuma meno dati.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Procedere al download dei contenuti?</translation> -<translation id="3306398118552023113">Questa app è in esecuzione in Chrome</translation> <translation id="3315103659806849044">Stai personalizzando le impostazioni Sincronizzazione e servizi Google. Per terminare l'attivazione della sincronizzazione, tocca il pulsante Conferma nella parte inferiore dello schermo. Torna indietro</translation> <translation id="3328801116991980348">Informazioni sito</translation> <translation id="3334729583274622784">Vuoi cambiare l'estensione del file?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb index cdaad63..bfa284ff 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">יותר מהירות. פחות נתונים.</translation> <translation id="3298243779924642547">מצב Lite</translation> <translation id="3303414029551471755">האם להוריד את התוכן?</translation> -<translation id="3306398118552023113">האפליקציה הזו פועלת ב-Chrome</translation> <translation id="3315103659806849044">מתבצעת עכשיו התאמה אישית של הגדרות הסנכרון ושירותי Google. כדי להשלים את הפעלת הסנכרון, יש להקיש על הלחצן 'אישור' קרוב לתחתית המסך. ניווט למעלה</translation> <translation id="3328801116991980348">פרטי אתר</translation> <translation id="3334729583274622784">לשנות את סיומת הקובץ?</translation> @@ -1101,7 +1100,7 @@ <translation id="9040142327097499898">יש הרשאה להצגת הודעות. המיקום כבוי בשביל המכשיר הזה.</translation> <translation id="9041669420854607037">{FILE_COUNT,plural, =1{סרטון אחד (#)}two{# סרטונים}many{# סרטונים}other{# סרטונים}}</translation> <translation id="9042893549633094279">פרטיות ואבטחה</translation> -<translation id="9050666287014529139">משפט-סיסמה</translation> +<translation id="9050666287014529139">ביטוי סיסמה</translation> <translation id="9063523880881406963">כיבוי של 'בקשת אתר עבור מחשב שולחני'</translation> <translation id="9065203028668620118">עריכה</translation> <translation id="9065383040763568503">נתונים מאוחסנים שלא מוגדרים כחשובים ב-Chrome (למשל: אתרים ללא הגדרות שמורות או כאלה שתדירות הביקור בהם נמוכה)</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb index 19d6416..cf3fb47 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">高速ブラウジングで、データ使用量も抑えることができます。</translation> <translation id="3298243779924642547">軽量版</translation> <translation id="3303414029551471755">コンテンツのダウンロードに進みますか?</translation> -<translation id="3306398118552023113">このアプリは Chrome で実行中です</translation> <translation id="3315103659806849044">[同期と Google サービス] の設定をカスタマイズしています。同期を有効にしたら、画面の下部にある [確認] をタップしてください。上へ移動</translation> <translation id="3328801116991980348">サイト情報</translation> <translation id="3334729583274622784">ファイル拡張子を変更しますか?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb index 3415f40..5caa0c0 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">დაათვალიერეთ ვები უფრო სწრაფად. დახარჯეთ ნაკლები ტრაფიკი.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">გაგრძელდეს შინაარსის ჩამოტვირთვა?</translation> -<translation id="3306398118552023113">ეს აპი გაშვებულია Chrome-ში</translation> <translation id="3315103659806849044">ამჟამად თქვენ ახორციელებთ სინქრონიზაციისა და Google სერვისის პარამეტრების მორგებას. სინქრონიზაციის ჩართვის დასასრულებლად შეეხეთ დადასტურების ღილაკს ეკრანის ქვედა ნაწილთან. ზემოთ გადასვლა</translation> <translation id="3328801116991980348">საიტის ინფორმაცია</translation> <translation id="3334729583274622784">გსურთ ფაილის გაფართოების შეცვლა?</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 ca0fc78..5d91f39 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Интернетті жылдам шолып, трафикті үнемдейсіз.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Мазмұн жүктеуді жалғастырасыз ба?</translation> -<translation id="3306398118552023113">Бұл қолданба Chrome браузерінде жұмыс істеп тұр</translation> <translation id="3315103659806849044">Синхрондау және Google қызметі параметрлерін реттеудесіз. Синхрондауды қосуды аяқтау үшін экранның төменгі жағындағы "Растау" түймесін түртіңіз. Жоғары қарай өту</translation> <translation id="3328801116991980348">Сайт ақпараты</translation> <translation id="3334729583274622784">Файл кеңейтімін өзгертесіз бе?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb index 0c06ee14..7587eba 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">រុករករហ័សជាងមុន។ ប្រើទិន្នន័យតិចជាងមុន។</translation> <translation id="3298243779924642547">មុខងារស្រាល</translation> <translation id="3303414029551471755">បន្តដើម្បីទាញយកមាតិកានេះ?</translation> -<translation id="3306398118552023113">កម្មវិធីនេះកំពុងដំណើរការនៅក្នុង Chrome</translation> <translation id="3315103659806849044">ឥឡូវនេះ អ្នកកំពុងប្ដូរការកំណត់សេវាកម្ម Google និងសមកាលកម្មរបស់អ្នកតាមបំណង។ ដើម្បីបញ្ចប់ការបើកសមកាលកម្ម សូមចុចប៊ូតុង "បញ្ជាក់" នៅជិតផ្នែកខាងក្រោមនៃអេក្រង់។ រំកិលឡើងលើ</translation> <translation id="3328801116991980348">ព័ត៌មានគេហទំព័រ</translation> <translation id="3334729583274622784">ប្ដូរកន្ទុយឯកសារឬ?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb index a1a97b606..5897c9d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
@@ -312,7 +312,6 @@ <translation id="3295530008794733555">ವೇಗವಾಗಿ ಬ್ರೌಸ್ ಮಾಡಿ. ಕಡಿಮೆ ಡೇಟಾವನ್ನು ಬಳಸಿ.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">ವಿಷಯವನ್ನು ಡೌನ್ಲೊಡ್ ಮಾಡಲು ಮುಂದುವರಿಯುವುದೇ?</translation> -<translation id="3306398118552023113">ಈ ಆ್ಯಪ್, Chrome ನಲ್ಲಿ ರನ್ ಆಗುತ್ತಿದೆ</translation> <translation id="3315103659806849044">ನೀವು ಪ್ರಸ್ತುತವಾಗಿ ನಿಮ್ಮ ಸಿಂಕ್ ಮತ್ತು Google ಸೇವೆ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡುತ್ತಿರುವಿರಿ. ಸಿಂಕ್ ಆನ್ ಮಾಡುವುದನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು, ಪರದೆಯ ಕೆಳಭಾಗದಲ್ಲಿ ಸಮೀಪದಲ್ಲಿರುವ 'ದೃಢೀಕರಿಸಿ' ಬಟನ್ ಟ್ಯಾಪ್ ಮಾಡಿ. ಮೇಲಕ್ಕೆ ನ್ಯಾವಿಗೇಟ್</translation> <translation id="3328801116991980348">ಸೈಟ್ ಮಾಹಿತಿ</translation> <translation id="3334729583274622784">ಫೈಲ್ ವಿಸ್ತರಣೆಯನ್ನು ಬದಲಿಸುವುದೇ?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb index 74f592b..e5449dc 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">데이터를 절약하면서 웹을 더 빠르게 탐색하세요</translation> <translation id="3298243779924642547">라이트</translation> <translation id="3303414029551471755">콘텐츠를 다운로드하시겠습니까?</translation> -<translation id="3306398118552023113">이 앱은 Chrome에서 실행 중입니다.</translation> <translation id="3315103659806849044">현재 동기화 및 Google 서비스 설정을 맞춤설정 중입니다. 동기화 켜기를 마무리하려면 화면 하단 근처에 있는 확인 버튼을 탭하세요. 위로 이동</translation> <translation id="3328801116991980348">사이트 정보</translation> <translation id="3334729583274622784">파일 확장자를 변경하시겠습니까?</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 57d9dec..deb3e77 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Ылдамыраак серептеңиз. Интернетти үнөмдөңүз.</translation> <translation id="3298243779924642547">Жөнөкөй</translation> <translation id="3303414029551471755">Мазмун жүктөлүп алына берсинби?</translation> -<translation id="3306398118552023113">Бул колдонмо Chrome'до иштеп жатат</translation> <translation id="3315103659806849044">Учурда Шайкештирүүнү жана Google кызматынын жөндөөлөрүн ыңгайлаштырып жатасыз. Шайкештирүүнү күйүгүзүү үчүн, экрандын ылдый жагында жайгашкан "Ырастоо" баскычын таптап коюңуз. Жогору чабыттоо</translation> <translation id="3328801116991980348">Сайт жөнүндө маалымат</translation> <translation id="3334729583274622784">Файлдын кеңейтүүсү өчүрүлсүнбү?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb index 655a8c3..4e722082 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">ທ່ອງເວັບໄດ້ໄວກວ່າ. ໃຊ້ອິນເຕີເນັດໜ້ອຍກວ່າ.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">ສືບຕໍ່ໄປດາວໂຫຼດເນື້ອໃນບໍ?</translation> -<translation id="3306398118552023113">ແອັບນີ້ກຳລັງເປີດໃຊ້ໃນ Chrome</translation> <translation id="3315103659806849044">ໃນປັດຈຸບັນທ່ານກຳລັງປັບແຕ່ງການຕັ້ງຄ່າການຊິ້ງຂໍ້ມູນ ແລະ ການບໍລິການຂອງ Google. ເພື່ອສຳເລັດການເປີດການຊິ້ງຂໍ້ມູນ, ກະລຸນາແຕະປຸ່ມຢືນຢັນຢູ່ໃກ້ລຸ່ມສຸດຂອງໜ້າຈໍ. ເລື່ອນຂຶ້ນເທິງ</translation> <translation id="3328801116991980348">ຂໍ້ມູນເວັບໄຊທ໌</translation> <translation id="3334729583274622784">ປ່ຽນນາມສະກຸນໄຟລ໌ບໍ?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb index 33a93cd..5ca13bbf 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Naršykite greičiau. Naudokite mažiau duomenų.</translation> <translation id="3298243779924642547">Supapr.</translation> <translation id="3303414029551471755">Tęsti turinio atsisiuntimo procesą?</translation> -<translation id="3306398118552023113">Ši programa veikia naršyklėje „Chrome“</translation> <translation id="3315103659806849044">Šiuo metu tinkinate savo sinchronizavimo ir „Google“ paslaugų nustatymus. Jei norite užbaigti sinchronizavimo įjungimo procesą, palieskite mygtuką „Patvirtinti“ netoli ekrano apačios. Eiti į viršų</translation> <translation id="3328801116991980348">Svetainės informacija</translation> <translation id="3334729583274622784">Pakeisti failo plėtinį?</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 ca2b125..b92d8af7 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
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Ietaupiet laiku. Samaziniet datu lietojumu.</translation> <translation id="3298243779924642547">Vienkāršota</translation> <translation id="3303414029551471755">Vai turpināt ar satura lejupielādi?</translation> -<translation id="3306398118552023113">Šī lietotne darbojas pārlūkā Chrome</translation> <translation id="3315103659806849044">Šobrīd jūs pielāgojat sinhronizēšanas un Google pakalpojuma iestatījumus. Lai pabeigtu sinhronizēšanas ieslēgšanu, pieskarieties pogai Apstiprināt, kas atrodas ekrāna apakšdaļā. Pārvietoties augšup</translation> <translation id="3328801116991980348">Vietnes informācija</translation> <translation id="3334729583274622784">Vai mainīt faila paplašinājumu?</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 746aaf58..968d33a2 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
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Прелистувајте побрзо. Користете помалку мобилен интернет.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Продолжете со преземање на содржината?</translation> -<translation id="3306398118552023113">Апликацијава се извршува во Chrome</translation> <translation id="3315103659806849044">Моментално ги приспособувате поставките за синхронизација и услугата Google. За да го завршите вклучувањето на синхронизацијата, допрете на копчето „Потврди“ долу на екранот. Движете се нагоре</translation> <translation id="3328801116991980348">Информации за веб-локација</translation> <translation id="3334729583274622784">Дали да се промени наставката на датотеката?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb index 958aa60..5cd3f35 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">വേഗത്തിൽ ബ്രൗസ് ചെയ്യൂ. കുറച്ച് ഡാറ്റ ഉപയോഗിക്കൂ.</translation> <translation id="3298243779924642547">ലൈറ്റ്</translation> <translation id="3303414029551471755">ഉള്ളടക്കം ഡൗൺലോഡ് ചെയ്യുന്നതിലേക്ക് തുടരണോ?</translation> -<translation id="3306398118552023113">Chrome-ൽ ഈ ആപ്പ് റൺ ചെയ്യുന്നു</translation> <translation id="3315103659806849044">നിലവിൽ നിങ്ങൾ സമന്വയ, Google സേവന ക്രമീകരണം ഇഷ്ടാനുസൃതമാക്കുന്നു. സമന്വയിപ്പിക്കൽ ഓണാക്കുന്നത് പൂർത്തിയാക്കാൻ, സ്ക്രീനിൻ്റെ ചുവടുവശത്തിന് സമീപമുള്ള 'സ്ഥിരീകരിക്കുക' ടാപ്പ് ചെയ്യുക. മുകളിലേക്ക് നാവിഗേറ്റ് ചെയ്യുക</translation> <translation id="3328801116991980348">സൈറ്റ് വിവരങ്ങള്</translation> <translation id="3334729583274622784">ഫയൽ എക്സ്റ്റൻഷൻ മാറ്റണോ?</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 9cfe51c2..4a7150e 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Хөтчийг илүү хурдан ашиглаарай. Бага дата ашиглах.</translation> <translation id="3298243779924642547">Энгийн</translation> <translation id="3303414029551471755">Контентыг татаж авах үйлдлийг эхлүүлэх үү?</translation> -<translation id="3306398118552023113">Энэ апп Chrome-д ажиллаж байна</translation> <translation id="3315103659806849044">Та одоогоор Синк болон Google-н үйлчилгээний тохиргоогоо өөрчилж байна. Синкийг асааж дуусгахын тулд дэлгэцийн доод хэсгийн ойролцоо байгаа Зөвшөөрөх товчлуурыг товшино уу. Дээш шилжих</translation> <translation id="3328801116991980348">Сайтын мэдээлэл</translation> <translation id="3334729583274622784">Файлын өргөтгөлийг өөрчлөх үү?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb index 843e3e1..d408ed5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">आणखी जलद ब्राउझ करा. कमी डेटा वापरा.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">आशय डाउनलोड करणे सुरू ठेवायचे?</translation> -<translation id="3306398118552023113">हे अॅप Chrome मध्ये रन होत आहे</translation> <translation id="3315103659806849044">तुम्ही सध्या तुमचे सिंक आणि Google सेवा सेटिंग्ज कस्टमाइझ करत आहात. सिंक सुरू करणे पूर्ण करण्यासाठी, स्क्रीनच्या खालच्या बाजूला निश्चित करा बटणावर टॅप करा. वर नेव्हिगेट करा</translation> <translation id="3328801116991980348">साइट माहिती</translation> <translation id="3334729583274622784">फाइल एक्स्टेंशन बदलायचे आहे का?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb index df62fc2..2d28cee 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Semak imbas lebih pantas. Gunakan kurang data.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Teruskan memuat turun kandungan?</translation> -<translation id="3306398118552023113">Apl ini sedang dijalankan dalam Chrome</translation> <translation id="3315103659806849044">Anda sedang menyesuaikan tetapan Penyegerakan dan perkhidmatan Google anda. Untuk menyelesaikan tindakan menghidupkan penyegerakan, ketik butang Sahkan berdekatan bahagian bawah skrin. Navigasi ke atas</translation> <translation id="3328801116991980348">Maklumat tapak</translation> <translation id="3334729583274622784">Tukar sambungan fail?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb index 47d8704..3210c20 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">ပိုမိုမြန်ဆန်စွာ ရှာဖွေပါ။ ဒေတာ လျှော့၍သုံးပါ။</translation> <translation id="3298243779924642547">အပေါ့စား</translation> <translation id="3303414029551471755">အကြောင်းအရာအား ဒေါင်းလုပ်လုပ်ရန် ရှေ့ဆက်မလား?</translation> -<translation id="3306398118552023113">ဤအက်ပ်သည် Chrome တွင် ပွင့်နေပါသည်</translation> <translation id="3315103659806849044">သင်သည် လောလောဆယ် သင့် 'စင့်ခ်လုပ်ခြင်းနှင့် Google ဝန်ဆောင်မှု' ဆက်တင်များကို စိတ်ကြိုက်ပြုလုပ်နေသည်။ စင့်ခ်ဖွင့်ခြင်း အပြီးသတ်ရန် မျက်နှာပြင်အောက်ခြေနားရှိ 'အတည်ပြုရန်' ခလုတ်ကို တို့ပါ။ အပေါ်သို့ သွားရန်</translation> <translation id="3328801116991980348">ဆိုက် အချက်အလက်များ</translation> <translation id="3334729583274622784">ဖိုင်နောက်ဆက်တွဲ ပြောင်းမလား။</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 2e48722..7c9efbf6 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">अझ छिटो ब्राउज गर्नुहोस्। कम डेटा प्रयोग गर्नुहोस्।</translation> <translation id="3298243779924642547">लाइट</translation> <translation id="3303414029551471755">सामग्री डाउनलोड गर्न अगाडि बढ्ने हो?</translation> -<translation id="3306398118552023113">यो एप Chrome मा चलिरहेको छ</translation> <translation id="3315103659806849044">तपाईं हाल आफ्ना सिंक तथा Google का सेवासम्बन्धी सेटिङहरूलाई आफू अनुकूल पार्दै हुनुहुन्छ। सिंक सेवा सक्रिय पार्ने कार्य पूरा गर्न स्क्रिन बटनको छेवैमा रहेको सुनिश्चित गर्नुहोस् नामक बटनमा ट्याप गर्नुहोस्। माथि नेभिगेसन गर्नुहोस्</translation> <translation id="3328801116991980348">साइट जानकारी</translation> <translation id="3334729583274622784">फाइलको एक्स्टेन्सन परिवर्तन गर्ने हो?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb index d2ade60..dbc2cabb 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Surf sneller en verbruik minder data</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Doorgaan met het downloaden van de content?</translation> -<translation id="3306398118552023113">Deze app wordt uitgevoerd in Chrome</translation> <translation id="3315103659806849044">Je past op dit moment je instellingen voor synchronisatie en Google-services aan. Als je synchronisatie wilt inschakelen, tik je op Bevestigen onderaan het scherm. Omhoog navigeren</translation> <translation id="3328801116991980348">Site-informatie</translation> <translation id="3334729583274622784">Bestandsextensie wijzigen?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb index 27801a49..ba6e9f47 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Surf raskere. Bruk mindre data.</translation> <translation id="3298243779924642547">Forenklet</translation> <translation id="3303414029551471755">Vil du gå videre med å laste ned innholdet?</translation> -<translation id="3306398118552023113">Denne appen kjører i Chrome</translation> <translation id="3315103659806849044">Du holder på å tilpasse innstillingene for Synkronisering og Google-tjenester. For å gjøre deg ferdig med å slå på synkronisering, trykk på Bekreft-knappen nederst på skjermen. Gå opp</translation> <translation id="3328801116991980348">Informasjon om nettstedet</translation> <translation id="3334729583274622784">Vil du endre filetternavnet?</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 a0d7067..86d7a216 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">ଦ୍ରୁତତର ବ୍ରାଉଜ୍ କରନ୍ତୁ। କମ୍ ଡାଟା ବ୍ୟବହାର କରନ୍ତୁ।</translation> <translation id="3298243779924642547">ଲାଇଟ୍</translation> <translation id="3303414029551471755">ବିଷୟବସ୍ତୁ ଡାଉନ୍ଲୋଡ୍ କରିବା ପାଇଁ ଆଗକୁ ବଢ଼ିବେ?</translation> -<translation id="3306398118552023113">Chromeରେ ଏହି ଆପ୍ ଚାଲୁଛି</translation> <translation id="3315103659806849044">ଆପଣ ବର୍ତ୍ତମାନ ଆପଣଙ୍କର ସିଙ୍କ ଏବଂ Google ସେବାର ସେଟିଂସ୍ଗୁଡ଼ିକ କଷ୍ଟମାଇଜ୍ କରୁଛନ୍ତି। ସିଙ୍କ ଚାଲୁ କରିବା ଶେଷ କରିବା ପାଇଁ, ସ୍କ୍ରିନ୍ର ତଳ ପାର୍ଶ୍ୱରେ ଥିବା ନିଶ୍ଚିତ ବଟନ୍ରେ ଟାପ୍ କରନ୍ତୁ। ଉପରକୁ ନାଭିଗେଟ୍ କରନ୍ତୁ</translation> <translation id="3328801116991980348">ସାଇଟ୍ ସୂଚନା</translation> <translation id="3334729583274622784">ଫାଇଲ୍ର ଏକ୍ସଟେନ୍ସନ୍ ବଦଳାଇବେ କି?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb index df68453db..72c2e0c 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb
@@ -309,7 +309,6 @@ <translation id="3295530008794733555">ਵਧੇਰੇ ਤੇਜ਼ ਬ੍ਰਾਊਜ਼ ਕਰੋ। ਘੱਟ ਡਾਟਾ ਵਰਤੋ।</translation> <translation id="3298243779924642547">ਲਾਈਟ</translation> <translation id="3303414029551471755">ਕੀ ਸਮੱਗਰੀ ਡਾਊਨਲੋਡ ਕਰਨਾ ਜਾਰੀ ਰੱਖਣਾ ਹੈ?</translation> -<translation id="3306398118552023113">ਇਹ ਐਪ Chrome ਵਿੱਚ ਚੱਲ ਰਹੀ ਹੈ</translation> <translation id="3315103659806849044">ਤੁਸੀਂ ਇਸ ਵੇਲੇ ਆਪਣੀਆਂ ਸਮਕਾਲੀਕਰਨ ਅਤੇ Google ਸੇਵਾ ਸੈਟਿੰਗਾਂ ਵਿਉਂਤਬੱਧ ਕਰ ਰਹੇ ਹੋ। ਸਮਕਾਲੀਕਰਨ ਚਾਲੂ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਪੂਰੀ ਕਰਨ ਲਈ, ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ 'ਪੁਸ਼ਟੀ ਕਰੋ' ਬਟਨ 'ਤੇ ਟੈਪ ਕਰੋ। ਉੱਪਰ ਵੱਲ ਨੈਵੀਗੇਟ ਕਰੋ</translation> <translation id="3328801116991980348">ਸਾਈਟ ਜਾਣਕਾਰੀ</translation> <translation id="3334729583274622784">ਕੀ ਫ਼ਾਈਲ ਐਕਸਟੈਂਸ਼ਨ ਨੂੰ ਬਦਲਣਾ ਹੈ?</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 72acdf2..1996f673 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
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Szybsze przeglądanie. Mniejsze zużycie danych.</translation> <translation id="3298243779924642547">Lżejsza</translation> <translation id="3303414029551471755">Przejść do pobrania treści?</translation> -<translation id="3306398118552023113">Ta aplikacja działa w Chrome</translation> <translation id="3315103659806849044">Teraz dostosowujesz ustawienia synchronizacji i usług Google. Aby zakończyć włączanie synchronizacji, na dole ekranu kliknij przycisk Potwierdź. Przejdź wyżej</translation> <translation id="3328801116991980348">Informacje o witrynie</translation> <translation id="3334729583274622784">Zmienić rozszerzenie pliku?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb index 4f0a89e..8ed2e47 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Navegue com mais rapidez. Use menos dados.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Continuar com o download do conteúdo?</translation> -<translation id="3306398118552023113">Este app está sendo executado no Chrome</translation> <translation id="3315103659806849044">No momento, você está personalizando suas configurações de sincronização e de serviço do Google. Para terminar de ativar a sincronização, toque no botão "Confirmar" na parte inferior da tela. Navegar para cima</translation> <translation id="3328801116991980348">Informações do site</translation> <translation id="3334729583274622784">Mudar extensão do arquivo?</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 b3292ea..a2d6dce 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
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Navegue mais depressa. Utilize menos dados.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Pretende transferir o conteúdo?</translation> -<translation id="3306398118552023113">Esta aplicação está a ser executada no Chrome</translation> <translation id="3315103659806849044">Está atualmente a personalizar as definições de Sincronização e dos serviços Google. Para concluir a ativação da sincronização, toque no botão Confirmar junto à parte inferior do ecrã. Navegar para cima</translation> <translation id="3328801116991980348">Informações do site</translation> <translation id="3334729583274622784">Pretende alterar a extensão de ficheiro?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb index a0644de..e1b1d21 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Navighează mai rapid. Folosește mai puține date.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Continui pentru descărcarea conținutului?</translation> -<translation id="3306398118552023113">Această aplicație rulează în Chrome</translation> <translation id="3315103659806849044">Acum personalizezi setările pentru sincronizare și serviciul Google. Pentru a finaliza activarea sincronizării, atinge butonul Confirmă din partea de jos a ecranului. Navighează în sus</translation> <translation id="3328801116991980348">Informații despre site</translation> <translation id="3334729583274622784">Modifici extensia de fișier?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb index 99aa29d3..7b3c2b8 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Быстрый просмотр сайтов и экономия трафика</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Скачать?</translation> -<translation id="3306398118552023113">Это приложение запущено в Chrome.</translation> <translation id="3315103659806849044">Сейчас вы находитесь на странице настроек сервисов Google и синхронизации. Чтобы включить синхронизацию, нажмите кнопку "Подтвердить" в нижней части экрана. Перейти вверх</translation> <translation id="3328801116991980348">Информация о сайте</translation> <translation id="3334729583274622784">Изменить расширение имени файла?</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 ebef9b36..9ee6d3b 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">වේගයෙන් බ්රවුස් කරන්න. දත්ත අඩුවෙන් භාවිතා කරන්න.</translation> <translation id="3298243779924642547">සැහැල්ලු</translation> <translation id="3303414029551471755">අන්තර්ගතය බාගැනීම අරඹන්නද?</translation> -<translation id="3306398118552023113">මෙම යෙදුම Chrome තුළ ධාවන වේ</translation> <translation id="3315103659806849044">ඔබ දැනට ඔබේ සමමුහූර්ත සහ Google සේවා සැකසීම් අභිරුචි කරයි. සමමුහූර්තය ක්රියාත්මක කිරීම අවසන් කිරීමට, තිරයේ යට කොටස ළඟ ඇති තහවුරු කිරීමේ බොත්තමට තට්ටු කරන්න. ඉහළට සංචලන කරන්න</translation> <translation id="3328801116991980348">අඩවි තොරතුරු</translation> <translation id="3334729583274622784">ගොනු දිගුව වෙනස් කරන්නේද?</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 8496c82..1b558a6 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
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">Snímanie obrazovky</translation> <translation id="1111673857033749125">Tu sa zobrazia záložky, ktoré ste uložili na iných zariadeniach.</translation> <translation id="1113597929977215864">Aktivovať zjednodušené zobrazenie</translation> +<translation id="1123070903960493543">Ako interagujete s Chromom, vybrané nastavenia, podrobnosti o zrúteniach Chromu</translation> <translation id="1126809382673880764">Nechráni vás pred nebezpečnými webmi, stiahnutými súbormi ani rozšíreniami. Ochrana Bezpečného prehliadania vám bude poskytovaná v náležitých prípadoch v ďalších službách Googlu, ako sú napríklad Gmail alebo Vyhľadávanie.</translation> <translation id="1129510026454351943">Podrobnosti: <ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{Na stiahnutie čaká 1 položka.}few{Na stiahnutie čakajú # položky.}many{# downloads pending.}other{Na stiahnutie čaká # položiek.}}</translation> @@ -72,6 +73,7 @@ <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> sa nedá zdieľať</translation> <translation id="1477626028522505441">Súbor <ph name="FILE_NAME" /> sa nepodarilo stiahnuť z dôvodu problémov so serverom.</translation> <translation id="1506061864768559482">Vyhľadávač</translation> +<translation id="151267239139452619">Pridať medzi stiahnuté</translation> <translation id="1513352483775369820">Záložky a webová história</translation> <translation id="1513858653616922153">Odstrániť heslo</translation> <translation id="1521774566618522728">Aktívne dnes</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825">Uložené: <ph name="DATA" /></translation> <translation id="213279576345780926">Karta <ph name="TAB_TITLE" /> je zavretá</translation> <translation id="2139186145475833000">Pridať na plochu</translation> +<translation id="214888715418183969">Vyberte, čo chcete zdieľať s Chromom. Zdieľané metriky pomôžu zlepšovať funkcie, výkonnosť aj stabilitu Chromu.</translation> <translation id="2154484045852737596">Úprava karty</translation> <translation id="2154710561487035718">Kopírovať webovú adresu</translation> <translation id="2156074688469523661">Zostávajúce weby (<ph name="NUMBER_OF_SITES" />)</translation> @@ -166,6 +169,7 @@ <translation id="2175927920773552910">QR kód</translation> <translation id="218608176142494674">Zdieľanie</translation> <translation id="2195339740518523951">Získajte najsilnejšie zabezpečenie Chromu</translation> +<translation id="2200113223741723867">Správa zdieľania údajov o používaní</translation> <translation id="2227444325776770048">Pokračovať ako <ph name="USER_FULL_NAME" /></translation> <translation id="2234876718134438132">Synchronizácia a služby Googlu</translation> <translation id="2239812875700136898">Ovládajte svoje príbehy po stlačení tlačidla Možnosti kanála Objaviť</translation> @@ -311,7 +315,6 @@ <translation id="3295530008794733555">Prehliadajte rýchlejšie. Využívajte menej dát.</translation> <translation id="3298243779924642547">Zjednoduš.</translation> <translation id="3303414029551471755">Pokračovať a stiahnuť obsah?</translation> -<translation id="3306398118552023113">Táto aplikácia je spustená v Chrome</translation> <translation id="3315103659806849044">Momentálne prispôsobujete nastavenia synchronizácie a služieb Googlu. Ak chcete dokončiť zapnutie synchronizácie, klepnite na tlačidlo Potvrdiť v dolnej časti obrazovky. Prejsť hore</translation> <translation id="3328801116991980348">Informácie o stránkach</translation> <translation id="3334729583274622784">Chcete zmeniť príponu súboru?</translation> @@ -371,12 +374,14 @@ <translation id="3771290962915251154">Toto nastavenie je deaktivované, pretože je zapnutá rodičovská kontrola</translation> <translation id="3771694256347217732">Zmluvné podmienky spoločnosti Google</translation> <translation id="3773755127849930740">Povoľte párovanie <ph name="BEGIN_LINK" />zapnutím rozhrania Bluetooth<ph name="END_LINK" /></translation> +<translation id="3773856050682458546">Základné údaje a informácie o navštívených weboch a použitých aplikáciách</translation> <translation id="3775705724665058594">Odoslanie do zariadení</translation> <translation id="3778956594442850293">Pridané na plochu</translation> <translation id="3789841737615482174">Inštalovať</translation> <translation id="3810838688059735925">Video</translation> <translation id="3810973564298564668">Spravovať</translation> <translation id="3819178904835489326">Počet odstránených stiahnutých súborov: <ph name="NUMBER_OF_DOWNLOADS" /></translation> +<translation id="3848957262889631524"><ph name="APP_NAME" /> Google ako bezpečnostný kľúč</translation> <translation id="3856096718352044181">Overte, že ide o platného poskytovateľa, alebo to skúste znova</translation> <translation id="3861633093716975811">Populárne videá</translation> <translation id="3892148308691398805">Kopírovať text</translation> @@ -404,7 +409,9 @@ <translation id="3988466920954086464">Zobraziť výsledky dynamického vyhľadávania na tomto paneli</translation> <translation id="4000212216660919741">Offline domov</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# hod.}few{# hod.}many{# hod.}other{# hod.}}</translation> +<translation id="4045764304651014138">Údaje o používaní</translation> <translation id="4056223980640387499">Sépia</translation> +<translation id="4057643060762047384">Pridajte do priečinka:</translation> <translation id="4060598801229743805">Možnosti sú k dispozícii v hornej časti obrazovky</translation> <translation id="4062305924942672200">Právne informácie</translation> <translation id="4084682180776658562">Záložka</translation> @@ -545,6 +552,7 @@ <translation id="5039804452771397117">Povoliť</translation> <translation id="5040262127954254034">Ochrana súkromia</translation> <translation id="5087580092889165836">Pridať kartu</translation> +<translation id="5091249083535528968">Rozšírené údaje o používaní</translation> <translation id="509429900233858213">Vyskytla sa chyba.</translation> <translation id="510275257476243843">Zostáva: 1 h</translation> <translation id="5123685120097942451">Karta inkognito</translation> @@ -651,6 +659,7 @@ <translation id="5833984609253377421">Zdieľať odkaz</translation> <translation id="5836192821815272682">Sťahuje sa aktualizácia Chromu…</translation> <translation id="5853623416121554550">pozastavené</translation> +<translation id="5854512288214985237">Googlu sa neodosielajú žiadne štatistiky ani prehľady zrútení</translation> <translation id="5854790677617711513">Staršie ako 30 dní</translation> <translation id="5855546874025048181">Spresniť: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">Chrome nedokáže zapnúť adaptér Bluetooth</translation> @@ -723,6 +732,7 @@ <translation id="6303969859164067831">Odhlásiť sa a vypnúť synchronizáciu</translation> <translation id="6312687380483398334">Webové aplikácie (ticho)</translation> <translation id="6316139424528454185">Verzia Androidu nie je podporovaná</translation> +<translation id="6321526113093607004">Pridať medzi záložky</translation> <translation id="6324034347079777476">Synchronizácia systému Android je zakázaná</translation> <translation id="6333140779060797560">Zdieľať pomocou aplikácie <ph name="APPLICATION" /></translation> <translation id="6337234675334993532">Šifrovanie</translation> @@ -740,6 +750,7 @@ <translation id="6402652558933147609"><ph name="VIOLATED_URL" />: <ph name="ERROR_CODE" /></translation> <translation id="6404511346730675251">Upraviť záložku</translation> <translation id="6406506848690869874">Synchronizácia</translation> +<translation id="6410404864818553978">Základné údaje o používaní</translation> <translation id="6410883413783534063">Otvorte karty a navštívte tak rôzne stránky naraz</translation> <translation id="6412673304250309937">Kontroluje webové adresy podľa zoznamu nebezpečných webov uloženého v Chrome. Ak sa vám určitý web pokúsi ukradnúť heslo alebo stiahnete škodlivý súbor, Chrome môže tiež odoslať webové adresy vrátane častí obsahu stránky Bezpečnému prehliadaniu.</translation> <translation id="641643625718530986">Tlačiť...</translation> @@ -833,6 +844,7 @@ <translation id="7015203776128479407">Počiatočné nastavenie synchronizácie nebolo dokončené. Synchronizácia je vypnutá.</translation> <translation id="7022756207310403729">Otvoriť v prehliadači</translation> <translation id="702463548815491781">Odporúčané, keď je zapnutá aplikácia TalkBack alebo prístup s prepínačmi</translation> +<translation id="7027549951530753705">Obnovili ste položku <ph name="ITEM_TITLE" /></translation> <translation id="7029809446516969842">Heslá</translation> <translation id="703523980599857277">Zmeniť domovskú stránku</translation> <translation id="7054588988317389591">Chcete získať popisy obrázkov?</translation> @@ -1014,6 +1026,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> a ďalšie weby</translation> <translation id="8327155640814342956">Ak chcete zlepšiť prehliadanie, otvorte Chrome a aktualizujte ho</translation> <translation id="8349013245300336738">Zoradiť podľa množstva využitých dát</translation> +<translation id="835847953965672673">Boli obnovené stiahnuté súbory (<ph name="NUMBER_OF_DOWNLOADS" />)</translation> <translation id="8364299278605033898">Prezrite si obľúbené weby</translation> <translation id="8368027906805972958">Neznáme alebo nepodporované zariadenie (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381"><ph name="LANG" /> je k dispozícii.</translation> @@ -1122,6 +1135,7 @@ <translation id="9148126808321036104">Znova sa prihlásiť</translation> <translation id="9155898266292537608">Vyhľadávať môžete aj rýchlym klepnutím na slovo</translation> <translation id="9169507124922466868">História navigácie je dopoly otvorená</translation> +<translation id="9191031968346938109">Pridať do služby…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{Kontrola prebehla pred minútou}few{Kontrola prebehla pred # minútami}many{Kontrola prebehla pred # minúty}other{Kontrola prebehla pred # minútami}}</translation> <translation id="9204836675896933765">Zostáva 1 súbor</translation> <translation id="9206873250291191720">A</translation> @@ -1134,6 +1148,7 @@ <translation id="938850635132480979">Chyba: <ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">Zadať prístupovú frázu</translation> <translation id="95817756606698420">Chrome môže použiť <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> na vyhľadávanie v Číne. Táto možnosť sa dá zmeniť v <ph name="BEGIN_LINK" />Nastaveniach<ph name="END_LINK" />.</translation> +<translation id="962979164594783469">Inštalovať túto aplikáciu</translation> <translation id="968900484120156207">Tu sa zobrazia vami navštívené stránky</translation> <translation id="970715775301869095">Zostáva: <ph name="MINUTES" /> min</translation> <translation id="974555521953189084">Ak chcete spustiť synchronizáciu, zadajte prístupovú frázu</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 c04f112..13bd2495 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
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Brskajte hitreje. Uporabite manj podatkov.</translation> <translation id="3298243779924642547">Osn. način</translation> <translation id="3303414029551471755">Ali želite prenesti vsebino?</translation> -<translation id="3306398118552023113">Ta aplikacija se izvaja v Chromu</translation> <translation id="3315103659806849044">Trenutno prilagajate nastavitve sinhronizacije in Googlovih storitev. Če želite dokončati vklop sinhronizacije, se dotaknite gumba za potrditev pri dnu zaslona. Pomik navzgor</translation> <translation id="3328801116991980348">Podatki o mestu</translation> <translation id="3334729583274622784">Želite spremeniti pripono datoteke?</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 8ddfd5e5b..1f88797b 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
@@ -313,7 +313,6 @@ <translation id="3295530008794733555">Shfleto më shpejt. Përdor më pak të dhëna.</translation> <translation id="3298243779924642547">I lehtë</translation> <translation id="3303414029551471755">Të vazhdohet me shkarkimin e përmbajtjes?</translation> -<translation id="3306398118552023113">Ky aplikacion po ekzekutohet në Chrome</translation> <translation id="3315103659806849044">Aktualisht po personalizon cilësimet e shërbimit të "Sinkronizimit" dhe Google. Për të përfunduar aktivizimin e sinkronizimit, trokit butonin "Konfirmo" pranë fundit të ekranit. Ngjitu lart</translation> <translation id="3328801116991980348">Informacionet rreth sajtit</translation> <translation id="3334729583274622784">Do ta ndryshosh prapashtesën e skedarit?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb index feec12a..5982183f7 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Pregledajte brže. Koristite manje podataka.</translation> <translation id="3298243779924642547">Lagano</translation> <translation id="3303414029551471755">Želite li da nastavite sa preuzimanjem sadržaja?</translation> -<translation id="3306398118552023113">Ova aplikacija je aktivna u Chrome-u</translation> <translation id="3315103659806849044">Trenutno prilagođavate podešavanja Sinhronizacije i Google usluga. Da biste dovršili uključivanje sinhronizacije, dodirnite dugme Potvrdi u dnu ekrana. Idi nagore</translation> <translation id="3328801116991980348">Informacije o sajtu</translation> <translation id="3334729583274622784">Želite da promenite ekstenziju datoteke?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb index b28a698..ad317d5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Прегледајте брже. Користите мање података.</translation> <translation id="3298243779924642547">Лагано</translation> <translation id="3303414029551471755">Желите ли да наставите са преузимањем садржаја?</translation> -<translation id="3306398118552023113">Ова апликација је активна у Chrome-у</translation> <translation id="3315103659806849044">Тренутно прилагођавате подешавања Синхронизације и Google услуга. Да бисте довршили укључивање синхронизације, додирните дугме Потврди у дну екрана. Иди нагоре</translation> <translation id="3328801116991980348">Информације о сајту</translation> <translation id="3334729583274622784">Желите да промените екстензију датотеке?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb index e2218a7..5e81c263 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Surfa snabbare. Förbruka mindre data.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Vill du ladda ned innehållet?</translation> -<translation id="3306398118552023113">Den här appen körs i Chrome</translation> <translation id="3315103659806849044">Du anpassar nu dina inställningar för synkronisering och Google-tjänster. Aktivera synkroniseringen genom att trycka på Bekräfta längst ned på skärmen. Navigera uppåt</translation> <translation id="3328801116991980348">Platsinformation</translation> <translation id="3334729583274622784">Vill du ändra filnamnstillägget?</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 fa76b65..fdb165a 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
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">Piga Picha ya Skrini</translation> <translation id="1111673857033749125">Alamisho zilizohifadhiwa katika vifaa vyako vingine zitaonekana hapa.</translation> <translation id="1113597929977215864">Onyesha mwonekano rahisi</translation> +<translation id="1123070903960493543">Unavyotumia Chrome, mipangilio uliyoichagua, maelezo kuhusu matukio ya Chrome kuacha kufanya kazi</translation> <translation id="1126809382673880764">Haikulindi dhidi ya tovuti, viendelezi na faili hatari zinazopakuliwa. Bado utapata ulinzi wa kipengele cha Kuvinjari Salama, kinapopatikana, katika huduma nyingine za Google kama vile Gmail na Tafuta na Google.</translation> <translation id="1129510026454351943">Maelezo: <ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{Inasubiri kupakua faili 1.}other{Inasubiri kupakua faili #.}}</translation> @@ -72,6 +73,7 @@ <translation id="1450753235335490080">Imeshindwa kushiriki <ph name="CONTENT_TYPE" /></translation> <translation id="1477626028522505441">Kipakuliwa cha <ph name="FILE_NAME" /> hakijafaulu kwa sababu ya matatizo ya seva.</translation> <translation id="1506061864768559482">Mtambo wa utafutaji</translation> +<translation id="151267239139452619">Ongeza kwenye Vipakuliwa</translation> <translation id="1513352483775369820">Alamisho na historia ya wavuti</translation> <translation id="1513858653616922153">Futa nenosiri</translation> <translation id="1521774566618522728">Ameitumia leo</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> imeokolewa</translation> <translation id="213279576345780926">Umefunga <ph name="TAB_TITLE" /></translation> <translation id="2139186145475833000">Ongeza kwenye skrini ya kwanza</translation> +<translation id="214888715418183969">Chagua data ambayo ungependa kushiriki na Chrome. Data utakayoshiriki itatumiwa kuboresha vipengele, utendaji na uthabiti wa Chrome.</translation> <translation id="2154484045852737596">Badilisha kadi</translation> <translation id="2154710561487035718">Nakili UR:</translation> <translation id="2156074688469523661">Tovuti zilizosalia (<ph name="NUMBER_OF_SITES" />)</translation> @@ -166,6 +169,7 @@ <translation id="2175927920773552910">Msimbo wa QR</translation> <translation id="218608176142494674">Inashiriki</translation> <translation id="2195339740518523951">Pata usalama thabiti zaidi kutoka Chrome</translation> +<translation id="2200113223741723867">Dhibiti mipangilio ya kushiriki data ya matumizi</translation> <translation id="2227444325776770048">Endelea ukitumia <ph name="USER_FULL_NAME" /></translation> <translation id="2234876718134438132">Huduma za Google na usawazishaji</translation> <translation id="2239812875700136898">Dhibiti taarifa zako kutoka kwenye kitufe cha Chaguo za Dokezo</translation> @@ -311,7 +315,6 @@ <translation id="3295530008794733555">Vinjari haraka. Tumia data chache.</translation> <translation id="3298243779924642547">Nyepesi</translation> <translation id="3303414029551471755">Ungependa kuendelea kupakua maudhui?</translation> -<translation id="3306398118552023113">Programu hii inatumika katika Chrome</translation> <translation id="3315103659806849044">Kwa sasa, unaweka mapendeleo kwenye mipangilio ya Usawazishaji na huduma ya Google. Ili ukamilishe kuwasha usawazishaji, gusa kitufe cha 'Thibitisha' kwenye sehemu ya chini ya skrini. Sogeza juu</translation> <translation id="3328801116991980348">Maelezo ya tovuti</translation> <translation id="3334729583274622784">Ungependa kubadilisha kiendelezi cha faili?</translation> @@ -371,12 +374,14 @@ <translation id="3771290962915251154">Mipangilio hii imezimwa kwa sababu vidhibiti vya wazazi vimewashwa</translation> <translation id="3771694256347217732">Sheria na Masharti ya Google</translation> <translation id="3773755127849930740"><ph name="BEGIN_LINK" />Washa Bluetooth<ph name="END_LINK" /> ili uruhusu kuoanisha</translation> +<translation id="3773856050682458546">Data ya msingi pamoja na maelezo kuhusu tovuti unazotembelea na programu unazotumia</translation> <translation id="3775705724665058594">Tuma kwenye vifaa vyako</translation> <translation id="3778956594442850293">Imeongezwa kwenye Skrini ya Kwanza</translation> <translation id="3789841737615482174">Sakinisha</translation> <translation id="3810838688059735925">Video</translation> <translation id="3810973564298564668">Dhibiti</translation> <translation id="3819178904835489326">Vipakuliwa <ph name="NUMBER_OF_DOWNLOADS" /> vimefutwa</translation> +<translation id="3848957262889631524">Google <ph name="APP_NAME" /> kama Ufunguo wa Usalama</translation> <translation id="3856096718352044181">Tafadhali thibitisha kuwa huyu ni mtoa huduma sahihi au ujaribu tena baadaye</translation> <translation id="3861633093716975811">Video maarufu</translation> <translation id="3892148308691398805">Nakili maandishi</translation> @@ -404,7 +409,9 @@ <translation id="3988466920954086464">Angalia matokeo ya utafutaji wa moja kwa moja katika kidirisha hiki</translation> <translation id="4000212216660919741">Skrini ya Kwanza, Nje ya Mtandao</translation> <translation id="4034817413553209278">{HOURS,plural, =1{Saa #}other{Saa #}}</translation> +<translation id="4045764304651014138">Data ya matumizi</translation> <translation id="4056223980640387499">Sepia</translation> +<translation id="4057643060762047384">Ongeza kwenye:</translation> <translation id="4060598801229743805">Chaguo zinapatikana karibu na sehemu ya juu ya skrini</translation> <translation id="4062305924942672200">Maelezo ya kisheria</translation> <translation id="4084682180776658562">Alamisho</translation> @@ -545,6 +552,7 @@ <translation id="5039804452771397117">Ruhusu</translation> <translation id="5040262127954254034">Faragha</translation> <translation id="5087580092889165836">Ongeza kadi</translation> +<translation id="5091249083535528968">Data ya ziada ya matumizi</translation> <translation id="509429900233858213">Hitilafu fulani imetokea.</translation> <translation id="510275257476243843">Imesalia saa 1</translation> <translation id="5123685120097942451">Kichupo fiche</translation> @@ -651,6 +659,7 @@ <translation id="5833984609253377421">Shiriki kiungo</translation> <translation id="5836192821815272682">Inapakua Sasisho la Chrome…</translation> <translation id="5853623416121554550">imesitishwa</translation> +<translation id="5854512288214985237">Hakuna takwimu wala ripoti za kuacha kufanya kazi zinazotumwa kwa Google</translation> <translation id="5854790677617711513">Iliyohifadhiwa kwa zaidi ya siku 30</translation> <translation id="5855546874025048181">Chuja: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">Chrome imeshindwa kuwasha adapta ya Bluetooth</translation> @@ -723,6 +732,7 @@ <translation id="6303969859164067831">Ondoka kwenye akaunti na uzime usawazishaji</translation> <translation id="6312687380483398334">Programu za wavuti (tuli)</translation> <translation id="6316139424528454185">Haiwezi kutumia toleo la Android</translation> +<translation id="6321526113093607004">Ongeza kwenye Alamisho</translation> <translation id="6324034347079777476">Kipengele cha usawazishaji wa mfumo wa Android kimezimwa</translation> <translation id="6333140779060797560">Shiriki kupitia <ph name="APPLICATION" /></translation> <translation id="6337234675334993532">Usimbaji fiche</translation> @@ -740,6 +750,7 @@ <translation id="6402652558933147609"><ph name="ERROR_CODE" /> <ph name="VIOLATED_URL" /></translation> <translation id="6404511346730675251">Badilisha alamisho</translation> <translation id="6406506848690869874">Sawazisha</translation> +<translation id="6410404864818553978">Data msingi ya matumizi</translation> <translation id="6410883413783534063">Fungua vichupo ili utembelee kurasa mbalimbali kwa wakati mmoja</translation> <translation id="6412673304250309937">Hukagua URL zilizo na orodha ya tovuti zisizo salama zinazohifadhiwa kwenye Chrome. Iwapo tovuti inajaribu kuiba nenosiri lako au unapopakua faili hatari, Chrome inaweza pia kutuma URL, ikiwa ni pamoja na sehemu za maudhui ya ukurasa, kwenye kipengele cha Kuvinjari Salama.</translation> <translation id="641643625718530986">Chapisha...</translation> @@ -833,6 +844,7 @@ <translation id="7015203776128479407">Haikukamilisha kuweka usawazishaji wa mipangilio ya kwanza. Umezima kipengele cha kusawazisha.</translation> <translation id="7022756207310403729">Fungua katika kivinjari</translation> <translation id="702463548815491781">Inapendekezwa wakati umewasha TalkBack au kipengele cha Kufikia Kupitia Swichi</translation> +<translation id="7027549951530753705">Umerejesha <ph name="ITEM_TITLE" /></translation> <translation id="7029809446516969842">Manenosiri</translation> <translation id="703523980599857277">Badilisha ukurasa wa kwanza</translation> <translation id="7054588988317389591">Ungependa kupata maelezo ya picha?</translation> @@ -1014,6 +1026,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> na tovuti zingine</translation> <translation id="8327155640814342956">Ili upate hali bora zaidi ya kuvinjari, fungua na usasishe Chrome</translation> <translation id="8349013245300336738">Panga kulingana na kiasi cha data kilichotumika</translation> +<translation id="835847953965672673">Umerejesha vipakuliwa <ph name="NUMBER_OF_DOWNLOADS" /></translation> <translation id="8364299278605033898">Ona tovuti maarufu</translation> <translation id="8368027906805972958">Kifaa kisichojulikana au kisichotumika (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381"><ph name="LANG" /> iko tayari.</translation> @@ -1122,6 +1135,7 @@ <translation id="9148126808321036104">Ingia tena</translation> <translation id="9155898266292537608">Unaweza pia kutafuta kwa kugusa haraka kwenye neno</translation> <translation id="9169507124922466868">Historia ya uelekezaji imefunguliwa nusu</translation> +<translation id="9191031968346938109">Ongeza kwenye…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{Imekaguliwa dakika moja iliyopita}other{Imekaguliwa dakika # zilizopita}}</translation> <translation id="9204836675896933765">Imesalia faili 1</translation> <translation id="9206873250291191720">A</translation> @@ -1134,6 +1148,7 @@ <translation id="938850635132480979">Hitilafu: <ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">Ingiza kaulisiri</translation> <translation id="95817756606698420">Chrome inaweza kutumia <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> kutafuta nchini Uchina. Unaweza kuibadilisha katika <ph name="BEGIN_LINK" />MipangilioE<ph name="END_LINK" />.</translation> +<translation id="962979164594783469">Sakinisha programu hii</translation> <translation id="968900484120156207">Kurasa unazotembelea zitaonekana hapa</translation> <translation id="970715775301869095">Zimesalia dakika <ph name="MINUTES" /></translation> <translation id="974555521953189084">Andika kauli yako ya siri ili uanze kusawazisha</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb index 1184f2d..d4a07384 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">வேகமாக உலாவலாம். குறைவான டேட்டாவைப் பயன்படுத்தலாம்.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">உள்ளடக்கத்தைப் பதிவிறக்குவதைத் தொடரவா?</translation> -<translation id="3306398118552023113">இந்த ஆப்ஸ் Chromeமில் இயங்குகிறது</translation> <translation id="3315103659806849044">உங்கள் ஒத்திசைவு மற்றும் Google சேவை அமைப்புகளைத் தற்போது உங்களுக்கேற்ப மாற்றியமைக்கிறீர்கள். ஒத்திசைவை இயக்க, திரையின் அடிப்பகுதிக்கு அருகிலுள்ள ‘உறுதிப்படுத்து’ பட்டனைத் தட்டவும். மேலே செல்</translation> <translation id="3328801116991980348">தளம் குறித்த தகவல்</translation> <translation id="3334729583274622784">கோப்பு நீட்டிப்பை மாற்றவா?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb index 13f5d47..b97231ef 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">మరింత వేగంగా బ్రౌజ్ చేయండి. తక్కువ డేటాని ఉపయోగించండి.</translation> <translation id="3298243779924642547">లైట్</translation> <translation id="3303414029551471755">కంటెంట్ను డౌన్లోడ్ చేయడం కొనసాగించాలా?</translation> -<translation id="3306398118552023113">ఈ యాప్ Chromeలో అమలవుతోంది</translation> <translation id="3315103659806849044">మీరు ప్రస్తుతం మీ సింక్, Google సేవా సెట్టింగ్లను అనుకూలీకరిస్తున్నారు. సింక్ను ఆన్ చేయడం పూర్తి చేయడానికి, స్క్రీన్ దిగువ భాగం సమీపంలోని నిర్ధారించు బటన్ను నొక్కండి. పైకి నావిగేట్ చేయి</translation> <translation id="3328801116991980348">సైట్ సమాచారం</translation> <translation id="3334729583274622784">ఫైల్ ఎక్స్టెన్షన్ను మార్చాలా?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb index 522ba83e..b8cf13d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">ท่องเว็บได้เร็วขึ้น ใช้เน็ตน้อยลง</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">ต้องการดำเนินการดาวน์โหลดเนื้อหานี้ไหม</translation> -<translation id="3306398118552023113">แอปนี้กำลังทำงานใน Chrome</translation> <translation id="3315103659806849044">ขณะนี้คุณกำลังปรับแต่งการตั้งค่าการซิงค์และบริการ Google แตะปุ่ม "ยืนยัน" ใกล้ด้านล่างของหน้าจอเพื่อเปิดการซิงค์ให้เสร็จสิ้น กลับ</translation> <translation id="3328801116991980348">ข้อมูลไซต์</translation> <translation id="3334729583274622784">เปลี่ยนนามสกุลไฟล์ใช่ไหม</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb index ba187fbb..a92d128 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Daha hızlı tarayın. Daha az veri kullanın.</translation> <translation id="3298243779924642547">Basit</translation> <translation id="3303414029551471755">İçeriği indirme işlemine başlansın mı?</translation> -<translation id="3306398118552023113">Bu uygulama Chrome'da çalışıyor</translation> <translation id="3315103659806849044">Şu anda Senkronizasyon ve Google hizmet ayarlarınızı özelleştiriyorsunuz. Senkronizasyonu etkinleştirme işlemini tamamlamak için ekranın altına yakın bir yerde bulunan Onayla düğmesine dokunun. Yukarı git</translation> <translation id="3328801116991980348">Site bilgileri</translation> <translation id="3334729583274622784">Dosya uzantısı değiştirilsin mi?</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 ff4ef00..353e75a 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Шукайте швидше. Заощаджуйте трафік.</translation> <translation id="3298243779924642547">Спрощена</translation> <translation id="3303414029551471755">Завантажити вміст?</translation> -<translation id="3306398118552023113">Цей додаток запущено в Chrome</translation> <translation id="3315103659806849044">Зараз ви налаштовуєте синхронізацію та сервіси Google. Щоб увімкнути синхронізацію, натисніть кнопку "Підтвердити" внизу екрана. Перейти вгору</translation> <translation id="3328801116991980348">Інформація про сайт</translation> <translation id="3334729583274622784">Змінити розширення файлу?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb index 9df4c59..4760856 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">مزید تیزی سے براؤز کریں۔ کم ڈیٹا استعمال کریں۔</translation> <translation id="3298243779924642547">لائٹ</translation> <translation id="3303414029551471755">مواد ڈاؤن لوڈ کرنے کیلئے آگے بڑھیں؟</translation> -<translation id="3306398118552023113">یہ ایپ Chrome میں چل رہی ہے</translation> <translation id="3315103659806849044">آپ فی الوقت اپنی Sync اور Google سروس کی ترتیبات کو حسب ضرورت بنا رہے ہیں۔ مطابقت پذیری آن کرنے کا عمل مکمل کرنے کیلئے، اسکرین کے نچلے حصے کے پاس موجود 'تصدیق کریں' بٹن تھپتھپائیں۔ اوپر نیویگیٹ کریں</translation> <translation id="3328801116991980348">سائٹ کی معلومات</translation> <translation id="3334729583274622784">فائل ایکسٹینشن تبدیل کریں؟</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 007532fd..63d386e 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
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">Ekranni suratga olish</translation> <translation id="1111673857033749125">Boshqa qurilmalaringizda saqlangan xatcho‘plar shu yerda ko‘rsatiladi.</translation> <translation id="1113597929977215864">Soddalashgan shaklda ko‘rsatish</translation> +<translation id="1123070903960493543">Chrome bilan qanday ishlashingiz, tanlagan sozlamalaringiz, ishdan chiqish hisobotlari</translation> <translation id="1126809382673880764">Zararli sayt, yuklanma va kengaytmalardan himoya qila olmaydi. Gmail va Qidiruv kabi Google xizmatlarida Saytlarni xavfsiz kezish himoyasi ostida boʻlasiz.</translation> <translation id="1129510026454351943">Tafsilotlar: <ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{1 ta fayl yuklab olinishi kutilmoqda.}other{# ta fayl yuklab olinishi kutilmoqda.}}</translation> @@ -72,6 +73,7 @@ <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> yuborilmadi</translation> <translation id="1477626028522505441">Serverdagi turli muammolar tufayli “<ph name="FILE_NAME" />” fayli yuklab olinmadi.</translation> <translation id="1506061864768559482">Qidiruv tizimi</translation> +<translation id="151267239139452619">Yuklanmalarga saqlash</translation> <translation id="1513352483775369820">Xatcho‘plar va qidiruv tarixi</translation> <translation id="1513858653616922153">Parolni o‘chirish</translation> <translation id="1521774566618522728">Bugun onlayn edi</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> tejaldi</translation> <translation id="213279576345780926">Yopildi: <ph name="TAB_TITLE" /></translation> <translation id="2139186145475833000">Bosh ekranga qo‘shish</translation> +<translation id="214888715418183969">Chromega qaysi maʼlumotlarni ulashish mumkinligini tanlang. Siz taqdim qiladigan statistik maʼlumotlar Chrome funksiyalari, unumdorligi va barqarorligini yaxshilashga yordam beradi.</translation> <translation id="2154484045852737596">Karta ma’lumotlarini tahrirlash</translation> <translation id="2154710561487035718">URL manzilni nusxalash</translation> <translation id="2156074688469523661">Qolgan saytlar (<ph name="NUMBER_OF_SITES" />)</translation> @@ -166,6 +169,7 @@ <translation id="2175927920773552910">QR kod</translation> <translation id="218608176142494674">Ulashish</translation> <translation id="2195339740518523951">Chrome brauzerining kuchli xavfsizligidan foydalaning</translation> +<translation id="2200113223741723867">Foydalanish statistikasi yuborilishini boshqarish</translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> sifatida davom etish</translation> <translation id="2234876718134438132">Sinxronizatsiya va Google xizmatlari</translation> <translation id="2239812875700136898">Parametrlar orqali Discover yangiliklarini boshqarish tugmasi</translation> @@ -311,7 +315,6 @@ <translation id="3295530008794733555">Tezroq kezing. Kamroq trafik sarflang.</translation> <translation id="3298243779924642547">Lite</translation> <translation id="3303414029551471755">Yuklab olinsinmi?</translation> -<translation id="3306398118552023113">Bu ilova Chrome brauzerida ishlayapti.</translation> <translation id="3315103659806849044">Siz hozir Sync va Google xizmati sozlamalaridasiz. Sinxronizatsiyani yoqish uchun ekranning quyi qismidagi Tasdiqlash tugmasini bosing. Tepaga</translation> <translation id="3328801116991980348">Sayt haqida ma’lumot</translation> <translation id="3334729583274622784">Fayl kengaytmasi oʻzgartirilsinmi?</translation> @@ -371,12 +374,14 @@ <translation id="3771290962915251154">Bu sozlama ota-ona nazorati tufayli yoqilmagan</translation> <translation id="3771694256347217732">Google xizmat shartlari</translation> <translation id="3773755127849930740">Ulanishga ruxsat berish uchun <ph name="BEGIN_LINK" />Bluetooth’ni yoqing<ph name="END_LINK" /></translation> +<translation id="3773856050682458546">Asosiy statistika va ochilgan sayt va ilovalar axboroti</translation> <translation id="3775705724665058594">Qurilmalaringizga yuborish</translation> <translation id="3778956594442850293">Bosh ekranga chiqarildi</translation> <translation id="3789841737615482174">O‘rnatish</translation> <translation id="3810838688059735925">Video</translation> <translation id="3810973564298564668">Sozlash</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> ta yuklanma o‘chirib tashlandi</translation> +<translation id="3848957262889631524">Google <ph name="APP_NAME" /> Elektron kalit sifatida</translation> <translation id="3856096718352044181">Bu ishonchli xizmat ekanini tekshiring yoki keyinroq qayta urining</translation> <translation id="3861633093716975811">Mashhur videolar</translation> <translation id="3892148308691398805">Matnni nusxalash</translation> @@ -404,7 +409,9 @@ <translation id="3988466920954086464">Qidiruv natijalari shu panelda paydo bo‘ladi</translation> <translation id="4000212216660919741">Uy oflayn</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# soat}other{# soat}}</translation> +<translation id="4045764304651014138">Foydalanish statistikasi</translation> <translation id="4056223980640387499">Sepiya</translation> +<translation id="4057643060762047384">Kiritish:</translation> <translation id="4060598801229743805">Parametrlar ekranning yuqoriroq qismida joylashgan</translation> <translation id="4062305924942672200">Yuridik ma’lumot</translation> <translation id="4084682180776658562">Xatcho‘p</translation> @@ -545,6 +552,7 @@ <translation id="5039804452771397117">Ruxsat berish</translation> <translation id="5040262127954254034">Shaxsiy ma’lumotlar</translation> <translation id="5087580092889165836">Yangi karta qo‘shish</translation> +<translation id="5091249083535528968">Kengaytirilgan foydalanish statistikasi</translation> <translation id="509429900233858213">Xatolik yuz berdi.</translation> <translation id="510275257476243843">1 soat qoldi</translation> <translation id="5123685120097942451">Inkognito varaq</translation> @@ -651,6 +659,7 @@ <translation id="5833984609253377421">Havolani ulashish</translation> <translation id="5836192821815272682">Chrome yangilanishi yuklab olinmoqda…</translation> <translation id="5853623416121554550">pauza qilindi</translation> +<translation id="5854512288214985237">Googlega hech qanday statistika yoki ishdan chiqish hisoboti yuborilmagan</translation> <translation id="5854790677617711513">30 kundan oldin saqlanganlar</translation> <translation id="5855546874025048181">Aniqlashtirish: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">Bluetooth adapterini yoqib bo‘lmadi</translation> @@ -723,6 +732,7 @@ <translation id="6303969859164067831">Hisobdan chiqish va sinxronizatsiyani to‘xtatish</translation> <translation id="6312687380483398334">Veb-ilovalar (sokin)</translation> <translation id="6316139424528454185">Android versiyasi bilan mos emas</translation> +<translation id="6321526113093607004">Bukmarklash</translation> <translation id="6324034347079777476">Android tizimini sinxronlash o‘chirib qo‘yilgan</translation> <translation id="6333140779060797560"><ph name="APPLICATION" /> orqali ulashish</translation> <translation id="6337234675334993532">Shifrlash</translation> @@ -740,6 +750,7 @@ <translation id="6402652558933147609"><ph name="ERROR_CODE" />, <ph name="VIOLATED_URL" /></translation> <translation id="6404511346730675251">Xatcho‘pni tahrirlash</translation> <translation id="6406506848690869874">Sinxronlash</translation> +<translation id="6410404864818553978">Asosiy foydalanish statistikasi</translation> <translation id="6410883413783534063">Bir vaqtda turli sahifalarga tashrif buyurish uchun varaqlar ochish</translation> <translation id="6412673304250309937">URL manzillar Chrome bilgan zararli saytlar roʻyxati orqali tekshiriladi. Agar sayt parolingizni oʻgirlashga urinsa yoki zararli fayl yuklab olsangiz, Chrome ham URL manzillar kabi sahifa elementlarini Saytlarni xavfsiz kezish tizimiga yuborishi mumkin.</translation> <translation id="641643625718530986">Chop etish…</translation> @@ -833,6 +844,7 @@ <translation id="7015203776128479407">Dastlabki sinxronizatsiya sozlanishi oxiriga yetmagan. Sinxronizatsiya yoqilmagan.</translation> <translation id="7022756207310403729">Brauzerda ochish</translation> <translation id="702463548815491781">TalkBack yoki Switch Access yoniq holatda tavsiya etiladi</translation> +<translation id="7027549951530753705">Tiklandi: <ph name="ITEM_TITLE" /></translation> <translation id="7029809446516969842">Parollar</translation> <translation id="703523980599857277">Bosh sahifani oʻzgartirish</translation> <translation id="7054588988317389591">Rasm tavsiflari chiqsinmi?</translation> @@ -1014,6 +1026,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> va boshqa saytlar</translation> <translation id="8327155640814342956">Internetni tezroq kezish uchun Chrome eng oxirgi versiyasiga yangilanishi kerak</translation> <translation id="8349013245300336738">Sarflangan trafik asosida saralash</translation> +<translation id="835847953965672673"><ph name="NUMBER_OF_DOWNLOADS" /> ta yuklanma tiklandi</translation> <translation id="8364299278605033898">Mahalliy ommabop saytlar</translation> <translation id="8368027906805972958">Notanish yoki qoʻllab-quvvatlanmaydigan qurilma (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381"><ph name="LANG" /> tayyor.</translation> @@ -1122,6 +1135,7 @@ <translation id="9148126808321036104">Qaytadan kiring</translation> <translation id="9155898266292537608">Shuningdek so‘z ustiga bosib qidirish mumkin</translation> <translation id="9169507124922466868">Sahifalar tarixi yarim hajmda ochildi</translation> +<translation id="9191031968346938109">Kiritish…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{1 daqiqa oldin tekshirilgan}other{# daqiqa oldin tekshirilgan}}</translation> <translation id="9204836675896933765">1 fayl qoldi</translation> <translation id="9206873250291191720">A</translation> @@ -1134,6 +1148,7 @@ <translation id="938850635132480979">Xato: <ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">Kodli iborani kiriting</translation> <translation id="95817756606698420">Chrome Xitoyda <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> qidiruv tizimidan foydalanishi mumkin. Asosiy qidiruv tizimini <ph name="BEGIN_LINK" />Sozlamalar<ph name="END_LINK" /> orqali tayinlash mumkin.</translation> +<translation id="962979164594783469">Bu ilovani oʻrnatish</translation> <translation id="968900484120156207">Siz kirgan sahifalar shu yerda chiqadi</translation> <translation id="970715775301869095"><ph name="MINUTES" /> daqiqa qoldi</translation> <translation id="974555521953189084">Sinxronizatsiyani boshlash uchun kodli iborani kiriting</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 676825e..e6604cb 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">Duyệt web nhanh hơn. Sử dụng ít dữ liệu hơn.</translation> <translation id="3298243779924642547">Phiên bản rút gọn</translation> <translation id="3303414029551471755">Tiếp tục tải xuống nội dung?</translation> -<translation id="3306398118552023113">Ứng dụng này đang chạy trong Chrome</translation> <translation id="3315103659806849044">Bạn đang tùy chỉnh các tùy chọn cài đặt Đồng bộ hóa và dịch vụ của Google. Để hoàn tất thao tác bật tính năng đồng bộ hóa, hãy nhấn vào nút Xác nhận ở gần cuối màn hình. Di chuyển lên</translation> <translation id="3328801116991980348">Thông tin về trang web</translation> <translation id="3334729583274622784">Thay đổi đuôi tệp?</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 f21ea96..f20d7ed 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
@@ -165,6 +165,7 @@ <translation id="2169830938017475061">刚刚</translation> <translation id="2175927920773552910">二维码</translation> <translation id="218608176142494674">共享</translation> +<translation id="2195339740518523951">获取 Chrome 的最强安全保护</translation> <translation id="2227444325776770048">以“<ph name="USER_FULL_NAME" />”的身份继续</translation> <translation id="2234876718134438132">同步功能和 Google 服务</translation> <translation id="2239812875700136898">通过“‘探索’功能的选项”按钮控制您的报道</translation> @@ -256,6 +257,7 @@ <translation id="2893180576842394309">Google 可能会利用您的历史记录为您提供个性化的 Google 搜索和其他 Google 服务</translation> <translation id="2898264748040935573">修改存储的密码</translation> <translation id="2900528713135656174">创建活动</translation> +<translation id="2901411048554510387">下方显示的是与 <ph name="WEBSITE_TITLE" /> 相关的建议</translation> <translation id="2904414404539560095">要与之分享标签页的设备的列表已全屏打开。</translation> <translation id="2905036901251765993">要与附近的人分享,请让他们扫描此二维码</translation> <translation id="2909615210195135082">Google 通知平台</translation> @@ -309,7 +311,6 @@ <translation id="3295530008794733555">浏览速度更快。耗用的流量更少。</translation> <translation id="3298243779924642547">精简版</translation> <translation id="3303414029551471755">要开始下载该内容吗?</translation> -<translation id="3306398118552023113">此应用正在 Chrome 中运行</translation> <translation id="3315103659806849044">您正在自定义您的“同步功能和 Google 服务”设置。要完成开启同步功能的操作,请点按屏幕底部附近的“确认”按钮。转到上一层级</translation> <translation id="3328801116991980348">网站信息</translation> <translation id="3334729583274622784">更改文件扩展名?</translation> @@ -442,6 +443,7 @@ <translation id="4405224443901389797">移动到…</translation> <translation id="4411535500181276704">精简模式</translation> <translation id="4415276339145661267">管理您的 Google 帐号</translation> +<translation id="4427306783828095590">“增强型保护”选项在防范网上诱骗和恶意软件方面更高一筹</translation> <translation id="4440958355523780886">由 Google 提供的精简版网页。点按即可加载原始网页。</translation> <translation id="4452411734226507615">关闭“<ph name="TAB_TITLE" />”标签页</translation> <translation id="4452548195519783679">已将书签添加到“<ph name="FOLDER_NAME" />”</translation>
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 36b06fe..4d4ac769 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
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">瀏覽速度更快。使用較少流動數據。</translation> <translation id="3298243779924642547">簡易模式</translation> <translation id="3303414029551471755">繼續下載內容?</translation> -<translation id="3306398118552023113">Chrome 正在執行此應用程式</translation> <translation id="3315103659806849044">你宜家自訂緊同步功能同 Google 服務設定。你㩒一下畫面底部附近嘅 [確認] 掣,就可以完成打開同步處理功能嘅程序喇。向上瀏覽</translation> <translation id="3328801116991980348">網站資料</translation> <translation id="3334729583274622784">要變更副檔名嗎?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb index e735fbf7..592e2db5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -311,7 +311,6 @@ <translation id="3295530008794733555">瀏覽速度更快,數據用量更少。</translation> <translation id="3298243779924642547">精簡版本</translation> <translation id="3303414029551471755">繼續下載這項內容?</translation> -<translation id="3306398118552023113">Chrome 正在執行這個應用程式</translation> <translation id="3315103659806849044">你正在自訂同步功能和 Google 服務設定。如要完成開啟同步功能,請輕觸畫面底部附近的 [確認] 按鈕。向上瀏覽</translation> <translation id="3328801116991980348">網站資訊</translation> <translation id="3334729583274622784">是否要變更副檔名?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb index 630068b..b167623 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
@@ -315,7 +315,6 @@ <translation id="3295530008794733555">Phequlula ngokushesha. Sebenzisa idatha encane.</translation> <translation id="3298243779924642547">I-Lite</translation> <translation id="3303414029551471755">Qhubeka ngokulanda okuqukethwe?</translation> -<translation id="3306398118552023113">Lolu hlelo lokusebenza lisebenza ku-Chrome</translation> <translation id="3315103659806849044">Manje wenza kube ngokwakho ukuvumelanisa kwakho nezilungiselelo zesevisi ye-Google. Ukuze uqedele ukuvula ukuvumelanisa, thepha inkinobho yokuqinisekisa eseduze kwangaphansi kwesikrini. Zulazulela phezulu</translation> <translation id="3328801116991980348">Ulwazi lwesayithi</translation> <translation id="3334729583274622784">Shintsha isandiso sefayela?</translation>
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc index 35d361a..f9fb1c0 100644 --- a/chrome/browser/ui/browser_command_controller.cc +++ b/chrome/browser/ui/browser_command_controller.cc
@@ -264,6 +264,7 @@ void BrowserCommandController::TabStateChanged() { UpdateCommandsForTabState(); + UpdateCommandsForWebContentsFocus(); } void BrowserCommandController::ZoomStateChanged() { @@ -309,6 +310,10 @@ UpdateCommandsForTabKeyboardFocus(index); } +void BrowserCommandController::WebContentsFocusChanged() { + UpdateCommandsForWebContentsFocus(); +} + //////////////////////////////////////////////////////////////////////////////// // BrowserCommandController, CommandUpdater implementation: @@ -1066,6 +1071,7 @@ UpdateCommandsForBookmarkEditing(); UpdateCommandsForIncognitoAvailability(); UpdateCommandsForTabKeyboardFocus(GetKeyboardFocusedTabIndex(browser_)); + UpdateCommandsForWebContentsFocus(); } // static @@ -1494,6 +1500,15 @@ IDC_GROUP_TARGET_TAB, normal_window && target_index.has_value()); } +void BrowserCommandController::UpdateCommandsForWebContentsFocus() { +#if defined(OS_MAC) + // On Mac, toggling caret browsing changes whether it's enabled or not + // based on web contents focus. + command_updater_.UpdateCommandEnabled(IDC_CARET_BROWSING_TOGGLE, + CanToggleCaretBrowsing(browser_)); +#endif // defined(OS_MAC) +} + BrowserWindow* BrowserCommandController::window() { return browser_->window(); }
diff --git a/chrome/browser/ui/browser_command_controller.h b/chrome/browser/ui/browser_command_controller.h index 4cb5ba0..381be31e 100644 --- a/chrome/browser/ui/browser_command_controller.h +++ b/chrome/browser/ui/browser_command_controller.h
@@ -63,6 +63,7 @@ void FindBarVisibilityChanged(); void ExtensionStateChanged(); void TabKeyboardFocusChangedTo(base::Optional<int> index); + void WebContentsFocusChanged(); // Overriden from CommandUpdater: bool SupportsCommand(int id) const override; @@ -194,6 +195,9 @@ // no tab has keyboard focus. void UpdateCommandsForTabKeyboardFocus(base::Optional<int> target_index); + // Updates commands that depend on whether web contents is focused or not. + void UpdateCommandsForWebContentsFocus(); + inline BrowserWindow* window(); inline Profile* profile();
diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc index bb21082c..fbf0f82 100644 --- a/chrome/browser/ui/browser_commands.cc +++ b/chrome/browser/ui/browser_commands.cc
@@ -1535,7 +1535,7 @@ .CanViewSource(); } -void ToggleCaretBrowsing(Browser* browser) { +bool CanToggleCaretBrowsing(Browser* browser) { #if defined(OS_MAC) // On Mac, ignore the keyboard shortcut unless web contents is focused, // because the keyboard shortcut interferes with a Japenese IME when the @@ -1543,12 +1543,18 @@ WebContents* web_contents = browser->tab_strip_model()->GetActiveWebContents(); if (!web_contents) - return; + return false; content::RenderWidgetHostView* rwhv = web_contents->GetRenderWidgetHostView(); - if (!rwhv || !rwhv->HasFocus()) - return; + return rwhv && rwhv->HasFocus(); +#else + return true; #endif // defined(OS_MAC) +} + +void ToggleCaretBrowsing(Browser* browser) { + if (!CanToggleCaretBrowsing(browser)) + return; PrefService* prefService = browser->profile()->GetPrefs(); bool enabled = prefService->GetBoolean(prefs::kCaretBrowsingEnabled);
diff --git a/chrome/browser/ui/browser_commands.h b/chrome/browser/ui/browser_commands.h index 0281c25..6aa3a78 100644 --- a/chrome/browser/ui/browser_commands.h +++ b/chrome/browser/ui/browser_commands.h
@@ -207,6 +207,7 @@ // the tabbed Browser. Browser* OpenInChrome(Browser* hosted_app_browser); bool CanViewSource(const Browser* browser); +bool CanToggleCaretBrowsing(Browser* browser); void ToggleCaretBrowsing(Browser* browser); void PromptToNameWindow(Browser* browser);
diff --git a/chrome/browser/ui/browser_list.cc b/chrome/browser/ui/browser_list.cc index 88411db..e6bb0e7 100644 --- a/chrome/browser/ui/browser_list.cc +++ b/chrome/browser/ui/browser_list.cc
@@ -95,9 +95,8 @@ if (browser->profile()->IsGuestSession() || browser->profile()->IsEphemeralGuestProfile()) { - base::UmaHistogramCounts100( - "Browser.WindowCount.Guest", - GetOffTheRecordBrowsersActiveForProfile(browser->profile())); + base::UmaHistogramCounts100("Browser.WindowCount.Guest", + GetGuestBrowserCount()); } else if (browser->profile()->IsIncognitoProfile()) { base::UmaHistogramCounts100( "Browser.WindowCount.Incognito",
diff --git a/chrome/browser/ui/cocoa/notifications/notification_builder_base.h b/chrome/browser/ui/cocoa/notifications/notification_builder_base.h index 558ea73..1c6f072e 100644 --- a/chrome/browser/ui/cocoa/notifications/notification_builder_base.h +++ b/chrome/browser/ui/cocoa/notifications/notification_builder_base.h
@@ -14,8 +14,10 @@ base::scoped_nsobject<NSMutableDictionary> _notificationData; } -// Initializes an empty builder along with |_notificationData|. -- (instancetype)init; +// Initializes a builder with default values for the button labels. +- (instancetype)initWithCloseLabel:(NSString*)closeLabel + optionsLabel:(NSString*)optionsLabel + settingsLabel:(NSString*)settingsLabel; // Initializes a builder by deserializing |data|. The |data| must have been // generated by calling the buildDictionary function on another builder
diff --git a/chrome/browser/ui/cocoa/notifications/notification_builder_base.mm b/chrome/browser/ui/cocoa/notifications/notification_builder_base.mm index 4d24b29d..e39c3a6 100644 --- a/chrome/browser/ui/cocoa/notifications/notification_builder_base.mm +++ b/chrome/browser/ui/cocoa/notifications/notification_builder_base.mm
@@ -8,9 +8,20 @@ @implementation NotificationBuilderBase -- (instancetype)init { +- (instancetype)initWithCloseLabel:(NSString*)closeLabel + optionsLabel:(NSString*)optionsLabel + settingsLabel:(NSString*)settingsLabel { if ((self = [super init])) { _notificationData.reset([[NSMutableDictionary alloc] init]); + [_notificationData + setObject:closeLabel + forKey:notification_constants::kNotificationCloseButtonTag]; + [_notificationData + setObject:optionsLabel + forKey:notification_constants::kNotificationOptionsButtonTag]; + [_notificationData + setObject:settingsLabel + forKey:notification_constants::kNotificationSettingsButtonTag]; } return self; }
diff --git a/chrome/browser/ui/cocoa/notifications/notification_builder_mac.h b/chrome/browser/ui/cocoa/notifications/notification_builder_mac.h index a672946..690779077 100644 --- a/chrome/browser/ui/cocoa/notifications/notification_builder_mac.h +++ b/chrome/browser/ui/cocoa/notifications/notification_builder_mac.h
@@ -19,7 +19,7 @@ // base::scoped_nsobject<NotificationBuilder> builder( // [[NotificationBuilder alloc] initWithCloseLabel:@"Close" // optionsLabel:@"Options" -// settingsLabel:@"Settings")]); +// settingsLabel:@"Settings"]); // [builder setTitle:@"Hello"]; // // // Build a notification out of the data. @@ -34,11 +34,6 @@ // [[NotificationBuilder alloc] initWithData:notificationData]); @interface NotificationBuilder : NotificationBuilderBase -// Initializes a builder with default values for the button labels. -- (instancetype)initWithCloseLabel:(NSString*)closeLabel - optionsLabel:(NSString*)optionsLabel - settingsLabel:(NSString*)settingsLabel; - // Sets the icon that is displayed in the notification if present - (void)setIcon:(NSImage*)icon;
diff --git a/chrome/browser/ui/cocoa/notifications/notification_builder_mac.mm b/chrome/browser/ui/cocoa/notifications/notification_builder_mac.mm index 8d1abd2..2b6d5c9 100644 --- a/chrome/browser/ui/cocoa/notifications/notification_builder_mac.mm +++ b/chrome/browser/ui/cocoa/notifications/notification_builder_mac.mm
@@ -13,23 +13,6 @@ @implementation NotificationBuilder -- (instancetype)initWithCloseLabel:(NSString*)closeLabel - optionsLabel:(NSString*)optionsLabel - settingsLabel:(NSString*)settingsLabel { - if ((self = [super init])) { - [_notificationData - setObject:closeLabel - forKey:notification_constants::kNotificationCloseButtonTag]; - [_notificationData - setObject:optionsLabel - forKey:notification_constants::kNotificationOptionsButtonTag]; - [_notificationData - setObject:settingsLabel - forKey:notification_constants::kNotificationSettingsButtonTag]; - } - return self; -} - - (void)setIcon:(NSImage*)icon { if (!icon) return;
diff --git a/chrome/browser/ui/cocoa/notifications/notification_constants_mac.h b/chrome/browser/ui/cocoa/notifications/notification_constants_mac.h index 8bb63ff..06e9903 100644 --- a/chrome/browser/ui/cocoa/notifications/notification_constants_mac.h +++ b/chrome/browser/ui/cocoa/notifications/notification_constants_mac.h
@@ -20,6 +20,7 @@ extern NSString* const kNotificationCloseButtonTag; extern NSString* const kNotificationOptionsButtonTag; extern NSString* const kNotificationSettingsButtonTag; +extern NSString* const kNotificationCategoryIdentifier; extern NSString* const kNotificationOrigin; extern NSString* const kNotificationId;
diff --git a/chrome/browser/ui/cocoa/notifications/notification_constants_mac.mm b/chrome/browser/ui/cocoa/notifications/notification_constants_mac.mm index b1fc5dd..9e01bf0 100644 --- a/chrome/browser/ui/cocoa/notifications/notification_constants_mac.mm +++ b/chrome/browser/ui/cocoa/notifications/notification_constants_mac.mm
@@ -19,6 +19,7 @@ NSString* const kNotificationCloseButtonTag = @"closeButton"; NSString* const kNotificationOptionsButtonTag = @"optionsButton"; NSString* const kNotificationSettingsButtonTag = @"settingsButton"; +NSString* const kNotificationCategoryIdentifier = @"categoryIdentifier"; // Applicable to NotificationBuilder and NotificationResponseBuilder NSString* const kNotificationOrigin = @"notificationOrigin";
diff --git a/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac.h b/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac.h index d166f32..a01f892 100644 --- a/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac.h +++ b/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac.h
@@ -11,13 +11,16 @@ #import "chrome/browser/ui/cocoa/notifications/notification_builder_base.h" @class UNMutableNotificationContent; +@class UNNotificationCategory; // Provides a marshallable way for storing the information required to construct // a UNMutableNotificationContent that is to be displayed on the system. // // A quick example: // base::scoped_nsobject<UNNotificationBuilder> builder( -// [[UNNotificationBuilder alloc] init]); +// [[UNNotificationBuilder alloc] initWithCloseLabel:@"Close" +// optionsLabel:@"Options" +// settingsLabel:@"Settings"]); // [builder setTitle:@"Hello"]; // // // Build a notification out of the data. @@ -36,6 +39,10 @@ // Sets the icon path that is used to display it in the notification if present - (void)setIconPath:(NSString*)iconPath; +// Returns a UNNotificationCategory with the specified buttons. Needs to be +// called after setNotificationId is. +- (UNNotificationCategory*)buildCategory; + // Returns a notification ready to be displayed out of the provided // |notificationData|. - (UNMutableNotificationContent*)buildUserNotification;
diff --git a/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac.mm b/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac.mm index 7e7f9bc..6bc03e0 100644 --- a/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac.mm +++ b/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac.mm
@@ -19,6 +19,104 @@ forKey:notification_constants::kNotificationIconPath]; } +- (UNNotificationCategory*)buildCategory { + DCHECK( + [_notificationData objectForKey:notification_constants::kNotificationId]); + DCHECK([_notificationData + objectForKey:notification_constants::kNotificationHasSettingsButton]); + + NSMutableArray* buttonsArray = [NSMutableArray arrayWithCapacity:4]; + + // Extensions don't have a settings button. + NSNumber* showSettingsButton = [_notificationData + objectForKey:notification_constants::kNotificationHasSettingsButton]; + BOOL settingsButton = [showSettingsButton boolValue]; + + UNNotificationAction* closeButton = [UNNotificationAction + actionWithIdentifier:notification_constants::kNotificationCloseButtonTag + title:[_notificationData + objectForKey:notification_constants:: + kNotificationCloseButtonTag] + options:UNNotificationActionOptionNone]; + [buttonsArray addObject:closeButton]; + + if ([_notificationData + objectForKey:notification_constants::kNotificationButtonOne]) { + UNNotificationAction* buttonOne = [UNNotificationAction + actionWithIdentifier:notification_constants::kNotificationButtonOne + title:[_notificationData + objectForKey:notification_constants:: + kNotificationButtonOne] + options:UNNotificationActionOptionNone]; + [buttonsArray addObject:buttonOne]; + } + if ([_notificationData + objectForKey:notification_constants::kNotificationButtonTwo]) { + UNNotificationAction* buttonTwo = [UNNotificationAction + actionWithIdentifier:notification_constants::kNotificationButtonTwo + title:[_notificationData + objectForKey:notification_constants:: + kNotificationButtonTwo] + options:UNNotificationActionOptionNone]; + [buttonsArray addObject:buttonTwo]; + } + + if (settingsButton) { + UNNotificationAction* settingsButton = [UNNotificationAction + actionWithIdentifier:notification_constants:: + kNotificationSettingsButtonTag + title: + [_notificationData + objectForKey:notification_constants:: + kNotificationSettingsButtonTag] + options:UNNotificationActionOptionNone]; + [buttonsArray addObject:settingsButton]; + } + + // If there are only 2 buttons [Close, button] then the actions array need to + // be set as [button, Close] so that close is on top. This is to safeguard the + // order of the buttons in case respondsToSelector:@selector(alternateAction) + // were to return false. + if ([buttonsArray count] == 2) { + // Remove the close button and move it to the end of the array + [buttonsArray removeObject:closeButton]; + [buttonsArray addObject:closeButton]; + } + + UNNotificationCategory* category = [UNNotificationCategory + categoryWithIdentifier: + [_notificationData + objectForKey:notification_constants::kNotificationId] + actions:buttonsArray + intentIdentifiers:@[] + options:UNNotificationCategoryOptionCustomDismissAction]; + [_notificationData + setObject:[_notificationData + objectForKey:notification_constants::kNotificationId] + forKey:notification_constants::kNotificationCategoryIdentifier]; + + // This uses a private API to make sure the close button is always visible in + // both alerts and banners, and modifies its content so that it is consistent + // with the rest of the notification buttons. Otherwise, the text inside the + // close button will come from the Apple API + if ([category respondsToSelector:@selector(alternateAction)]) { + [buttonsArray removeObject:closeButton]; + [category setValue:buttonsArray forKey:@"actions"]; + [category setValue:closeButton forKey:@"_alternateAction"]; + } + + // This uses a private API to change the text of the actions menu title so + // that it is consistent with the rest of the notification buttons + if ([category respondsToSelector:@selector(actionsMenuTitle)]) { + [category setValue:[_notificationData + objectForKey:notification_constants:: + kNotificationOptionsButtonTag] + forKey:@"_actionsMenuTitle"]; + } + + return category; +} + - (UNMutableNotificationContent*)buildUserNotification { base::scoped_nsobject<UNMutableNotificationContent> toast( [[UNMutableNotificationContent alloc] init]); @@ -94,6 +192,14 @@ if (attachment != nil) [toast setAttachments:@[ attachment ]]; } + // Category + if ([_notificationData objectForKey:notification_constants:: + kNotificationCategoryIdentifier]) { + [toast setCategoryIdentifier: + [_notificationData + objectForKey:notification_constants:: + kNotificationCategoryIdentifier]]; + } [toast setUserInfo:@{ notification_constants::kNotificationOrigin : origin,
diff --git a/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac_unittest.mm b/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac_unittest.mm index b138757..361c1c5 100644 --- a/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac_unittest.mm +++ b/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac_unittest.mm
@@ -25,7 +25,9 @@ base::scoped_nsobject<UNNotificationBuilder> NewTestBuilder( NotificationHandler::Type type) { base::scoped_nsobject<UNNotificationBuilder> builder( - [[UNNotificationBuilder alloc] init]); + [[UNNotificationBuilder alloc] initWithCloseLabel:@"Close" + optionsLabel:@"Options" + settingsLabel:@"Settings"]); [builder setNotificationId:@"notificationId"]; [builder setProfileId:@"profileId"]; [builder setIncognito:false]; @@ -52,6 +54,281 @@ } } +TEST(UNNotificationBuilderMacTest, TestNotificationNoButtons) { + if (@available(macOS 10.14, *)) { + base::scoped_nsobject<UNNotificationBuilder> builder = + NewTestBuilder(NotificationHandler::Type::WEB_NON_PERSISTENT); + + [builder setShowSettingsButton:true]; + UNNotificationCategory* category = [builder buildCategory]; + + // Test contents of the category + if ([category respondsToSelector:@selector(alternateAction)]) { + EXPECT_EQ("Close", base::SysNSStringToUTF8([[category + valueForKey:@"_alternateAction"] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationCloseButtonTag), + base::SysNSStringToUTF8( + [[category valueForKey:@"_alternateAction"] identifier])); + + EXPECT_EQ("Settings", base::SysNSStringToUTF8( + [[[category actions] lastObject] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationSettingsButtonTag), + base::SysNSStringToUTF8( + [[[category actions] lastObject] identifier])); + + EXPECT_EQ(1ul, [[category actions] count]); + } else { + EXPECT_EQ("Settings", base::SysNSStringToUTF8( + [[[category actions] firstObject] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationSettingsButtonTag), + base::SysNSStringToUTF8( + [[[category actions] firstObject] identifier])); + + EXPECT_EQ("Close", base::SysNSStringToUTF8( + [[[category actions] lastObject] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationCloseButtonTag), + base::SysNSStringToUTF8( + [[[category actions] lastObject] identifier])); + + EXPECT_EQ(2ul, [[category actions] count]); + } + + UNMutableNotificationContent* content = [builder buildUserNotification]; + EXPECT_EQ("notificationId", + base::SysNSStringToUTF8([content categoryIdentifier])); + } +} + +TEST(UNNotificationBuilderMacTest, TestNotificationOneButton) { + if (@available(macOS 10.14, *)) { + base::scoped_nsobject<UNNotificationBuilder> builder = + NewTestBuilder(NotificationHandler::Type::WEB_NON_PERSISTENT); + + [builder setButtons:@"Button1" secondaryButton:@""]; + [builder setShowSettingsButton:true]; + UNNotificationCategory* category = [builder buildCategory]; + + // Test contents of the category + if ([category respondsToSelector:@selector(alternateAction)]) { + EXPECT_EQ("Close", base::SysNSStringToUTF8([[category + valueForKey:@"_alternateAction"] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationCloseButtonTag), + base::SysNSStringToUTF8( + [[category valueForKey:@"_alternateAction"] identifier])); + + EXPECT_EQ("Button1", + base::SysNSStringToUTF8([[category actions][0] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationButtonOne), + base::SysNSStringToUTF8([[category actions][0] identifier])); + + EXPECT_EQ(2ul, [[category actions] count]); + } else { + EXPECT_EQ("Close", base::SysNSStringToUTF8( + [[[category actions] firstObject] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationCloseButtonTag), + base::SysNSStringToUTF8( + [[[category actions] firstObject] identifier])); + + EXPECT_EQ("Button1", + base::SysNSStringToUTF8([[category actions][1] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationButtonOne), + base::SysNSStringToUTF8([[category actions][1] identifier])); + + EXPECT_EQ(3ul, [[category actions] count]); + } + + EXPECT_EQ("Settings", + base::SysNSStringToUTF8([[[category actions] lastObject] title])); + EXPECT_EQ( + base::SysNSStringToUTF8( + notification_constants::kNotificationSettingsButtonTag), + base::SysNSStringToUTF8([[[category actions] lastObject] identifier])); + + if ([category respondsToSelector:@selector(actionsMenuTitle)]) { + EXPECT_EQ("Options", base::SysNSStringToUTF8( + [category valueForKey:@"_actionsMenuTitle"])); + } + + UNMutableNotificationContent* content = [builder buildUserNotification]; + EXPECT_EQ("notificationId", + base::SysNSStringToUTF8([content categoryIdentifier])); + } +} + +TEST(UNNotificationBuilderMacTest, TestNotificationTwoButtons) { + if (@available(macOS 10.14, *)) { + base::scoped_nsobject<UNNotificationBuilder> builder = + NewTestBuilder(NotificationHandler::Type::WEB_NON_PERSISTENT); + + [builder setButtons:@"Button1" secondaryButton:@"Button2"]; + [builder setShowSettingsButton:true]; + UNNotificationCategory* category = [builder buildCategory]; + + // Test contents of the category + if ([category respondsToSelector:@selector(alternateAction)]) { + EXPECT_EQ("Close", base::SysNSStringToUTF8([[category + valueForKey:@"_alternateAction"] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationCloseButtonTag), + base::SysNSStringToUTF8( + [[category valueForKey:@"_alternateAction"] identifier])); + + EXPECT_EQ("Button1", + base::SysNSStringToUTF8([[category actions][0] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationButtonOne), + base::SysNSStringToUTF8([[category actions][0] identifier])); + + EXPECT_EQ("Button2", + base::SysNSStringToUTF8([[category actions][1] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationButtonTwo), + base::SysNSStringToUTF8([[category actions][1] identifier])); + + EXPECT_EQ(3ul, [[category actions] count]); + } else { + EXPECT_EQ("Close", base::SysNSStringToUTF8( + [[[category actions] firstObject] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationCloseButtonTag), + base::SysNSStringToUTF8( + [[[category actions] firstObject] identifier])); + + EXPECT_EQ("Button1", + base::SysNSStringToUTF8([[category actions][1] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationButtonOne), + base::SysNSStringToUTF8([[category actions][1] identifier])); + + EXPECT_EQ("Button2", + base::SysNSStringToUTF8([[category actions][2] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationButtonTwo), + base::SysNSStringToUTF8([[category actions][2] identifier])); + + EXPECT_EQ(4ul, [[category actions] count]); + } + + EXPECT_EQ("Settings", + base::SysNSStringToUTF8([[[category actions] lastObject] title])); + EXPECT_EQ( + base::SysNSStringToUTF8( + notification_constants::kNotificationSettingsButtonTag), + base::SysNSStringToUTF8([[[category actions] lastObject] identifier])); + + if ([category respondsToSelector:@selector(actionsMenuTitle)]) { + EXPECT_EQ("Options", base::SysNSStringToUTF8( + [category valueForKey:@"_actionsMenuTitle"])); + } + + UNMutableNotificationContent* content = [builder buildUserNotification]; + EXPECT_EQ("notificationId", + base::SysNSStringToUTF8([content categoryIdentifier])); + EXPECT_EQ(0ul, [[content attachments] count]); + } +} + +TEST(UNNotificationBuilderMacTest, TestNotificationExtensionNoButtons) { + if (@available(macOS 10.14, *)) { + base::scoped_nsobject<UNNotificationBuilder> builder = + NewTestBuilder(NotificationHandler::Type::EXTENSION); + + UNNotificationCategory* category = [builder buildCategory]; + + // Test contents of the category + if ([category respondsToSelector:@selector(alternateAction)]) { + EXPECT_EQ("Close", base::SysNSStringToUTF8([[category + valueForKey:@"_alternateAction"] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationCloseButtonTag), + base::SysNSStringToUTF8( + [[category valueForKey:@"_alternateAction"] identifier])); + + EXPECT_EQ(0ul, [[category actions] count]); + } else { + EXPECT_EQ("Close", base::SysNSStringToUTF8( + [[[category actions] firstObject] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationCloseButtonTag), + base::SysNSStringToUTF8( + [[[category actions] firstObject] identifier])); + + EXPECT_EQ(1ul, [[category actions] count]); + } + + UNMutableNotificationContent* content = [builder buildUserNotification]; + EXPECT_EQ("notificationId", + base::SysNSStringToUTF8([content categoryIdentifier])); + } +} + +TEST(UNNotificationBuilderMacTest, TestNotificationExtensionTwoButtons) { + if (@available(macOS 10.14, *)) { + base::scoped_nsobject<UNNotificationBuilder> builder = + NewTestBuilder(NotificationHandler::Type::EXTENSION); + + [builder setButtons:@"Button1" secondaryButton:@"Button2"]; + UNNotificationCategory* category = [builder buildCategory]; + + // Test contents of the category + if ([category respondsToSelector:@selector(alternateAction)]) { + EXPECT_EQ("Close", base::SysNSStringToUTF8([[category + valueForKey:@"_alternateAction"] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationCloseButtonTag), + base::SysNSStringToUTF8( + [[category valueForKey:@"_alternateAction"] identifier])); + + EXPECT_EQ("Button1", + base::SysNSStringToUTF8([[category actions][0] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationButtonOne), + base::SysNSStringToUTF8([[category actions][0] identifier])); + + EXPECT_EQ(2ul, [[category actions] count]); + } else { + EXPECT_EQ("Close", base::SysNSStringToUTF8( + [[[category actions] firstObject] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationCloseButtonTag), + base::SysNSStringToUTF8( + [[[category actions] firstObject] identifier])); + + EXPECT_EQ("Button1", + base::SysNSStringToUTF8([[category actions][1] title])); + EXPECT_EQ(base::SysNSStringToUTF8( + notification_constants::kNotificationButtonOne), + base::SysNSStringToUTF8([[category actions][1] identifier])); + + EXPECT_EQ(3ul, [[category actions] count]); + } + + EXPECT_EQ("Button2", + base::SysNSStringToUTF8([[[category actions] lastObject] title])); + EXPECT_EQ( + base::SysNSStringToUTF8(notification_constants::kNotificationButtonTwo), + base::SysNSStringToUTF8([[[category actions] lastObject] identifier])); + + if ([category respondsToSelector:@selector(actionsMenuTitle)]) { + EXPECT_EQ("Options", base::SysNSStringToUTF8( + [category valueForKey:@"_actionsMenuTitle"])); + } + + UNMutableNotificationContent* content = [builder buildUserNotification]; + EXPECT_EQ("notificationId", + base::SysNSStringToUTF8([content categoryIdentifier])); + EXPECT_EQ(0ul, [[content attachments] count]); + } +} + TEST(UNNotificationBuilderMacTest, TestNotificationDataMissingContextMessage) { if (@available(macOS 10.14, *)) { base::scoped_nsobject<UNNotificationBuilder> builder =
diff --git a/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac.mm b/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac.mm index 97eefc3..46c7efa2 100644 --- a/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac.mm +++ b/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac.mm
@@ -58,6 +58,16 @@ isEqualToString:notification_constants:: kNotificationSettingsButtonTag]) { operation = NotificationOperation::NOTIFICATION_SETTINGS; + } else if ([[response actionIdentifier] + isEqualToString:notification_constants:: + kNotificationButtonOne]) { + operation = NotificationOperation::NOTIFICATION_CLICK; + buttonIndex = 0; + } else if ([[response actionIdentifier] + isEqualToString:notification_constants:: + kNotificationButtonTwo]) { + operation = NotificationOperation::NOTIFICATION_CLICK; + buttonIndex = 1; } else { NOTREACHED(); }
diff --git a/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac_unittest.mm b/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac_unittest.mm index 6bb15c3f..21a9379 100644 --- a/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac_unittest.mm +++ b/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac_unittest.mm
@@ -53,7 +53,9 @@ base::scoped_nsobject<UNNotificationBuilder> NewTestBuilder( NotificationHandler::Type type) { base::scoped_nsobject<UNNotificationBuilder> builder( - [[UNNotificationBuilder alloc] init]); + [[UNNotificationBuilder alloc] initWithCloseLabel:@"Close" + optionsLabel:@"Options" + settingsLabel:@"Settings"]); [builder setTitle:@"Title"]; [builder setSubTitle:@"https://www.moe.com"]; [builder setContextMessage:@"hey there"]; @@ -210,3 +212,55 @@ buttonIndex.intValue); } } + +TEST(UNNotificationResponseBuilderMacTest, TestNotificationButtonOne) { + if (@available(macOS 10.14, *)) { + base::scoped_nsobject<UNNotificationBuilder> builder = + NewTestBuilder(NotificationHandler::Type::WEB_PERSISTENT); + UNMutableNotificationContent* content = [builder buildUserNotification]; + base::scoped_nsobject<NSMutableDictionary> userInfo( + [[content userInfo] mutableCopy]); + + FakeUNNotificationResponse* fakeResponse = CreateFakeResponse(userInfo); + fakeResponse.actionIdentifier = + notification_constants::kNotificationButtonOne; + + NSDictionary* response = [UNNotificationResponseBuilder + buildDictionary:static_cast<UNNotificationResponse*>(fakeResponse)]; + + NSNumber* operation = + [response objectForKey:notification_constants::kNotificationOperation]; + NSNumber* buttonIndex = [response + objectForKey:notification_constants::kNotificationButtonIndex]; + + EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLICK), + operation.intValue); + EXPECT_EQ(0, buttonIndex.intValue); + } +} + +TEST(UNNotificationResponseBuilderMacTest, TestNotificationButtonTwo) { + if (@available(macOS 10.14, *)) { + base::scoped_nsobject<UNNotificationBuilder> builder = + NewTestBuilder(NotificationHandler::Type::WEB_PERSISTENT); + UNMutableNotificationContent* content = [builder buildUserNotification]; + base::scoped_nsobject<NSMutableDictionary> userInfo( + [[content userInfo] mutableCopy]); + + FakeUNNotificationResponse* fakeResponse = CreateFakeResponse(userInfo); + fakeResponse.actionIdentifier = + notification_constants::kNotificationButtonTwo; + + NSDictionary* response = [UNNotificationResponseBuilder + buildDictionary:static_cast<UNNotificationResponse*>(fakeResponse)]; + + NSNumber* operation = + [response objectForKey:notification_constants::kNotificationOperation]; + NSNumber* buttonIndex = [response + objectForKey:notification_constants::kNotificationButtonIndex]; + + EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLICK), + operation.intValue); + EXPECT_EQ(1, buttonIndex.intValue); + } +}
diff --git a/chrome/browser/ui/tab_contents/core_tab_helper.cc b/chrome/browser/ui/tab_contents/core_tab_helper.cc index 3ac395e..d8b3952 100644 --- a/chrome/browser/ui/tab_contents/core_tab_helper.cc +++ b/chrome/browser/ui/tab_contents/core_tab_helper.cc
@@ -245,6 +245,26 @@ #endif } +// Notify browser commands that depend on whether focus is in the +// web contents or not. +void CoreTabHelper::OnWebContentsFocused( + content::RenderWidgetHost* render_widget_host) { +#if !defined(OS_ANDROID) + Browser* browser = chrome::FindBrowserWithWebContents(web_contents()); + if (browser) + browser->command_controller()->WebContentsFocusChanged(); +#endif // defined(OS_ANDROID) +} + +void CoreTabHelper::OnWebContentsLostFocus( + content::RenderWidgetHost* render_widget_host) { +#if !defined(OS_ANDROID) + Browser* browser = chrome::FindBrowserWithWebContents(web_contents()); + if (browser) + browser->command_controller()->WebContentsFocusChanged(); +#endif // defined(OS_ANDROID) +} + // Handles the image thumbnail for the context node, composes a image search // request based on the received thumbnail and opens the request in a new tab. void CoreTabHelper::DoSearchByImageInNewTab(
diff --git a/chrome/browser/ui/tab_contents/core_tab_helper.h b/chrome/browser/ui/tab_contents/core_tab_helper.h index 206357b1..66d65b3 100644 --- a/chrome/browser/ui/tab_contents/core_tab_helper.h +++ b/chrome/browser/ui/tab_contents/core_tab_helper.h
@@ -60,6 +60,8 @@ void DidStartLoading() override; void OnVisibilityChanged(content::Visibility visibility) override; void NavigationEntriesDeleted() override; + void OnWebContentsFocused(content::RenderWidgetHost*) override; + void OnWebContentsLostFocus(content::RenderWidgetHost*) override; void DoSearchByImageInNewTab( mojo::AssociatedRemote<chrome::mojom::ChromeRenderFrame>
diff --git a/chrome/browser/ui/views/passwords/account_chooser_dialog_view.cc b/chrome/browser/ui/views/passwords/account_chooser_dialog_view.cc index f95a186f..347239e1 100644 --- a/chrome/browser/ui/views/passwords/account_chooser_dialog_view.cc +++ b/chrome/browser/ui/views/passwords/account_chooser_dialog_view.cc
@@ -36,55 +36,6 @@ #include "ui/views/style/typography.h" #include "ui/views/widget/widget.h" -namespace { - -// Maximum height of the credential list. The unit is one row's height. -constexpr double kMaxHeightAccounts = 3.5; - -// Creates a list view of credentials in |forms|. -views::ScrollView* CreateCredentialsView( - const CredentialManagerDialogController::FormsVector& forms, - views::ButtonListener* button_listener, - network::mojom::URLLoaderFactory* loader_factory) { - auto list_view = std::make_unique<views::View>(); - list_view->SetLayoutManager(std::make_unique<views::BoxLayout>( - views::BoxLayout::Orientation::kVertical)); - int item_height = 0; - for (const auto& form : forms) { - std::pair<base::string16, base::string16> titles = - GetCredentialLabelsForAccountChooser(*form); - CredentialsItemView* credential_view = - new CredentialsItemView(button_listener, titles.first, titles.second, - form.get(), loader_factory); - credential_view->SetStoreIndicatorIcon(form->in_store); - ChromeLayoutProvider* layout_provider = ChromeLayoutProvider::Get(); - gfx::Insets insets = - layout_provider->GetInsetsMetric(views::INSETS_DIALOG_SUBSECTION); - const int vertical_padding = layout_provider->GetDistanceMetric( - views::DISTANCE_RELATED_CONTROL_VERTICAL); - credential_view->SetBorder(views::CreateEmptyBorder( - vertical_padding, insets.left(), vertical_padding, insets.right())); - item_height = std::max(item_height, credential_view->GetPreferredHeight()); - list_view->AddChildView(credential_view); - } - views::ScrollView* scroll_view = new views::ScrollView; - scroll_view->ClipHeightTo(0, kMaxHeightAccounts * item_height); - scroll_view->SetContents(std::move(list_view)); - return scroll_view; -} - -std::unique_ptr<views::View> CreateGoogleAccountFooter() { - auto label = std::make_unique<views::Label>( - l10n_util::GetStringUTF16(IDS_SAVE_PASSWORD_FOOTER), - ChromeTextContext::CONTEXT_DIALOG_BODY_TEXT_SMALL, - views::style::STYLE_SECONDARY); - label->SetMultiLine(true); - label->SetHorizontalAlignment(gfx::ALIGN_LEFT); - return label; -} - -} // namespace - AccountChooserDialogView::AccountChooserDialogView( CredentialManagerDialogController* controller, content::WebContents* web_contents) @@ -96,8 +47,14 @@ ui::DIALOG_BUTTON_OK, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_ACCOUNT_CHOOSER_SIGN_IN)); set_close_on_deactivate(false); - if (controller_->ShouldShowFooter()) - SetFootnoteView(CreateGoogleAccountFooter()); + if (controller_->ShouldShowFooter()) { + auto* label = SetFootnoteView(std::make_unique<views::Label>( + l10n_util::GetStringUTF16(IDS_SAVE_PASSWORD_FOOTER), + ChromeTextContext::CONTEXT_DIALOG_BODY_TEXT_SMALL, + views::style::STYLE_SECONDARY)); + label->SetMultiLine(true); + label->SetHorizontalAlignment(gfx::ALIGN_LEFT); + } SetArrow(views::BubbleBorder::NONE); set_margins(gfx::Insets(margins().top(), 0, margins().bottom(), 0)); chrome::RecordDialogCreation(chrome::DialogIdentifier::ACCOUNT_CHOOSER); @@ -151,7 +108,7 @@ const ui::Event& event) { CredentialsItemView* view = static_cast<CredentialsItemView*>(sender); // On Mac the button click event may be dispatched after the dialog was - // hidden. Thus, the controller can be NULL. + // hidden. Thus, the controller can be null. if (controller_) { controller_->OnChooseCredentials( *view->form(), @@ -161,12 +118,34 @@ void AccountChooserDialogView::InitWindow() { SetLayoutManager(std::make_unique<views::FillLayout>()); - AddChildView(CreateCredentialsView( - controller_->GetLocalForms(), this, - content::BrowserContext::GetDefaultStoragePartition( - Profile::FromBrowserContext(web_contents_->GetBrowserContext())) - ->GetURLLoaderFactoryForBrowserProcess() - .get())); + + views::ScrollView* scroll_view = + AddChildView(std::make_unique<views::ScrollView>()); + auto* list_view = scroll_view->SetContents(std::make_unique<views::View>()); + list_view->SetLayoutManager(std::make_unique<views::BoxLayout>( + views::BoxLayout::Orientation::kVertical)); + int item_height = 0; + for (const auto& form : controller_->GetLocalForms()) { + const auto titles = GetCredentialLabelsForAccountChooser(*form); + auto* credential_view = + list_view->AddChildView(std::make_unique<CredentialsItemView>( + this, titles.first, titles.second, form.get(), + content::BrowserContext::GetDefaultStoragePartition( + Profile::FromBrowserContext(web_contents_->GetBrowserContext())) + ->GetURLLoaderFactoryForBrowserProcess() + .get())); + credential_view->SetStoreIndicatorIcon(form->in_store); + ChromeLayoutProvider* layout_provider = ChromeLayoutProvider::Get(); + gfx::Insets insets = + layout_provider->GetInsetsMetric(views::INSETS_DIALOG_SUBSECTION); + const int vertical_padding = layout_provider->GetDistanceMetric( + views::DISTANCE_RELATED_CONTROL_VERTICAL); + credential_view->SetBorder(views::CreateEmptyBorder( + vertical_padding, insets.left(), vertical_padding, insets.right())); + item_height = std::max(item_height, credential_view->GetPreferredHeight()); + } + constexpr float kMaxVisibleItems = 3.5; + scroll_view->ClipHeightTo(0, kMaxVisibleItems * item_height); } AccountChooserPrompt* CreateAccountChooserPromptView(
diff --git a/chrome/browser/ui/views/passwords/credentials_item_view.h b/chrome/browser/ui/views/passwords/credentials_item_view.h index 5ab38e2..c2747f0 100644 --- a/chrome/browser/ui/views/passwords/credentials_item_view.h +++ b/chrome/browser/ui/views/passwords/credentials_item_view.h
@@ -58,7 +58,7 @@ // views::View: void OnPaintBackground(gfx::Canvas* canvas) override; - const autofill::PasswordForm* form_; + const autofill::PasswordForm* const form_; views::ImageView* image_view_;
diff --git a/chrome/browser/ui/views/passwords/password_auto_sign_in_view.cc b/chrome/browser/ui/views/passwords/password_auto_sign_in_view.cc index d3d345b..79c215f 100644 --- a/chrome/browser/ui/views/passwords/password_auto_sign_in_view.cc +++ b/chrome/browser/ui/views/passwords/password_auto_sign_in_view.cc
@@ -41,17 +41,17 @@ set_margins( ChromeLayoutProvider::Get()->GetInsetsMetric(views::INSETS_DIALOG)); - CredentialsItemView* credential = new CredentialsItemView( - this, - l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_AUTO_SIGNIN_TITLE_MD), - form.username_value, &form, - content::BrowserContext::GetDefaultStoragePartition( - controller_.GetProfile()) - ->GetURLLoaderFactoryForBrowserProcess() - .get(), - views::style::STYLE_HINT, views::style::STYLE_PRIMARY); + CredentialsItemView* credential = + AddChildView(std::make_unique<CredentialsItemView>( + nullptr, + l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_AUTO_SIGNIN_TITLE_MD), + form.username_value, &form, + content::BrowserContext::GetDefaultStoragePartition( + controller_.GetProfile()) + ->GetURLLoaderFactoryForBrowserProcess() + .get(), + views::style::STYLE_HINT, views::style::STYLE_PRIMARY)); credential->SetEnabled(false); - AddChildView(credential); // Setup the observer and maybe start the timer. Browser* browser = chrome::FindBrowserWithWebContents(GetWebContents()); @@ -91,11 +91,6 @@ return gfx::Size(width, GetHeightForWidth(width)); } -void PasswordAutoSignInView::ButtonPressed(views::Button* sender, - const ui::Event& event) { - NOTREACHED(); -} - void PasswordAutoSignInView::OnTimer() { controller_.OnAutoSignInToastTimeout(); CloseBubble();
diff --git a/chrome/browser/ui/views/passwords/password_auto_sign_in_view.h b/chrome/browser/ui/views/passwords/password_auto_sign_in_view.h index 6f3d63e..63c5682 100644 --- a/chrome/browser/ui/views/passwords/password_auto_sign_in_view.h +++ b/chrome/browser/ui/views/passwords/password_auto_sign_in_view.h
@@ -9,14 +9,12 @@ #include "base/timer/timer.h" #include "chrome/browser/ui/passwords/bubble_controllers/auto_sign_in_bubble_controller.h" #include "chrome/browser/ui/views/passwords/password_bubble_view_base.h" -#include "ui/views/controls/button/button.h" #include "ui/views/widget/widget.h" #include "ui/views/widget/widget_observer.h" // A view containing just one credential that was used for for automatic signing // in. -class PasswordAutoSignInView : public PasswordBubbleViewBase, - public views::ButtonListener { +class PasswordAutoSignInView : public PasswordBubbleViewBase { public: PasswordAutoSignInView(content::WebContents* web_contents, views::View* anchor_view); @@ -38,9 +36,6 @@ gfx::Size CalculatePreferredSize() const override; void OnWidgetActivationChanged(views::Widget* widget, bool active) override; - // views::ButtonListener: - void ButtonPressed(views::Button* sender, const ui::Event& event) override; - void OnTimer(); static base::TimeDelta GetTimeout();
diff --git a/chrome/browser/ui/views/passwords/password_bubble_view_base.cc b/chrome/browser/ui/views/passwords/password_bubble_view_base.cc index 19daf96..b93fd435 100644 --- a/chrome/browser/ui/views/passwords/password_bubble_view_base.cc +++ b/chrome/browser/ui/views/passwords/password_bubble_view_base.cc
@@ -6,7 +6,9 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" +#include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" #include "chrome/browser/ui/passwords/passwords_model_delegate.h" +#include "chrome/browser/ui/views/chrome_typography.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/frame/toolbar_button_provider.h" #include "chrome/browser/ui/views/location_bar/location_bar_view.h" @@ -20,6 +22,7 @@ #include "chrome/browser/ui/views/passwords/password_save_update_with_account_store_view.h" #include "chrome/browser/ui/views/passwords/post_save_compromised_bubble_view.h" #include "chrome/browser/ui/views/toolbar/toolbar_view.h" +#include "chrome/grit/generated_resources.h" #include "components/autofill/core/common/autofill_payments_features.h" #include "components/password_manager/core/common/password_manager_features.h" #include "ui/views/controls/button/button.h" @@ -148,6 +151,36 @@ g_manage_passwords_bubble_ = nullptr; } +// static +std::unique_ptr<views::Label> PasswordBubbleViewBase::CreateUsernameLabel( + const autofill::PasswordForm& form) { + auto label = std::make_unique<views::Label>( + GetDisplayUsername(form), views::style::CONTEXT_DIALOG_BODY_TEXT, + views::style::STYLE_SECONDARY); + label->SetHorizontalAlignment(gfx::ALIGN_LEFT); + return label; +} + +// static +std::unique_ptr<views::Label> PasswordBubbleViewBase::CreatePasswordLabel( + const autofill::PasswordForm& form) { + std::unique_ptr<views::Label> label; + if (form.federation_origin.opaque()) { + label = std::make_unique<views::Label>( + form.password_value, views::style::CONTEXT_DIALOG_BODY_TEXT, + STYLE_SECONDARY_MONOSPACED); + label->SetObscured(true); + } else { + label = std::make_unique<views::Label>( + l10n_util::GetStringFUTF16(IDS_PASSWORDS_VIA_FEDERATION, + GetDisplayFederation(form)), + views::style::CONTEXT_DIALOG_BODY_TEXT, views::style::STYLE_SECONDARY); + label->SetElideBehavior(gfx::ELIDE_HEAD); + } + label->SetHorizontalAlignment(gfx::ALIGN_LEFT); + return label; +} + void PasswordBubbleViewBase::Init() { LocationBarBubbleDelegateView::Init(); const PasswordBubbleControllerBase* controller = GetController();
diff --git a/chrome/browser/ui/views/passwords/password_bubble_view_base.h b/chrome/browser/ui/views/passwords/password_bubble_view_base.h index 5b66e1ca..7ac9e5a 100644 --- a/chrome/browser/ui/views/passwords/password_bubble_view_base.h +++ b/chrome/browser/ui/views/passwords/password_bubble_view_base.h
@@ -11,9 +11,18 @@ #include "build/build_config.h" #include "chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.h" +namespace autofill { +struct PasswordForm; +} + namespace content { class WebContents; } + +namespace views { +class Label; +} + class PasswordBubbleControllerBase; // Base class for all manage-passwords bubbles. Provides static methods for @@ -66,6 +75,11 @@ ~PasswordBubbleViewBase() override; + static std::unique_ptr<views::Label> CreateUsernameLabel( + const autofill::PasswordForm& form); + static std::unique_ptr<views::Label> CreatePasswordLabel( + const autofill::PasswordForm& form); + private: // views::BubbleDialogDelegateView: void Init() override;
diff --git a/chrome/browser/ui/views/passwords/password_items_view.cc b/chrome/browser/ui/views/passwords/password_items_view.cc index 09348ab..69dad05 100644 --- a/chrome/browser/ui/views/passwords/password_items_view.cc +++ b/chrome/browser/ui/views/passwords/password_items_view.cc
@@ -18,7 +18,6 @@ #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" #include "chrome/browser/ui/passwords/passwords_model_delegate.h" #include "chrome/browser/ui/views/chrome_layout_provider.h" -#include "chrome/browser/ui/views/chrome_typography.h" #include "chrome/grit/generated_resources.h" #include "components/autofill/core/common/password_form.h" #include "components/password_manager/core/common/password_manager_ui.h" @@ -136,98 +135,8 @@ layout->StartRow(views::GridLayout::kFixedSize, type_id); } -std::unique_ptr<views::ImageButton> CreateDeleteButton( - views::ButtonListener* listener, - const base::string16& username) { - std::unique_ptr<views::ImageButton> button( - views::CreateVectorImageButtonWithNativeTheme(listener, kTrashCanIcon)); - button->SetFocusForPlatform(); - button->SetTooltipText( - l10n_util::GetStringFUTF16(IDS_MANAGE_PASSWORDS_DELETE, username)); - button->set_tag(kDeleteButtonTag); - return button; -} - -std::unique_ptr<views::LabelButton> CreateUndoButton( - views::ButtonListener* listener, - const base::string16& username) { - auto undo_button = std::make_unique<views::MdTextButton>( - listener, l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_UNDO)); - undo_button->set_tag(kUndoButtonTag); - undo_button->SetFocusForPlatform(); - undo_button->SetTooltipText( - l10n_util::GetStringFUTF16(IDS_MANAGE_PASSWORDS_UNDO_TOOLTIP, username)); - return undo_button; -} - -std::unique_ptr<views::View> CreateManageButton( - views::ButtonListener* listener) { - return std::make_unique<views::MdTextButton>( - listener, - l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_MANAGE_PASSWORDS_BUTTON)); -} - } // namespace -std::unique_ptr<views::Label> CreateUsernameLabel( - const autofill::PasswordForm& form) { - auto label = std::make_unique<views::Label>( - GetDisplayUsername(form), views::style::CONTEXT_DIALOG_BODY_TEXT, - views::style::STYLE_SECONDARY); - label->SetHorizontalAlignment(gfx::ALIGN_LEFT); - return label; -} - -std::unique_ptr<views::ImageView> CreateStoreIndicator( - const autofill::PasswordForm& form) { - if (form.in_store != autofill::PasswordForm::Store::kAccountStore) - return nullptr; - auto image_view = std::make_unique<views::ImageView>(); - image_view->SetImage(gfx::CreateVectorIcon( -#if BUILDFLAG(GOOGLE_CHROME_BRANDING) - kGoogleGLogoIcon, -#else - vector_icons::kSyncIcon, -#endif // !BUILDFLAG(GOOGLE_CHROME_BRANDING) - gfx::kFaviconSize, gfx::kPlaceholderColor)); - image_view->SetAccessibleName(l10n_util::GetStringUTF16( - IDS_MANAGE_PASSWORDS_ACCOUNT_STORE_ICON_DESCRIPTION)); - return image_view; -} - -std::unique_ptr<views::Separator> CreateSeparator() { - auto separator = std::make_unique<views::Separator>(); - separator->SetFocusBehavior( - LocationBarBubbleDelegateView::FocusBehavior::NEVER); - separator->SetPreferredHeight(views::style::GetLineHeight( - views::style::CONTEXT_MENU, views::style::STYLE_SECONDARY)); - separator->SetCanProcessEventsWithinSubtree(false); - return separator; -} - -std::unique_ptr<views::Label> CreatePasswordLabel( - const autofill::PasswordForm& form, - int federation_message_id, - bool are_passwords_revealed) { - base::string16 text = - form.federation_origin.opaque() - ? form.password_value - : l10n_util::GetStringFUTF16(federation_message_id, - GetDisplayFederation(form)); - int text_style = form.federation_origin.opaque() - ? STYLE_SECONDARY_MONOSPACED - : views::style::STYLE_SECONDARY; - auto label = std::make_unique<views::Label>( - text, views::style::CONTEXT_DIALOG_BODY_TEXT, text_style); - label->SetHorizontalAlignment(gfx::ALIGN_LEFT); - if (form.federation_origin.opaque() && !are_passwords_revealed) - label->SetObscured(true); - if (!form.federation_origin.opaque()) - label->SetElideBehavior(gfx::ELIDE_HEAD); - - return label; -} - // An entry for each credential. Relays delete/undo actions associated with // this password row to parent dialog. class PasswordItemsView::PasswordRow : public views::ButtonListener { @@ -261,59 +170,75 @@ void PasswordItemsView::PasswordRow::AddToLayout( views::GridLayout* layout, PasswordItemsViewColumnSetType type_id) { - if (deleted_) { + if (deleted_) AddUndoRow(layout); - } else { + else AddPasswordRow(layout, type_id); - } } void PasswordItemsView::PasswordRow::AddUndoRow(views::GridLayout* layout) { - std::unique_ptr<views::Label> text = std::make_unique<views::Label>( - l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_DELETED), - views::style::CONTEXT_DIALOG_BODY_TEXT); - text->SetHorizontalAlignment(gfx::ALIGN_LEFT); - std::unique_ptr<views::LabelButton> undo_button = - CreateUndoButton(this, GetDisplayUsername(*password_form_)); - StartRow(layout, UNDO_COLUMN_SET); - layout->AddView(std::move(text)); - layout->AddView(std::move(undo_button)); + layout + ->AddView(std::make_unique<views::Label>( + l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_DELETED), + views::style::CONTEXT_DIALOG_BODY_TEXT)) + ->SetHorizontalAlignment(gfx::ALIGN_LEFT); + auto* undo_button = layout->AddView(std::make_unique<views::MdTextButton>( + this, l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_UNDO))); + undo_button->set_tag(kUndoButtonTag); + undo_button->SetFocusForPlatform(); + undo_button->SetTooltipText(l10n_util::GetStringFUTF16( + IDS_MANAGE_PASSWORDS_UNDO_TOOLTIP, GetDisplayUsername(*password_form_))); } void PasswordItemsView::PasswordRow::AddPasswordRow( views::GridLayout* layout, PasswordItemsViewColumnSetType type_id) { - std::unique_ptr<views::Label> username_label = - CreateUsernameLabel(*password_form_); - std::unique_ptr<views::Label> password_label = - CreatePasswordLabel(*password_form_, IDS_PASSWORDS_VIA_FEDERATION, false); - std::unique_ptr<views::ImageButton> delete_button = - CreateDeleteButton(this, GetDisplayUsername(*password_form_)); StartRow(layout, type_id); - // Use a globe fallback until the actual favicon is loaded. if (parent_->favicon_.IsEmpty()) { + // Use a globe fallback until the actual favicon is loaded. layout->AddView(std::make_unique<views::ColorTrackingIconView>( kGlobeIcon, gfx::kFaviconSize)); } else { - auto favicon_view = std::make_unique<views::ImageView>(); - favicon_view->SetImage(parent_->favicon_.AsImageSkia()); - layout->AddView(std::move(favicon_view)); + layout->AddView(std::make_unique<views::ImageView>()) + ->SetImage(parent_->favicon_.AsImageSkia()); } - layout->AddView(std::move(username_label)); - layout->AddView(std::move(password_label)); + layout->AddView(CreateUsernameLabel(*password_form_)); + layout->AddView(CreatePasswordLabel(*password_form_)); + if (type_id == MULTI_STORE_PASSWORD_COLUMN_SET) { - if (std::unique_ptr<views::ImageView> store_icon = - CreateStoreIndicator(*password_form_)) { - layout->AddView(std::move(store_icon)); + if (password_form_->in_store == + autofill::PasswordForm::Store::kAccountStore) { + auto* image_view = layout->AddView(std::make_unique<views::ImageView>()); + image_view->SetImage(gfx::CreateVectorIcon( +#if BUILDFLAG(GOOGLE_CHROME_BRANDING) + kGoogleGLogoIcon, +#else + vector_icons::kSyncIcon, +#endif // !BUILDFLAG(GOOGLE_CHROME_BRANDING) + gfx::kFaviconSize, gfx::kPlaceholderColor)); + image_view->SetAccessibleName(l10n_util::GetStringUTF16( + IDS_MANAGE_PASSWORDS_ACCOUNT_STORE_ICON_DESCRIPTION)); } else { layout->SkipColumns(1); } - layout->AddView(CreateSeparator()); + + auto* separator = layout->AddView(std::make_unique<views::Separator>()); + separator->SetFocusBehavior( + LocationBarBubbleDelegateView::FocusBehavior::NEVER); + separator->SetPreferredHeight(views::style::GetLineHeight( + views::style::CONTEXT_MENU, views::style::STYLE_SECONDARY)); + separator->SetCanProcessEventsWithinSubtree(false); } - layout->AddView(std::move(delete_button)); + + auto* delete_button = layout->AddView( + views::CreateVectorImageButtonWithNativeTheme(this, kTrashCanIcon)); + delete_button->set_tag(kDeleteButtonTag); + delete_button->SetFocusForPlatform(); + delete_button->SetTooltipText(l10n_util::GetStringFUTF16( + IDS_MANAGE_PASSWORDS_DELETE, GetDisplayUsername(*password_form_))); } void PasswordItemsView::PasswordRow::ButtonPressed(views::Button* sender, @@ -333,7 +258,9 @@ /*easily_dismissable=*/true), controller_(PasswordsModelDelegateFromWebContents(web_contents)) { SetButtons(ui::DIALOG_BUTTON_OK); - SetExtraView(CreateManageButton(this)); + SetExtraView(std::make_unique<views::MdTextButton>( + this, + l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_MANAGE_PASSWORDS_BUTTON))); if (controller_.local_credentials().empty()) { // A LayoutManager is required for GetHeightForWidth() even without
diff --git a/chrome/browser/ui/views/passwords/password_items_view.h b/chrome/browser/ui/views/passwords/password_items_view.h index 6294022..5ef440c 100644 --- a/chrome/browser/ui/views/passwords/password_items_view.h +++ b/chrome/browser/ui/views/passwords/password_items_view.h
@@ -15,18 +15,6 @@ #include "ui/views/controls/button/button.h" #include "ui/views/view.h" -namespace views { -class Label; -} // namespace views - -// Standalone functions for creating username and password views. -std::unique_ptr<views::Label> CreateUsernameLabel( - const autofill::PasswordForm& form); -std::unique_ptr<views::Label> CreatePasswordLabel( - const autofill::PasswordForm& form, - int federation_message_id, - bool is_password_visible); - // A dialog for managing stored password and federated login information for a // specific site. A user can remove managed credentials for the site via this // dialog.
diff --git a/chrome/browser/ui/views/passwords/password_save_unsynced_credentials_locally_view.cc b/chrome/browser/ui/views/passwords/password_save_unsynced_credentials_locally_view.cc index 65a05e4..78d4849 100644 --- a/chrome/browser/ui/views/passwords/password_save_unsynced_credentials_locally_view.cc +++ b/chrome/browser/ui/views/passwords/password_save_unsynced_credentials_locally_view.cc
@@ -59,10 +59,9 @@ const ui::Event&) { auto* checkbox = static_cast<views::Checkbox*>(sender); num_selected_checkboxes_ += checkbox->GetChecked() ? 1 : -1; - if (num_selected_checkboxes_ == 0) - GetOkButton()->SetState(views::Button::ButtonState::STATE_DISABLED); - else - GetOkButton()->SetState(views::Button::ButtonState::STATE_NORMAL); + GetOkButton()->SetState(num_selected_checkboxes_ + ? views::Button::ButtonState::STATE_NORMAL + : views::Button::ButtonState::STATE_DISABLED); } const PasswordBubbleControllerBase* @@ -88,7 +87,8 @@ AddChildView(std::move(description)); DCHECK(!controller_.unsynced_credentials().empty()); - for (const autofill::PasswordForm& row : controller_.unsynced_credentials()) { + for (const autofill::PasswordForm& form : + controller_.unsynced_credentials()) { auto* row_view = AddChildView(std::make_unique<views::View>()); auto* checkbox = row_view->AddChildView( std::make_unique<views::Checkbox>(base::string16(), this)); @@ -99,10 +99,9 @@ // Usually all passwords should be saved, so they're selected by default. checkbox->SetChecked(true); num_selected_checkboxes_++; - auto* username_label = row_view->AddChildView(CreateUsernameLabel(row)); + auto* username_label = row_view->AddChildView(CreateUsernameLabel(form)); checkbox->SetAssociatedLabel(username_label); - auto* password_label = row_view->AddChildView( - CreatePasswordLabel(row, IDS_PASSWORDS_VIA_FEDERATION, false)); + auto* password_label = row_view->AddChildView(CreatePasswordLabel(form)); auto* row_layout = row_view->SetLayoutManager(std::make_unique<views::BoxLayout>( views::BoxLayout::Orientation::kHorizontal));
diff --git a/chrome/browser/ui/views/passwords/password_save_update_view.cc b/chrome/browser/ui/views/passwords/password_save_update_view.cc index 248b2cc..e62db143 100644 --- a/chrome/browser/ui/views/passwords/password_save_update_view.cc +++ b/chrome/browser/ui/views/passwords/password_save_update_view.cc
@@ -274,16 +274,14 @@ // The credential to be saved doesn't contain password but just the identity // provider (e.g. "Sign in with Google"). Thus, the layout is different. SetLayoutManager(std::make_unique<views::FillLayout>()); - std::pair<base::string16, base::string16> titles = - GetCredentialLabelsForAccountChooser(password_form); - CredentialsItemView* credential_view = new CredentialsItemView( - this, titles.first, titles.second, &password_form, - content::BrowserContext::GetDefaultStoragePartition( - controller_.GetProfile()) - ->GetURLLoaderFactoryForBrowserProcess() - .get()); - credential_view->SetEnabled(false); - AddChildView(credential_view); + const auto titles = GetCredentialLabelsForAccountChooser(password_form); + AddChildView(std::make_unique<CredentialsItemView>( + nullptr, titles.first, titles.second, &password_form, + content::BrowserContext::GetDefaultStoragePartition( + controller_.GetProfile()) + ->GetURLLoaderFactoryForBrowserProcess() + .get())) + ->SetEnabled(false); } else { std::unique_ptr<views::EditableCombobox> username_dropdown = CreateUsernameEditableCombobox(password_form);
diff --git a/chrome/browser/ui/views/passwords/password_save_update_with_account_store_view.cc b/chrome/browser/ui/views/passwords/password_save_update_with_account_store_view.cc index b0b8a88..3318c019 100644 --- a/chrome/browser/ui/views/passwords/password_save_update_with_account_store_view.cc +++ b/chrome/browser/ui/views/passwords/password_save_update_with_account_store_view.cc
@@ -405,7 +405,7 @@ std::pair<base::string16, base::string16> titles = GetCredentialLabelsForAccountChooser(password_form); CredentialsItemView* credential_view = new CredentialsItemView( - this, titles.first, titles.second, &password_form, + nullptr, titles.first, titles.second, &password_form, content::BrowserContext::GetDefaultStoragePartition( controller_.GetProfile()) ->GetURLLoaderFactoryForBrowserProcess()
diff --git a/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc index 6a2a7f1..3bc79cc5 100644 --- a/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc
@@ -4,267 +4,24 @@ #include "chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h" -#include <cmath> -#include <string> -#include <utility> - -#include "base/bind.h" -#include "base/command_line.h" -#include "base/files/file_path.h" -#include "base/metrics/histogram_macros.h" -#include "base/strings/string_number_conversions.h" -#include "base/strings/stringprintf.h" #include "base/system/sys_info.h" -#include "base/task/post_task.h" -#include "base/task/thread_pool.h" -#include "base/threading/thread_task_runner_handle.h" -#include "base/time/default_tick_clock.h" -#include "base/time/tick_clock.h" -#include "base/time/time.h" -#include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/arc/arc_migration_constants.h" #include "chrome/browser/chromeos/login/screens/encryption_migration_screen.h" -#include "chrome/browser/chromeos/login/ui/login_feedback.h" -#include "chrome/browser/lifetime/application_lifetime.h" -#include "chrome/browser/profiles/profile.h" #include "chrome/grit/generated_resources.h" -#include "chromeos/constants/chromeos_switches.h" -#include "chromeos/cryptohome/async_method_caller.h" -#include "chromeos/cryptohome/cryptohome_util.h" -#include "chromeos/cryptohome/homedir_methods.h" -#include "chromeos/dbus/cryptohome/cryptohome_client.h" -#include "chromeos/dbus/dbus_thread_manager.h" -#include "chromeos/dbus/power/power_manager_client.h" -#include "chromeos/dbus/power/power_policy_controller.h" -#include "chromeos/dbus/power_manager/power_supply_properties.pb.h" #include "components/login/localized_values_builder.h" -#include "components/user_manager/user_manager.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/device_service.h" -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "services/device/public/mojom/wake_lock_provider.mojom.h" -#include "third_party/cros_system_api/dbus/service_constants.h" #include "ui/base/text/bytes_formatting.h" #include "ui/chromeos/devicetype_utils.h" -namespace { - -// Path to the mount point to check the available space. -constexpr char kCheckStoragePath[] = "/home"; - -// JS API callbacks names. -constexpr char kJsApiStartMigration[] = "startMigration"; -constexpr char kJsApiSkipMigration[] = "skipMigration"; -constexpr char kJsApiRequestRestartOnLowStorage[] = - "requestRestartOnLowStorage"; -constexpr char kJsApiRequestRestartOnFailure[] = "requestRestartOnFailure"; -constexpr char kJsApiOpenFeedbackDialog[] = "openFeedbackDialog"; - -// If minimal migration takes this threshold or longer (in seconds), we -// will ask the user to re-enter their password. -constexpr int64_t kMinimalMigrationReenterPasswordThreshold = 45; - -// UMA names. -constexpr char kUmaNameFirstScreen[] = "Cryptohome.MigrationUI.FirstScreen"; -constexpr char kUmaNameUserChoice[] = "Cryptohome.MigrationUI.UserChoice"; -constexpr char kUmaNameMigrationResult[] = - "Cryptohome.MigrationUI.MigrationResult"; -constexpr char kUmaNameRemoveCryptohomeResult[] = - "Cryptohome.MigrationUI.RemoveCryptohomeResult"; -constexpr char kUmaNameConsumedBatteryPercent[] = - "Cryptohome.MigrationUI.ConsumedBatteryPercent"; -constexpr char kUmaNameVisibleScreen[] = "Cryptohome.MigrationUI.VisibleScreen"; - -// This enum must match the numbering for MigrationUIFirstScreen in -// histograms/enums.xml. Do not reorder or remove items, only add new items -// before FIRST_SCREEN_COUNT. -enum class FirstScreen { - FIRST_SCREEN_READY = 0, - FIRST_SCREEN_RESUME = 1, - FIRST_SCREEN_LOW_STORAGE = 2, - FIRST_SCREEN_ARC_KIOSK = 3, - FIRST_SCREEN_START_AUTOMATICALLY = 4, - FIRST_SCREEN_RESUME_MINIMAL = 5, - FIRST_SCREEN_START_AUTOMATICALLY_MINIMAL = 6, - FIRST_SCREEN_COUNT -}; - -// This enum must match the numbering for MigrationUIUserChoice in -// histograms/enums.xml. Do not reorder or remove items, only add new items -// before USER_CHOICE_COUNT. -enum class UserChoice { - USER_CHOICE_UPDATE = 0, - USER_CHOICE_SKIP = 1, - USER_CHOICE_RESTART_ON_FAILURE = 2, - USER_CHOICE_RESTART_ON_LOW_STORAGE = 3, - USER_CHOICE_REPORT_AN_ISSUE = 4, - USER_CHOICE_COUNT -}; - -// This enum must match the numbering for MigrationUIMigrationResult in -// histograms/enums.xml. Do not reorder or remove items, only add new items -// before COUNT. -enum class MigrationResult { - SUCCESS_IN_NEW_MIGRATION = 0, - SUCCESS_IN_RESUMED_MIGRATION = 1, - GENERAL_FAILURE_IN_NEW_MIGRATION = 2, - GENERAL_FAILURE_IN_RESUMED_MIGRATION = 3, - REQUEST_FAILURE_IN_NEW_MIGRATION = 4, - REQUEST_FAILURE_IN_RESUMED_MIGRATION = 5, - MOUNT_FAILURE_IN_NEW_MIGRATION = 6, - MOUNT_FAILURE_IN_RESUMED_MIGRATION = 7, - SUCCESS_IN_ARC_KIOSK_MIGRATION = 8, - GENERAL_FAILURE_IN_ARC_KIOSK_MIGRATION = 9, - REQUEST_FAILURE_IN_ARC_KIOSK_MIGRATION = 10, - MOUNT_FAILURE_IN_ARC_KIOSK_MIGRATION = 11, - COUNT -}; - -// This enum must match the numbering for MigrationUIRemoveCryptohomeResult in -// histograms/enums.xml. Do not reorder or remove items, only add new items -// before COUNT. -enum class RemoveCryptohomeResult { - SUCCESS_IN_NEW_MIGRATION = 0, - SUCCESS_IN_RESUMED_MIGRATION = 1, - FAILURE_IN_NEW_MIGRATION = 2, - FAILURE_IN_RESUMED_MIGRATION = 3, - SUCCESS_IN_ARC_KIOSK_MIGRATION = 4, - FAILURE_IN_ARC_KIOSK_MIGRATION = 5, - COUNT -}; - -bool IsTestingUI() { - return base::CommandLine::ForCurrentProcess()->HasSwitch( - chromeos::switches::kTestEncryptionMigrationUI); -} - -// Wrapper functions for histogram macros to avoid duplication of expanded code. -void RecordFirstScreen(FirstScreen first_screen) { - UMA_HISTOGRAM_ENUMERATION(kUmaNameFirstScreen, first_screen, - FirstScreen::FIRST_SCREEN_COUNT); -} - -void RecordUserChoice(UserChoice user_choice) { - UMA_HISTOGRAM_ENUMERATION(kUmaNameUserChoice, user_choice, - UserChoice::USER_CHOICE_COUNT); -} - -void RecordMigrationResult(MigrationResult migration_result) { - UMA_HISTOGRAM_ENUMERATION(kUmaNameMigrationResult, migration_result, - MigrationResult::COUNT); -} - -void RecordMigrationResultSuccess(bool resume, bool arc_kiosk) { - if (arc_kiosk) - RecordMigrationResult(MigrationResult::SUCCESS_IN_ARC_KIOSK_MIGRATION); - else if (resume) - RecordMigrationResult(MigrationResult::SUCCESS_IN_RESUMED_MIGRATION); - else - RecordMigrationResult(MigrationResult::SUCCESS_IN_NEW_MIGRATION); -} - -void RecordMigrationResultGeneralFailure(bool resume, bool arc_kiosk) { - if (arc_kiosk) { - RecordMigrationResult( - MigrationResult::GENERAL_FAILURE_IN_ARC_KIOSK_MIGRATION); - } else if (resume) { - RecordMigrationResult( - MigrationResult::GENERAL_FAILURE_IN_RESUMED_MIGRATION); - } else { - RecordMigrationResult(MigrationResult::GENERAL_FAILURE_IN_NEW_MIGRATION); - } -} - -void RecordMigrationResultRequestFailure(bool resume, bool arc_kiosk) { - if (arc_kiosk) { - RecordMigrationResult( - MigrationResult::REQUEST_FAILURE_IN_ARC_KIOSK_MIGRATION); - } else if (resume) { - RecordMigrationResult( - MigrationResult::REQUEST_FAILURE_IN_RESUMED_MIGRATION); - } else { - RecordMigrationResult(MigrationResult::REQUEST_FAILURE_IN_NEW_MIGRATION); - } -} - -void RecordMigrationResultMountFailure(bool resume, bool arc_kiosk) { - if (arc_kiosk) { - RecordMigrationResult( - MigrationResult::MOUNT_FAILURE_IN_ARC_KIOSK_MIGRATION); - } else if (resume) { - RecordMigrationResult(MigrationResult::MOUNT_FAILURE_IN_RESUMED_MIGRATION); - } else { - RecordMigrationResult(MigrationResult::MOUNT_FAILURE_IN_NEW_MIGRATION); - } -} - -void RecordRemoveCryptohomeResult(RemoveCryptohomeResult result) { - UMA_HISTOGRAM_ENUMERATION(kUmaNameRemoveCryptohomeResult, result, - RemoveCryptohomeResult::COUNT); -} - -void RecordRemoveCryptohomeResultSuccess(bool resume, bool arc_kiosk) { - if (arc_kiosk) { - RecordRemoveCryptohomeResult( - RemoveCryptohomeResult::SUCCESS_IN_ARC_KIOSK_MIGRATION); - } else if (resume) { - RecordRemoveCryptohomeResult( - RemoveCryptohomeResult::SUCCESS_IN_RESUMED_MIGRATION); - } else { - RecordRemoveCryptohomeResult( - RemoveCryptohomeResult::SUCCESS_IN_NEW_MIGRATION); - } -} - -void RecordRemoveCryptohomeResultFailure(bool resume, bool arc_kiosk) { - if (arc_kiosk) { - RecordRemoveCryptohomeResult( - RemoveCryptohomeResult::FAILURE_IN_ARC_KIOSK_MIGRATION); - } else if (resume) { - RecordRemoveCryptohomeResult( - RemoveCryptohomeResult::FAILURE_IN_RESUMED_MIGRATION); - } else { - RecordRemoveCryptohomeResult( - RemoveCryptohomeResult::FAILURE_IN_NEW_MIGRATION); - } -} - -// Chooses the value for the MigrationUIFirstScreen UMA stat. Not used for ARC -// kiosk. -FirstScreen GetFirstScreenForMode(chromeos::EncryptionMigrationMode mode) { - switch (mode) { - case chromeos::EncryptionMigrationMode::ASK_USER: - return FirstScreen::FIRST_SCREEN_READY; - case chromeos::EncryptionMigrationMode::START_MIGRATION: - return FirstScreen::FIRST_SCREEN_START_AUTOMATICALLY; - case chromeos::EncryptionMigrationMode::START_MINIMAL_MIGRATION: - return FirstScreen::FIRST_SCREEN_START_AUTOMATICALLY_MINIMAL; - case chromeos::EncryptionMigrationMode::RESUME_MIGRATION: - return FirstScreen::FIRST_SCREEN_RESUME; - case chromeos::EncryptionMigrationMode::RESUME_MINIMAL_MIGRATION: - return FirstScreen::FIRST_SCREEN_RESUME_MINIMAL; - default: - NOTREACHED(); - } -} - -} // namespace - namespace chromeos { constexpr StaticOobeScreenId EncryptionMigrationScreenView::kScreenId; EncryptionMigrationScreenHandler::EncryptionMigrationScreenHandler( JSCallsContainer* js_calls_container) - : BaseScreenHandler(kScreenId, js_calls_container), - tick_clock_(base::DefaultTickClock::GetInstance()) { - free_disk_space_fetcher_ = base::Bind(&base::SysInfo::AmountOfFreeDiskSpace, - base::FilePath(kCheckStoragePath)); + : BaseScreenHandler(kScreenId, js_calls_container) { + set_user_acted_method_path("login.EncryptionMigrationScreen.userActed"); } EncryptionMigrationScreenHandler::~EncryptionMigrationScreenHandler() { - CryptohomeClient::Get()->RemoveObserver(this); - PowerManagerClient::Get()->RemoveObserver(this); if (delegate_) delegate_->OnViewDestroyed(this); } @@ -284,47 +41,11 @@ void EncryptionMigrationScreenHandler::SetDelegate( EncryptionMigrationScreen* delegate) { delegate_ = delegate; + BaseScreenHandler::SetBaseScreen(delegate); if (page_is_ready()) Initialize(); } -void EncryptionMigrationScreenHandler::SetUserContext( - const UserContext& user_context) { - user_context_ = user_context; -} - -void EncryptionMigrationScreenHandler::SetMode(EncryptionMigrationMode mode) { - mode_ = mode; - CallJS("login.EncryptionMigrationScreen.setIsResuming", IsStartImmediately()); -} - -void EncryptionMigrationScreenHandler::SetContinueLoginCallback( - ContinueLoginCallback callback) { - continue_login_callback_ = std::move(callback); -} - -void EncryptionMigrationScreenHandler::SetRestartLoginCallback( - RestartLoginCallback callback) { - restart_login_callback_ = std::move(callback); -} - -void EncryptionMigrationScreenHandler::SetupInitialView() { - // Pass constant value(s) to the UI. - CallJS("login.EncryptionMigrationScreen.setNecessaryBatteryPercent", - arc::kMigrationMinimumBatteryPercent); - - // If old encryption is detected in ARC kiosk mode, skip all checks (user - // confirmation, battery level, and remaining space) and start migration - // immediately. - if (IsArcKiosk()) { - RecordFirstScreen(FirstScreen::FIRST_SCREEN_ARC_KIOSK); - StartMigration(); - return; - } - PowerManagerClient::Get()->AddObserver(this); - CheckAvailableStorage(); -} - void EncryptionMigrationScreenHandler::DeclareLocalizedValues( ::login::LocalizedValuesBuilder* builder) { builder->Add("migrationReadyTitle", IDS_ENCRYPTION_MIGRATION_READY_TITLE); @@ -383,423 +104,37 @@ } } -void EncryptionMigrationScreenHandler::SetFreeDiskSpaceFetcherForTesting( - FreeDiskSpaceFetcher free_disk_space_fetcher) { - free_disk_space_fetcher_ = std::move(free_disk_space_fetcher); +void EncryptionMigrationScreenHandler::SetBatteryState(double batteryPercent, + bool isEnoughBattery, + bool isCharging) { + CallJS("login.EncryptionMigrationScreen.setBatteryState", batteryPercent, + isEnoughBattery, isCharging); } -void EncryptionMigrationScreenHandler::SetTickClockForTesting( - const base::TickClock* tick_clock) { - tick_clock_ = tick_clock; +void EncryptionMigrationScreenHandler::SetIsResuming(bool isResuming) { + CallJS("login.EncryptionMigrationScreen.setIsResuming", isResuming); } -void EncryptionMigrationScreenHandler::RegisterMessages() { - AddCallback(kJsApiStartMigration, - &EncryptionMigrationScreenHandler::HandleStartMigration); - AddCallback(kJsApiSkipMigration, - &EncryptionMigrationScreenHandler::HandleSkipMigration); - AddCallback( - kJsApiRequestRestartOnLowStorage, - &EncryptionMigrationScreenHandler::HandleRequestRestartOnLowStorage); - AddCallback(kJsApiRequestRestartOnFailure, - &EncryptionMigrationScreenHandler::HandleRequestRestartOnFailure); - AddCallback(kJsApiOpenFeedbackDialog, - &EncryptionMigrationScreenHandler::HandleOpenFeedbackDialog); -} - -void EncryptionMigrationScreenHandler::PowerChanged( - const power_manager::PowerSupplyProperties& proto) { - if (proto.has_battery_percent()) { - if (!current_battery_percent_) { - // If initial battery level is below the minimum, migration should start - // automatically once the device is charged enough. - if (proto.battery_percent() < arc::kMigrationMinimumBatteryPercent) { - should_migrate_on_enough_battery_ = true; - // If migration was forced by policy, stop forcing it (we don't want the - // user to have to wait until the battery is charged). - MaybeStopForcingMigration(); - } - } - current_battery_percent_ = proto.battery_percent(); - } else { - // If battery level is not provided, we regard it as 100% to start migration - // immediately. - current_battery_percent_ = 100.0; - } - - CallJS("login.EncryptionMigrationScreen.setBatteryState", - *current_battery_percent_, - *current_battery_percent_ >= arc::kMigrationMinimumBatteryPercent, - proto.battery_state() == - power_manager::PowerSupplyProperties_BatteryState_CHARGING); - - // If the migration was already requested and the bettery level is enough now, - // The migration should start immediately. - if (*current_battery_percent_ >= arc::kMigrationMinimumBatteryPercent && - should_migrate_on_enough_battery_) { - should_migrate_on_enough_battery_ = false; - StartMigration(); - } -} - -void EncryptionMigrationScreenHandler::HandleStartMigration() { - RecordUserChoice(UserChoice::USER_CHOICE_UPDATE); - WaitBatteryAndMigrate(); -} - -void EncryptionMigrationScreenHandler::HandleSkipMigration() { - RecordUserChoice(UserChoice::USER_CHOICE_SKIP); - // If the user skips migration, we mount the cryptohome without performing the - // migration by reusing UserContext and LoginPerformer which were used in the - // previous attempt and dropping |is_forcing_dircrypto| flag in UserContext. - // In this case, the user can not launch ARC apps in the session, and will be - // asked to do the migration again in the next log-in attempt. - if (!continue_login_callback_.is_null()) { - user_context_.SetIsForcingDircrypto(false); - std::move(continue_login_callback_).Run(user_context_); - } -} - -void EncryptionMigrationScreenHandler::HandleRequestRestartOnLowStorage() { - RecordUserChoice(UserChoice::USER_CHOICE_RESTART_ON_LOW_STORAGE); - PowerManagerClient::Get()->RequestRestart( - power_manager::REQUEST_RESTART_OTHER, - "login encryption migration low storage"); -} - -void EncryptionMigrationScreenHandler::HandleRequestRestartOnFailure() { - RecordUserChoice(UserChoice::USER_CHOICE_RESTART_ON_FAILURE); - PowerManagerClient::Get()->RequestRestart( - power_manager::REQUEST_RESTART_OTHER, - "login encryption migration failure"); -} - -void EncryptionMigrationScreenHandler::HandleOpenFeedbackDialog() { - RecordUserChoice(UserChoice::USER_CHOICE_REPORT_AN_ISSUE); - const std::string description = base::StringPrintf( - "Auto generated feedback for http://crbug.com/719266.\n" - "(uniquifier:%s)", - base::NumberToString(base::Time::Now().ToInternalValue()).c_str()); - login_feedback_ = - std::make_unique<LoginFeedback>(Profile::FromWebUI(web_ui())); - login_feedback_->Request(description, base::Closure()); -} - -void EncryptionMigrationScreenHandler::UpdateUIState(UIState state) { - if (state == current_ui_state_) - return; - - current_ui_state_ = state; +void EncryptionMigrationScreenHandler::SetUIState(UIState state) { CallJS("login.EncryptionMigrationScreen.setUIState", static_cast<int>(state)); - - // When this handler is about to show the READY screen, we should get the - // latest battery status and show it on the screen. - if (state == UIState::READY) - PowerManagerClient::Get()->RequestStatusUpdate(); - - // We should request wake lock and not shut down on lid close during - // migration. - if (state == UIState::MIGRATING || state == UIState::MIGRATING_MINIMAL) { - GetWakeLock()->RequestWakeLock(); - PowerPolicyController::Get()->SetEncryptionMigrationActive(true); - } else { - GetWakeLock()->CancelWakeLock(); - PowerPolicyController::Get()->SetEncryptionMigrationActive(false); - } - - // Record which screen is visible to the user. - // We record it after delay to make sure that the user was actually able - // to see the screen (i.e. the screen is not just a flash). - base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( - FROM_HERE, - base::BindOnce( - &EncryptionMigrationScreenHandler::OnDelayedRecordVisibleScreen, - weak_ptr_factory_.GetWeakPtr(), state), - base::TimeDelta::FromSeconds(1)); } -void EncryptionMigrationScreenHandler::CheckAvailableStorage() { - base::ThreadPool::PostTaskAndReplyWithResult( - FROM_HERE, {base::MayBlock(), base::TaskPriority::USER_VISIBLE}, - base::BindOnce(free_disk_space_fetcher_), - base::BindOnce(&EncryptionMigrationScreenHandler::OnGetAvailableStorage, - weak_ptr_factory_.GetWeakPtr())); +void EncryptionMigrationScreenHandler::SetSpaceInfoInString( + int64_t availableSpaceSize, + int64_t necessarySpaceSize) { + CallJS("login.EncryptionMigrationScreen.setSpaceInfoInString", + ui::FormatBytes(availableSpaceSize), + ui::FormatBytes(necessarySpaceSize)); } -void EncryptionMigrationScreenHandler::OnGetAvailableStorage(int64_t size) { - if (size >= arc::kMigrationMinimumAvailableStorage || IsTestingUI()) { - RecordFirstScreen(GetFirstScreenForMode(mode_)); - if (IsStartImmediately()) { - if (IsMinimalMigration()) - StartMigration(); - else - WaitBatteryAndMigrate(); - } else { - UpdateUIState(UIState::READY); - } - } else { - RecordFirstScreen(FirstScreen::FIRST_SCREEN_LOW_STORAGE); - CallJS("login.EncryptionMigrationScreen.setAvailableSpaceInString", - ui::FormatBytes(size)); - CallJS("login.EncryptionMigrationScreen.setNecessarySpaceInString", - ui::FormatBytes(arc::kMigrationMinimumAvailableStorage)); - UpdateUIState(UIState::NOT_ENOUGH_STORAGE); - } +void EncryptionMigrationScreenHandler::SetNecessaryBatteryPercent( + double batteryPercent) { + CallJS("login.EncryptionMigrationScreen.setNecessaryBatteryPercent", + batteryPercent); } -void EncryptionMigrationScreenHandler::WaitBatteryAndMigrate() { - if (current_battery_percent_) { - if (*current_battery_percent_ >= arc::kMigrationMinimumBatteryPercent) { - StartMigration(); - return; - } else { - // If migration was forced by policy, stop forcing it (we don't want the - // user to have to wait until the battery is charged). - MaybeStopForcingMigration(); - } - } - UpdateUIState(UIState::READY); - - should_migrate_on_enough_battery_ = true; - PowerManagerClient::Get()->RequestStatusUpdate(); -} - -void EncryptionMigrationScreenHandler::StartMigration() { - UpdateUIState(GetMigratingUIState()); - if (current_battery_percent_) - initial_battery_percent_ = *current_battery_percent_; - - // Mount the existing eCryptfs vault to a temporary location for migration. - cryptohome::MountRequest mount; - cryptohome::AuthorizationRequest auth_request; - mount.set_to_migrate_from_ecryptfs(true); - if (IsArcKiosk()) { - mount.set_public_mount(true); - } else { - auth_request = CreateAuthorizationRequest(); - } - CryptohomeClient::Get()->MountEx( - cryptohome::CreateAccountIdentifierFromAccountId( - user_context_.GetAccountId()), - auth_request, mount, - base::BindOnce(&EncryptionMigrationScreenHandler::OnMountExistingVault, - weak_ptr_factory_.GetWeakPtr())); -} - -void EncryptionMigrationScreenHandler::OnMountExistingVault( - base::Optional<cryptohome::BaseReply> reply) { - cryptohome::MountError return_code = - cryptohome::MountExReplyToMountError(reply); - if (return_code != cryptohome::MOUNT_ERROR_NONE) { - RecordMigrationResultMountFailure(IsResumingIncompleteMigration(), - IsArcKiosk()); - UpdateUIState(UIState::MIGRATION_FAILED); - LOG(ERROR) << "Mount existing vault failed. Error: " << return_code; - return; - } - - // For minimal migration, start a timer which will measure how long migration - // took, so we can require a re sign-in if it took too long. - if (IsMinimalMigration()) - minimal_migration_start_ = tick_clock_->NowTicks(); - - cryptohome::MigrateToDircryptoRequest request; - request.set_minimal_migration(IsMinimalMigration()); - CryptohomeClient::Get()->AddObserver(this); - CryptohomeClient::Get()->MigrateToDircrypto( - cryptohome::CreateAccountIdentifierFromAccountId( - user_context_.GetAccountId()), - request, - base::BindOnce(&EncryptionMigrationScreenHandler::OnMigrationRequested, - weak_ptr_factory_.GetWeakPtr())); -} - -device::mojom::WakeLock* EncryptionMigrationScreenHandler::GetWakeLock() { - // |wake_lock_| is lazy bound and reused, even after a connection error. - if (wake_lock_) - return wake_lock_.get(); - - mojo::PendingReceiver<device::mojom::WakeLock> receiver = - wake_lock_.BindNewPipeAndPassReceiver(); - - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - - mojo::Remote<device::mojom::WakeLockProvider> wake_lock_provider; - content::GetDeviceService().BindWakeLockProvider( - wake_lock_provider.BindNewPipeAndPassReceiver()); - wake_lock_provider->GetWakeLockWithoutContext( - device::mojom::WakeLockType::kPreventAppSuspension, - device::mojom::WakeLockReason::kOther, - "Encryption migration is in progress...", std::move(receiver)); - return wake_lock_.get(); -} - -void EncryptionMigrationScreenHandler::RemoveCryptohome() { - // Set invalid token status so that user is forced to go through Gaia on the - // next sign-in. - user_manager::UserManager::Get()->SaveUserOAuthStatus( - user_context_.GetAccountId(), - user_manager::User::OAUTH2_TOKEN_STATUS_INVALID); - - const cryptohome::Identification cryptohome_id(user_context_.GetAccountId()); - - cryptohome::AccountIdentifier account_id_proto; - account_id_proto.set_account_id(cryptohome_id.id()); - - CryptohomeClient::Get()->RemoveEx( - account_id_proto, - base::BindOnce(&EncryptionMigrationScreenHandler::OnRemoveCryptohome, - weak_ptr_factory_.GetWeakPtr())); -} - -void EncryptionMigrationScreenHandler::OnRemoveCryptohome( - base::Optional<cryptohome::BaseReply> reply) { - cryptohome::MountError error = BaseReplyToMountError(reply); - if (error == cryptohome::MOUNT_ERROR_NONE) { - RecordRemoveCryptohomeResultSuccess(IsResumingIncompleteMigration(), - IsArcKiosk()); - } else { - LOG(ERROR) << "Removing cryptohome failed. return code: " - << reply.value().error(); - RecordRemoveCryptohomeResultFailure(IsResumingIncompleteMigration(), - IsArcKiosk()); - } - - UpdateUIState(UIState::MIGRATION_FAILED); -} - -cryptohome::AuthorizationRequest -EncryptionMigrationScreenHandler::CreateAuthorizationRequest() { - // |key| is created in the same manner as CryptohomeAuthenticator. - const Key* key = user_context_.GetKey(); - // If the |key| is a plain text password, crash rather than attempting to - // mount the cryptohome with a plain text password. - CHECK_NE(Key::KEY_TYPE_PASSWORD_PLAIN, key->GetKeyType()); - cryptohome::AuthorizationRequest auth; - cryptohome::Key* auth_key = auth.mutable_key(); - // Don't set the authorization's key label, implicitly setting it to an - // empty string, which is a wildcard allowing any key to match. This is - // necessary because cryptohomes created by Chrome OS M38 and older will have - // a legacy key with no label while those created by Chrome OS M39 and newer - // will have a key with the label kCryptohomeGAIAKeyLabel. - auth_key->set_secret(key->GetSecret()); - return auth; -} - -bool EncryptionMigrationScreenHandler::IsArcKiosk() const { - return user_context_.GetUserType() == user_manager::USER_TYPE_ARC_KIOSK_APP; -} - -void EncryptionMigrationScreenHandler::DircryptoMigrationProgress( - cryptohome::DircryptoMigrationStatus status, - uint64_t current, - uint64_t total) { - switch (status) { - case cryptohome::DIRCRYPTO_MIGRATION_INITIALIZING: - UpdateUIState(GetMigratingUIState()); - break; - case cryptohome::DIRCRYPTO_MIGRATION_IN_PROGRESS: - UpdateUIState(GetMigratingUIState()); - CallJS("login.EncryptionMigrationScreen.setMigrationProgress", - static_cast<double>(current) / total); - break; - case cryptohome::DIRCRYPTO_MIGRATION_SUCCESS: - RecordMigrationResultSuccess(IsResumingIncompleteMigration(), - IsArcKiosk()); - // Stop listening to the progress updates. - CryptohomeClient::Get()->RemoveObserver(this); - // If the battery level decreased during migration, record the consumed - // battery level. - if (current_battery_percent_ && - *current_battery_percent_ < initial_battery_percent_) { - UMA_HISTOGRAM_PERCENTAGE( - kUmaNameConsumedBatteryPercent, - static_cast<int>(std::round(initial_battery_percent_ - - *current_battery_percent_))); - } - if (IsMinimalMigration() && !continue_login_callback_.is_null() && - !restart_login_callback_.is_null()) { - GetWakeLock()->CancelWakeLock(); - PowerPolicyController::Get()->SetEncryptionMigrationActive(false); - // If minimal migration was fast enough, continue with same sign-in - // data. Fast enough means that the elapsed time is under the defined - // threshold. - const base::TimeDelta elapsed_time = - tick_clock_->NowTicks() - minimal_migration_start_; - const bool require_password_reentry = - elapsed_time.InSeconds() > - kMinimalMigrationReenterPasswordThreshold; - if (require_password_reentry) - std::move(restart_login_callback_).Run(user_context_); - else - std::move(continue_login_callback_).Run(user_context_); - } else { - // Restart immediately after successful full migration. - PowerManagerClient::Get()->RequestRestart( - power_manager::REQUEST_RESTART_OTHER, - "login encryption migration success"); - } - break; - case cryptohome::DIRCRYPTO_MIGRATION_FAILED: - RecordMigrationResultGeneralFailure(IsResumingIncompleteMigration(), - IsArcKiosk()); - // Stop listening to the progress updates. - CryptohomeClient::Get()->RemoveObserver(this); - // Shows error screen after removing user directory is completed. - RemoveCryptohome(); - break; - default: - break; - } -} - -void EncryptionMigrationScreenHandler::OnMigrationRequested(bool success) { - if (!success) { - LOG(ERROR) << "Requesting MigrateToDircrypto failed."; - RecordMigrationResultRequestFailure(IsResumingIncompleteMigration(), - IsArcKiosk()); - UpdateUIState(UIState::MIGRATION_FAILED); - } -} - -void EncryptionMigrationScreenHandler::OnDelayedRecordVisibleScreen( - UIState ui_state) { - if (current_ui_state_ != ui_state) - return; - - // If |current_ui_state_| is not changed for a second, record the current - // screen as a "visible" screen. - UMA_HISTOGRAM_ENUMERATION(kUmaNameVisibleScreen, ui_state, UIState::COUNT); -} - -bool EncryptionMigrationScreenHandler::IsResumingIncompleteMigration() const { - return mode_ == EncryptionMigrationMode::RESUME_MIGRATION; -} - -bool EncryptionMigrationScreenHandler::IsStartImmediately() const { - return mode_ == EncryptionMigrationMode::START_MIGRATION || - mode_ == EncryptionMigrationMode::START_MINIMAL_MIGRATION || - mode_ == EncryptionMigrationMode::RESUME_MIGRATION || - mode_ == EncryptionMigrationMode::RESUME_MINIMAL_MIGRATION; -} - -bool EncryptionMigrationScreenHandler::IsMinimalMigration() const { - return mode_ == EncryptionMigrationMode::START_MINIMAL_MIGRATION || - mode_ == EncryptionMigrationMode::RESUME_MINIMAL_MIGRATION; -} - -EncryptionMigrationScreenHandler::UIState -EncryptionMigrationScreenHandler::GetMigratingUIState() const { - return IsMinimalMigration() ? UIState::MIGRATING_MINIMAL : UIState::MIGRATING; -} - -void EncryptionMigrationScreenHandler::MaybeStopForcingMigration() { - // |mode_| will be START_MIGRATION if migration was forced by user policy. - // If an incomplete migration is being resumed, it would be RESUME_MIGRATION. - // We only want to disable auto-starting migration in the first case. - if (mode_ == EncryptionMigrationMode::START_MIGRATION || - mode_ == EncryptionMigrationMode::START_MINIMAL_MIGRATION) - CallJS("login.EncryptionMigrationScreen.setIsResuming", false); +void EncryptionMigrationScreenHandler::SetMigrationProgress(double progress) { + CallJS("login.EncryptionMigrationScreen.setMigrationProgress", progress); } } // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h index 23dd21fc..63888c3 100644 --- a/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h
@@ -5,97 +5,16 @@ #ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_ENCRYPTION_MIGRATION_SCREEN_HANDLER_H_ #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_ENCRYPTION_MIGRATION_SCREEN_HANDLER_H_ -#include <memory> -#include <string> - -#include "base/callback_forward.h" -#include "base/macros.h" -#include "base/optional.h" -#include "chrome/browser/chromeos/login/screens/encryption_migration_mode.h" #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h" -#include "chromeos/cryptohome/cryptohome_parameters.h" -#include "chromeos/dbus/cryptohome/cryptohome_client.h" -#include "chromeos/dbus/cryptohome/rpc.pb.h" -#include "chromeos/dbus/power/power_manager_client.h" -#include "chromeos/login/auth/user_context.h" -#include "mojo/public/cpp/bindings/remote.h" -#include "services/device/public/mojom/wake_lock.mojom.h" -#include "third_party/cros_system_api/dbus/cryptohome/dbus-constants.h" - -namespace base { -class TickClock; -class TimeTicks; -} // namespace base namespace chromeos { class EncryptionMigrationScreen; -class LoginFeedback; -class UserContext; class EncryptionMigrationScreenView { public: - using ContinueLoginCallback = base::OnceCallback<void(const UserContext&)>; - using RestartLoginCallback = base::OnceCallback<void(const UserContext&)>; - constexpr static StaticOobeScreenId kScreenId{"encryption-migration"}; - virtual ~EncryptionMigrationScreenView() {} - - virtual void Show() = 0; - virtual void Hide() = 0; - virtual void SetDelegate(EncryptionMigrationScreen* delegate) = 0; - virtual void SetUserContext(const UserContext& user_context) = 0; - virtual void SetMode(EncryptionMigrationMode mode) = 0; - virtual void SetContinueLoginCallback(ContinueLoginCallback callback) = 0; - virtual void SetRestartLoginCallback(RestartLoginCallback callback) = 0; - virtual void SetupInitialView() = 0; -}; - -// WebUI implementation of EncryptionMigrationScreenView -class EncryptionMigrationScreenHandler : public EncryptionMigrationScreenView, - public BaseScreenHandler, - public CryptohomeClient::Observer, - public PowerManagerClient::Observer { - public: - using TView = EncryptionMigrationScreenView; - - explicit EncryptionMigrationScreenHandler( - JSCallsContainer* js_calls_container); - ~EncryptionMigrationScreenHandler() override; - - // EncryptionMigrationScreenView implementation: - void Show() override; - void Hide() override; - void SetDelegate(EncryptionMigrationScreen* delegate) override; - void SetUserContext(const UserContext& user_context) override; - void SetMode(EncryptionMigrationMode mode) override; - void SetContinueLoginCallback(ContinueLoginCallback callback) override; - void SetRestartLoginCallback(RestartLoginCallback callback) override; - void SetupInitialView() override; - - // BaseScreenHandler implementation: - void DeclareLocalizedValues( - ::login::LocalizedValuesBuilder* builder) override; - void Initialize() override; - - // Callback that can be used to check free disk space. - using FreeDiskSpaceFetcher = base::RepeatingCallback<int64_t()>; - - // Testing only: Sets the free disk space fetcher. - void SetFreeDiskSpaceFetcherForTesting( - FreeDiskSpaceFetcher free_disk_space_fetcher); - - // Testing only: Sets the tick clock used to measure elapsed time during - // migration. - // This doesn't take the ownership of the clock. |tick_clock| must outlive the - // EncryptionMigrationScreenHandler instance. - void SetTickClockForTesting(const base::TickClock* tick_clock); - - protected: - virtual device::mojom::WakeLock* GetWakeLock(); - - private: // Enumeration for migration UI state. These values must be kept in sync with // EncryptionMigrationUIState in JS code, and match the numbering for // MigrationUIScreen in histograms/enums.xml. Do not reorder or remove items, @@ -110,110 +29,55 @@ COUNT }; - // WebUIMessageHandler implementation: - void RegisterMessages() override; + virtual ~EncryptionMigrationScreenView() {} - // PowerManagerClient::Observer implementation: - void PowerChanged(const power_manager::PowerSupplyProperties& proto) override; + virtual void Show() = 0; + virtual void Hide() = 0; + virtual void SetDelegate(EncryptionMigrationScreen* delegate) = 0; + virtual void SetBatteryState(double batteryPercent, + bool isEnoughBattery, + bool isCharging) = 0; + virtual void SetIsResuming(bool isResuming) = 0; + virtual void SetUIState(UIState state) = 0; + virtual void SetSpaceInfoInString(int64_t availableSpaceSize, + int64_t necessarySpaceSize) = 0; + virtual void SetNecessaryBatteryPercent(double batteryPercent) = 0; + virtual void SetMigrationProgress(double progress) = 0; +}; - // Handlers for JS API callbacks. - void HandleStartMigration(); - void HandleSkipMigration(); - void HandleRequestRestartOnLowStorage(); - void HandleRequestRestartOnFailure(); - void HandleOpenFeedbackDialog(); +// WebUI implementation of EncryptionMigrationScreenView +class EncryptionMigrationScreenHandler : public EncryptionMigrationScreenView, + public BaseScreenHandler { + public: + using TView = EncryptionMigrationScreenView; - // Updates UI state. - void UpdateUIState(UIState state); + explicit EncryptionMigrationScreenHandler( + JSCallsContainer* js_calls_container); + ~EncryptionMigrationScreenHandler() override; - void CheckAvailableStorage(); - void OnGetAvailableStorage(int64_t size); - void WaitBatteryAndMigrate(); - void StartMigration(); - void OnMountExistingVault(base::Optional<cryptohome::BaseReply> reply); - // Removes cryptohome and shows the error screen after the removal finishes. - void RemoveCryptohome(); - void OnRemoveCryptohome(base::Optional<cryptohome::BaseReply> reply); + // EncryptionMigrationScreenView implementation: + void Show() override; + void Hide() override; + void SetDelegate(EncryptionMigrationScreen* delegate) override; + void SetBatteryState(double batteryPercent, + bool isEnoughBattery, + bool isCharging) override; + void SetIsResuming(bool isResuming) override; + void SetUIState(UIState state) override; + void SetSpaceInfoInString(int64_t availableSpaceSize, + int64_t necessarySpaceSize) override; + void SetNecessaryBatteryPercent(double batteryPercent) override; + void SetMigrationProgress(double progress) override; - // Creates authorization request for MountEx method using |user_context_|. - cryptohome::AuthorizationRequest CreateAuthorizationRequest(); + // BaseScreenHandler implementation: + void DeclareLocalizedValues( + ::login::LocalizedValuesBuilder* builder) override; + void Initialize() override; - // True if the session is in ARC kiosk mode. - bool IsArcKiosk() const; - - // CryptohomeClient::Observer implementation: - void DircryptoMigrationProgress(cryptohome::DircryptoMigrationStatus status, - uint64_t current, - uint64_t total) override; - - // Handlers for cryptohome API callbacks. - void OnMigrationRequested(bool success); - - // Records UMA about visible screen after delay. - void OnDelayedRecordVisibleScreen(UIState state); - - // True if |mode_| suggests that we are resuming an incomplete migration. - bool IsResumingIncompleteMigration() const; - - // True if |mode_| suggests that migration should start immediately. - bool IsStartImmediately() const; - - // True if |mode_| suggests that we are starting or resuming a minimal - // migration. - bool IsMinimalMigration() const; - - // Returns the UIState we should be in when migration is in progress. - // This will be different between regular and minimal migration. - UIState GetMigratingUIState() const; - - // Stop forcing migration if it was forced by policy. - void MaybeStopForcingMigration(); - + private: EncryptionMigrationScreen* delegate_ = nullptr; bool show_on_init_ = false; - // The current UI state which should be refrected in the web UI. - UIState current_ui_state_ = INITIAL; - - // The current user's UserContext, which is used to request the migration to - // cryptohome. - UserContext user_context_; - - // The callback which is used to log in to the session from the migration UI. - ContinueLoginCallback continue_login_callback_; - - // The callback which is used to require the user to re-enter their password. - RestartLoginCallback restart_login_callback_; - - // The migration mode (ask user / start migration automatically / resume - // incomplete migratoin). - EncryptionMigrationMode mode_ = EncryptionMigrationMode::ASK_USER; - - // The current battery level. - base::Optional<double> current_battery_percent_; - - // True if the migration should start immediately once the battery level gets - // sufficient. - bool should_migrate_on_enough_battery_ = false; - - // The battery level at the timing that the migration starts. - double initial_battery_percent_ = 0.0; - - // Point in time when minimal migration started, as reported by |tick_clock_|. - base::TimeTicks minimal_migration_start_; - - mojo::Remote<device::mojom::WakeLock> wake_lock_; - - std::unique_ptr<LoginFeedback> login_feedback_; - - // Used to measure elapsed time during migration. - const base::TickClock* tick_clock_; - - FreeDiskSpaceFetcher free_disk_space_fetcher_; - - base::WeakPtrFactory<EncryptionMigrationScreenHandler> weak_ptr_factory_{ - this}; - DISALLOW_COPY_AND_ASSIGN(EncryptionMigrationScreenHandler); };
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc index 7b11675..cb78d6a 100644 --- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
@@ -39,6 +39,7 @@ #include "chrome/browser/chromeos/login/saml/public_saml_url_fetcher.h" #include "chrome/browser/chromeos/login/saml/saml_metric_utils.h" #include "chrome/browser/chromeos/login/screens/network_error.h" +#include "chrome/browser/chromeos/login/screens/signin_fatal_error_screen.h" #include "chrome/browser/chromeos/login/signin_partition_manager.h" #include "chrome/browser/chromeos/login/ui/login_display_host.h" #include "chrome/browser/chromeos/login/ui/login_display_host_webui.h" @@ -55,6 +56,7 @@ #include "chrome/browser/ui/ash/login_screen_client.h" #include "chrome/browser/ui/webui/chromeos/login/cookie_waiter.h" #include "chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h" +#include "chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/user_creation_screen_handler.h" #include "chrome/browser/ui/webui/metrics_handler.h" @@ -647,19 +649,6 @@ builder->Add("learnMoreButton", IDS_LEARN_MORE); builder->Add("gaiaLoading", IDS_LOGIN_GAIA_LOADING_MESSAGE); - // Strings used by the SAML fatal error dialog. - builder->Add("fatalErrorMessageNoAccountDetails", - IDS_LOGIN_FATAL_ERROR_NO_ACCOUNT_DETAILS); - builder->Add("fatalErrorMessageNoPassword", - IDS_LOGIN_FATAL_ERROR_NO_PASSWORD); - builder->Add("fatalErrorMessageVerificationFailed", - IDS_LOGIN_FATAL_ERROR_PASSWORD_VERIFICATION); - builder->Add("fatalErrorMessageInsecureURL", - IDS_LOGIN_FATAL_ERROR_TEXT_INSECURE_URL); - builder->Add("fatalErrorDoneButton", IDS_DONE); - builder->Add("fatalErrorTryAgainButton", - IDS_LOGIN_FATAL_ERROR_TRY_AGAIN_BUTTON); - builder->AddF("loginWelcomeMessage", IDS_LOGIN_WELCOME_MESSAGE, ui::GetChromeOSDeviceTypeResourceId()); builder->Add("offlineLoginEmail", IDS_OFFLINE_LOGIN_EMAIL); @@ -752,6 +741,7 @@ AddCallback("samlStateChanged", &GaiaScreenHandler::HandleSamlStateChanged); AddCallback("securityTokenPinEntered", &GaiaScreenHandler::HandleSecurityTokenPinEntered); + AddCallback("onFatalError", &GaiaScreenHandler::HandleOnFatalError); // Allow UMA metrics collection from JS. web_ui()->AddMessageHandler(std::make_unique<MetricsHandler>()); @@ -1120,6 +1110,15 @@ } } +void GaiaScreenHandler::HandleOnFatalError( + int error_code, + const base::DictionaryValue* params) { + LoginDisplayHost::default_host() + ->GetWizardController() + ->ShowSignInFatalErrorScreen(SignInFatalErrorScreen::Error(error_code), + params); +} + void GaiaScreenHandler::OnShowAddUser() { signin_screen_handler_->is_account_picker_showing_first_time_ = false; lock_screen_utils::EnforceDevicePolicyInputMethods(std::string());
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h index 63230db..9b54a48 100644 --- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h
@@ -250,6 +250,7 @@ // Called to deliver the result of the security token PIN request. Called with // an empty string when the request is canceled. void HandleSecurityTokenPinEntered(const std::string& user_input); + void HandleOnFatalError(int error_code, const base::DictionaryValue* params); void OnShowAddUser();
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc index 14097f4..fb367ef 100644 --- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc +++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
@@ -74,6 +74,7 @@ #include "chrome/browser/ui/webui/chromeos/login/packaged_license_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h" +#include "chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.h" @@ -477,6 +478,9 @@ AddScreenHandler(std::make_unique<GaiaScreenHandler>( js_calls_container_.get(), core_handler_, network_state_informer_)); + AddScreenHandler(std::make_unique<SignInFatalErrorScreenHandler>( + js_calls_container_.get())); + AddScreenHandler(std::move(password_change_handler)); auto signin_screen_handler = std::make_unique<SigninScreenHandler>(
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.cc new file mode 100644 index 0000000..59a74bd --- /dev/null +++ b/chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.cc
@@ -0,0 +1,69 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.h" +#include <string> + +#include "base/values.h" +#include "chrome/browser/chromeos/login/oobe_screen.h" +#include "chrome/browser/chromeos/login/screens/signin_fatal_error_screen.h" +#include "chrome/grit/chromium_strings.h" +#include "chrome/grit/generated_resources.h" +#include "components/login/localized_values_builder.h" +#include "components/strings/grit/components_strings.h" + +namespace chromeos { + +constexpr StaticOobeScreenId SignInFatalErrorView::kScreenId; + +SignInFatalErrorScreenHandler::SignInFatalErrorScreenHandler( + JSCallsContainer* js_calls_container) + : BaseScreenHandler(kScreenId, js_calls_container) { + set_user_acted_method_path("login.SignInFatalErrorScreen.userActed"); +} + +SignInFatalErrorScreenHandler::~SignInFatalErrorScreenHandler() { + if (screen_) + screen_->OnViewDestroyed(this); +} + +void SignInFatalErrorScreenHandler::DeclareLocalizedValues( + ::login::LocalizedValuesBuilder* builder) { + builder->Add("errorGenericFatalErrorTitle", + IDS_OOBE_GENERIC_FATAL_ERROR_TITLE); + builder->Add("fatalErrorMessageNoPassword", + IDS_LOGIN_FATAL_ERROR_NO_PASSWORD); + builder->Add("fatalErrorMessageVerificationFailed", + IDS_LOGIN_FATAL_ERROR_PASSWORD_VERIFICATION); + builder->Add("fatalErrorTryAgainButton", + IDS_LOGIN_FATAL_ERROR_TRY_AGAIN_BUTTON); + builder->Add("fatalErrorDoneButton", IDS_DONE); + builder->Add("fatalErrorMessageNoAccountDetails", + IDS_LOGIN_FATAL_ERROR_NO_ACCOUNT_DETAILS); + builder->Add("fatalErrorMessageInsecureURL", + IDS_LOGIN_FATAL_ERROR_TEXT_INSECURE_URL); +} + +void SignInFatalErrorScreenHandler::Initialize() {} + +void SignInFatalErrorScreenHandler::Show(SignInFatalErrorScreen::Error error, + const base::Value* params) { + base::Value screen_data = + params ? params->Clone() : base::Value(base::Value::Type::DICTIONARY); + screen_data.SetKey("errorState", base::Value(static_cast<int>(error))); + + ShowScreenWithData(kScreenId, &base::Value::AsDictionaryValue(screen_data)); +} + +void SignInFatalErrorScreenHandler::Bind(SignInFatalErrorScreen* screen) { + screen_ = screen; + BaseScreenHandler::SetBaseScreen(screen_); +} + +void SignInFatalErrorScreenHandler::Unbind() { + screen_ = nullptr; + BaseScreenHandler::SetBaseScreen(nullptr); +} + +} // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.h new file mode 100644 index 0000000..bcf779ae --- /dev/null +++ b/chrome/browser/ui/webui/chromeos/login/signin_fatal_error_screen_handler.h
@@ -0,0 +1,63 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SIGNIN_FATAL_ERROR_SCREEN_HANDLER_H_ +#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SIGNIN_FATAL_ERROR_SCREEN_HANDLER_H_ + +#include <string> + +#include "base/values.h" +#include "chrome/browser/chromeos/login/screens/signin_fatal_error_screen.h" +#include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h" + +namespace chromeos { + +class SignInFatalErrorScreen; + +// Interface for dependency injection between SignInFatalErrorScreen and its +// WebUI representation. +class SignInFatalErrorView { + public: + constexpr static StaticOobeScreenId kScreenId{"signin-fatal-error"}; + virtual ~SignInFatalErrorView() = default; + + // Shows the contents of the screen. + virtual void Show(SignInFatalErrorScreen::Error error, + const base::Value* params) = 0; + + // Binds |screen| to the view. + virtual void Bind(SignInFatalErrorScreen* screen) = 0; + + // Unbinds the screen from the view. + virtual void Unbind() = 0; +}; + +class SignInFatalErrorScreenHandler : public SignInFatalErrorView, + public BaseScreenHandler { + public: + using TView = SignInFatalErrorView; + + explicit SignInFatalErrorScreenHandler(JSCallsContainer* js_calls_container); + SignInFatalErrorScreenHandler(const SignInFatalErrorScreenHandler&) = delete; + SignInFatalErrorScreenHandler& operator=( + const SignInFatalErrorScreenHandler&) = delete; + ~SignInFatalErrorScreenHandler() override; + + private: + void Show(SignInFatalErrorScreen::Error error, + const base::Value* params) override; + void Bind(SignInFatalErrorScreen* screen) override; + void Unbind() override; + + // BaseScreenHandler: + void DeclareLocalizedValues( + ::login::LocalizedValuesBuilder* builder) override; + void Initialize() override; + + SignInFatalErrorScreen* screen_ = nullptr; +}; + +} // namespace chromeos + +#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SIGNIN_FATAL_ERROR_SCREEN_HANDLER_H_ \ No newline at end of file
diff --git a/chrome/browser/ui/webui/history/history_ui.cc b/chrome/browser/ui/webui/history/history_ui.cc index bd40bcc..413bd27 100644 --- a/chrome/browser/ui/webui/history/history_ui.cc +++ b/chrome/browser/ui/webui/history/history_ui.cc
@@ -31,7 +31,6 @@ #include "chrome/grit/history_resources_map.h" #include "chrome/grit/locale_settings.h" #include "components/grit/components_scaled_resources.h" -#include "components/pref_registry/pref_registry_syncable.h" #include "components/prefs/pref_service.h" #include "components/signin/public/identity_manager/identity_manager.h" #include "components/strings/grit/components_strings.h" @@ -43,13 +42,7 @@ namespace { -#if !BUILDFLAG(OPTIMIZE_WEBUI) -constexpr char kGeneratedPath[] = - "@out_folder@/gen/chrome/browser/resources/history/"; -#endif - constexpr char kIsUserSignedInKey[] = "isUserSignedIn"; -constexpr char kShowMenuPromoKey[] = "showMenuPromo"; bool IsUserSignedIn(Profile* profile) { signin::IdentityManager* identity_manager = @@ -57,10 +50,6 @@ return identity_manager && identity_manager->HasPrimaryAccount(); } -bool MenuPromoShown(Profile* profile) { - return profile->GetPrefs()->GetBoolean(prefs::kHistoryMenuPromoShown); -} - content::WebUIDataSource* CreateHistoryUIHTMLSource(Profile* profile) { content::WebUIDataSource* source = content::WebUIDataSource::Create(chrome::kChromeUIHistoryHost); @@ -73,7 +62,6 @@ {"cancel", IDS_CANCEL}, {"clearBrowsingData", IDS_CLEAR_BROWSING_DATA_TITLE}, {"clearSearch", IDS_CLEAR_SEARCH}, - {"closeMenuPromo", IDS_HISTORY_CLOSE_MENU_PROMO}, {"collapseSessionButton", IDS_HISTORY_OTHER_SESSIONS_COLLAPSE_SESSION}, {"delete", IDS_HISTORY_DELETE}, {"deleteConfirm", IDS_HISTORY_DELETE_PRIOR_VISITS_CONFIRM_BUTTON}, @@ -87,7 +75,6 @@ {"itemsSelected", IDS_HISTORY_ITEMS_SELECTED}, {"loading", IDS_HISTORY_LOADING}, {"menu", IDS_MENU}, - {"menuPromo", IDS_HISTORY_MENU_PROMO}, {"moreFromSite", IDS_HISTORY_MORE_FROM_SITE}, {"openAll", IDS_HISTORY_OTHER_SESSIONS_OPEN_ALL}, {"openTabsMenuItem", IDS_HISTORY_OPEN_TABS_MENU_ITEM}, @@ -119,27 +106,14 @@ prefs->GetBoolean(prefs::kAllowDeletingBrowserHistory); source->AddBoolean("allowDeletingHistory", allow_deleting_history); - source->AddBoolean(kShowMenuPromoKey, !MenuPromoShown(profile)); source->AddBoolean("isGuestSession", profile->IsGuestSession() || profile->IsEphemeralGuestProfile()); source->AddBoolean(kIsUserSignedInKey, IsUserSignedIn(profile)); -#if BUILDFLAG(OPTIMIZE_WEBUI) - webui::SetupBundledWebUIDataSource(source, "history.js", - IDR_HISTORY_HISTORY_ROLLUP_JS, - IDR_HISTORY_HISTORY_HTML); - source->AddResourcePath("lazy_load.js", IDR_HISTORY_LAZY_LOAD_ROLLUP_JS); - source->AddResourcePath("shared.rollup.js", IDR_HISTORY_SHARED_ROLLUP_JS); - source->AddResourcePath("images/sign_in_promo.svg", - IDR_HISTORY_IMAGES_SIGN_IN_PROMO_SVG); - source->AddResourcePath("images/sign_in_promo_dark.svg", - IDR_HISTORY_IMAGES_SIGN_IN_PROMO_DARK_SVG); -#else webui::SetupWebUIDataSource( - source, base::make_span(kHistoryResources, kHistoryResourcesSize), - kGeneratedPath, IDR_HISTORY_HISTORY_HTML); -#endif + source, base::make_span(kHistoryResources, kHistoryResourcesSize), "", + IDR_HISTORY_HISTORY_HTML); return source; } @@ -169,20 +143,10 @@ web_ui->AddMessageHandler(std::make_unique<HistoryLoginHandler>( base::Bind(&HistoryUI::UpdateDataSource, base::Unretained(this)))); - web_ui->RegisterMessageCallback( - "menuPromoShown", base::BindRepeating(&HistoryUI::HandleMenuPromoShown, - base::Unretained(this))); } HistoryUI::~HistoryUI() {} -void HistoryUI::RegisterProfilePrefs( - user_prefs::PrefRegistrySyncable* registry) { - registry->RegisterBooleanPref( - prefs::kHistoryMenuPromoShown, false, - user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); -} - // static base::RefCountedMemory* HistoryUI::GetFaviconResourceBytes( ui::ScaleFactor scale_factor) { @@ -198,14 +162,7 @@ std::unique_ptr<base::DictionaryValue> update(new base::DictionaryValue); update->SetBoolean(kIsUserSignedInKey, IsUserSignedIn(profile)); - update->SetBoolean(kShowMenuPromoKey, !MenuPromoShown(profile)); content::WebUIDataSource::Update(profile, chrome::kChromeUIHistoryHost, std::move(update)); } - -void HistoryUI::HandleMenuPromoShown(const base::ListValue* args) { - Profile::FromWebUI(web_ui())->GetPrefs()->SetBoolean( - prefs::kHistoryMenuPromoShown, true); - UpdateDataSource(); -}
diff --git a/chrome/browser/ui/webui/history/history_ui.h b/chrome/browser/ui/webui/history/history_ui.h index 3ff0a13..9e8e3b43 100644 --- a/chrome/browser/ui/webui/history/history_ui.h +++ b/chrome/browser/ui/webui/history/history_ui.h
@@ -11,30 +11,20 @@ #include "ui/base/layout.h" namespace base { -class ListValue; class RefCountedMemory; } -namespace user_prefs { -class PrefRegistrySyncable; -} - class HistoryUI : public content::WebUIController { public: explicit HistoryUI(content::WebUI* web_ui); ~HistoryUI() override; - static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); - static base::RefCountedMemory* GetFaviconResourceBytes( ui::ScaleFactor scale_factor); private: void UpdateDataSource(); - // Handler for the "menuPromoShown" message from the page. No arguments. - void HandleMenuPromoShown(const base::ListValue* args); - DISALLOW_COPY_AND_ASSIGN(HistoryUI); };
diff --git a/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos_unittest.cc b/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos_unittest.cc index 7ee3667f..065fc3e 100644 --- a/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos_unittest.cc +++ b/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos_unittest.cc
@@ -241,7 +241,8 @@ // Add printer capabilities to |test_backend_|. PrinterSemanticCapsAndDefaults caps; test_backend_->AddValidPrinter( - "printer1", std::make_unique<PrinterSemanticCapsAndDefaults>(caps)); + "printer1", std::make_unique<PrinterSemanticCapsAndDefaults>(caps), + std::make_unique<printing::PrinterBasicInfo>()); std::unique_ptr<base::Value> fetched_caps; local_printer_handler_->StartGetCapability( @@ -268,7 +269,8 @@ // Add printer capabilities to |test_backend_|. PrinterSemanticCapsAndDefaults caps; test_backend_->AddValidPrinter( - "printer1", std::make_unique<PrinterSemanticCapsAndDefaults>(caps)); + "printer1", std::make_unique<PrinterSemanticCapsAndDefaults>(caps), + std::make_unique<printing::PrinterBasicInfo>()); std::unique_ptr<base::Value> fetched_caps; local_printer_handler_->StartGetCapability(
diff --git a/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc b/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc index 9100281..82c8415 100644 --- a/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc +++ b/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc
@@ -1335,6 +1335,18 @@ kChromeCleaner, static_cast<int>(expected_cct_status_)); ASSERT_TRUE(event); VerifyDisplayString(event, expected_display_string_); + // Ensure UMA is logged. + if (expected_cct_status_ == + SafetyCheckHandler::ChromeCleanerStatus::kHidden || + expected_cct_status_ == + SafetyCheckHandler::ChromeCleanerStatus::kChecking) { + // Hidden and checking state should not get recorded. + histogram_tester_.ExpectTotalCount( + "Settings.SafetyCheck.ChromeCleanerResult", 0); + } else { + histogram_tester_.ExpectBucketCount( + "Settings.SafetyCheck.ChromeCleanerResult", expected_cct_status_, 1); + } } INSTANTIATE_TEST_SUITE_P(
diff --git a/chrome/browser/ui/webui/signin/profile_picker_ui.cc b/chrome/browser/ui/webui/signin/profile_picker_ui.cc index c047c18..3d90e79 100644 --- a/chrome/browser/ui/webui/signin/profile_picker_ui.cc +++ b/chrome/browser/ui/webui/signin/profile_picker_ui.cc
@@ -7,6 +7,7 @@ #include "base/strings/stringprintf.h" #include "chrome/browser/browser_process.h" +#include "chrome/browser/policy/browser_signin_policy_handler.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_shortcut_manager.h" #include "chrome/browser/signin/signin_util.h" @@ -21,6 +22,9 @@ #include "chrome/grit/generated_resources.h" #include "chrome/grit/profile_picker_resources.h" #include "chrome/grit/profile_picker_resources_map.h" +#include "components/policy/core/common/policy_map.h" +#include "components/policy/core/common/policy_service.h" +#include "components/policy/policy_constants.h" #include "components/prefs/pref_service.h" #include "components/strings/grit/components_strings.h" #include "content/public/browser/web_contents.h" @@ -46,6 +50,26 @@ return service->GetBoolean(prefs::kBrowserGuestModeEnabled); } +bool IsBrowserSigninAllowed() { + policy::PolicyService* policy_service = g_browser_process->policy_service(); + DCHECK(policy_service); + const policy::PolicyMap& policies = policy_service->GetPolicies( + policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, std::string())); + + const base::Value* browser_signin_value = + policies.GetValue(policy::key::kBrowserSignin); + + if (!browser_signin_value) + return true; + + int int_browser_signin_value; + bool success = browser_signin_value->GetAsInteger(&int_browser_signin_value); + DCHECK(success); + + return static_cast<policy::BrowserSigninMode>(int_browser_signin_value) != + policy::BrowserSigninMode::kDisabled; +} + void AddStrings(content::WebUIDataSource* html_source) { static constexpr webui::LocalizedString kLocalizedStrings[] = { {"mainViewTitle", IDS_PROFILE_PICKER_MAIN_VIEW_TITLE}, @@ -106,6 +130,7 @@ base::StringPrintf("%ipx", kMinimumPickerSizePx)); // Add policies. + html_source->AddBoolean("isBrowserSigninAllowed", IsBrowserSigninAllowed()); html_source->AddBoolean("isForceSigninEnabled", signin_util::IsForceSigninEnabled()); html_source->AddBoolean("isGuestModeEnabled", IsGuestModeEnabled());
diff --git a/chrome/browser/ui/webui/sync_internals_message_handler.cc b/chrome/browser/ui/webui/sync_internals_message_handler.cc index eddf879c..69c157df 100644 --- a/chrome/browser/ui/webui/sync_internals_message_handler.cc +++ b/chrome/browser/ui/webui/sync_internals_message_handler.cc
@@ -16,8 +16,8 @@ #include "chrome/browser/sync/user_event_service_factory.h" #include "chrome/common/channel_info.h" #include "components/sync/base/model_type.h" -#include "components/sync/driver/about_sync_util.h" #include "components/sync/driver/sync_driver_switches.h" +#include "components/sync/driver/sync_internals_util.h" #include "components/sync/driver/sync_service.h" #include "components/sync/driver/sync_user_settings.h" #include "components/sync/engine/events/protocol_event.h"
diff --git a/chrome/browser/ui/webui/sync_internals_message_handler_unittest.cc b/chrome/browser/ui/webui/sync_internals_message_handler_unittest.cc index 14797d81..3c31f59 100644 --- a/chrome/browser/ui/webui/sync_internals_message_handler_unittest.cc +++ b/chrome/browser/ui/webui/sync_internals_message_handler_unittest.cc
@@ -13,8 +13,8 @@ #include "chrome/browser/sync/user_event_service_factory.h" #include "chrome/test/base/chrome_render_view_host_test_harness.h" #include "chrome/test/base/testing_profile.h" -#include "components/sync/driver/about_sync_util.h" #include "components/sync/driver/fake_sync_service.h" +#include "components/sync/driver/sync_internals_util.h" #include "components/sync/driver/sync_service.h" #include "components/sync/js/js_test_util.h" #include "components/sync_user_events/fake_user_event_service.h"
diff --git a/chrome/browser/ui/webui/sync_internals_ui.cc b/chrome/browser/ui/webui/sync_internals_ui.cc index 285dc87..4ba67ce 100644 --- a/chrome/browser/ui/webui/sync_internals_ui.cc +++ b/chrome/browser/ui/webui/sync_internals_ui.cc
@@ -11,7 +11,7 @@ #include "chrome/browser/ui/webui/webui_util.h" #include "chrome/common/url_constants.h" #include "components/grit/sync_driver_resources.h" -#include "components/sync/driver/about_sync_util.h" +#include "components/sync/driver/sync_internals_util.h" #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h" #include "services/network/public/mojom/content_security_policy.mojom.h"
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index c0a6c30..79a5b52 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-master-1602806244-847cfe69512e3379b52d02969a5612ceb443a7a9.profdata +chrome-linux-master-1602827193-4287d7521da41bae907bcfa87edebb4158ef284f.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index 22c576328..359e973 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-master-1602806244-163ee8de1307bdf1621dd4ed7097ab91c883e0cf.profdata +chrome-mac-master-1602827193-a11ab02463ee64ac6dd1eb410ceea8e9dc281351.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 27d1bf39..ad65eeb 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-master-1602730724-a2f2ccfa1a9355c75a0cf65d2477506fef2f19f5.profdata +chrome-win32-master-1602795589-2bd353ec3fee304a6bd3887aca77b7d3fb1210e3.profdata
diff --git a/chrome/common/crash_keys.cc b/chrome/common/crash_keys.cc index 2014df5..7d18a0b4 100644 --- a/chrome/common/crash_keys.cc +++ b/chrome/common/crash_keys.cc
@@ -43,7 +43,6 @@ // crash_reporter separately informs the crash server if it is doing // crash-loop handling. crash_reporter::switches::kCrashLoopBefore, - switches::kPpapiFlashArgs, switches::kPpapiFlashPath, switches::kRegisterPepperPlugins, switches::kUseGL,
diff --git a/chrome/common/ppapi_utils.cc b/chrome/common/ppapi_utils.cc index 69fadf88..dc26dad3 100644 --- a/chrome/common/ppapi_utils.cc +++ b/chrome/common/ppapi_utils.cc
@@ -85,7 +85,6 @@ #include "ppapi/c/private/ppb_udp_socket_private.h" #include "ppapi/c/private/ppb_uma_private.h" #include "ppapi/c/private/ppb_x509_certificate_private.h" -#include "ppapi/c/trusted/ppb_broker_trusted.h" #include "ppapi/c/trusted/ppb_browser_font_trusted.h" #include "ppapi/c/trusted/ppb_char_set_trusted.h" #include "ppapi/c/trusted/ppb_file_chooser_trusted.h"
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index 6f36ec1e..9994968f 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc
@@ -1063,12 +1063,6 @@ // permitted. const char kAllowDeletingBrowserHistory[] = "history.deleting_enabled"; -#if !defined(OS_ANDROID) -// Whether the "Click here to clear your browsing data" tooltip promo has been -// shown on the History page. -const char kHistoryMenuPromoShown[] = "history.menu_promo_shown"; -#endif - // Boolean controlling whether SafeSearch is mandatory for Google Web Searches. const char kForceGoogleSafeSearch[] = "settings.force_google_safesearch";
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index 457c6010..2c99177 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h
@@ -351,9 +351,6 @@ extern const char kShowHomeButton[]; extern const char kSpeechRecognitionFilterProfanities[]; extern const char kAllowDeletingBrowserHistory[]; -#if !defined(OS_ANDROID) -extern const char kHistoryMenuPromoShown[]; -#endif extern const char kForceGoogleSafeSearch[]; extern const char kForceYouTubeRestrict[]; extern const char kAllowedDomainsForApps[];
diff --git a/chrome/common/profiler/process_type.cc b/chrome/common/profiler/process_type.cc index 0bb8233..b178dd1 100644 --- a/chrome/common/profiler/process_type.cc +++ b/chrome/common/profiler/process_type.cc
@@ -55,8 +55,5 @@ if (process_type == switches::kPpapiPluginProcess) return metrics::CallStackProfileParams::PPAPI_PLUGIN_PROCESS; - if (process_type == switches::kPpapiBrokerProcess) - return metrics::CallStackProfileParams::PPAPI_BROKER_PROCESS; - return metrics::CallStackProfileParams::UNKNOWN_PROCESS; }
diff --git a/chrome/common/profiler/process_type_unittest.cc b/chrome/common/profiler/process_type_unittest.cc index c676552..7593d5b 100644 --- a/chrome/common/profiler/process_type_unittest.cc +++ b/chrome/common/profiler/process_type_unittest.cc
@@ -88,10 +88,3 @@ EXPECT_EQ(metrics::CallStackProfileParams::PPAPI_PLUGIN_PROCESS, GetProfileParamsProcess(command_line())); } - -TEST_F(ThreadProfilerProcessTypeTest, GetProfileParamsProcess_PpapiBroker) { - command_line().AppendSwitchASCII(switches::kProcessType, - switches::kPpapiBrokerProcess); - EXPECT_EQ(metrics::CallStackProfileParams::PPAPI_BROKER_PROCESS, - GetProfileParamsProcess(command_line())); -}
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_as.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_as.xtb index 8c2cac0..c981c04 100644 --- a/chrome/credential_provider/gaiacp/strings/gaia_resources_as.xtb +++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_as.xtb
@@ -5,6 +5,7 @@ <translation id="1383286653814676580">Google ক্ৰেডেনশ্বিয়েল প্ৰদানকাৰী ছাইন ইন পৃষ্ঠা চলাবলৈ ব্যৱহাৰ কৰা হৈছে৷</translation> <translation id="2048923169632968961">আপোনাৰ Windowsৰ প্ৰ'ফাইলটোলৈ আপোনাৰ কর্মস্থানৰ একাউণ্টটোৰ পাছৱর্ড ছিংক কৰোঁতে এটা সমস্যা হৈছে। অনুগ্ৰহ কৰি আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।</translation> <translation id="2515346402363002066">আপোনাৰ ছেশ্বনটোৰ ম্যাদ উকলিল। আপোনাৰ কৰ্মস্থানৰ একাউণ্টটোৰ জৰিয়তে ছাইন ইন কৰক।</translation> +<translation id="2549902055700841962">আপোনাৰ কর্মস্থানৰ একাউণ্টটোত ছাইন ইন কৰিব নোৱাৰি। অনুগ্ৰহ কৰি আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।</translation> <translation id="2566603360883977759">এই ইমেইলটোৰ ছাইন ইন কৰিবলৈ অনুমতি নাই। আপুনি কৰ্মস্থান অথবা স্কুলৰ বাবে ব্যৱহাৰ কৰা একাউণ্টটোৰে পুনৰ চেষ্টা কৰি চাওক। আপুনি যদি তথাপি ছাইন ইন কৰিব নোৱাৰে, আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।</translation> <translation id="2844349213149998955">এই ডিভাইচটোত ব্যক্তিগত কোনো একাউণ্টেৰে ছাইন ইন কৰাৰ অনুমতি নাই। অনুগ্ৰহ কৰি আপোনাৰ কৰ্মস্থানৰ একাউণ্টেৰে লগ ইন কৰক।</translation> <translation id="3217145568844727893">আপুনি যদি আপোনাৰ বৰ্তমানৰ Windowsৰ পাছৱৰ্ড নিদিয়াকৈ অব্যাহত ৰাখে, তেন্তে আপুনি এই ডিভাইচৰ তথ্য স্থায়ীভাৱে হেৰুৱাব পাৰে।</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb index 566e6f6..a019468 100644 --- a/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb +++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb
@@ -5,6 +5,7 @@ <translation id="1383286653814676580">Se usa para ejecutar la página de acceso del proveedor de credenciales de Google.</translation> <translation id="2048923169632968961">Hubo un problema mientras se sincronizaba la contraseña de la cuenta de trabajo en el perfil de Windows. Comunícate con el administrador.</translation> <translation id="2515346402363002066">Finalizó la sesión. Accede con la cuenta de trabajo.</translation> +<translation id="2549902055700841962">No se puede acceder a la cuenta de trabajo. Comunícate con tu administrador.</translation> <translation id="2566603360883977759">No puedes acceder con este correo electrónico. Vuelve a intentarlo con la cuenta del trabajo o de una institución educativa. Si aún no puede acceder, comunícate con el administrador.</translation> <translation id="2844349213149998955">No se permite el acceso con una cuenta personal en este dispositivo. Usa una cuenta de trabajo para acceder.</translation> <translation id="3217145568844727893">Si continúas sin ingresar la contraseña actual de Windows, es posible que pierdas los datos que se encuentran en este dispositivo de forma permanente.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb index fe55576..6d5ec69 100644 --- a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb +++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb
@@ -5,6 +5,7 @@ <translation id="1383286653814676580">用于运行 Google Credential Provider 登录页面。</translation> <translation id="2048923169632968961">将您的工作帐号密码同步到 Windows 个人资料时出现问题。请联系您的管理员。</translation> <translation id="2515346402363002066">您的会话已过期。请使用您的工作帐号登录。</translation> +<translation id="2549902055700841962">无法登录您的工作帐号。请与管理员联系。</translation> <translation id="2566603360883977759">不允许使用此电子邮件地址登录。请使用您的工作帐号或学校帐号重试。如果您仍无法登录,请与您的管理员联系。</translation> <translation id="2844349213149998955">不允许使用个人帐号登录此设备。请使用工作帐号登录。</translation> <translation id="3217145568844727893">请输入您当前的 Windows 密码再继续操作,否则此设备上的数据可能会永久丢失。</translation>
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 2b624b04..31b5dee 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -527,7 +527,7 @@ "//components/browser_ui/widget/android:java", "//components/crash/android:crashpad_main", "//components/games/core/test:test_support", - "//components/metrics:demographics_test_support", + "//components/metrics/demographics:test_support", "//components/ukm:ukm_test_helper", # TODO(crbug.com/961849): This is needed for ShellManager which is what @@ -774,7 +774,7 @@ "//components/enterprise:test_support", "//components/error_page/content/browser", "//components/feature_engagement/test:test_support", - "//components/metrics:demographics_test_support", + "//components/metrics/demographics:test_support", "//components/nacl/common:buildflags", "//components/offline_items_collection/core/test_support", "//components/optimization_guide:test_support",
diff --git a/chrome/test/base/testing_profile.cc b/chrome/test/base/testing_profile.cc index 4574f3d..a00b35b 100644 --- a/chrome/test/base/testing_profile.cc +++ b/chrome/test/base/testing_profile.cc
@@ -54,6 +54,7 @@ #include "chrome/browser/web_data_service_factory.h" #include "chrome/common/buildflags.h" #include "chrome/common/chrome_constants.h" +#include "chrome/common/chrome_features.h" #include "chrome/common/chrome_paths_internal.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/pref_names.h" @@ -185,6 +186,26 @@ const char TestingProfile::kTestUserProfileDir[] = "Default"; #endif +// static +bool TestingProfile::SetScopedFeatureListForEphemeralGuestProfiles( + base::test::ScopedFeatureList& scoped_feature_list, + bool enabled) { +// This feature is now only supported on Windows, Linux, and Mac. +#if defined(OS_WIN) || defined(OS_MAC) || \ + (defined(OS_LINUX) && !defined(OS_CHROMEOS)) + if (enabled) + scoped_feature_list.InitAndEnableFeature( + features::kEnableEphemeralGuestProfilesOnDesktop); + else + scoped_feature_list.InitAndDisableFeature( + features::kEnableEphemeralGuestProfilesOnDesktop); + return true; +#else + return false; +#endif // defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX) && + // !defined(OS_CHROMEOS)) +} + TestingProfile::TestingProfile() : TestingProfile(base::FilePath()) {} TestingProfile::TestingProfile(const base::FilePath& path)
diff --git a/chrome/test/base/testing_profile.h b/chrome/test/base/testing_profile.h index 3c36d16..ad8383f 100644 --- a/chrome/test/base/testing_profile.h +++ b/chrome/test/base/testing_profile.h
@@ -14,6 +14,7 @@ #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/optional.h" +#include "base/test/scoped_feature_list.h" #include "build/build_config.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/buildflags.h" @@ -80,6 +81,15 @@ // always "Default", because they are runnining without logged-in user. static const char kTestUserProfileDir[]; + // Sets the feature list to enable/disable ephemeral Guest profiles. + // Returns true if ephemeral Guest profiles are supported on the platform and + // feature list is initialized. + // TODO(https://crbug.com/1125474): Expand to cover ChromeOS when ChromeOS + // code supports ephemeral Guest profiles. + static bool SetScopedFeatureListForEphemeralGuestProfiles( + base::test::ScopedFeatureList& scoped_feature_list, + bool enabled); + // Default constructor that cannot be used with multi-profiles. TestingProfile();
diff --git a/chrome/test/data/extensions/csp/frame-ancestors-none.html b/chrome/test/data/extensions/csp/frame-ancestors-none.html new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/chrome/test/data/extensions/csp/frame-ancestors-none.html
diff --git a/chrome/test/data/extensions/csp/frame-ancestors-none.html.mock-http-headers b/chrome/test/data/extensions/csp/frame-ancestors-none.html.mock-http-headers new file mode 100644 index 0000000..ccaa8aba --- /dev/null +++ b/chrome/test/data/extensions/csp/frame-ancestors-none.html.mock-http-headers
@@ -0,0 +1,3 @@ +HTTP/1.1 200 OK +Content-Type: text/html +Content-Security-Policy: frame-ancestors 'none'
diff --git a/chrome/test/data/webui/history/history_toolbar_test.js b/chrome/test/data/webui/history/history_toolbar_test.js index ce056e9..25ea552 100644 --- a/chrome/test/data/webui/history/history_toolbar_test.js +++ b/chrome/test/data/webui/history/history_toolbar_test.js
@@ -90,11 +90,4 @@ }); }); - test('menu promo hides when drawer is opened', function() { - app.showMenuPromo_ = true; - app.hasDrawer_ = true; - flush(); - toolbar.$['main-toolbar'].$$('#menuButton').click(); - assertFalse(app.showMenuPromo_); - }); });
diff --git a/chrome/test/data/webui/history/test_browser_service.js b/chrome/test/data/webui/history/test_browser_service.js index 924d145..64d8acd 100644 --- a/chrome/test/data/webui/history/test_browser_service.js +++ b/chrome/test/data/webui/history/test_browser_service.js
@@ -94,9 +94,6 @@ } /** @override */ - menuPromoShown() {} - - /** @override */ navigateToUrl(url, target, e) { this.methodCalled('navigateToUrl', url); }
diff --git a/chrome/test/data/webui/settings/password_check_test.js b/chrome/test/data/webui/settings/password_check_test.js index e466ae7..4e7cc9a3 100644 --- a/chrome/test/data/webui/settings/password_check_test.js +++ b/chrome/test/data/webui/settings/password_check_test.js
@@ -122,7 +122,9 @@ const listElements = isCompromised ? checkPasswordSection.$.leakedPasswordList : checkPasswordSection.$.weakPasswordList; - assertEquals(listElements.items.length, insecureCredentials.length); + assertEquals( + listElements.querySelector('dom-repeat').items.length, + insecureCredentials.length); const nodes = checkPasswordSection.shadowRoot.querySelectorAll( 'password-check-list-item'); for (let index = 0; index < insecureCredentials.length; ++index) { @@ -1330,7 +1332,7 @@ await passwordManager.whenCalled('getCompromisedCredentials'); flush(); const listElements = checkPasswordSection.$.leakedPasswordList; - const node = listElements.children[1]; + const node = listElements.children[0]; // Open the more actions menu and click 'Edit Password'. node.$.more.click(); @@ -1358,7 +1360,7 @@ await passwordManager.whenCalled('getCompromisedCredentials'); flush(); const listElements = checkPasswordSection.$.leakedPasswordList; - const node = listElements.children[1]; + const node = listElements.children[0]; // Open the more actions menu and click 'Edit Password'. node.$.more.click(); @@ -1443,7 +1445,7 @@ flush(); const listElements = checkPasswordSection.$.leakedPasswordList; - const node = listElements.children[1]; + const node = listElements.children[0]; assertEquals('password', node.$.insecurePassword.type); assertNotEquals('test4', node.$.insecurePassword.value); @@ -1480,7 +1482,7 @@ flush(); const listElements = checkPasswordSection.$.leakedPasswordList; - const node = listElements.children[1]; + const node = listElements.children[0]; assertEquals('password', node.$.insecurePassword.type); assertNotEquals('test4', node.$.insecurePassword.value); @@ -1501,7 +1503,7 @@ await passwordManager.whenCalled('getCompromisedCredentials'); flush(); const listElements = checkPasswordSection.$.leakedPasswordList; - const passwordCheckListItem = listElements.children[1]; + const passwordCheckListItem = listElements.children[0]; assertFalse(isElementVisible(passwordCheckListItem.$$('#alreadyChanged'))); passwordCheckListItem.$$('#changePasswordButton').click(); @@ -1520,7 +1522,7 @@ flush(); const listElements = checkPasswordSection.$.leakedPasswordList; - const node = listElements.children[1]; + const node = listElements.children[0]; // Clicking change password to show "Already changed password" link node.$$('#changePasswordButton').click(); flush(); @@ -1549,7 +1551,7 @@ flush(); const listElements = checkPasswordSection.$.leakedPasswordList; - const node = listElements.children[1]; + const node = listElements.children[0]; // Open the more actions menu and click 'Show Password'. node.$.more.click();
diff --git a/chrome/test/data/webui/settings/people_page_sync_page_test.js b/chrome/test/data/webui/settings/people_page_sync_page_test.js index a84a7007..8f09e01b 100644 --- a/chrome/test/data/webui/settings/people_page_sync_page_test.js +++ b/chrome/test/data/webui/settings/people_page_sync_page_test.js
@@ -217,6 +217,12 @@ encryptionDescription.click(); assertTrue(encryptionCollapse.opened); + // Push sync prefs with |prefs.encryptAllData| unchanged. The encryption + // menu should not collapse. + webUIListenerCallback('sync-prefs-changed', getSyncAllPrefs()); + flush(); + assertTrue(encryptionCollapse.opened); + encryptionDescription.click(); assertFalse(encryptionCollapse.opened);
diff --git a/chrome/test/data/webui/settings/safety_check_chrome_cleaner_test.js b/chrome/test/data/webui/settings/safety_check_chrome_cleaner_test.js index 62714c1c..e27e367 100644 --- a/chrome/test/data/webui/settings/safety_check_chrome_cleaner_test.js +++ b/chrome/test/data/webui/settings/safety_check_chrome_cleaner_test.js
@@ -196,7 +196,7 @@ return chromeCleanupBrowserProxy.whenCalled('restartComputer'); }); - test('chromeCleanerScanningForUwsUiTest', function() { + test('chromeCleanerScanningForUwsUiTest', async function() { fireSafetyCheckChromeCleanerEvent( SafetyCheckChromeCleanerStatus.SCANNING_FOR_UWS); flush(); @@ -208,12 +208,15 @@ }); // User clicks the row. page.$$('#safetyCheckChild').click(); - // TODO(crbug.com/1087263): Ensure UMA is logged. + // Ensure UMA is logged. + await expectLogging( + SafetyCheckInteractions.SAFETY_CHECK_CHROME_CLEANER_CARET_NAVIGATION, + 'Settings.SafetyCheck.ChromeCleanerCaretNavigation'); // Ensure the correct Settings page is shown. assertEquals(routes.CHROME_CLEANUP, Router.getInstance().getCurrentRoute()); }); - test('chromeCleanerRemovingUwsUiTest', function() { + test('chromeCleanerRemovingUwsUiTest', async function() { fireSafetyCheckChromeCleanerEvent( SafetyCheckChromeCleanerStatus.REMOVING_UWS); flush(); @@ -225,7 +228,10 @@ }); // User clicks the row. page.$$('#safetyCheckChild').click(); - // TODO(crbug.com/1087263): Ensure UMA is logged. + // Ensure UMA is logged. + await expectLogging( + SafetyCheckInteractions.SAFETY_CHECK_CHROME_CLEANER_CARET_NAVIGATION, + 'Settings.SafetyCheck.ChromeCleanerCaretNavigation'); // Ensure the correct Settings page is shown. assertEquals(routes.CHROME_CLEANUP, Router.getInstance().getCurrentRoute()); }); @@ -242,7 +248,7 @@ }); }); - test('chromeCleanerErrorUiTest', function() { + test('chromeCleanerErrorUiTest', async function() { fireSafetyCheckChromeCleanerEvent(SafetyCheckChromeCleanerStatus.ERROR); flush(); assertSafetyCheckChild({ @@ -253,12 +259,15 @@ }); // User clicks the row. page.$$('#safetyCheckChild').click(); - // TODO(crbug.com/1087263): Ensure UMA is logged. + // Ensure UMA is logged. + await expectLogging( + SafetyCheckInteractions.SAFETY_CHECK_CHROME_CLEANER_CARET_NAVIGATION, + 'Settings.SafetyCheck.ChromeCleanerCaretNavigation'); // Ensure the correct Settings page is shown. assertEquals(routes.CHROME_CLEANUP, Router.getInstance().getCurrentRoute()); }); - test('chromeCleanerNoUwsFoundWithTimestampUiTest', function() { + test('chromeCleanerNoUwsFoundWithTimestampUiTest', async function() { fireSafetyCheckChromeCleanerEvent( SafetyCheckChromeCleanerStatus.NO_UWS_FOUND_WITH_TIMESTAMP); flush(); @@ -270,12 +279,15 @@ }); // User clicks the row. page.$$('#safetyCheckChild').click(); - // TODO(crbug.com/1087263): Ensure UMA is logged. + // Ensure UMA is logged. + await expectLogging( + SafetyCheckInteractions.SAFETY_CHECK_CHROME_CLEANER_CARET_NAVIGATION, + 'Settings.SafetyCheck.ChromeCleanerCaretNavigation'); // Ensure the correct Settings page is shown. assertEquals(routes.CHROME_CLEANUP, Router.getInstance().getCurrentRoute()); }); - test('chromeCleanerNoUwsFoundWithoutTimestampUiTest', function() { + test('chromeCleanerNoUwsFoundWithoutTimestampUiTest', async function() { fireSafetyCheckChromeCleanerEvent( SafetyCheckChromeCleanerStatus.NO_UWS_FOUND_WITHOUT_TIMESTAMP); flush(); @@ -287,7 +299,10 @@ }); // User clicks the row. page.$$('#safetyCheckChild').click(); - // TODO(crbug.com/1087263): Ensure UMA is logged. + // Ensure UMA is logged. + await expectLogging( + SafetyCheckInteractions.SAFETY_CHECK_CHROME_CLEANER_CARET_NAVIGATION, + 'Settings.SafetyCheck.ChromeCleanerCaretNavigation'); // Ensure the correct Settings page is shown. assertEquals(routes.CHROME_CLEANUP, Router.getInstance().getCurrentRoute()); });
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM index 696f4d3..82ee4086a 100644 --- a/chromeos/CHROMEOS_LKGM +++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@ -13522.0.0 \ No newline at end of file +13536.0.0 \ No newline at end of file
diff --git a/chromeos/components/account_manager/account_manager.cc b/chromeos/components/account_manager/account_manager.cc index f6fceb8..5bea988 100644 --- a/chromeos/components/account_manager/account_manager.cc +++ b/chromeos/components/account_manager/account_manager.cc
@@ -635,15 +635,6 @@ it->second.token != kActiveDirectoryDummyToken; } -bool AccountManager::HasDummyGaiaTokenSync( - const AccountKey& account_key) const { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK_EQ(init_state_, InitializationState::kInitialized); - - auto it = accounts_.find(account_key); - return it != accounts_.end() && it->second.token == kInvalidToken; -} - void AccountManager::HasDummyGaiaToken( const AccountKey& account_key, base::OnceCallback<void(bool)> callback) const { @@ -661,8 +652,8 @@ base::OnceCallback<void(const std::vector<std::pair<Account, bool>>&)> callback) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - // TODO(anastasiian): Remove this DCHECK and call |RunOnInitialization| - // instead. + // TODO(https://crbug.com/1135980): Remove this DCHECK and call + // |RunOnInitialization| instead. DCHECK_EQ(init_state_, InitializationState::kInitialized); std::vector<std::pair<Account, bool>> accounts_list;
diff --git a/chromeos/components/account_manager/account_manager.h b/chromeos/components/account_manager/account_manager.h index 116b6ef..85fde88 100644 --- a/chromeos/components/account_manager/account_manager.h +++ b/chromeos/components/account_manager/account_manager.h
@@ -241,10 +241,6 @@ // initialized yet. bool IsTokenAvailable(const AccountKey& account_key) const; - // Returns true if the token stored against |account_key| is a dummy Gaia - // token. - bool HasDummyGaiaTokenSync(const AccountKey& account_key) const; - // Calls the |callback| with true if the token stored against |account_key| is // a dummy Gaia token. void HasDummyGaiaToken(const AccountKey& account_key,
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_as.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_as.xtb index 7e50d65..3a0b3d3 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_as.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_as.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="as"> <translation id="1276998909102132017">গেলাৰীৰ প্ৰতিচ্ছবিসমূহ</translation> <translation id="1430915738399379752">প্ৰিণ্ট কৰক</translation> +<translation id="1473110567575736769">৩ ছেকেণ্ডৰ টাইমাৰ</translation> <translation id="1620510694547887537">কেমেৰা</translation> <translation id="1627744224761163218">৪ x ৪</translation> <translation id="1664224225747386870">একো ৰেকৰ্ড কৰা নহ'ল</translation> @@ -30,6 +31,7 @@ <translation id="3517926952904427380">প’ৰ্ট্ৰেইট ফট’ ল’ব নোৱাৰিলে</translation> <translation id="3569311554794739032">আপুনি সঁচাকৈয়ে <ph name="FILE" /> আঁতৰাবলৈ বিচাৰে বুলি নিশ্চিতনে?</translation> <translation id="3810838688059735925">ভিডিঅ’</translation> +<translation id="4000398125663085899">নতুন ফট’ আৰু ভিডিঅ’ এতিয়া Files এপ্টোৰ এটা ফ’ল্ডাৰত ছেভ কৰা হ’ব: মোৰ ফাইল > কেমেৰা</translation> <translation id="4118525110028899586">ৰেকৰ্ডিং পজ কৰক</translation> <translation id="4279490309300973883">প্ৰতিবিম্বকৰণ</translation> <translation id="4329152592498422850">বৰ্গাকাৰ ফট' ল'বলৈ সলনি কৰক</translation> @@ -62,6 +64,7 @@ <translation id="6965382102122355670">ঠিক আছে</translation> <translation id="698156982839284926">৩ ছেকেণ্ড</translation> <translation id="712848772518857951">আপুনি সঁচাকৈয়ে <ph name="COUNT" />টা বস্তু আঁতৰাবলৈ বিচাৰেনে?</translation> +<translation id="7134221860976209830">১০ ছেকেণ্ডৰ টাইমাৰ</translation> <translation id="7243947652761655814">ভিডিঅ’ৰ ৰিজ’লিউশ্বন</translation> <translation id="7337660886763914220">ফাইল ছিষ্টেমৰ আসোঁৱাহ।</translation> <translation id="7557677699350329807">পৰৱৰ্তী কেমেৰালৈ সলনি কৰক</translation>
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_es-419.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_es-419.xtb index 2f4c31b..228b7af8 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_es-419.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_es-419.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="es-419"> <translation id="1276998909102132017">Imágenes de la galería</translation> <translation id="1430915738399379752">Imprimir</translation> +<translation id="1473110567575736769">Temporizador de 3 segundos</translation> <translation id="1620510694547887537">Cámara</translation> <translation id="1627744224761163218">4 × 4</translation> <translation id="1664224225747386870">No se grabaron datos</translation> @@ -30,6 +31,7 @@ <translation id="3517926952904427380">No es posible cambiar al modo vertical para tomar fotos.</translation> <translation id="3569311554794739032">¿Confirmas que quieres quitar <ph name="FILE" />?</translation> <translation id="3810838688059735925">Video</translation> +<translation id="4000398125663085899">Los videos y fotos nuevos ahora se guardarán en una carpeta de la app de Archivos: Mis archivos > Cámara</translation> <translation id="4118525110028899586">Pausar la grabación</translation> <translation id="4279490309300973883">Duplicando</translation> <translation id="4329152592498422850">Cambiar al modo para tomar fotos cuadradas</translation> @@ -62,6 +64,7 @@ <translation id="6965382102122355670">Aceptar</translation> <translation id="698156982839284926">3 segundos</translation> <translation id="712848772518857951">¿Confirmas que deseas quitar <ph name="COUNT" /> elementos?</translation> +<translation id="7134221860976209830">Temporizador de 10 segundos</translation> <translation id="7243947652761655814">Resolución de video</translation> <translation id="7337660886763914220">Errores en el sistema de archivos</translation> <translation id="7557677699350329807">Cambiar a la siguiente cámara</translation>
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb index 90fa487..03ae8e5d 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="zh-CN"> <translation id="1276998909102132017">图库图片</translation> <translation id="1430915738399379752">打印</translation> +<translation id="1473110567575736769">3 秒计时器</translation> <translation id="1620510694547887537">摄像头</translation> <translation id="1627744224761163218">4 x 4</translation> <translation id="1664224225747386870">未记录任何数据</translation> @@ -30,6 +31,7 @@ <translation id="3517926952904427380">无法拍摄纵向照片</translation> <translation id="3569311554794739032">确定要移除“<ph name="FILE" />”吗?</translation> <translation id="3810838688059735925">视频</translation> +<translation id="4000398125663085899">现在,新照片和视频会保存到“文件”应用中的文件夹:“我的文件”>“相机”</translation> <translation id="4118525110028899586">暂停录制</translation> <translation id="4279490309300973883">正在镜像</translation> <translation id="4329152592498422850">切换到正方形照片拍摄模式</translation> @@ -62,6 +64,7 @@ <translation id="6965382102122355670">确定</translation> <translation id="698156982839284926">3 秒</translation> <translation id="712848772518857951">确定要移除这 <ph name="COUNT" /> 个文件吗?</translation> +<translation id="7134221860976209830">10 秒计时器</translation> <translation id="7243947652761655814">视频分辨率</translation> <translation id="7337660886763914220">文件系统出错。</translation> <translation id="7557677699350329807">切换到下一个摄像头</translation>
diff --git a/chromeos/dbus/permission_broker/fake_permission_broker_client.cc b/chromeos/dbus/permission_broker/fake_permission_broker_client.cc index a916321..d9b2c50 100644 --- a/chromeos/dbus/permission_broker/fake_permission_broker_client.cc +++ b/chromeos/dbus/permission_broker/fake_permission_broker_client.cc
@@ -85,14 +85,6 @@ base::ThreadTaskRunnerHandle::Get())); } -void FakePermissionBrokerClient::OpenPathWithDroppedPrivileges( - const std::string& path, - uint32_t allowed_interfaces_mask, - OpenPathCallback callback, - ErrorCallback error_callback) { - OpenPath(path, std::move(callback), std::move(error_callback)); -} - void FakePermissionBrokerClient::ClaimDevicePath( const std::string& path, uint32_t allowed_interfaces_mask,
diff --git a/chromeos/dbus/permission_broker/fake_permission_broker_client.h b/chromeos/dbus/permission_broker/fake_permission_broker_client.h index 7662f04a..ffa9cdb 100644 --- a/chromeos/dbus/permission_broker/fake_permission_broker_client.h +++ b/chromeos/dbus/permission_broker/fake_permission_broker_client.h
@@ -31,10 +31,6 @@ void OpenPath(const std::string& path, OpenPathCallback callback, ErrorCallback error_callback) override; - void OpenPathWithDroppedPrivileges(const std::string& path, - uint32_t allowed_interfaces_mask, - OpenPathCallback callback, - ErrorCallback error_callback) override; void ClaimDevicePath(const std::string& path, uint32_t allowed_interfaces_mask, int lifeline_fd,
diff --git a/chromeos/dbus/permission_broker/permission_broker_client.cc b/chromeos/dbus/permission_broker/permission_broker_client.cc index 69844c39..2d724f9 100644 --- a/chromeos/dbus/permission_broker/permission_broker_client.cc +++ b/chromeos/dbus/permission_broker/permission_broker_client.cc
@@ -20,7 +20,6 @@ using permission_broker::kCheckPathAccess; using permission_broker::kClaimDevicePath; using permission_broker::kOpenPath; -using permission_broker::kOpenPathWithDroppedPrivileges; using permission_broker::kPermissionBrokerInterface; using permission_broker::kPermissionBrokerServiceName; using permission_broker::kPermissionBrokerServicePath; @@ -74,24 +73,6 @@ std::move(error_callback))); } - void OpenPathWithDroppedPrivileges(const std::string& path, - uint32_t allowed_interfaces_mask, - OpenPathCallback callback, - ErrorCallback error_callback) override { - dbus::MethodCall method_call(kPermissionBrokerInterface, - kOpenPathWithDroppedPrivileges); - dbus::MessageWriter writer(&method_call); - writer.AppendString(path); - writer.AppendUint32(allowed_interfaces_mask); - proxy_->CallMethodWithErrorCallback( - &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, - base::BindOnce(&PermissionBrokerClientImpl::OnOpenPathResponse, - weak_ptr_factory_.GetWeakPtr(), std::move(callback)), - base::BindOnce(&PermissionBrokerClientImpl::OnError, - weak_ptr_factory_.GetWeakPtr(), - std::move(error_callback))); - } - void ClaimDevicePath(const std::string& path, uint32_t allowed_interfaces_mask, int lifeline_fd,
diff --git a/chromeos/dbus/permission_broker/permission_broker_client.h b/chromeos/dbus/permission_broker/permission_broker_client.h index 9bc1179f..b0504fb 100644 --- a/chromeos/dbus/permission_broker/permission_broker_client.h +++ b/chromeos/dbus/permission_broker/permission_broker_client.h
@@ -67,19 +67,6 @@ OpenPathCallback callback, ErrorCallback error_callback) = 0; - // OpenPathWithDroppedPrivileges requests that the permission broker open - // the device node identified by |path| and set of USB interfaces that can be - // claimed |allowed_interfaces_mask|, returning the resulting file descriptor. - // The interface number 0 corresponds to the LSB of |allowed_interfaces_mask|. - // A device which has an ADB interface and other interfaces for Camera or - // Storage may be opened purely as an ADB device using a mask that zeros out - // the Camera and Storage interface number bit positions. - // One of |callback| or |error_callback| is called. - virtual void OpenPathWithDroppedPrivileges(const std::string& path, - uint32_t allowed_interfaces_mask, - OpenPathCallback callback, - ErrorCallback error_callback) = 0; - // ClaimDevicePath requests that the permission broker open // the device node identified by |path| and set of USB interfaces that can be // claimed |allowed_interfaces_mask|, returning the resulting file descriptor.
diff --git a/chromeos/profiles/atom.afdo.newest.txt b/chromeos/profiles/atom.afdo.newest.txt index d6463efe..98b93f5 100644 --- a/chromeos/profiles/atom.afdo.newest.txt +++ b/chromeos/profiles/atom.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-atom-88-4277.0-1602497703-benchmark-88.0.4288.0-r1-redacted.afdo.xz +chromeos-chrome-amd64-atom-88-4277.0-1602497703-benchmark-88.0.4293.0-r1-redacted.afdo.xz
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt index 480eb24e..2edb4eb7 100644 --- a/chromeos/profiles/bigcore.afdo.newest.txt +++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-bigcore-88-4277.0-1602498827-benchmark-88.0.4288.0-r1-redacted.afdo.xz +chromeos-chrome-amd64-bigcore-88-4277.0-1602498827-benchmark-88.0.4293.0-r1-redacted.afdo.xz
diff --git a/chromeos/strings/chromeos_strings_am.xtb b/chromeos/strings/chromeos_strings_am.xtb index c44a6109..7e94c993 100644 --- a/chromeos/strings/chromeos_strings_am.xtb +++ b/chromeos/strings/chromeos_strings_am.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">ቆሟል - ውፅዓት ሞልቷል</translation> <translation id="7162487448488904999">ማዕከለ-ስዕላት</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">የፋይል አይነት</translation> <translation id="7561454561030345039">ይህ ቅንብር በአስተዳዳሪዎ የሚቀናበር ነው።</translation> <translation id="7658239707568436148">ይቅር</translation> <translation id="7690294790491645610">አዲስ የይለፍ ቃል ያረጋግጡ</translation>
diff --git a/chromeos/strings/chromeos_strings_ar.xtb b/chromeos/strings/chromeos_strings_ar.xtb index d5a52c3..e2194de 100644 --- a/chromeos/strings/chromeos_strings_ar.xtb +++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">توقّفت الطابعة - دُرج الإخراج ممتلئ</translation> <translation id="7162487448488904999">معرض الصور</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">نوع الملف</translation> <translation id="7561454561030345039">يتولّى مشرفك إدارة هذا الإجراء.</translation> <translation id="7658239707568436148">إلغاء</translation> <translation id="7690294790491645610">تأكيد كلمة المرور الجديدة</translation>
diff --git a/chromeos/strings/chromeos_strings_bg.xtb b/chromeos/strings/chromeos_strings_bg.xtb index aabf6ba..94145a63 100644 --- a/chromeos/strings/chromeos_strings_bg.xtb +++ b/chromeos/strings/chromeos_strings_bg.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">Срокът за промяна на паролата е изтекъл</translation> <translation id="2049639323467105390">Това устройство се управлява от <ph name="DOMAIN" />.</translation> <translation id="2161394479394250669">Анулиране на заданието за отпечатване</translation> +<translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> <translation id="2338501278241028356">Включете Bluetooth, за да бъдат открити устройствата в близост</translation> <translation id="2375079107209812402">Остават <ph name="ATTEMPTS_LEFT" /> опита</translation> <translation id="2517472476991765520">Сканиране</translation> @@ -81,6 +82,7 @@ <translation id="6747215703636344499">Спряло – изходният контейнер е пълен</translation> <translation id="7162487448488904999">Галерия</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Файлов тип</translation> <translation id="7561454561030345039">Това действие се управлява от администратора ви</translation> <translation id="7658239707568436148">Отказ</translation> <translation id="7690294790491645610">Потвърдете новата парола</translation>
diff --git a/chromeos/strings/chromeos_strings_bn.xtb b/chromeos/strings/chromeos_strings_bn.xtb index c6960c58..fe7d09d1 100644 --- a/chromeos/strings/chromeos_strings_bn.xtb +++ b/chromeos/strings/chromeos_strings_bn.xtb
@@ -80,6 +80,7 @@ <translation id="6747215703636344499">বন্ধ হয়ে গেছে - আউটপুট ট্রে ভর্তি হয়ে গেছে</translation> <translation id="7162487448488904999">গ্যালারি</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">ফাইলের প্রকার</translation> <translation id="7561454561030345039">এই কাজটি আপনার অ্যাডমিনিস্ট্রেটর ম্যানেজ করে</translation> <translation id="7658239707568436148">বাতিল</translation> <translation id="7690294790491645610">নতুন পাসওয়ার্ড নিশ্চিত করুন</translation>
diff --git a/chromeos/strings/chromeos_strings_bs.xtb b/chromeos/strings/chromeos_strings_bs.xtb index e54f0c2..9842b87 100644 --- a/chromeos/strings/chromeos_strings_bs.xtb +++ b/chromeos/strings/chromeos_strings_bs.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Zaustavljeno – izlaz je pun</translation> <translation id="7162487448488904999">Galerija</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Vrsta datoteke</translation> <translation id="7561454561030345039">Ovom radnjom upravlja vaš administrator</translation> <translation id="7658239707568436148">Otkaži</translation> <translation id="7690294790491645610">Potvrdite novu lozinku</translation>
diff --git a/chromeos/strings/chromeos_strings_ca.xtb b/chromeos/strings/chromeos_strings_ca.xtb index 130f8c7..886c3260 100644 --- a/chromeos/strings/chromeos_strings_ca.xtb +++ b/chromeos/strings/chromeos_strings_ca.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">S'ha aturat: safata de sortida plena</translation> <translation id="7162487448488904999">Galeria</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Tipus de fitxer</translation> <translation id="7561454561030345039">El teu administrador gestiona aquesta acció</translation> <translation id="7658239707568436148">Cancel·la</translation> <translation id="7690294790491645610">Confirma la contrasenya nova</translation>
diff --git a/chromeos/strings/chromeos_strings_cs.xtb b/chromeos/strings/chromeos_strings_cs.xtb index 233c083f..e7aab84 100644 --- a/chromeos/strings/chromeos_strings_cs.xtb +++ b/chromeos/strings/chromeos_strings_cs.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Zastaveno – výstupní zásobník je plný</translation> <translation id="7162487448488904999">Galerie</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Typ souboru</translation> <translation id="7561454561030345039">Tuto akci spravuje administrátor</translation> <translation id="7658239707568436148">Zrušit</translation> <translation id="7690294790491645610">Potvrďte nové heslo</translation>
diff --git a/chromeos/strings/chromeos_strings_da.xtb b/chromeos/strings/chromeos_strings_da.xtb index 56d3519d..cecd1dd 100644 --- a/chromeos/strings/chromeos_strings_da.xtb +++ b/chromeos/strings/chromeos_strings_da.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">Adgangskoden mangler at blive ændret</translation> <translation id="2049639323467105390">Denne enhed administreres af <ph name="DOMAIN" />.</translation> <translation id="2161394479394250669">Annuller udskriftsjob</translation> +<translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> <translation id="2338501278241028356">Slå Bluetooth til for at opdage enheder i nærheden</translation> <translation id="2375079107209812402"><ph name="ATTEMPTS_LEFT" /> forsøg tilbage</translation> <translation id="2517472476991765520">Scan</translation> @@ -80,6 +81,7 @@ <translation id="6747215703636344499">Stoppet – Fuld udskriftsbakke</translation> <translation id="7162487448488904999">Galleri</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Filtype</translation> <translation id="7561454561030345039">Denne handling administreres af din administrator</translation> <translation id="7658239707568436148">Annuller</translation> <translation id="7690294790491645610">Bekræft den nye adgangskode</translation>
diff --git a/chromeos/strings/chromeos_strings_de.xtb b/chromeos/strings/chromeos_strings_de.xtb index d660ad6c..1ea061d 100644 --- a/chromeos/strings/chromeos_strings_de.xtb +++ b/chromeos/strings/chromeos_strings_de.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Angehalten – Ausgabefach ist voll</translation> <translation id="7162487448488904999">Galerie</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Dateityp</translation> <translation id="7561454561030345039">Diese Aktion wird von Ihrem Administrator verwaltet</translation> <translation id="7658239707568436148">Abbrechen</translation> <translation id="7690294790491645610">Neues Passwort bestätigen</translation>
diff --git a/chromeos/strings/chromeos_strings_el.xtb b/chromeos/strings/chromeos_strings_el.xtb index 1990b311..b02da08 100644 --- a/chromeos/strings/chromeos_strings_el.xtb +++ b/chromeos/strings/chromeos_strings_el.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Διακοπή - Ο δίσκος εξόδου είναι γεμάτος</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Τύπος αρχείου</translation> <translation id="7561454561030345039">Η διαχείριση αυτής της ενέργειας γίνεται από τον διαχειριστή σας.</translation> <translation id="7658239707568436148">Ακύρωση</translation> <translation id="7690294790491645610">Επιβεβαίωση νέου κωδικού πρόσβασης</translation>
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb index 6640728..536b0cb 100644 --- a/chromeos/strings/chromeos_strings_en-GB.xtb +++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Stopped – output full</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">File type</translation> <translation id="7561454561030345039">This action is managed by your administrator</translation> <translation id="7658239707568436148">Cancel</translation> <translation id="7690294790491645610">Confirm new password</translation>
diff --git a/chromeos/strings/chromeos_strings_es-419.xtb b/chromeos/strings/chromeos_strings_es-419.xtb index 139f48f..007a798 100644 --- a/chromeos/strings/chromeos_strings_es-419.xtb +++ b/chromeos/strings/chromeos_strings_es-419.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Se detuvo: la bandeja de salida está llena</translation> <translation id="7162487448488904999">Galería</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Tipo de archivo</translation> <translation id="7561454561030345039">El administrador controla esta acción</translation> <translation id="7658239707568436148">Cancelar</translation> <translation id="7690294790491645610">Confirmar contraseña nueva</translation>
diff --git a/chromeos/strings/chromeos_strings_es.xtb b/chromeos/strings/chromeos_strings_es.xtb index e4eaed2..87876c62 100644 --- a/chromeos/strings/chromeos_strings_es.xtb +++ b/chromeos/strings/chromeos_strings_es.xtb
@@ -80,6 +80,7 @@ <translation id="6747215703636344499">Detenido: bandeja de salida llena</translation> <translation id="7162487448488904999">Galería</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Tipo de archivo</translation> <translation id="7561454561030345039">Esta acción la gestiona tu administrador</translation> <translation id="7658239707568436148">Cancelar</translation> <translation id="7690294790491645610">Confirma la nueva contraseña</translation>
diff --git a/chromeos/strings/chromeos_strings_et.xtb b/chromeos/strings/chromeos_strings_et.xtb index 0f65cd4..e8e9678 100644 --- a/chromeos/strings/chromeos_strings_et.xtb +++ b/chromeos/strings/chromeos_strings_et.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Peatatud – väljastussalv on täis</translation> <translation id="7162487448488904999">Galerii</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Faili tüüp</translation> <translation id="7561454561030345039">Seda toimingut haldab administraator.</translation> <translation id="7658239707568436148">Tühista</translation> <translation id="7690294790491645610">Kinnitage uus parool</translation>
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb index 686fb4e..0fc557d7 100644 --- a/chromeos/strings/chromeos_strings_fa.xtb +++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">متوقف شد - خروجی پُر است</translation> <translation id="7162487448488904999">گالری</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">نوع فایل</translation> <translation id="7561454561030345039">سرپرست شما این اقدام را مدیریت میکند</translation> <translation id="7658239707568436148">لغو</translation> <translation id="7690294790491645610">تأیید گذرواژه جدید</translation>
diff --git a/chromeos/strings/chromeos_strings_fi.xtb b/chromeos/strings/chromeos_strings_fi.xtb index 9510332..27e85a5 100644 --- a/chromeos/strings/chromeos_strings_fi.xtb +++ b/chromeos/strings/chromeos_strings_fi.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Pysähtynyt – Syöte täynnä</translation> <translation id="7162487448488904999">Galleria</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Tiedostotyyppi</translation> <translation id="7561454561030345039">Järjestelmänvalvojasi ylläpitää tätä toimintoa</translation> <translation id="7658239707568436148">Peruuta</translation> <translation id="7690294790491645610">Vahvista uusi salasana</translation>
diff --git a/chromeos/strings/chromeos_strings_fil.xtb b/chromeos/strings/chromeos_strings_fil.xtb index 4e096708..d4813a8 100644 --- a/chromeos/strings/chromeos_strings_fil.xtb +++ b/chromeos/strings/chromeos_strings_fil.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Huminto - Puno na ang output</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Uri ng file</translation> <translation id="7561454561030345039">Pinapamahalaan ng iyong administrator ang pagkilos na ito.</translation> <translation id="7658239707568436148">Kanselahin</translation> <translation id="7690294790491645610">Kumpirmahin ang bagong password</translation>
diff --git a/chromeos/strings/chromeos_strings_fr.xtb b/chromeos/strings/chromeos_strings_fr.xtb index c9626cc2..a331f2c8 100644 --- a/chromeos/strings/chromeos_strings_fr.xtb +++ b/chromeos/strings/chromeos_strings_fr.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Tâche suspendue - Bac de sortie plein</translation> <translation id="7162487448488904999">Galerie</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Type de fichier</translation> <translation id="7561454561030345039">Cette action est gérée par votre administrateur</translation> <translation id="7658239707568436148">Annuler</translation> <translation id="7690294790491645610">Confirmer le nouveau mot de passe</translation>
diff --git a/chromeos/strings/chromeos_strings_gu.xtb b/chromeos/strings/chromeos_strings_gu.xtb index 82125ee..211a8ad 100644 --- a/chromeos/strings/chromeos_strings_gu.xtb +++ b/chromeos/strings/chromeos_strings_gu.xtb
@@ -80,6 +80,7 @@ <translation id="6747215703636344499">બંધ - આઉટપુટ ભરાઈ ગયું છે</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">ફાઇલ પ્રકાર</translation> <translation id="7561454561030345039">આ ક્રિયાને તમારા વ્યવસ્થાપક દ્વારા મેનેજ કરવામાં આવે છે</translation> <translation id="7658239707568436148">રદ કરો</translation> <translation id="7690294790491645610">નવા પાસવર્ડની પુષ્ટિ કરો</translation>
diff --git a/chromeos/strings/chromeos_strings_hi.xtb b/chromeos/strings/chromeos_strings_hi.xtb index 70807ed..4b1b40e9 100644 --- a/chromeos/strings/chromeos_strings_hi.xtb +++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">बंद हो गया - आउटपुट भर गया</translation> <translation id="7162487448488904999">गैलरी</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">फ़ाइल प्रकार</translation> <translation id="7561454561030345039">इस कार्रवाई को आपका एडमिन प्रबंधित करता है</translation> <translation id="7658239707568436148">अभी नहीं</translation> <translation id="7690294790491645610">नए पासवर्ड की पुष्टि करें</translation>
diff --git a/chromeos/strings/chromeos_strings_hr.xtb b/chromeos/strings/chromeos_strings_hr.xtb index fd63098..4027b18 100644 --- a/chromeos/strings/chromeos_strings_hr.xtb +++ b/chromeos/strings/chromeos_strings_hr.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Zaustavljeno – izlaz je pun</translation> <translation id="7162487448488904999">Galerija</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Vrsta datoteke</translation> <translation id="7561454561030345039">Tom radnjom upravlja vaš administrator</translation> <translation id="7658239707568436148">Odustani</translation> <translation id="7690294790491645610">Potvrdite novu zaporku</translation>
diff --git a/chromeos/strings/chromeos_strings_hu.xtb b/chromeos/strings/chromeos_strings_hu.xtb index 17fc5e6..fdc49cb 100644 --- a/chromeos/strings/chromeos_strings_hu.xtb +++ b/chromeos/strings/chromeos_strings_hu.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Leállt – Megtelt a kimenet</translation> <translation id="7162487448488904999">Galéria</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Fájltípus</translation> <translation id="7561454561030345039">Ezt a műveletet a rendszergazdája kezeli.</translation> <translation id="7658239707568436148">Mégse</translation> <translation id="7690294790491645610">Új jelszó megerősítése</translation>
diff --git a/chromeos/strings/chromeos_strings_id.xtb b/chromeos/strings/chromeos_strings_id.xtb index 638aa65..582c33b 100644 --- a/chromeos/strings/chromeos_strings_id.xtb +++ b/chromeos/strings/chromeos_strings_id.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Dihentikan - Baki hasil cetak penuh</translation> <translation id="7162487448488904999">Galeri</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Jenis file</translation> <translation id="7561454561030345039">Tindakan ini dikelola oleh administrator Anda</translation> <translation id="7658239707568436148">Batal</translation> <translation id="7690294790491645610">Konfirmasi sandi baru</translation>
diff --git a/chromeos/strings/chromeos_strings_it.xtb b/chromeos/strings/chromeos_strings_it.xtb index e3a140a..c33388e4 100644 --- a/chromeos/strings/chromeos_strings_it.xtb +++ b/chromeos/strings/chromeos_strings_it.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Operazione interrotta - Vassoio di uscita pieno</translation> <translation id="7162487448488904999">Galleria</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Tipo di file</translation> <translation id="7561454561030345039">Questa azione è gestita dall'amministratore</translation> <translation id="7658239707568436148">Annulla</translation> <translation id="7690294790491645610">Conferma nuova password</translation>
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb index 38f63ed..794530e 100644 --- a/chromeos/strings/chromeos_strings_iw.xtb +++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">הפסיקה – מגש הפלט מלא</translation> <translation id="7162487448488904999">גלריה</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">סוג קובץ</translation> <translation id="7561454561030345039">הפעולה הזו מנוהלת על-ידי מנהל המערכת</translation> <translation id="7658239707568436148">ביטול</translation> <translation id="7690294790491645610">אישור הסיסמה החדשה</translation>
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb index 038e8cc..f3d98727 100644 --- a/chromeos/strings/chromeos_strings_ja.xtb +++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">停止 - 排紙トレイがいっぱいです</translation> <translation id="7162487448488904999">ギャラリー</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">ファイル形式</translation> <translation id="7561454561030345039">この操作は管理者によって管理されています</translation> <translation id="7658239707568436148">キャンセル</translation> <translation id="7690294790491645610">新しいパスワードの確認入力</translation>
diff --git a/chromeos/strings/chromeos_strings_kn.xtb b/chromeos/strings/chromeos_strings_kn.xtb index bcd503fd..308af5fa 100644 --- a/chromeos/strings/chromeos_strings_kn.xtb +++ b/chromeos/strings/chromeos_strings_kn.xtb
@@ -80,6 +80,7 @@ <translation id="6747215703636344499">ನಿಲ್ಲಿಸಲಾಗಿದೆ - ಔಟ್ಪುಟ್ ಭರ್ತಿಯಾಗಿದೆ</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">ಫೈಲ್ ಪ್ರಕಾರ</translation> <translation id="7561454561030345039">ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿರ್ವಹಿಸುತ್ತಾರೆ</translation> <translation id="7658239707568436148">ರದ್ದುಮಾಡಿ</translation> <translation id="7690294790491645610">ಹೊಸ ಪಾಸ್ವರ್ಡ್ ಖಚಿತಪಡಿಸಿ</translation>
diff --git a/chromeos/strings/chromeos_strings_ko.xtb b/chromeos/strings/chromeos_strings_ko.xtb index edae3fe..883d497 100644 --- a/chromeos/strings/chromeos_strings_ko.xtb +++ b/chromeos/strings/chromeos_strings_ko.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">중지됨 - 배지대 가득 참</translation> <translation id="7162487448488904999">갤러리</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">파일 형식</translation> <translation id="7561454561030345039">관리자가 관리하는 작업입니다.</translation> <translation id="7658239707568436148">취소</translation> <translation id="7690294790491645610">새 비밀번호 확인</translation>
diff --git a/chromeos/strings/chromeos_strings_lt.xtb b/chromeos/strings/chromeos_strings_lt.xtb index 59fb768f..5a5bb19 100644 --- a/chromeos/strings/chromeos_strings_lt.xtb +++ b/chromeos/strings/chromeos_strings_lt.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Sustabdyta – išvestis pilna</translation> <translation id="7162487448488904999">Galerija</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Failo tipas</translation> <translation id="7561454561030345039">Šį veiksmą tvarko jūsų administratorius</translation> <translation id="7658239707568436148">Atšaukti</translation> <translation id="7690294790491645610">Patvirtinkite naują slaptažodį</translation>
diff --git a/chromeos/strings/chromeos_strings_lv.xtb b/chromeos/strings/chromeos_strings_lv.xtb index e79c715..c52b47ff 100644 --- a/chromeos/strings/chromeos_strings_lv.xtb +++ b/chromeos/strings/chromeos_strings_lv.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Apturēts — izvades paliktnis ir pilns</translation> <translation id="7162487448488904999">Galerija</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Faila tips</translation> <translation id="7561454561030345039">Šo darbību pārvalda administrators</translation> <translation id="7658239707568436148">Atcelt</translation> <translation id="7690294790491645610">Apstipriniet jauno paroli</translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb index 2f089f5..20526b7 100644 --- a/chromeos/strings/chromeos_strings_ml.xtb +++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">പ്രിന്റ് ജോലി നിർത്തി - ഔട്ട്പുട്ട് നിറഞ്ഞിരിക്കുന്നു</translation> <translation id="7162487448488904999">ഗാലറി</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">ഫയല് തരം</translation> <translation id="7561454561030345039">ഈ പ്രവർത്തനം മാനേജ് ചെയ്യുന്നത് നിങ്ങളുടെ അഡ്മിനാണ്</translation> <translation id="7658239707568436148">റദ്ദാക്കൂ</translation> <translation id="7690294790491645610">പുതിയ പാസ്വേഡ് സ്ഥിരീകരിക്കുക</translation>
diff --git a/chromeos/strings/chromeos_strings_mr.xtb b/chromeos/strings/chromeos_strings_mr.xtb index 0392e32..e293828 100644 --- a/chromeos/strings/chromeos_strings_mr.xtb +++ b/chromeos/strings/chromeos_strings_mr.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">थांबले - आउटपुट भरले आहे</translation> <translation id="7162487448488904999">गॅलरी</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">फाइल प्रकार</translation> <translation id="7561454561030345039">ही कृती तुमच्या अॅडमिनिस्ट्रेटरद्वारे व्यवस्थापित केली जाते</translation> <translation id="7658239707568436148">रद्द करा</translation> <translation id="7690294790491645610">नवीन पासवर्ड कन्फर्म करा</translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb index 9d5f53c..d686d88 100644 --- a/chromeos/strings/chromeos_strings_ms.xtb +++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Dihentikan - Output penuh</translation> <translation id="7162487448488904999">Galeri</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Jenis fail</translation> <translation id="7561454561030345039">Tindakan ini diurus oleh pentadbir anda</translation> <translation id="7658239707568436148">Batal</translation> <translation id="7690294790491645610">Sahkan kata laluan baharu</translation>
diff --git a/chromeos/strings/chromeos_strings_nl.xtb b/chromeos/strings/chromeos_strings_nl.xtb index 28aaab6..c449008 100644 --- a/chromeos/strings/chromeos_strings_nl.xtb +++ b/chromeos/strings/chromeos_strings_nl.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Gestopt: uitvoer is vol</translation> <translation id="7162487448488904999">Galerij</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Bestandstype</translation> <translation id="7561454561030345039">Deze actie wordt beheerd door je beheerder</translation> <translation id="7658239707568436148">Annuleren</translation> <translation id="7690294790491645610">Nieuw wachtwoord bevestigen</translation>
diff --git a/chromeos/strings/chromeos_strings_no.xtb b/chromeos/strings/chromeos_strings_no.xtb index 7b7c3818..a9a85c2 100644 --- a/chromeos/strings/chromeos_strings_no.xtb +++ b/chromeos/strings/chromeos_strings_no.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Stoppet – utskriftsmottaket er fullt</translation> <translation id="7162487448488904999">Galleri</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Filtype</translation> <translation id="7561454561030345039">Denne handlingen administreres av administratoren</translation> <translation id="7658239707568436148">Avbryt</translation> <translation id="7690294790491645610">Bekreft det nye passordet</translation>
diff --git a/chromeos/strings/chromeos_strings_pl.xtb b/chromeos/strings/chromeos_strings_pl.xtb index 811de415..bd7a018 100644 --- a/chromeos/strings/chromeos_strings_pl.xtb +++ b/chromeos/strings/chromeos_strings_pl.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Zatrzymano – odbiornik papieru jest pełny</translation> <translation id="7162487448488904999">Galeria</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Typ pliku</translation> <translation id="7561454561030345039">Tym ustawieniem zarządza Twój administrator</translation> <translation id="7658239707568436148">Anuluj</translation> <translation id="7690294790491645610">Potwierdź nowe hasło</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-BR.xtb b/chromeos/strings/chromeos_strings_pt-BR.xtb index 514114e..d84e017 100644 --- a/chromeos/strings/chromeos_strings_pt-BR.xtb +++ b/chromeos/strings/chromeos_strings_pt-BR.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Parado (saída cheia)</translation> <translation id="7162487448488904999">Galeria</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Tipo de arquivo</translation> <translation id="7561454561030345039">Essa ação é gerenciada pelo administrador</translation> <translation id="7658239707568436148">Cancelar</translation> <translation id="7690294790491645610">Confirmar nova senha</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-PT.xtb b/chromeos/strings/chromeos_strings_pt-PT.xtb index a371aa4..735c65a 100644 --- a/chromeos/strings/chromeos_strings_pt-PT.xtb +++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Parada – Saída cheia</translation> <translation id="7162487448488904999">Galeria</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Tipo de ficheiro</translation> <translation id="7561454561030345039">Esta ação é gerida pelo seu administrador.</translation> <translation id="7658239707568436148">Cancelar</translation> <translation id="7690294790491645610">Confirmar a nova palavra-passe</translation>
diff --git a/chromeos/strings/chromeos_strings_ro.xtb b/chromeos/strings/chromeos_strings_ro.xtb index 88a5952..d60fd833 100644 --- a/chromeos/strings/chromeos_strings_ro.xtb +++ b/chromeos/strings/chromeos_strings_ro.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Oprită – Tavă de ieșire plină</translation> <translation id="7162487448488904999">Galerie</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Tip de fișier</translation> <translation id="7561454561030345039">Această setare este gestionată de administrator</translation> <translation id="7658239707568436148">Anulează</translation> <translation id="7690294790491645610">Confirmă noua parolă</translation>
diff --git a/chromeos/strings/chromeos_strings_ru.xtb b/chromeos/strings/chromeos_strings_ru.xtb index ad32742..78df0db 100644 --- a/chromeos/strings/chromeos_strings_ru.xtb +++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Печать прервана: выходной лоток заполнен</translation> <translation id="7162487448488904999">Галерея</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Тип файла</translation> <translation id="7561454561030345039">Этим действием управляет администратор.</translation> <translation id="7658239707568436148">Отмена</translation> <translation id="7690294790491645610">Введите новый пароль ещё раз</translation>
diff --git a/chromeos/strings/chromeos_strings_sk.xtb b/chromeos/strings/chromeos_strings_sk.xtb index 1af1117..0e132875 100644 --- a/chromeos/strings/chromeos_strings_sk.xtb +++ b/chromeos/strings/chromeos_strings_sk.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">Uplynul termín zmeny hesla</translation> <translation id="2049639323467105390">Toto zariadenie je spravované doménou <ph name="DOMAIN" />.</translation> <translation id="2161394479394250669">Zrušiť tlačovú úlohu</translation> +<translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> <translation id="2338501278241028356">Ak chcete nájsť zariadenia v okolí, zapnite Bluetooth</translation> <translation id="2375079107209812402">Zostávajúce pokusy: <ph name="ATTEMPTS_LEFT" /></translation> <translation id="2517472476991765520">Vyhľadať</translation> @@ -81,6 +82,7 @@ <translation id="6747215703636344499">Zastavené – výstup je plný</translation> <translation id="7162487448488904999">Galéria</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Typ súboru</translation> <translation id="7561454561030345039">Túto akciu ovláda váš správca</translation> <translation id="7658239707568436148">Zrušiť</translation> <translation id="7690294790491645610">Potvrďte nové heslo</translation>
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb index 5cf69450..dddf9a17 100644 --- a/chromeos/strings/chromeos_strings_sl.xtb +++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Ustavljeno – izhodni pladenj je poln</translation> <translation id="7162487448488904999">Galerija</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Vrsta datoteke</translation> <translation id="7561454561030345039">To dejanje upravlja skrbnik</translation> <translation id="7658239707568436148">Prekliči</translation> <translation id="7690294790491645610">Potrdite novo geslo</translation>
diff --git a/chromeos/strings/chromeos_strings_sr-Latn.xtb b/chromeos/strings/chromeos_strings_sr-Latn.xtb index 60ecf9e..229e6c16 100644 --- a/chromeos/strings/chromeos_strings_sr-Latn.xtb +++ b/chromeos/strings/chromeos_strings_sr-Latn.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Zaustavljeno – posuda za odštampani materijal je puna</translation> <translation id="7162487448488904999">Galerija</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Tip datoteke</translation> <translation id="7561454561030345039">Ovim podešavanjem upravlja administrator</translation> <translation id="7658239707568436148">Otkaži</translation> <translation id="7690294790491645610">Potvrdite novu lozinku</translation>
diff --git a/chromeos/strings/chromeos_strings_sr.xtb b/chromeos/strings/chromeos_strings_sr.xtb index d56a7820..5975278d 100644 --- a/chromeos/strings/chromeos_strings_sr.xtb +++ b/chromeos/strings/chromeos_strings_sr.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Заустављено – посуда за одштампани материјал је пуна</translation> <translation id="7162487448488904999">Галерија</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Тип датотеке</translation> <translation id="7561454561030345039">Овим подешавањем управља администратор</translation> <translation id="7658239707568436148">Откажи</translation> <translation id="7690294790491645610">Потврдите нову лозинку</translation>
diff --git a/chromeos/strings/chromeos_strings_sv.xtb b/chromeos/strings/chromeos_strings_sv.xtb index b4c3302..fe56fc6a 100644 --- a/chromeos/strings/chromeos_strings_sv.xtb +++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">Har stoppats – utmatningsfacket är fullt</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Filtyp</translation> <translation id="7561454561030345039">Den här åtgärden hanteras av administratören</translation> <translation id="7658239707568436148">Avbryt</translation> <translation id="7690294790491645610">Bekräfta det nya lösenordet</translation>
diff --git a/chromeos/strings/chromeos_strings_sw.xtb b/chromeos/strings/chromeos_strings_sw.xtb index 2575caa..e981901 100644 --- a/chromeos/strings/chromeos_strings_sw.xtb +++ b/chromeos/strings/chromeos_strings_sw.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">Muda wa kubadilisha nenosiri umeisha</translation> <translation id="2049639323467105390">Kifaa hiki kinadhibitiwa na <ph name="DOMAIN" /> .</translation> <translation id="2161394479394250669">Ghairi kazi ya kuchapisha</translation> +<translation id="2326139988748364651">Dpi <ph name="RESOLUTION_VALUE" /></translation> <translation id="2338501278241028356">Washa Bluetooth ili ugundue vifaa vilivyo karibu</translation> <translation id="2375079107209812402">Umebakisha mara <ph name="ATTEMPTS_LEFT" /> za kujaribu</translation> <translation id="2517472476991765520">Tafuta</translation> @@ -80,6 +81,7 @@ <translation id="6747215703636344499">Imesimama - Sehemu ya kutoa karatasi imejaa</translation> <translation id="7162487448488904999">Matunzio</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Aina ya faili</translation> <translation id="7561454561030345039">Kitendo hiki kinadhibitiwa na msimamizi wako</translation> <translation id="7658239707568436148">Ghairi</translation> <translation id="7690294790491645610">Thibitisha nenosiri jipya</translation>
diff --git a/chromeos/strings/chromeos_strings_ta.xtb b/chromeos/strings/chromeos_strings_ta.xtb index 6453241..2ad5fc8 100644 --- a/chromeos/strings/chromeos_strings_ta.xtb +++ b/chromeos/strings/chromeos_strings_ta.xtb
@@ -82,6 +82,7 @@ <translation id="6747215703636344499">பிரிண்ட் வெளியே வரும் டிரே நிரம்பிவிட்டதால் அச்சிட முடியவில்லை</translation> <translation id="7162487448488904999">கேலரி</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">கோப்பு வகை</translation> <translation id="7561454561030345039">இந்தச் செயல் உங்கள் நிர்வாகியால் நிர்வகிக்கப்படுகிறது</translation> <translation id="7658239707568436148">ரத்து செய்</translation> <translation id="7690294790491645610">புதிய கடவுச்சொல்லை உறுதிப்படுத்துக</translation>
diff --git a/chromeos/strings/chromeos_strings_te.xtb b/chromeos/strings/chromeos_strings_te.xtb index 18884110..686cd79 100644 --- a/chromeos/strings/chromeos_strings_te.xtb +++ b/chromeos/strings/chromeos_strings_te.xtb
@@ -80,6 +80,7 @@ <translation id="6747215703636344499">ఆగిపోయింది - అవుట్పుట్ నిండిపోయింది</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">ఫైల్ రకం</translation> <translation id="7561454561030345039">ఈ చర్య మీ అడ్మినిస్ట్రేటర్ ద్వారా మేనేజ్ చేయబడుతుంది</translation> <translation id="7658239707568436148">రద్దు చేయి</translation> <translation id="7690294790491645610">కొత్త పాస్వర్డ్ను నిర్ధారించండి</translation>
diff --git a/chromeos/strings/chromeos_strings_th.xtb b/chromeos/strings/chromeos_strings_th.xtb index 4d72476..5955316 100644 --- a/chromeos/strings/chromeos_strings_th.xtb +++ b/chromeos/strings/chromeos_strings_th.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">หยุดพิมพ์ - ถาดกระดาษออกเต็ม</translation> <translation id="7162487448488904999">แกลเลอรี</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">ประเภทไฟล์</translation> <translation id="7561454561030345039">การดำเนินการนี้จัดการโดยผู้ดูแลระบบ</translation> <translation id="7658239707568436148">ยกเลิก</translation> <translation id="7690294790491645610">ยืนยันรหัสผ่านใหม่</translation>
diff --git a/chromeos/strings/chromeos_strings_tr.xtb b/chromeos/strings/chromeos_strings_tr.xtb index b7bf637..e8303436 100644 --- a/chromeos/strings/chromeos_strings_tr.xtb +++ b/chromeos/strings/chromeos_strings_tr.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Durduruldu - Çıkış tepsisi dolu</translation> <translation id="7162487448488904999">Galeri</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Dosya türü</translation> <translation id="7561454561030345039">Bu işlem, yöneticiniz tarafından yönetilir.</translation> <translation id="7658239707568436148">İptal</translation> <translation id="7690294790491645610">Yeni şifreyi doğrula</translation>
diff --git a/chromeos/strings/chromeos_strings_uk.xtb b/chromeos/strings/chromeos_strings_uk.xtb index d5bc7b0..5032c97 100644 --- a/chromeos/strings/chromeos_strings_uk.xtb +++ b/chromeos/strings/chromeos_strings_uk.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Зупинено – вихідний лоток заповнений</translation> <translation id="7162487448488904999">Галерея</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Тип файлу</translation> <translation id="7561454561030345039">Цією дією керує адміністратор</translation> <translation id="7658239707568436148">Скасувати</translation> <translation id="7690294790491645610">Підтвердьте новий пароль</translation>
diff --git a/chromeos/strings/chromeos_strings_uz.xtb b/chromeos/strings/chromeos_strings_uz.xtb index b0134ad..0f3e8e9 100644 --- a/chromeos/strings/chromeos_strings_uz.xtb +++ b/chromeos/strings/chromeos_strings_uz.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">Parolni almashtirish muddati tugadi</translation> <translation id="2049639323467105390">Bu qurilma <ph name="DOMAIN" /> tomonidan boshqariladi</translation> <translation id="2161394479394250669">Chop etish vazifasini bekor qilish</translation> +<translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> <translation id="2338501278241028356">Yaqin-atrofdagi qurilmalarni aniqlash uchun Bluetooth adapterini yoqing</translation> <translation id="2375079107209812402"><ph name="ATTEMPTS_LEFT" /> ta urinish qoldi</translation> <translation id="2517472476991765520">Qidiruv</translation>
diff --git a/chromeos/strings/chromeos_strings_vi.xtb b/chromeos/strings/chromeos_strings_vi.xtb index ea8a917..fd947233 100644 --- a/chromeos/strings/chromeos_strings_vi.xtb +++ b/chromeos/strings/chromeos_strings_vi.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">Đã dừng – Khay giấy ra đã đầy</translation> <translation id="7162487448488904999">Thư viện</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Loại tệp</translation> <translation id="7561454561030345039">Quản trị viên của bạn quản lý thao tác này</translation> <translation id="7658239707568436148">Hủy</translation> <translation id="7690294790491645610">Xác nhận mật khẩu mới</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-CN.xtb b/chromeos/strings/chromeos_strings_zh-CN.xtb index 0c6f0ab2..d7e4935 100644 --- a/chromeos/strings/chromeos_strings_zh-CN.xtb +++ b/chromeos/strings/chromeos_strings_zh-CN.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">已停止 - 出纸盘已满</translation> <translation id="7162487448488904999">媒体库</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">文件类型</translation> <translation id="7561454561030345039">此操作由您的管理员管理</translation> <translation id="7658239707568436148">取消</translation> <translation id="7690294790491645610">再次输入新密码</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb index 9b1cf67..31aed33 100644 --- a/chromeos/strings/chromeos_strings_zh-HK.xtb +++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">已停止 - 輸出紙匣已滿</translation> <translation id="7162487448488904999">媒體庫</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">檔案類型</translation> <translation id="7561454561030345039">此操作由管理員管理</translation> <translation id="7658239707568436148">取消</translation> <translation id="7690294790491645610">確認新密碼</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-TW.xtb b/chromeos/strings/chromeos_strings_zh-TW.xtb index da0464f..bb5d99a 100644 --- a/chromeos/strings/chromeos_strings_zh-TW.xtb +++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -81,6 +81,7 @@ <translation id="6747215703636344499">已停止 - 輸出紙匣已滿</translation> <translation id="7162487448488904999">相片庫</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">檔案類型</translation> <translation id="7561454561030345039">這個動作是由系統管理員管理</translation> <translation id="7658239707568436148">取消</translation> <translation id="7690294790491645610">確認新密碼</translation>
diff --git a/components/BUILD.gn b/components/BUILD.gn index ee4d7ac7..641c9cf 100644 --- a/components/BUILD.gn +++ b/components/BUILD.gn
@@ -107,6 +107,7 @@ "//components/leveldb_proto:unit_tests", "//components/lookalikes/core:unit_tests", "//components/metrics:unit_tests", + "//components/metrics/demographics:unit_tests", "//components/navigation_metrics:unit_tests", "//components/net_log:unit_tests", "//components/network_session_configurator/browser:unit_tests",
diff --git a/components/autofill_assistant/browser/controller_unittest.cc b/components/autofill_assistant/browser/controller_unittest.cc index 203614b..8b8faeb 100644 --- a/components/autofill_assistant/browser/controller_unittest.cc +++ b/components/autofill_assistant/browser/controller_unittest.cc
@@ -124,8 +124,8 @@ ON_CALL(*mock_service_, OnGetActions(_, _, _, _, _, _)) .WillByDefault(RunOnceCallback<5>(true, "")); - ON_CALL(*mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillByDefault(RunOnceCallback<4>(true, "")); + ON_CALL(*mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillByDefault(RunOnceCallback<5>(true, "")); ON_CALL(*mock_service_, IsLiteService).WillByDefault(Return(false)); @@ -1098,9 +1098,9 @@ SetupActionsForScript("script", actions_response); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(*mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(*mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); Start("http://a.example.com/path"); EXPECT_THAT(controller_->GetUserActions(), SizeIs(1)); @@ -1131,9 +1131,9 @@ SetupActionsForScript("script", actions_response); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(*mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(*mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); Start("http://a.example.com/path"); EXPECT_THAT(controller_->GetUserActions(), SizeIs(1)); @@ -2656,9 +2656,9 @@ SetupActionsForScript("script", actions_response); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(*mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(*mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); Start("http://a.example.com/path");
diff --git a/components/autofill_assistant/browser/protocol_utils.cc b/components/autofill_assistant/browser/protocol_utils.cc index 7fff2ec..3adde16 100644 --- a/components/autofill_assistant/browser/protocol_utils.cc +++ b/components/autofill_assistant/browser/protocol_utils.cc
@@ -150,6 +150,7 @@ const std::string& global_payload, const std::string& script_payload, const std::vector<ProcessedActionProto>& processed_actions, + const RoundtripTimingStats& timing_stats, const ClientContextProto& client_context) { ScriptActionRequestProto request_proto; request_proto.set_global_payload(global_payload); @@ -159,6 +160,7 @@ for (const auto& processed_action : processed_actions) { next_request->add_processed_actions()->MergeFrom(processed_action); } + *next_request->mutable_timing_stats() = timing_stats; *request_proto.mutable_client_context() = client_context; std::string serialized_request_proto; bool success = request_proto.SerializeToString(&serialized_request_proto);
diff --git a/components/autofill_assistant/browser/protocol_utils.h b/components/autofill_assistant/browser/protocol_utils.h index 11af7daa..a49f636 100644 --- a/components/autofill_assistant/browser/protocol_utils.h +++ b/components/autofill_assistant/browser/protocol_utils.h
@@ -50,6 +50,7 @@ const std::string& global_payload, const std::string& script_payload, const std::vector<ProcessedActionProto>& processed_actions, + const RoundtripTimingStats& timing_stats, const ClientContextProto& client_context); // Create an action from the |action|.
diff --git a/components/autofill_assistant/browser/protocol_utils_unittest.cc b/components/autofill_assistant/browser/protocol_utils_unittest.cc index 481d1377..a6f2d0b 100644 --- a/components/autofill_assistant/browser/protocol_utils_unittest.cc +++ b/components/autofill_assistant/browser/protocol_utils_unittest.cc
@@ -143,7 +143,7 @@ EXPECT_TRUE( request.ParseFromString(ProtocolUtils::CreateNextScriptActionsRequest( "global_payload", "script_payload", processed_actions, - client_context_proto_))); + RoundtripTimingStats(), client_context_proto_))); AssertClientContext(request.client_context()); EXPECT_EQ(1, request.next_request().processed_actions().size());
diff --git a/components/autofill_assistant/browser/script_executor.cc b/components/autofill_assistant/browser/script_executor.cc index ae50d50..de7f320 100644 --- a/components/autofill_assistant/browser/script_executor.cc +++ b/components/autofill_assistant/browser/script_executor.cc
@@ -120,7 +120,7 @@ {delegate_->GetTriggerContext(), additional_context_.get()}), last_global_payload_, last_script_payload_, base::BindOnce(&ScriptExecutor::OnGetActions, - weak_ptr_factory_.GetWeakPtr())); + weak_ptr_factory_.GetWeakPtr(), base::TimeTicks::Now())); } const UserData* ScriptExecutor::GetUserData() const { @@ -808,7 +808,12 @@ return weak_ptr_factory_.GetWeakPtr(); } -void ScriptExecutor::OnGetActions(bool result, const std::string& response) { +void ScriptExecutor::OnGetActions(base::TimeTicks start_time, + bool result, + const std::string& response) { + batch_start_time_ = base::TimeTicks::Now(); + roundtrip_timing_stats_.set_roundtrip_time_ms( + (batch_start_time_ - start_time).InMilliseconds()); bool success = result && ProcessNextActionResponse(response); VLOG(2) << __func__ << " result=" << result; if (should_stop_script_) { @@ -933,12 +938,20 @@ } void ScriptExecutor::GetNextActions() { + base::TimeTicks get_next_actions_start = base::TimeTicks::Now(); + roundtrip_timing_stats_.set_client_time_ms( + (get_next_actions_start - batch_start_time_).InMilliseconds()); + VLOG(2) << "Batch timing stats"; + VLOG(2) << "Roundtrip time: " << roundtrip_timing_stats_.roundtrip_time_ms(); + VLOG(2) << "Client execution time: " + << roundtrip_timing_stats_.client_time_ms(); delegate_->GetService()->GetNextActions( MergedTriggerContext( {delegate_->GetTriggerContext(), additional_context_.get()}), last_global_payload_, last_script_payload_, processed_actions_, + roundtrip_timing_stats_, base::BindOnce(&ScriptExecutor::OnGetActions, - weak_ptr_factory_.GetWeakPtr())); + weak_ptr_factory_.GetWeakPtr(), get_next_actions_start)); } void ScriptExecutor::OnProcessedAction(
diff --git a/components/autofill_assistant/browser/script_executor.h b/components/autofill_assistant/browser/script_executor.h index 92e8f1e1..5ea7b55 100644 --- a/components/autofill_assistant/browser/script_executor.h +++ b/components/autofill_assistant/browser/script_executor.h
@@ -379,7 +379,9 @@ DISALLOW_COPY_AND_ASSIGN(WaitForDomOperation); }; - void OnGetActions(bool result, const std::string& response); + void OnGetActions(base::TimeTicks start_time, + bool result, + const std::string& response); bool ProcessNextActionResponse(const std::string& response); void ReportPayloadsToListener(); void ReportScriptsUpdateToListener( @@ -500,6 +502,9 @@ bool is_paused_ = false; std::string last_status_message_; + base::TimeTicks batch_start_time_; + RoundtripTimingStats roundtrip_timing_stats_; + base::WeakPtrFactory<ScriptExecutor> weak_ptr_factory_{this}; DISALLOW_COPY_AND_ASSIGN(ScriptExecutor); };
diff --git a/components/autofill_assistant/browser/script_executor_unittest.cc b/components/autofill_assistant/browser/script_executor_unittest.cc index ba3915b..aa45c404 100644 --- a/components/autofill_assistant/browser/script_executor_unittest.cc +++ b/components/autofill_assistant/browser/script_executor_unittest.cc
@@ -213,9 +213,9 @@ .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); EXPECT_CALL(executor_callback_, Run(AllOf(Field(&ScriptExecutor::Result::success, true), Field(&ScriptExecutor::Result::at_end, @@ -239,12 +239,12 @@ next_actions_response.add_actions()->mutable_tell()->set_message("3"); std::vector<ProcessedActionProto> processed_actions1_capture; std::vector<ProcessedActionProto> processed_actions2_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce( DoAll(SaveArg<3>(&processed_actions1_capture), - RunOnceCallback<4>(true, Serialize(next_actions_response)))) + RunOnceCallback<5>(true, Serialize(next_actions_response)))) .WillOnce(DoAll(SaveArg<3>(&processed_actions2_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); executor_->Run(&user_data_, executor_callback_.Get()); @@ -261,9 +261,9 @@ .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); executor_->Run(&user_data_, executor_callback_.Get()); @@ -279,8 +279,8 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillOnce(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillOnce(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(AllOf(Field(&ScriptExecutor::Result::success, true), Field(&ScriptExecutor::Result::at_end, @@ -306,12 +306,12 @@ "will run after error"); std::vector<ProcessedActionProto> processed_actions1_capture; std::vector<ProcessedActionProto> processed_actions2_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce( DoAll(SaveArg<3>(&processed_actions1_capture), - RunOnceCallback<4>(true, Serialize(next_actions_response)))) + RunOnceCallback<5>(true, Serialize(next_actions_response)))) .WillOnce(DoAll(SaveArg<3>(&processed_actions2_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); executor_->Run(&user_data_, executor_callback_.Get()); @@ -337,9 +337,9 @@ .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); // executor_callback_.Run() not expected to be run just yet, as the action is // delayed. @@ -363,8 +363,8 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillOnce(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillOnce(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -383,8 +383,8 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillOnce(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillOnce(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -398,8 +398,8 @@ actions_response.add_actions()->mutable_tell()->set_message("Hello"); EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillOnce(RunOnceCallback<4>(false, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillOnce(RunOnceCallback<5>(false, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, false))); delegate_.SetDetails(std::make_unique<Details>()); // empty, but not null @@ -434,8 +434,8 @@ initial_actions_response.add_actions()->mutable_tell()->set_message("ok"); EXPECT_CALL(mock_service_, OnGetActions(StrEq(kScriptPath), _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(initial_actions_response))); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillOnce(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillOnce(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); executor_->Run(&user_data_, executor_callback_.Get()); @@ -458,8 +458,8 @@ next_actions_response.set_global_payload("last global payload"); next_actions_response.set_script_payload("last payload"); EXPECT_CALL(mock_service_, OnGetNextActions(_, "actions global payload", - "actions payload", _, _)) - .WillOnce(RunOnceCallback<4>(true, Serialize(next_actions_response))); + "actions payload", _, _, _)) + .WillOnce(RunOnceCallback<5>(true, Serialize(next_actions_response))); EXPECT_CALL(executor_callback_, Run(_)); executor_->Run(&user_data_, executor_callback_.Get()); @@ -479,8 +479,8 @@ .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); EXPECT_CALL(mock_service_, OnGetNextActions(_, "actions global payload", - "actions payload", _, _)) - .WillOnce(RunOnceCallback<4>(false, "")); + "actions payload", _, _, _)) + .WillOnce(RunOnceCallback<5>(false, "")); EXPECT_CALL(executor_callback_, Run(_)); executor_->Run(&user_data_, executor_callback_.Get()); @@ -498,9 +498,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); // First check does not find the element, wait for dom waits 1s, then the // element is found, and the action succeeds. @@ -528,11 +528,11 @@ // Both scripts ends after the first set of actions. Capture the results. std::vector<ProcessedActionProto> processed_actions1_capture; std::vector<ProcessedActionProto> processed_actions2_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions1_capture), - RunOnceCallback<4>(true, ""))) + RunOnceCallback<5>(true, ""))) .WillOnce(DoAll(SaveArg<3>(&processed_actions2_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -568,14 +568,14 @@ { testing::InSequence seq; EXPECT_CALL(mock_service_, - OnGetNextActions(_, _, "payload for interrupt1", _, _)) - .WillOnce(RunOnceCallback<4>(true, "")); + OnGetNextActions(_, _, "payload for interrupt1", _, _, _)) + .WillOnce(RunOnceCallback<5>(true, "")); EXPECT_CALL(mock_service_, - OnGetNextActions(_, _, "payload for interrupt2", _, _)) - .WillOnce(RunOnceCallback<4>(true, "")); + OnGetNextActions(_, _, "payload for interrupt2", _, _, _)) + .WillOnce(RunOnceCallback<5>(true, "")); EXPECT_CALL(mock_service_, - OnGetNextActions(_, _, "main script payload", _, _)) - .WillOnce(RunOnceCallback<4>(true, "")); + OnGetNextActions(_, _, "main script payload", _, _, _)) + .WillOnce(RunOnceCallback<5>(true, "")); } EXPECT_CALL(executor_callback_, @@ -611,8 +611,8 @@ .WillRepeatedly(RunOnceCallback<5>(true, Serialize(interrupt_actions))); // All scripts succeed with no more actions. - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillRepeatedly(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillRepeatedly(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -629,9 +629,9 @@ next_interrupt_actions_response.set_script_payload( "last payload from interrupt"); EXPECT_CALL(mock_service_, OnGetNextActions(_, "global payload for interrupt", - "payload for interrupt", _, _)) + "payload for interrupt", _, _, _)) .WillOnce( - RunOnceCallback<4>(true, Serialize(next_interrupt_actions_response))); + RunOnceCallback<5>(true, Serialize(next_interrupt_actions_response))); ActionsResponseProto next_main_actions_response; next_main_actions_response.set_global_payload( @@ -639,9 +639,9 @@ next_main_actions_response.set_script_payload("last payload from main"); EXPECT_CALL(mock_service_, OnGetNextActions(_, "last global payload from interrupt", - "main script payload", _, _)) + "main script payload", _, _, _)) .WillOnce( - RunOnceCallback<4>(true, Serialize(next_main_actions_response))); + RunOnceCallback<5>(true, Serialize(next_main_actions_response))); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -656,12 +656,12 @@ SetupInterrupt("interrupt", "interrupt_trigger"); EXPECT_CALL(mock_service_, OnGetNextActions(_, "global payload for interrupt", - "payload for interrupt", _, _)) - .WillOnce(RunOnceCallback<4>(false, "")); + "payload for interrupt", _, _, _)) + .WillOnce(RunOnceCallback<5>(false, "")); EXPECT_CALL(mock_service_, OnGetNextActions(_, "global payload for interrupt", - "main script payload", _, _)) - .WillOnce(RunOnceCallback<4>(false, "")); + "main script payload", _, _, _)) + .WillOnce(RunOnceCallback<5>(false, "")); EXPECT_CALL(executor_callback_, Run(_)); executor_->Run(&user_data_, executor_callback_.Get()); @@ -683,8 +683,8 @@ OnElementCheck(Eq(Selector({"interrupt_trigger"})), _)) .WillRepeatedly(RunOnceCallback<1>(ClientStatus())); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillRepeatedly(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillRepeatedly(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -709,8 +709,8 @@ // given an opportunity to. SetupInterrupt("interrupt", "interrupt_trigger"); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillRepeatedly(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillRepeatedly(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -728,8 +728,8 @@ // The interrupt fails. EXPECT_CALL(mock_service_, - OnGetNextActions(_, _, "payload for interrupt", _, _)) - .WillOnce(RunOnceCallback<4>(false, "")); + OnGetNextActions(_, _, "payload for interrupt", _, _, _)) + .WillOnce(RunOnceCallback<5>(false, "")); // The main script gets a report of the failure from the interrupt, and fails // in turn. @@ -739,8 +739,8 @@ _, _, "main script payload", ElementsAre(Property(&ProcessedActionProto::status, ProcessedActionStatusProto::INTERRUPT_FAILED)), - _)) - .WillOnce(RunOnceCallback<4>(false, "")); + _, _)) + .WillOnce(RunOnceCallback<5>(false, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, false))); @@ -767,9 +767,9 @@ // We expect to get result of interrupt action, then result of the main script // action. - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .Times(2) - .WillRepeatedly(RunOnceCallback<4>(true, "")); + .WillRepeatedly(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(AllOf(Field(&ScriptExecutor::Result::success, true), @@ -808,8 +808,8 @@ OnElementCheck(Eq(Selector({"end_prompt"})), _)) .WillRepeatedly(RunOnceCallback<1>(OkClientStatus())); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillRepeatedly(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillRepeatedly(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -895,8 +895,8 @@ .WillOnce(RunOnceCallback<1>(ClientStatus(ELEMENT_RESOLUTION_FAILED))) .WillRepeatedly(RunOnceCallback<1>(OkClientStatus())); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillRepeatedly(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillRepeatedly(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -938,9 +938,9 @@ presentation->mutable_chip()->set_text("name"); presentation->mutable_precondition(); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillOnce(RunOnceCallback<4>(true, Serialize(next_actions_response))) - .WillOnce(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillOnce(RunOnceCallback<5>(true, Serialize(next_actions_response))) + .WillOnce(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -970,9 +970,9 @@ .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); script->set_path("path2"); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillOnce(RunOnceCallback<4>(true, Serialize(actions_response))) - .WillOnce(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))) + .WillOnce(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -1007,10 +1007,10 @@ // We expect a call from the interrupt which will update the script list and a // second call from the interrupt to terminate. Then a call from the main // script which will finish without running any actions. - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .Times(3) - .WillOnce(RunOnceCallback<4>(true, Serialize(interrupt_actions))) - .WillRepeatedly(RunOnceCallback<4>(true, "")); + .WillOnce(RunOnceCallback<5>(true, Serialize(interrupt_actions))) + .WillRepeatedly(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -1046,8 +1046,8 @@ EXPECT_CALL(mock_service_, OnGetActions(StrEq("interrupt"), _, _, _, _, _)) .WillRepeatedly(RunOnceCallback<5>(true, Serialize(interrupt_actions))); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillRepeatedly(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillRepeatedly(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -1068,8 +1068,8 @@ EXPECT_CALL(mock_service_, OnGetActions(kScriptPath, _, _, _, _, _)) .WillRepeatedly(RunOnceCallback<5>(true, Serialize(interruptible))); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillRepeatedly(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillRepeatedly(RunOnceCallback<5>(true, "")); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -1089,9 +1089,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); // First check does not find the element, wait for dom waits 1s. EXPECT_CALL(mock_web_controller_, @@ -1128,9 +1128,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); // Navigation starts before WaitForDom starts. WaitForDom does not wait and // completes successfully. @@ -1155,9 +1155,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); delegate_.UpdateNavigationState(/* navigating= */ false, /* error= */ true); EXPECT_CALL(executor_callback_, Run(_)); @@ -1192,11 +1192,11 @@ std::vector<ProcessedActionProto> processed_actions1_capture; std::vector<ProcessedActionProto> processed_actions2_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions1_capture), - RunOnceCallback<4>(true, ""))) + RunOnceCallback<5>(true, ""))) .WillOnce(DoAll(SaveArg<3>(&processed_actions2_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); EXPECT_CALL(executor_callback_, Run(_)); executor_->Run(&user_data_, executor_callback_.Get()); @@ -1213,9 +1213,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); delegate_.UpdateNavigationState(/* navigating= */ false, /* error= */ true); EXPECT_CALL(executor_callback_, Run(_)); @@ -1237,9 +1237,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); // WaitForDom does NOT wait for navigation to end, it immediately checks for // the element, which fails. @@ -1274,9 +1274,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); // As the element doesn't exist, WaitForDom returns and waits for 1s. EXPECT_CALL(mock_web_controller_, @@ -1309,9 +1309,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); // As the element doesn't exist, WaitForDom returns and waits for 1s. EXPECT_CALL(mock_web_controller_, @@ -1342,9 +1342,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); // WaitForNavigation returns immediately EXPECT_CALL(executor_callback_, Run(_)); @@ -1362,9 +1362,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); // WaitForNavigation waits for navigation to start after expect_navigation EXPECT_CALL(executor_callback_, Run(_)); @@ -1387,9 +1387,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); // The first wait_for_navigation waits for the navigation to happen. After // that, the other wait_for_navigation return immediately. @@ -1413,9 +1413,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); delegate_.UpdateNavigationState(/* navigating= */ true, /* error= */ false); @@ -1447,9 +1447,9 @@ EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<4>(true, ""))); + RunOnceCallback<5>(true, ""))); // WaitForNavigation waits for navigation to start after expect_navigation EXPECT_CALL(executor_callback_, Run(_)); @@ -1480,7 +1480,7 @@ // The prompt action must finish. We don't bother continuing with the script // in this test. - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)); (*delegate_.GetUserActions())[0].Call(TriggerContext::CreateEmpty()); EXPECT_EQ(AutofillAssistantState::RUNNING, delegate_.GetState()); @@ -1498,7 +1498,7 @@ .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); std::vector<ProcessedActionProto> processed_actions_capture; - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) .WillOnce(SaveArg<3>(&processed_actions_capture)); auto context = std::make_unique<TriggerContextImpl>(); @@ -1599,5 +1599,35 @@ EXPECT_EQ(AutofillAssistantState::PROMPT, delegate_.GetState()); } +ACTION_P2(Delay, env, delay) { + env->FastForwardBy(base::TimeDelta::FromMilliseconds(delay)); +} + +TEST_F(ScriptExecutorTest, RoundtripTimingStats) { + ActionsResponseProto actions_response; + ActionProto* action = actions_response.add_actions(); + action->mutable_tell()->set_message("1"); + action->set_action_delay_ms(1000); + EXPECT_CALL(mock_service_, OnGetActions(_, _, _, _, _, _)) + .WillOnce(DoAll(Delay(&task_environment_, 200), + RunOnceCallback<5>(true, Serialize(actions_response)))); + + ActionsResponseProto next_actions_response; + next_actions_response.add_actions()->mutable_tell()->set_message("3"); + RoundtripTimingStats timing_stats; + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillOnce(DoAll(SaveArg<4>(&timing_stats), RunOnceCallback<5>(true, ""))); + executor_->Run(&user_data_, executor_callback_.Get()); + EXPECT_TRUE(task_environment_.NextTaskIsDelayed()); + + EXPECT_CALL(executor_callback_, + Run(Field(&ScriptExecutor::Result::success, true))); + task_environment_.FastForwardBy(base::TimeDelta::FromMilliseconds(1000)); + // Moving forward in time triggers action execution. + + EXPECT_EQ(200, timing_stats.roundtrip_time_ms()); + EXPECT_EQ(1000, timing_stats.client_time_ms()); +} + } // namespace } // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/script_tracker_unittest.cc b/components/autofill_assistant/browser/script_tracker_unittest.cc index 6e8758d..7122534 100644 --- a/components/autofill_assistant/browser/script_tracker_unittest.cc +++ b/components/autofill_assistant/browser/script_tracker_unittest.cc
@@ -304,8 +304,8 @@ EXPECT_CALL(mock_service_, OnGetActions(StrEq("runnable name"), _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillOnce(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillOnce(RunOnceCallback<5>(true, "")); base::MockCallback<ScriptExecutor::RunScriptCallback> execute_callback; EXPECT_CALL(execute_callback, @@ -346,8 +346,8 @@ EXPECT_CALL(mock_service_, OnGetActions(StrEq("runnable name"), _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillOnce(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillOnce(RunOnceCallback<5>(true, "")); base::MockCallback<ScriptExecutor::RunScriptCallback> execute_callback; EXPECT_CALL(execute_callback, @@ -385,8 +385,8 @@ EXPECT_CALL(mock_service_, OnGetActions("main", _, _, _, _, _)) .WillOnce(RunOnceCallback<5>(true, Serialize(actions_response))); - EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _)) - .WillRepeatedly(RunOnceCallback<4>(true, "")); + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _, _, _)) + .WillRepeatedly(RunOnceCallback<5>(true, "")); ActionsResponseProto actions_interrupt; actions_response.set_script_payload("from interrupt");
diff --git a/components/autofill_assistant/browser/service.proto b/components/autofill_assistant/browser/service.proto index 992463f..fea598f 100644 --- a/components/autofill_assistant/browser/service.proto +++ b/components/autofill_assistant/browser/service.proto
@@ -387,12 +387,22 @@ repeated ScriptParameterProto script_parameters = 2; } +message RoundtripTimingStats { + // Reports how long it took for the previous roundtrip to the backend to + // complete. + optional int64 roundtrip_time_ms = 1; + // Reports the total client processing time for the executed batch of actions. + optional int64 client_time_ms = 2; +} + // Next request to get a script's actions. message NextScriptActionsRequestProto { // The result of processing each ActionProto from the previous response. This // field must be in the same order as the actions in the original response. // It may have less actions in case of failure. repeated ProcessedActionProto processed_actions = 1; + // Contains all roundtrip level (as opposed to action level) timing stats. + optional RoundtripTimingStats timing_stats = 2; } // Response of a script's actions.
diff --git a/components/autofill_assistant/browser/service/java_service.cc b/components/autofill_assistant/browser/service/java_service.cc index 66d0c7ba..71735e89 100644 --- a/components/autofill_assistant/browser/service/java_service.cc +++ b/components/autofill_assistant/browser/service/java_service.cc
@@ -67,6 +67,7 @@ const std::string& previous_global_payload, const std::string& previous_script_payload, const std::vector<ProcessedActionProto>& processed_actions, + const RoundtripTimingStats& timing_stats, ResponseCallback callback) { JNIEnv* env = base::android::AttachCurrentThread(); auto jprocessed_actions =
diff --git a/components/autofill_assistant/browser/service/java_service.h b/components/autofill_assistant/browser/service/java_service.h index 0ebbd23..a06827a 100644 --- a/components/autofill_assistant/browser/service/java_service.h +++ b/components/autofill_assistant/browser/service/java_service.h
@@ -49,6 +49,7 @@ const std::string& previous_global_payload, const std::string& previous_script_payload, const std::vector<ProcessedActionProto>& processed_actions, + const RoundtripTimingStats& timing_stats, ResponseCallback callback) override; private:
diff --git a/components/autofill_assistant/browser/service/lite_service.cc b/components/autofill_assistant/browser/service/lite_service.cc index a660c79..0cb277f2 100644 --- a/components/autofill_assistant/browser/service/lite_service.cc +++ b/components/autofill_assistant/browser/service/lite_service.cc
@@ -140,6 +140,7 @@ const std::string& previous_global_payload, const std::string& previous_script_payload, const std::vector<ProcessedActionProto>& processed_actions, + const RoundtripTimingStats& timing_stats, ResponseCallback callback) { if (!notify_finished_callback_) { // The lite script has already terminated. We need to run |callback| with
diff --git a/components/autofill_assistant/browser/service/lite_service.h b/components/autofill_assistant/browser/service/lite_service.h index d004048aa..721c52d 100644 --- a/components/autofill_assistant/browser/service/lite_service.h +++ b/components/autofill_assistant/browser/service/lite_service.h
@@ -62,6 +62,7 @@ const std::string& previous_global_payload, const std::string& previous_script_payload, const std::vector<ProcessedActionProto>& processed_actions, + const RoundtripTimingStats& timing_stats, ResponseCallback callback) override; private:
diff --git a/components/autofill_assistant/browser/service/lite_service_unittest.cc b/components/autofill_assistant/browser/service/lite_service_unittest.cc index 3e9ae50..632aadc6 100644 --- a/components/autofill_assistant/browser/service/lite_service_unittest.cc +++ b/components/autofill_assistant/browser/service/lite_service_unittest.cc
@@ -282,6 +282,7 @@ EXPECT_CALL(mock_script_running_callback_, Run(/*ui_shown =*/true)).Times(1); lite_service_->GetNextActions(TriggerContextImpl(), "", "", processed_actions, + RoundtripTimingStats(), mock_response_callback_.Get()); } @@ -296,6 +297,7 @@ Metrics::LiteScriptFinishedState::LITE_SCRIPT_BROWSE_FAILED_NAVIGATE); EXPECT_CALL(mock_script_running_callback_, Run(/*ui_shown =*/true)).Times(0); lite_service_->GetNextActions(TriggerContextImpl(), "", "", processed_actions, + RoundtripTimingStats(), mock_response_callback_.Get()); } @@ -315,6 +317,7 @@ EXPECT_CALL(mock_response_callback_, Run(true, "")); EXPECT_CALL(mock_script_running_callback_, Run(/*ui_shown =*/true)).Times(1); lite_service_->GetNextActions(TriggerContextImpl(), "", "", processed_actions, + RoundtripTimingStats(), mock_response_callback_.Get()); } @@ -333,12 +336,14 @@ EXPECT_CALL(mock_response_callback_, Run(true, "")).Times(1); lite_service_->GetNextActions(TriggerContextImpl(), "", "", processed_actions, + RoundtripTimingStats(), mock_response_callback_.Get()); ExpectStopWithFinishedState( Metrics::LiteScriptFinishedState:: LITE_SCRIPT_PROMPT_FAILED_CONDITION_NO_LONGER_TRUE); lite_service_->GetNextActions(TriggerContextImpl(), "", "", processed_actions, + RoundtripTimingStats(), mock_response_callback_.Get()); } @@ -357,6 +362,7 @@ ExpectStopWithFinishedState( Metrics::LiteScriptFinishedState::LITE_SCRIPT_PROMPT_FAILED_CLOSE); lite_service_->GetNextActions(TriggerContextImpl(), "", "", processed_actions, + RoundtripTimingStats(), mock_response_callback_.Get()); } @@ -376,6 +382,7 @@ Metrics::LiteScriptFinishedState:: LITE_SCRIPT_PROMPT_FAILED_CONDITION_NO_LONGER_TRUE); lite_service_->GetNextActions(TriggerContextImpl(), "", "", processed_actions, + RoundtripTimingStats(), mock_response_callback_.Get()); } @@ -388,6 +395,7 @@ ExpectStopWithFinishedState( Metrics::LiteScriptFinishedState::LITE_SCRIPT_PROMPT_FAILED_NAVIGATE); lite_service_->GetNextActions(TriggerContextImpl(), "", "", processed_actions, + RoundtripTimingStats(), mock_response_callback_.Get()); } @@ -402,10 +410,10 @@ processed_actions.back().set_status(ACTION_APPLIED); processed_actions.back().mutable_prompt_choice()->set_server_payload( "payload"); - ExpectStopWithFinishedState( Metrics::LiteScriptFinishedState::LITE_SCRIPT_PROMPT_SUCCEEDED); lite_service_->GetNextActions(TriggerContextImpl(), "", "", processed_actions, + RoundtripTimingStats(), mock_response_callback_.Get()); }
diff --git a/components/autofill_assistant/browser/service/mock_service.h b/components/autofill_assistant/browser/service/mock_service.h index fe1fb91..05d1a388 100644 --- a/components/autofill_assistant/browser/service/mock_service.h +++ b/components/autofill_assistant/browser/service/mock_service.h
@@ -55,15 +55,18 @@ const std::string& previous_global_payload, const std::string& previous_script_payload, const std::vector<ProcessedActionProto>& processed_actions, + const RoundtripTimingStats& timing_stats, ResponseCallback callback) override { OnGetNextActions(trigger_context, previous_global_payload, - previous_script_payload, processed_actions, callback); + previous_script_payload, processed_actions, timing_stats, + callback); } - MOCK_METHOD5(OnGetNextActions, + MOCK_METHOD6(OnGetNextActions, void(const TriggerContext& trigger_contexts, const std::string& previous_global_payload, const std::string& previous_script_payload, const std::vector<ProcessedActionProto>& processed_actions, + const RoundtripTimingStats& timing_stats, ResponseCallback& callback)); MOCK_CONST_METHOD0(IsLiteService, bool());
diff --git a/components/autofill_assistant/browser/service/service.h b/components/autofill_assistant/browser/service/service.h index ffa17fb..611aae16 100644 --- a/components/autofill_assistant/browser/service/service.h +++ b/components/autofill_assistant/browser/service/service.h
@@ -48,6 +48,7 @@ const std::string& previous_global_payload, const std::string& previous_script_payload, const std::vector<ProcessedActionProto>& processed_actions, + const RoundtripTimingStats& timing_stats, ResponseCallback callback) = 0; protected:
diff --git a/components/autofill_assistant/browser/service/service_impl.cc b/components/autofill_assistant/browser/service/service_impl.cc index 344ab84..1542d159 100644 --- a/components/autofill_assistant/browser/service/service_impl.cc +++ b/components/autofill_assistant/browser/service/service_impl.cc
@@ -123,13 +123,15 @@ const std::string& previous_global_payload, const std::string& previous_script_payload, const std::vector<ProcessedActionProto>& processed_actions, + const RoundtripTimingStats& timing_stats, ResponseCallback callback) { client_context_->Update(trigger_context); - SendRequest(AddLoader(script_action_server_url_, - ProtocolUtils::CreateNextScriptActionsRequest( - previous_global_payload, previous_script_payload, - processed_actions, client_context_->AsProto()), - std::move(callback))); + SendRequest(AddLoader( + script_action_server_url_, + ProtocolUtils::CreateNextScriptActionsRequest( + previous_global_payload, previous_script_payload, processed_actions, + timing_stats, client_context_->AsProto()), + std::move(callback))); } void ServiceImpl::SendRequest(Loader* loader) {
diff --git a/components/autofill_assistant/browser/service/service_impl.h b/components/autofill_assistant/browser/service/service_impl.h index 25809e51..ff8a208 100644 --- a/components/autofill_assistant/browser/service/service_impl.h +++ b/components/autofill_assistant/browser/service/service_impl.h
@@ -74,6 +74,7 @@ const std::string& previous_global_payload, const std::string& previous_script_payload, const std::vector<ProcessedActionProto>& processed_actions, + const RoundtripTimingStats& timing_stats, ResponseCallback callback) override; private:
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java index 9af6ec2..98e203be 100644 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
@@ -830,7 +830,9 @@ listPreference.setEntryValues(keys); listPreference.setEntries(descriptions); listPreference.setOnPreferenceChangeListener(this); - listPreference.setSummary(isEmbargoed ? getString(R.string.automatically_blocked) : "%s"); + listPreference.setSummary(isEmbargoed + ? getString(R.string.automatically_blocked) + : getString(ContentSettingsResources.getCategorySummary(value))); // TODO(crbug.com/735110): Figure out if this is the correct thing to do - here we are // effectively treating non-ALLOW values as BLOCK. int index = (value == ContentSettingValues.ALLOW ? 0 : 1); @@ -1015,13 +1017,13 @@ public boolean onPreferenceChange(Preference preference, Object newValue) { @ContentSettingValues int permission = ContentSetting.fromString((String) newValue); - // Embargoed permission preserves summary. Refresh it manually. - preference.setSummary("%s"); BrowserContextHandle browserContextHandle = getSiteSettingsClient().getBrowserContextHandle(); int type = getContentSettingsTypeFromPreferenceKey(preference.getKey()); if (type != ContentSettingsType.DEFAULT) { mSite.setContentSetting(browserContextHandle, type, permission); + preference.setSummary( + getString(ContentSettingsResources.getCategorySummary(permission))); if (mWebsiteSettingsObserver != null) { mWebsiteSettingsObserver.onPermissionChanged();
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_af.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_af.xtb index d23be9d..f293fa119 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_af.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_af.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Maak kitsprogram oop</translation> <translation id="2148716181193084225">Vandag</translation> <translation id="2182457891543959921">Vra voordat werwe toegelaat word om 'n 3D-kaart van jou omgewing te skep of kameraposisie na te spoor (aanbeveel)</translation> -<translation id="2187243482123994665">Gebruikerteenwoordigheid</translation> <translation id="2212565012507486665">Laat webkoekies toe</translation> <translation id="2228071138934252756">Om <ph name="APP_NAME" /> toegang tot jou kamera te gee, moet jy kamera ook in <ph name="BEGIN_LINK" />Android-instellings<ph name="END_LINK" /> aanskakel.</translation> <translation id="2241634353105152135">Net een keer</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_am.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_am.xtb index 99d3561..197c0cc 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_am.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_am.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">ቅጽበታዊ መተግበሪያን ክፈት</translation> <translation id="2148716181193084225">ዛሬ</translation> <translation id="2182457891543959921">ጣቢያዎች የዙሪያዎ የ3ል ካርታ እንዲፈጥሩ ወይም የካሜራ ቦታን እንዲከታተል ከመፍቀድ በፊት ጠይቅ (የሚመከር)</translation> -<translation id="2187243482123994665">የተጠቃሚ ተገኝነት</translation> <translation id="2212565012507486665">ኩኪዎችን ፍቀድ</translation> <translation id="2228071138934252756">የእርስዎን ካሜራ <ph name="APP_NAME" /> እንዲደርስበት ለማድረግ፣ በ <ph name="BEGIN_LINK" />Android ቅንብሮች<ph name="END_LINK" /> ውስጥ ካሜራን በተጨማሪ ያብሩ።</translation> <translation id="2241634353105152135">አንድ ጊዜ ብቻ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ar.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ar.xtb index 4862c8d..031497d 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ar.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ar.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">فتح تطبيق فوري</translation> <translation id="2148716181193084225">اليوم</translation> <translation id="2182457891543959921">طلب الإذن قبل السماح لموقع إلكتروني بإنشاء خريطة ثلاثية الأبعاد للبيئة المحيطة بك أو تتبُّع موضع الكاميرا (مقترَح)</translation> -<translation id="2187243482123994665">استخدام الجهاز</translation> <translation id="2212565012507486665">السماح بملفات تعريف الارتباط</translation> <translation id="2228071138934252756">للسماح لتطبيق <ph name="APP_NAME" /> بالوصول إلى الكاميرا، يُرجى أيضًا تفعيل الكاميرا في <ph name="BEGIN_LINK" />إعدادات Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">مرة واحدة فقط</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_as.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_as.xtb index 88c8f22..0dd5157 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_as.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_as.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Instant এপ্ খোলক</translation> <translation id="2148716181193084225">আজি</translation> <translation id="2182457891543959921">ছাইটসমূহক আপোনাৰ চৌপাশৰ এখন 3D মেপ সৃষ্টি কৰিবলৈ অথবা কেমেৰাৰ স্থান ট্ৰেক কৰিবলৈ অনুমতি দিয়াৰ পূর্বে সোধক (চুপাৰিছ কৰা হয়)</translation> -<translation id="2187243482123994665">ব্যৱহাৰকাৰীৰ সক্ৰিয়তা</translation> <translation id="2212565012507486665">কুকিসমূহক অনুমতি দিয়ক</translation> <translation id="2228071138934252756"><ph name="APP_NAME" />ক আপোনাৰ কেমেৰা এক্সেছ কৰিবলৈ দিবলৈ <ph name="BEGIN_LINK" />Android ছেটিংসমূহ<ph name="END_LINK" />তো কেমেৰা অন কৰক।</translation> <translation id="2241634353105152135">মাত্ৰ এবাৰ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb index ad7fe3e..2fb9f919 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Ani tətbiqi açın</translation> <translation id="2148716181193084225">Bu gün</translation> <translation id="2182457891543959921">Saytların ətrafınızdakı sahələrin 3D xəritəsini yaratmasına və ya kamera mövqeyini izləməsinə icazə verməzdən əvvəl icazə tələb edin (tövsiyə edilir)</translation> -<translation id="2187243482123994665">İstifadəçinin evdə olması</translation> <translation id="2212565012507486665">Kukilərə icazə verin</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> tətbiqinə kameranıza giriş icazəsi vermək üçün <ph name="BEGIN_LINK" />Android Ayarlarında<ph name="END_LINK" /> kameranı da aktiv edin.</translation> <translation id="2241634353105152135">Sadəcə bir dəfə</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_be.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_be.xtb index 0a3fde2..b1879f0 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_be.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_be.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Адкрыць імгненную праграму</translation> <translation id="2148716181193084225">Сёння</translation> <translation id="2182457891543959921">Пытацца, перш чым дазволіць сайтам ствараць 3D-карту вашага асяроддзя і адсочваць становішча камеры (рэкамендуецца)</translation> -<translation id="2187243482123994665">Прысутнасць карыстальніка</translation> <translation id="2212565012507486665">Дазволіць файлы cookie</translation> <translation id="2228071138934252756">Каб праграма "<ph name="APP_NAME" />" атрымала доступ да камеры, уключыце камеру таксама ў <ph name="BEGIN_LINK" />Наладах Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Толькі адзін раз</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_bg.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_bg.xtb index a52ef49..1a19c59 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_bg.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_bg.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Отваряне на мигновеното приложение</translation> <translation id="2148716181193084225">Днес</translation> <translation id="2182457891543959921">Извеждане на запитване, преди да се разреши на сайтовете да създават триизмерна карта на заобикалящата ви среда или да следят позицията на камерата (препоръчително)</translation> -<translation id="2187243482123994665">Присъствие на потребителя</translation> <translation id="2212565012507486665">Разрешаване на „бисквитките“</translation> <translation id="2228071138934252756">За да разрешите на <ph name="APP_NAME" /> да осъществява достъп до камерата ви, тя трябва да бъде включена и от <ph name="BEGIN_LINK" />настройките на Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Само веднъж</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb index e535632..36cd388 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">ইনস্ট্যান্ট অ্যাপ খুলুন</translation> <translation id="2148716181193084225">আজ</translation> <translation id="2182457891543959921">আপনার আশেপাশের এলাকার একটি 3D ম্যাপ তৈরি করতে বা ক্যামেরার অবস্থান ট্র্যাক করতে কোনও সাইট অনুমোদন দেওয়ার আগে, একবার জিজ্ঞাসা করে নিন (সাজেস্ট করা হয়েছে)</translation> -<translation id="2187243482123994665">ব্যবহারকারীর উপস্থিতি</translation> <translation id="2212565012507486665">কুকিগুলিকে অনুমতি দিন</translation> <translation id="2228071138934252756">তাছাড়া, যাতে <ph name="APP_NAME" /> আপনার ক্যামেরা অ্যাক্সেস করতে পারে, তার জন্য <ph name="BEGIN_LINK" />Android সেটিংসে<ph name="END_LINK" /> গিয়েও ক্যামেরা চালু করে দিন।</translation> <translation id="2241634353105152135">শুধুমাত্র একবার</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_bs.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_bs.xtb index f28aa71..12fcbdc6 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_bs.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_bs.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Otvori instant aplikaciju</translation> <translation id="2148716181193084225">Danas</translation> <translation id="2182457891543959921">Web lokacije moraju tražiti odobrenje za kreiranje 3D mape okruženja i praćenje položaja kamere (preporučeno)</translation> -<translation id="2187243482123994665">Prisutnost korisnika</translation> <translation id="2212565012507486665">Dozvoli kolačiće</translation> <translation id="2228071138934252756">Da omogućite aplikaciji <ph name="APP_NAME" /> pristup kameri, također uključite kameru u <ph name="BEGIN_LINK" />Postavkama Androida<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Samo ovaj put</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb index 8f4d83a9..58d7bbd0 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Obre l'aplicació instantània</translation> <translation id="2148716181193084225">Avui</translation> <translation id="2182457891543959921">Pregunta abans de permetre que els llocs web creïn un mapa en 3D del teu entorn o facin un seguiment de la posició de la càmera (opció recomanada)</translation> -<translation id="2187243482123994665">Presència de l'usuari</translation> <translation id="2212565012507486665">Permet les galetes</translation> <translation id="2228071138934252756">Perquè <ph name="APP_NAME" /> pugui accedir a la càmera, també has d'activar-la a la <ph name="BEGIN_LINK" />configuració d'Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Només una vegada</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_cs.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_cs.xtb index 8d5026b..d240d81 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_cs.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_cs.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Otevřít okamžitou aplikaci</translation> <translation id="2148716181193084225">Dnes</translation> <translation id="2182457891543959921">Předtím, než webům bude povoleno vytvořit 3D mapu vašeho okolí nebo sledovat polohu kamery, se zeptat (doporučeno)</translation> -<translation id="2187243482123994665">Aktivita uživatele</translation> <translation id="2212565012507486665">Povolit cookies</translation> <translation id="2228071138934252756">Pokud aplikaci <ph name="APP_NAME" /> chcete umožnit přístup k fotoaparátu, zapněte fotoaparát také v <ph name="BEGIN_LINK" />Nastavení Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Pouze jednou</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_da.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_da.xtb index 20b6e30..107a361 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_da.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_da.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Åbn instant-app</translation> <translation id="2148716181193084225">I dag</translation> <translation id="2182457891543959921">Spørg, inden websites kan oprette et 3D-kort over dine omgivelser eller registrere kamerapositionen (anbefales)</translation> -<translation id="2187243482123994665">Brugertilstedeværelse</translation> <translation id="2212565012507486665">Tillad cookies</translation> <translation id="2228071138934252756">Aktivér også dit kamera i <ph name="BEGIN_LINK" />Android-indstillingerne<ph name="END_LINK" /> for at give <ph name="APP_NAME" /> adgang til kameraet.</translation> <translation id="2241634353105152135">Kun én gang</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_de.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_de.xtb index 66533c1..3d63c28 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_de.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_de.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Instant-App öffnen</translation> <translation id="2148716181193084225">Heute</translation> <translation id="2182457891543959921">Nachfragen, bevor Websites erlaubt wird, eine 3D-Karte meiner Umgebung zu erstellen oder die Kameraposition zu verfolgen (empfohlen)</translation> -<translation id="2187243482123994665">Anwesenheit des Nutzers</translation> <translation id="2212565012507486665">Cookies zulassen</translation> <translation id="2228071138934252756">Um <ph name="APP_NAME" /> Zugriff auf Ihre Kamera zu gewähren, muss die Kameraberechtigung auch in den <ph name="BEGIN_LINK" />Android-Einstellungen<ph name="END_LINK" /> aktiviert werden.</translation> <translation id="2241634353105152135">Nur einmal</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb index 5d738bb..dcd5f75 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Άνοιγμα Instant Εφαρμογής</translation> <translation id="2148716181193084225">Σήμερα</translation> <translation id="2182457891543959921">Να γίνεται ερώτηση προτού επιτραπεί σε ιστοτόπους η δημιουργία τρισδιάστατου χάρτη του περιβάλλοντα χώρου σας και η παρακολούθηση της θέσης της κάμερας (συνιστάται)</translation> -<translation id="2187243482123994665">Παρουσία χρήστη</translation> <translation id="2212565012507486665">Αποδοχή cookie</translation> <translation id="2228071138934252756">Για να επιτρέψετε στην εφαρμογή <ph name="APP_NAME" /> να αποκτήσει πρόσβαση στην κάμερά σας, ενεργοποιήστε επίσης την κάμερα στις <ph name="BEGIN_LINK" />Ρυθμίσεις Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Μόνο μία φορά</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_en-GB.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_en-GB.xtb index e4d3125..389b01bd 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_en-GB.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_en-GB.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Open Instant App</translation> <translation id="2148716181193084225">Today</translation> <translation id="2182457891543959921">Ask before allowing sites to create a 3D map of your surroundings or track camera position (recommended)</translation> -<translation id="2187243482123994665">User presence</translation> <translation id="2212565012507486665">Allow cookies</translation> <translation id="2228071138934252756">To let <ph name="APP_NAME" /> access your camera, also turn on camera in <ph name="BEGIN_LINK" />Android settings<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Just once</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_es-419.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_es-419.xtb index e98c862..b4732f991 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_es-419.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_es-419.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Abrir app instantánea</translation> <translation id="2148716181193084225">Hoy</translation> <translation id="2182457891543959921">Preguntar antes de permitir que los sitios creen un mapa 3D de tu entorno o hagan un seguimiento de la posición de la cámara (recomendado)</translation> -<translation id="2187243482123994665">Presencia del usuario</translation> <translation id="2212565012507486665">Permitir cookies</translation> <translation id="2228071138934252756">Para permitir que <ph name="APP_NAME" /> acceda a tu cámara, actívala también en la <ph name="BEGIN_LINK" />Configuración de Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Solo esta vez</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_es.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_es.xtb index d4c9c92..2729ebb7 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_es.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_es.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Abrir aplicación instantánea</translation> <translation id="2148716181193084225">Hoy</translation> <translation id="2182457891543959921">Preguntar antes de permitir que los sitios web creen un mapa 3D de tu entorno o hagan un seguimiento de la posición de la cámara (recomendado)</translation> -<translation id="2187243482123994665">Presencia del usuario</translation> <translation id="2212565012507486665">Permitir cookies</translation> <translation id="2228071138934252756">Para que <ph name="APP_NAME" /> pueda acceder a tu cámara, activa la cámara también en los <ph name="BEGIN_LINK" />ajustes de Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Solo una vez</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_et.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_et.xtb index 228db145..e9393b9 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_et.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_et.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Ava installimata avatav rakendus</translation> <translation id="2148716181193084225">Täna</translation> <translation id="2182457891543959921">Küsi enne saitidele loa andmist mind ümbritsevast 3D-kaardi loomiseks või kaamera asendi jälgimiseks (soovitatav)</translation> -<translation id="2187243482123994665">Kasutaja kohalolek</translation> <translation id="2212565012507486665">Luba küpsisefailid</translation> <translation id="2228071138934252756">Selleks et anda rakendusele <ph name="APP_NAME" /> juurdepääs teie kaamerale, lülitage kaamera sisse ka <ph name="BEGIN_LINK" />Androidi seadetes<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Ainult ühe korra</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_eu.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_eu.xtb index 517a53b9..812129d3 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_eu.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_eu.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Ireki zuzeneko aplikazioa</translation> <translation id="2148716181193084225">Gaur</translation> <translation id="2182457891543959921">Eskatu zure baimena webguneei inguruaren 3D-ko mapa bat sortu edo kameraren posizioaren jarraipena egiteko baimena eman aurretik (gomendatua)</translation> -<translation id="2187243482123994665">Erabiltzailearen presentzia</translation> <translation id="2212565012507486665">Onartu cookieak</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> aplikazioari kamera atzitzeko baimena emateko, kamera atzitzeko baimena aktibatu behar duzu <ph name="BEGIN_LINK" />Android-en ezarpenetan<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Behin soilik</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb index 7fe7a7aa..cd1de4f 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">برنامه فوری را باز کنید</translation> <translation id="2148716181193084225">امروز</translation> <translation id="2182457891543959921">قبل از اینکه به سایتها اجازه داده شود نقشه سهبعدی از محیط ایجاد کنند یا موقعیت دوربین را ردیابی کنند سؤال شود (توصیه میشود)</translation> -<translation id="2187243482123994665">حضور کاربر</translation> <translation id="2212565012507486665">مجاز کردن کوکی ها</translation> <translation id="2228071138934252756">برای اینکه به <ph name="APP_NAME" /> اجازه دهید به دوربین دسترسی پیدا کند، دوربین را در <ph name="BEGIN_LINK" />تنظیمات Android<ph name="END_LINK" /> نیز روشن کنید.</translation> <translation id="2241634353105152135">فقط یک بار</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb index 9f851f6..5e4b973b 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Avaa Instant-sovellus</translation> <translation id="2148716181193084225">Tänään</translation> <translation id="2182457891543959921">Kysy, saavatko sivustot luoda 3D-kartan ympäristöstäsi tai seurata kameran asentoa (suositus)</translation> -<translation id="2187243482123994665">Käyttäjän paikallaolo</translation> <translation id="2212565012507486665">Salli evästeet</translation> <translation id="2228071138934252756">Laita kamera päälle myös <ph name="BEGIN_LINK" />Androidin asetuksista<ph name="END_LINK" />, jotta <ph name="APP_NAME" /> saa pääsyn kameraasi.</translation> <translation id="2241634353105152135">Vain kerran</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb index ca236a51..a38e319e 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Buksan ang Instant App</translation> <translation id="2148716181193084225">Ngayon</translation> <translation id="2182457891543959921">Magtanong bago payagan ang mga site na gumawa ng 3D na mapa ng iyong kapaligiran o subaybayan ang posisyon ng camera (inirerekomenda)</translation> -<translation id="2187243482123994665">Pagiging aktibo ng user</translation> <translation id="2212565012507486665">Payagan ang cookies</translation> <translation id="2228071138934252756">Para payagan ang <ph name="APP_NAME" /> na i-access ang iyong camera, i-on din ang camera sa <ph name="BEGIN_LINK" />Mga Setting ng Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Isang beses lang</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fr-CA.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fr-CA.xtb index dc204c20..dfcc37d 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_fr-CA.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fr-CA.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Ouvrir l'application instantanée</translation> <translation id="2148716181193084225">Aujourd'hui</translation> <translation id="2182457891543959921">Demander avant d'autoriser les sites à créer une carte 3D de votre environnement ou à faire le suivi de la position de l'appareil photo (recommandé)</translation> -<translation id="2187243482123994665">Présence de l'utilisateur</translation> <translation id="2212565012507486665">Autoriser les témoins</translation> <translation id="2228071138934252756">Pour autoriser <ph name="APP_NAME" /> à accéder à votre appareil photo, activez aussi celui-ci dans les <ph name="BEGIN_LINK" />paramètres d'Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Une fois</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fr.xtb index 94be2c87..5d4bfc1c 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_fr.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fr.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Ouvrir l'appli instantanée</translation> <translation id="2148716181193084225">Aujourd'hui</translation> <translation id="2182457891543959921">Vous demander votre avis avant d'autoriser les sites à créer un plan 3D de votre environnement ou à suivre la position de la caméra (recommandé)</translation> -<translation id="2187243482123994665">Présence de l'utilisateur</translation> <translation id="2212565012507486665">Autoriser les cookies</translation> <translation id="2228071138934252756">Pour autoriser <ph name="APP_NAME" /> à accéder à votre appareil photo, activez également celui-ci dans les <ph name="BEGIN_LINK" />paramètres Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Une seule fois</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_gl.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_gl.xtb index 0b1649e..4dccc47 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_gl.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_gl.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Abrir aplicacións instantáneas</translation> <translation id="2148716181193084225">Hoxe</translation> <translation id="2182457891543959921">Preguntar antes de permitir que os sitios creen un mapa 3D do que te rodea e fagan un seguimento da posición da cámara (recomendado)</translation> -<translation id="2187243482123994665">Estado de actividade do usuario</translation> <translation id="2212565012507486665">Permitir uso de cookies</translation> <translation id="2228071138934252756">Para permitir que <ph name="APP_NAME" /> acceda á cámara, actívaa tamén en <ph name="BEGIN_LINK" />Configuración de Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Só unha vez</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_gu.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_gu.xtb index 61c112b4..8c5c5d4 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_gu.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_gu.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">ઝટપટ ઍપ્લિકેશન ખોલો</translation> <translation id="2148716181193084225">આજે</translation> <translation id="2182457891543959921">કોઈ સાઇટને તમારી આજુબાજુનો 3D નકશો બનાવતા અથવા કૅમેરાની સ્થિતિને ટ્રૅક કરવાની મંજૂરી આપતા પહેલાં પૂછો (સુઝાવ આપીએ છીએ)</translation> -<translation id="2187243482123994665">વપરાશકર્તાની હાજરી</translation> <translation id="2212565012507486665">કુકીને મંજૂરી આપો</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> તમારો કૅમેરા ઍક્સેસ કરી શકે તે માટે <ph name="BEGIN_LINK" />Android સેટિંગ<ph name="END_LINK" />માં પણ કૅમેરા ચાલુ કરો.</translation> <translation id="2241634353105152135">માત્ર એક વખત</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb index 2318f51..4fa85fe 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">इंस्टैंट ऐप्लिकेशन खोलें</translation> <translation id="2148716181193084225">आज</translation> <translation id="2182457891543959921">किसी साइट को आपके आस-पास की जगह का 3D मैप बनाने या कैमरे की स्थिति ट्रैक करने की अनुमति देने से पहले पूछें (सुझाया गया)</translation> -<translation id="2187243482123994665">उपयोगकर्ता की मौजूदगी</translation> <translation id="2212565012507486665">कुकी की अनुमति दें</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> को कैमरे का ऐक्सेस देने के लिए, <ph name="BEGIN_LINK" />Android की सेटिंग<ph name="END_LINK" /> में जाकर भी कैमरा चालू करें.</translation> <translation id="2241634353105152135">बस एक बार</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hr.xtb index 12812ea..3567ce0 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_hr.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hr.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Otvori instant aplikaciju</translation> <translation id="2148716181193084225">Danas</translation> <translation id="2182457891543959921">Prikaži upit prije omogućivanja web-lokacijama da izrađuju 3D kartu vašeg okruženja i prate položaj kamere (preporučeno)</translation> -<translation id="2187243482123994665">Korisnikova prisutnost</translation> <translation id="2212565012507486665">Dopusti kolačiće</translation> <translation id="2228071138934252756">Da bi aplikacija <ph name="APP_NAME" /> mogla pristupiti vašoj kameri, uključite kameru i u <ph name="BEGIN_LINK" />Androidovim postavkama<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Samo jednom</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb index 46a0c1d..1f46d16 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Azonnali alkalmazás megnyitása</translation> <translation id="2148716181193084225">Ma</translation> <translation id="2182457891543959921">Kérdezzen rá, mielőtt engedélyezi a webhelyek számára 3D-s térkép létrehozását az Ön környezetéről, valamint a kamera pozíciójának követését (ajánlott)</translation> -<translation id="2187243482123994665">Felhasználói jelenlét</translation> <translation id="2212565012507486665">Cookie-k engedélyezése</translation> <translation id="2228071138934252756">Ahhoz, hogy a(z) <ph name="APP_NAME" /> hozzáférhessen a kamerához, a kamerát az <ph name="BEGIN_LINK" />Android-beállítások<ph name="END_LINK" /> között is be kell kapcsolni.</translation> <translation id="2241634353105152135">Csak egyszer</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hy.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hy.xtb index 44a0b5c..d21adfc 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_hy.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hy.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Բացել ակնթարթային հավելվածը</translation> <translation id="2148716181193084225">Այսօր</translation> <translation id="2182457891543959921">Կայքերի համար թույլտվություն խնդրել՝ ստեղծելու շրջակայքի եռաչափ քարտեզն ու հետագծելու ձեր տեսախցիկի դիրքը (խորհուրդ է տրվում)</translation> -<translation id="2187243482123994665">Օգտատիրոջ ներկայություն</translation> <translation id="2212565012507486665">Թույլատրել քուքիները</translation> <translation id="2228071138934252756">Որպեսզի տեսախցիկը հասանելի դառնա <ph name="APP_NAME" />-ին, միացրեք այն <ph name="BEGIN_LINK" />Android-ի կարգավորումներում<ph name="END_LINK" />։</translation> <translation id="2241634353105152135">Միայն այս անգամ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_id.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_id.xtb index a280343..ceb6ac1 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_id.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_id.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Buka Aplikasi Instan</translation> <translation id="2148716181193084225">Hari ini</translation> <translation id="2182457891543959921">Tanyakan sebelum mengizinkan situs membuat peta 3D untuk area di sekeliling Anda atau melacak posisi kamera (direkomendasikan)</translation> -<translation id="2187243482123994665">Kehadiran pengguna</translation> <translation id="2212565012507486665">Izinkan cookie</translation> <translation id="2228071138934252756">Untuk mengizinkan <ph name="APP_NAME" /> mengakses kamera Anda, aktifkan juga kamera di <ph name="BEGIN_LINK" />Setelan Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Sekali ini saja</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb index a607eb4..ceb8a06 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Opna skyndiforrit</translation> <translation id="2148716181193084225">Í dag</translation> <translation id="2182457891543959921">Spyrja áður en vefsvæðum er leyft að búa til þrívíddarkort af umhverfinu eða rekja staðsetningu myndavélarinnar (ráðlagt)</translation> -<translation id="2187243482123994665">Viðvera notanda</translation> <translation id="2212565012507486665">Leyfa fótspor</translation> <translation id="2228071138934252756">Til að veita <ph name="APP_NAME" /> aðgang að myndavélinni þarftu einnig að kveikja á henni í <ph name="BEGIN_LINK" />stillingum Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Bara einu sinni</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb index ae41c34..ab91568 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Apri l'app istantanea</translation> <translation id="2148716181193084225">Oggi</translation> <translation id="2182457891543959921">Chiedi conferma prima di consentire ai siti di creare una mappa 3D dell'ambiente circostante o di monitorare la posizione della fotocamera (opzione consigliata)</translation> -<translation id="2187243482123994665">Presenza dell'utente</translation> <translation id="2212565012507486665">Consenti cookie</translation> <translation id="2228071138934252756">Per consentire all'app <ph name="APP_NAME" /> di accedere alla fotocamera, attiva la fotocamera anche nelle <ph name="BEGIN_LINK" />Impostazioni Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Solo una volta</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_iw.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_iw.xtb index e3cf293..83d60e5 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_iw.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_iw.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">פתח אפליקציה ללא התקנה</translation> <translation id="2148716181193084225">היום</translation> <translation id="2182457891543959921">תוצג שאלה לפני מתן הרשאה לאתרים ליצור מפה בתלת ממד של הסביבה שלך או לעקוב אחר מיקום המצלמה (מומלץ)</translation> -<translation id="2187243482123994665">נוכחות משתמש</translation> <translation id="2212565012507486665">אישור קובצי cookie</translation> <translation id="2228071138934252756">כדי לאפשר ל-<ph name="APP_NAME" /> לגשת אל המצלמה, צריך להפעיל אותה גם ב<ph name="BEGIN_LINK" />הגדרות Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">פעם אחת בלבד</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb index 1f0b6c4..7f4cb488 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">プレビュー アプリを開く</translation> <translation id="2148716181193084225">今日</translation> <translation id="2182457891543959921">サイトに周囲の 3D マップの作成またはカメラ位置の追跡を許可する前に確認します(推奨)</translation> -<translation id="2187243482123994665">ユーザーのアクティブ状態</translation> <translation id="2212565012507486665">Cookie を許可</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> にカメラへのアクセスを許可するには、<ph name="BEGIN_LINK" />Android の設定<ph name="END_LINK" />でもカメラをオンにしてください。</translation> <translation id="2241634353105152135">一回限り</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ka.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ka.xtb index a02da62..90c20114 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ka.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ka.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">მყისიერი აპის გახსნა</translation> <translation id="2148716181193084225">დღეს</translation> <translation id="2182457891543959921">შეკითხვა საიტებისთვის თქვენი გარემოს 3-განზომილებიანი რუკის შექმნის ან კამერის პოზიციისთვის თვალის მიდევნების დაშვებამდე (რეკომენდებული)</translation> -<translation id="2187243482123994665">მომხმარებლის დასწრება</translation> <translation id="2212565012507486665">ქუქი-ჩანაწერების დაშვება</translation> <translation id="2228071138934252756"><ph name="APP_NAME" />-მა კამერით რომ ისარგებლოს, გაააქტიურეთ კამერაზე წვდომის ნებართვაც <ph name="BEGIN_LINK" />Android-ის პარამეტრებიდან<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">მხოლოდ ერთხელ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_kk.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_kk.xtb index 1d763a0..23120a37 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_kk.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_kk.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Instant App ашу</translation> <translation id="2148716181193084225">Бүгін</translation> <translation id="2182457891543959921">Cайттарға айналаңыздың 3D картасын жасауға немесе камераңыздың орнын бақылауға рұқсат беру алдында сізден сұраy (ұсынылады)</translation> -<translation id="2187243482123994665">Пайдаланушының бар-жоғы</translation> <translation id="2212565012507486665">Cookie файлдарына рұқсат беру</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> браузері камераны пайдалануы үшін, <ph name="BEGIN_LINK" />Android параметрлерінде<ph name="END_LINK" /> оны да қосыңыз.</translation> <translation id="2241634353105152135">Бір-ақ рет</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb index f02f2e4..a08883c7 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">បើកកម្មវិធីប្រើភ្លាមៗ</translation> <translation id="2148716181193084225">ថ្ងៃនេះ</translation> <translation id="2182457891543959921">សួរមុនពេលអនុញ្ញាតឱ្យគេហទំព័របង្កើតផែនទី 3D នៃមជ្ឈដ្ឋានជុំវិញរបស់អ្នក ឬតាមដានទីតាំងកាមេរ៉ា (បានណែនាំ)</translation> -<translation id="2187243482123994665">វត្តមានរបស់អ្នកប្រើប្រាស់</translation> <translation id="2212565012507486665">អនុញ្ញាតខូគី</translation> <translation id="2228071138934252756">ដើម្បីអនុញ្ញាតឱ្យ <ph name="APP_NAME" /> ចូលប្រើកាមេរ៉ារបស់អ្នក អ្នកក៏ត្រូវបើកកាមេរ៉ានៅក្នុង<ph name="BEGIN_LINK" />ការកំណត់ Android<ph name="END_LINK" /> ផងដែរ។</translation> <translation id="2241634353105152135">ម្តងប៉ុណ្ណោះ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb index 3e29980..051f228 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">ತತ್ಕ್ಷಣದ ಅಪ್ಲಿಕೇಶನ್ ತೆರೆಯಿರಿ</translation> <translation id="2148716181193084225">ಇಂದು</translation> <translation id="2182457891543959921">ನಿಮ್ಮ ಸುತ್ತಮುತ್ತಲಿನ 3D ನಕ್ಷೆಗಳನ್ನು ರಚಿಸಲು ಅಥವಾ ಕ್ಯಾಮರಾ ಸ್ಥಿತಿಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಸೈಟ್ಗೆ ಅನುಮತಿಸುವ ಮೊದಲು ಕೇಳಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿರುವುದು)</translation> -<translation id="2187243482123994665">ಬಳಕೆದಾರರ ಉಪಸ್ಥಿತಿ</translation> <translation id="2212565012507486665">ಕುಕೀಗಳನ್ನು ಅನುಮತಿಸಿ</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> ನಿಮ್ಮ ಕ್ಯಾಮರಾವನ್ನು ಪ್ರವೇಶಿಸುವುದಕ್ಕೆ ಅನುಮತಿಸಲು, <ph name="BEGIN_LINK" />Android ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ<ph name="END_LINK" /> ಕ್ಯಾಮರಾವನ್ನು ಸಹ ಆನ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.</translation> <translation id="2241634353105152135">ಕೇವಲ ಒಂದು ಬಾರಿ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb index 70c77ef..5792d01 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">인스턴트 앱 열기</translation> <translation id="2148716181193084225">오늘</translation> <translation id="2182457891543959921">사이트에서 주변 환경의 3D 지도를 생성하거나 카메라 위치를 추적하도록 허용하기 전에 확인(권장)</translation> -<translation id="2187243482123994665">사용자 접속 상태</translation> <translation id="2212565012507486665">쿠키 허용</translation> <translation id="2228071138934252756"><ph name="APP_NAME" />에서 카메라에 액세스하도록 허용하려면 <ph name="BEGIN_LINK" />Android 설정<ph name="END_LINK" />에서도 카메라를 사용 설정하세요.</translation> <translation id="2241634353105152135">한 번만</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ky.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ky.xtb index 1c06bc36..e3f72567 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ky.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ky.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Ыкчам ачылуучу колдонмону ачуу</translation> <translation id="2148716181193084225">Бүгүн</translation> <translation id="2182457891543959921">Сайттар айланаңыздын 3D картасын түзгөнү же камераңыздын абалын көргөнү жатканда уруксат суралсын (сунушталат)</translation> -<translation id="2187243482123994665">Колдонуучунун сайтта же сайтта эместиги</translation> <translation id="2212565012507486665">Cookies файлдарына уруксат берүү</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> колдонмосуна камерага кирүүгө уруксат берүү үчүн, <ph name="BEGIN_LINK" />Android Жөндөөлөрүнөн<ph name="END_LINK" /> камераны күйгүзүңүз.</translation> <translation id="2241634353105152135">Бир гана жлу</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_lo.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_lo.xtb index c6af6d2c..979c8c8 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_lo.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_lo.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">ເປີດແອັບພ້ອມໃຊ້</translation> <translation id="2148716181193084225">ມື້ນີ້</translation> <translation id="2182457891543959921">ຖາມກ່ອນທີ່ຈະອະນຸຍາດໃຫ້ເວັບໄຊສ້າງແຜນທີ່ 3 ມິຕິຂອງສິ່ງທີ່ຢູ່ອ້ອມຂ້າງຕົວທ່ານ ຫຼື ຕາມຕຳແໜ່ງກ້ອງ (ແນະນຳ)</translation> -<translation id="2187243482123994665">ການເຄື່ອນໄຫວນຳໃຊ້ຂອງຜູ້ໃຊ້</translation> <translation id="2212565012507486665">ອະນຸຍາດຄຸກກີ້</translation> <translation id="2228071138934252756">ເພື່ອອະນຸຍາດໃຫ້ <ph name="APP_NAME" /> ເຂົ້າເຖິງກ້ອງຖ່າຍຮູບຂອງທ່ານ, ກະລຸນາເປີດກ້ອງຖ່າຍຮູບໃນ <ph name="BEGIN_LINK" />ການຕັ້ງຄ່າ Android<ph name="END_LINK" /> ນຳ.</translation> <translation id="2241634353105152135">ຄັ້ງດຽວເທົ່ານັ້ນ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb index f469e8ce..2d37b7d 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Atidaryti akimirksniu įkeliamą programėlę</translation> <translation id="2148716181193084225">Šiandien</translation> <translation id="2182457891543959921">Klausti, ar svetainėms leidžiama kurti jūsų aplinkos 3D žemėlapį ir stebėti kameros padėtį (rekomenduojama)</translation> -<translation id="2187243482123994665">Naudotojo buvimas</translation> <translation id="2212565012507486665">Leisti slapukus</translation> <translation id="2228071138934252756">Norėdami leisti „<ph name="APP_NAME" />“ pasiekti jūsų kamerą, taip pat įjunkite ją <ph name="BEGIN_LINK" />„Android“ nustatymuose<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Tik vieną kartą</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_lv.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_lv.xtb index 7b3aceb..e3e72de 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_lv.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_lv.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Atvērt tūlītējo lietotni</translation> <translation id="2148716181193084225">Šodien</translation> <translation id="2182457891543959921">Vaicāt, pirms ļaut vietnēm izveidot jūsu apkārtnes 3D karti vai izsekot kameras pozīciju (ieteicams)</translation> -<translation id="2187243482123994665">Lietotāja aktivitāte</translation> <translation id="2212565012507486665">Atļaut sīkfailus</translation> <translation id="2228071138934252756">Lai atļautu lietotnei <ph name="APP_NAME" /> piekļūt jūsu kamerai, ieslēdziet kameru arī <ph name="BEGIN_LINK" />Android iestatījumos<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Tikai vienreiz</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_mk.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_mk.xtb index 2b04875..0ad4803 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_mk.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_mk.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Отвори ја инстант апликацијата</translation> <translation id="2148716181193084225">Денес</translation> <translation id="2182457891543959921">Прашувај пред да им дозволиш на сајтовите да создадат 3D-карта на опкружувањето или да ја следат позицијата на камерата (препорачано)</translation> -<translation id="2187243482123994665">Присуство на корисник</translation> <translation id="2212565012507486665">Дозволи колачиња</translation> <translation id="2228071138934252756">За да овозможите <ph name="APP_NAME" /> да пристапува до вашата камера, вклучете ја дозволата за камерата и во <ph name="BEGIN_LINK" />Поставки за Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Само еднаш</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb index f87a1807..0887983 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">ഇൻസ്റ്റന്റ് ആപ്പ് തുറക്കുക</translation> <translation id="2148716181193084225">ഇന്ന്</translation> <translation id="2182457891543959921">നിങ്ങളുടെ ചുറ്റുപാടുകളുടെ 3D മാപ്പ് സൃഷ്ടിക്കുന്നതിനോ ക്യാമറയുടെ സ്ഥാനം ട്രാക്ക് ചെയ്യുന്നതിനോ സൈറ്റുകളെ അനുവദിക്കുന്നതിന് മുമ്പ് ചോദിക്കുക (ശുപാർശ ചെയ്യുന്നത്)</translation> -<translation id="2187243482123994665">ഉപയോക്തൃ സാന്നിധ്യം</translation> <translation id="2212565012507486665">കുക്കികൾ അനുവദിക്കുക</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> ആപ്പിനെ നിങ്ങളുടെ ക്യാമറ ആക്സസ് ചെയ്യാൻ അനുവദിക്കുന്നതിന്, <ph name="BEGIN_LINK" />Android ക്രമീകരണത്തിലും<ph name="END_LINK" /> ക്യാമറ ഓണാക്കുക.</translation> <translation id="2241634353105152135">ഒരിക്കൽ മാത്രം</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_mn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_mn.xtb index 7032567..46e8bb9 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_mn.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_mn.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Шуурхай апп-г нээх</translation> <translation id="2148716181193084225">Өнөөдөр</translation> <translation id="2182457891543959921">Сайтуудад таны эргэн тойрны 3D газрын зургийг үүсгэх эсвэл камерын хөдөлгөөнийг хянахыг зөвшөөрөхийн өмнө асуух (санал болгосон)</translation> -<translation id="2187243482123994665">Хэрэглэгч байгаа эсэх</translation> <translation id="2212565012507486665">Күүкиг зөвшөөрөх</translation> <translation id="2228071138934252756"><ph name="APP_NAME" />-д камертаа хандахыг зөвшөөрөхийн тулд камерыг мөн <ph name="BEGIN_LINK" />Андройдын тохиргоо<ph name="END_LINK" />-нд асаана уу.</translation> <translation id="2241634353105152135">Ганц удаа</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb index 25089494..1179cb6 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">झटपट ॲप्स उघडा</translation> <translation id="2148716181193084225">आज</translation> <translation id="2182457891543959921">साइटना तुमच्या आसपासच्या परिसराचा 3D नकाशा तयार करू किंवा कॅमेर्याचे स्थान ट्रॅक करू देण्याआधी विचारा (शिफारस केलेले)</translation> -<translation id="2187243482123994665">वापरकर्त्याची ॲक्टिव्हिटी</translation> <translation id="2212565012507486665">कुकींना अनुमती द्या</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> ला तुमचा कॅमेरा ॲक्सेस करू देण्यासाठी, <ph name="BEGIN_LINK" />Android सेटिंग्ज<ph name="END_LINK" /> मध्येदेखील कॅमेरा सुरू करा.</translation> <translation id="2241634353105152135">फक्त एकदाच</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb index a8f8f3e8..2cf04a4 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Buka Apl Segera</translation> <translation id="2148716181193084225">Hari ini</translation> <translation id="2182457891543959921">Tanya sebelum membenarkan tapak membuat peta 3D bagi persekitaran anda atau menjejaki kedudukan kamera (disyorkan)</translation> -<translation id="2187243482123994665">Kehadiran pengguna</translation> <translation id="2212565012507486665">Benarkan kuki</translation> <translation id="2228071138934252756">Untuk membolehkan <ph name="APP_NAME" /> mengakses kamera anda, hidupkan juga kamera dalam <ph name="BEGIN_LINK" />Tetapan Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Hanya sekali</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_my.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_my.xtb index 3f6fa63..72b0d2a2 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_my.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_my.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">ချက်ခြင်းသုံးအက်ပ်ကို ဖွင့်ရန်</translation> <translation id="2148716181193084225">ယနေ့</translation> <translation id="2182457891543959921">သင့်ပတ်ဝန်းကျင်၏ 3D မြေပုံဆွဲခြင်း သို့မဟုတ် ကင်မရာအနေအထား ခြေရာခံခြင်းတို့အတွက် ဝဘ်ဆိုက်များကို ခွင့်မပြုမီ မေးမြန်းရန် (အကြံပြုထားသည်)</translation> -<translation id="2187243482123994665">အသုံးပြုသူ ရှိနေမှု</translation> <translation id="2212565012507486665">ကွတ်ကီးများ ခွင့်ပြုရန်</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> က သင့်ကင်မရာကို သုံးနိုင်ရန် <ph name="BEGIN_LINK" />Android ဆက်တင်များ<ph name="END_LINK" /> တွင်လည်း ကင်မရာကို ဖွင့်ပါ။</translation> <translation id="2241634353105152135">တစ်ကြိမ်သာ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ne.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ne.xtb index cfec33b6..a9eff91 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ne.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ne.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">तात्कालिक एप खोल्नुहोस्</translation> <translation id="2148716181193084225">आज</translation> <translation id="2182457891543959921">साइटहरूलाई आफू वरपरको ठाउँको 3D नक्सा बनाउन वा क्यामेराको अवस्था पत्ता लगाउन दिनुअघि मलाई सोधियोस् (सिफारिस गरिएको)</translation> -<translation id="2187243482123994665">प्रयोगकर्ताको उपस्थिति</translation> <translation id="2212565012507486665">कुकीहरूलाई अनुमति दिनुहोस्</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> लाई आफ्नो क्यामेरा प्रयोग गर्न दिन <ph name="BEGIN_LINK" />Android का सेटिङ<ph name="END_LINK" />मा गई क्यामेरा पनि अन गर्नुहोस्।</translation> <translation id="2241634353105152135">एकपटक मात्र</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_nl.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_nl.xtb index edccc2b..6212b1e9 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_nl.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_nl.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Instant-app openen</translation> <translation id="2148716181193084225">Vandaag</translation> <translation id="2182457891543959921">Vragen voordat sites een 3D-kaart van je omgeving mogen maken of de camerapositie mogen volgen (aanbevolen)</translation> -<translation id="2187243482123994665">Aanwezigheid van gebruiker</translation> <translation id="2212565012507486665">Cookies toestaan</translation> <translation id="2228071138934252756">Als je <ph name="APP_NAME" /> toegang wilt geven tot je camera, moet je de camera ook inschakelen via de <ph name="BEGIN_LINK" />Android-instellingen<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Slechts één keer</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_no.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_no.xtb index 99dcd9a..c712a9c 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_no.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_no.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Åpne instant-appen</translation> <translation id="2148716181193084225">I dag</translation> <translation id="2182457891543959921">Spør før nettsteder får lage 3D-kart av omgivelsene dine eller spore kameraposisjonen (anbefales)</translation> -<translation id="2187243482123994665">Brukertilstedeværelse</translation> <translation id="2212565012507486665">Tillat informasjonskapsler</translation> <translation id="2228071138934252756">For å gi <ph name="APP_NAME" /> tilgang til kameraet må du også slå på kameraet i <ph name="BEGIN_LINK" />Android-innstillingene<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Bare én gang</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_or.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_or.xtb index f7a633fe..20469a2 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_or.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_or.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">ଇନ୍ଷ୍ଟାଣ୍ଟ ଆପ୍ ଖୋଲନ୍ତୁ</translation> <translation id="2148716181193084225">ଆଜି</translation> <translation id="2182457891543959921">ଆପଣଙ୍କ ପରିପାର୍ଶ୍ୱର ଏକ 3D ମ୍ୟାପ୍ ତିଆରି କରିବା ଏବଂ କ୍ୟାମେରା ସ୍ଥିତି ଟ୍ରାକ୍ କରିବାକୁ ସାଇଟଗୁଡ଼ିକୁ ଅନୁମତି ଦେବା ପୂର୍ବରୁ ପଚାରନ୍ତୁ (ସୁପାରିଶ କରାଯାଇଛି)</translation> -<translation id="2187243482123994665">ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ସକ୍ରିୟତା</translation> <translation id="2212565012507486665">କୁକୀଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ</translation> <translation id="2228071138934252756"><ph name="APP_NAME" />କୁ ଆପଣଙ୍କ କ୍ୟାମେରା ଆକ୍ସେସ୍ ଦେବା ପାଇଁ, <ph name="BEGIN_LINK" />Android ସେଟିଂସ<ph name="END_LINK" />ରେ କ୍ୟାମେରା ମଧ୍ୟ ଚାଲୁ କରନ୍ତୁ।</translation> <translation id="2241634353105152135">ଥରେ ମାତ୍ର</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_pa.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_pa.xtb index b3de7a2..9cc0b10c 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_pa.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_pa.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">ਤਤਕਾਲ ਐਪ ਖੋਲ੍ਹੋ</translation> <translation id="2148716181193084225">ਅੱਜ</translation> <translation id="2182457891543959921">ਸਾਈਟਾਂ ਵੱਲੋਂ ਤੁਹਾਡੇ ਆਲੇ-ਦੁਆਲੇ ਦਾ 3D ਨਕਸ਼ਾ ਬਣਾਉਣ ਜਾਂ ਕੈਮਰਾ ਸਥਿਤੀ ਨੂੰ ਟਰੈਕ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਤੋਂ ਪਹਿਲਾਂ ਪੁੱਛੋ (ਸਿਫ਼ਾਰਸ਼ੀ)</translation> -<translation id="2187243482123994665">ਵਰਤੋਂਕਾਰ ਦੀ ਮੌਜੂਦਗੀ</translation> <translation id="2212565012507486665">ਕੁਕੀਜ਼ ਨੂੰ ਆਗਿਆ ਦਿਓ</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> ਨੂੰ ਆਪਣੇ ਕੈਮਰੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣ ਲਈ, <ph name="BEGIN_LINK" />Android ਸੈਟਿੰਗਾਂ<ph name="END_LINK" /> ਵਿੱਚ ਕੈਮਰਾ ਵੀ ਚਾਲੂ ਕਰੋ।</translation> <translation id="2241634353105152135">ਸਿਰਫ ਇੱਕ ਵਾਰ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_pl.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_pl.xtb index 5493878..26193f74 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_pl.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_pl.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Otwórz aplikację błyskawiczną</translation> <translation id="2148716181193084225">Dzisiaj</translation> <translation id="2182457891543959921">Pytaj, zanim zezwolisz stronom na tworzenie mapy 3D Twojego otoczenia lub śledzenie pozycji kamery (zalecane)</translation> -<translation id="2187243482123994665">Obecność użytkownika</translation> <translation id="2212565012507486665">Zezwalaj na pliki cookie</translation> <translation id="2228071138934252756">Aby zezwolić aplikacji <ph name="APP_NAME" /> na dostęp do aparatu, musisz go też włączyć w <ph name="BEGIN_LINK" />Ustawieniach Androida<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Tylko raz</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_pt-BR.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_pt-BR.xtb index 7e555c969..8186d50 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_pt-BR.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_pt-BR.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Abrir Instant App</translation> <translation id="2148716181193084225">Hoje</translation> <translation id="2182457891543959921">Perguntar antes de permitir que sites criem um mapa 3D dos seus arredores ou acompanhem a posição da câmera (recomendado)</translation> -<translation id="2187243482123994665">Presença do usuário</translation> <translation id="2212565012507486665">Permitir cookies</translation> <translation id="2228071138934252756">Para permitir que o app <ph name="APP_NAME" /> acesse sua câmera, também é necessário ativá-la nas <ph name="BEGIN_LINK" />configurações do Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Apenas uma vez</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb index a843183..41b3002 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Abrir app instantânea</translation> <translation id="2148716181193084225">Hoje</translation> <translation id="2182457891543959921">Perguntar antes de permitir que os sites criem um mapa 3D do ambiente à sua volta ou monitorizem a posição da câmara (recomendado)</translation> -<translation id="2187243482123994665">Presença do utilizador</translation> <translation id="2212565012507486665">Permitir cookies</translation> <translation id="2228071138934252756">Para permitir que a app <ph name="APP_NAME" /> aceda à câmara, ative também a câmara nas <ph name="BEGIN_LINK" />Definições do Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Apenas uma vez</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb index 0deddefb..ec70096b 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Deschide aplicația instantanee</translation> <translation id="2148716181193084225">Astăzi</translation> <translation id="2182457891543959921">Întreabă înainte de a permite site-urilor să creeze o hartă 3D a lucrurilor din jur sau să urmărească poziția camerei video (recomandat)</translation> -<translation id="2187243482123994665">Prezența utilizatorului</translation> <translation id="2212565012507486665">Permite cookie-urile</translation> <translation id="2228071138934252756">Pentru a permite aplicației <ph name="APP_NAME" /> să acceseze camera, activează camera și în <ph name="BEGIN_LINK" />Setările Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Numai o singură dată</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ru.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ru.xtb index a0a6bd11..309059c 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ru.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ru.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Открыть приложение с мгновенным запуском</translation> <translation id="2148716181193084225">Сегодня</translation> <translation id="2182457891543959921">Запрашивать для сайтов разрешение на создание 3D-карты места, в котором вы находитесь, и отслеживание положения камеры (рекомендуется)</translation> -<translation id="2187243482123994665">Присутствие пользователя</translation> <translation id="2212565012507486665">Разрешить файлы cookie</translation> <translation id="2228071138934252756">Чтобы у приложения "<ph name="APP_NAME" />" был доступ к камере, включите ее в <ph name="BEGIN_LINK" />настройках Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Однократно</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb index 6727440..02c03f7a 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">ක්ෂණික යෙදුම විවෘත කරන්න</translation> <translation id="2148716181193084225">අද</translation> <translation id="2182457891543959921">වෙබ් අඩවිවලට ඔබේ වටපිටාවේ ත්රිමාන සිතියමක් සෑදීමට හෝ කැමරා ස්ථානය හඹා යෑමට ඉඩ දීමට පෙර අසන්න (නිර්දේශිතයි)</translation> -<translation id="2187243482123994665">පරිශීලකයාගේ සිටීම</translation> <translation id="2212565012507486665">කුකීවලට ඉඩ දෙන්න</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> හට ඔබේ කැමරාවට ප්රවේශ වීමට ඉඩ දීමට, <ph name="BEGIN_LINK" />Android සැකසීම්<ph name="END_LINK" /> තුළද කැමරාව ක්රියාත්මක කරන්න.</translation> <translation id="2241634353105152135">හුදෙක් එක් වරක්</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sk.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sk.xtb index 17c2fb28..39b9d65 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sk.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sk.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Otvoriť okamžitú aplikáciu</translation> <translation id="2148716181193084225">Dnes</translation> <translation id="2182457891543959921">Opýtať sa, či chcete povoliť webom vytvoriť 3D mapu vášho okolia alebo sledovať umiestnenie kamier (odporúčané)</translation> -<translation id="2187243482123994665">Prítomnosť používateľa</translation> <translation id="2212565012507486665">Povoliť súbory cookie</translation> <translation id="2228071138934252756">Ak chcete povoliť aplikácii <ph name="APP_NAME" /> používať váš fotoaparát, zapnite ho aj v <ph name="BEGIN_LINK" />nastaveniach Androidu<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Iba raz</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb index 0ff4c31..84e7a5e 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Odpri nenamestljivo aplikacijo</translation> <translation id="2148716181193084225">Danes</translation> <translation id="2182457891543959921">Vprašaj, preden se spletnim mestom dovoli ustvarjanje 3D-zemljevida vaše okolice ali spremljanje položaja kamere (priporočljivo)</translation> -<translation id="2187243482123994665">Prisotnost uporabnika</translation> <translation id="2212565012507486665">Dovoli piškotke</translation> <translation id="2228071138934252756">Če želite aplikaciji <ph name="APP_NAME" /> omogočiti dostop do fotoaparata, fotoaparat vklopite tudi v <ph name="BEGIN_LINK" />nastavitvah za Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Samo enkrat</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sq.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sq.xtb index 35131d1..0c223e6 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sq.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sq.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Hap aplikacionin e çastit</translation> <translation id="2148716181193084225">Sot</translation> <translation id="2182457891543959921">Pyet përpara se të lejosh krijimin nga sajtet të një harte 3D të ambientit tënd rrethues ose gjurmimin prej tyre të pozicionit të kamerës (rekomandohet)</translation> -<translation id="2187243482123994665">Prania e përdoruesit</translation> <translation id="2212565012507486665">Lejo kukit</translation> <translation id="2228071138934252756">Për të lejuar që <ph name="APP_NAME" /> të ketë qasje te kamera jote, aktivizo gjithashtu kamerën në <ph name="BEGIN_LINK" />Cilësimet e Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Vetëm një herë</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sr-Latn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sr-Latn.xtb index 36e807b..70e67cf 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sr-Latn.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sr-Latn.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Otvori instant aplikaciju</translation> <translation id="2148716181193084225">Danas</translation> <translation id="2182457891543959921">Pre nego što dozvolite sajtovima da prave 3D mapu okruženja ili prate položaj kamere prikazuje se upit (preporučeno)</translation> -<translation id="2187243482123994665">Prisustvo korisnika</translation> <translation id="2212565012507486665">Dozvoli kolačiće</translation> <translation id="2228071138934252756">Da biste dozvolili da <ph name="APP_NAME" /> pristupa kameri, uključite kameru i u <ph name="BEGIN_LINK" />Android podešavanjima<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Samo jednom</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sr.xtb index 37e17277..b769fbab8 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sr.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sr.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Отвори инстант апликацију</translation> <translation id="2148716181193084225">Данас</translation> <translation id="2182457891543959921">Пре него што дозволите сајтовима да праве 3D мапу окружења или прате положај камере приказује се упит (препоручено)</translation> -<translation id="2187243482123994665">Присуство корисника</translation> <translation id="2212565012507486665">Дозволи колачиће</translation> <translation id="2228071138934252756">Да бисте дозволили да <ph name="APP_NAME" /> приступа камери, укључите камеру и у <ph name="BEGIN_LINK" />Android подешавањима<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Само једном</translation>
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 fe38dfd..e91054d 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
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Öppna snabbappen</translation> <translation id="2148716181193084225">Idag</translation> <translation id="2182457891543959921">Fråga innan webbplatser tillåts att skapa en 3D-karta över dina omgivningar eller registrera kamerans position (rekommenderas)</translation> -<translation id="2187243482123994665">Användarens närvaro</translation> <translation id="2212565012507486665">Tillåt cookies</translation> <translation id="2228071138934252756">Om du vill ge <ph name="APP_NAME" /> åtkomst till kameran måste du även aktivera kameran i <ph name="BEGIN_LINK" />Android-inställningarna<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Bara en gång</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb index cc853d8..031ab02 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Fungua Programu Inayofunguka Papo Hapo</translation> <translation id="2148716181193084225">Leo</translation> <translation id="2182457891543959921">Uliza kabla ya kuruhusu tovuti zibuni ramani ya 3D ya mazingira yako au kufuatilia mkao wa kamera (inapendekezwa)</translation> -<translation id="2187243482123994665">Upatikanaji wa mtumiaji</translation> <translation id="2212565012507486665">Ruhusu vidakuzi</translation> <translation id="2228071138934252756">Ili uruhusu <ph name="APP_NAME" /> ifikie kamera yako, washa pia kamera katika <ph name="BEGIN_LINK" />Mipangilio ya Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Mara moja tu</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ta.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ta.xtb index c12be89..f024ed52 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ta.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ta.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">இன்ஸ்டண்ட் ஆப்ஸைத் திற</translation> <translation id="2148716181193084225">இன்று</translation> <translation id="2182457891543959921">உங்களைச் சுற்றியுள்ள இடங்களின் 3D மேப்பை உருவாக்கவோ கேமரா நிலையை டிராக் செய்யவோ தளங்களை அனுமதிப்பதற்கு முன்பாக அனுமதி கேட்கும் (பரிந்துரைக்கப்படுகிறது)</translation> -<translation id="2187243482123994665">பயனர் செயல்நிலை</translation> <translation id="2212565012507486665">குக்கீகளை அனுமதி</translation> <translation id="2228071138934252756">உங்கள் கேமராவை அணுக <ph name="APP_NAME" /> ஆப்ஸை அனுமதிப்பதற்கு <ph name="BEGIN_LINK" />Android அமைப்புகளிலும்<ph name="END_LINK" /> கேமராவிற்கான அனுமதியை இயக்கவும்.</translation> <translation id="2241634353105152135">ஒருமுறை மட்டுமே</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb index a054ac4..eb81fdb 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">తక్షణ యాప్ను తెరువు</translation> <translation id="2148716181193084225">ఈ రోజు</translation> <translation id="2182457891543959921">మీ పరిసరాల 3D మ్యాప్ను రూపొందించడానికి లేదా కెమెరా పొజిషన్ను ట్రాక్ చేయడానికి సైట్లను అనుమతించే ముందు అడగాలి (సిఫార్సు చేయడమైనది)</translation> -<translation id="2187243482123994665">యూజర్ ఉనికి</translation> <translation id="2212565012507486665">కుక్కీలను అనుమతించు</translation> <translation id="2228071138934252756">మీ కెమెరాను యాక్సెస్ చేయడానికి <ph name="APP_NAME" />ని అనుమతించడానికి, <ph name="BEGIN_LINK" />Android సెట్టింగ్ల<ph name="END_LINK" />లో కూడా కెమెరాను ఆన్ చేయండి.</translation> <translation id="2241634353105152135">ఒకసారి మాత్రమే</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_th.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_th.xtb index 8ac68e95..5e4d088 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_th.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_th.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">เปิด Instant App</translation> <translation id="2148716181193084225">วันนี้</translation> <translation id="2182457891543959921">ถามก่อนที่จะอนุญาตให้เว็บไซต์สร้างแผนที่ 3 มิติของสิ่งที่อยู่รอบตัวคุณหรือติดตามตำแหน่งของกล้อง (แนะนำ)</translation> -<translation id="2187243482123994665">การใช้งานอยู่ของผู้ใช้</translation> <translation id="2212565012507486665">อนุญาตคุกกี้</translation> <translation id="2228071138934252756">หากต้องการอนุญาตให้ <ph name="APP_NAME" /> เข้าถึงกล้องถ่ายรูป ให้เปิดใช้กล้องใน<ph name="BEGIN_LINK" />การตั้งค่า Android<ph name="END_LINK" /> ด้วย</translation> <translation id="2241634353105152135">เพียงครั้งเดียว</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb index e823b83..b2800df 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Hazır Uygulamayı aç</translation> <translation id="2148716181193084225">Bugün</translation> <translation id="2182457891543959921">Sitelerin çevremin 3D haritasını oluşturmasına veya kamera konumunu takip etmesine izin vermeden önce sor (önerilir)</translation> -<translation id="2187243482123994665">Kullanıcı etkinliği</translation> <translation id="2212565012507486665">Çerezlere izin ver</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> uygulamasının kameranıza erişebilmesi için <ph name="BEGIN_LINK" />Android Ayarları<ph name="END_LINK" />'nda da kamerayı açın.</translation> <translation id="2241634353105152135">Sadece bir defa</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_uk.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_uk.xtb index e8d187a..8c66c6f 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_uk.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_uk.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Відкрити додаток із миттєвим запуском</translation> <translation id="2148716181193084225">Сьогодні</translation> <translation id="2182457891543959921">Запитувати, перш ніж дозволяти сайтам створювати 3D-карту вашого оточення або відстежувати положення камери (рекомендовано)</translation> -<translation id="2187243482123994665">Інформація про присутність</translation> <translation id="2212565012507486665">Дозволити файли cookie</translation> <translation id="2228071138934252756">Щоб надати додатку <ph name="APP_NAME" /> доступ до камери, також увімкніть її в <ph name="BEGIN_LINK" />налаштуваннях Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Лише цього разу</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb index 422f719..14873bba 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">فوری ایپ کھولیں</translation> <translation id="2148716181193084225">آج</translation> <translation id="2182457891543959921">سائٹس کو اپنے اطراف کا 3D نقشہ تخلیق یا کیمرے کی پوزیشن ٹریک کرنے کی اجازت دینے سے پہلے پوچھیں (تجویز کردہ)</translation> -<translation id="2187243482123994665">صارف کی موجودگی</translation> <translation id="2212565012507486665">کوکیز کی اجازت دیں</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> کو اپنے کیمرے تک رسائی دینے کے لیے، <ph name="BEGIN_LINK" />Android کی ترتیبات<ph name="END_LINK" /> میں بھی کیمرا آن کریں۔</translation> <translation id="2241634353105152135">بس ایک بار</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_uz.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_uz.xtb index 98729b4..52a2cf4 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_uz.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_uz.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Darhol ishga tushadigan ilovada ochish</translation> <translation id="2148716181193084225">Bugun</translation> <translation id="2182457891543959921">Saytlar atrofingiz 3D xaritasini yaratish yoki kamera holatini kuzatish oldin ruxsat olsin (tavsiya etiladi)</translation> -<translation id="2187243482123994665">Foydalanuvchining faolligi</translation> <translation id="2212565012507486665">Cookie fayllariga ruxsat berish</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> kameradan foydalanishiga ruxsat berish uchun <ph name="BEGIN_LINK" />Android sozlamalari<ph name="END_LINK" /> orqali kamerani yoqing.</translation> <translation id="2241634353105152135">Bir marta</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_vi.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_vi.xtb index 4b35a77c..1d84546 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_vi.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_vi.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Mở ứng dụng tức thì</translation> <translation id="2148716181193084225">Hôm nay</translation> <translation id="2182457891543959921">Hỏi trước khi cho phép các trang web tạo bản đồ 3D về các khu vực xung quanh bạn hoặc theo dõi thông tin vị trí của máy ảnh (khuyên dùng)</translation> -<translation id="2187243482123994665">Hoạt động của người dùng</translation> <translation id="2212565012507486665">Cho phép cookie</translation> <translation id="2228071138934252756">Để cho phép <ph name="APP_NAME" /> truy cập vào máy ảnh của bạn, hãy bật cả máy ảnh trong phần <ph name="BEGIN_LINK" />Cài đặt Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Chỉ một lần</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb index 39dc69f..a15404b 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">打开免安装应用</translation> <translation id="2148716181193084225">今天</translation> <translation id="2182457891543959921">在允许网站为您的周边环境创建 3D 地图或跟踪摄像头位置之前询问您(推荐)</translation> -<translation id="2187243482123994665">用户活跃状态</translation> <translation id="2212565012507486665">允许使用 Cookie</translation> <translation id="2228071138934252756">若要允许 <ph name="APP_NAME" /> 使用您的摄像头,您还需在 <ph name="BEGIN_LINK" />Android 设置<ph name="END_LINK" />中开启摄像头。</translation> <translation id="2241634353105152135">仅一次</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb index 8cc3f6d8..d3f710f 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">開啟免安裝應用程式</translation> <translation id="2148716181193084225">今天</translation> <translation id="2182457891543959921">在允許網站建立您身處環境的 3D 地圖或追蹤攝錄機位置前先詢問您 (建議)</translation> -<translation id="2187243482123994665">使用者狀態</translation> <translation id="2212565012507486665">允許 Cookie</translation> <translation id="2228071138934252756">如要讓 <ph name="APP_NAME" /> 存取您的相機,請一併在 <ph name="BEGIN_LINK" />Android 設定<ph name="END_LINK" />中開啟相機。</translation> <translation id="2241634353105152135">只有這一次</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb index 2ceb70c..d82452f 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">開啟免安裝應用程式</translation> <translation id="2148716181193084225">今天</translation> <translation id="2182457891543959921">網站必須先詢問你,才能根據你的周遭環境建立 3D 地圖或追蹤攝影機位置 (建議)</translation> -<translation id="2187243482123994665">使用者狀態</translation> <translation id="2212565012507486665">允許 Cookie</translation> <translation id="2228071138934252756">如要允許 <ph name="APP_NAME" /> 存取裝置的相機,請一併在 <ph name="BEGIN_LINK" />Android 設定<ph name="END_LINK" />中開啟相機。</translation> <translation id="2241634353105152135">只有這一次</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zu.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zu.xtb index 7b62008..355d3b66 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_zu.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zu.xtb
@@ -44,7 +44,6 @@ <translation id="2146738493024040262">Vula i-app elisheshayo</translation> <translation id="2148716181193084225">Namhlanje</translation> <translation id="2182457891543959921">Buza ngaphambi kokuvumela amasayithi ukudala imephu ye-3D yendawo ekuzungezile noma ukulandelela indawo yekhamera (kuyanconywa)</translation> -<translation id="2187243482123994665">Ukuba khona komsebenzisi</translation> <translation id="2212565012507486665">Vumela amakhukhi</translation> <translation id="2228071138934252756">Ukuze uvumele i-<ph name="APP_NAME" /> ifinyelele ikhamera yakho, vula nekhamera <ph name="BEGIN_LINK" />Kumasethingi e-Android<ph name="END_LINK" />.</translation> <translation id="2241634353105152135">Kanye nje</translation>
diff --git a/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/FeatureConstants.java b/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/FeatureConstants.java index 0f49277..c67a496 100644 --- a/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/FeatureConstants.java +++ b/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/FeatureConstants.java
@@ -27,6 +27,7 @@ FeatureConstants.CONTEXTUAL_SEARCH_OPT_IN_FEATURE, FeatureConstants.CONTEXTUAL_SEARCH_TAPPED_BUT_SHOULD_LONGPRESS_FEATURE, FeatureConstants.KEYBOARD_ACCESSORY_ADDRESS_FILL_FEATURE, + FeatureConstants.KEYBOARD_ACCESSORY_BAR_SWIPING_FEATURE, FeatureConstants.KEYBOARD_ACCESSORY_PASSWORD_FILLING_FEATURE, FeatureConstants.KEYBOARD_ACCESSORY_PAYMENT_FILLING_FEATURE, FeatureConstants.DOWNLOAD_SETTINGS_FEATURE,
diff --git a/components/metrics/BUILD.gn b/components/metrics/BUILD.gn index 956176e..cbc77b4 100644 --- a/components/metrics/BUILD.gn +++ b/components/metrics/BUILD.gn
@@ -8,22 +8,6 @@ import("//build/config/android/rules.gni") } -static_library("demographic_metrics_provider") { - sources = [ - "demographic_metrics_provider.cc", - "demographic_metrics_provider.h", - ] - - public_deps = [ "//third_party/metrics_proto" ] - - deps = [ - ":metrics", - "//base", - "//components/sync/base", - "//components/sync/driver", - ] -} - static_library("metrics") { sources = [ "android_metrics_provider.cc", @@ -397,26 +381,6 @@ deps = [ "//base" ] } -static_library("demographics_test_support") { - testonly = true - sources = [ - "test/demographic_metrics_test_utils.cc", - "test/demographic_metrics_test_utils.h", - ] - - deps = [ - ":metrics", - "//base", - "//components/network_time", - "//components/prefs", - "//components/sync", - "//components/sync/base", - "//components/sync/test/fake_server", - "//third_party/metrics_proto", - "//third_party/zlib/google:compression_utils", - ] -} - if (is_linux || is_chromeos) { static_library("serialization") { sources = [ @@ -442,7 +406,6 @@ "daily_event_unittest.cc", "data_use_tracker_unittest.cc", "date_changed_helper_unittest.cc", - "demographic_metrics_provider_unittest.cc", "drive_metrics_provider_unittest.cc", "entropy_state_provider_unittest.cc", "entropy_state_unittest.cc", @@ -474,7 +437,6 @@ deps = [ ":call_stack_profile_builder", ":component_metrics", - ":demographic_metrics_provider", ":library_support", ":metrics", ":net", @@ -545,6 +507,7 @@ sources = [ "//components/test/run_all_unittests.cc" ] deps = [ ":unit_tests", + "//components/metrics/demographics:unit_tests", "//components/test:test_support", ] }
diff --git a/components/metrics/DEPS b/components/metrics/DEPS index 2793e421..cc84be4 100644 --- a/components/metrics/DEPS +++ b/components/metrics/DEPS
@@ -4,11 +4,8 @@ "-components", "+components/browser_watcher", "+components/component_updater", - "+components/compression", "+components/metrics", - "+components/network_time", "+components/prefs", - "+components/sync", "+components/variations", "+components/version_info", "+content/public/test",
diff --git a/components/metrics/call_stack_profile_encoding.cc b/components/metrics/call_stack_profile_encoding.cc index 72811b7..d10052a 100644 --- a/components/metrics/call_stack_profile_encoding.cc +++ b/components/metrics/call_stack_profile_encoding.cc
@@ -27,8 +27,6 @@ return SANDBOX_HELPER_PROCESS; case CallStackProfileParams::PPAPI_PLUGIN_PROCESS: return PPAPI_PLUGIN_PROCESS; - case CallStackProfileParams::PPAPI_BROKER_PROCESS: - return PPAPI_BROKER_PROCESS; } NOTREACHED(); return UNKNOWN_PROCESS;
diff --git a/components/metrics/call_stack_profile_params.h b/components/metrics/call_stack_profile_params.h index 5be7a145..7fc8f61 100644 --- a/components/metrics/call_stack_profile_params.h +++ b/components/metrics/call_stack_profile_params.h
@@ -21,7 +21,6 @@ ZYGOTE_PROCESS, SANDBOX_HELPER_PROCESS, PPAPI_PLUGIN_PROCESS, - PPAPI_BROKER_PROCESS, NETWORK_SERVICE_PROCESS, MAX_PROCESS = NETWORK_SERVICE_PROCESS,
diff --git a/components/metrics/demographics/BUILD.gn b/components/metrics/demographics/BUILD.gn new file mode 100644 index 0000000..68f8ea6 --- /dev/null +++ b/components/metrics/demographics/BUILD.gn
@@ -0,0 +1,58 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//testing/test.gni") + +static_library("demographics") { + sources = [ + "demographic_metrics_provider.cc", + "demographic_metrics_provider.h", + ] + + public_deps = [ "//third_party/metrics_proto" ] + + deps = [ + "//base", + "//components/metrics", + "//components/sync/base", + "//components/sync/driver", + ] +} + +source_set("unit_tests") { + testonly = true + sources = [ "demographic_metrics_provider_unittest.cc" ] + deps = [ + ":demographics", + "//base", + "//base/test:test_support", + "//components/metrics", + "//components/sync/base", + "//components/sync/driver", + "//components/sync/driver:test_support", + "//testing/gmock", + "//testing/gtest", + "//third_party/metrics_proto", + ] +} + +static_library("test_support") { + testonly = true + sources = [ + "demographic_metrics_test_utils.cc", + "demographic_metrics_test_utils.h", + ] + + deps = [ + "//base", + "//components/metrics", + "//components/network_time", + "//components/prefs", + "//components/sync", + "//components/sync/base", + "//components/sync/test/fake_server", + "//third_party/metrics_proto", + "//third_party/zlib/google:compression_utils", + ] +}
diff --git a/components/metrics/demographics/DEPS b/components/metrics/demographics/DEPS new file mode 100644 index 0000000..4461b3ee --- /dev/null +++ b/components/metrics/demographics/DEPS
@@ -0,0 +1,5 @@ +include_rules = [ + "+components/network_time", + "+components/prefs", + "+components/sync", +]
diff --git a/components/metrics/demographic_metrics_provider.cc b/components/metrics/demographics/demographic_metrics_provider.cc similarity index 97% rename from components/metrics/demographic_metrics_provider.cc rename to components/metrics/demographics/demographic_metrics_provider.cc index 126080d9a..6112a3d 100644 --- a/components/metrics/demographic_metrics_provider.cc +++ b/components/metrics/demographics/demographic_metrics_provider.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/metrics/demographic_metrics_provider.h" +#include "components/metrics/demographics/demographic_metrics_provider.h" #include "base/feature_list.h" #include "base/metrics/histogram_functions.h"
diff --git a/components/metrics/demographic_metrics_provider.h b/components/metrics/demographics/demographic_metrics_provider.h similarity index 94% rename from components/metrics/demographic_metrics_provider.h rename to components/metrics/demographics/demographic_metrics_provider.h index 0091122..c23d3fe 100644 --- a/components/metrics/demographic_metrics_provider.h +++ b/components/metrics/demographics/demographic_metrics_provider.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 COMPONENTS_METRICS_DEMOGRAPHIC_METRICS_PROVIDER_H_ -#define COMPONENTS_METRICS_DEMOGRAPHIC_METRICS_PROVIDER_H_ +#ifndef COMPONENTS_METRICS_DEMOGRAPHICS_DEMOGRAPHIC_METRICS_PROVIDER_H_ +#define COMPONENTS_METRICS_DEMOGRAPHICS_DEMOGRAPHIC_METRICS_PROVIDER_H_ #include <memory> @@ -105,4 +105,4 @@ } // namespace metrics -#endif // COMPONENTS_METRICS_DEMOGRAPHIC_METRICS_PROVIDER_H_ \ No newline at end of file +#endif // COMPONENTS_METRICS_DEMOGRAPHICS_DEMOGRAPHIC_METRICS_PROVIDER_H_
diff --git a/components/metrics/demographic_metrics_provider_unittest.cc b/components/metrics/demographics/demographic_metrics_provider_unittest.cc similarity index 98% rename from components/metrics/demographic_metrics_provider_unittest.cc rename to components/metrics/demographics/demographic_metrics_provider_unittest.cc index 101c77e..fd6b1f3 100644 --- a/components/metrics/demographic_metrics_provider_unittest.cc +++ b/components/metrics/demographics/demographic_metrics_provider_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/metrics/demographic_metrics_provider.h" +#include "components/metrics/demographics/demographic_metrics_provider.h" #include <memory>
diff --git a/components/metrics/test/demographic_metrics_test_utils.cc b/components/metrics/demographics/demographic_metrics_test_utils.cc similarity index 97% rename from components/metrics/test/demographic_metrics_test_utils.cc rename to components/metrics/demographics/demographic_metrics_test_utils.cc index 069a5ef..0ba8ef7 100644 --- a/components/metrics/test/demographic_metrics_test_utils.cc +++ b/components/metrics/demographics/demographic_metrics_test_utils.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/metrics/test/demographic_metrics_test_utils.h" +#include "components/metrics/demographics/demographic_metrics_test_utils.h" #include "base/strings/stringprintf.h" #include "base/time/default_clock.h"
diff --git a/components/metrics/test/demographic_metrics_test_utils.h b/components/metrics/demographics/demographic_metrics_test_utils.h similarity index 92% rename from components/metrics/test/demographic_metrics_test_utils.h rename to components/metrics/demographics/demographic_metrics_test_utils.h index c407ea5..84a6576 100644 --- a/components/metrics/test/demographic_metrics_test_utils.h +++ b/components/metrics/demographics/demographic_metrics_test_utils.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 COMPONENTS_METRICS_TEST_DEMOGRAPHIC_METRICS_TEST_UTILS_H_ -#define COMPONENTS_METRICS_TEST_DEMOGRAPHIC_METRICS_TEST_UTILS_H_ +#ifndef COMPONENTS_METRICS_DEMOGRAPHICS_DEMOGRAPHIC_METRICS_TEST_UTILS_H_ +#define COMPONENTS_METRICS_DEMOGRAPHICS_DEMOGRAPHIC_METRICS_TEST_UTILS_H_ #include <memory> @@ -73,4 +73,4 @@ } // namespace test } // namespace metrics -#endif // COMPONENTS_METRICS_TEST_DEMOGRAPHIC_METRICS_TEST_UTILS_H_ +#endif // COMPONENTS_METRICS_DEMOGRAPHICS_DEMOGRAPHIC_METRICS_TEST_UTILS_H_
diff --git a/components/metrics/ukm_demographic_metrics_provider.h b/components/metrics/ukm_demographic_metrics_provider.h index 0eb1cb9..83706c8 100644 --- a/components/metrics/ukm_demographic_metrics_provider.h +++ b/components/metrics/ukm_demographic_metrics_provider.h
@@ -20,7 +20,7 @@ // Interface of the provider of the synced user’s noised birth year and gender // to the UKM metrics server. For more details, see the documentation of // DemographicMetricsProvider at -// components/metrics/demographic_metrics_provider.h. +// components/metrics/demographics/demographic_metrics_provider.h. class UkmDemographicMetricsProvider { public: virtual ~UkmDemographicMetricsProvider() = default;
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb index eb8bce8..285f691 100644 --- a/components/policy/resources/policy_templates_de.xtb +++ b/components/policy/resources/policy_templates_de.xtb
@@ -1626,10 +1626,10 @@ Unabhängig davon, wie diese Richtlinie festgelegt wird, verhindert der Browser nicht, dass Drittanbieter-Software ausführbaren Code in seine Prozesse auf Computern einfügt, die sich in einer <ph name="MS_AD_NAME" />-Domain befinden.</translation> <translation id="3459509316159669723">Drucken</translation> <translation id="3461279434465463233">Status der Stromversorgung melden</translation> -<translation id="346731943813722404">Damit legen Sie fest, ob die erste Aktivität des Nutzers in einer Sitzung als Ausgangspunkt für Verzögerungen beim Stromsparmodus und Begrenzungen der Sitzungslänge verwendet werden soll. - Wenn diese Richtlinie auf "true" gesetzt ist, wie die erste Aktivität des Nutzers in einer Sitzung als Ausgangspunkt für Verzögerungen beim Stromsparmodus und Begrenzungen der Sitzungslänge verwendet. +<translation id="346731943813722404">Damit legen Sie fest, ob die erste Aktivität des Nutzers in einer Sitzung als Ausgangspunkt für Verzögerungen beim Energiesparmodus und Begrenzungen der Sitzungslänge verwendet werden soll. + Wenn diese Richtlinie auf "true" gesetzt ist, wie die erste Aktivität des Nutzers in einer Sitzung als Ausgangspunkt für Verzögerungen beim Energiesparmodus und Begrenzungen der Sitzungslänge verwendet. - Ist die Richtlinie auf "false" gesetzt oder nicht definiert, wird der Start der Sitzung als Ausgangspunkt für Verzögerungen beim Stromsparmodus und Begrenzungen der Sitzungslänge verwendet.</translation> + Ist die Richtlinie auf "false" gesetzt oder nicht definiert, wird der Start der Sitzung als Ausgangspunkt für Verzögerungen beim Energiesparmodus und Begrenzungen der Sitzungslänge verwendet.</translation> <translation id="3478024346823118645">Nutzerdaten bei Abmeldung löschen</translation> <translation id="3480961938508521469">Lädt den Akku mit normaler Geschwindigkeit vollständig auf.</translation> <translation id="348110646151632565">Hiermit wird die Bedienungshilfe "Vorlesen" auf dem Anmeldebildschirm aktiviert. @@ -3519,7 +3519,7 @@ Die Richtlinie erlaubt dem Nutzer die Anmeldung in <ph name="PRODUCT_NAME" />. Durch Festlegen dieser Richtlinie bestimmen Sie, ob sich ein Nutzer in <ph name="PRODUCT_NAME" /> anmelden darf oder nicht. Wenn Sie für diese Richtlinie "False" festlegen, funktionieren Apps und Erweiterungen nicht mehr, die die chrome.identity API verwenden. Aus diesem Grund ist es empfehlenswert, stattdessen "SyncDisabled" zu verwenden.</translation> -<translation id="6378076389057087301">Angaben zum Einfluss von Audioaktivitäten auf den Stromsparmodus</translation> +<translation id="6378076389057087301">Angaben zum Einfluss von Audioaktivitäten auf den Energiesparmodus</translation> <translation id="6378393933102834628">Wenn die Richtlinie auf "True" gesetzt ist, wird die Apps-Verknüpfung eingeblendet. Ist sie auf "False" gesetzt, wird die Verknüpfung nie eingeblendet. Wenn Sie diese Richtlinie konfigurieren, kann sie von Nutzern nicht geändert werden. Wenn die Richtlinie nicht konfiguriert ist, können Nutzer die Apps-Verknüpfung über das Kontextmenü der Lesezeichenleiste ein- und ausblenden.</translation> @@ -3816,7 +3816,7 @@ Ist sie deaktiviert, melden registrierte Geräte den Status des Entwicklermodus nicht.</translation> <translation id="6795485990775913659">Drucken nur ohne PIN zulassen</translation> <translation id="6810445994095397827">JavaScript auf diesen Websites blockieren</translation> -<translation id="6813263547126514821">Stromsparmodus und Herunterfahren</translation> +<translation id="6813263547126514821">Energiesparmodus und Herunterfahren</translation> <translation id="681446116407619279">Unterstützte Authentifizierungsschemas</translation> <translation id="6815483833848348029">Wenn die Richtlinie aktiviert oder nicht konfiguriert und ein lokales Gerätekonto für die automatische Anmeldung ohne Verzögerung bei einem Gerät im Offlinemodus konfiguriert ist, zeigt <ph name="PRODUCT_OS_NAME" /> eine Eingabeaufforderung zur Netzwerkkonfiguration an. @@ -5516,7 +5516,7 @@ Ist die Richtlinie deaktiviert, werden die Zeiten von registrierten Geräten weder aufgezeichnet noch gemeldet.</translation> <translation id="9077227880520270584">Timer für automatische Anmeldung in lokalem Gerätekonto</translation> -<translation id="9084985621503260744">Angaben zum Einfluss von Videoaktivitäten auf den Stromsparmodus</translation> +<translation id="9084985621503260744">Angaben zum Einfluss von Videoaktivitäten auf den Energiesparmodus</translation> <translation id="9088433379343318874">Contentanbieter für betreute Nutzer aktivieren</translation> <translation id="9088444059179765143">Methode für die automatische Erkennung der Zeitzone konfigurieren</translation> <translation id="9096086085182305205">Zulassungsliste für Authentifizierungsserver</translation>
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb index a70e76df..0bfc444 100644 --- a/components/policy/resources/policy_templates_es-419.xtb +++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -98,6 +98,17 @@ <translation id="1160939557934457296">Inhabilita continuar desde la página de advertencia de Navegación segura.</translation> <translation id="1163080558183062209">Inhabilita los tipos de impresoras incluidos en la lista de rechazo</translation> <translation id="117059611145966538">Servidores de impresión externos</translation> +<translation id="1171785618439752042">Si estableces la política, se designarán los tipos de encriptación que estarán permitidos cuando se soliciten tickets de Kerberos desde un servidor de <ph name="MS_AD_NAME" />. + + Si estableces la política en los siguientes valores: + + * Todo, se permitirán los tipos de encriptación AES aes256-cts-hmac-sha1-96 y aes128-cts-hmac-sha1-96, además del tipo de encriptación RC4 rc4-hmac. AES tendrá prioridad si el servidor es compatible con los tipos de encriptación AES y RC4. + + * Seguro o no la estableces, solo se permitirán los tipos AES. + + * Heredado, solo se permitirán los tipos RC4. Estos no son seguros y solo son necesarios en circunstancias muy específicas. En lo posible, reconfigura el server para que sea compatible con la encriptación AES. + + También consulta https://wiki.samba.org/index.php/Samba_4.6_Features_added/changed#Kerberos_client_encryption_types.</translation> <translation id="1177567780207290133">Si estableces la política, esta controlará el filtro de URL de SafeSites, el cual utiliza la API de Google Safe Search para clasificar las URL como pornográficas o no. Según el comportamiento buscado, establece uno de los siguientes valores para esta política. @@ -187,6 +198,11 @@ Si esta política se establece en false, <ph name="PRODUCT_NAME" /> no permitirá que se inicien perfiles de invitado.</translation> <translation id="1363275621236827384">Habilitar las consultas a Quirks Server para perfiles de hardware</translation> <translation id="1376119291123231789">Habilitar el modo avanzado de carga de la batería</translation> +<translation id="1378850678793136128">Permite establecer una lista de patrones de URL que indiquen los sitios a los cuales se les otorga permiso automáticamente para acceder a un dispositivo USB con los ID del producto y del proveedor especificados en la pantalla de acceso. Para que la política sea válida, cada elemento de la lista debe tener los campos "devices" y "urls". Cada elemento del campo "devices" puede tener los campos "vendor_id" y "product_id". Si omites el campo "vendor_id", se creará una política que funcione con cualquier dispositivo. Si omites el campo "product_id", se creará una política que funcione con cualquier dispositivo que tenga el ID de proveedor especificado. Las políticas que tengan el campo "product_id", pero que no tengan el campo "vendor_id" no serán válidas. + + El modelo del permiso para USB utiliza la URL del sitio que lo solicita ("URL que solicita permiso") y la URL del sitio del marco principal ("URL de incorporación") para otorgar permiso a la URL que lo solicita a fin de acceder al dispositivo USB. Es posible que esa URL no sea la misma que la de incorporación cuando se carga el sitio que solicita permiso en un iframe. Por lo tanto, el campo "urls" puede incluir hasta dos strings de URL delimitados por una coma para especificar la URL que solicita permiso y la URL de incorporación, respectivamente. Si solo se especifica una URL, se otorgará el acceso a los dispositivos USB correspondientes cuando la URL del sitio que lo solicita coincida con esta URL más allá del estado de incorporación. Las URL en el campo "urls" deben ser válidas; de lo contrario, se ignorará la política. + + Si no se establece esta política, se usará el valor predeterminado general para todos los sitios (sin acceso automático).</translation> <translation id="1384459581748403878">Referencia: <ph name="REFERENCE_URL" /></translation> <translation id="138847842893090358">Informa el estado de la actualización del SO</translation> <translation id="1390901586107713894">Permite especificar las extensiones que los usuarios NO pueden instalar. Si se incluyen en la lista de elementos bloqueados extensiones que ya están instaladas, no funcionarán y el usuario no podrá habilitarlas. Si las quitas de esa lista, se volverán a habilitar automáticamente. @@ -634,6 +650,9 @@ sin efectos adversos.</translation> <translation id="2030905906517501646">Palabra clave del proveedor de búsqueda predeterminado</translation> <translation id="203096360153626918">Esta política no tiene efecto en las apps de Android. Podrán implementar el modo de pantalla completa, incluso si esta política se establece como <ph name="FALSE" />.</translation> +<translation id="2036522553891755455">Si habilitas la política, los elementos compartidos descubiertos (conforme a la función Network File Shares para <ph name="PRODUCT_NAME" />) usarán el protocolo <ph name="NETBIOS_PROTOCOL" /> para descubrir archivos compartidos en la red. Si la inhabilitas, los elementos compartidos descubiertos no utilizarán este protocolo para descubrir archivos compartidos. + + Si no la estableces, de forma predeterminada se desactivará para los usuarios administrados y se activará para los demás usuarios.</translation> <translation id="2037214548071298156">Si habilitas la política o no la estableces, los dispositivos inscritos informarán sobre las estadísticas de hardware, como el uso de CPU/RAM. Si la inhabilitas, los dispositivos inscritos no informarán sobre las estadísticas de hardware.</translation> @@ -655,6 +674,7 @@ <translation id="2098658257603918882">Habilitar informes de uso y datos relacionados con bloqueos</translation> <translation id="2104418465060359056">Enviar información de extensiones y complementos</translation> <translation id="2106627642643925514">Anula el modo de impresión con PIN predeterminado. Si el modo no está disponible, se ignorará esta política.</translation> +<translation id="2107563874993284076">Si habilitas la política, los usuarios usarán la función Network File Shares para <ph name="PRODUCT_NAME" />. Si inhabilitas la política, los usuarios no podrán usar esta función.</translation> <translation id="2107601598727098402"> Esta política quedó obsoleta a partir de M72. En su lugar, utiliza CloudManagementEnrollmentToken. </translation> @@ -779,6 +799,13 @@ No se debe usar esta política para dispositivos utilizados por el público en general. Si estableces la política como verdadera o no la estableces, se fijará la notificación de advertencia de privacidad de la sesión de invitado administrada con inicio automático hasta que el usuario la descarte.</translation> +<translation id="228665601367357543">Te permite establecer una lista de patrones de URL que indiquen los sitios a los cuales se les otorga permiso automáticamente para acceder a un dispositivo USB con los ID del producto y del proveedor especificados. Para que la política sea válida, cada elemento de la lista debe tener los campos "devices" y "urls". Cada elemento del campo "devices" puede tener los campos "vendor_id" y "product_id". Si omites el campo "vendor_id", se creará una política que funcione con cualquier dispositivo. Si omites el campo "product_id", se creará una política que funcione con cualquier dispositivo que tenga el ID de proveedor especificado. Las políticas que tengan el campo "product_id", pero que no tengan el campo "vendor_id" no serán válidas. + + El modelo de permiso de USB utiliza la URL de solicitud y la URL de incorporación (del sitio de marco de nivel superior) para permitir que la URL de solicitud acceda al dispositivo USB. Es posible que la URL de solicitud difiera de la URL de incorporación cuando el sitio que solicita el permiso se carga en un iframe. Así, el campo "urls" puede incluir hasta 2 strings separadas por coma para especificar ambas URL. Si solo especificas una, se otorgará acceso a los dispositivos USB correspondientes cuando la URL del sitio que solicita el permiso coincida con la URL especificada, independientemente del estado de incorporación. Las URL incluidas en el campo "urls" deben ser válidas; de lo contrario se ignorará la política. + + Si no estableces la política, se aplicará <ph name="DEFAULT_WEB_USB_GUARD_SETTING_POLICY_NAME" /> (si se establece). De lo contrario se aplicará la configuración personal del usuario. + + Los patrones de URL que se especifiquen en esta política no deben entrar en conflicto con los que se configuren a través de <ph name="WEB_USB_BLOCKED_FOR_URLS_POLICY_NAME" />. Si ese es el caso, prevalecerá esta política por sobre <ph name="WEB_USB_BLOCKED_FOR_URLS_POLICY_NAME" /> y <ph name="WEB_USB_ASK_FOR_URLS_POLICY_NAME" />.</translation> <translation id="2289265947759479962">Esta política controla el envío de los datos sobre la versión, como la arquitectura, la plataforma y la versión del SO, así como la versión de <ph name="PRODUCT_NAME" /> y el canal de <ph name="PRODUCT_NAME" />. Si no estableces la política <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> o la inhabilitas, se ignorará. @@ -1037,6 +1064,11 @@ La URL de los resultados al instante de Google se puede especificar como: <ph name="GOOGLE_INSTANT_SEARCH_URL" />. Esta política se aplica solo si la política "DefaultSearchProviderEnabled" está habilitada.</translation> +<translation id="2567227673131796227">Esta política no está disponible; usa "<ph name="NATIVE_MESSAGING_BLOCKLIST_POLICY_NAME" />" en su lugar. + + Si estableces la política, se especificarán los hosts de mensajería nativa que no se deben cargar. Un valor de <ph name="WILDCARD_VALUE" /> en una lista de elementos bloqueados significa que todos los hosts de mensajería nativa están bloqueados, a menos que se permitan de forma explícita. + + Si no estableces la política, <ph name="PRODUCT_NAME" /> cargará todos los hosts instalados de mensajería nativa.</translation> <translation id="2571066091915960923">Habilita o inhabilita el proxy de compresión de datos y evita que los usuarios cambien esta opción. Si habilitas o inhabilitas esta opción, los usuarios no podrán cambiarla o anularla. @@ -1137,6 +1169,9 @@ Si esta configuración está inhabilitada, las páginas web no podrán usar JavaScript y el usuario no podrá cambiar esa configuración. Si esta configuración está habilitada o no está establecida, las páginas web podrán usar JavaScript pero el usuario podrá cambiar esa configuración.</translation> +<translation id="2752046642026416564">Si habilitas la política o no la estableces, <ph name="PRODUCT_NAME" /> podrá usar los hosts instalados de mensajería nativa a nivel del usuario. + + Si inhabilitas la política, <ph name="PRODUCT_NAME" /> solo podrá usar estos hosts cuando están instalados a nivel del sistema.</translation> <translation id="2753637905605932878">Restringir el intervalo de puertos UDP locales que usa WebRTC</translation> <translation id="2757054304033424106">Tipos de extensiones o aplicaciones que se pueden instalar</translation> <translation id="2758689548159678032">Si habilitas la política, la función de <ph name="PRODUCT_NAME" /> enviará encabezados de solicitud detallados con información sobre el entorno y el navegador del usuario. @@ -1436,6 +1471,9 @@ El valor de la política debe especificarse en milisegundos.</translation> <translation id="3205825995289802549">Maximizar la primera ventana del navegador en la primera ejecución</translation> +<translation id="3210408472559816322">Si estableces la política, se especificarán los hosts de mensajería nativa que no se deben cargar. Un valor de <ph name="WILDCARD_VALUE" /> en una lista de elementos bloqueados significa que todos los hosts de mensajería nativa están bloqueados, a menos que se permitan de forma explícita. + + Si no estableces la política, <ph name="PRODUCT_NAME" /> cargará todos los hosts instalados de mensajería nativa.</translation> <translation id="3211426942294667684">Configuración de acceso en el navegador</translation> <translation id="3219421230122020860">Modo incógnito disponible</translation> <translation id="3220624000494482595">Si la Aplicación de kiosko es una app de Android, esta no tendrá control sobre la versión de <ph name="PRODUCT_OS_NAME" />, incluso si esta política se establece como <ph name="TRUE" />.</translation> @@ -2230,6 +2268,7 @@ <translation id="4326288975020835343">Si habilitas la política, no se guardará el historial de navegación, estará desactivada la sincronización de pestañas, y los usuarios no podrán cambiar esta configuración. Si inhabilitas la política o no la estableces, se guardará el historial de navegación.</translation> +<translation id="4329095223358818804">Permite que Respuestas rápidas acceda al contenido seleccionado</translation> <translation id="4330372709562934569">Permite que los sitios de la lista envíen solicitudes a extremos de red más privados desde contextos no seguros</translation> <translation id="4332177773549877617">Registrar eventos de instalaciones de apps de Android</translation> <translation id="4341199399451274159">Si activas <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" />, establecer <ph name="DEFAULT_SEARCH_PROVIDER_ENCODINGS_POLICY_NAME" /> especificará la codificación de caracteres que admite el proveedor de búsqueda. Las codificaciones son nombres de página de código como UTF-8, GB2312 y ISO-8859-1. Estos se prueban en el orden establecido. @@ -2365,6 +2404,13 @@ <translation id="4578912515887794133">Si se habilita esta configuración, el host de acceso remoto comparará el nombre del usuario local (con el que está asociado el host) y el nombre de la Cuenta de Google registrada como propietario del host (es decir, "juanperez" si el host pertenece a la Cuenta de Google "juanperez@ejemplo.com"). No se iniciará el host de acceso remoto si el nombre del propietario del host es diferente del nombre del usuario local con el que está asociado el host. Se debe usar la política RemoteAccessHostMatchUsername junto con RemoteAccessHostDomain para exigir también que la Cuenta de Google del propietario del host esté asociada a un dominio específico (es decir, "ejemplo.com"). Si se inhabilita esta configuración o no se establece, el host de acceso remoto se podrá asociar con cualquier usuario local.</translation> +<translation id="4587365491100112056">Si estableces la política, se especificará el tiempo (expresado en horas) de almacenamiento en caché de los datos de autenticación. El almacenamiento en caché incluye datos sobre dominios en los que confía el dominio de la máquina (dominios afiliados). Por lo tanto, el almacenamiento en caché de los datos de autenticación permite agilizar el acceso. No se guardan los datos específicos del usuario ni los datos de dominios no afiliados. + + Si se establece la política en 0, se desactivará el almacenamiento en caché de los datos de autenticación. En todos los accesos, se recuperan los datos específicos del dominio. Por lo tanto, si se desactiva el almacenamiento en caché de los datos de autenticación, es posible que se reduzca drásticamente la velocidad de acceso del usuario. + + Si no estableces la política, se podrán reutilizar los datos de autenticación almacenados en caché por 73 horas como máximo. + + Nota: Si reinicias el dispositivo, se borrará la memoria caché. Se almacenan en caché incluso los datos de dominio de usuarios ocasionales. Desactiva la memoria caché si no quieres que se registre el dominio de un usuario ocasional.</translation> <translation id="4591366717022345234">Proporcionarles a los usuarios una versión Quick Fix</translation> <translation id="4592246263545654202">Especifica si el usuario puede abrir páginas en modo Incógnito en <ph name="PRODUCT_NAME" />. @@ -2473,6 +2519,7 @@ <ph name="PAGE_SIZE_NAME" /> debe contener uno de los formatos incluidos o "personalizado" si el tamaño del papel necesario no está en la lista. Si se proporciona un valor "personalizado", se debe especificar la propiedad <ph name="PAGE_SIZE_CUSTOM_SIZE" />. Describe el ancho y altura deseados en micrómetros. De lo contrario, no se debe especificar la propiedad <ph name="PAGE_SIZE_CUSTOM_SIZE" />. Se ignorará la política que infrinja estas reglas. Si el tamaño de la página no está disponible en la impresora que elija el usuario, se ignorará esta política.</translation> +<translation id="4790588245699320140">Permitir que Asistente de Google acceda al contexto de la pantalla</translation> <translation id="4802744647065138872">Limita la cantidad de instantáneas sobre los datos del usuario que se conservan en caso de tener que realizar reversión de emergencia.</translation> <translation id="4802905909524200151">Configurar el comportamiento de actualización del firmware <ph name="TPM_FIRMWARE_UPDATE_TPM" /></translation> <translation id="4804828344300125154">Reinicia siempre cuando el usuario sale de su cuenta.</translation> @@ -2578,6 +2625,15 @@ <translation id="5017369989680827157">Si estableces la política como verdadera o no la estableces, los usuarios podrán configurar la función Autocompletar para las direcciones que aparecen en la IU. Si la estableces como falsa, la función Autocompletar nunca sugerirá ni completará datos de las direcciones, ni guardará información adicional relacionada que envíen los usuarios cuando navegan por la Web.</translation> +<translation id="5021550478471824215">Si se establece la política, se especificará una lista predeterminada para la función Network File Shares. Cada elemento es un objeto con 2 propiedades: <ph name="SHARE_URL_FIELD_NAME" /> y <ph name="MODE_FIELD_NAME" />. + + La URL compartida debe ser <ph name="SHARE_URL_FIELD_NAME" />. + + Para <ph name="MODE_FIELD_NAME" />, debe ser <ph name="MODE_ENUM_DROP_DOWN" /> o <ph name="MODE_ENUM_PRE_MOUNT" />: + + * <ph name="MODE_ENUM_DROP_DOWN" /> indica que se agregará <ph name="SHARE_URL_FIELD_NAME" /> a la lista de elementos descubiertos compartidos. + + * <ph name="MODE_ENUM_PRE_MOUNT" /> indica que se activará <ph name="SHARE_URL_FIELD_NAME" />.</translation> <translation id="5023555740504506178">Si se habilita o no se configura (predeterminado), una página web podrá utilizar las API para compartir pantalla (p. ej., getDisplayMedia() o la API de la extensión Captura del escritorio) para solicitarle al usuario que seleccione una pestaña, una ventana o un escritorio para capturar. @@ -2727,6 +2783,11 @@ <translation id="5236882091572996759">Si esta política se configura como verdadera o no se configura, el usuario no se considerará inactivo mientras se reproduce el audio. Esto evitará que se alcance el tiempo de espera de inactividad y se tome la medida de inactividad. Sin embargo, se realizará la atenuación de pantalla, la pantalla apagada y el bloqueo de pantalla luego de los tiempos de espera configurados, independientemente de la actividad de audio. Si esta política se configura como falsa, la actividad de audio no evitará que el usuario se considere inactivo.</translation> +<translation id="52393120393725840">Si habilitas la política, <ph name="PRODUCT_NAME" /> recordará las contraseñas y las proporcionará a los usuarios la siguiente vez que accedan a su cuenta en un sitio. + + Si inhabilitas la política, los usuarios no podrán guardar nuevas contraseñas, pero seguirán funcionando las que se hayan guardado antes. + + Si la estableces, los usuarios no podrán cambiarla en <ph name="PRODUCT_NAME" />. Si no la estableces, el usuario podrá desactivar la configuración de guardado de contraseñas.</translation> <translation id="5239333626804545932">Si habilitas la política o no la estableces, Limpiar Chrome analizará el sistema periódicamente para detectar software no deseado y, si encuentra alguno, le preguntará al usuario si quiere quitarlo. La opción de activar manualmente Limpiar Chrome desde chrome://settings estará habilitada. Si inhabilitas la política, Limpiar Chrome no analizará el sistema periódicamente y estará inhabilitada la activación manual. @@ -2748,6 +2809,26 @@ Si estableces la política como falsa o no la estableces, se desactivará este modo y los usuarios no podrán activarlo.</translation> <translation id="5255162913209987122">Se puede recomendar</translation> +<translation id="5264066441613395613">Si estableces la política, se especificará la configuración del proxy para Chrome y las apps de ARC, por lo que se ignorarán todas las opciones relacionadas con el proxy que se especificaron en la línea de comandos. + + Si no la estableces, los usuarios podrán elegir su configuración de proxy. + + Si estableces la política <ph name="PROXY_SETTINGS_POLICY_NAME" />, se aceptarán los siguientes campos: + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> (podrás especificar el servidor proxy que usa Chrome y evitar que los usuarios cambien la configuración del proxy) + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" /> (una dirección URL a un archivo de proxy en formato .pac) + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> (una dirección URL al servidor proxy) + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> (una lista de hosts de proxy que omite <ph name="PRODUCT_NAME" />) + + El campo <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> no está disponible. En su lugar, aparece el campo <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, en donde puedes especificar el servidor proxy que usa Chrome. También evita que los usuarios cambien la configuración del proxy. + + Para <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, si eliges uno de estos valores: + * <ph name="PROXY_MODE_ENUM_DIRECT" />, no se usará nunca un proxy y se ignorará el resto de los campos + * <ph name="PROXY_MODE_ENUM_SYSTEM" />, se usará el proxy del sistema y se ignorará el resto de los campos + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />, se ignorará el resto de los campos + * <ph name="PROXY_MODE_ENUM_FIXED_SERVER" />, se usarán los campos <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> y <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, se usarán los campos <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> y <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> + + Nota: Para obtener más ejemplos detallados, visita The Chromium Projects ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett ).</translation> <translation id="5272684451155669299">Si la política se establece como verdadera, el usuario podrá usar el hardware en los dispositivos de Chrome para verificar su identidad de forma remota ante la CA de privacidad mediante la API <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> con la función <ph name="CHALLENGE_USER_KEY_FUNCTION" />. Si se establece como falsa o no se establece, las llamadas a la API fallarán y se mostrará un código de error.</translation> @@ -3135,6 +3216,13 @@ <translation id="5697306356229823047">Informa sobre los usuarios de dispositivos.</translation> <translation id="570062449808736508">Cuando esta política se establece con una string no vacía, WebView leerá las restricciones de URL del proveedor de contenido con el nombre de la autoridad proporcionado.</translation> <translation id="5708969689202733975">Configurar los modos de desbloqueo rápido permitidos</translation> +<translation id="5715617256528927547">Si estableces la política, se especificará la duración (expresada en horas) de almacenamiento en caché del Objeto de directiva de grupo (GPO). Este valor indica el tiempo máxima en el que pueden reutilizarse los GPO antes de que se vuelvan a descargar. En lugar de volverlos a descargar en cada obtención de política, el sistema volverá a utilizar los almacenados en caché, siempre que no cambien de versión. + + Si estableces la política en 0, se desactivará el almacenamiento en caché del GPO. Con esta acción, aumentará la carga del servidor, ya que se volverán a descargar los GPO en cada obtención de la política, incluso si no cambiaron. + + Si no estableces la política, se podrán reutilizar los GPO almacenados en caché por un máximo de 25 horas. + + Nota: Si reinicias el dispositivo y sales de la cuenta, se borrará la caché.</translation> <translation id="572155275267014074">Configuración de Android</translation> <translation id="5728154254076636808">Habilita la creación de las copias de itinerancia para los datos de perfil de <ph name="PRODUCT_NAME" /></translation> <translation id="5732972008943405952">Importar el formulario de Autocompletar del navegador predeterminado en la primera ejecución</translation> @@ -3180,6 +3268,11 @@ <translation id="5815129011704381141">Reinicia automáticamente después de la actualización.</translation> <translation id="582857022372205358">Habilitar la impresión doble con bordes cortos</translation> <translation id="5832274826894536455">Políticas obsoletas</translation> +<translation id="5835253272509953988">Si habilitas la política, los usuarios podrán hacer que <ph name="PRODUCT_NAME" /> verifique si los nombres de usuario y contraseñas ingresados estuvieron en una filtración. + + Si la estableces, los usuarios no podrán cambiarla en <ph name="PRODUCT_NAME" />. Si no la estableces, se habilitará la comprobación de filtración de credenciales, pero el usuario podrá desactivarla. + + No se activará este comportamiento si la Navegación segura está inhabilitada (ya sea por la política o el usuario). Si quieres forzar la Navegación segura, usa la política <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> o <ph name="SAFE_BROWSING_PROTETION_LEVEL_POLICY_NAME" />.</translation> <translation id="5836064773277134605">Restringir el intervalo de puertos UDP que utiliza el host de acceso remoto</translation> <translation id="5845686745936515940">Permite revertir el comportamiento de todas las cookies conforme al atributo heredado <ph name="ATTRIBUTE_SAMESITE_NAME" />. Si se revierte el comportamiento conforme al atributo heredado, las cookies que no tengan un atributo <ph name="ATTRIBUTE_SAMESITE_NAME" /> especificado se tratarán según el atributo "<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />", las cookies con el atributo "<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />" ya no necesitarán el atributo "<ph name="ATTRIBUTE_SECURE_NAME" />", y se omitirá la comparación de esquemas cuando se evalúa si dos sitios son el mismo sitio. Para obtener la descripción completa, consulta https://www.chromium.org/administrators/policy-list-3/cookie-legacy-samesite-policies. @@ -3490,6 +3583,13 @@ Para obtener más información sobre <ph name="CORS" />, visita la siguiente página web: <ph name="CORS_HELP_URL" />. Ten en cuenta que se anunció que esta política se quitaría en la versión 82 de <ph name="PRODUCT_NAME" />, pero se quitó en la versión 84.</translation> +<translation id="6279722058145292462">Si estableces la política, se especificará la frecuencia (expresada en días) con la que un cliente cambia la contraseña de la cuenta de máquina. El cliente genera la contraseña de forma aleatoria y el usuario no puede verla. Si inhabilitas esta política o la estableces en una cantidad alta de días, la seguridad puede verse afectada de forma negativa porque los potenciales atacantes tendrán más tiempo para encontrar y usar la contraseña de la cuenta de máquina. + + Si no la estableces, se cambiará la contraseña de la cuenta de máquina cada 30 días. + + Si estableces la política en 0, se desactivará el cambio de contraseña de la cuenta de máquina. + + Nota: Es posible que las contraseñas queden obsoletas antes de la cantidad especificada de días si el cliente no se conecta por un período prolongado.</translation> <translation id="6281043242780654992">Permite configurar las políticas de mensajería nativa. A menos que se incluyan en la lista blanca, los hosts de mensajería nativa incluidos en la lista negra estarán bloqueados.</translation> <translation id="6282799760374509080">Permitir o rechazar la captura de audio</translation> <translation id="6284362063448764300">TLS 1.1</translation> @@ -3623,6 +3723,9 @@ Para bloquear la pantalla cuando está inactiva, se recomienda habilitar el bloqueo de pantalla en la suspensión y que se suspenda <ph name="PRODUCT_OS_NAME" /> después de la demora de inactividad. Esta política solo debe usarse si el bloqueo de pantalla ocurre mucho antes que la suspensión o si no se desea la suspensión por inactividad. El valor de la política debe especificarse en milisegundos. Se establecerán los valores de modo que sean inferiores a la demora de inactividad.</translation> +<translation id="6506486086262398387">Si habilitas la política, la función Network File Shares para <ph name="PRODUCT_OS_NAME" /> utilizará el protocolo NTLM para autenticar archivos compartidos SMB en caso de ser necesario. Si inhabilitas la política, se desactivará la autenticación de archivos compartidos SMB mediante NTLM. + + Si no la estableces, de forma predeterminada se desactivará para los usuarios administrados y se activará para los demás usuarios.</translation> <translation id="6515357889978918016">Imagen de <ph name="PLUGIN_VM_NAME" /></translation> <translation id="6518102411616460786">Espera a que el canal objetivo complete el cambio a la versión inferior del canal</translation> <translation id="6520802717075138474">Importar los motores de búsqueda desde el navegador predeterminado en la primera ejecución</translation> @@ -3651,6 +3754,22 @@ Para obtener información detallada sobre los patrones de URL válidos, consulta: https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns.</translation> <translation id="6553143066970470539">Porcentaje del brillo de pantalla</translation> <translation id="6559057113164934677">No permitir que ningún sitio acceda a la cámara ni al micrófono</translation> +<translation id="6559475864956112261">Esta política no está disponible; usa <ph name="PROXY_SETTINGS_POLICY_NAME" /> en su lugar. + + Si la habilitas, podrás especificar el servidor proxy que usa Chrome y evitar que los usuarios cambien la configuración del proxy. Chrome y las apps de ARC ignorarán todas las opciones relacionadas con el proxy que se especificaron en la línea de comandos. Esta política solo tendrá efecto si no se especifica la política <ph name="PROXY_SETTINGS_POLICY_NAME" />. + + Las demás opciones se ignorarán si eliges lo siguiente: + * <ph name="PROXY_MODE_ENUM_DIRECT" /> = Nunca usar un servidor proxy y siempre conectarse directamente + * <ph name="PROXY_MODE_ENUM_SYSTEM" /> = Usar la configuración del proxy del sistema + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" /> = Detectar automáticamente el servidor proxy + + Si eliges lo siguiente: + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> = Servidores proxy fijos Puedes especificar más opciones con las políticas <ph name="PROXY_SERVER_POLICY_NAME" /> y <ph name="PROXY_BYPASS_LIST_POLICY_NAME" />. Las apps de ARC podrán usar solo el servidor proxy HTTP con la prioridad más alta. + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> = Una secuencia de comandos de proxy en formato .pac. Usa la política <ph name="PROXY_PAC_URL_POLICY_NAME" /> para especificar la dirección URL a un archivo de proxy en formato .pac. + + Si no estableces la política, los usuarios podrán elegir la configuración de proxy. + + Nota: Para obtener ejemplos detallados, visita The Chromium Projects ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett ).</translation> <translation id="6561396069801924653">Mostrar opciones de accesibilidad en el menú de la bandeja del sistema</translation> <translation id="6563458316362153786">Habilitar la transición rápida 802.11r</translation> <translation id="6568977718979857253">Esta política es obsoleta. Usa <ph name="DEFAULT_PLUGINS_SETTING_POLICY_NAME" /> para controlar la disponibilidad del complemento de Flash y <ph name="ALWAYS_OPEN_PDF_EXTERNALLY_POLICY_NAME" /> para controlar si debe usarse el visor de PDF integrado para abrir este tipo de archivos. @@ -4481,6 +4600,13 @@ Si el dispositivo del usuario está administrado, la disponibilidad de esta funcionalidad también depende de la política de dispositivo correspondiente. Si el dispositivo no está administrado, la disponibilidad de esta funcionalidad también depende de si el usuario es el propietario del dispositivo.</translation> +<translation id="7570111012674064005">Si estableces la política, se especificará si se procesa la política del usuario del Objeto de directiva de grupo (GPO) de la computadora y cómo se hará ese procesamiento. + + * Si la estableces con el valor predeterminado o no la estableces, se especificará la política del usuario de los GPO del usuario como solo lectura. Se ignorarán los GPO de la computadora. + + * Si seleccionas Combinar, se combinará la política del usuario de los GPO del usuario con la de los GPO de la computadora. Tendrán prioridad los GPO de la computadora. + + * Si seleccionas Reemplazar, se reemplazará la política del usuario de los GPO del usuario con la de los GPO de la computadora. Se ignorarán los GPO del usuario.</translation> <translation id="7570291542739287032">Solo en la nube</translation> <translation id="757395965347379751">Cuando se habilita esta configuración, <ph name="PRODUCT_NAME" /> permite los certificados firmados por SHA-1 siempre que estén validados correctamente y vinculados a certificados de CA instalados de forma local. @@ -5063,6 +5189,11 @@ Si se establece esta política como verdadera o no se establece, el usuario tendrá acceso con permisos de administrador a los contenedores de Crostini. Si se establece como falsa, el usuario no tendrá acceso con permisos de administrador a ningún contenedor de Crostini, ya sea nuevo o existente.</translation> <translation id="8417305981081876834">Establecer la longitud máxima del PIN de pantalla bloqueada</translation> +<translation id="841853753509411428">Esta política no está disponible; usa "<ph name="NATIVE_MESSAGING_ALLOWLIST_POLICY_NAME" />" en su lugar. + + Si estableces la política, se especificarán los hosts de mensajería nativa que no deben incluirse en la lista de elementos bloqueados. Un valor de <ph name="WILDCARD_VALUE" /> en una lista de elementos bloqueados significa que todos los hosts de mensajería nativa están bloqueados, a menos que se permitan de forma explícita. + + De forma predeterminada, se permiten todos los hosts de mensajería nativa. No obstante, si la política si todos los hosts de mensajería nativa se bloquearon mediante una política, el administrador puede utilizar la lista de elementos permitidos para modificar la política.</translation> <translation id="841977920223099909">Activador de advertencia de la protección de la contraseña</translation> <translation id="8424255554404582727">Establecer la rotación predeterminada de la pantalla que se volverá a aplicar en cada reinicio</translation> <translation id="8426231401662877819">Rotar la pantalla hacia la derecha 90 grados</translation> @@ -5293,6 +5424,9 @@ <translation id="8767743923206070405">Si habilitas la política, se mostrará el botón de la página principal en la barra de herramientas de <ph name="PRODUCT_NAME" />. Si la inhabilitas, no se mostrará el botón. Si estableces esta política, los usuarios no podrán cambiarla en <ph name="PRODUCT_NAME" />. Si no la estableces, los usuarios decidirán si se muestra el botón.</translation> +<translation id="8768528324886802059">Si estableces la política, se especificarán los hosts de mensajería nativa que no deben incluirse en la lista de elementos bloqueados. Un valor de <ph name="WILDCARD_VALUE" /> en una lista de elementos bloqueados significa que todos los hosts de mensajería nativa están bloqueados, a menos que se permitan de forma explícita. + + De forma predeterminada, se permiten todos los hosts de mensajería nativa. No obstante, si la política si todos los hosts de mensajería nativa se bloquearon mediante una política, el administrador puede utilizar la lista de elementos permitidos para modificar la política.</translation> <translation id="877185520360032968">Si estableces la política, se modificará el directorio predeterminado donde Chrome descarga los archivos; los usuarios podrán cambiar el directorio. Si no estableces la política, Chrome utilizará el directorio predeterminado específico de la plataforma.
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb index 5c8a64a..219320a6 100644 --- a/components/policy/resources/policy_templates_fr.xtb +++ b/components/policy/resources/policy_templates_fr.xtb
@@ -98,6 +98,17 @@ <translation id="1160939557934457296">Désactiver l'accès au site lors de l'affichage de la page d'avertissement par le service de navigation sécurisée</translation> <translation id="1163080558183062209">Permet de désactiver les types d'imprimantes figurant sur la liste deny</translation> <translation id="117059611145966538">Serveurs d'impression externes</translation> +<translation id="1171785618439752042">Le fait de configurer cette règle désigne les types de chiffrement autorisés lors de la demande de tickets Kerberos envoyés par un serveur <ph name="MS_AD_NAME" />. + + Configurations possibles : + + * Si la règle est définie sur "Tout" : les types de chiffrement AES aes256-cts-hmac-sha1-96 et aes128-cts-hmac-sha1-96 sont autorisés, ainsi que le type de chiffrement RC4 rc4-hmac. AES est prioritaire si le serveur accepte les types de chiffrement AES et RC4. + + * Si la règle est définie sur "Élevé" ou si elle n'est pas configurée, seuls les types de chiffrement AES sont autorisés. + + * Si la règle est définie sur "Ancien" : seul le type de chiffrement RC4 est autorisé. Le type de chiffrement RC4 n'est pas sécurisé. Elle ne doit être utilisée que dans des cas très spécifiques. Si possible, reconfigurez le serveur pour qu'il fonctionne avec le chiffrement AES. + + Consultez également la page https://wiki.samba.org/index.php/Samba_4.6_Features_added/changed#Kerberos_client_encryption_types.</translation> <translation id="1177567780207290133">Permet de contrôler l'application du filtre d'URL SafeSites, qui utilise l'API Google Safe Search pour déterminer si une URL est associée ou non à du contenu pornographique. Principe de cette règle : @@ -187,6 +198,11 @@ Si cette règle est définie sur "False", <ph name="PRODUCT_NAME" /> n'autorisera pas la création de profils d'invités.</translation> <translation id="1363275621236827384">Activer l'envoi de requêtes de profils matériels à Quirks Server</translation> <translation id="1376119291123231789">Activer le mode avancé de recharge de la batterie</translation> +<translation id="1378850678793136128">Permet d'établir une liste de formats d'URL indiquant les sites qui sont automatiquement autorisés à accéder à un appareil USB avec le fournisseur et les ID produit indiqués sur l'écran de connexion. Pour que la règle soit valide, chaque élément de la liste doit contenir un champ "devices" et un champ "urls". Chaque élément du champ "devices" peut contenir à son tour un champ "vendor_id" et un champ "product_id". Si vous ne renseignez pas le champ "vendor_id", la règle qui est créée correspond à tous les appareils. Si vous ne renseignez pas le champ "product_id", la règle qui est créée correspond à tous les appareils ayant l'ID de fournisseur donné. Une règle contenant un champ "product_id", mais pas de champ "vendor_id", n'est pas valide. + + Le modèle d'autorisation USB utilise l'URL du site à l'origine de la demande ("URL de requête") et l'URL du site du cadre de niveau supérieur ("URL d'intégration") pour autoriser l'URL de requête à accéder à l'appareil USB. L'URL de requête peut être différente de l'URL d'intégration si le site à l'origine de la demande est chargé dans un iFrame. Le champ "URL" peut de ce fait contenir jusqu'à deux chaînes d'URL séparées par une virgule, afin d'indiquer l'URL de requête et l'URL d'intégration, respectivement. Si une seule URL est spécifiée, l'accès aux appareils USB concernés est autorisé si l'URL du site à l'origine de la demande correspond à cette URL, quel que soit l'état d'intégration. Si les URL indiquées dans le champ "URL" ne sont pas valides, la règle est ignorée. + + Si cette règle n'est pas définie, la valeur globale par défaut est utilisée pour tous les sites (aucun accès automatique).</translation> <translation id="1384459581748403878">Référence : <ph name="REFERENCE_URL" /></translation> <translation id="138847842893090358">Indiquer l'état de la mise à jour du système</translation> <translation id="1390901586107713894">Permet de déterminer quelles extensions les utilisateurs ne peuvent PAS installer. Les extensions déjà installées, mais qui sont bloquées, sont désactivées sans que l'utilisateur puisse les activer. Elles sont automatiquement réactivées dès que vous les retirez de la liste de blocage. @@ -640,6 +656,9 @@ </translation> <translation id="2030905906517501646">Mot clé du moteur de recherche par défaut</translation> <translation id="203096360153626918">Cette règle n'a aucun effet sur les applications Android. L'utilisation du mode plein écran est possible même si cette règle est définie sur "<ph name="FALSE" />".</translation> +<translation id="2036522553891755455">Si cette règle est activée, la fonction de détection de partages (fonctionnalité Partages de fichiers en réseau de <ph name="PRODUCT_NAME" />) utilise le protocole <ph name="NETBIOS_PROTOCOL" /> pour détecter les partages sur le réseau. Si elle est désactivée, ce protocole n'est pas utilisé pour la détection des partages. + + Si cette règle n'est pas configurée, le protocole est, par défaut, désactivé pour les utilisateurs gérés et activé pour les autres.</translation> <translation id="2037214548071298156">Si cette règle est activée ou qu'elle n'est pas configurée, les appareils enregistrés communiquent des statistiques matérielles telles que l'utilisation du processeur et de la RAM. Si cette règle est désactivée, les appareils enregistrés ne communiquent pas ces statistiques.</translation> @@ -661,6 +680,7 @@ <translation id="2098658257603918882">Autoriser l'envoi de statistiques d'utilisation et de rapports d'erreur</translation> <translation id="2104418465060359056">Enregistrer les informations des extensions et des plug-ins</translation> <translation id="2106627642643925514">Remplace le mode d'impression par code défini par défaut. Si le mode est indisponible, cette règle est ignorée.</translation> +<translation id="2107563874993284076">Si cette règle est activée, les utilisateurs peuvent utiliser des partages de fichiers en réseau pour <ph name="PRODUCT_NAME" />. Si elle est désactivée, les utilisateurs n'y sont pas autorisés.</translation> <translation id="2107601598727098402"> Cette règle a été abandonnée dans la version M72. Veuillez utiliser la règle CloudManagementEnrollmentToken à la place. </translation> @@ -789,6 +809,13 @@ Notez que cette règle ne doit pas être appliquée aux appareils utilisés par le grand public. Si cette règle est définie sur "True" ou qu'elle n'est pas configurée, les avertissements liés à la confidentialité dans les sessions Invité gérées lancées automatiquement sont épinglés jusqu'à ce que les utilisateurs les ferment.</translation> +<translation id="228665601367357543">Permet d'établir une liste de formats d'URL indiquant les sites qui sont automatiquement autorisés à accéder à un appareil USB avec les ID produit et ID de fournisseur indiqués. Pour que la règle soit valide, chaque élément de la liste doit contenir un champ "devices" et un champ "urls". Chaque élément du champ "devices" peut contenir à son tour un champ "vendor_id" et un champ "product_id". Si vous ne renseignez pas le champ "vendor_id", la règle qui est créée correspond à tous les appareils. Si vous ne renseignez pas le champ "product_id", la règle qui est créée correspond à tous les appareils ayant l'ID de fournisseur donné. Une règle contenant un champ "product_id", mais pas de champ "vendor_id", n'est pas valide. + + Le modèle d'autorisation USB utilise l'URL de requête et l'URL d'intégration (du site du cadre de premier niveau) pour permettre à l'URL de requête d'accéder à l'appareil USB. L'URL de requête peut être différente de l'URL d'intégration si le site à l'origine de la demande est chargé dans un iFrame. Le champ "URL" peut de ce fait contenir jusqu'à deux chaînes d'URL séparées par une virgule, afin d'indiquer ces URL. Si vous ne spécifiez qu'une seule URL, l'accès aux appareils USB concernés est autorisé si l'URL du site à l'origine de la demande correspond à cette URL, quel que soit l'état d'intégration. Si les URL indiquées dans le champ "URL" ne sont pas valides, la règle est ignorée. + + Si cette règle n'est pas configurée, la règle <ph name="DEFAULT_WEB_USB_GUARD_SETTING_POLICY_NAME" /> s'applique, à condition qu'elle soit définie. Si ce n'est pas le cas, le paramètre spécifié par l'utilisateur s'applique. + + Les formats d'URL de cette règle ne doivent pas entrer en conflit avec ceux qui ont été définis dans la règle <ph name="WEB_USB_BLOCKED_FOR_URLS_POLICY_NAME" />. En cas de conflit, cette règle prévaut sur <ph name="WEB_USB_BLOCKED_FOR_URLS_POLICY_NAME" /> et <ph name="WEB_USB_ASK_FOR_URLS_POLICY_NAME" />.</translation> <translation id="2289265947759479962">Cette règle détermine si les informations de version doivent être enregistrées. Cela concerne, par exemple, la version, la plate-forme et l'architecture du système d'exploitation, la version de <ph name="PRODUCT_NAME" /> et le canal de <ph name="PRODUCT_NAME" />. Cette règle est ignorée si la règle <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> n'est pas définie ou si elle est désactivée. @@ -1047,6 +1074,11 @@ L'URL en question peut être spécifiée comme suit : <ph name="GOOGLE_INSTANT_SEARCH_URL" />. Cette règle n'est respectée que si la règle "DefaultSearchProviderEnabled" est activée.</translation> +<translation id="2567227673131796227">Cette règle est obsolète (veuillez utiliser la règle "<ph name="NATIVE_MESSAGING_BLOCKLIST_POLICY_NAME" />" à la place). + + Définir la règle permet de déterminer les hôtes de messagerie native qui ne doivent pas être chargés. Si vous saisissez la valeur <ph name="WILDCARD_VALUE" /> dans la liste deny, tous les hôtes de messagerie native sont refusés, sauf s'ils sont explicitement autorisés. + + Si cette règle n'est pas configurée, <ph name="PRODUCT_NAME" /> charge tous les hôtes de messagerie native qui sont installés.</translation> <translation id="2571066091915960923">Activer ou désactiver le proxy pour la compression de données et empêcher les utilisateurs de modifier ce paramètre Si vous activez ou désactivez ce paramètre, les utilisateurs ne peuvent pas le modifier ni le remplacer. @@ -1149,6 +1181,9 @@ Si vous désactivez ce paramètre, les pages Web ne peuvent pas utiliser JavaScript et l'utilisateur n'est pas en mesure de le modifier. Si vous activez ce paramètre ou si vous ne le définissez pas, les pages Web peuvent utiliser JavaScript, mais l'utilisateur n'est pas en mesure de le modifier.</translation> +<translation id="2752046642026416564">Si cette règle est activée ou qu'elle n'est pas configurée, <ph name="PRODUCT_NAME" /> peut utiliser les hôtes de messagerie native installés au niveau de l'utilisateur. + + Si elle est désactivée, <ph name="PRODUCT_NAME" /> ne peut utiliser ces hôtes que s'ils sont installés au niveau du système.</translation> <translation id="2753637905605932878">Restreindre la portée des ports UDP locaux utilisés par WebRTC</translation> <translation id="2757054304033424106">Types d'extensions ou d'applications autorisés à être installés</translation> <translation id="2758689548159678032">Lorsqu'elle est activée, la fonctionnalité <ph name="PRODUCT_NAME" /> envoie des en-têtes de requête précis qui fournissent des informations sur le navigateur et l'environnement de l'utilisateur. @@ -1448,6 +1483,9 @@ La valeur de la règle doit être indiquée en millisecondes.</translation> <translation id="3205825995289802549">Agrandir la première fenêtre du navigateur à la première exécution</translation> +<translation id="3210408472559816322">Définir la règle permet de déterminer les hôtes de messagerie native qui ne doivent pas être chargés. Si vous saisissez la valeur <ph name="WILDCARD_VALUE" /> dans la liste deny, tous les hôtes de messagerie native sont refusés, sauf s'ils sont explicitement autorisés. + + Si cette règle n'est pas configurée, <ph name="PRODUCT_NAME" /> charge tous les hôtes de messagerie native qui sont installés.</translation> <translation id="3211426942294667684">Paramètres de connexion au navigateur</translation> <translation id="3219421230122020860">Mode navigation privée disponible</translation> <translation id="3220624000494482595">Si l'application kiosque est une application Android, elle ne contrôlera pas la version <ph name="PRODUCT_OS_NAME" /> même si cette règle est définie sur "<ph name="TRUE" />".</translation> @@ -2239,6 +2277,7 @@ <translation id="4326288975020835343">Si cette règle est activée, l'historique de navigation n'est pas enregistré, la synchronisation des onglets est désactivée et les utilisateurs ne peuvent pas modifier ce paramètre. Si cette règle est désactivée ou qu'elle n'est pas configurée, l'historique de navigation est enregistré.</translation> +<translation id="4329095223358818804">Autoriser l'option "Réponses rapides" à accéder au contenu sélectionné</translation> <translation id="4330372709562934569">Permet d'autoriser les sites répertoriés à envoyer des requêtes à des points de terminaison plus privés du réseau à partir de contextes non sécurisés.</translation> <translation id="4332177773549877617">Enregistrer des événements pour les installations d'applications Android</translation> <translation id="4341199399451274159">Si la règle <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> est activée, la règle <ph name="DEFAULT_SEARCH_PROVIDER_ENCODINGS_POLICY_NAME" /> vous permet de spécifier les encodages de caractères compatibles avec le moteur de recherche. Ces encodages sont des noms de page de codes, comme UTF-8, GB2312 et ISO-8859-1, qui sont testés dans l'ordre dans lequel ils sont indiqués. @@ -2374,6 +2413,13 @@ <translation id="4578912515887794133">Si ce paramètre est activé, l'hôte d'accès à distance compare le nom de l'utilisateur local (auquel l'hôte est associé) au nom du compte Google enregistré en tant que propriétaire de l'hôte (par exemple, "pierredupont" si l'hôte appartient au compte Google pierredupont@example.com). L'hôte d'accès à distance ne démarre pas si le nom du propriétaire de l'hôte diffère du nom de l'utilisateur local auquel l'hôte est associé. La règle RemoteAccessHostMatchUsername doit être utilisée avec la règle RemoteAccessHostDomain pour faire également en sorte que le compte Google du propriétaire de l'hôte soit associé à un domaine spécifique (soit example.com). Si ce paramètre est désactivé ou n'est pas configuré, l'hôte d'accès à distance peut être associé à n'importe quel utilisateur local.</translation> +<translation id="4587365491100112056">Cette règle permet de spécifier la durée de mise en cache des données d'authentification, en heures. Le cache contient des données sur les domaines approuvés par le domaine de la machine (domaines affiliés). La mise en cache des données d'authentification permet donc d'accélérer la connexion. Les données spécifiques à l'utilisateur et celles relatives à des domaines non affiliés ne sont pas mises en cache. + + Si cette règle est définie sur 0, la mise en cache des données d'authentification est désactivée. Les données spécifiques à un domaine étant récupérées à chaque connexion, la désactivation de la mise en cache des données d'authentification peut considérablement ralentir la connexion des utilisateurs. + + Si cette règle n'est pas configurée, les données d'authentification mises en cache peuvent être réutilisées pendant une période maximale de 73 heures. + + Remarque : Le cache est vidé en cas de redémarrage de l'appareil. Les données de domaine sont mises en cache même pour les utilisateurs éphémères. Désactivez le cache pour empêcher le traçage du domaine d'un utilisateur éphémère.</translation> <translation id="4591366717022345234">Fournir le build Quick Fix aux utilisateurs</translation> <translation id="4592246263545654202">Permet de spécifier si l'utilisateur peut ouvrir ou non des pages en mode navigation privée dans <ph name="PRODUCT_NAME" />. @@ -2482,6 +2528,7 @@ La propriété <ph name="PAGE_SIZE_NAME" /> doit contenir l'un des formats répertoriés ou être définie sur "Personnalisé" si le format du papier requis ne figure pas dans la liste. Si elle est définie sur "Personnalisé", il est obligatoire de spécifier également la propriété <ph name="PAGE_SIZE_CUSTOM_SIZE" />. La hauteur et la largeur souhaitées sont exprimées en micromètres. Dans le cas contraire, la propriété <ph name="PAGE_SIZE_CUSTOM_SIZE" /> ne doit pas être renseignée. Toute règle qui ne respecte pas ces consignes sera ignorée. Si la taille de la page n'est pas disponible pour l'imprimante sélectionnée, cette règle est ignorée.</translation> +<translation id="4790588245699320140">Autoriser l'Assistant Google à accéder au contexte de l'écran</translation> <translation id="4802744647065138872">Limite le nombre d'instantanés de données utilisateur retenus en prévision d'un éventuel rollback d'urgence.</translation> <translation id="4802905909524200151">Configurer le comportement de la fonctionnalité de mise à jour du micrologiciel <ph name="TPM_FIRMWARE_UPDATE_TPM" /></translation> <translation id="4804828344300125154">Redémarrer à chaque déconnexion de l'utilisateur.</translation> @@ -2587,6 +2634,15 @@ <translation id="5017369989680827157">Si cette règle est définie sur "True" ou qu'elle n'est pas configurée, les utilisateurs contrôlent la saisie automatique des adresses dans l'interface utilisateur. Si cette règle est définie sur "False", les adresses ne sont jamais suggérées ni saisies automatiquement. De même, les informations complémentaires liées à une adresse que les utilisateurs fournissent sur une page Web ne sont pas enregistrées.</translation> +<translation id="5021550478471824215">Cette règle permet de spécifier une liste de partages de fichiers en réseau prédéfinis. Chaque élément est un objet comprenant deux propriétés : <ph name="SHARE_URL_FIELD_NAME" /> et <ph name="MODE_FIELD_NAME" />. + + L'URL de partage doit être <ph name="SHARE_URL_FIELD_NAME" />. + + Pour <ph name="MODE_FIELD_NAME" />, il doit s'agir de <ph name="MODE_ENUM_DROP_DOWN" /> ou <ph name="MODE_ENUM_PRE_MOUNT" /> : + + * <ph name="MODE_ENUM_DROP_DOWN" /> indique que <ph name="SHARE_URL_FIELD_NAME" /> sera ajouté à la liste de détection des partages. + + * <ph name="MODE_ENUM_PRE_MOUNT" /> indique que <ph name="SHARE_URL_FIELD_NAME" /> sera installé.</translation> <translation id="5023555740504506178">Si cette règle est activée ou si elle n'est pas configurée (par défaut), une page Web peut utiliser des API de partage d'écran (par exemple, getDisplayMedia() ou l'API Desktop Capture Extension) pour inviter l'utilisateur à sélectionner un onglet, une fenêtre ou un écran dont il souhaite faire une capture. @@ -2732,6 +2788,11 @@ <translation id="5236882091572996759">Lorsque cette règle est définie sur "True" ou si elle n'est pas définie, l'utilisateur n'est pas considéré comme inactif pendant la lecture audio. Le délai d'inactivité ne peut ainsi pas être atteint, et l'action à effectuer en cas d'inactivité n'est pas appliquée. L'assombrissement, l'arrêt et le verrouillage de l'écran sont toutefois appliqués au terme des délais configurés, indépendamment de l'activité audio. Si cette règle est définie sur "False", l'activité audio n'empêche pas l'utilisateur d'être considéré comme inactif.</translation> +<translation id="52393120393725840">Si cette règle est activée, les utilisateurs doivent demander à <ph name="PRODUCT_NAME" /> de mémoriser les mots de passe et les saisir la prochaine fois qu'ils se connectent à un site. + + Si elle est désactivée, les utilisateurs ne peuvent pas enregistrer de nouveaux mots de passe. Cependant, ceux qui ont été enregistrés précédemment continueront de fonctionner. + + Si cette règle est définie, les utilisateurs ne peuvent pas la modifier dans <ph name="PRODUCT_NAME" />. Si elle n'est pas définie, les utilisateurs peuvent désactiver l'enregistrement des mots de passe.</translation> <translation id="5239333626804545932">Si cette règle est activée ou qu'elle n'est pas configurée, Chrome Cleanup analyse régulièrement le système pour détecter les éventuels logiciels indésirables. Si Chrome Cleanup en trouve un, l'utilisateur doit confirmer qu'il souhaite le supprimer. Notez également que le déclenchement manuel de Chrome Cleanup depuis la page chrome://settings est autorisé. Si cette règle est désactivée, Chrome Cleanup ne procède pas à une analyse régulière du système, et le déclenchement manuel est désactivé. @@ -2753,6 +2814,26 @@ Si cette règle est définie sur "False" ou qu'elle n'est pas configurée, le mode bureau unifié est désactivé, et les utilisateurs ne peuvent pas l'activer.</translation> <translation id="5255162913209987122">Peut être recommandée</translation> +<translation id="5264066441613395613">La définition de cette règle permet de configurer les paramètres de proxy pour Chrome et les applications ARC, qui ignorent toutes les options liées au proxy spécifiées à partir de la ligne de commande. + + Si cette règle n'est pas configurée, les utilisateurs peuvent sélectionner les paramètres de proxy. + + Si la règle <ph name="PROXY_SETTINGS_POLICY_NAME" /> est configurée, les champs suivants sont proposés : + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> : vous permet de spécifier le serveur proxy que Chrome utilise et empêche les utilisateurs de modifier les paramètres de proxy + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" /> : URL d'un fichier .pac de proxy + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> : URL du serveur proxy + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> : liste d'hôtes proxy que <ph name="PRODUCT_NAME" /> contourne + + Le champ <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> est obsolète et a été remplacé par le champ <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> (qui vous permet de définir le serveur proxy que Chrome utilise et qui empêche les utilisateurs de modifier les paramètres de proxy). + + Dans la règle <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, si vous sélectionnez : + * <ph name="PROXY_MODE_ENUM_DIRECT" />, la connexion s'effectue directement sans aucun proxy et tous les autres champs sont ignorés ; + * <ph name="PROXY_MODE_ENUM_SYSTEM" />, le proxy du système est utilisé et tous les autres champs sont ignorés ; + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />, tous les autres champs sont ignorés ; + * <ph name="PROXY_MODE_ENUM_FIXED_SERVER" />, les champs <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> et <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> sont utilisés ; + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, les champs <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> et <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> sont utilisés. + + Remarque : Pour consulter des exemples détaillés, accédez au site The Chromium Projects (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation> <translation id="5272684451155669299">Si cette règle est définie sur "true", l'utilisateur peut utiliser le matériel sur des appareils Chrome afin d'attester, à distance, de son identité auprès de l'autorité de certification de la confidentialité par le biais de l'API <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> à l'aide de la fonction <ph name="CHALLENGE_USER_KEY_FUNCTION" />. Si cette règle est définie sur "false", ou si vous ne l'avez pas définie, les appels vers l'API échouent, et un code d'erreur est renvoyé.</translation> @@ -3148,6 +3229,13 @@ <translation id="5697306356229823047">Générer une liste des utilisateurs de l'appareil</translation> <translation id="570062449808736508">Lorsque ce règlement est défini sur une chaîne non vide, WebView lit les restrictions d'URL depuis le fournisseur de contenu portant le nom de l'autorité indiquée.</translation> <translation id="5708969689202733975">Configurer les modes de déverrouillage rapide autorisés</translation> +<translation id="5715617256528927547">Cette règle permet de spécifier la durée de mise en cache (en heures) des GPO ; c'est-à-dire la durée maximale pendant laquelle les GPO peuvent être réutilisés avant d'être de nouveau téléchargés Au lieu de les télécharger de nouveau à chaque récupération de règle, le système peut réutiliser ceux mis en cache tant que leur version ne change pas. + + Si vous définissez la règle sur 0, la mise en cache des GPO est désactivée. Cela a pour effet d'augmenter la charge du serveur, car les GPO sont de nouveau téléchargés à chaque récupération de règle, même s'ils n'ont pas été modifiés. + + Si cette règle n'est pas configurée, les GPO mis en cache peuvent être réutilisés dans un délai maximal de 25 heures. + + Remarque : Le cache est vidé à la suite d'un redémarrage et d'une déconnexion.</translation> <translation id="572155275267014074">Paramètres Android</translation> <translation id="5728154254076636808">Permet de créer des copies itinérantes pour les données de profil <ph name="PRODUCT_NAME" /></translation> <translation id="5732972008943405952">Importer les données de saisie automatique du navigateur par défaut à la première exécution</translation> @@ -3193,6 +3281,11 @@ <translation id="5815129011704381141">Redémarrer automatiquement après une mise à jour</translation> <translation id="582857022372205358">Activer l'impression recto verso bord court</translation> <translation id="5832274826894536455">Règles obsolètes</translation> +<translation id="5835253272509953988">Si cette règle est activée, les utilisateurs peuvent faire en sorte que <ph name="PRODUCT_NAME" /> contrôle si les noms d'utilisateur et les mots de passe saisis ont fait l'objet d'une fuite. + + Si cette règle est définie, les utilisateurs ne peuvent pas la modifier dans <ph name="PRODUCT_NAME" />. Si elle n'est pas définie, la vérification de fuite d'identifiants est autorisée, mais l'utilisateur peut la désactiver. + + Ce comportement ne se déclenchera pas si la navigation sécurisée est désactivée (soit par la règle, soit par l'utilisateur). Pour forcer l'activation de la navigation sécurisée, utilisez la règle <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> ou <ph name="SAFE_BROWSING_PROTETION_LEVEL_POLICY_NAME" />.</translation> <translation id="5836064773277134605">Restreindre la plage de ports UDP utilisés par l'hôte d'accès à distance</translation> <translation id="5845686745936515940">Permet de rétablir l'ancien comportement <ph name="ATTRIBUTE_SAMESITE_NAME" /> pour tous les cookies. Si vous rétablissez l'ancien comportement, les cookies dont la valeur de l'attribut <ph name="ATTRIBUTE_SAMESITE_NAME" /> n'est pas spécifiée sont traités comme si la valeur "<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />" était définie. De plus, ceux dont l'attribut a pour valeur "<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />" n'exigent plus que la valeur de l'attribut "<ph name="ATTRIBUTE_SECURE_NAME" />" soit spécifiée. Enfin, les schémas ne sont pas non plus comparés pour déterminer si deux sites sont identiques ou non. Pour obtenir une description complète, consultez la page https://www.chromium.org/administrators/policy-list-3/cookie-legacy-samesite-policies. @@ -3500,6 +3593,13 @@ Pour en savoir plus sur <ph name="CORS" />, consultez la page <ph name="CORS_HELP_URL" />. La suppression de cette règle avait été annoncée pour la version 82 de <ph name="PRODUCT_NAME" />, mais elle a eu lieu à la version 84.</translation> +<translation id="6279722058145292462">Cette règle permet de spécifier la fréquence (en jours) à laquelle un client modifie le mot de passe du compte de la machine. Ce mot de passe, généré de manière aléatoire par le client, n'est pas accessible à l'utilisateur. La désactivation de cette règle ou la définition d'un nombre de jours élevé peut nuire à la sécurité, dans la mesure où cela laisse plus de temps aux pirates informatiques pour trouver le mot de passe du compte de la machine et l'exploiter. + + Si cette règle n'est pas définie, le mot de passe du compte de la machine est modifié tous les 30 jours. + + Si cette règle est définie sur 0, la modification du mot de passe de la machine est désactivée. + + Remarque : La validité des mots de passe peut dépasser le délai spécifié en cas de mise hors connexion du client pendant une période plus longue.</translation> <translation id="6281043242780654992">Cette règle permet de configurer le comportement de la messagerie native. Les hôtes de messagerie native qui figurent sur la liste noire ne sont pas autorisés tant qu'ils n'ont pas été ajoutés à la liste blanche.</translation> <translation id="6282799760374509080">Autoriser ou interdire la capture audio</translation> <translation id="6284362063448764300">TLS 1.1</translation> @@ -3633,6 +3733,9 @@ Pour verrouiller l'écran en cas d'inactivité, il est recommandé d'activer le verrouillage de l'écran lors de l'arrêt temporaire, et de configurer l'arrêt temporaire de <ph name="PRODUCT_OS_NAME" /> au terme du délai d'inactivité. Cette règle ne doit être utilisée que lorsque le verrouillage de l'écran doit intervenir bien avant l'arrêt temporaire de l'appareil ou lorsque l'utilisateur ne souhaite absolument pas que l'appareil soit arrêté temporairement en cas d'inactivité. La valeur de la règle doit être indiquée en millisecondes. Elle doit également être inférieure au délai d'inactivité.</translation> +<translation id="6506486086262398387">Si cette règle est activée, la fonctionnalité Partages de fichiers en réseau de <ph name="PRODUCT_OS_NAME" /> utilise le protocole NTLM pour s'authentifier sur les partages SMB, si nécessaire. Si elle est désactivée, l'authentification NTLM sur les partages SMB l'est également. + + Si cette règle n'est pas configurée, le protocole est, par défaut, désactivé pour les utilisateurs gérés et activé pour les autres.</translation> <translation id="6515357889978918016">Fichier image <ph name="PLUGIN_VM_NAME" /></translation> <translation id="6518102411616460786">Attendre que la version sélectionnée rattrape la version installée lors du retour à une version antérieure</translation> <translation id="6520802717075138474">Importer les moteurs de recherche du navigateur par défaut à la première exécution</translation> @@ -3661,6 +3764,22 @@ Pour en savoir plus sur les formats d'URL valides, consultez cette page : https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns.</translation> <translation id="6553143066970470539">Niveau de luminosité de l'écran (%)</translation> <translation id="6559057113164934677">Interdire à tous les sites d'accéder à la caméra et au microphone</translation> +<translation id="6559475864956112261">Cette règle étant obsolète, veuillez utiliser la règle <ph name="PROXY_SETTINGS_POLICY_NAME" /> à la place. + + Si elle est activée, vous pouvez définir le serveur proxy que Chrome utilise et les utilisateurs ne sont pas en mesure de modifier les paramètres de proxy. Chrome et les applications ARC ignorent toutes les options liées au proxy spécifiées à partir de la ligne de commande. Cette règle ne s'applique que si la règle <ph name="PROXY_SETTINGS_POLICY_NAME" /> n'est pas spécifiée. + + Les autres options sont ignorées si vous sélectionnez celles ci-dessous : + * <ph name="PROXY_MODE_ENUM_DIRECT" /> : la connexion s'effectue toujours directement sans aucun serveur proxy. + * <ph name="PROXY_MODE_ENUM_SYSTEM" /> : les paramètres de proxy utilisés sont ceux du système. + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" /> : le serveur proxy est détecté automatiquement. + + + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> : les serveurs proxy définis sont utilisés. Vous pouvez définir d'autres options avec les règles <ph name="PROXY_SERVER_POLICY_NAME" /> et <ph name="PROXY_BYPASS_LIST_POLICY_NAME" />. Les applications ARC n'utilisent que le serveur proxy HTTP ayant la priorité la plus élevée. + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> : un script de proxy .pac est utilisé. Utilisez la règle <ph name="PROXY_PAC_URL_POLICY_NAME" /> pour définir l'URL d'un fichier .pac de proxy. + + Si cette règle n'est pas configurée, les utilisateurs peuvent sélectionner les paramètres de proxy. + + Remarque : Pour consulter des exemples détaillés, accédez au site The Chromium Projects (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation> <translation id="6561396069801924653">Afficher les options d'accessibilité dans le menu de la barre système</translation> <translation id="6563458316362153786">Activer la transition rapide 802.11r</translation> <translation id="6568977718979857253">Cette règle est obsolète. Veuillez utiliser la règle <ph name="DEFAULT_PLUGINS_SETTING_POLICY_NAME" /> pour contrôler la disponibilité du plug-in Flash, et la règle <ph name="ALWAYS_OPEN_PDF_EXTERNALLY_POLICY_NAME" /> pour définir si la visionneuse de documents PDF intégrée doit être utilisée pour ouvrir les fichiers PDF. @@ -4489,6 +4608,13 @@ Si l'appareil de l'utilisateur est géré, la disponibilité de cette règle dépend également des règles relatives aux appareils correspondantes. Si l'appareil de l'utilisateur n'est pas géré, la disponibilité de cette règle varie également selon que l'utilisateur est le propriétaire de l'appareil ou non.</translation> +<translation id="7570111012674064005">Cette règle permet de déterminer si la règle utilisateur du GPO (Group Policy Objects) de l'ordinateur est traitée, ainsi que la méthode employée. + + * Si la règle est définie sur "Par défaut" ou si elle n'est pas configurée, la règle utilisateur n'est lue qu'à partir des GPO utilisateur. Les GPO des ordinateurs sont ignorés. + + * Si la règle est définie sur "Fusionner", la règle utilisateur des GPO utilisateur est fusionnée avec celle des GPO des ordinateurs. Les GPO des ordinateurs sont prioritaires. + + * Si la règle est définie sur "Remplacer", la règle des GPO des utilisateurs est remplacée par celle des GPO des ordinateurs. Les GPO des utilisateurs sont ignorés.</translation> <translation id="7570291542739287032">Google Cloud uniquement</translation> <translation id="757395965347379751">Lorsque ce paramètre est activé, <ph name="PRODUCT_NAME" /> autorise les certificats signés par SHA-1 tant qu'ils sont validés et que leurs chaînes renvoient à un certificat CA installé localement. @@ -5067,6 +5193,11 @@ Si la règle est définie sur "true" ou n'est pas définie, l'utilisateur a accès à la racine des conteneurs Crostini. Si la règle est définie sur "false", l'utilisateur n'a pas accès à la racine des conteneurs Crostini (existants ou nouveaux).</translation> <translation id="8417305981081876834">Définir le nombre maximal de caractères pour le code de l'écran de verrouillage</translation> +<translation id="841853753509411428">Cette règle est obsolète (veuillez utiliser la règle <ph name="NATIVE_MESSAGING_ALLOWLIST_POLICY_NAME" /> à la place). + + Cette règle permet de déterminer les hôtes de messagerie native à exclure de la liste deny. Si vous saisissez la valeur <ph name="WILDCARD_VALUE" /> dans la liste deny, tous les hôtes de messagerie native sont refusés, sauf s'ils sont explicitement autorisés. + + Tous les hôtes de messagerie native sont autorisés par défaut. Cependant, si tous sont refusés par la règle, l'administrateur peut utiliser la liste d'autorisation pour modifier cette règle.</translation> <translation id="841977920223099909">Déclencheur d'avertissement de protection par mot de passe</translation> <translation id="8424255554404582727">Définir la rotation de l'écran par défaut (réappliquée à chaque redémarrage)</translation> <translation id="8426231401662877819">Faire pivoter l'écran vers la droite de 90 degrés</translation> @@ -5285,6 +5416,9 @@ <translation id="8767743923206070405">Si cette règle est activée, le bouton d'accueil s'affiche sur la barre d'outils de <ph name="PRODUCT_NAME" />. Si elle est désactivée, le bouton d'accueil ne s'affiche pas. Si cette règle est configurée, les utilisateurs ne peuvent pas la modifier dans <ph name="PRODUCT_NAME" />. Si elle n'est pas configurée, les utilisateurs peuvent choisir d'afficher ou non le bouton d'accueil.</translation> +<translation id="8768528324886802059">Cette règle permet de déterminer les hôtes de messagerie native à exclure de la liste deny. Si vous saisissez la valeur <ph name="WILDCARD_VALUE" /> dans la liste deny, tous les hôtes de messagerie native sont refusés, sauf s'ils sont explicitement autorisés. + + Tous les hôtes de messagerie native sont autorisés par défaut. Cependant, si tous sont refusés par la règle, l'administrateur peut utiliser la liste d'autorisation pour modifier cette règle.</translation> <translation id="877185520360032968">Cette règle définit le répertoire par défaut utilisé par Chrome pour le téléchargement de fichiers. Les utilisateurs peuvent modifier la destination. Si cette règle n'est pas configurée, Chrome utilise le répertoire par défaut correspondant à la plate-forme.
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb index 5a618cc..26d4baec 100644 --- a/components/policy/resources/policy_templates_pt-BR.xtb +++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -41,6 +41,11 @@ Esta política afeta os usuários cujo domínio corresponde apenas ao domínio de inscrição do dispositivo. Para todos os outros usuários, os cookies definidos pelo IdP são transferidos para o perfil do usuário somente durante o primeiro login no dispositivo.</translation> <translation id="1029052664284722254">Força a reinicialização do dispositivo quando o usuário sai</translation> +<translation id="1032533786864478457">Se a política for definida como "Ativada", os usuários poderão configurar os dispositivos para sincronizar as mensagens de texto com Chromebooks. Os usuários precisam aceitar esse recurso explicitamente concluindo um fluxo de configuração. Ao concluí-lo, eles poderão enviar e receber mensagens de texto pelo Chromebook. + + Se a política for definida como "Desativada", os usuários não poderão configurar a sincronização de mensagens. + + Se essa política não for definida, o recurso não será permitido por padrão para usuários gerenciados, mas será permitido para outros usuários.</translation> <translation id="1040446814317236570">Ativar a retirada de URL PAC (para https://)</translation> <translation id="1046484220783400299">Ativar por um tempo limitado recursos da plataforma Web cujo uso esteja suspenso</translation> <translation id="1047128214168693844">Não permitir que nenhum site rastreie a localização física dos usuários</translation> @@ -652,6 +657,9 @@ <translation id="2057317273526988987">Permitir acesso a uma lista de URLs</translation> <translation id="2061810934846663491">Configurar os nomes de domínio obrigatórios para hosts de acesso remoto</translation> <translation id="2067011586099792101">Bloquear acesso a sites fora de pacotes de conteúdo</translation> +<translation id="2069350366303315077">Definir a política como "Ativada" faz com que o <ph name="PRODUCT_NAME" /> aplique sessões de visitante e impeça logins de perfis. Logins de visitante são perfis do <ph name="PRODUCT_NAME" /> em que as janelas estão no modo de navegação anônima. + + Se a política for definida como "Desativada", não for definida ou se o modo visitante for desativado (pela <ph name="BROWSER_GUEST_MODE_ENABLED_POLICY_NAME" />), o uso de perfis novos e existentes será permitido.</translation> <translation id="2073552873076775140">Permitir login no <ph name="PRODUCT_NAME" /></translation> <translation id="2075732129949889165">Playbook Crostini Ansible</translation> <translation id="2077129598763517140">Usar aceleração de hardware quando disponível</translation> @@ -987,6 +995,11 @@ <translation id="2482676533225429905">Mensagens nativas</translation> <translation id="2483146640187052324">Prever ações da rede em qualquer conexão de rede</translation> <translation id="2498238926436517902">Sempre ocultar automaticamente a estante</translation> +<translation id="250022556568924228">A definição desta política significa que o <ph name="PRODUCT_OS_NAME" /> faz o download dos Termos de Serviço e os apresenta aos usuários ao início de cada sessão de uma conta local do dispositivo. Os usuários só poderão fazer login na sessão após aceitarem os Termos de Serviço. + + Se a política não for definida, os Termos de Serviço não aparecerão. + + A política precisa ser definida para um URL do qual o <ph name="PRODUCT_OS_NAME" /> possa fazer o download dos Termos de Serviço. Os Termos de Serviço precisam ser um texto simples, veiculado como Tipo MIME. Nenhuma marcação é permitida.</translation> <translation id="2502467045153796624">Comportamento de downgrade de canal</translation> <translation id="250670737672448119">Ativar o recurso de acessibilidade que destaca o cursor. @@ -1171,6 +1184,13 @@ Esta política visa a adaptação a curto prazo e será removida no Chrome 88.</translation> <translation id="2759224876420453487">Controla o comportamento do usuário em uma sessão de diversos perfis</translation> +<translation id="2759426227259007018">A definição da política especifica os apps que os usuários podem ativar para fazer anotações na tela de bloqueio do <ph name="PRODUCT_OS_NAME" />. + + Se o app preferencial for ativado na tela de bloqueio, será exibido um elemento de IU para abri-lo. Quando iniciado, o app poderá criar uma janela própria na parte superior da tela de bloqueio e anotações no contexto dessa tela. Quando a sessão do usuário principal for desbloqueada, será possível importar para ela as notas criadas. Apenas os apps de anotação do <ph name="PRODUCT_NAME" /> são compatíveis com a tela de bloqueio. + + Se a política for definida, o usuário poderá ativar um app na tela de bloqueio caso o ID da extensão do app esteja contido no valor da lista da política. Como consequência, a definição desta política como uma lista vazia desativará por completo a anotação na tela de bloqueio. A política que contém um ID de app não indica necessariamente que o usuário poderá ativar esse app para anotação na tela de bloqueio. Por exemplo, no <ph name="PRODUCT_NAME" /> 61, o conjunto de apps disponíveis também é limitado pela plataforma. + + Se a política não for definida, não haverá restrições impostas por ela com relação ao conjunto de apps que o usuário poderá ativar na tela de bloqueio.</translation> <translation id="2761483219396643566">Intervalo da advertência de inatividade no funcionamento com energia da bateria</translation> <translation id="2765601181281280493">Se a política for definida, será possível configurar uma lista de padrões de URL que especifica quais sites não podem pedir que o usuário conceda permissão de acesso a uma porta serial. @@ -1509,6 +1529,9 @@ <translation id="3251500716404598358">Configura políticas para alternar entre navegadores. Os sites configurados serão abertos automaticamente em um navegador diferente de <ph name="PRODUCT_NAME" />.</translation> +<translation id="3255624750680556186">Se a política for definida como "Ativada" ou não for definida, um dispositivo poderá acionar o Powerwash. + + Se a política for definida como "Desativada", o dispositivo não poderá acionar o Powerwash. Uma exceção para permitir o Powerwash poderá ocorrer se a <ph name="TPM_FIRMWARE_UPDATE_SETTINGS_NAME" /> for definida com um valor que permita a atualização de firmware TPM, mas a atualização ainda não tiver ocorrido.</translation> <translation id="3255762580838224124">A definição da política faz com que cada tela gire para a orientação especificada em todas as reinicializações e na primeira vez que ela for conectada depois que o valor da política mudar. O usuário pode mudar a rotação da tela na página de configurações depois de fazer login, mas as mudanças serão revertidas após a próxima reinicialização. Esta política se aplica às telas primária e secundária. Se ela não for definida, o valor padrão será 0 graus e o usuário poderá mudá-lo. Neste caso, o valor padrão não será reaplicado após a reinicialização.</translation> @@ -2621,6 +2644,9 @@ <translation id="5023555740504506178">Se ativada ou não configurada (padrão), uma página da Web poderá usar APIs de compartilhamento de tela (por exemplo, getDisplayMedia() ou a API de extensão Desktop Capture) para pedir que o usuário selecione uma guia, janela ou área de trabalho para captura. Quando esta política estiver desativada, as chamadas para APIs de compartilhamento de tela falharão com erro.</translation> +<translation id="5025239932007658691">Se a política for definida como "Ativada" ou não for definida, o <ph name="PRODUCT_NAME" /> enviará consultas ocasionais a um servidor do Google para recuperar um carimbo de data/hora preciso. + + Se ela for definida como "Desativada", o <ph name="PRODUCT_NAME" /> não enviará essas consultas.</translation> <translation id="5032164758660626397">Impedir que o usuário transfira arquivos grandes</translation> <translation id="5047604665028708335">Permitir acesso a sites fora de pacotes de conteúdo</translation> <translation id="5056708224511062314">Lupa desativada</translation> @@ -3386,6 +3412,9 @@ <translation id="6034341625190551415">Controla sessões públicas e tipos de conta de quiosque.</translation> <translation id="6034603289689965535">Permite que uma página mostre pop-ups ao fazer unload</translation> <translation id="6036523166753287175">Habilitar passagem de firewall a partir do host de acesso remoto</translation> +<translation id="603768430528561926">Se a política for definida como "Ativada" ou não for definida, dispositivos de empresas poderão resgatar ofertas com o registro do <ph name="PRODUCT_OS_NAME" />. + + Se a política for definida como "Desativada", os usuários não poderão resgatar essas ofertas.</translation> <translation id="6038407313189625985">Se esta política for ativada ou não for definida, a integridade de código renderizador será ativada. Ela será desativada apenas se forem encontrados problemas de compatibilidade com software de terceiros que precisa ser executado dentro dos processos de renderização do Chrome. A desativação desta política prejudica a segurança e a estabilidade do Chrome, uma vez que códigos desconhecidos e potencialmente hostis poderão ser carregados nos processos de renderização do Chrome. Consulte https://chromium.googlesource.com/chromium/src/+/master/docs/design/sandbox.md#Process-mitigation-policies (link em inglês) para mais informações.</translation> @@ -3603,6 +3632,7 @@ Se esta política não for definida ou a lista estiver vazia, será possível acessar todos os esquemas no <ph name="PRODUCT_NAME" />.</translation> <translation id="6338982178236723271">Enviar informações do sistema</translation> <translation id="6342187235303612558">Bloquear o upload ou download de arquivos que, no momento, não são compatíveis com DLP ou verificação de malware.</translation> +<translation id="6353890097388312479">Se a política for definida como "Todos (0)" ou não for definida, os usuários poderão editar as configurações de confiança para todos os certificados de CA, remover certificados importados e importar outros usando o Gerenciador de certificados. Se a política for definida como "Somente usuário (1)", os usuários poderão gerenciar os certificados importados, mas não poderão mudar as configurações de confiança dos certificados integrados. Se ela for definida como "Nenhum (2)", os usuários poderão ver os certificados de CA, mas não gerenciá-los.</translation> <translation id="6366574325767783825">Se a política for definida como verdadeira ou não for definida, o <ph name="PRODUCT_NAME" /> aceitará conteúdos da Web exibidos como Signed HTTP Exchanges. Se ela for definida como falsa, conteúdos Signed HTTP Exchanges não serão carregados.</translation> @@ -3694,6 +3724,15 @@ A maneira recomendada de bloquear a tela depois de um período de inatividade é ativar o bloqueio de tela quando o dispositivo estiver suspenso e suspender o <ph name="PRODUCT_OS_NAME" /> depois do intervalo de inatividade. Esta política só será usada quando o bloqueio de tela ocorrer muito antes da suspensão ou quando a suspensão devido à inatividade não for desejada. O valor da política precisa ser especificado em milissegundos. Os valores são ajustados para serem menores que o intervalo de inatividade.</translation> +<translation id="6506239283767807745">Esta política está obsoleta. Use a <ph name="NOTE_TAKING_APPS_LOCK_SCREEN_ALLOWLIST" />. + + A definição da política especifica os apps que os usuários podem ativar para fazer anotações na tela de bloqueio do <ph name="PRODUCT_OS_NAME" />. + + Se o app preferencial for ativado na tela de bloqueio, será exibido um elemento de IU para abri-lo. Quando iniciado, o app poderá criar uma janela própria na parte superior da tela de bloqueio e anotações no contexto dessa tela. Quando a sessão do usuário principal for desbloqueada, será possível importar para ela as notas criadas. Apenas os apps de anotação do <ph name="PRODUCT_NAME" /> são compatíveis com a tela de bloqueio. + + Se a política for definida, o usuário poderá ativar um app na tela de bloqueio caso o ID da extensão do app esteja contido no valor da lista da política. Como consequência, a definição desta política como uma lista vazia desativará por completo a anotação na tela de bloqueio. A política que contém um ID de app não indica necessariamente que o usuário poderá ativar esse app para anotação na tela de bloqueio. Por exemplo, no <ph name="PRODUCT_NAME" /> 61, o conjunto de apps disponíveis também é limitado pela plataforma. + + Se a política não for definida, não haverá restrições impostas por ela com relação ao conjunto de apps que o usuário poderá ativar na tela de bloqueio.</translation> <translation id="6506486086262398387">Se a política for definida como "Ativada", o recurso Compartilhamentos de arquivos de rede do <ph name="PRODUCT_OS_NAME" /> usará NTLM para fazer a autenticação para compartilhamentos de PME, se necessário. Se a política for definida como "Desativada", a autenticação NTLM para compartilhamentos de PME será desativada. Se a política não for definida, o comportamento ficará desativado por padrão para usuários gerenciados e ativado para outros usuários.</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb index 086086c..6f935c8 100644 --- a/components/policy/resources/policy_templates_zh-CN.xtb +++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -98,6 +98,17 @@ <translation id="1160939557934457296">禁止从安全浏览警告页面继续访问</translation> <translation id="1163080558183062209">禁用拒绝列表中的打印机类型</translation> <translation id="117059611145966538">外部打印服务器</translation> +<translation id="1171785618439752042">通过设置此政策,您可以指定能使用哪些加密类型向 <ph name="MS_AD_NAME" /> 服务器请求 Kerberos 票据。 + + 如果此政策设为: + + *“所有”,系统将允许使用 AES 加密类型 aes256-cts-hmac-sha1-96 和 aes128-cts-hmac-sha1-96 以及 RC4 加密类型 rc4-hmac。如果服务器同时支持 AES 和 RC4 加密类型,系统将优先使用 AES。 + + *“强”或未设置,系统将仅允许使用 AES 类型。 + + *“旧版”,系统将仅允许使用 RC4 类型。RC4 不安全,因此应仅在非常特殊的情况下使用。如有可能,请重新配置服务器以支持 AES 加密。 + + 另请参阅 https://wiki.samba.org/index.php/Samba_4.6_Features_added/changed#Kerberos_client_encryption_types。</translation> <translation id="1177567780207290133">通过设置此政策,您可以控制 SafeSites 网址滤除机制,此机制使用 Google Safe Search API 来判断是否将网址归类为色情内容。 如果此政策设为: @@ -185,6 +196,11 @@ 如果此政策设为 false,<ph name="PRODUCT_NAME" /> 将禁止使用访客个人资料登录。</translation> <translation id="1363275621236827384">允许在 Quirks Server 中查询硬件配置文件</translation> <translation id="1376119291123231789">启用高级电池充电模式</translation> +<translation id="1378850678793136128">让您能够设置一系列网址格式,从而指定自动授权哪些网站在登录屏幕上访问具有给定供应商 ID 和产品 ID 的 USB 设备。每个列表项都必须包含“devices”和“urls”字段,此政策才会有效。“devices”字段中的每项内容都可以包含“vendor_id”和“product_id”字段。如果您删掉“vendor_id”字段,系统将会创建一项与所有设备都匹配的政策。如果您删掉“product_id”字段,系统将会创建一项与所有具有给定供应商 ID 的设备都匹配的政策。包含“product_id”字段但不含“vendor_id”字段的政策无效。 + + USB 权限模型会使用发出相应请求的网站的网址(“请求网址”)和顶级框架网站的网址(“嵌入网址”)来授权请求网址访问相应 USB 设备。如果发出请求的网站是在 iframe 中加载的,请求网址可能会与嵌入网址不同。因此,“urls”字段最多可包含 2 个以英文逗号分隔的网址字符串,以分别指定请求网址和嵌入网址。如果仅指定了 1 个网址,那么无论嵌入网址的状态为何,系统都会在请求网站的网址与这个网址相符时授权该网站访问相应 USB 设备。“urls”字段中的网址必须是有效网址,否则系统会忽略此政策。 + + 如果此政策未设置,系统将会对所有网站使用全局默认值(不自动授予访问权限)。</translation> <translation id="1384459581748403878">参考页面:<ph name="REFERENCE_URL" /></translation> <translation id="138847842893090358">报告操作系统更新状态</translation> <translation id="1390901586107713894">让您能够指定禁止用户安装的扩展程序。系统会停用被屏蔽的已安装扩展程序,而且用户无法以任何方式启用这些扩展程序。如果某个因被列入屏蔽名单而遭停用的扩展程序被从屏蔽名单中移除了,系统会自动重新启用该扩展程序。 @@ -608,6 +624,9 @@ </translation> <translation id="2030905906517501646">默认搜索服务提供商关键字</translation> <translation id="203096360153626918">此政策对 Android 应用没有任何影响。即使此政策设为 <ph name="FALSE" />,这些应用也将能够进入全屏模式。</translation> +<translation id="2036522553891755455">如果此政策已启用,共享文件发现功能(适用于 <ph name="PRODUCT_NAME" />的网络文件共享功能)会使用 <ph name="NETBIOS_PROTOCOL" />来搜寻索网络上的共享文件。如果此政策已停用,共享文件发现功能将不会使用此协议来搜寻共享文件。 + + 如果您未设置此政策,系统的默认行为就会是:为受管用户停用此政策,并为其他用户启用此政策。</translation> <translation id="2037214548071298156">如果此政策已启用或未设置,已注册的设备将会报告硬件统计信息(例如 CPU/RAM 使用情况)。 如果此政策已停用,已注册的设备将不会报告硬件统计信息。</translation> @@ -629,6 +648,7 @@ <translation id="2098658257603918882">启用关于使用情况和崩溃相关数据的报告</translation> <translation id="2104418465060359056">报告扩展程序和插件信息</translation> <translation id="2106627642643925514">替换默认 PIN 码打印模式。如果这种模式不适用,系统会忽略此政策。</translation> +<translation id="2107563874993284076">如果此政策已启用,用户便可在 <ph name="PRODUCT_NAME" />中使用网络文件共享功能。如果此政策已停用,用户便无法使用此功能。</translation> <translation id="2107601598727098402"> 此政策在 M72 中已弃用。请改用 CloudManagementEnrollmentToken。 </translation> @@ -753,6 +773,13 @@ 请勿将此政策用于公用设备。 如果此政策设为 True 或未设置,系统则会将自动启动的受管理访客会话中的隐私权警告通知固定在屏幕上,直到用户关闭它为止。</translation> +<translation id="228665601367357543">让您能够设置一系列网址格式,从而指定自动授权哪些网站访问具有给定供应商 ID 和产品 ID 的 USB 设备。每个列表项都必须包含“devices”和“urls”字段,此政策才会有效。“devices”字段中的每项内容都可以包含“vendor_id”和“product_id”字段。如果您删掉“vendor_id”字段,系统将会创建一项与所有设备都匹配的政策。如果您删掉“product_id”字段,系统将会创建一项与所有具有给定供应商 ID 的设备都匹配的政策。包含“product_id”字段但不含“vendor_id”字段的政策无效。 + + USB 权限模型会使用请求网址(发出请求的网站的网址)和嵌入网址(顶级框架网站的网址)来授权请求网址访问相应 USB 设备。如果发出请求的网站是在 iframe 中加载的,请求网址可能会与嵌入网址不同。因此,“urls”字段最多可包含 2 个以英文逗号分隔的字符串,以分别指定请求网址和嵌入网址。如果仅指定了 1 个网址,那么无论嵌入网址的状态为何,系统都会在请求网站的网址与这个网址相符时授权该网站访问相应 USB 设备。“urls”字段中的网址必须是有效网址,否则系统会忽略此政策。 + + 如果您未设置此政策,系统会应用 <ph name="DEFAULT_WEB_USB_GUARD_SETTING_POLICY_NAME" />(若已设置)或用户的个人设置(若前者未设置)。 + + 此政策中的网址格式不应与通过 <ph name="WEB_USB_BLOCKED_FOR_URLS_POLICY_NAME" /> 配置的网址格式冲突。如果它们存在冲突,此政策优先于 <ph name="WEB_USB_BLOCKED_FOR_URLS_POLICY_NAME" /> 和 <ph name="WEB_USB_ASK_FOR_URLS_POLICY_NAME" />。</translation> <translation id="2289265947759479962">此政策旨在控制是否报告版本信息,例如操作系统版本、操作系统平台、操作系统架构、<ph name="PRODUCT_NAME" /> 版本号和 <ph name="PRODUCT_NAME" /> 版本类型。 如果 <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> 政策未设置或已停用,系统将忽略此政策。 @@ -1011,6 +1038,11 @@ 您可以按以下格式指定 Google 的即搜即得结果网址:<ph name="GOOGLE_INSTANT_SEARCH_URL" />。 仅当“DefaultSearchProviderEnabled”政策处于启用状态时,此政策才能发挥作用。</translation> +<translation id="2567227673131796227">此政策已被弃用,请改用“<ph name="NATIVE_MESSAGING_BLOCKLIST_POLICY_NAME" />”政策。 + + 通过设置此政策,您可以指定不应加载哪些本地消息传递主机。拒绝名单值 <ph name="WILDCARD_VALUE" /> 表示所有本地消息传递主机均会被拒绝,除非它们已获得明确许可。 + + 如果您未设置此政策,<ph name="PRODUCT_NAME" /> 便会加载已安装的所有本地消息传递主机。</translation> <translation id="2571066091915960923">启用或停用数据压缩代理,并防止用户更改该设置。 如果您启用或停用了该设置,用户将无法更改或覆盖该设置。 @@ -1113,6 +1145,9 @@ 如果停用此设置,网页就无法使用 JavaScript,用户也无法更改该设置。 如果启用或不设定此设置,网页就可以使用 JavaScript,但用户可以更改该设置。</translation> +<translation id="2752046642026416564">如果此政策已启用或未设置,<ph name="PRODUCT_NAME" /> 便可使用在用户级安装的本地消息传递主机。 + + 如果此政策已停用,<ph name="PRODUCT_NAME" /> 将只能使用在系统级安装的本地消息传递主机。</translation> <translation id="2753637905605932878">限制 WebRTC 使用的本地 UDP 端口的范围</translation> <translation id="2757054304033424106">允许安装的扩展程序/应用的类型</translation> <translation id="2758689548159678032">启用后,<ph name="PRODUCT_NAME" /> 功能会发送精细的请求标头,在其中提供关于用户浏览器和环境的信息。 @@ -1412,6 +1447,9 @@ 指定的政策值应以毫秒为单位。</translation> <translation id="3205825995289802549">首次运行时,将第一个浏览器窗口最大化</translation> +<translation id="3210408472559816322">通过设置此政策,您可以指定不应加载哪些本地消息传递主机。拒绝名单值 <ph name="WILDCARD_VALUE" /> 表示所有本地消息传递主机均会被拒绝,除非它们已获得明确许可。 + + 如果您未设置此政策,<ph name="PRODUCT_NAME" /> 便会加载已安装的所有本地消息传递主机。</translation> <translation id="3211426942294667684">浏览器登录设置</translation> <translation id="3219421230122020860">隐身模式已启用</translation> <translation id="3220624000494482595">如果自助服务终端应用是一款 Android 应用,它将无法控制 <ph name="PRODUCT_OS_NAME" />版本,即使此政策设为 <ph name="TRUE" /> 也是如此。</translation> @@ -2200,6 +2238,7 @@ <translation id="4326288975020835343">如果此政策已启用,系统将不会保存浏览记录,并且会停用标签页同步功能,而用户则无法更改此设置。 如果此政策已停用或未设置,系统将会保存浏览记录。</translation> +<translation id="4329095223358818804">允许“快速解答”功能访问所选内容</translation> <translation id="4330372709562934569">允许所列网站从不安全情境向更专用网络上的端点发送请求。</translation> <translation id="4332177773549877617">记录 Android 应用安装事件</translation> <translation id="4341199399451274159">如果 <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> 已开启,您便可通过设置 <ph name="DEFAULT_SEARCH_PROVIDER_ENCODINGS_POLICY_NAME" /> 来指定搜索服务提供商支持的字符编码。编码是 UTF-8、GB2312 和 ISO-8859-1 之类的代码页名称。系统会按照您指定的顺序尝试这些编码。 @@ -2335,6 +2374,13 @@ <translation id="4578912515887794133">如果此设置处于启用状态,远程访问主机会对比本地用户(与主机关联的用户)的名称和注册为主机所有者的 Google 帐号的名称(例如,如果主机归 Google 帐号“johndoe@example.com”所有,Google 帐号的名称就是“johndoe”)。如果两者不同,远程访问主机将不会启动。RemoteAccessHostMatchUsername 政策应与 RemoteAccessHostDomain 一起使用,以便一并强制将主机所有者的 Google 帐号与特定网域(在上述示例中,网域为“example.com”)相关联。 如果停用或不指定此设置,远程访问主机可以与任何本地用户关联。</translation> +<translation id="4587365491100112056">通过设置此政策,您可以指定身份验证数据缓存期限(以小时为单位)。此缓存包含与机器领域所信任的领域(关联领域)相关的数据。因此,身份验证数据缓存有助于加快登录速度。系统不会缓存特定于用户的数据以及非关联领域的数据。 + + 如果此政策设为 0,系统会关闭身份验证数据缓存。每当用户登录时,系统都会提取特定于领域的数据,因此关闭身份验证数据缓存可能会显著降低用户的登录速度。 + + 如果您未设置此政策,已缓存的身份验证数据最多可被重复使用 73 小时。 + + 注意:重启设备会清除缓存。系统会为所有用户(甚至是临时用户)缓存领域数据。关闭缓存可阻止系统跟踪临时用户的领域。</translation> <translation id="4591366717022345234">为用户提供 Quick Fix Build</translation> <translation id="4592246263545654202">指定用户可否在 <ph name="PRODUCT_NAME" /> 中以无痕模式打开网页。 @@ -2443,6 +2489,7 @@ <ph name="PAGE_SIZE_NAME" /> 应包含所列格式之一,如果所需页面大小不在列表中,则应包含“custom”值。如果提供了“custom”值,则应指定 <ph name="PAGE_SIZE_CUSTOM_SIZE" /> 属性,用于指定所需的高度和宽度(以微米为单位)。如果未提供“custom”值,便不应指定 <ph name="PAGE_SIZE_CUSTOM_SIZE" /> 属性。系统会忽略违反这些规则的政策。 如果这一页面大小在用户选择的打印机上不适用,系统会忽略此政策。</translation> +<translation id="4790588245699320140">允许 Google 助理访问屏幕上的内容</translation> <translation id="4802744647065138872">限制为供执行紧急回滚时使用而保留的用户数据快照的数量。</translation> <translation id="4802905909524200151">配置 <ph name="TPM_FIRMWARE_UPDATE_TPM" /> 固件更新行为</translation> <translation id="4804828344300125154">在用户退出后一律重新启动。</translation> @@ -2548,6 +2595,15 @@ <translation id="5017369989680827157">如果此政策设为 True 或未设置,用户可以控制是否在界面中自动填充地址。 如果此政策设为 False,“自动填充”功能一律不会建议或填充地址信息,也不会保存用户在浏览网页时提交的其他地址信息。</translation> +<translation id="5021550478471824215">通过设置此政策,您能以列表形式指定一系列预先配置的网络文件共享。每个列表项都是一个包含下面这 2 项属性的对象:<ph name="SHARE_URL_FIELD_NAME" /> 和 <ph name="MODE_FIELD_NAME" />。 + + <ph name="SHARE_URL_FIELD_NAME" /> 应设为共享文件的网址。 + + <ph name="MODE_FIELD_NAME" /> 应设为 <ph name="MODE_ENUM_DROP_DOWN" /> 或 <ph name="MODE_ENUM_PRE_MOUNT" />: + + * <ph name="MODE_ENUM_DROP_DOWN" /> 表示 <ph name="SHARE_URL_FIELD_NAME" /> 将会添加到共享文件发现列表中。 + + * <ph name="MODE_ENUM_PRE_MOUNT" /> 表示 <ph name="SHARE_URL_FIELD_NAME" /> 将会提前装载。</translation> <translation id="5023555740504506178">如果此政策已启用或未配置(默认),网页可以使用屏幕共享 API(例如 getDisplayMedia() 或 Desktop Capture Extension API)提示用户选择要截取的标签页、窗口或桌面。 如果此政策已停用,对屏幕共享 API 的所有调用都会失败并会返回错误。</translation> @@ -2690,6 +2746,11 @@ <translation id="5236882091572996759">如果将此政策设置为 true 或未设置此政策,则播放音频时计算机不会被视为闲置。这样就不会导致闲置超时,系统也不会执行闲置操作。不过,在达到配置的超时值后,屏幕会变暗、关闭和锁定(而不考虑音频活动)。 如果将此政策设置为 false,则音频活动不会影响系统将计算机视为闲置状态。</translation> +<translation id="52393120393725840">如果此政策已启用,用户便可让 <ph name="PRODUCT_NAME" /> 记住密码并在自己下次登录相应网站时提供密码。 + + 如果此政策已停用,用户将无法保存新密码,但先前保存的密码仍可正常使用。 + + 如果您设置了此政策,用户便无法在 <ph name="PRODUCT_NAME" /> 中更改它。如果您未设置此政策,用户将能够关闭密码保存功能。</translation> <translation id="5239333626804545932">如果此政策已启用或未设置,Chrome 清理功能将会定期扫描系统以检测是否存在垃圾软件,并会在发现任何垃圾软件时询问用户是否要将其移除。此外,系统还会允许通过 chrome://settings 手动触发 Chrome 清理功能。 如果此政策已停用,Chrome 清理功能将不会定期进行扫描,并且手动触发会被停用。 @@ -2711,6 +2772,26 @@ 如果此政策设为 False 或未设置,系统将关闭“统一桌面”,而且用户无法开启该功能。</translation> <translation id="5255162913209987122">可推荐</translation> +<translation id="5264066441613395613">通过设置此政策,您可为 Chrome 和 ARC 应用配置代理设置,它们会忽略通过命令行指定的所有与代理有关的选项。 + + 如果您未设置此政策,用户便可自行选择代理设置。 + + 设置 <ph name="PROXY_SETTINGS_POLICY_NAME" /> 政策时可使用以下字段: + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />,该字段让您能够指定 Chrome 使用的代理服务器,并禁止用户更改代理设置 + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" />,即代理 .pac 文件的网址 + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" />,即代理服务器的网址 + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />,即 <ph name="PRODUCT_NAME" /> 会绕过、不对其使用代理的域名列表 + + <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> 字段已被弃用且已被 <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> 字段取代,后者让您能够指定 Chrome 使用的代理服务器并禁止用户更改代理设置。 + + 对于 <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />,如果您选择以下值: + * <ph name="PROXY_MODE_ENUM_DIRECT" />,系统永远不会使用代理,并且会忽略所有其他字段。 + * <ph name="PROXY_MODE_ENUM_SYSTEM" />,系统会使用自己的代理,并且会忽略所有其他字段。 + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />,系统会忽略所有其他字段。 + * <ph name="PROXY_MODE_ENUM_FIXED_SERVER" />,系统会使用 <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> 和 <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> 字段。 + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />,系统会使用 <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> 和 <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> 字段。 + + 注意:如需查看更详细的示例,请访问 Chromium 项目 ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett )。</translation> <translation id="5272684451155669299">如果此政策设为 True,则用户可以使用 Chrome 设备上的硬件,通过 <ph name="ENTERPRISE_PLATFORM_KEYS_API" />(使用 <ph name="CHALLENGE_USER_KEY_FUNCTION" />)远程向隐私认证中心 (Privacy CA) 认证自己的身份。 如果此政策设为 False 或未设置,则会导致无法调用此 API,并返回错误代码。</translation> @@ -3102,6 +3183,13 @@ <translation id="5697306356229823047">报告设备用户</translation> <translation id="570062449808736508">此政策设为非空字符串时,WebView 将读取具有指定机构名称的内容提供方的网址限制条件。</translation> <translation id="5708969689202733975">配置所允许的“快速解锁”模式</translation> +<translation id="5715617256528927547">通过设置此政策,您可以指定群组政策对象 (GPO) 缓存期限(以小时为单位),即 GPO 在不必重新下载的情况下可被重复使用的时长上限。只要 GPO 的版本未变,系统便会重复使用已缓存的 GPO,而不是在每次提取政策时都重新下载 GPO。 + + 如果此政策设为 0,系统会关闭 GPO 缓存。这样设置会增加服务器负载,因为系统在每次提取政策时都要重新下载 GPO,即使版本未变也是如此。 + + 如果您未设置此政策,已缓存的 GPO 最多可被重复使用 25 小时。 + + 注意:重启设备和退出帐号会清除缓存。</translation> <translation id="572155275267014074">Android 设置</translation> <translation id="5728154254076636808">允许创建 <ph name="PRODUCT_NAME" /> 个人资料数据的漫游副本</translation> <translation id="5732972008943405952">首次运行时,从默认浏览器导入自动填充表单数据</translation> @@ -3147,6 +3235,11 @@ <translation id="5815129011704381141">更新后自动重启</translation> <translation id="582857022372205358">启用短边双面打印</translation> <translation id="5832274826894536455">已弃用的政策</translation> +<translation id="5835253272509953988">如果此政策已启用,用户便可让 <ph name="PRODUCT_NAME" /> 检查所输入的用户名和密码是否已泄露。 + + 如果您设置了此政策,用户便无法在 <ph name="PRODUCT_NAME" /> 中更改它。如果您未设置此政策,系统会允许执行凭据泄露检查,但用户可关闭该功能。 + + 如果“安全浏览”功能已(无论是被政策还是被用户)停用,此行为便不会触发。若要强制开启“安全浏览”功能,请使用 <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> 政策或 <ph name="SAFE_BROWSING_PROTETION_LEVEL_POLICY_NAME" /> 政策。</translation> <translation id="5836064773277134605">限制远程访问主机使用的UDP端口范围</translation> <translation id="5845686745936515940">此政策让您能够将所有 Cookie 都恢复为旧版 <ph name="ATTRIBUTE_SAMESITE_NAME" /> 行为。恢复为旧版行为会导致未指定 <ph name="ATTRIBUTE_SAMESITE_NAME" /> 属性的 Cookie 被当作“<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />”Cookie 来处理,撤消“<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />”Cookie 必须附带“<ph name="ATTRIBUTE_SECURE_NAME" />”属性的要求,并且在评估两个网站是否为同一个网站时会跳过协议比较。如需查看完整说明,请参阅 https://www.chromium.org/administrators/policy-list-3/cookie-legacy-samesite-policies。 @@ -3452,6 +3545,13 @@ 如需详细了解 <ph name="CORS" />,请访问:<ph name="CORS_HELP_URL" />。 请注意,我们曾宣布将在 <ph name="PRODUCT_NAME" /> 82 版中移除此政策,但已改为在 84 版中移除。</translation> +<translation id="6279722058145292462">通过设置此政策,您可以指定客户端对其机器帐号密码的更改频率(以天为单位)。密码是由客户端随机生成的,不会显示给用户。停用此政策或设置较多的天数可能会对安全性产生不利影响,因为这会让潜在攻击者有更多时间来找出并使用机器帐号密码。 + + 如果您未设置此政策,客户端将会每 30 天更改一次机器帐号密码。 + + 如果此政策设为 0,客户端将无法更改机器帐号密码。 + + 注意:如果客户端在较长时间内一直处于离线状态,那么即使指定的天数已过,密码可能也不会更改。</translation> <translation id="6281043242780654992">配置本地消息传递政策。不允许黑名单中列出的本地消息传递主机(除非相应主机已列入白名单)。</translation> <translation id="6282799760374509080">是否允许音频捕获</translation> <translation id="6284362063448764300">TLS 1.1</translation> @@ -3585,6 +3685,9 @@ 要在设备闲置时锁定屏幕,您最好采用以下方式:让系统在进入暂停状态时锁定屏幕,并指示 <ph name="PRODUCT_OS_NAME" />在闲置延迟时间过后进入暂停状态。只有在以下情况下才应使用此政策:屏幕锁定时间应显著早于系统进入暂停状态的时间,或者完全不需要在设备闲置时暂停系统。 指定的政策值应以毫秒为单位,且必须小于闲置延迟时间。</translation> +<translation id="6506486086262398387">如果此政策已启用,适用于 <ph name="PRODUCT_OS_NAME" />的网络文件共享功能会酌情使用 NTLM 对 SMB 共享文件进行身份验证。如果此政策已停用,系统会关闭对 SMB 共享文件的 NTLM 身份验证机制。 + + 如果您未设置此政策,系统的默认行为就会是:为受管用户停用此政策,并为其他用户启用此政策。</translation> <translation id="6515357889978918016"><ph name="PLUGIN_VM_NAME" /> 图片</translation> <translation id="6518102411616460786">为实现版本降级,等待当前版本有可用的稳定版</translation> <translation id="6520802717075138474">首次运行时,从默认浏览器导入搜索引擎</translation> @@ -3613,6 +3716,22 @@ 要详细了解有效网址格式,请访问 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。</translation> <translation id="6553143066970470539">屏幕亮度百分比</translation> <translation id="6559057113164934677">不允许任何网站使用摄像头和麦克风</translation> +<translation id="6559475864956112261">此政策已被弃用,请改用 <ph name="PROXY_SETTINGS_POLICY_NAME" />。 + + 如果此政策已启用,您便可指定 Chrome 使用的代理服务器,并禁止用户更改代理设置。Chrome 和 ARC 应用会忽略通过命令行指定的所有与代理有关的选项。此政策仅在 <ph name="PROXY_SETTINGS_POLICY_NAME" /> 政策未被指定时生效。 + + 如果您选择以下设置,系统会忽略其他选项: + * <ph name="PROXY_MODE_ENUM_DIRECT" /> = 永不使用代理服务器,一律直接连接 + * <ph name="PROXY_MODE_ENUM_SYSTEM" /> = 使用系统的代理设置 + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" /> = 自动检测代理服务器 + + 如果您选择使用: + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> = 固定的代理服务器。您可借助 <ph name="PROXY_SERVER_POLICY_NAME" /> 和 <ph name="PROXY_BYPASS_LIST_POLICY_NAME" /> 进一步指定相关选项。ARC 应用只能使用优先级最高的 HTTP 代理服务器。 + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> = .pac 代理脚本。您可以使用 <ph name="PROXY_PAC_URL_POLICY_NAME" /> 指定代理 .pac 文件的网址。 + + 如果您未设置此政策,用户便可自行选择代理设置。 + + 注意:如需查看详细示例,请访问 Chromium 项目 ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett )。</translation> <translation id="6561396069801924653">在系统任务栏菜单中显示无障碍选项</translation> <translation id="6563458316362153786">启用 802.11r 快速切换</translation> <translation id="6568977718979857253">此政策已被弃用。请使用 <ph name="DEFAULT_PLUGINS_SETTING_POLICY_NAME" /> 控制 Flash 插件的可用性,并使用 <ph name="ALWAYS_OPEN_PDF_EXTERNALLY_POLICY_NAME" /> 控制是否应使用集成式 PDF 查看器打开 PDF 文件。 @@ -4442,6 +4561,13 @@ 如果用户的设备为受管理设备,则此功能的可用性还取决于相应的设备政策。 如果用户的设备不是受管理设备,则此功能的可用性还取决于用户是不是设备所有者。</translation> +<translation id="7570111012674064005">通过设置此政策,您可以指定是否处理计算机群组政策对象 (GPO) 中的用户政策以及如何处理。 + + * 如果此政策设为“默认”或未设置,系统会仅从用户 GPO 读取用户政策。计算机 GPO 会被忽略。 + + * 如果此政策设为“合并”,用户 GPO 中的用户政策会与计算机 GPO 中的用户政策合并。计算机 GPO 优先。 + + * 如果此政策设为“替换”,计算机 GPO 中的用户政策会替换用户 GPO 中的用户政策。用户 GPO 会被忽略。</translation> <translation id="7570291542739287032">仅限云端</translation> <translation id="757395965347379751">启用此设置后,只要 SHA-1 签名证书成功验证并关联到本地安装的 CA 证书,<ph name="PRODUCT_NAME" /> 就会允许使用这些证书。 @@ -5011,6 +5137,11 @@ 如果此政策设为 true 或未设置,用户会获得对 Crostini 容器的 root 权限。 如果此政策设为 false,用户将不会获得对现有以及新的 Crostini 容器的 root 权限。</translation> <translation id="8417305981081876834">设置锁定屏幕 PIN 码的长度上限</translation> +<translation id="841853753509411428">此政策已被弃用,请改用“<ph name="NATIVE_MESSAGING_ALLOWLIST_POLICY_NAME" />”政策。 + + 通过设置此政策,您可以指定不受拒绝名单影响的本地消息传递主机。拒绝名单值 <ph name="WILDCARD_VALUE" /> 表示所有本地消息传递主机均会被拒绝,除非它们已获得明确许可。 + + 默认情况下,所有本地消息传递主机都列在许可名单中,但如果所有本地消息传递主机都已被依照某项政策拒绝,管理员可以使用许可名单来更改该政策。</translation> <translation id="841977920223099909">密码保护服务警告功能触发条件</translation> <translation id="8424255554404582727">设置显示屏默认旋转角度,每次重新启动后都重新应用设置的角度</translation> <translation id="8426231401662877819">将屏幕顺时针旋转 90 度</translation> @@ -5229,6 +5360,9 @@ <translation id="8767743923206070405">如果此政策已启用,系统会在 <ph name="PRODUCT_NAME" /> 的工具栏中显示“主页”按钮。如果此政策已停用,系统不会显示“主页”按钮。 如果您设置了此政策,用户将无法在 <ph name="PRODUCT_NAME" /> 中更改它。如果您未设置此政策,用户便可自行选择是否显示“主页”按钮。</translation> +<translation id="8768528324886802059">通过设置此政策,您可以指定不受拒绝名单影响的本地消息传递主机。拒绝名单值 <ph name="WILDCARD_VALUE" /> 表示所有本地消息传递主机均会被拒绝,除非它们已获得明确许可。 + + 默认情况下,所有本地消息传递主机都列在许可名单中,但如果所有本地消息传递主机都已被依照某项政策拒绝,管理员可以使用许可名单来更改该政策。</translation> <translation id="877185520360032968">通过设置此政策,您可以更改 Chrome 会将文件下载到的默认目录,但用户可以更改该目录。 如果您不设置此政策,Chrome 会使用自己的平台专用默认目录。
diff --git a/components/printing/browser/printer_capabilities_unittest.cc b/components/printing/browser/printer_capabilities_unittest.cc index 507cfed..9a99dbf 100644 --- a/components/printing/browser/printer_capabilities_unittest.cc +++ b/components/printing/browser/printer_capabilities_unittest.cc
@@ -123,7 +123,9 @@ // Set a capability and add a valid printer. auto caps = std::make_unique<PrinterSemanticCapsAndDefaults>(); caps->dpis = {{600, 600}}; - print_backend()->AddValidPrinter(printer_name, std::move(caps)); + print_backend()->AddValidPrinter( + printer_name, std::move(caps), + std::make_unique<printing::PrinterBasicInfo>(basic_info)); base::Value settings_dictionary = GetSettingsOnBlockingTaskRunnerAndWaitForResults( @@ -153,7 +155,8 @@ PrinterSemanticCapsAndDefaults::Papers no_user_defined_papers; // Return false when attempting to retrieve capabilities. - print_backend()->AddValidPrinter(printer_name, nullptr); + print_backend()->AddValidPrinter(printer_name, /*caps=*/nullptr, + /*info=*/nullptr); base::Value settings_dictionary = GetSettingsOnBlockingTaskRunnerAndWaitForResults( @@ -177,7 +180,9 @@ auto caps = std::make_unique<PrinterSemanticCapsAndDefaults>(); caps->papers.push_back({"printer_foo", "printer_vendor", {100, 234}}); caps->dpis = {{600, 600}}; - print_backend()->AddValidPrinter(printer_name, std::move(caps)); + print_backend()->AddValidPrinter( + printer_name, std::move(caps), + std::make_unique<printing::PrinterBasicInfo>(basic_info)); // Add some more paper sizes. PrinterSemanticCapsAndDefaults::Papers user_defined_papers; @@ -224,7 +229,9 @@ // Set a capability and add a valid printer. auto caps = std::make_unique<PrinterSemanticCapsAndDefaults>(); caps->pin_supported = true; - print_backend()->AddValidPrinter(printer_name, std::move(caps)); + print_backend()->AddValidPrinter( + printer_name, std::move(caps), + std::make_unique<printing::PrinterBasicInfo>(basic_info)); base::Value settings_dictionary = GetSettingsOnBlockingTaskRunnerAndWaitForResults(
diff --git a/components/spellcheck/common/spellcheck.mojom b/components/spellcheck/common/spellcheck.mojom index dfaa735..21bce14 100644 --- a/components/spellcheck/common/spellcheck.mojom +++ b/components/spellcheck/common/spellcheck.mojom
@@ -4,7 +4,7 @@ module spellcheck.mojom; -import "mojo/public/mojom/base/file.mojom"; +import "mojo/public/mojom/base/read_only_file.mojom"; import "mojo/public/mojom/base/string16.mojom"; // Render process interface exposed to the browser for receiving process- @@ -25,7 +25,7 @@ }; struct SpellCheckBDictLanguage { - mojo_base.mojom.File? file; + mojo_base.mojom.ReadOnlyFile? file; string language; };
diff --git a/components/strings/components_strings_af.xtb b/components/strings/components_strings_af.xtb index 2e07156..b72b161 100644 --- a/components/strings/components_strings_af.xtb +++ b/components/strings/components_strings_af.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Beleide</translation> <translation id="2183608646556468874">Foonnommer</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adres}other{# adresse}}</translation> -<translation id="2187243482123994665">Gebruikerteenwoordigheid</translation> <translation id="2187317261103489799">Bespeur (verstek)</translation> <translation id="2188375229972301266">Veelvuldige pons onder</translation> <translation id="2202020181578195191">Voer 'n geldige vervaljaar in</translation>
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb index 2ab9fcbf..b0463a9 100644 --- a/components/strings/components_strings_am.xtb +++ b/components/strings/components_strings_am.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">መምሪያዎች</translation> <translation id="2183608646556468874">ስልክ ቁጥር</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 አድራሻ}one{# አድራሻዎች}other{# አድራሻዎች}}</translation> -<translation id="2187243482123994665">የተጠቃሚ ተገኝነት</translation> <translation id="2187317261103489799">አግኝ (ነባሪ)</translation> <translation id="2188375229972301266">በርካታ ብስ ግርጌ</translation> <translation id="2202020181578195191">ትክክለኛ የአገልግሎት ማብቂያ ዓመት ያስገቡ</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb index 137aa195..4abcaa1 100644 --- a/components/strings/components_strings_ar.xtb +++ b/components/strings/components_strings_ar.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">السياسات</translation> <translation id="2183608646556468874">رقم الهاتف</translation> <translation id="2184405333245229118">{COUNT,plural, =1{عنوان واحد}zero{# عنوان}two{عنوانان (#)}few{# عناوين}many{# عنوانًا}other{# عنوان}}</translation> -<translation id="2187243482123994665">استخدام الجهاز</translation> <translation id="2187317261103489799">اكتشاف (تلقائي)</translation> <translation id="2188375229972301266">عمل عدة ثقوب في الأسفل</translation> <translation id="2202020181578195191">أدخِل سنة تاريخ انتهاء صلاحية صحيحة</translation>
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb index d0ca7a87..d02e5950f 100644 --- a/components/strings/components_strings_as.xtb +++ b/components/strings/components_strings_as.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">নীতি</translation> <translation id="2183608646556468874">ফ’ন নম্বৰ</translation> <translation id="2184405333245229118">{COUNT,plural, =1{১টা ঠিকনা}one{#টা ঠিকনা}other{#টা ঠিকনা}}</translation> -<translation id="2187243482123994665">ব্যৱহাৰকাৰীৰ সক্ৰিয়তা</translation> <translation id="2187317261103489799">চিনাক্তকৰক (ডিফ’ল্ট)</translation> <translation id="2188375229972301266">তলৰ অংশত একাধিক পাঞ্চ কৰক</translation> <translation id="2202020181578195191">এটা মান্য ম্যাদ উকলা বছৰ দিয়ক</translation> @@ -1886,6 +1885,7 @@ <translation id="8685155993131031756">Prc-16K</translation> <translation id="8688672835843460752">উপলব্ধ</translation> <translation id="868922510921656628">প্ৰতিটো ছেটত পৃষ্ঠাৰ সংখ্যা</translation> +<translation id="8697373104056314601">Chromeৰ সৰ্বোচ্চ স্তৰৰ সুৰক্ষা লাভ কৰিবলৈ <ph name="BEGIN_ENHANCED_PROTECTION_LINK" />বৰ্ধিত সুৰক্ষাৰ সুবিধাটো অন কৰক<ph name="END_ENHANCED_PROTECTION_LINK" />।</translation> <translation id="869891660844655955">ম্যাদ উকলাৰ তাৰিখ</translation> <translation id="8699041776323235191">HID ডিভাইচ</translation> <translation id="8703575177326907206"><ph name="DOMAIN" />লৈ আপোনাৰ সংযোগ এনক্ৰিপ্ট কৰা হোৱা নাই।</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb index 9776a678..a6430c8 100644 --- a/components/strings/components_strings_az.xtb +++ b/components/strings/components_strings_az.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Siyasətlər</translation> <translation id="2183608646556468874">Telefon Nömrəsi</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 ünvan}other{# ünvan}}</translation> -<translation id="2187243482123994665">İstifadəçinin evdə olması</translation> <translation id="2187317261103489799">Aşkarlayın (defolt)</translation> <translation id="2188375229972301266">Aşağıdan çoxsaylı deşik açın</translation> <translation id="2202020181578195191">Düzgün bitmə ili daxil edin</translation>
diff --git a/components/strings/components_strings_be.xtb b/components/strings/components_strings_be.xtb index eac738a..1da44d5 100644 --- a/components/strings/components_strings_be.xtb +++ b/components/strings/components_strings_be.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Палітыкі</translation> <translation id="2183608646556468874">Нумар тэлефона</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 адрас}one{# адрас}few{# адрасы}many{# адрасоў}other{# адраса}}</translation> -<translation id="2187243482123994665">Прысутнасць карыстальніка</translation> <translation id="2187317261103489799">Выяўляць (стандартна)</translation> <translation id="2188375229972301266">Некалькі дзірак знізу</translation> <translation id="2202020181578195191">Увядзіце сапраўдны год заканчэння тэрміну дзеяння</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb index 6945862..91fbec5 100644 --- a/components/strings/components_strings_bg.xtb +++ b/components/strings/components_strings_bg.xtb
@@ -315,7 +315,6 @@ <translation id="2181821976797666341">Правила</translation> <translation id="2183608646556468874">Телефонен номер</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 адрес}other{# адреса}}</translation> -<translation id="2187243482123994665">Присъствие на потребителя</translation> <translation id="2187317261103489799">Откриване (по подразбиране)</translation> <translation id="2188375229972301266">Няколко перфорации в долната част</translation> <translation id="2202020181578195191">Въведете валидна година на изтичане</translation> @@ -905,6 +904,7 @@ <translation id="4597348597567598915">Размер 8</translation> <translation id="4600854749408232102">C6/C5 (плик)</translation> <translation id="4628948037717959914">Снимка</translation> +<translation id="4631649115723685955">Опцията за връщане на пари при покупка е свързана</translation> <translation id="464342062220857295">Функции за търсене</translation> <translation id="4644670975240021822">В обратен ред с отпечатаната страна надолу</translation> <translation id="4646534391647090355">Към изтеглянията</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb index 9d3a68d..1e498ca 100644 --- a/components/strings/components_strings_bn.xtb +++ b/components/strings/components_strings_bn.xtb
@@ -318,7 +318,6 @@ <translation id="2181821976797666341">নীতিসমূহ</translation> <translation id="2183608646556468874">ফোন নম্বর</translation> <translation id="2184405333245229118">{COUNT,plural, =1{১টি ঠিকানা}one{ #টি ঠিকানা}other{ #টি ঠিকানা}}</translation> -<translation id="2187243482123994665">ব্যবহারকারীর উপস্থিতি</translation> <translation id="2187317261103489799">শনাক্ত করুন (ডিফল্ট)</translation> <translation id="2188375229972301266">নিচে মাল্টিপল পাঞ্চ</translation> <translation id="2202020181578195191">মেয়াদ শেষ হওয়ার বছরের সঠিক মান লিখুন</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb index 48896fd3..4c7222e 100644 --- a/components/strings/components_strings_bs.xtb +++ b/components/strings/components_strings_bs.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Pravila</translation> <translation id="2183608646556468874">Broj telefona</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adresa}one{# adresa}few{# adrese}other{# adresa}}</translation> -<translation id="2187243482123994665">Prisutnost korisnika</translation> <translation id="2187317261103489799">Otkrij (zadano)</translation> <translation id="2188375229972301266">Višestruko bušenje na donjoj strani</translation> <translation id="2202020181578195191">Unesite važeću godinu isteka</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb index 13b0029..64e7f85 100644 --- a/components/strings/components_strings_ca.xtb +++ b/components/strings/components_strings_ca.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">Polítiques</translation> <translation id="2183608646556468874">Número de telèfon</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adreça}other{# adreces}}</translation> -<translation id="2187243482123994665">Presència de l'usuari</translation> <translation id="2187317261103489799">Detecta (opció predeterminada)</translation> <translation id="2188375229972301266">Encunyació múltiple a la part inferior</translation> <translation id="2202020181578195191">Introdueix un any de caducitat vàlid</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb index 1d29e1f5..ad14c8e 100644 --- a/components/strings/components_strings_cs.xtb +++ b/components/strings/components_strings_cs.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">Zásady</translation> <translation id="2183608646556468874">Telefonní číslo</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adresa}few{# adresy}many{# adresy}other{# adres}}</translation> -<translation id="2187243482123994665">Aktivita uživatele</translation> <translation id="2187317261103489799">Rozpoznat (výchozí)</translation> <translation id="2188375229972301266">Několik děr dole</translation> <translation id="2202020181578195191">Zadejte platný rok vypršení platnosti</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb index 2060c10..28e4805f2 100644 --- a/components/strings/components_strings_da.xtb +++ b/components/strings/components_strings_da.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Politikker</translation> <translation id="2183608646556468874">Telefonnummer</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adresse}one{# adresse}other{# adresser}}</translation> -<translation id="2187243482123994665">Brugertilstedeværelse</translation> <translation id="2187317261103489799">Registrer (standardindstilling)</translation> <translation id="2188375229972301266">Flere huller nederst</translation> <translation id="2202020181578195191">Angiv et gyldigt udløbsår</translation> @@ -909,6 +908,7 @@ <translation id="4597348597567598915">Størrelse 8</translation> <translation id="4600854749408232102">C6/C5 (Envelope)</translation> <translation id="4628948037717959914">Billede</translation> +<translation id="4631649115723685955">Penge tilbage er tilknyttet</translation> <translation id="464342062220857295">Søgefunktioner</translation> <translation id="4644670975240021822">Omvendt rækkefølge med forside nedad</translation> <translation id="4646534391647090355">Før mig dertil nu</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb index 72fa5ffa..7eb8db4 100644 --- a/components/strings/components_strings_de.xtb +++ b/components/strings/components_strings_de.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">Richtlinien</translation> <translation id="2183608646556468874">Telefonnummer</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 Adresse}other{# Adressen}}</translation> -<translation id="2187243482123994665">Anwesenheit des Nutzers</translation> <translation id="2187317261103489799">Erkennen (Standardeinstellung)</translation> <translation id="2188375229972301266">Mehrfache Lochung unten</translation> <translation id="2202020181578195191">Geben Sie ein gültiges Ablaufjahr ein</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb index b6f0250..f2510d46 100644 --- a/components/strings/components_strings_el.xtb +++ b/components/strings/components_strings_el.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Πολιτικές</translation> <translation id="2183608646556468874">Αριθμός τηλεφώνου</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 διεύθυνση}other{# διευθύνσεις}}</translation> -<translation id="2187243482123994665">Παρουσία χρήστη</translation> <translation id="2187317261103489799">Εντοπισμός (προεπιλογή)</translation> <translation id="2188375229972301266">Πολλαπλό τρύπημα στο κάτω μέρος</translation> <translation id="2202020181578195191">Εισαγάγετε ένα έγκυρο έτος λήξης</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb index ca88717df..2948e72c 100644 --- a/components/strings/components_strings_en-GB.xtb +++ b/components/strings/components_strings_en-GB.xtb
@@ -316,7 +316,6 @@ <translation id="2181821976797666341">Policies</translation> <translation id="2183608646556468874">Phone Number</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 address}other{# addresses}}</translation> -<translation id="2187243482123994665">User presence</translation> <translation id="2187317261103489799">Detect (default)</translation> <translation id="2188375229972301266">Multiple punch bottom</translation> <translation id="2202020181578195191">Enter a valid expiry year</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb index 03a8302..a55bb0d 100644 --- a/components/strings/components_strings_es-419.xtb +++ b/components/strings/components_strings_es-419.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">Políticas</translation> <translation id="2183608646556468874">Número de teléfono</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 dirección}other{# direcciones}}</translation> -<translation id="2187243482123994665">Presencia del usuario</translation> <translation id="2187317261103489799">Detectar (predeterminado)</translation> <translation id="2188375229972301266">Perforaciones múltiples en la parte inferior</translation> <translation id="2202020181578195191">Ingresa un año de vencimiento válido</translation> @@ -1887,6 +1886,7 @@ <translation id="8685155993131031756">Prc-16K</translation> <translation id="8688672835843460752">Disponible</translation> <translation id="868922510921656628">Páginas por conjunto</translation> +<translation id="8697373104056314601">Para acceder al nivel más alto de seguridad de Chrome, <ph name="BEGIN_ENHANCED_PROTECTION_LINK" />activa la protección mejorada<ph name="END_ENHANCED_PROTECTION_LINK" />.</translation> <translation id="869891660844655955">Fecha de vencimiento</translation> <translation id="8699041776323235191">Dispositivo HID</translation> <translation id="8703575177326907206">Tu conexión a <ph name="DOMAIN" /> no está cifrada.</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb index 1fe992d31..648023a 100644 --- a/components/strings/components_strings_es.xtb +++ b/components/strings/components_strings_es.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Políticas</translation> <translation id="2183608646556468874">N.º de teléfono</translation> <translation id="2184405333245229118">{COUNT,plural, =1{Una dirección}other{# direcciones}}</translation> -<translation id="2187243482123994665">Presencia del usuario</translation> <translation id="2187317261103489799">Detectar (predeterminado)</translation> <translation id="2188375229972301266">Perforado múltiple en la parte inferior</translation> <translation id="2202020181578195191">Introduce un año de vencimiento válido</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb index 33b2809b..3568c2d 100644 --- a/components/strings/components_strings_et.xtb +++ b/components/strings/components_strings_et.xtb
@@ -316,7 +316,6 @@ <translation id="2181821976797666341">Reeglid</translation> <translation id="2183608646556468874">Telefoninumber</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 aadress}other{# aadressi}}</translation> -<translation id="2187243482123994665">Kasutaja kohalolek</translation> <translation id="2187317261103489799">Tuvasta (vaikimisi)</translation> <translation id="2188375229972301266">Mitu auku all</translation> <translation id="2202020181578195191">Sisestage kehtiv aegumisaasta</translation>
diff --git a/components/strings/components_strings_eu.xtb b/components/strings/components_strings_eu.xtb index 0a57f3af..4249bb6 100644 --- a/components/strings/components_strings_eu.xtb +++ b/components/strings/components_strings_eu.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">Gidalerroak</translation> <translation id="2183608646556468874">Telefono-zenbakia</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 helbide}other{# helbide}}</translation> -<translation id="2187243482123994665">Erabiltzailearen presentzia</translation> <translation id="2187317261103489799">Hauteman (lehenetsia)</translation> <translation id="2188375229972301266">Hainbat zulo behean</translation> <translation id="2202020181578195191">Idatzi balio duen iraungitze-urte bat</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb index 0429a9b..d99aaac 100644 --- a/components/strings/components_strings_fa.xtb +++ b/components/strings/components_strings_fa.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">خط مشیها</translation> <translation id="2183608646556468874">شماره تلفن</translation> <translation id="2184405333245229118">{COUNT,plural, =1{۱ نشانی}one{# نشانی}other{# نشانی}}</translation> -<translation id="2187243482123994665">حضور کاربر</translation> <translation id="2187317261103489799">تشخیص (پیشفرض)</translation> <translation id="2188375229972301266">چندین سوراخ در پایین</translation> <translation id="2202020181578195191">سال انقضای معتبری وارد کنید</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb index 249dac3..95430eaa 100644 --- a/components/strings/components_strings_fi.xtb +++ b/components/strings/components_strings_fi.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Käytännöt</translation> <translation id="2183608646556468874">Puhelinnumero</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 osoite}other{# osoitetta}}</translation> -<translation id="2187243482123994665">Käyttäjän paikallaolo</translation> <translation id="2187317261103489799">Tunnista (oletus)</translation> <translation id="2188375229972301266">Useita reikiä alareunassa</translation> <translation id="2202020181578195191">Anna kelvollinen viimeinen voimassaolovuosi.</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb index d0b8601d..a9eb446 100644 --- a/components/strings/components_strings_fil.xtb +++ b/components/strings/components_strings_fil.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Mga Patakaran</translation> <translation id="2183608646556468874">Numero ng Telepono</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 address}one{# address}other{# na address}}</translation> -<translation id="2187243482123994665">Pagiging aktibo ng user</translation> <translation id="2187317261103489799">Tukuyin (default)</translation> <translation id="2188375229972301266">Multiple punch bottom</translation> <translation id="2202020181578195191">Maglagay ng wastong taon ng pag-expire</translation>
diff --git a/components/strings/components_strings_fr-CA.xtb b/components/strings/components_strings_fr-CA.xtb index 0a39cf3..1f5c8bc 100644 --- a/components/strings/components_strings_fr-CA.xtb +++ b/components/strings/components_strings_fr-CA.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">Règles</translation> <translation id="2183608646556468874">Numéro de téléphone</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adresse}one{# adresse}other{# adresses}}</translation> -<translation id="2187243482123994665">Présence de l'utilisateur</translation> <translation id="2187317261103489799">Détecter (par défaut)</translation> <translation id="2188375229972301266">Perforation multiple en bas</translation> <translation id="2202020181578195191">Entrez une année d'expiration valide</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb index 93166d34..d74467d 100644 --- a/components/strings/components_strings_fr.xtb +++ b/components/strings/components_strings_fr.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Règles</translation> <translation id="2183608646556468874">Numéro de téléphone</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adresse}one{# adresse}other{# adresses}}</translation> -<translation id="2187243482123994665">Présence de l'utilisateur</translation> <translation id="2187317261103489799">Détecter (par défaut)</translation> <translation id="2188375229972301266">Multiple perforation en bas</translation> <translation id="2202020181578195191">Saisissez une année d'expiration valide</translation>
diff --git a/components/strings/components_strings_gl.xtb b/components/strings/components_strings_gl.xtb index 524b16c..319a7d5 100644 --- a/components/strings/components_strings_gl.xtb +++ b/components/strings/components_strings_gl.xtb
@@ -316,7 +316,6 @@ <translation id="2181821976797666341">Políticas</translation> <translation id="2183608646556468874">Número de teléfono</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 enderezo}other{# enderezos}}</translation> -<translation id="2187243482123994665">Estado de actividade do usuario</translation> <translation id="2187317261103489799">Detectar (predeterminado)</translation> <translation id="2188375229972301266">Varias perforacións na parte inferior</translation> <translation id="2202020181578195191">Introduce un ano de caducidade válido</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb index 518a801..89e8e16 100644 --- a/components/strings/components_strings_gu.xtb +++ b/components/strings/components_strings_gu.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">નીતિઓ</translation> <translation id="2183608646556468874">ફોન નંબર</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 સરનામું}one{# સરનામાં}other{# સરનામાં}}</translation> -<translation id="2187243482123994665">વપરાશકર્તાની હાજરી</translation> <translation id="2187317261103489799">શોધો (ડિફૉલ્ટ)</translation> <translation id="2188375229972301266">નીચેની બાજુએ એકથી વધુ કાણાં પાડો</translation> <translation id="2202020181578195191">એક માન્ય સમાપ્તિ વર્ષ દાખલ કરો</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb index cdb7e551..3c2869c 100644 --- a/components/strings/components_strings_hi.xtb +++ b/components/strings/components_strings_hi.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">नीतियां</translation> <translation id="2183608646556468874">फ़ोन नंबर</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 पता}one{# पते}other{# पते}}</translation> -<translation id="2187243482123994665">उपयोगकर्ता की मौजूदगी</translation> <translation id="2187317261103489799">पता लगाएं (डिफ़ॉल्ट)</translation> <translation id="2188375229972301266">नीचे की ओर एक से ज़्यादा पंच</translation> <translation id="2202020181578195191">खत्म होने का मान्य वर्ष डालें</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb index b160e5b..393491e 100644 --- a/components/strings/components_strings_hr.xtb +++ b/components/strings/components_strings_hr.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Pravila</translation> <translation id="2183608646556468874">Telefonski broj</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adresa}one{# adresa}few{# adrese}other{# adresa}}</translation> -<translation id="2187243482123994665">Korisnikova prisutnost</translation> <translation id="2187317261103489799">Otkrij (zadano)</translation> <translation id="2188375229972301266">Višestruko bušenje pri dnu</translation> <translation id="2202020181578195191">Unesite važeću godinu isteka</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb index a93fbe48..89c11c1 100644 --- a/components/strings/components_strings_hu.xtb +++ b/components/strings/components_strings_hu.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Házirendek</translation> <translation id="2183608646556468874">Telefonszám</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 cím}other{# cím}}</translation> -<translation id="2187243482123994665">Felhasználói jelenlét</translation> <translation id="2187317261103489799">Észlelés (alapértelmezett)</translation> <translation id="2188375229972301266">Több lyuk alul</translation> <translation id="2202020181578195191">Érvényes lejárati évet kell megadnia</translation>
diff --git a/components/strings/components_strings_hy.xtb b/components/strings/components_strings_hy.xtb index e8a32bda..c7c6887 100644 --- a/components/strings/components_strings_hy.xtb +++ b/components/strings/components_strings_hy.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Կանոններ</translation> <translation id="2183608646556468874">Հեռախոսահամար</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 հասցե}one{# addresses}other{# հասցե}}</translation> -<translation id="2187243482123994665">Օգտատիրոջ ներկայություն</translation> <translation id="2187317261103489799">Որոշել (կանխադրված)</translation> <translation id="2188375229972301266">Մի քանի անցք ներքևում</translation> <translation id="2202020181578195191">Մուտքագրեք ժամկետի սպառման վավեր տարեթիվ</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb index 97c7a2b..f726b13 100644 --- a/components/strings/components_strings_id.xtb +++ b/components/strings/components_strings_id.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">Kebijakan</translation> <translation id="2183608646556468874">Nomor Telepon</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 alamat}other{# alamat}}</translation> -<translation id="2187243482123994665">Kehadiran pengguna</translation> <translation id="2187317261103489799">Deteksi (default)</translation> <translation id="2188375229972301266">Beberapa lubang di bawah</translation> <translation id="2202020181578195191">Masukkan tahun habis masa berlaku yang valid</translation>
diff --git a/components/strings/components_strings_is.xtb b/components/strings/components_strings_is.xtb index cc5d185..a11dd40 100644 --- a/components/strings/components_strings_is.xtb +++ b/components/strings/components_strings_is.xtb
@@ -318,7 +318,6 @@ <translation id="2181821976797666341">Reglur</translation> <translation id="2183608646556468874">Símanúmer</translation> <translation id="2184405333245229118">{COUNT,plural, =1{Eitt heimilisfang}one{# heimilisfang}other{# heimilisföng}}</translation> -<translation id="2187243482123994665">Viðvera notanda</translation> <translation id="2187317261103489799">Greina (sjálfgefið)</translation> <translation id="2188375229972301266">Mörg göt neðst</translation> <translation id="2202020181578195191">Færðu inn gilt lokaár</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb index 6eddac60..c531e97 100644 --- a/components/strings/components_strings_it.xtb +++ b/components/strings/components_strings_it.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Criteri</translation> <translation id="2183608646556468874">Numero di telefono</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 indirizzo}other{# indirizzi}}</translation> -<translation id="2187243482123994665">Presenza dell'utente</translation> <translation id="2187317261103489799">Rileva (predefinita)</translation> <translation id="2188375229972301266">Perforatura multipla in basso</translation> <translation id="2202020181578195191">Inserisci un anno di scadenza valido</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb index d2027ca..807d3dcc 100644 --- a/components/strings/components_strings_iw.xtb +++ b/components/strings/components_strings_iw.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">מדיניות</translation> <translation id="2183608646556468874">מספר טלפון</translation> <translation id="2184405333245229118">{COUNT,plural, =1{כתובת אחת}two{שתי כתובות}many{# כתובות}other{# כתובות}}</translation> -<translation id="2187243482123994665">נוכחות משתמש</translation> <translation id="2187317261103489799">זהה (ברירת מחדל)</translation> <translation id="2188375229972301266">ניקובים מרובים בחלק התחתון</translation> <translation id="2202020181578195191">עליך להזין שנת תפוגה חוקית</translation> @@ -1673,7 +1672,7 @@ <translation id="7687305263118037187">זמן קצוב לתפוגה של ניסיון חוזר</translation> <translation id="7693583928066320343">סדר דפים התקבל</translation> <translation id="7697066736081121494">Prc8 (Envelope)</translation> -<translation id="769721561045429135">יש לך כרגע כרטיסים שאפשר להשתמש בהם רק במכשיר הזה. כדי לעיין בכרטיסים יש ללחוץ על 'המשך".</translation> +<translation id="769721561045429135">יש לך כרגע כרטיסים שאפשר להשתמש בהם רק במכשיר הזה. כדי לעיין בכרטיסים יש ללחוץ על 'המשך'.</translation> <translation id="7699293099605015246">לא ניתן להציג כרגע מאמרים</translation> <translation id="7701040980221191251">אין</translation> <translation id="7704050614460855821"><ph name="BEGIN_LINK" />המשך אל <ph name="SITE" /> (לא בטוח)<ph name="END_LINK" /></translation> @@ -1989,7 +1988,7 @@ <translation id="9044359186343685026">שימוש ב-Touch ID</translation> <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> - <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">ניסית להגיע ל-<ph name="DOMAIN" />, אך השרת הציג אישור לא חוקי.</translation> -<translation id="9050666287014529139">משפט-סיסמה</translation> +<translation id="9050666287014529139">ביטוי סיסמה</translation> <translation id="9056953843249698117">חנות</translation> <translation id="9062620674789239642">ייתכן שהוא הועבר, עבר עריכה או נמחק.</translation> <translation id="9065203028668620118">עריכה</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb index 6611fa0..f9c35eb 100644 --- a/components/strings/components_strings_ja.xtb +++ b/components/strings/components_strings_ja.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">ポリシー</translation> <translation id="2183608646556468874">電話番号</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 件のアドレス}other{# 件のアドレス}}</translation> -<translation id="2187243482123994665">ユーザーのアクティブ状態</translation> <translation id="2187317261103489799">検出(デフォルト)</translation> <translation id="2188375229972301266">多穴パンチ(下)</translation> <translation id="2202020181578195191">有効期限(年)を正しい形式で入力してください</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb index e3f156d5..18182ff 100644 --- a/components/strings/components_strings_ka.xtb +++ b/components/strings/components_strings_ka.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">წესები</translation> <translation id="2183608646556468874">ტელეფონის ნომერი</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 მისამართი}other{# მისამართი}}</translation> -<translation id="2187243482123994665">მომხმარებლის დასწრება</translation> <translation id="2187317261103489799">ამოცნობა (ნაგულისხმევი)</translation> <translation id="2188375229972301266">მრავალად გახვრეტა ქვემოთ</translation> <translation id="2202020181578195191">შეიყვანეთ მოქმედების ვადის გასვლის სწორი წელი</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb index 1f600623..b8c941a2 100644 --- a/components/strings/components_strings_kk.xtb +++ b/components/strings/components_strings_kk.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Саясаттар</translation> <translation id="2183608646556468874">Телефон нөмірі</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 мекенжай}other{# мекенжай}}</translation> -<translation id="2187243482123994665">Пайдаланушының бар-жоғы</translation> <translation id="2187317261103489799">Анықтау (әдепкі)</translation> <translation id="2188375229972301266">Төменгі жағын бірнеше рет тесу</translation> <translation id="2202020181578195191">Дұрыс жарамдылық мерзімі аяқталатын жылды енгізіңіз</translation>
diff --git a/components/strings/components_strings_km.xtb b/components/strings/components_strings_km.xtb index 4e2128b..b1ae861 100644 --- a/components/strings/components_strings_km.xtb +++ b/components/strings/components_strings_km.xtb
@@ -319,7 +319,6 @@ <translation id="2181821976797666341">គោលការណ៍</translation> <translation id="2183608646556468874">លេខទូរសព្ទ</translation> <translation id="2184405333245229118">{COUNT,plural, =1{អាសយដ្ឋាន 1}other{អាសយដ្ឋាន #}}</translation> -<translation id="2187243482123994665">វត្តមានរបស់អ្នកប្រើប្រាស់</translation> <translation id="2187317261103489799">ស្វែងរក (លំនាំដើម)</translation> <translation id="2188375229972301266">ចោះច្រើនរន្ធខាងក្រោម</translation> <translation id="2202020181578195191">បញ្ចូលឆ្នាំផុតកំណត់ឲ្យបានត្រឹមត្រូវ</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb index b281030..4e965f7c 100644 --- a/components/strings/components_strings_kn.xtb +++ b/components/strings/components_strings_kn.xtb
@@ -315,7 +315,6 @@ <translation id="2181821976797666341">ನಿಯಮಗಳು</translation> <translation id="2183608646556468874">ಫೋನ್ ಸಂಖ್ಯೆ</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 ವಿಳಾಸ}one{# ವಿಳಾಸಗಳು}other{# ವಿಳಾಸಗಳು}}</translation> -<translation id="2187243482123994665">ಬಳಕೆದಾರರ ಉಪಸ್ಥಿತಿ</translation> <translation id="2187317261103489799">ಪತ್ತೆ ಮಾಡಿ (ಡಿಫಾಲ್ಟ್)</translation> <translation id="2188375229972301266">ಕೆಳಭಾಗದಲ್ಲಿ ಅನೇಕ ತೂತುಗಳನ್ನು ಮಾಡಿ</translation> <translation id="2202020181578195191">ಮಾನ್ಯವಾದ ಅವಧಿ-ಮುಕ್ತಾಯ ವರ್ಷವನ್ನು ನಮೂದಿಸಿ</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb index 70c74b1..8505033 100644 --- a/components/strings/components_strings_ko.xtb +++ b/components/strings/components_strings_ko.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">정책</translation> <translation id="2183608646556468874">전화번호</translation> <translation id="2184405333245229118">{COUNT,plural, =1{주소 1개}other{주소 #개}}</translation> -<translation id="2187243482123994665">사용자 접속 상태</translation> <translation id="2187317261103489799">감지(기본값)</translation> <translation id="2188375229972301266">하단 다공 펀칭</translation> <translation id="2202020181578195191">올바른 만료 연도를 입력하세요.</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb index b272191..2ddcb54 100644 --- a/components/strings/components_strings_ky.xtb +++ b/components/strings/components_strings_ky.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Саясаттар</translation> <translation id="2183608646556468874">Телефон номери</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 дарек}other{# дарек}}</translation> -<translation id="2187243482123994665">Колдонуучунун сайтта же сайтта эместиги</translation> <translation id="2187317261103489799">Аныктоо (демейки)</translation> <translation id="2188375229972301266">Төмөнкү жагын бир нече жолу тешүү</translation> <translation id="2202020181578195191">Мөөнөтү аяктоочу жылды туура киргизиңиз</translation>
diff --git a/components/strings/components_strings_lo.xtb b/components/strings/components_strings_lo.xtb index c80e3f9e..4d938397 100644 --- a/components/strings/components_strings_lo.xtb +++ b/components/strings/components_strings_lo.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">ນະໂຍບາຍ</translation> <translation id="2183608646556468874">ເບີໂທລະສັບ</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 ທີ່ຢູ່}other{# ທີ່ຢູ່}}</translation> -<translation id="2187243482123994665">ການເຄື່ອນໄຫວນຳໃຊ້ຂອງຜູ້ໃຊ້</translation> <translation id="2187317261103489799">ກວດຫາ (ຄ່າເລີ່ມຕົ້ນ)</translation> <translation id="2188375229972301266">ເຈາະຮູຢູ່ລຸ່ມສຸດຫຼາຍຮູ</translation> <translation id="2202020181578195191">ປ້ອນປີໝົດອາຍຸທີ່ຖືກຕ້ອງ</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb index b66bcd7..62c1064 100644 --- a/components/strings/components_strings_lt.xtb +++ b/components/strings/components_strings_lt.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Politika</translation> <translation id="2183608646556468874">Telefono numeris</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adresas}one{# adresas}few{# adresai}many{# adreso}other{# adresų}}</translation> -<translation id="2187243482123994665">Naudotojo buvimas</translation> <translation id="2187317261103489799">Aptikti (numatytoji parinktis)</translation> <translation id="2188375229972301266">Kelios skylės apačioje</translation> <translation id="2202020181578195191">Įveskite tinkamus galiojimo laiko pabaigos metus</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb index a721739e..f94c247 100644 --- a/components/strings/components_strings_lv.xtb +++ b/components/strings/components_strings_lv.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Politikas</translation> <translation id="2183608646556468874">Tālruņa numurs</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adrese}zero{# adreses}one{# adrese}other{# adreses}}</translation> -<translation id="2187243482123994665">Lietotāja aktivitāte</translation> <translation id="2187317261103489799">Noteikt (pēc noklusējuma)</translation> <translation id="2188375229972301266">Vairāki caurumi apakšdaļā</translation> <translation id="2202020181578195191">Ievadiet derīgu gadu</translation>
diff --git a/components/strings/components_strings_mk.xtb b/components/strings/components_strings_mk.xtb index 34e36a7..cbd55bb 100644 --- a/components/strings/components_strings_mk.xtb +++ b/components/strings/components_strings_mk.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Политики</translation> <translation id="2183608646556468874">Телефонски број</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 адреса}one{# адреса}other{# адреси}}</translation> -<translation id="2187243482123994665">Присуство на корисник</translation> <translation id="2187317261103489799">Откриј (стандардно)</translation> <translation id="2188375229972301266">Повеќе дупки долу</translation> <translation id="2202020181578195191">Внесете важечка година на истекување</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb index 4208570..30b0c70 100644 --- a/components/strings/components_strings_ml.xtb +++ b/components/strings/components_strings_ml.xtb
@@ -316,7 +316,6 @@ <translation id="2181821976797666341">നയങ്ങൾ</translation> <translation id="2183608646556468874">ഫോണ് നമ്പര്</translation> <translation id="2184405333245229118">{COUNT,plural, =1{ഒരു വിലാസം}other{# വിലാസങ്ങൾ}}</translation> -<translation id="2187243482123994665">ഉപയോക്തൃ സാന്നിധ്യം</translation> <translation id="2187317261103489799">കണ്ടെത്തുക (ഡിഫോൾട്ട്)</translation> <translation id="2188375229972301266">താഴെ ഒന്നിലധികം പഞ്ച് ചെയ്യുക</translation> <translation id="2202020181578195191">കാലഹരണപ്പെടുന്ന ശരിയായ വർഷം നല്കുക</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb index ebe8473..0e73fb7 100644 --- a/components/strings/components_strings_mn.xtb +++ b/components/strings/components_strings_mn.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Тохиргоонууд</translation> <translation id="2183608646556468874">Утасны дугаар</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 хаяг}other{# хаяг}}</translation> -<translation id="2187243482123994665">Хэрэглэгч байгаа эсэх</translation> <translation id="2187317261103489799">Илрүүлэх (өгөгдмөл)</translation> <translation id="2188375229972301266">Доод буланд олон нүх цоолох</translation> <translation id="2202020181578195191">Дуусах оныг зөв оруулна уу</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb index 93b80fe..fe59c1e5 100644 --- a/components/strings/components_strings_mr.xtb +++ b/components/strings/components_strings_mr.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">धोरणे</translation> <translation id="2183608646556468874">फोन नंबर</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 पत्ता}other{# पत्ते}}</translation> -<translation id="2187243482123994665">वापरकर्त्याची ॲक्टिव्हिटी</translation> <translation id="2187317261103489799">शोधा (डीफॉल्ट)</translation> <translation id="2188375229972301266">मल्टिपल पंच बॉटम</translation> <translation id="2202020181578195191">वैध समाप्ती वर्ष एंटर करा</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb index 08fab07..ce0e9e8a 100644 --- a/components/strings/components_strings_ms.xtb +++ b/components/strings/components_strings_ms.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Dasar</translation> <translation id="2183608646556468874">Nombor Telefon</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 alamat}other{# alamat}}</translation> -<translation id="2187243482123994665">Kehadiran pengguna</translation> <translation id="2187317261103489799">Kesan (lalai)</translation> <translation id="2188375229972301266">Berbilang tebukan bawah</translation> <translation id="2202020181578195191">Masukkan tahun tamat tempoh yang sah</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb index 64dce2b..7565cb2 100644 --- a/components/strings/components_strings_my.xtb +++ b/components/strings/components_strings_my.xtb
@@ -319,7 +319,6 @@ <translation id="2181821976797666341">ပေါ်လစီများ</translation> <translation id="2183608646556468874">ဖုန်းနံပါတ်</translation> <translation id="2184405333245229118">{COUNT,plural, =1{လိပ်စာ ၁ ခု}other{လိပ်စာ # ခု}}</translation> -<translation id="2187243482123994665">အသုံးပြုသူ ရှိနေမှု</translation> <translation id="2187317261103489799">ရှာကြည့်ရန် (မူရင်း)</translation> <translation id="2188375229972301266">အောက်ခြေတွင် အများအပြားဖောက်ရန်</translation> <translation id="2202020181578195191">မှန်ကန်သည့် ကုန်ဆုံးမည့်ခုနှစ်ကို ထည့်ပါ</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb index 17f3acfe..d766a0e 100644 --- a/components/strings/components_strings_ne.xtb +++ b/components/strings/components_strings_ne.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">नीतिहरू</translation> <translation id="2183608646556468874">फोन नम्बर</translation> <translation id="2184405333245229118">{COUNT,plural, =1{१ ठेगाना}other{# ठेगानाहरू}}</translation> -<translation id="2187243482123994665">प्रयोगकर्ताको उपस्थिति</translation> <translation id="2187317261103489799">पत्ता लगाउनुहोस् (पूर्वनिर्धारित मान)</translation> <translation id="2188375229972301266">फेदमा एकभन्दा बढी प्वाल</translation> <translation id="2202020181578195191">म्याद सकिने मान्य वर्ष प्रविष्टि गर्नुहोस्</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb index f0b17e8..5e99f351 100644 --- a/components/strings/components_strings_nl.xtb +++ b/components/strings/components_strings_nl.xtb
@@ -314,7 +314,6 @@ <translation id="2181821976797666341">Beleid</translation> <translation id="2183608646556468874">Telefoonnummer</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adres}other{# adressen}}</translation> -<translation id="2187243482123994665">Aanwezigheid van gebruiker</translation> <translation id="2187317261103489799">Detecteren (standaard)</translation> <translation id="2188375229972301266">Meerdere perforaties onder</translation> <translation id="2202020181578195191">Geef een geldig vervaljaar op</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb index f489dc5..b1a5f22 100644 --- a/components/strings/components_strings_no.xtb +++ b/components/strings/components_strings_no.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Retningslinjer</translation> <translation id="2183608646556468874">Telefonnummer</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adresse}other{# adresser}}</translation> -<translation id="2187243482123994665">Brukertilstedeværelse</translation> <translation id="2187317261103489799">Oppdag (standard)</translation> <translation id="2188375229972301266">Flere hull bunn</translation> <translation id="2202020181578195191">Angi et gyldig utløpsår</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb index ad50afa7..f6c48af5 100644 --- a/components/strings/components_strings_or.xtb +++ b/components/strings/components_strings_or.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">ନୀତି</translation> <translation id="2183608646556468874">ଫୋନ୍ ନମ୍ବର</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1ଟି ଠିକଣା}other{#ଟି ଠିକଣା}}</translation> -<translation id="2187243482123994665">ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ସକ୍ରିୟତା</translation> <translation id="2187317261103489799">ଚିହ୍ନଟ କରନ୍ତୁ (ଡିଫଲ୍ଟ)</translation> <translation id="2188375229972301266">ତଳ ପଟରେ ଏକାଧିକ ପଞ୍ଚ୍</translation> <translation id="2202020181578195191">ସମୟସୀମା ଶେଷ ହେଉଥିବା ଏକ ବୈଧ ବର୍ଷ ଲେଖନ୍ତୁ</translation>
diff --git a/components/strings/components_strings_pa.xtb b/components/strings/components_strings_pa.xtb index 0a4804f..8f0c67e 100644 --- a/components/strings/components_strings_pa.xtb +++ b/components/strings/components_strings_pa.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">ਨੀਤੀਆਂ</translation> <translation id="2183608646556468874">ਫ਼ੋਨ ਨੰਬਰ</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 ਪਤਾ}one{# ਪਤੇ}other{# ਪਤੇ}}</translation> -<translation id="2187243482123994665">ਵਰਤੋਂਕਾਰ ਦੀ ਮੌਜੂਦਗੀ</translation> <translation id="2187317261103489799">ਪਤਾ ਲਗਾਓ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)</translation> <translation id="2188375229972301266">ਹੇਠਾਂ ਇੱਕ ਤੋਂ ਵੱਧ ਮੋਰੀਆਂ</translation> <translation id="2202020181578195191">ਇੱਕ ਵੈਧ ਮਿਆਦ ਸਮਾਪਤੀ ਸਾਲ ਦਾਖਲ ਕਰੋ</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb index 0f0798d..aa53607 100644 --- a/components/strings/components_strings_pl.xtb +++ b/components/strings/components_strings_pl.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">Zasady</translation> <translation id="2183608646556468874">Numer telefonu</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adres}few{# adresy}many{# adresów}other{# adresu}}</translation> -<translation id="2187243482123994665">Obecność użytkownika</translation> <translation id="2187317261103489799">Wykrywaj (domyślnie)</translation> <translation id="2188375229972301266">Wiele otworów na dole</translation> <translation id="2202020181578195191">Wpisz rok w prawidłowym formacie</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb index 781430017..a61651f 100644 --- a/components/strings/components_strings_pt-BR.xtb +++ b/components/strings/components_strings_pt-BR.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">Políticas</translation> <translation id="2183608646556468874">Número de telefone</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 endereço}one{# endereço}other{# endereços}}</translation> -<translation id="2187243482123994665">Presença do usuário</translation> <translation id="2187317261103489799">Detectar (padrão)</translation> <translation id="2188375229972301266">Perfuração múltipla na parte inferior</translation> <translation id="2202020181578195191">Informe um ano de validade válido</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb index fae1f1d..48416962 100644 --- a/components/strings/components_strings_pt-PT.xtb +++ b/components/strings/components_strings_pt-PT.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Políticas</translation> <translation id="2183608646556468874">Número de telefone</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 endereço}other{# endereços}}</translation> -<translation id="2187243482123994665">Presença do utilizador</translation> <translation id="2187317261103489799">Detetar (predefinição)</translation> <translation id="2188375229972301266">Perfuração múltipla na parte inferior</translation> <translation id="2202020181578195191">Introduza um ano de expiração válido</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb index 27bd8a9..dc68afb 100644 --- a/components/strings/components_strings_ro.xtb +++ b/components/strings/components_strings_ro.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Politici</translation> <translation id="2183608646556468874">Număr de telefon</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adresă}few{# adrese}other{# de adrese}}</translation> -<translation id="2187243482123994665">Prezența utilizatorului</translation> <translation id="2187317261103489799">Detectează (în mod prestabilit)</translation> <translation id="2188375229972301266">Perforare multiplă în partea de jos</translation> <translation id="2202020181578195191">Introdu un an de expirare valid</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb index 13f240f..cf37fac 100644 --- a/components/strings/components_strings_ru.xtb +++ b/components/strings/components_strings_ru.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">Правила</translation> <translation id="2183608646556468874">Номер телефона</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 адрес}one{# адрес}few{# адреса}many{# адресов}other{# адреса}}</translation> -<translation id="2187243482123994665">Присутствие пользователя</translation> <translation id="2187317261103489799">Определять (по умолчанию)</translation> <translation id="2188375229972301266">Несколько отверстий снизу</translation> <translation id="2202020181578195191">Недопустимый формат года.</translation>
diff --git a/components/strings/components_strings_si.xtb b/components/strings/components_strings_si.xtb index 7afc0ab..9f2b05d 100644 --- a/components/strings/components_strings_si.xtb +++ b/components/strings/components_strings_si.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">ප්රතිපත්ති</translation> <translation id="2183608646556468874">දුරකථන අංකය</translation> <translation id="2184405333245229118">{COUNT,plural, =1{ලිපින 1}one{ලිපින #}other{ලිපින #}}</translation> -<translation id="2187243482123994665">පරිශීලකයාගේ සිටීම</translation> <translation id="2187317261103489799">හදුනාගන්න (පෙරනිමි)</translation> <translation id="2188375229972301266">පහළට ඇනීම් බොහොමයක්</translation> <translation id="2202020181578195191">වලංගු කල් ඉකුත් වීමේ වසරක් ඇතුළු කරන්න</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb index 4d0093b..9eb2a6d 100644 --- a/components/strings/components_strings_sk.xtb +++ b/components/strings/components_strings_sk.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">Pravidlá</translation> <translation id="2183608646556468874">Telefónne číslo</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adresa}few{# adresy}many{# adresy}other{# adries}}</translation> -<translation id="2187243482123994665">Prítomnosť používateľa</translation> <translation id="2187317261103489799">Rozpoznávať (predvolené)</translation> <translation id="2188375229972301266">Viacero dierok dole</translation> <translation id="2202020181578195191">Zadajte platný rok vypršania platnosti</translation> @@ -894,6 +893,7 @@ <translation id="4597348597567598915">Veľkosť 8</translation> <translation id="4600854749408232102">C6/C5 (obálka)</translation> <translation id="4628948037717959914">Fotografia</translation> +<translation id="4631649115723685955">Funkcia Cashback je prepojená</translation> <translation id="464342062220857295">Funkcie vyhľadávania</translation> <translation id="4644670975240021822">V opačnom poradí lícom nadol</translation> <translation id="4646534391647090355">Prejsť do daného umiestnenia</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb index 043663e3..a3aa236 100644 --- a/components/strings/components_strings_sl.xtb +++ b/components/strings/components_strings_sl.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Pravilniki</translation> <translation id="2183608646556468874">Telefonska številka</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 naslov}one{# naslov}two{# naslova}few{# naslovi}other{# naslovov}}</translation> -<translation id="2187243482123994665">Prisotnost uporabnika</translation> <translation id="2187317261103489799">Zaznava (privzeto)</translation> <translation id="2188375229972301266">Večkratno luknjanje spodaj</translation> <translation id="2202020181578195191">Vnesite veljavno leto poteka veljavnosti</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb index 3b1d9c9..c535cc8 100644 --- a/components/strings/components_strings_sq.xtb +++ b/components/strings/components_strings_sq.xtb
@@ -316,7 +316,6 @@ <translation id="2181821976797666341">Politikat</translation> <translation id="2183608646556468874">Numri i telefonit</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adresë}other{# adresa}}</translation> -<translation id="2187243482123994665">Prania e përdoruesit</translation> <translation id="2187317261103489799">Zbulo (parazgjedhja)</translation> <translation id="2188375229972301266">Shumë shpime poshtë</translation> <translation id="2202020181578195191">Fut një vit të vlefshëm skadimi</translation>
diff --git a/components/strings/components_strings_sr-Latn.xtb b/components/strings/components_strings_sr-Latn.xtb index a73b4e0..1e8bbda 100644 --- a/components/strings/components_strings_sr-Latn.xtb +++ b/components/strings/components_strings_sr-Latn.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Smernice</translation> <translation id="2183608646556468874">Broj telefona</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adresa}one{# adresa}few{# adrese}other{# adresa}}</translation> -<translation id="2187243482123994665">Prisustvo korisnika</translation> <translation id="2187317261103489799">Otkrij (podrazumevano)</translation> <translation id="2188375229972301266">Višestruko bušenje na dnu</translation> <translation id="2202020181578195191">Unesite važeću godinu isteka</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb index 07edb0e..64bb1c7 100644 --- a/components/strings/components_strings_sr.xtb +++ b/components/strings/components_strings_sr.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Смернице</translation> <translation id="2183608646556468874">Број телефона</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 адреса}one{# адреса}few{# адресе}other{# адреса}}</translation> -<translation id="2187243482123994665">Присуство корисника</translation> <translation id="2187317261103489799">Откриј (подразумевано)</translation> <translation id="2188375229972301266">Вишеструко бушење на дну</translation> <translation id="2202020181578195191">Унесите важећу годину истека</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb index 50fc40c2..14723f0 100644 --- a/components/strings/components_strings_sv.xtb +++ b/components/strings/components_strings_sv.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Policyer</translation> <translation id="2183608646556468874">Telefonnummer</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adress}other{# adresser}}</translation> -<translation id="2187243482123994665">Användarens närvaro</translation> <translation id="2187317261103489799">Identifiera (standard)</translation> <translation id="2188375229972301266">Flera hål längst ned</translation> <translation id="2202020181578195191">Ange ett giltigt utgångsår</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb index 2a9024c1..b7dc2749 100644 --- a/components/strings/components_strings_sw.xtb +++ b/components/strings/components_strings_sw.xtb
@@ -316,7 +316,6 @@ <translation id="2181821976797666341">Sera</translation> <translation id="2183608646556468874">Nambari ya Simu</translation> <translation id="2184405333245229118">{COUNT,plural, =1{Anwani 1}other{Anwani #}}</translation> -<translation id="2187243482123994665">Upatikanaji wa mtumiaji</translation> <translation id="2187317261103489799">Gundua (chaguomsingi)</translation> <translation id="2188375229972301266">Toboa mara kadhaa chini</translation> <translation id="2202020181578195191">Andika mwaka sahihi wa kuisha kwa muda wa matumizi</translation> @@ -908,6 +907,7 @@ <translation id="4597348597567598915">Ukubwa wa 8</translation> <translation id="4600854749408232102">C6/C5 (Bahasha)</translation> <translation id="4628948037717959914">Picha</translation> +<translation id="4631649115723685955">Inajumuisha tuzo ya pesa</translation> <translation id="464342062220857295">Vipengele vya utafutaji</translation> <translation id="4644670975240021822">Mpangilio uliopinduliwa zikiangalia chini</translation> <translation id="4646534391647090355">Nipeleke kwenye sehemu hiyo sasa</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb index da41a76..5866de006 100644 --- a/components/strings/components_strings_ta.xtb +++ b/components/strings/components_strings_ta.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">கொள்கைகள்</translation> <translation id="2183608646556468874">ஃபோன் எண்</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 முகவரி}other{# முகவரிகள்}}</translation> -<translation id="2187243482123994665">பயனர் செயல்நிலை</translation> <translation id="2187317261103489799">கண்டறி (இயல்பு)</translation> <translation id="2188375229972301266">மல்டிப்பில் பஞ்ச் பாட்டம்</translation> <translation id="2202020181578195191">சரியான காலாவதி ஆண்டை உள்ளிடவும்</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb index cbe0524..7a2ea5c1 100644 --- a/components/strings/components_strings_te.xtb +++ b/components/strings/components_strings_te.xtb
@@ -319,7 +319,6 @@ <translation id="2181821976797666341">విధానాలు</translation> <translation id="2183608646556468874">ఫోన్ నంబర్</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 చిరునామా}other{# చిరునామాలు}}</translation> -<translation id="2187243482123994665">యూజర్ ఉనికి</translation> <translation id="2187317261103489799">గుర్తించు (డిఫాల్ట్)</translation> <translation id="2188375229972301266">దిగువ భాగంలో అనేక రంధ్రాలు</translation> <translation id="2202020181578195191">చెల్లుబాటు అయ్యే గడువు ముగింపు సంవత్సరాన్ని నమోదు చేయండి</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb index d749ced..c2d34bfe 100644 --- a/components/strings/components_strings_th.xtb +++ b/components/strings/components_strings_th.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">นโยบาย</translation> <translation id="2183608646556468874">หมายเลขโทรศัพท์</translation> <translation id="2184405333245229118">{COUNT,plural, =1{ที่อยู่ 1 รายการ}other{ที่อยู่ # รายการ}}</translation> -<translation id="2187243482123994665">การใช้งานอยู่ของผู้ใช้</translation> <translation id="2187317261103489799">ตรวจหา (ค่าเริ่มต้น)</translation> <translation id="2188375229972301266">เจาะรูด้านล่างหลายรู</translation> <translation id="2202020181578195191">ป้อนปีที่หมดอายุที่ถูกต้อง</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb index 13e3e025..5da7930 100644 --- a/components/strings/components_strings_tr.xtb +++ b/components/strings/components_strings_tr.xtb
@@ -314,7 +314,6 @@ <translation id="2181821976797666341">Politikalar</translation> <translation id="2183608646556468874">Telefon Numarası</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 adres}other{# adres}}</translation> -<translation id="2187243482123994665">Kullanıcı etkinliği</translation> <translation id="2187317261103489799">Algıla (varsayılan)</translation> <translation id="2188375229972301266">Altta çoklu zımba</translation> <translation id="2202020181578195191">Geçerli bir son kullanma yılı girin</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb index 30d0a10..a86b543 100644 --- a/components/strings/components_strings_uk.xtb +++ b/components/strings/components_strings_uk.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Правила</translation> <translation id="2183608646556468874">Номер телефону</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 адреса}one{# адреса}few{# адреси}many{# адрес}other{# адреси}}</translation> -<translation id="2187243482123994665">Інформація про присутність</translation> <translation id="2187317261103489799">Визначати (за умовчанням)</translation> <translation id="2188375229972301266">Пробити кілька отворів унизу</translation> <translation id="2202020181578195191">Введіть дійсний рік закінчення терміну дії</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb index 130b0f6..72ab1c1 100644 --- a/components/strings/components_strings_ur.xtb +++ b/components/strings/components_strings_ur.xtb
@@ -318,7 +318,6 @@ <translation id="2181821976797666341">پالیسیاں</translation> <translation id="2183608646556468874">فون نمبر</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 پتہ}other{# پتے}}</translation> -<translation id="2187243482123994665">صارف کی موجودگی</translation> <translation id="2187317261103489799">پتا لگائیں (ڈیفالٹ)</translation> <translation id="2188375229972301266">نیچے متعدد سوراخ</translation> <translation id="2202020181578195191">ایک درست سالِ اختتام درج کریں</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb index e694b7b..0cdb0e1d 100644 --- a/components/strings/components_strings_uz.xtb +++ b/components/strings/components_strings_uz.xtb
@@ -316,7 +316,6 @@ <translation id="2181821976797666341">Qoidalar</translation> <translation id="2183608646556468874">Telefon raqami</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 ta manzil}other{# ta manzil}}</translation> -<translation id="2187243482123994665">Foydalanuvchining faolligi</translation> <translation id="2187317261103489799">Aniqlansin (standart parametr)</translation> <translation id="2188375229972301266">Quyidan bir nechta teshik ochish</translation> <translation id="2202020181578195191">Muddati tugaydigan yilni xatosiz kiriting</translation> @@ -904,6 +903,7 @@ <translation id="4597348597567598915">Hajmi: 8</translation> <translation id="4600854749408232102">C6/C5 (Envelope)</translation> <translation id="4628948037717959914">Rasm</translation> +<translation id="4631649115723685955">Keshbek ulandi</translation> <translation id="464342062220857295">Funksiyalar qidiruvi</translation> <translation id="4644670975240021822">Teskari tartibda orqa tomonida</translation> <translation id="4646534391647090355">Hoziroq ochish</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb index 35fb835..b50ff6c0 100644 --- a/components/strings/components_strings_vi.xtb +++ b/components/strings/components_strings_vi.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Chính sách</translation> <translation id="2183608646556468874">Số điện thoại</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 địa chỉ}other{# địa chỉ}}</translation> -<translation id="2187243482123994665">Hoạt động của người dùng</translation> <translation id="2187317261103489799">Phát hiện (mặc định)</translation> <translation id="2188375229972301266">Đục nhiều lỗ dưới cùng</translation> <translation id="2202020181578195191">Nhập năm hết hạn hợp lệ</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb index e4dda65..84848534 100644 --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">政策</translation> <translation id="2183608646556468874">电话号码</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 个地址}other{# 个地址}}</translation> -<translation id="2187243482123994665">用户活跃状态</translation> <translation id="2187317261103489799">检测(默认)</translation> <translation id="2188375229972301266">多孔(底部)</translation> <translation id="2202020181578195191">请输入有效的失效年份</translation> @@ -1881,6 +1880,7 @@ <translation id="8685155993131031756">Prc-16K</translation> <translation id="8688672835843460752">可用</translation> <translation id="868922510921656628">每组页数</translation> +<translation id="8697373104056314601">如果您想获得 Chrome 的最高级别安全保护,请<ph name="BEGIN_ENHANCED_PROTECTION_LINK" />开启增强型保护<ph name="END_ENHANCED_PROTECTION_LINK" />。</translation> <translation id="869891660844655955">截止日期</translation> <translation id="8699041776323235191">HID 设备</translation> <translation id="8703575177326907206">您与 <ph name="DOMAIN" /> 的连接未加密。</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb index 2a3d0333..8964597 100644 --- a/components/strings/components_strings_zh-HK.xtb +++ b/components/strings/components_strings_zh-HK.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">政策</translation> <translation id="2183608646556468874">電話號碼</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 個地址}other{# 個地址}}</translation> -<translation id="2187243482123994665">使用者狀態</translation> <translation id="2187317261103489799">偵測 (預設)</translation> <translation id="2188375229972301266">多孔 (底部)</translation> <translation id="2202020181578195191">請輸入有效的到期年份</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb index f0ec87b..8216703 100644 --- a/components/strings/components_strings_zh-TW.xtb +++ b/components/strings/components_strings_zh-TW.xtb
@@ -313,7 +313,6 @@ <translation id="2181821976797666341">政策</translation> <translation id="2183608646556468874">電話號碼</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 個地址}other{# 個地址}}</translation> -<translation id="2187243482123994665">使用者狀態</translation> <translation id="2187317261103489799">偵測 (預設)</translation> <translation id="2188375229972301266">多孔 (底部)</translation> <translation id="2202020181578195191">請輸入有效的到期年份</translation>
diff --git a/components/strings/components_strings_zu.xtb b/components/strings/components_strings_zu.xtb index 763f93e..bc9de32 100644 --- a/components/strings/components_strings_zu.xtb +++ b/components/strings/components_strings_zu.xtb
@@ -317,7 +317,6 @@ <translation id="2181821976797666341">Izinqubomgomo</translation> <translation id="2183608646556468874">Inombolo yefoni</translation> <translation id="2184405333245229118">{COUNT,plural, =1{1 ikheli}one{# amakheli}other{# amakheli}}</translation> -<translation id="2187243482123994665">Ukuba khona komsebenzisi</translation> <translation id="2187317261103489799">Thola (okuzenzakalelayo)</translation> <translation id="2188375229972301266">Ukushaya kaningi phansi</translation> <translation id="2202020181578195191">Faka unyaka ovumelekile wokuphelelwa isikhathi</translation>
diff --git a/components/sync/BUILD.gn b/components/sync/BUILD.gn index ea23647..f3b279f 100644 --- a/components/sync/BUILD.gn +++ b/components/sync/BUILD.gn
@@ -413,7 +413,6 @@ "base/unique_position_unittest.cc", "base/user_demographics_unittest.cc", "base/weak_handle_unittest.cc", - "driver/about_sync_util_unittest.cc", "driver/backend_migrator_unittest.cc", "driver/data_type_manager_impl_unittest.cc", "driver/glue/sync_engine_impl_unittest.cc", @@ -424,6 +423,7 @@ "driver/profile_sync_service_unittest.cc", "driver/startup_controller_unittest.cc", "driver/sync_auth_manager_unittest.cc", + "driver/sync_internals_util_unittest.cc", "driver/sync_service_crypto_unittest.cc", "driver/sync_service_utils_unittest.cc", "driver/sync_session_durations_metrics_recorder_unittest.cc",
diff --git a/components/sync/base/user_demographics.cc b/components/sync/base/user_demographics.cc index 23a8a42d..5d0bea1 100644 --- a/components/sync/base/user_demographics.cc +++ b/components/sync/base/user_demographics.cc
@@ -64,7 +64,8 @@ // Determines whether the synced user has provided a birth year to Google which // is eligible, once aggregated and anonymized, to measure usage of Chrome // features by age groups. See doc of metrics::DemographicMetricsProvider in -// components/metrics/demographic_metrics_provider.h for more details. +// components/metrics/demographics/demographic_metrics_provider.h for more +// details. bool HasEligibleBirthYear(base::Time now, int user_birth_year, int offset) { // Compute user age. base::Time::Exploded exploded_now_time; @@ -100,7 +101,8 @@ // Gets the synced user's birth year from synced prefs, see doc of // metrics::DemographicMetricsProvider in -// components/metrics/demographic_metrics_provider.h for more details. +// components/metrics/demographics/demographic_metrics_provider.h for more +// details. base::Optional<int> GetUserBirthYear( const base::DictionaryValue* demographics) { const base::Value* value = @@ -118,7 +120,8 @@ // Gets the synced user's gender from synced prefs, see doc of // metrics::DemographicMetricsProvider in -// components/metrics/demographic_metrics_provider.h for more details. +// components/metrics/demographics/demographic_metrics_provider.h for more +// details. base::Optional<metrics::UserDemographicsProto_Gender> GetUserGender( const base::DictionaryValue* demographics) { const base::Value* value =
diff --git a/components/sync/driver/BUILD.gn b/components/sync/driver/BUILD.gn index 8476be77..918ea73 100644 --- a/components/sync/driver/BUILD.gn +++ b/components/sync/driver/BUILD.gn
@@ -7,8 +7,6 @@ static_library("driver") { sources = [ - "about_sync_util.cc", - "about_sync_util.h", "backend_migrator.cc", "backend_migrator.h", "configure_context.h", @@ -46,6 +44,8 @@ "sync_client.h", "sync_driver_switches.cc", "sync_driver_switches.h", + "sync_internals_util.cc", + "sync_internals_util.h", "sync_service.cc", "sync_service.h", "sync_service_crypto.cc",
diff --git a/components/sync/driver/data_type_manager_impl.cc b/components/sync/driver/data_type_manager_impl.cc index 509b6a4..d708fb9 100644 --- a/components/sync/driver/data_type_manager_impl.cc +++ b/components/sync/driver/data_type_manager_impl.cc
@@ -96,7 +96,7 @@ data_type_status_table_.UpdateFailedDataTypes(existing_errors); } -DataTypeManagerImpl::~DataTypeManagerImpl() {} +DataTypeManagerImpl::~DataTypeManagerImpl() = default; void DataTypeManagerImpl::Configure(ModelTypeSet desired_types, const ConfigureContext& context) { @@ -296,7 +296,6 @@ reason == CONFIGURE_REASON_NEW_CLIENT || reason == CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE) { for (ModelType type : last_requested_types_) { - // TODO(wychen): enum uma should be strongly typed. crbug.com/661401 UMA_HISTOGRAM_ENUMERATION("Sync.ConfigureDataTypes", ModelTypeHistogramValue(type)); } @@ -349,14 +348,14 @@ // have failed loading and should be excluded from configuration. I need to // adjust |download_types_queue_| for such types. ActivateDataTypes(); - StartNextDownload(ModelTypeSet()); + StartNextDownload(/*high_priority_types_before=*/ModelTypeSet()); } ModelTypeSet DataTypeManagerImpl::GetPriorityTypes() const { return PriorityUserTypes(); } -TypeSetPriorityList DataTypeManagerImpl::PrioritizeTypes( +base::queue<ModelTypeSet> DataTypeManagerImpl::PrioritizeTypes( const ModelTypeSet& types) { // Control types are usually downloaded before all other types during // initialization of sync engine even before data type manager gets @@ -373,7 +372,7 @@ ModelTypeSet regular_types = Difference(types, Union(control_types, priority_types)); - TypeSetPriorityList result; + base::queue<ModelTypeSet> result; if (!control_types.Empty()) result.push(control_types); if (!priority_types.Empty()) @@ -468,15 +467,15 @@ ConfigureImpl(last_requested_types_, last_requested_context_); } -void DataTypeManagerImpl::DownloadReady( - ModelTypeSet types_to_download, +void DataTypeManagerImpl::DownloadCompleted( + ModelTypeSet downloaded_types, ModelTypeSet first_sync_types, ModelTypeSet failed_configuration_types) { DCHECK_EQ(CONFIGURING, state_); // Persistence errors are reset after each backend configuration attempt // during which they would have been purged. - data_type_status_table_.ResetPersistenceErrorsFrom(types_to_download); + data_type_status_table_.ResetPersistenceErrorsFrom(downloaded_types); if (!failed_configuration_types.Empty()) { DataTypeStatusTable::TypeErrorMap errors; @@ -490,7 +489,7 @@ } if (needs_reconfigure_) { - download_types_queue_ = TypeSetPriorityList(); + download_types_queue_ = base::queue<ModelTypeSet>(); ProcessReconfigure(); return; } @@ -518,7 +517,7 @@ return; } - StartNextDownload(types_to_download); + StartNextDownload(/*high_priority_types_before=*/downloaded_types); } void DataTypeManagerImpl::StartNextDownload( @@ -652,7 +651,7 @@ params->disabled_types = disabled_types; params->to_download = types_to_download; params->to_purge = types_to_purge; - params->ready_task = base::BindOnce(&DataTypeManagerImpl::DownloadReady, + params->ready_task = base::BindOnce(&DataTypeManagerImpl::DownloadCompleted, weak_ptr_factory_.GetWeakPtr(), download_types_queue_.front()); params->is_sync_feature_enabled =
diff --git a/components/sync/driver/data_type_manager_impl.h b/components/sync/driver/data_type_manager_impl.h index d010c6ef..65e2357 100644 --- a/components/sync/driver/data_type_manager_impl.h +++ b/components/sync/driver/data_type_manager_impl.h
@@ -29,10 +29,6 @@ class DataTypeManagerObserver; struct DataTypeConfigurationStats; -// List of data types grouped by priority and ordered from high priority to -// low priority. -using TypeSetPriorityList = base::queue<ModelTypeSet>; - class DataTypeManagerImpl : public DataTypeManager, public ModelAssociationManagerDelegate { public: @@ -131,7 +127,7 @@ // Divide |types| into sets by their priorities and return the sets from // high priority to low priority. - TypeSetPriorityList PrioritizeTypes(const ModelTypeSet& types); + base::queue<ModelTypeSet> PrioritizeTypes(const ModelTypeSet& types); // Update precondition state of types in data_type_status_table_ to match // value of DataTypeController::GetPreconditionState(). @@ -149,9 +145,10 @@ void ForceReconfiguration(); void Restart(); - void DownloadReady(ModelTypeSet types_to_download, - ModelTypeSet first_sync_types, - ModelTypeSet failed_configuration_types); + + void DownloadCompleted(ModelTypeSet downloaded_types, + ModelTypeSet first_sync_types, + ModelTypeSet failed_configuration_types); void NotifyStart(); void NotifyDone(const ConfigureResult& result); @@ -230,7 +227,7 @@ DataTypeStatusTable data_type_status_table_; // Types waiting to be downloaded. - TypeSetPriorityList download_types_queue_; + base::queue<ModelTypeSet> download_types_queue_; // Types waiting for association and related time tracking info. struct AssociationTypesInfo {
diff --git a/components/sync/driver/model_association_manager.cc b/components/sync/driver/model_association_manager.cc index 09638f0..4cba078b 100644 --- a/components/sync/driver/model_association_manager.cc +++ b/components/sync/driver/model_association_manager.cc
@@ -48,11 +48,6 @@ ModelType::NUM_ENTRIES - FIRST_REAL_MODEL_TYPE, "When adding a new type, update kStartOrder."); -// The amount of time we wait for association to finish. If some types haven't -// finished association by the time, DataTypeManager is notified of the -// unfinished types. -const int64_t kAssociationTimeOutInSeconds = 600; - } // namespace ModelAssociationManager::ModelAssociationManager( @@ -205,6 +200,8 @@ void ModelAssociationManager::StartAssociationAsync( const ModelTypeSet& types_to_associate) { DCHECK_EQ(INITIALIZED, state_); + DCHECK(notified_about_ready_for_configure_); + DVLOG(1) << "Starting association for " << ModelTypeSetToString(types_to_associate); state_ = ASSOCIATING; @@ -215,6 +212,8 @@ associating_types_.RetainAll(desired_types_); associating_types_.RemoveAll(associated_types_); + DCHECK(loaded_types_.HasAll(associating_types_)); + // Assume success. configure_status_ = DataTypeManager::OK; @@ -224,16 +223,13 @@ return; } - timer_.Start(FROM_HERE, - base::TimeDelta::FromSeconds(kAssociationTimeOutInSeconds), - base::BindOnce(&ModelAssociationManager::ModelAssociationDone, - weak_ptr_factory_.GetWeakPtr(), INITIALIZED)); - // Associate types that are already loaded in specified order. for (ModelType type : kStartOrder) { if (associating_types_.Has(type) && loaded_types_.Has(type)) MarkDataTypeAssociationDone(type); } + DCHECK(associating_types_.Empty()); + DCHECK_NE(ASSOCIATING, state_); } void ModelAssociationManager::Stop(ShutdownReason shutdown_reason) { @@ -272,6 +268,8 @@ DVLOG(1) << "ModelAssociationManager: ModelLoadCallback for " << ModelTypeToString(type); + DCHECK(associating_types_.Empty()); + if (error.IsSet()) { DVLOG(1) << "ModelAssociationManager: Type encountered an error."; desired_types_.Remove(type); @@ -289,23 +287,6 @@ DCHECK(!loaded_types_.Has(type)); loaded_types_.Put(type); NotifyDelegateIfReadyForConfigure(); - if (associating_types_.Has(type)) { - const DataTypeController* dtc = controllers_->find(type)->second.get(); - // If initial sync was done for this datatype then - // NotifyDelegateIfReadyForConfigure possibly already triggered model - // association and StartAssociating was already called for this type. To - // ensure StartAssociating is called only once only make a call if state is - // MODEL_LOADED (i.e. not RUNNING yet). - // TODO(pavely): Add test for this scenario in DataTypeManagerImpl - // unittests. - // TODO(crbug.com/647505): The above sounds quite broken (will - // MarkDataTypeAssociationDone never get called in that case?!), and also - // outdated (StartAssociating doesn't exist anymore). Can we just move the - // NotifyDelegateIfReadyForConfigure call below? - if (dtc->state() == DataTypeController::MODEL_LOADED) { - MarkDataTypeAssociationDone(type); - } - } } void ModelAssociationManager::MarkDataTypeAssociationDone(ModelType type) { @@ -332,8 +313,6 @@ DVLOG(1) << "Model association complete for " << ModelTypeSetToString(requested_types_); - timer_.Stop(); - // Treat any unfinished types as having errors. desired_types_.RemoveAll(associating_types_); for (const auto& type_and_dtc : *controllers_) { @@ -360,10 +339,6 @@ delegate_->OnModelAssociationDone(result); } -base::OneShotTimer* ModelAssociationManager::GetTimerForTesting() { - return &timer_; -} - void ModelAssociationManager::NotifyDelegateIfReadyForConfigure() { if (notified_about_ready_for_configure_) return;
diff --git a/components/sync/driver/model_association_manager.h b/components/sync/driver/model_association_manager.h index 822ea29..c5116214 100644 --- a/components/sync/driver/model_association_manager.h +++ b/components/sync/driver/model_association_manager.h
@@ -5,13 +5,8 @@ #ifndef COMPONENTS_SYNC_DRIVER_MODEL_ASSOCIATION_MANAGER_H__ #define COMPONENTS_SYNC_DRIVER_MODEL_ASSOCIATION_MANAGER_H__ -#include <map> - #include "base/macros.h" #include "base/memory/weak_ptr.h" -#include "base/timer/timer.h" - -#include "components/sync/base/weak_handle.h" #include "components/sync/driver/configure_context.h" #include "components/sync/driver/data_type_controller.h" #include "components/sync/driver/data_type_manager.h" @@ -88,7 +83,8 @@ // Can be called at any time. Synchronously stops all datatypes. void Stop(ShutdownReason shutdown_reason); - // Should only be called after Initialize to start the actual association. + // Must only be called after all data type models have been loaded, i.e. after + // OnAllDataTypesReadyForConfigure() has been called on the delegate. // |types_to_associate| should be subset of |desired_types| in Initialize(). // When this is completed, |OnModelAssociationDone| will be invoked. void StartAssociationAsync(const ModelTypeSet& types_to_associate); @@ -99,8 +95,6 @@ ShutdownReason shutdown_reason, SyncError error); - base::OneShotTimer* GetTimerForTesting(); - State state() const { return state_; } private: @@ -157,10 +151,6 @@ // reconfiguration if not disabled. ModelTypeSet associated_types_; - // Timer to track and limit how long a data type still takes to load after - // StartAssociationAsync is called. - base::OneShotTimer timer_; - DataTypeManager::ConfigureStatus configure_status_; bool notified_about_ready_for_configure_;
diff --git a/components/sync/driver/model_association_manager_unittest.cc b/components/sync/driver/model_association_manager_unittest.cc index fb0f0ef..47ac4643 100644 --- a/components/sync/driver/model_association_manager_unittest.cc +++ b/components/sync/driver/model_association_manager_unittest.cc
@@ -126,29 +126,6 @@ EXPECT_EQ(0, GetController(BOOKMARKS)->model()->clear_metadata_call_count()); } -TEST_F(SyncModelAssociationManagerTest, SlowTypeAsFailedType) { - controllers_[BOOKMARKS] = std::make_unique<FakeDataTypeController>(BOOKMARKS); - controllers_[APPS] = std::make_unique<FakeDataTypeController>(APPS); - GetController(BOOKMARKS)->model()->EnableManualModelStart(); - ModelAssociationManager model_association_manager(&controllers_, &delegate_); - ModelTypeSet types; - types.Put(BOOKMARKS); - types.Put(APPS); - - EXPECT_CALL(delegate_, OnModelAssociationDone( - MatchesResult(DataTypeManager::OK, types))); - - model_association_manager.Initialize(/*desired_types=*/types, - /*preferred_types=*/types, - BuildConfigureContext()); - model_association_manager.StartAssociationAsync(types); - - EXPECT_CALL(delegate_, OnSingleDataTypeWillStop(BOOKMARKS, _)); - model_association_manager.GetTimerForTesting()->FireNow(); - - EXPECT_EQ(DataTypeController::STOPPING, GetController(BOOKMARKS)->state()); -} - // Test that model that failed to load between initialization and association // is reported and stopped properly. TEST_F(SyncModelAssociationManagerTest, ModelLoadFailBeforeAssociationStart) {
diff --git a/components/sync/driver/about_sync_util.cc b/components/sync/driver/sync_internals_util.cc similarity index 99% rename from components/sync/driver/about_sync_util.cc rename to components/sync/driver/sync_internals_util.cc index 0188967..dfc250a1 100644 --- a/components/sync/driver/about_sync_util.cc +++ b/components/sync/driver/sync_internals_util.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/sync/driver/about_sync_util.h" +#include "components/sync/driver/sync_internals_util.h" #include <string> #include <utility>
diff --git a/components/sync/driver/about_sync_util.h b/components/sync/driver/sync_internals_util.h similarity index 94% rename from components/sync/driver/about_sync_util.h rename to components/sync/driver/sync_internals_util.h index fb38ea6..e9e8ad580 100644 --- a/components/sync/driver/about_sync_util.h +++ b/components/sync/driver/sync_internals_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 COMPONENTS_SYNC_DRIVER_ABOUT_SYNC_UTIL_H_ -#define COMPONENTS_SYNC_DRIVER_ABOUT_SYNC_UTIL_H_ +#ifndef COMPONENTS_SYNC_DRIVER_SYNC_INTERNALS_UTIL_H_ +#define COMPONENTS_SYNC_DRIVER_SYNC_INTERNALS_UTIL_H_ #include <memory> @@ -83,4 +83,4 @@ } // namespace syncer -#endif // COMPONENTS_SYNC_DRIVER_ABOUT_SYNC_UTIL_H_ +#endif // COMPONENTS_SYNC_DRIVER_SYNC_INTERNALS_UTIL_H_
diff --git a/components/sync/driver/about_sync_util_unittest.cc b/components/sync/driver/sync_internals_util_unittest.cc similarity index 93% rename from components/sync/driver/about_sync_util_unittest.cc rename to components/sync/driver/sync_internals_util_unittest.cc index db90aff8..59e7b2b 100644 --- a/components/sync/driver/about_sync_util_unittest.cc +++ b/components/sync/driver/sync_internals_util_unittest.cc
@@ -5,7 +5,7 @@ #include <memory> #include "base/values.h" -#include "components/sync/driver/about_sync_util.h" +#include "components/sync/driver/sync_internals_util.h" #include "components/sync/driver/test_sync_service.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/sync/driver/sync_service.h b/components/sync/driver/sync_service.h index d9e8253..026b3cd 100644 --- a/components/sync/driver/sync_service.h +++ b/components/sync/driver/sync_service.h
@@ -373,10 +373,10 @@ // Gets the synced user’s noised birth year and gender, see doc of // metrics::DemographicMetricsProvider in - // components/metrics/demographic_metrics_provider.h for more details. Returns - // an error status with an empty value when the user's birth year or gender - // cannot be provided. You need to provide an accurate |now| time that - // represents the current time. + // components/metrics/demographics/demographic_metrics_provider.h for more + // details. Returns an error status with an empty value when the user's birth + // year or gender cannot be provided. You need to provide an accurate |now| + // time that represents the current time. virtual UserDemographicsResult GetUserNoisedBirthYearAndGender( base::Time now) = 0; @@ -419,7 +419,7 @@ // the type's status, and <status> is one of "error", "warning" or "ok" // depending on the type's current status. // - // This function is used by about_sync_util.cc to help populate the + // This function is used by sync_internals_util.cc to help populate the // chrome://sync-internals page. It returns a ListValue rather than a // DictionaryValue in part to make it easier to iterate over its elements when // constructing that page.
diff --git a/components/ukm/ukm_service.h b/components/ukm/ukm_service.h index 37d6ab1..6e0d4eaf 100644 --- a/components/ukm/ukm_service.h +++ b/components/ukm/ukm_service.h
@@ -114,7 +114,7 @@ // Enables adding the synced user's noised birth year and gender to the UKM // report. For more details, see doc of metrics::DemographicMetricsProvider in - // components/metrics/demographic_metrics_provider.h. + // components/metrics/demographics/demographic_metrics_provider.h. static const base::Feature kReportUserNoisedUserBirthYearAndGender; // Makes sure that the serialized ukm report can be parsed. @@ -158,7 +158,7 @@ // Adds the user's birth year and gender to the UKM |report| only if (1) the // provider is registered and (2) the feature is enabled. For more details, // see doc of metrics::DemographicMetricsProvider in - // components/metrics/demographic_metrics_provider.h. + // components/metrics/demographics/demographic_metrics_provider.h. void AddSyncedUserNoiseBirthYearAndGenderToReport(Report* report); void SetInitializationCompleteCallbackForTesting(base::OnceClosure callback);
diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn index f17e070..022dd6ef 100644 --- a/components/viz/service/BUILD.gn +++ b/components/viz/service/BUILD.gn
@@ -469,6 +469,8 @@ sources = [ "display/bsp_tree_unittest.cc", "display/copy_output_scaling_pixeltest.cc", + "display/delegated_ink_point_pixel_test_helper.cc", + "display/delegated_ink_point_pixel_test_helper.h", "display/display_damage_tracker_unittest.cc", "display/display_resource_provider_unittest.cc", "display/display_scheduler_unittest.cc",
diff --git a/components/viz/service/display/delegated_ink_point_pixel_test_helper.cc b/components/viz/service/display/delegated_ink_point_pixel_test_helper.cc new file mode 100644 index 0000000..2d39446 --- /dev/null +++ b/components/viz/service/display/delegated_ink_point_pixel_test_helper.cc
@@ -0,0 +1,89 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <memory> + +#include "components/viz/service/display/delegated_ink_point_pixel_test_helper.h" + +#include "components/viz/service/display/direct_renderer.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "ui/gfx/geometry/rect_conversions.h" + +namespace viz { + +DelegatedInkPointPixelTestHelper::DelegatedInkPointPixelTestHelper() = default; +DelegatedInkPointPixelTestHelper::~DelegatedInkPointPixelTestHelper() = default; + +DelegatedInkPointPixelTestHelper::DelegatedInkPointPixelTestHelper( + DirectRenderer* renderer) + : renderer_(renderer) { + renderer_->CreateDelegatedInkPointRenderer(); +} + +void DelegatedInkPointPixelTestHelper::SetRendererAndCreateInkRenderer( + DirectRenderer* renderer) { + renderer_ = renderer; + renderer_->CreateDelegatedInkPointRenderer(); +} + +DelegatedInkPointRendererBase* +DelegatedInkPointPixelTestHelper::GetInkRenderer() { + return renderer_->GetDelegatedInkPointRenderer(); +} + +void DelegatedInkPointPixelTestHelper::CreateAndSendMetadata( + const gfx::PointF& point, + float diameter, + SkColor color, + const gfx::RectF& presentation_area) { + DCHECK(renderer_); + metadata_ = DelegatedInkMetadata(point, diameter, color, + base::TimeTicks::Now(), presentation_area); + GetInkRenderer()->SetDelegatedInkMetadata( + std::make_unique<DelegatedInkMetadata>(metadata_)); +} + +void DelegatedInkPointPixelTestHelper::CreateAndSendMetadataFromLastPoint() { + DCHECK(renderer_); + metadata_ = DelegatedInkMetadata( + ink_points_.back().point(), metadata_.diameter(), metadata_.color(), + ink_points_.back().timestamp(), metadata_.presentation_area()); + GetInkRenderer()->SetDelegatedInkMetadata( + std::make_unique<DelegatedInkMetadata>(metadata_)); +} + +void DelegatedInkPointPixelTestHelper::CreateAndSendPoint( + const gfx::PointF& point, + base::TimeTicks timestamp) { + DCHECK(renderer_); + ink_points_.emplace_back(point, timestamp); + GetInkRenderer()->StoreDelegatedInkPoint(ink_points_.back()); +} + +void DelegatedInkPointPixelTestHelper::CreateAndSendPointFromMetadata() { + CreateAndSendPoint(metadata().point(), metadata().timestamp()); +} + +void DelegatedInkPointPixelTestHelper::CreateAndSendPointFromLastPoint( + const gfx::PointF& point) { + EXPECT_GT(static_cast<int>(ink_points_.size()), 0); + CreateAndSendPoint(point, ink_points_.back().timestamp() + + base::TimeDelta::FromMicroseconds(10)); +} + +gfx::Rect DelegatedInkPointPixelTestHelper::GetDelegatedInkDamageRect() { + EXPECT_GT(static_cast<int>(ink_points_.size()), 0); + gfx::RectF ink_damage_rect_f = + gfx::RectF(ink_points_[0].point(), gfx::SizeF(1, 1)); + for (uint64_t i = 1; i < ink_points_.size(); ++i) { + ink_damage_rect_f.Union( + gfx::RectF(ink_points_[i].point(), gfx::SizeF(1, 1))); + } + ink_damage_rect_f.Inset(-metadata().diameter() / 2.f, + -metadata().diameter() / 2.f); + + return gfx::ToEnclosingRect(ink_damage_rect_f); +} + +} // namespace viz
diff --git a/components/viz/service/display/delegated_ink_point_pixel_test_helper.h b/components/viz/service/display/delegated_ink_point_pixel_test_helper.h new file mode 100644 index 0000000..c9003de --- /dev/null +++ b/components/viz/service/display/delegated_ink_point_pixel_test_helper.h
@@ -0,0 +1,60 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_VIZ_SERVICE_DISPLAY_DELEGATED_INK_POINT_PIXEL_TEST_HELPER_H_ +#define COMPONENTS_VIZ_SERVICE_DISPLAY_DELEGATED_INK_POINT_PIXEL_TEST_HELPER_H_ + +#include <vector> + +#include "components/viz/common/delegated_ink_metadata.h" + +namespace viz { + +class DelegatedInkPoint; +class DelegatedInkPointRendererBase; +class DirectRenderer; + +// Helper class for running pixel tests to flex the delegated ink point +// renderers. |renderer_| must be supplied, either when constructed or later +// after cc::PixelTest::SetUp() has run, which creates the renderer. Then it +// can be used to create and give ink metadata and points to |renderer_|'s +// delegated ink point renderer. The metadata and points are stored so that the +// information can be used for future points and metadata (i.e. when a point +// needs to match the metadata for the first point of a trail) or when +// determining the damage rect to apply to a render pass. +class DelegatedInkPointPixelTestHelper { + public: + DelegatedInkPointPixelTestHelper(); + ~DelegatedInkPointPixelTestHelper(); + + explicit DelegatedInkPointPixelTestHelper(DirectRenderer* renderer); + void SetRendererAndCreateInkRenderer(DirectRenderer* renderer); + DelegatedInkPointRendererBase* GetInkRenderer(); + + void CreateAndSendMetadata(const gfx::PointF& point, + float diameter, + SkColor color, + const gfx::RectF& presentation_area); + + void CreateAndSendMetadataFromLastPoint(); + + void CreateAndSendPoint(const gfx::PointF& point, base::TimeTicks timestamp); + void CreateAndSendPointFromMetadata(); + // Used when sending multiple points to be drawn as a single trail, so it uses + // the most recently provided point's timestamp to determine the new one. + void CreateAndSendPointFromLastPoint(const gfx::PointF& point); + + gfx::Rect GetDelegatedInkDamageRect(); + + const DelegatedInkMetadata& metadata() { return metadata_; } + + private: + DirectRenderer* renderer_ = nullptr; + std::vector<DelegatedInkPoint> ink_points_; + DelegatedInkMetadata metadata_; +}; + +} // namespace viz + +#endif // COMPONENTS_VIZ_SERVICE_DISPLAY_DELEGATED_INK_POINT_PIXEL_TEST_HELPER_H_
diff --git a/components/viz/service/display/delegated_ink_point_renderer_base.cc b/components/viz/service/display/delegated_ink_point_renderer_base.cc index 2b0d010..51e4c50 100644 --- a/components/viz/service/display/delegated_ink_point_renderer_base.cc +++ b/components/viz/service/display/delegated_ink_point_renderer_base.cc
@@ -27,23 +27,16 @@ receiver_.Bind(std::move(receiver)); } -void DelegatedInkPointRendererBase::DrawDelegatedInkTrail() { - if (!metadata_) - return; - - DrawDelegatedInkTrailInternal(); - - // Always reset |metadata_| regardless of the outcome of - // DrawDelegatedInkPathInternal() so that the trail is never incorrectly - // drawn if the aggregated frame did not contain delegated ink metadata. - metadata_.reset(); -} - void DelegatedInkPointRendererBase::FilterPoints() { if (points_.size() == 0) return; + // |first_valid_point| is the first point in |points_| that will be drawn. + // It will match |metadata_|'s timestamp and point because the app rendered + // ink stroke and the delegated ink trail must overlap on the final point of + // the ink stroke in order to connect seamlessly. auto first_valid_point = points_.find(metadata_->timestamp()); + // It is possible that this results in |points_| being empty. This occurs when // the points being forwarded from the browser process lose the race against // the ink metadata arriving in Display, including the point that matches the @@ -52,6 +45,14 @@ // erased. points_.erase(points_.begin(), first_valid_point); + // TODO(1052145): Add additional filtering to prevent points in |points_| from + // having a timestamp that is far ahead of |metadata_|'s timestamp. This could + // occur if the renderer stalls before sending a metadata while the browser + // continues to pump points through to viz. Then when the renderer starts back + // up again, the metadata it sends may be significantly older than the points + // stored here, resulting in a long possibly incorrect trail if the max + // number of points to store was reached. + TRACE_EVENT_INSTANT1("viz", "Filtered points for delegated ink trail", TRACE_EVENT_SCOPE_THREAD, "points", points_.size()); }
diff --git a/components/viz/service/display/delegated_ink_point_renderer_base.h b/components/viz/service/display/delegated_ink_point_renderer_base.h index a6b962d..4dd089f 100644 --- a/components/viz/service/display/delegated_ink_point_renderer_base.h +++ b/components/viz/service/display/delegated_ink_point_renderer_base.h
@@ -45,7 +45,8 @@ metadata_ = std::move(metadata); } - void DrawDelegatedInkTrail(); + virtual void FinalizePathForDraw() = 0; + virtual gfx::Rect GetDamageRect() = 0; protected: // |points_| is not emptied each time after the points are drawn, because one @@ -56,12 +57,14 @@ void FilterPoints(); std::unique_ptr<DelegatedInkMetadata> metadata_; + + // The points that will be drawn as part of the ink stroke. After being + // filtered in FilterPoints(), but before drawing, the first point in this map + // will match |metadata_|'s point, or it will be empty. std::map<base::TimeTicks, gfx::PointF> points_; private: - FRIEND_TEST_ALL_PREFIXES(DisplayTest, SkiaDelegatedInkRenderer); - - void virtual DrawDelegatedInkTrailInternal() = 0; + friend class SkiaDelegatedInkRendererTest; const std::map<base::TimeTicks, gfx::PointF>& GetPointsMapForTest() const { return points_; @@ -71,6 +74,8 @@ return metadata_.get(); } + virtual int GetPathPointCountForTest() const = 0; + mojo::Receiver<mojom::DelegatedInkPointRenderer> receiver_{this}; };
diff --git a/components/viz/service/display/delegated_ink_point_renderer_skia.cc b/components/viz/service/display/delegated_ink_point_renderer_skia.cc index cc291339..6a848f0 100644 --- a/components/viz/service/display/delegated_ink_point_renderer_skia.cc +++ b/components/viz/service/display/delegated_ink_point_renderer_skia.cc
@@ -4,28 +4,147 @@ #include "components/viz/service/display/delegated_ink_point_renderer_skia.h" +#include <vector> + +#include "base/metrics/histogram_macros.h" +#include "base/trace_event/trace_event.h" #include "components/viz/common/delegated_ink_metadata.h" +#include "third_party/skia/include/core/SkCanvas.h" +#include "ui/gfx/geometry/rect_conversions.h" +#include "ui/gfx/skia_util.h" namespace viz { -void DelegatedInkPointRendererSkia::DrawDelegatedInkTrailInternal() { +void DelegatedInkPointRendererSkia::DrawDelegatedInkTrail(SkCanvas* canvas) { + TRACE_EVENT1("viz", "DelegatedInkPointRendererSkia::DrawDelegatedInkTrail", + "points", path_.countPoints()); + + if (!metadata_) + return; + + if (!path_.isEmpty() && canvas) { + SkRect bounds = gfx::RectFToSkRect(metadata_->presentation_area()); + canvas->saveLayer(SkCanvas::SaveLayerRec(&bounds, nullptr)); + + SkPaint paint; + paint.setAntiAlias(true); + paint.setBlendMode(SkBlendMode::kSrcOver); + paint.setColor(metadata_->color()); + paint.setFilterQuality(kNone_SkFilterQuality); + paint.setStrokeCap(SkPaint::kRound_Cap); + paint.setStrokeJoin(SkPaint::kRound_Join); + paint.setStrokeWidth(SkScalar(metadata_->diameter())); + paint.setStyle(SkPaint::kStroke_Style); + + canvas->drawPath(path_, paint); + + canvas->restore(); + + path_.rewind(); + } + + // Always reset |metadata_| regardless of if the draw occurred or not so that + // the trail is never incorrectly drawn if the aggregated frame did not + // contain delegated ink metadata. + metadata_.reset(); +} + +gfx::Rect DelegatedInkPointRendererSkia::GetDamageRect() { + if (old_trail_damage_rect_.IsEmpty() && new_trail_damage_rect_.IsEmpty()) + return gfx::Rect(); + + gfx::RectF damage_rect_f = old_trail_damage_rect_; + + damage_rect_f.Union(new_trail_damage_rect_); + + return gfx::ToEnclosingRect(damage_rect_f); +} + +void DelegatedInkPointRendererSkia::FinalizePathForDraw() { + // Always rewind the path first so that a path isn't drawn twice. + path_.rewind(); + + // Setting the damage rect to empty ensures that the damage rect is cleared + // when trails are not being drawn so that extra drawing doesn't occur. + if (!metadata_) { + SetDamageRect(gfx::RectF()); + return; + } + // First, filter the delegated ink points so that only ones that have a // timestamp that is equal to or later than the metadata still exist. FilterPoints(); - if (points_.size() == 0) - return; + // TODO(1052145): Predict points. - // Prediction will occur here. The CL to move prediction to ui/base must land - // first in order for this to happen. + base::TimeDelta improvement = + static_cast<int>(points_.size()) > 0 + ? points_.rbegin()->first - metadata_->timestamp() + : base::TimeDelta::FromMilliseconds(0); + UMA_HISTOGRAM_TIMES( + "Renderer.DelegatedInkTrail.LatencyImprovement.Skia.WithoutPrediction", + improvement); // If there is only one point total between |points_| and predicted points, // then it will match the metadata point and therefore doesn't need to be // drawn in this way, as it will be rendered normally. - // TODO(1052145): Early out here if the above condition is met. + if (points_.size() <= 1) { + SetDamageRect(gfx::RectF()); + return; + } - // TODO(1052145): Draw the all remaining points in |points_| with bezier - // curves between them onto the skia canvas. + std::vector<SkPoint> sk_points; + for (auto it : points_) + sk_points.emplace_back(gfx::PointFToSkPoint(it.second)); + + path_.moveTo(sk_points[0]); + switch (sk_points.size()) { + case 2: + path_.lineTo(sk_points[1]); + break; + case 3: + path_.quadTo(sk_points[1], sk_points[2]); + break; + case 4: + path_.cubicTo(sk_points[1], sk_points[2], sk_points[3]); + break; + default: + // The connection between two cubic bezier curves will be smooth only if + // the second control point of the first curve, the end point of the first + // curve/first control point of the second curve, and the second control + // point of the second curve are colinear. Since this is unlikely to be + // the case, and in general it is unlikely to be common that more than 4 + // points exist in |points_|, connecting all four points via lines should + // be acceptable. + for (uint64_t i = 1; i < sk_points.size(); ++i) + path_.lineTo(sk_points[i]); + break; + } + + // path_.computeTightBounds() returns a rect that contains the points and + // curves, but it isn't guaranteed to contain the drawn stroke, resulting in + // the stroke sometimes existing outside of the damage_rect. Therefore, expand + // it here to ensure that the stroke is included, then intersect with the + // presentation area so that is can't extend beyond the drawable area. + gfx::RectF damage_rect = gfx::SkRectToRectF(path_.computeTightBounds()); + const float kRadius = metadata_->diameter() / 2.f; + damage_rect.Inset(-kRadius, -kRadius); + damage_rect.Intersect(metadata_->presentation_area()); + + TRACE_EVENT_INSTANT1( + "viz", "DelegatedInkPointRendererSkia::FinalizePathForDraw", + TRACE_EVENT_SCOPE_THREAD, "damage_rect", damage_rect.ToString()); + + SetDamageRect(damage_rect); +} + +void DelegatedInkPointRendererSkia::SetDamageRect(gfx::RectF damage_rect) { + old_trail_damage_rect_ = new_trail_damage_rect_; + new_trail_damage_rect_ = damage_rect; +} + +int DelegatedInkPointRendererSkia::GetPathPointCountForTest() const { + return path_.countPoints(); } } // namespace viz
diff --git a/components/viz/service/display/delegated_ink_point_renderer_skia.h b/components/viz/service/display/delegated_ink_point_renderer_skia.h index 34f5011..0f7fd045 100644 --- a/components/viz/service/display/delegated_ink_point_renderer_skia.h +++ b/components/viz/service/display/delegated_ink_point_renderer_skia.h
@@ -7,6 +7,9 @@ #include "components/viz/service/display/delegated_ink_point_renderer_base.h" #include "components/viz/service/viz_service_export.h" +#include "third_party/skia/include/core/SkPath.h" + +class SkCanvas; namespace viz { @@ -17,6 +20,26 @@ // renderer, the |current_canvas_|. // TODO(1052145): Specify exactly how many points are predicted. // +// When an ink trail is getting ready to be drawn, after points and metadata +// have already arrived, the first thing that will be called is +// FinalizePathForDraw(). This is called when determining the portion of the +// frame that needs to be redrawn, so that GetDamageRect() can return the union +// of the bounding box of the previous ink trail that had been drawn (stored in +// |new_trail_damage_rect_| at this time) and the new ink trail. +// FinalizePathForDraw() will filter points, predict new ones, and use the +// result to update |path_| with the new ink trail. It also calls +// SetDamageRect() with the new trail's damage rect, which moves the rect +// currently in |new_trail_damage_rect_| to |old_trail_damage_rect_| and the new +// damage rect goes to |new_trail_damage_rect_|. GetDamageRect() then returns +// the union of the two for drawing. +// Then, after everything else in the frame has been drawn, +// DrawDelegatedInkTrail() will be called to actually draw the |path_| that was +// determined in FinalizePathForDraw(). +// After drawing and swapping the buffers has completed, the display will call +// GetDamageRect() in order to update the ink trail damage rect on the surface +// aggregator, which is used to ensure one more frame will be drawn so that a +// trail never sticks around for longer than intended. +// // For more information on the feature, please see the explainer: // https://github.com/WICG/ink-enhancement/blob/master/README.md class VIZ_SERVICE_EXPORT DelegatedInkPointRendererSkia @@ -27,8 +50,38 @@ DelegatedInkPointRendererSkia& operator=( const DelegatedInkPointRendererSkia&) = delete; + // Set |path_| that will be drawn in the DrawDelegatedInkTrail() call. This is + // called before GetDamageRect() when determining what portion of the frame + // needs to be redrawn - earlier in the execution than the actual drawing + // happens. Finalizing the trail when determining the portion of the frame + // that needs to be redrawn is necessary so that the damage rect of the new + // trail is known and the new trail can be drawn entirely, while + // simultaneously removing the old trail and optimizing the damage rect to be + // as small as possible. The alternative is to use |metadata_|'s presentation + // area as the damage rect instead - then the path could be finalized directly + // before drawing instead. However, this could result in a noticeable + // performance hit by drawing much more than necessary. + void FinalizePathForDraw() override; + + // Returns the union of |old_trail_damage_rect_| and |new_trail_damage_rect_|. + gfx::Rect GetDamageRect() override; + + void DrawDelegatedInkTrail(SkCanvas* canvas); + private: - void DrawDelegatedInkTrailInternal() override; + void SetDamageRect(gfx::RectF); + + int GetPathPointCountForTest() const override; + + // The path that will be drawn in DrawDelegatedInkTrail(). See class comments + // and FinalizePathForDraw() comment to understand when and why this is + // updated. + SkPath path_; + + // The damage rects for the trail currently on the screen, and the next one + // to be drawn, as of the DrawDelegatedInkTrail() call. + gfx::RectF old_trail_damage_rect_; + gfx::RectF new_trail_damage_rect_; }; } // namespace viz
diff --git a/components/viz/service/display/direct_renderer.cc b/components/viz/service/display/direct_renderer.cc index 00b7c86..3b9c1195 100644 --- a/components/viz/service/display/direct_renderer.cc +++ b/components/viz/service/display/direct_renderer.cc
@@ -286,6 +286,21 @@ current_frame()->root_damage_rect.Union( overlay_processor_->GetAndResetOverlayDamage()); } + if (DelegatedInkPointRendererBase* ink_renderer = + GetDelegatedInkPointRenderer()) { + // The path must be finalized before GetDamageRect() can return an accurate + // rect that will allow the old trail to be removed and the new trail to + // be drawn at the same time. + ink_renderer->FinalizePathForDraw(); + gfx::Rect delegated_ink_damage_rect = ink_renderer->GetDamageRect(); + + // The viewport could have changed size since the presentation area was + // created and propagated, such as if is window was resized. Intersect the + // viewport here to ensure the damage rect doesn't extend beyond the current + // viewport. + delegated_ink_damage_rect.Intersect(gfx::Rect(device_viewport_size)); + current_frame()->root_damage_rect.Union(delegated_ink_damage_rect); + } current_frame()->root_damage_rect.Intersect(gfx::Rect(device_viewport_size)); current_frame()->device_viewport_size = device_viewport_size; current_frame()->display_color_spaces = display_color_spaces; @@ -718,9 +733,6 @@ DoDrawQuad(&quad, nullptr); } - if (is_root_render_pass && delegated_ink_point_renderer_) - delegated_ink_point_renderer_->DrawDelegatedInkTrail(); - FlushPolygons(&poly_list, render_pass_scissor_in_draw_space, render_pass_requires_scissor); FinishDrawingQuadList(); @@ -949,18 +961,19 @@ } DelegatedInkPointRendererBase* DirectRenderer::GetDelegatedInkPointRenderer() { - if (!delegated_ink_point_renderer_ && !CreateDelegatedInkPointRenderer()) - return nullptr; - - return delegated_ink_point_renderer_.get(); + return nullptr; } void DirectRenderer::SetDelegatedInkMetadata( std::unique_ptr<DelegatedInkMetadata> metadata) { - if (!delegated_ink_point_renderer_ && !CreateDelegatedInkPointRenderer()) + if (!GetDelegatedInkPointRenderer() && !CreateDelegatedInkPointRenderer()) return; - delegated_ink_point_renderer_->SetDelegatedInkMetadata(std::move(metadata)); + GetDelegatedInkPointRenderer()->SetDelegatedInkMetadata(std::move(metadata)); +} + +void DirectRenderer::DrawDelegatedInkTrail() { + NOTREACHED(); } bool DirectRenderer::CompositeTimeTracingEnabled() { @@ -969,4 +982,11 @@ void DirectRenderer::AddCompositeTimeTraces(base::TimeTicks ready_timestamp) {} +gfx::Rect DirectRenderer::GetDelegatedInkTrailDamageRect() { + if (!GetDelegatedInkPointRenderer()) + return gfx::Rect(); + + return GetDelegatedInkPointRenderer()->GetDamageRect(); +} + } // namespace viz
diff --git a/components/viz/service/display/direct_renderer.h b/components/viz/service/display/direct_renderer.h index 525d34c..c3497e4 100644 --- a/components/viz/service/display/direct_renderer.h +++ b/components/viz/service/display/direct_renderer.h
@@ -141,7 +141,7 @@ return last_root_render_pass_scissor_rect_; } - DelegatedInkPointRendererBase* GetDelegatedInkPointRenderer(); + virtual DelegatedInkPointRendererBase* GetDelegatedInkPointRenderer(); void SetDelegatedInkMetadata(std::unique_ptr<DelegatedInkMetadata> metadata); // Returns true if composite time tracing is enabled. This measures a detailed @@ -151,9 +151,13 @@ // Puts the draw time wall in trace file relative to the |ready_timestamp|. virtual void AddCompositeTimeTraces(base::TimeTicks ready_timestamp); + // Return the bounding rect of previously drawn delegated ink trail. + gfx::Rect GetDelegatedInkTrailDamageRect(); + protected: friend class BspWalkActionDrawPolygon; - FRIEND_TEST_ALL_PREFIXES(DisplayTest, SkiaDelegatedInkRenderer); + friend class SkiaDelegatedInkRendererTest; + friend class DelegatedInkPointPixelTestHelper; enum SurfaceInitializationMode { SURFACE_INITIALIZATION_MODE_PRESERVE, @@ -333,9 +337,10 @@ // actually created or not. If the renderer doesn't support drawing delegated // ink trails, then the delegated ink renderer won't be created. virtual bool CreateDelegatedInkPointRenderer(); - std::unique_ptr<DelegatedInkPointRendererBase> delegated_ink_point_renderer_; private: + virtual void DrawDelegatedInkTrail(); + bool initialized_ = false; #if DCHECK_IS_ON() bool overdraw_feedback_support_missing_logged_once_ = false;
diff --git a/components/viz/service/display/display.cc b/components/viz/service/display/display.cc index 5df527fb6..6df3fba 100644 --- a/components/viz/service/display/display.cc +++ b/components/viz/service/display/display.cc
@@ -642,6 +642,11 @@ if (output_surface_->capabilities().supports_target_damage) target_damage_bounding_rect = renderer_->GetTargetDamageBoundingRect(); + // Ensure that the surfaces that were damaged by any delegated ink trail are + // aggregated again so that the trail exists for a single frame. + target_damage_bounding_rect.Union( + renderer_->GetDelegatedInkTrailDamageRect()); + frame = aggregator_->Aggregate( current_surface_id_, expected_display_time, current_display_transform, target_damage_bounding_rect, ++swapped_trace_id_); @@ -988,10 +993,10 @@ for (auto& observer : observers_) observer.OnDisplayDidFinishFrame(ack); - // Only used with experimental de-jelly effect. Forces us to produce a new - // un-skewed frame if the last one had a de-jelly skew applied. This prevents - // de-jelly skew from staying on screen for more than one frame. - if (aggregator_->last_frame_had_jelly()) { + // Prevent de-jelly skew or a delegated ink trail from staying on the screen + // for more than one frame by forcing a new frame to be produced. + if (aggregator_->last_frame_had_jelly() || + !renderer_->GetDelegatedInkTrailDamageRect().IsEmpty()) { scheduler_->SetNeedsOneBeginFrame(true); } }
diff --git a/components/viz/service/display/display_unittest.cc b/components/viz/service/display/display_unittest.cc index aaab756..6213ce7 100644 --- a/components/viz/service/display/display_unittest.cc +++ b/components/viz/service/display/display_unittest.cc
@@ -30,7 +30,7 @@ #include "components/viz/common/surfaces/frame_sink_id.h" #include "components/viz/common/surfaces/parent_local_surface_id_allocator.h" #include "components/viz/service/display/aggregated_frame.h" -#include "components/viz/service/display/delegated_ink_point_renderer_base.h" +#include "components/viz/service/display/delegated_ink_point_renderer_skia.h" #include "components/viz/service/display/direct_renderer.h" #include "components/viz/service/display/display_client.h" #include "components/viz/service/display/display_scheduler.h" @@ -4513,87 +4513,221 @@ } } -// Testing the delegated ink renderer when the skia renderer is in use. -TEST_F(DisplayTest, SkiaDelegatedInkRenderer) { - // First set up the display to use the Skia renderer. - RendererSettings settings; - settings.use_skia_renderer = true; - SetUpGpuDisplaySkia(settings); +class SkiaDelegatedInkRendererTest : public DisplayTest { + public: + void SetUpRenderers() { + // First set up the display to use the Skia renderer. + RendererSettings settings; + settings.use_skia_renderer = true; + SetUpGpuDisplaySkia(settings); - // Initialize the renderer and create an ink renderer. - StubDisplayClient client; - display_->Initialize(&client, manager_.surface_manager()); - display_->renderer_for_testing()->CreateDelegatedInkPointRenderer(); + // Initialize the renderer and create an ink renderer. + StubDisplayClient client; + display_->Initialize(&client, manager_.surface_manager()); + display_->renderer_for_testing()->CreateDelegatedInkPointRenderer(); + } - std::unique_ptr<DelegatedInkPointRendererBase>& ink_renderer = - display_->renderer_for_testing()->delegated_ink_point_renderer_; + DelegatedInkPointRendererBase* ink_renderer() { + return display_->renderer_for_testing()->GetDelegatedInkPointRenderer(); + } - const std::map<base::TimeTicks, gfx::PointF>& stored_points = - ink_renderer->GetPointsMapForTest(); + const std::map<base::TimeTicks, gfx::PointF>& stored_points() { + return ink_renderer()->GetPointsMapForTest(); + } + + void CreateAndStoreDelegatedInkPoint(const gfx::PointF& point, + base::TimeTicks timestamp) { + ink_points_.emplace_back(point, timestamp); + ink_renderer()->StoreDelegatedInkPoint(ink_points_.back()); + } + + void StoreAlreadyCreatedDelegatedInkPoints() { + for (DelegatedInkPoint ink_point : ink_points_) + ink_renderer()->StoreDelegatedInkPoint(ink_point); + } + + DelegatedInkMetadata MakeAndSendMetadataFromStoredInkPoint( + int index, + float diameter, + SkColor color, + const gfx::RectF& presentation_area) { + EXPECT_GE(index, 0); + EXPECT_LT(index, ink_points_size()); + + DelegatedInkMetadata metadata(ink_points_[index].point(), diameter, color, + ink_points_[index].timestamp(), + presentation_area); + ink_renderer()->SetDelegatedInkMetadata( + std::make_unique<DelegatedInkMetadata>(metadata)); + return metadata; + } + + // |expected_bucket| containing base::TimeDelta::Min() is interpreted to mean + // that expected total count of the histogram should be 0. + void FinalizePathAndCheckHistograms(base::TimeDelta expected_bucket) { + base::HistogramTester histograms; + ink_renderer()->FinalizePathForDraw(); + + if (expected_bucket == base::TimeDelta::Min()) { + histograms.ExpectTotalCount( + "Renderer.DelegatedInkTrail.LatencyImprovement.Skia." + "WithoutPrediction", + 0); + } else { + histograms.ExpectTotalCount( + "Renderer.DelegatedInkTrail.LatencyImprovement.Skia." + "WithoutPrediction", + 1); + + histograms.ExpectTimeBucketCount( + "Renderer.DelegatedInkTrail.LatencyImprovement.Skia." + "WithoutPrediction", + expected_bucket, 1); + } + } + + void DrawDelegatedInkTrail() { + SkCanvas canvas; + static_cast<DelegatedInkPointRendererSkia*>(ink_renderer()) + ->DrawDelegatedInkTrail(&canvas); + } + + int GetPathPointCount() { return ink_renderer()->GetPathPointCountForTest(); } + + // Explicitly get the metadata that is stored on the renderer. + const DelegatedInkMetadata* GetMetadataFromRenderer() { + return ink_renderer()->GetMetadataForTest(); + } + + const DelegatedInkPoint& ink_point(int index) { + EXPECT_GE(index, 0); + EXPECT_LT(index, ink_points_size()); + return ink_points_[index]; + } + + int ink_points_size() { return ink_points_.size(); } + + private: + std::vector<DelegatedInkPoint> ink_points_; +}; + +// Testing filtering points in the the delegated ink renderer when the skia +// renderer is in use. +TEST_F(SkiaDelegatedInkRendererTest, SkiaDelegatedInkRendererFilteringPoints) { + SetUpRenderers(); // First, a sanity check. - EXPECT_EQ(0, static_cast<int>(stored_points.size())); + EXPECT_EQ(0, static_cast<int>(stored_points().size())); // Insert 3 arbitrary points into the ink renderer to confirm that they go // where we expect and are all stored correctly. + const int kInitialDelegatedPoints = 3; base::TimeTicks timestamp = base::TimeTicks::Now(); - std::vector<DelegatedInkPoint> ink_points; - ink_points.emplace_back(gfx::PointF(10, 10), timestamp); - ink_points.emplace_back(gfx::PointF(20, 20), - timestamp + base::TimeDelta::FromMicroseconds(5)); - ink_points.emplace_back(gfx::PointF(30, 30), - timestamp + base::TimeDelta::FromMicroseconds(10)); - const int initial_delegated_points = 3; + gfx::PointF point(10, 10); + for (int i = 0; i < kInitialDelegatedPoints; ++i) { + CreateAndStoreDelegatedInkPoint(point, timestamp); + point.Offset(10, 10); + timestamp += base::TimeDelta::FromMilliseconds(5); + } - for (DelegatedInkPoint point : ink_points) - ink_renderer->StoreDelegatedInkPoint(point); - - EXPECT_EQ(initial_delegated_points, static_cast<int>(stored_points.size())); + EXPECT_EQ(kInitialDelegatedPoints, static_cast<int>(stored_points().size())); // No metadata has been provided yet, so filtering shouldn't occur and all - // points should still exist after a DrawDelegatedInkTrail() call. - ink_renderer->DrawDelegatedInkTrail(); + // points should still exist after a FinalizePath() call. + FinalizePathAndCheckHistograms(base::TimeDelta::Min()); - EXPECT_EQ(initial_delegated_points, static_cast<int>(stored_points.size())); + EXPECT_EQ(kInitialDelegatedPoints, static_cast<int>(stored_points().size())); // Now provide metadata with a timestamp matching one of the points to // confirm that earlier points are removed and later points remain. - const int ink_point_for_metadata = 1; - DelegatedInkMetadata metadata( - ink_points[ink_point_for_metadata].point(), 1, SK_ColorBLACK, - ink_points[ink_point_for_metadata].timestamp(), gfx::RectF()); - ink_renderer->SetDelegatedInkMetadata( - std::make_unique<DelegatedInkMetadata>(metadata)); - ink_renderer->DrawDelegatedInkTrail(); + const int kInkPointForMetadata = 1; + const float kDiameter = 1.f; + DelegatedInkMetadata metadata = MakeAndSendMetadataFromStoredInkPoint( + kInkPointForMetadata, kDiameter, SK_ColorBLACK, gfx::RectF()); - EXPECT_EQ(initial_delegated_points - ink_point_for_metadata, - static_cast<int>(stored_points.size())); - EXPECT_EQ(metadata.point(), stored_points.begin()->second); - EXPECT_EQ(ink_points[ink_points.size() - 1].point(), - stored_points.rbegin()->second); - EXPECT_FALSE(ink_renderer->GetMetadataForTest()); + // The histogram should count one in the bucket that is the difference between + // the latest point stored and the metadata. + FinalizePathAndCheckHistograms(ink_point(ink_points_size() - 1).timestamp() - + metadata.timestamp()); + + EXPECT_EQ(kInitialDelegatedPoints - kInkPointForMetadata, + static_cast<int>(stored_points().size())); + EXPECT_EQ(metadata.point(), stored_points().begin()->second); + EXPECT_EQ(ink_point(ink_points_size() - 1).point(), + stored_points().rbegin()->second); + + // Confirm that the metadata is cleared when DrawDelegatedInkTrail() is + // called. + DrawDelegatedInkTrail(); + EXPECT_FALSE(GetMetadataFromRenderer()); // Finally, add more points than the maximum that will be stored to confirm // only the max is stored and the correct ones are removed first. - const int points_beyond_max_allowed = 2; - for (DelegatedInkPoint point : ink_points) - ink_renderer->StoreDelegatedInkPoint(point); - while (ink_points.size() < - kMaximumDelegatedInkPointsStored + points_beyond_max_allowed) { - gfx::PointF pt = ink_points[ink_points.size() - 1].point(); - pt.Offset(5, 5); - base::TimeTicks ts = ink_points[ink_points.size() - 1].timestamp() + - base::TimeDelta::FromMicroseconds(5); - ink_points.emplace_back(pt, ts); - ink_renderer->StoreDelegatedInkPoint(ink_points[ink_points.size() - 1]); + const int kPointsBeyondMaxAllowed = 2; + StoreAlreadyCreatedDelegatedInkPoints(); + while (ink_points_size() < + kMaximumDelegatedInkPointsStored + kPointsBeyondMaxAllowed) { + CreateAndStoreDelegatedInkPoint(point, timestamp); + point.Offset(10, 10); + timestamp += base::TimeDelta::FromMilliseconds(10); } EXPECT_EQ(kMaximumDelegatedInkPointsStored, - static_cast<int>(stored_points.size())); - EXPECT_EQ(ink_points[points_beyond_max_allowed].point(), - stored_points.begin()->second); - EXPECT_EQ(ink_points[ink_points.size() - 1].point(), - stored_points.rbegin()->second); + static_cast<int>(stored_points().size())); + EXPECT_EQ(ink_point(kPointsBeyondMaxAllowed).point(), + stored_points().begin()->second); + EXPECT_EQ(ink_point(ink_points_size() - 1).point(), + stored_points().rbegin()->second); +} + +// Confirm that the delegated ink trail histograms record latency correctly. +TEST_F(SkiaDelegatedInkRendererTest, LatencyHistograms) { + SetUpRenderers(); + + // Confirm that nothing is counted in histogram when there is no metadata or + // points to draw. + FinalizePathAndCheckHistograms(base::TimeDelta::Min()); + + // Insert 4 arbitrary points into the ink renderer to later draw. + base::TimeTicks timestamp = base::TimeTicks::Now(); + CreateAndStoreDelegatedInkPoint(gfx::PointF(20, 19), timestamp); + CreateAndStoreDelegatedInkPoint( + gfx::PointF(15, 19), timestamp + base::TimeDelta::FromMilliseconds(8)); + CreateAndStoreDelegatedInkPoint( + gfx::PointF(16, 28), timestamp + base::TimeDelta::FromMilliseconds(16)); + CreateAndStoreDelegatedInkPoint( + gfx::PointF(29, 35), timestamp + base::TimeDelta::FromMilliseconds(24)); + + // Provide a metadata so that points can be drawn, based on the first ink + // point that was sent. + const float kDiameter = 11.99f; + MakeAndSendMetadataFromStoredInkPoint(/*index*/ 0, kDiameter, SK_ColorBLACK, + gfx::RectF()); + + // 24 ms bucket should have one counted because that's the difference between + // the latest point and the metadata. + FinalizePathAndCheckHistograms(base::TimeDelta::FromMilliseconds(24)); + + // Now provide metadata that matches the final ink point provided, so that + // everything earlier is filtered out. Then the histogram will count 1 in the + // 0 ms bucket. + MakeAndSendMetadataFromStoredInkPoint(/*index*/ 3, kDiameter, SK_ColorBLACK, + gfx::RectF()); + FinalizePathAndCheckHistograms(base::TimeDelta::FromMilliseconds(0)); + + // DrawDelegatedInkTrail should clear the metadata, so finalizing the path + // shouldn't record anything in the histogram. + DrawDelegatedInkTrail(); + FinalizePathAndCheckHistograms(base::TimeDelta::Min()); + + // Send a few more points but no metadata to confirm that nothing is counted. + timestamp = base::TimeTicks::Now(); + CreateAndStoreDelegatedInkPoint(gfx::PointF(85, 56), timestamp); + CreateAndStoreDelegatedInkPoint( + gfx::PointF(96, 70), timestamp + base::TimeDelta::FromMilliseconds(2)); + CreateAndStoreDelegatedInkPoint( + gfx::PointF(112, 94), timestamp + base::TimeDelta::FromMilliseconds(10)); + FinalizePathAndCheckHistograms(base::TimeDelta::Min()); } } // namespace viz
diff --git a/components/viz/service/display/renderer_pixeltest.cc b/components/viz/service/display/renderer_pixeltest.cc index 382123a..744d39f 100644 --- a/components/viz/service/display/renderer_pixeltest.cc +++ b/components/viz/service/display/renderer_pixeltest.cc
@@ -29,6 +29,7 @@ #include "components/viz/common/quads/texture_draw_quad.h" #include "components/viz/common/resources/bitmap_allocation.h" #include "components/viz/common/resources/resource_format_utils.h" +#include "components/viz/service/display/delegated_ink_point_pixel_test_helper.h" #include "components/viz/service/display/gl_renderer.h" #include "components/viz/service/display/software_renderer.h" #include "components/viz/service/display/viz_pixel_test.h" @@ -5168,6 +5169,173 @@ testing::ValuesIn(dst_color_spaces), testing::Bool())); +class DelegatedInkTest : public VizPixelTestWithParam, + public DelegatedInkPointPixelTestHelper { + public: + void SetUp() override { + // Partial swap must be enabled or else the test will pass even if the + // delegated ink trail damage rect is wrong, because the whole frame is + // always redrawn otherwise. + renderer_settings_.partial_swap_enabled = true; + VizPixelTestWithParam::SetUp(); + EXPECT_TRUE(VizPixelTestWithParam::renderer_->use_partial_swap()); + + SetRendererAndCreateInkRenderer(VizPixelTestWithParam::renderer_.get()); + } + + std::unique_ptr<AggregatedRenderPass> CreateTestRootRenderPass( + AggregatedRenderPassId id, + const gfx::Rect& output_rect, + const gfx::Rect& damage_rect) { + auto pass = std::make_unique<AggregatedRenderPass>(); + const gfx::Transform transform_to_root_target; + pass->SetNew(id, output_rect, damage_rect, transform_to_root_target); + return pass; + } + + bool DrawAndTestTrail(base::FilePath::StringPieceType file) { + gfx::Rect rect(this->device_viewport_size_); + + // Minimize the root render pass damage rect so that it has to be expanded + // by the delegated ink trail damage rect to confirm that it is the right + // size to remove old trails and add new ones. + gfx::Rect damage_rect(0, 0, 1, 1); + AggregatedRenderPassId id{1}; + std::unique_ptr<AggregatedRenderPass> pass = + CreateTestRootRenderPass(id, rect, damage_rect); + + SharedQuadState* shared_state = CreateTestSharedQuadState( + gfx::Transform(), rect, pass.get(), gfx::RRectF()); + + SolidColorDrawQuad* color_quad = + pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); + color_quad->SetNew(shared_state, rect, rect, SK_ColorWHITE, false); + + AggregatedRenderPassList pass_list; + pass_list.push_back(std::move(pass)); + + return this->RunPixelTest(&pass_list, base::FilePath(file), + cc::FuzzyPixelOffByOneComparator(true)); + } +}; + +INSTANTIATE_TEST_SUITE_P(, + DelegatedInkTest, + testing::ValuesIn(GetRendererTypesSkiaOnly()), + testing::PrintToStringParamName()); + +// Draw a single trail and erase it, making sure that no bits of trail are left +// behind. +TEST_P(DelegatedInkTest, DrawOneTrailAndErase) { + // First provide the metadata required to draw the trail, numbers arbitrary. + CreateAndSendMetadata(gfx::PointF(10, 10), 3.5f, SK_ColorBLACK, + gfx::RectF(0, 0, 175, 172)); + + // Then provide some points for the trail to draw. Numbers chosen arbitrarily + // after the first point, which must match the metadata. + CreateAndSendPointFromMetadata(); + CreateAndSendPointFromLastPoint(gfx::PointF(50, 30)); + CreateAndSendPointFromLastPoint(gfx::PointF(75, 62)); + + // Confirm that the trail was drawn. + EXPECT_TRUE( + DrawAndTestTrail(FILE_PATH_LITERAL("delegated_ink_one_trail.png"))); + + // The metadata should have been cleared after drawing, so confirm that there + // is no trail after another draw. + EXPECT_TRUE(DrawAndTestTrail(FILE_PATH_LITERAL("white.png"))); +} + +// Confirm that drawing a second trail completely removes the first trail. +TEST_P(DelegatedInkTest, DrawTwoTrailsAndErase) { + // First provide the metadata required to draw the trail, numbers arbitrary. + CreateAndSendMetadata(gfx::PointF(140, 48), 8.2f, SK_ColorMAGENTA, + gfx::RectF(0, 0, 200, 200)); + + // Then provide some points for the trail to draw. Numbers chosen arbitrarily + // after the first point, which must match the metadata. + CreateAndSendPointFromMetadata(); + CreateAndSendPointFromLastPoint(gfx::PointF(115, 85)); + CreateAndSendPointFromLastPoint(gfx::PointF(92, 60)); + CreateAndSendPointFromLastPoint(gfx::PointF(45.54f, 93.4f)); + CreateAndSendPointFromLastPoint(gfx::PointF(13.f, 116.245f)); + + // Confirm that the trail was drawn correctly. + EXPECT_TRUE(DrawAndTestTrail( + FILE_PATH_LITERAL("delegated_ink_two_trails_first.png"))); + + // Now provide new metadata and points to draw a new trail. Just use the last + // point draw above as the starting point for the new trail. + CreateAndSendMetadataFromLastPoint(); + CreateAndSendPointFromLastPoint(gfx::PointF(134, 100)); + + // Confirm the first trail is gone and only the second remains. + EXPECT_TRUE(DrawAndTestTrail( + FILE_PATH_LITERAL("delegated_ink_two_trails_second.png"))); + + // Confirm all trails are gone. + EXPECT_TRUE(DrawAndTestTrail(FILE_PATH_LITERAL("white.png"))); +} + +// Confirm that the trail can't be drawn beyond the presentation area. +TEST_P(DelegatedInkTest, TrailExtendsBeyondPresentationArea) { + const gfx::RectF kPresentationArea(30, 30, 100, 100); + CreateAndSendMetadata(gfx::PointF(50.2f, 89.999f), 15.22f, SK_ColorCYAN, + kPresentationArea); + + // Send points such that some extend beyond the presentation area to confirm + // that the trail is clipped correctly. + CreateAndSendPointFromMetadata(); + CreateAndSendPointFromLastPoint(gfx::PointF(80.7f, 149.6f)); + CreateAndSendPointFromLastPoint(gfx::PointF(128.999f, 110.01f)); + CreateAndSendPointFromLastPoint(gfx::PointF(50, 50)); + CreateAndSendPointFromLastPoint(gfx::PointF(10.1f, 30.3f)); + CreateAndSendPointFromLastPoint(gfx::PointF(29.98f, 66)); + CreateAndSendPointFromLastPoint(gfx::PointF(52.3456f, 2.31f)); + CreateAndSendPointFromLastPoint(gfx::PointF(97, 36.9f)); + EXPECT_TRUE(DrawAndTestTrail(FILE_PATH_LITERAL( + "delegated_ink_trail_clipped_by_presentation_area.png"))); +} + +// Confirm that the trail appears on top of everything, including batched quads +// that are drawn as part of the call to FinishDrawingQuadList. +TEST_P(DelegatedInkTest, DelegatedInkTrailAfterBatchedQuads) { + gfx::Rect rect(this->device_viewport_size_); + + AggregatedRenderPassId id{1}; + auto pass = CreateTestRootRenderPass(id, rect, rect); + + SharedQuadState* shared_state = CreateTestSharedQuadState( + gfx::Transform(), rect, pass.get(), gfx::RRectF()); + + CreateTestTextureDrawQuad( + !is_software_renderer(), gfx::Rect(this->device_viewport_size_), + SkColorSetARGB(128, 0, 255, 0), // Texel color. + SK_ColorTRANSPARENT, // Background color. + true, // Premultiplied alpha. + shared_state, this->resource_provider_.get(), + this->child_resource_provider_.get(), this->shared_bitmap_manager_.get(), + this->child_context_provider_, pass.get()); + + auto* color_quad = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); + color_quad->SetNew(shared_state, rect, rect, SK_ColorWHITE, false); + + AggregatedRenderPassList pass_list; + pass_list.push_back(std::move(pass)); + + const gfx::RectF kPresentationArea(0, 0, 200, 200); + CreateAndSendMetadata(gfx::PointF(34.f, 72.f), 7.77f, SK_ColorDKGRAY, + kPresentationArea); + CreateAndSendPointFromMetadata(); + CreateAndSendPointFromLastPoint(gfx::PointF(79, 101)); + CreateAndSendPointFromLastPoint(gfx::PointF(134, 114)); + + EXPECT_TRUE(this->RunPixelTest( + &pass_list, + base::FilePath( + FILE_PATH_LITERAL("delegated_ink_trail_on_batched_quads.png")), + cc::ExactPixelComparator(true))); +} #endif // !defined(OS_ANDROID) } // namespace
diff --git a/components/viz/service/display/skia_renderer.cc b/components/viz/service/display/skia_renderer.cc index 2c9160ce..af54c9f 100644 --- a/components/viz/service/display/skia_renderer.cc +++ b/components/viz/service/display/skia_renderer.cc
@@ -2498,6 +2498,12 @@ if (!batched_quads_.empty()) FlushBatchedQuads(); + // Drawing the delegated ink trail must happen after the final + // FlushBatchedQuads() call so that the trail can always be on top of + // everything else that has already been drawn on the page. + if (delegated_ink_point_renderer_) + DrawDelegatedInkTrail(); + base::OnceClosure on_finished_callback; // Signal |current_frame_resource_fence_| when the root render pass is // finished. @@ -2731,6 +2737,17 @@ return true; } +void SkiaRenderer::DrawDelegatedInkTrail() { + delegated_ink_point_renderer_->DrawDelegatedInkTrail(current_canvas_); +} + +DelegatedInkPointRendererBase* SkiaRenderer::GetDelegatedInkPointRenderer() { + if (!delegated_ink_point_renderer_ && !CreateDelegatedInkPointRenderer()) + return nullptr; + + return delegated_ink_point_renderer_.get(); +} + #if defined(OS_APPLE) bool SkiaRenderer::ScopedReadLockComparator::operator()( const DisplayResourceProvider::ScopedReadLockSharedImage& lhs,
diff --git a/components/viz/service/display/skia_renderer.h b/components/viz/service/display/skia_renderer.h index ad22656..c6a9bbf 100644 --- a/components/viz/service/display/skia_renderer.h +++ b/components/viz/service/display/skia_renderer.h
@@ -25,6 +25,8 @@ namespace viz { class AggregatedRenderPassDrawQuad; class DebugBorderDrawQuad; +class DelegatedInkPointRendererBase; +class DelegatedInkPointRendererSkia; class PictureDrawQuad; class SkiaOutputSurface; class SolidColorDrawQuad; @@ -56,6 +58,8 @@ disable_picture_quad_image_filtering_ = disable; } + DelegatedInkPointRendererBase* GetDelegatedInkPointRenderer() override; + protected: bool CanPartialSwap() override; void UpdateRenderPassTextures( @@ -88,6 +92,8 @@ void GenerateMipmap() override; bool CreateDelegatedInkPointRenderer() override; + std::unique_ptr<DelegatedInkPointRendererSkia> delegated_ink_point_renderer_; + private: enum class BypassMode; struct DrawQuadParams; @@ -221,6 +227,8 @@ const DrawQuad* CanPassBeDrawnDirectly( const AggregatedRenderPass* pass) override; + void DrawDelegatedInkTrail() override; + // Get a color filter that converts from |src| color space to |dst| color // space using a shader constructed from gfx::ColorTransform. The color // filters are cached in |color_filter_cache_|. Resource offset and
diff --git a/components/viz/service/display/surface_aggregator.cc b/components/viz/service/display/surface_aggregator.cc index ca6f9309..fb1fd60 100644 --- a/components/viz/service/display/surface_aggregator.cc +++ b/components/viz/service/display/surface_aggregator.cc
@@ -1748,11 +1748,15 @@ // The root render pass damage might have been expanded by target_damage (the // area that might need to be recomposited on the target surface). We restrict // the damage_rect of the root render pass to the one caused by the source - // surfaces. + // surfaces, except when drawing delegated ink trails. // The damage on the root render pass should not include the expanded area - // since Renderer and OverlayProcessor expect the non expanded damage. + // since Renderer and OverlayProcessor expect the non expanded damage. The + // only exception is when delegated ink trails are being drawn, in which case + // the root render pass needs to contain the expanded area, as |target_damage| + // also reflects the delegated ink trail damage rect. auto* last_pass = dest_pass_list_->back().get(); - if (!color_usage_changed && + + if (!color_usage_changed && !last_frame_had_delegated_ink_ && !RenderPassNeedsFullDamage(last_pass->id, last_pass->cache_render_pass)) dest_pass_list_->back()->damage_rect.Intersect(surfaces_damage_rect); @@ -1781,7 +1785,12 @@ } } - frame.delegated_ink_metadata = std::move(delegated_ink_metadata_); + if (delegated_ink_metadata_) { + frame.delegated_ink_metadata = std::move(delegated_ink_metadata_); + last_frame_had_delegated_ink_ = true; + } else { + last_frame_had_delegated_ink_ = false; + } if (frame_annotator_) frame_annotator_->AnnotateAggregatedFrame(&frame);
diff --git a/components/viz/service/display/surface_aggregator.h b/components/viz/service/display/surface_aggregator.h index f2098d5..7f49924 100644 --- a/components/viz/service/display/surface_aggregator.h +++ b/components/viz/service/display/surface_aggregator.h
@@ -452,6 +452,11 @@ // a surface contains delegated ink metadata on its frame, and it is cleared // after it is placed on the final aggregated frame during aggregation. std::unique_ptr<DelegatedInkMetadata> delegated_ink_metadata_; + // Whether the last aggregated frame contained delegated ink metadata or not. + // Used to determine if the root render pass needs to remain expanded by the + // target damage or not, because that allows a frame to be drawn after inking + // is finished to remove the last drawn ink trail. + bool last_frame_had_delegated_ink_ = false; // A helper class used to remap render pass IDs from the surface namespace to // a common space, to avoid collisions.
diff --git a/components/viz/service/display/surface_aggregator_pixeltest.cc b/components/viz/service/display/surface_aggregator_pixeltest.cc index 38621e7..e5ff4f3e 100644 --- a/components/viz/service/display/surface_aggregator_pixeltest.cc +++ b/components/viz/service/display/surface_aggregator_pixeltest.cc
@@ -12,6 +12,7 @@ #include "components/viz/common/quads/surface_draw_quad.h" #include "components/viz/common/surfaces/parent_local_surface_id_allocator.h" #include "components/viz/service/display/aggregated_frame.h" +#include "components/viz/service/display/delegated_ink_point_pixel_test_helper.h" #include "components/viz/service/display/surface_aggregator.h" #include "components/viz/service/display/viz_pixel_test.h" #include "components/viz/service/display_embedder/server_shared_bitmap_manager.h" @@ -335,6 +336,71 @@ pixel_comparator)); } +// Draw a simple frame with a delegated ink trail on top of it, then confirm +// that it is erased by the next aggregation. +TEST_P(SurfaceAggregatorPixelTest, DrawAndEraseDelegatedInkTrail) { + // DelegatedInkTrail isn't supported on non-Skia renderers. + if (renderer_type() == RendererType::kGL) + return; + + DelegatedInkPointPixelTestHelper delegated_ink_helper(renderer_.get()); + + // Create and send metadata and points to the renderer that will be drawn. + // Points and timestamps are chosen arbitrarily. + delegated_ink_helper.CreateAndSendMetadata( + gfx::PointF(10, 10), 7.7f, SK_ColorWHITE, gfx::RectF(0, 0, 200, 200)); + delegated_ink_helper.CreateAndSendPointFromMetadata(); + delegated_ink_helper.CreateAndSendPointFromLastPoint(gfx::PointF(26, 37)); + delegated_ink_helper.CreateAndSendPointFromLastPoint(gfx::PointF(45, 87)); + + gfx::Rect rect(this->device_viewport_size_); + CompositorRenderPassId id{1}; + auto pass = CompositorRenderPass::Create(); + pass->SetNew(id, rect, rect, gfx::Transform()); + + CreateAndAppendTestSharedQuadState(pass.get(), gfx::Transform(), + this->device_viewport_size_); + + auto* color_quad = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); + bool force_anti_aliasing_off = false; + color_quad->SetNew(pass->shared_quad_state_list.back(), rect, rect, + SK_ColorGREEN, force_anti_aliasing_off); + + auto root_frame = + CompositorFrameBuilder().AddRenderPass(std::move(pass)).Build(); + + this->root_allocator_.GenerateId(); + SurfaceId root_surface_id(this->support_->frame_sink_id(), + this->root_allocator_.GetCurrentLocalSurfaceId()); + this->support_->SubmitCompositorFrame( + this->root_allocator_.GetCurrentLocalSurfaceId(), std::move(root_frame)); + + SurfaceAggregator aggregator(this->manager_.surface_manager(), + this->resource_provider_.get(), true, false); + auto aggregated_frame = aggregator.Aggregate( + root_surface_id, this->GetNextDisplayTime(), gfx::OVERLAY_TRANSFORM_NONE); + + bool discard_alpha = false; + cc::ExactPixelComparator pixel_comparator(discard_alpha); + auto* pass_list = &aggregated_frame.render_pass_list; + EXPECT_TRUE(this->RunPixelTest( + pass_list, base::FilePath(FILE_PATH_LITERAL("delegated_ink_trail.png")), + pixel_comparator)); + + // Providing the damage rect as the target damage ensures that aggregation + // occurs and DrawFrame() has something new to draw. If this doesn't cause + // anything to be aggregated, a black square is drawn. If it does, the result + // should just erase the previously drawn trail completely. + aggregated_frame = aggregator.Aggregate( + root_surface_id, this->GetNextDisplayTime(), gfx::OVERLAY_TRANSFORM_NONE, + delegated_ink_helper.GetDelegatedInkDamageRect()); + pass_list = &aggregated_frame.render_pass_list; + + EXPECT_TRUE(this->RunPixelTest(pass_list, + base::FilePath(FILE_PATH_LITERAL("green.png")), + pixel_comparator)); +} + } // namespace } // namespace viz
diff --git a/components/viz/test/data/delegated_ink_one_trail.png b/components/viz/test/data/delegated_ink_one_trail.png new file mode 100644 index 0000000..e831b197 --- /dev/null +++ b/components/viz/test/data/delegated_ink_one_trail.png Binary files differ
diff --git a/components/viz/test/data/delegated_ink_trail.png b/components/viz/test/data/delegated_ink_trail.png new file mode 100644 index 0000000..c84ef7a3 --- /dev/null +++ b/components/viz/test/data/delegated_ink_trail.png Binary files differ
diff --git a/components/viz/test/data/delegated_ink_trail_clipped_by_presentation_area.png b/components/viz/test/data/delegated_ink_trail_clipped_by_presentation_area.png new file mode 100644 index 0000000..7c890596 --- /dev/null +++ b/components/viz/test/data/delegated_ink_trail_clipped_by_presentation_area.png Binary files differ
diff --git a/components/viz/test/data/delegated_ink_trail_on_batched_quads.png b/components/viz/test/data/delegated_ink_trail_on_batched_quads.png new file mode 100644 index 0000000..93661a0 --- /dev/null +++ b/components/viz/test/data/delegated_ink_trail_on_batched_quads.png Binary files differ
diff --git a/components/viz/test/data/delegated_ink_two_trails_first.png b/components/viz/test/data/delegated_ink_two_trails_first.png new file mode 100644 index 0000000..4a406861 --- /dev/null +++ b/components/viz/test/data/delegated_ink_two_trails_first.png Binary files differ
diff --git a/components/viz/test/data/delegated_ink_two_trails_second.png b/components/viz/test/data/delegated_ink_two_trails_second.png new file mode 100644 index 0000000..09e55de --- /dev/null +++ b/components/viz/test/data/delegated_ink_two_trails_second.png Binary files differ
diff --git a/components/viz/test/test_types.cc b/components/viz/test/test_types.cc index add5f64..ba0d376 100644 --- a/components/viz/test/test_types.cc +++ b/components/viz/test/test_types.cc
@@ -27,12 +27,14 @@ } std::vector<RendererType> GetRendererTypes(bool include_software, - bool include_dawn) { + bool include_dawn, + bool skia_only) { std::vector<RendererType> types; - if (include_software) + if (include_software && !skia_only) types.push_back(RendererType::kSoftware); #if BUILDFLAG(ENABLE_GL_BACKEND_TESTS) - types.push_back(RendererType::kGL); + if (!skia_only) + types.push_back(RendererType::kGL); types.push_back(RendererType::kSkiaGL); #endif #if BUILDFLAG(ENABLE_VULKAN_BACKEND_TESTS) @@ -52,19 +54,23 @@ } std::vector<RendererType> GetRendererTypes() { - return GetRendererTypes(true, true); + return GetRendererTypes(true, true, false); } std::vector<RendererType> GetRendererTypesNoDawn() { - return GetRendererTypes(true, false); + return GetRendererTypes(true, false, false); } std::vector<RendererType> GetGpuRendererTypes() { - return GetRendererTypes(false, true); + return GetRendererTypes(false, true, false); } std::vector<RendererType> GetGpuRendererTypesNoDawn() { - return GetRendererTypes(false, false); + return GetRendererTypes(false, false, false); +} + +std::vector<RendererType> GetRendererTypesSkiaOnly() { + return GetRendererTypes(false, true, true); } } // namespace viz
diff --git a/components/viz/test/test_types.h b/components/viz/test/test_types.h index c8f97b3..e4062cc 100644 --- a/components/viz/test/test_types.h +++ b/components/viz/test/test_types.h
@@ -31,6 +31,9 @@ std::vector<RendererType> GetGpuRendererTypes(); std::vector<RendererType> GetGpuRendererTypesNoDawn(); +// Returns a list containing all Skia RendererTypes applicable to the platform. +std::vector<RendererType> GetRendererTypesSkiaOnly(); + } // namespace viz #endif // COMPONENTS_VIZ_TEST_TEST_TYPES_H_
diff --git a/content/app/content_main.cc b/content/app/content_main.cc index e463c4d..2aba28d 100644 --- a/content/app/content_main.cc +++ b/content/app/content_main.cc
@@ -135,7 +135,6 @@ auto type = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( switches::kProcessType); return type == switches::kGpuProcess || - type == switches::kPpapiBrokerProcess || type == switches::kPpapiPluginProcess || type == switches::kRendererProcess || type == switches::kUtilityProcess || type == switches::kZygoteProcess;
diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc index a85c253..d5781e9 100644 --- a/content/app/content_main_runner_impl.cc +++ b/content/app/content_main_runner_impl.cc
@@ -172,7 +172,6 @@ extern int GpuMain(const content::MainFunctionParams&); #if BUILDFLAG(ENABLE_PLUGINS) extern int PpapiPluginMain(const MainFunctionParams&); -extern int PpapiBrokerMain(const MainFunctionParams&); #endif extern int RendererMain(const content::MainFunctionParams&); extern int UtilityMain(const MainFunctionParams&); @@ -515,7 +514,6 @@ static const MainFunction kMainFunctions[] = { #if BUILDFLAG(ENABLE_PLUGINS) {switches::kPpapiPluginProcess, PpapiPluginMain}, - {switches::kPpapiBrokerProcess, PpapiBrokerMain}, #endif // ENABLE_PLUGINS {switches::kUtilityProcess, UtilityMain}, {switches::kRendererProcess, RendererMain},
diff --git a/content/browser/accessibility/accessibility_tree_formatter_base.cc b/content/browser/accessibility/accessibility_tree_formatter_base.cc index 1fc8381..3687b02 100644 --- a/content/browser/accessibility/accessibility_tree_formatter_base.cc +++ b/content/browser/accessibility/accessibility_tree_formatter_base.cc
@@ -287,14 +287,6 @@ // AccessibilityTreeFormatter // -AccessibilityTreeFormatter::TestPass AccessibilityTreeFormatter::GetTestPass( - size_t index) { - std::vector<content::AccessibilityTreeFormatter::TestPass> passes = - content::AccessibilityTreeFormatter::GetTestPasses(); - CHECK_LT(index, passes.size()); - return passes[index]; -} - // static std::string AccessibilityTreeFormatterBase::DumpAccessibilityTreeFromManager( BrowserAccessibilityManager* ax_mgr,
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc index c5525ac..6c5cf63bd 100644 --- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc +++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -203,6 +203,22 @@ } }; +// Subclass of DumpAccessibilityTreeTest that exposes ignored nodes. +class DumpAccessibilityTreeTestWithIgnoredNodes + : public DumpAccessibilityTreeTest { + protected: + // Override from DumpAccessibilityTreeTest. + void ChooseFeatures(std::vector<base::Feature>* enabled_features, + std::vector<base::Feature>* disabled_features) override { + // http://crbug.com/1063155 - temporary until this is enabled + // everywhere. + enabled_features->emplace_back( + features::kEnableAccessibilityExposeIgnoredNodes); + DumpAccessibilityTreeTest::ChooseFeatures(enabled_features, + disabled_features); + } +}; + void DumpAccessibilityTreeTest::AddDefaultFilters( std::vector<AXPropertyFilter>* property_filters) { AddPropertyFilter(property_filters, "value='*'"); @@ -243,6 +259,13 @@ AccessibilityTreeFormatter::GetTestPasses().size()), DumpAccessibilityTreeTestPassToString()); +INSTANTIATE_TEST_SUITE_P( + All, + DumpAccessibilityTreeTestWithIgnoredNodes, + ::testing::Range(size_t{0}, + AccessibilityTreeFormatter::GetTestPasses().size()), + DumpAccessibilityTreeTestPassToString()); + IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCSSColor) { RunCSSTest(FILE_PATH_LITERAL("color.html")); } @@ -1829,7 +1852,7 @@ RunHtmlTest(FILE_PATH_LITERAL("input-radio.html")); } -IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, +IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTestWithIgnoredNodes, AccessibilityInputRadioCheckboxLabel) { RunHtmlTest(FILE_PATH_LITERAL("input-radio-checkbox-label.html")); }
diff --git a/content/browser/font_unique_name_lookup/font_unique_name_browsertest.cc b/content/browser/font_unique_name_lookup/font_unique_name_browsertest.cc index b3c6b8c..358b07a8 100644 --- a/content/browser/font_unique_name_lookup/font_unique_name_browsertest.cc +++ b/content/browser/font_unique_name_lookup/font_unique_name_browsertest.cc
@@ -20,10 +20,18 @@ #include "content/browser/renderer_host/dwrite_font_lookup_table_builder_win.h" #endif +#if defined(OS_ANDROID) +#include "base/android/build_info.h" +#include "base/feature_list.h" +#include "components/viz/common/features.h" +#include "gpu/config/gpu_finch_features.h" +#endif + namespace content { namespace { #if defined(OS_ANDROID) +const char* kGoogleSans = "Google Sans"; const char* kExpectedFontFamilyNames[] = {"AndroidClock", "Roboto", "Droid Sans Mono", @@ -64,7 +72,10 @@ "Roboto Condensed", "Roboto Condensed", "Roboto Condensed", - "Roboto"}; + "Roboto", + kGoogleSans, + kGoogleSans, + kGoogleSans}; #elif defined(OS_LINUX) || defined(OS_CHROMEOS) const char* kExpectedFontFamilyNames[] = {"Ahem", "Arimo", @@ -204,6 +215,22 @@ ASSERT_TRUE(first_font_name); ASSERT_TRUE(first_font_name->is_string()); ASSERT_GT(first_font_name->GetString().size(), 0u); +#if defined(OS_ANDROID) + // Skip Android Google Sans test on Pixel devices < Marshmallow SDK level, + // as the firmware font files do not contain this font. + bool at_least_marshmallow = + base::android::BuildInfo::GetInstance()->sdk_int() >= + base::android::SDK_VERSION_MARSHMALLOW; + // https://crbug.com/1129552 work around the SkiaRenderer Vulkan bot not + // having the Google Sans font. + bool on_vulkan_bot = + base::FeatureList::IsEnabled(features::kUseSkiaRenderer) && + base::FeatureList::IsEnabled(features::kVulkan); + if ((!at_least_marshmallow || on_vulkan_bot) && + std::string(kExpectedFontFamilyNames[i]) == std::string(kGoogleSans)) { + continue; + } +#endif ASSERT_EQ(first_font_name->GetString(), kExpectedFontFamilyNames[i]); } }
diff --git a/content/browser/hyphenation/DEPS b/content/browser/hyphenation/DEPS index 7d2846f..c3baaeea 100644 --- a/content/browser/hyphenation/DEPS +++ b/content/browser/hyphenation/DEPS
@@ -1,5 +1,3 @@ include_rules = [ - "-content", - "+content/browser/hyphenation", "+third_party/blink/public/mojom/hyphenation/hyphenation.mojom.h", ]
diff --git a/content/browser/hyphenation/hyphenation_impl.cc b/content/browser/hyphenation/hyphenation_impl.cc index 93f6d45..b5aeca33 100644 --- a/content/browser/hyphenation/hyphenation_impl.cc +++ b/content/browser/hyphenation/hyphenation_impl.cc
@@ -17,11 +17,36 @@ #include "base/task/post_task.h" #include "base/task/thread_pool.h" #include "base/timer/elapsed_timer.h" +#include "content/public/browser/browser_thread.h" +#include "content/public/browser/content_browser_client.h" +#include "content/public/common/content_client.h" #include "mojo/public/cpp/bindings/self_owned_receiver.h" namespace { -using DictionaryFileMap = std::unordered_map<std::string, base::File>; +struct Dictionaries { + static Dictionaries* Get() { + static base::NoDestructor<Dictionaries> dictionaries; + return dictionaries.get(); + } + +#if !defined(OS_ANDROID) + void SetDirectory(const base::FilePath& new_dir) { + DVLOG(1) << __func__ << " " << new_dir; + DCHECK(hyphenation::HyphenationImpl::GetTaskRunner() + ->RunsTasksInCurrentSequence()); + if (new_dir == dir) + return; + dir = new_dir; + cache.clear(); + } + + base::FilePath dir; +#endif + + // Keep the files open in the cache for subsequent calls. + std::unordered_map<std::string, base::File> cache; +}; bool IsValidLocale(const std::string& locale) { return std::all_of(locale.cbegin(), locale.cend(), [](const char ch) { @@ -30,10 +55,17 @@ } base::File GetDictionaryFile(const std::string& locale) { - // Keep Files open in the cache for subsequent calls. - static base::NoDestructor<DictionaryFileMap> cache; + DCHECK(hyphenation::HyphenationImpl::GetTaskRunner() + ->RunsTasksInCurrentSequence()); + Dictionaries* dictionaries = Dictionaries::Get(); +#if !defined(OS_ANDROID) + const base::FilePath& dir = dictionaries->dir; + if (dir.empty()) + return base::File(); +#endif - const auto& inserted = cache->insert(std::make_pair(locale, base::File())); + const auto& inserted = + dictionaries->cache.insert(std::make_pair(locale, base::File())); base::File& file = inserted.first->second; // If the |locale| is already in the cache, duplicate the file and return it. if (!inserted.second) @@ -42,8 +74,6 @@ #if defined(OS_ANDROID) base::FilePath dir("/system/usr/hyphen-data"); -#else -#error "This configuration is not supported." #endif std::string filename = base::StringPrintf("hyph-%s.hyb", locale.c_str()); base::FilePath path = dir.AppendASCII(filename); @@ -77,6 +107,32 @@ return *runner; } +#if !defined(OS_ANDROID) +// static +void HyphenationImpl::RegisterGetDictionary() { + content::ContentBrowserClient* content_browser_client = + content::GetContentClient()->browser(); + DCHECK(content_browser_client); + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + static bool registered = false; + if (registered) + return; + registered = true; + content_browser_client->GetHyphenationDictionary( + base::BindOnce(SetDirectory)); +} + +// static +void HyphenationImpl::SetDirectory(const base::FilePath& dir) { + GetTaskRunner()->PostTask(FROM_HERE, + base::BindOnce( + [](const base::FilePath& dir) { + Dictionaries::Get()->SetDirectory(dir); + }, + dir)); +} +#endif + void HyphenationImpl::OpenDictionary(const std::string& locale, OpenDictionaryCallback callback) { DCHECK(GetTaskRunner()->RunsTasksInCurrentSequence());
diff --git a/content/browser/hyphenation/hyphenation_impl.h b/content/browser/hyphenation/hyphenation_impl.h index 8491fe5..f163eb4b 100644 --- a/content/browser/hyphenation/hyphenation_impl.h +++ b/content/browser/hyphenation/hyphenation_impl.h
@@ -7,6 +7,7 @@ #include "base/macros.h" #include "base/sequenced_task_runner.h" +#include "build/build_config.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "third_party/blink/public/mojom/hyphenation/hyphenation.mojom.h" @@ -21,11 +22,19 @@ static scoped_refptr<base::SequencedTaskRunner> GetTaskRunner(); +#if !defined(OS_ANDROID) + static void RegisterGetDictionary(); +#endif + // Hyphenation: void OpenDictionary(const std::string& locale, OpenDictionaryCallback callback) override; private: +#if !defined(OS_ANDROID) + static void SetDirectory(const base::FilePath& dir); +#endif + DISALLOW_COPY_AND_ASSIGN(HyphenationImpl); };
diff --git a/content/browser/plugin_service_impl.cc b/content/browser/plugin_service_impl.cc index e9cb48e..a356101 100644 --- a/content/browser/plugin_service_impl.cc +++ b/content/browser/plugin_service_impl.cc
@@ -70,18 +70,6 @@ } // namespace // static -void PluginServiceImpl::RecordBrokerUsage(int render_process_id, - int render_frame_id) { - RenderFrameHostImpl* rfh = - RenderFrameHostImpl::FromID(render_process_id, render_frame_id); - if (!rfh) - return; - - ukm::SourceId source_id = rfh->GetPageUkmSourceId(); - ukm::builders::Pepper_Broker(source_id).Record(ukm::UkmRecorder::Get()); -} - -// static PluginService* PluginService::GetInstance() { return PluginServiceImpl::GetInstance(); } @@ -156,16 +144,6 @@ return count; } -PpapiPluginProcessHost* PluginServiceImpl::FindPpapiBrokerProcess( - const base::FilePath& broker_path) { - for (PpapiBrokerProcessHostIterator iter; !iter.Done(); ++iter) { - if (iter->plugin_path() == broker_path) - return *iter; - } - - return nullptr; -} - PpapiPluginProcessHost* PluginServiceImpl::FindOrStartPpapiPluginProcess( int render_process_id, const url::Origin& embedder_origin, @@ -268,29 +246,6 @@ return plugin_host; } -PpapiPluginProcessHost* PluginServiceImpl::FindOrStartPpapiBrokerProcess( - int render_process_id, - const base::FilePath& plugin_path) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - - if (filter_ && !filter_->CanLoadPlugin(render_process_id, plugin_path)) - return nullptr; - - PpapiPluginProcessHost* plugin_host = FindPpapiBrokerProcess(plugin_path); - if (plugin_host) - return plugin_host; - - // Validate that the plugin is actually registered. - const PepperPluginInfo* info = GetRegisteredPpapiPluginInfo(plugin_path); - if (!info) - return nullptr; - - DCHECK(info->is_out_of_process); - - // This broker isn't loaded by any broker process, so create a new process. - return PpapiPluginProcessHost::CreateBrokerHost(*info); -} - void PluginServiceImpl::OpenChannelToPpapiPlugin( int render_process_id, const url::Origin& embedder_origin, @@ -309,25 +264,6 @@ } } -void PluginServiceImpl::OpenChannelToPpapiBroker( - int render_process_id, - int render_frame_id, - const base::FilePath& path, - PpapiPluginProcessHost::BrokerClient* client) { - GetUIThreadTaskRunner({})->PostTask( - FROM_HERE, base::BindOnce(&PluginServiceImpl::RecordBrokerUsage, - render_process_id, render_frame_id)); - - PpapiPluginProcessHost* plugin_host = FindOrStartPpapiBrokerProcess( - render_process_id, path); - if (plugin_host) { - plugin_host->OpenChannelToPlugin(client); - } else { - // Send error. - client->OnPpapiChannelOpened(IPC::ChannelHandle(), base::kNullProcessId, 0); - } -} - bool PluginServiceImpl::GetPluginInfoArray( const GURL& url, const std::string& mime_type,
diff --git a/content/browser/plugin_service_impl.h b/content/browser/plugin_service_impl.h index 79ac3b7..c1d358b 100644 --- a/content/browser/plugin_service_impl.h +++ b/content/browser/plugin_service_impl.h
@@ -91,8 +91,6 @@ const base::FilePath& plugin_path, const base::FilePath& profile_data_directory, const base::Optional<url::Origin>& origin_lock); - PpapiPluginProcessHost* FindOrStartPpapiBrokerProcess( - int render_process_id, const base::FilePath& plugin_path); // Opens a channel to a plugin process for the given mime type, starting // a new plugin process if necessary. This must be called on the IO thread @@ -103,10 +101,6 @@ const base::FilePath& profile_data_directory, const base::Optional<url::Origin>& origin_lock, PpapiPluginProcessHost::PluginClient* client); - void OpenChannelToPpapiBroker(int render_process_id, - int render_frame_id, - const base::FilePath& path, - PpapiPluginProcessHost::BrokerClient* client); // Used to monitor plugin stability. void RegisterPluginCrash(const base::FilePath& plugin_path); @@ -122,9 +116,6 @@ // Pulled out of the air, seems reasonable. static constexpr int kDefaultMaxPpapiProcessesPerProfile = 15; - // Helper for recording URLs to UKM. - static void RecordBrokerUsage(int render_process_id, int render_frame_id); - // Creates the PluginServiceImpl object, but doesn't actually build the plugin // list yet. It's generated lazily. PluginServiceImpl(); @@ -137,8 +128,6 @@ const base::FilePath& plugin_path, const base::FilePath& profile_data_directory, const base::Optional<url::Origin>& origin_lock); - PpapiPluginProcessHost* FindPpapiBrokerProcess( - const base::FilePath& broker_path); void RegisterPepperPlugins();
diff --git a/content/browser/plugin_service_impl_unittest.cc b/content/browser/plugin_service_impl_unittest.cc deleted file mode 100644 index 6fa3ef1..0000000 --- a/content/browser/plugin_service_impl_unittest.cc +++ /dev/null
@@ -1,114 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/browser/plugin_service_impl.h" - -#include <memory> - -#include "build/build_config.h" -#include "components/ukm/test_ukm_recorder.h" -#include "content/browser/ppapi_plugin_process_host.h" -#include "content/browser/web_contents/web_contents_impl.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/render_frame_host.h" -#include "content/public/browser/render_process_host.h" -#include "content/public/browser/web_contents.h" -#include "content/public/test/navigation_simulator.h" -#include "content/public/test/test_renderer_host.h" -#include "content/public/test/test_utils.h" -#include "services/metrics/public/cpp/ukm_source.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace content { - -namespace { - -constexpr char kURL1[] = "http://google.com/"; -constexpr char kURL2[] = "http://youtube.com/"; -constexpr char kPepperBrokerEvent[] = "Pepper.Broker"; - -class TestBrokerClient : public PpapiPluginProcessHost::BrokerClient { - public: - void GetPpapiChannelInfo(base::ProcessHandle* renderer_handle, - int* renderer_id) override {} - void OnPpapiChannelOpened(const IPC::ChannelHandle& channel_handle, - base::ProcessId plugin_pid, - int plugin_child_id) override {} - bool Incognito() override { return false; } -}; - -} // anonymous namespace - -class PluginServiceImplTest : public RenderViewHostTestHarness { - public: - PluginServiceImplTest() = default; - ~PluginServiceImplTest() override = default; - - void SetUp() override { - RenderViewHostTestHarness::SetUp(); - - test_ukm_recorder_ = std::make_unique<ukm::TestAutoSetUkmRecorder>(); - } - - // Check if count events were recorded and if they were all recorded with - // the specified source_id. - bool RecordedBrokerEvents(ukm::SourceId source_id, size_t count) { - RunAllPendingInMessageLoop(BrowserThread::UI); - auto entries = test_ukm_recorder_->GetEntriesByName(kPepperBrokerEvent); - if (entries.size() != count) - return false; - for (const auto* const entry : entries) { - if (entry->source_id != source_id) - return false; - } - return true; - } - - void ResetUKM() { - test_ukm_recorder_ = std::make_unique<ukm::TestAutoSetUkmRecorder>(); - } - - private: - std::unique_ptr<ukm::TestUkmRecorder> test_ukm_recorder_; - - DISALLOW_COPY_AND_ASSIGN(PluginServiceImplTest); -}; - -TEST_F(PluginServiceImplTest, RecordBrokerUsage) { - TestBrokerClient client; - - NavigateAndCommit(GURL(kURL1)); - ukm::SourceId source_id = static_cast<WebContentsImpl*>(web_contents()) - ->GetMainFrame() - ->GetPageUkmSourceId(); - PluginServiceImpl* service = PluginServiceImpl::GetInstance(); - - // Internal usage of the broker should not record metrics. Internal usage will - // not pass a RFH. - service->OpenChannelToPpapiBroker(0, 0, base::FilePath(), &client); - EXPECT_TRUE(RecordedBrokerEvents(source_id, 0)); - - // Top level frame usage should be recorded. - int render_process_id = main_rfh()->GetProcess()->GetID(); - int render_frame_id = main_rfh()->GetRoutingID(); - service->OpenChannelToPpapiBroker(render_process_id, render_frame_id, - base::FilePath(), &client); - EXPECT_TRUE(RecordedBrokerEvents(source_id, 1)); - - ResetUKM(); - - // Iframe usage should be recorded under the top level frame origin. - RenderFrameHost* child_frame = - RenderFrameHostTester::For(main_rfh())->AppendChild("child"); - child_frame = NavigationSimulator::NavigateAndCommitFromDocument(GURL(kURL2), - child_frame); - EXPECT_EQ(GURL(kURL2), child_frame->GetLastCommittedURL()); - render_process_id = child_frame->GetProcess()->GetID(); - render_frame_id = child_frame->GetRoutingID(); - service->OpenChannelToPpapiBroker(render_process_id, render_frame_id, - base::FilePath(), &client); - EXPECT_TRUE(RecordedBrokerEvents(source_id, 1)); -} - -} // namespace content
diff --git a/content/browser/ppapi_plugin_process_host.cc b/content/browser/ppapi_plugin_process_host.cc index f93b4199..5f96dc2 100644 --- a/content/browser/ppapi_plugin_process_host.cc +++ b/content/browser/ppapi_plugin_process_host.cc
@@ -61,14 +61,9 @@ : public content::SandboxedProcessLauncherDelegate { public: PpapiPluginSandboxedProcessLauncherDelegate( - bool is_broker, const ppapi::PpapiPermissions& permissions) -#if BUILDFLAG(USE_ZYGOTE_HANDLE) || defined(OS_WIN) - : is_broker_(is_broker) -#endif #if defined(OS_WIN) - , - permissions_(permissions) + : permissions_(permissions) #endif { } @@ -77,9 +72,6 @@ #if defined(OS_WIN) bool PreSpawnTarget(sandbox::TargetPolicy* policy) override { - if (is_broker_) - return true; - // The Pepper process is as locked-down as a renderer except that it can // create the server side of Chrome pipes. sandbox::ResultCode result; @@ -106,13 +98,11 @@ if (!sid.empty()) sandbox::policy::SandboxWin::AddAppContainerPolicy(policy, sid.c_str()); - // Only Flash needs to be able to execute dynamic code. - if (!permissions_.HasPermission(ppapi::PERMISSION_FLASH)) { - sandbox::MitigationFlags flags = policy->GetDelayedProcessMitigations(); - flags |= sandbox::MITIGATION_DYNAMIC_CODE_DISABLE; - if (sandbox::SBOX_ALL_OK != policy->SetDelayedProcessMitigations(flags)) - return false; - } + // No plugins can generate executable code. + sandbox::MitigationFlags flags = policy->GetDelayedProcessMitigations(); + flags |= sandbox::MITIGATION_DYNAMIC_CODE_DISABLE; + if (sandbox::SBOX_ALL_OK != policy->SetDelayedProcessMitigations(flags)) + return false; return true; } @@ -124,17 +114,13 @@ *base::CommandLine::ForCurrentProcess(); base::CommandLine::StringType plugin_launcher = browser_command_line .GetSwitchValueNative(switches::kPpapiPluginLauncher); - if (is_broker_ || !plugin_launcher.empty()) + if (!plugin_launcher.empty()) return nullptr; return GetGenericZygote(); } #endif // BUILDFLAG(USE_ZYGOTE_HANDLE) sandbox::policy::SandboxType GetSandboxType() override { -#if defined(OS_WIN) - if (is_broker_) - return sandbox::policy::SandboxType::kNoSandbox; -#endif // OS_WIN return sandbox::policy::SandboxType::kPpapi; } @@ -143,9 +129,6 @@ #endif private: -#if BUILDFLAG(USE_ZYGOTE_HANDLE) || defined(OS_WIN) - const bool is_broker_; -#endif #if defined(OS_WIN) const ppapi::PpapiPermissions permissions_; #endif @@ -187,7 +170,7 @@ }; PpapiPluginProcessHost::~PpapiPluginProcessHost() { - DVLOG(1) << "PpapiPluginProcessHost" << (is_broker_ ? "[broker]" : "") + DVLOG(1) << "PpapiPluginProcessHost" << "~PpapiPluginProcessHost()"; CancelRequests(); } @@ -207,18 +190,6 @@ } // static -PpapiPluginProcessHost* PpapiPluginProcessHost::CreateBrokerHost( - const PepperPluginInfo& info) { - PpapiPluginProcessHost* plugin_host = - new PpapiPluginProcessHost(); - if (plugin_host->Init(info)) - return plugin_host; - - NOTREACHED(); // Init is not expected to fail. - return nullptr; -} - -// static void PpapiPluginProcessHost::DidCreateOutOfProcessInstance( int plugin_process_id, int32_t pp_instance, @@ -308,8 +279,7 @@ const base::FilePath& profile_data_directory, const base::Optional<url::Origin>& origin_lock) : profile_data_directory_(profile_data_directory), - origin_lock_(origin_lock), - is_broker_(false) { + origin_lock_(origin_lock) { uint32_t base_permissions = info.permissions; // We don't have to do any whitelisting for APIs in this process host, so @@ -337,18 +307,6 @@ network_observer_ = std::make_unique<PluginNetworkObserver>(this); } -PpapiPluginProcessHost::PpapiPluginProcessHost() : is_broker_(true) { - process_ = std::make_unique<BrowserChildProcessHostImpl>( - PROCESS_TYPE_PPAPI_BROKER, this, ChildProcessHost::IpcMode::kNormal); - - ppapi::PpapiPermissions permissions; // No permissions. - // The plugin name, path and profile data directory shouldn't be needed for - // the broker. - host_impl_ = std::make_unique<BrowserPpapiHostImpl>( - this, permissions, std::string(), base::FilePath(), base::FilePath(), - false /* in_process */, false /* external_plugin */); -} - bool PpapiPluginProcessHost::Init(const PepperPluginInfo& info) { plugin_path_ = info.path; if (info.name.empty()) { @@ -367,12 +325,8 @@ #if defined(OS_LINUX) || defined(OS_CHROMEOS) int flags = plugin_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF : ChildProcessHost::CHILD_NORMAL; -#elif defined(OS_MAC) - // Flash needs to JIT, but other plugins do not. - int flags = permissions_.HasPermission(ppapi::PERMISSION_FLASH) - ? ChildProcessHost::CHILD_PLUGIN - : ChildProcessHost::CHILD_NORMAL; #else + // Plugins can't generate executable code. int flags = ChildProcessHost::CHILD_NORMAL; #endif base::FilePath exe_path = ChildProcessHost::GetChildPath(flags); @@ -384,42 +338,31 @@ std::unique_ptr<base::CommandLine> cmd_line = std::make_unique<base::CommandLine>(exe_path); cmd_line->AppendSwitchASCII(switches::kProcessType, - is_broker_ ? switches::kPpapiBrokerProcess - : switches::kPpapiPluginProcess); + switches::kPpapiPluginProcess); BrowserChildProcessHostImpl::CopyFeatureAndFieldTrialFlags(cmd_line.get()); BrowserChildProcessHostImpl::CopyTraceStartupFlags(cmd_line.get()); #if defined(OS_WIN) - cmd_line->AppendArg(is_broker_ ? switches::kPrefetchArgumentPpapiBroker - : switches::kPrefetchArgumentPpapi); + cmd_line->AppendArg(switches::kPrefetchArgumentPpapi); #endif // defined(OS_WIN) - // These switches are forwarded to both plugin and broker pocesses. + // These switches are forwarded to plugin pocesses. static const char* const kCommonForwardSwitches[] = { switches::kVModule }; cmd_line->CopySwitchesFrom(browser_command_line, kCommonForwardSwitches, base::size(kCommonForwardSwitches)); - if (!is_broker_) { - static const char* const kPluginForwardSwitches[] = { - sandbox::policy::switches::kDisableSeccompFilterSandbox, - sandbox::policy::switches::kNoSandbox, + static const char* const kPluginForwardSwitches[] = { + sandbox::policy::switches::kDisableSeccompFilterSandbox, + sandbox::policy::switches::kNoSandbox, #if defined(OS_MAC) - sandbox::policy::switches::kEnableSandboxLogging, + sandbox::policy::switches::kEnableSandboxLogging, #endif - switches::kPpapiStartupDialog, - }; - cmd_line->CopySwitchesFrom(browser_command_line, kPluginForwardSwitches, - base::size(kPluginForwardSwitches)); - - // Copy any flash args over if necessary. - // TODO(vtl): Stop passing flash args in the command line, or windows is - // going to explode. - std::string existing_args = - browser_command_line.GetSwitchValueASCII(switches::kPpapiFlashArgs); - cmd_line->AppendSwitchASCII(switches::kPpapiFlashArgs, existing_args); - } + switches::kPpapiStartupDialog, + }; + cmd_line->CopySwitchesFrom(browser_command_line, kPluginForwardSwitches, + base::size(kPluginForwardSwitches)); std::string locale = GetContentClient()->browser()->GetApplicationLocale(); if (!locale.empty()) { @@ -443,12 +386,12 @@ if (!plugin_launcher.empty()) cmd_line->PrependWrapper(plugin_launcher); - // On posix, never use the zygote for the broker. Also, only use the zygote if - // we are not using a plugin launcher - having a plugin launcher means we need - // to use another process instead of just forking the zygote. + // On posix, only use the zygote if we are not using a plugin launcher - + // having a plugin launcher means we need to use another process instead of + // just forking the zygote. process_->Launch( std::make_unique<PpapiPluginSandboxedProcessLauncherDelegate>( - is_broker_, permissions_), + permissions_), std::move(cmd_line), true); return true; } @@ -518,7 +461,7 @@ // Called when the browser <--> plugin channel has an error. This normally // means the plugin has crashed. void PpapiPluginProcessHost::OnChannelError() { - VLOG(1) << "PpapiPluginProcessHost" << (is_broker_ ? "[broker]" : "") + VLOG(1) << "PpapiPluginProcessHost" << "::OnChannelError()"; // We don't need to notify the renderers that were communicating with the // plugin since they have their own channels which will go into the error @@ -528,7 +471,7 @@ } void PpapiPluginProcessHost::CancelRequests() { - DVLOG(1) << "PpapiPluginProcessHost" << (is_broker_ ? "[broker]" : "") + DVLOG(1) << "PpapiPluginProcessHost" << "CancelRequests()"; for (size_t i = 0; i < pending_requests_.size(); i++) { pending_requests_[i]->OnPpapiChannelOpened(IPC::ChannelHandle(),
diff --git a/content/browser/ppapi_plugin_process_host.h b/content/browser/ppapi_plugin_process_host.h index 6fd2e5f..667b4baf 100644 --- a/content/browser/ppapi_plugin_process_host.h +++ b/content/browser/ppapi_plugin_process_host.h
@@ -30,8 +30,7 @@ class BrowserChildProcessHostImpl; struct PepperPluginInfo; -// Process host for PPAPI plugin and broker processes. -// When used for the broker, interpret all references to "plugin" with "broker". +// Process host for PPAPI plugin processes. class PpapiPluginProcessHost : public BrowserChildProcessHostDelegate, public IPC::Sender { public: @@ -65,11 +64,6 @@ ~PluginClient() override {} }; - class BrokerClient : public Client { - protected: - ~BrokerClient() override {} - }; - ~PpapiPluginProcessHost() override; static PpapiPluginProcessHost* CreatePluginHost( @@ -77,9 +71,6 @@ const base::FilePath& profile_data_directory, const base::Optional<url::Origin>& origin_lock); - static PpapiPluginProcessHost* CreateBrokerHost( - const PepperPluginInfo& info); - // Notification that a PP_Instance has been created and the associated // renderer related data including the RenderView/Process pair for the given // plugin. This is necessary so that when the plugin calls us with a @@ -126,12 +117,11 @@ private: class PluginNetworkObserver; - // Constructors for plugin and broker process hosts, respectively. + // Constructors for plugin process hosts. // You must call Init before doing anything else. PpapiPluginProcessHost(const PepperPluginInfo& info, const base::FilePath& profile_data_directory, const base::Optional<url::Origin>& origin_lock); - PpapiPluginProcessHost(); // Actually launches the process with the given plugin info. Returns true // on success (the process was spawned). @@ -178,8 +168,6 @@ // re-use the plugin host. const base::Optional<url::Origin> origin_lock_; - const bool is_broker_; - std::unique_ptr<BrowserChildProcessHostImpl> process_; DISALLOW_COPY_AND_ASSIGN(PpapiPluginProcessHost); @@ -194,15 +182,6 @@ PpapiPluginProcessHost>(PROCESS_TYPE_PPAPI_PLUGIN) {} }; -class PpapiBrokerProcessHostIterator - : public BrowserChildProcessHostTypeIterator< - PpapiPluginProcessHost> { - public: - PpapiBrokerProcessHostIterator() - : BrowserChildProcessHostTypeIterator< - PpapiPluginProcessHost>(PROCESS_TYPE_PPAPI_BROKER) {} -}; - } // namespace content #endif // CONTENT_BROWSER_PPAPI_PLUGIN_PROCESS_HOST_H_
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc index ee8fc66..f9fb1e2 100644 --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc
@@ -549,29 +549,6 @@ } } -// Given an net::IPAddress and a CSP set, this function calculates the -// IPAddressSpace which should be associated with the document this navigation -// eventually commits into. -// -// https://wicg.github.io/cors-rfc1918/#address-space -// -// TODO(mkwst): This implementation treats requests that don't use a URL loader -// (`about:blank`), as well as requests whose IP address is invalid -// (`about:srcdoc`, `blob:`, etc.) as `kUnknown`. This is incorrect (as we'll -// eventually want to make sure we inherit from the navigation's initiator in -// some cases), but safe, as `kUnknown` is treated the same as `kPublic`. -network::mojom::IPAddressSpace CalculateIPAddressSpace( - const net::IPAddress& ip, - const std::vector<network::mojom::ContentSecurityPolicyPtr>& csp_policies) { - // First, check whether the response forces itself into a public address space - // as per https://wicg.github.io/cors-rfc1918/#csp. - if (network::ShouldTreatAsPublicAddress(csp_policies)) - return network::mojom::IPAddressSpace::kPublic; - - // Otherwise, calculate the address space via the provided IP address. - return network::IPAddressToIPAddressSpace(ip); -} - // Convert the navigation type to the appropriate cross-document one. // // This is currently used when: @@ -4252,12 +4229,9 @@ DCHECK(!IsSameDocument()); DCHECK(!IsServedFromBackForwardCache()); - // See: https://wicg.github.io/cors-rfc1918/#address-space - const std::vector<network::mojom::ContentSecurityPolicyPtr> empty_csp; - client_security_state_->ip_address_space = CalculateIPAddressSpace( - GetSocketAddress().address(), - response_head_ ? response_head_->parsed_headers->content_security_policy - : empty_csp); + client_security_state_->ip_address_space = + network::CalculateClientAddressSpace(common_params_->url, + response_head_.get()); client_security_state_->is_web_secure_context = IsWebSecureContext();
diff --git a/content/browser/renderer_host/render_frame_host_impl_browsertest.cc b/content/browser/renderer_host/render_frame_host_impl_browsertest.cc index 54ddc4bd..4497eb0 100644 --- a/content/browser/renderer_host/render_frame_host_impl_browsertest.cc +++ b/content/browser/renderer_host/render_frame_host_impl_browsertest.cc
@@ -4165,9 +4165,6 @@ EXPECT_EQ("public", EvalJs(root_frame_host(), "document.addressSpace")); } -// TODO(https://crbug.com/1134601): `file:` URLs are all treated as `kUnknown` -// today. This is ~incorrect, but safe, as their web-facing behavior will be -// equivalent to "public". IN_PROC_BROWSER_TEST_F( RenderFrameHostImplBrowserTestWithInsecurePrivateNetworkRequestsBlocked, CommitsClientSecurityStateForFileURL) { @@ -4177,10 +4174,10 @@ root_frame_host()->last_committed_client_security_state(); ASSERT_FALSE(security_state.is_null()); EXPECT_TRUE(security_state->is_web_secure_context); - EXPECT_EQ(network::mojom::IPAddressSpace::kUnknown, + EXPECT_EQ(network::mojom::IPAddressSpace::kLocal, security_state->ip_address_space); - EXPECT_EQ("public", EvalJs(root_frame_host(), "document.addressSpace")); + EXPECT_EQ("local", EvalJs(root_frame_host(), "document.addressSpace")); } IN_PROC_BROWSER_TEST_F(
diff --git a/content/browser/renderer_host/render_frame_message_filter.cc b/content/browser/renderer_host/render_frame_message_filter.cc index 17729c56f..32f22511 100644 --- a/content/browser/renderer_host/render_frame_message_filter.cc +++ b/content/browser/renderer_host/render_frame_message_filter.cc
@@ -135,39 +135,6 @@ #if BUILDFLAG(ENABLE_PLUGINS) -class RenderFrameMessageFilter::OpenChannelToPpapiBrokerCallback - : public PpapiPluginProcessHost::BrokerClient { - public: - OpenChannelToPpapiBrokerCallback(RenderFrameMessageFilter* filter, - int routing_id) - : filter_(filter), routing_id_(routing_id) {} - - ~OpenChannelToPpapiBrokerCallback() override {} - - void GetPpapiChannelInfo(base::ProcessHandle* renderer_handle, - int* renderer_id) override { - // base::kNullProcessHandle indicates that the channel will be used by the - // browser itself. Make sure we never output that value here. - CHECK_NE(base::kNullProcessHandle, filter_->PeerHandle()); - *renderer_handle = filter_->PeerHandle(); - *renderer_id = filter_->render_process_id_; - } - - void OnPpapiChannelOpened(const IPC::ChannelHandle& channel_handle, - base::ProcessId plugin_pid, - int /* plugin_child_id */) override { - filter_->Send(new ViewMsg_PpapiBrokerChannelCreated(routing_id_, plugin_pid, - channel_handle)); - delete this; - } - - bool Incognito() override { return filter_->incognito_; } - - private: - scoped_refptr<RenderFrameMessageFilter> filter_; - int routing_id_; -}; - class RenderFrameMessageFilter::OpenChannelToPpapiPluginCallback : public RenderMessageCompletionCallback, public PpapiPluginProcessHost::PluginClient { @@ -236,8 +203,6 @@ OnDidCreateOutOfProcessPepperInstance) IPC_MESSAGE_HANDLER(FrameHostMsg_DidDeleteOutOfProcessPepperInstance, OnDidDeleteOutOfProcessPepperInstance) - IPC_MESSAGE_HANDLER(FrameHostMsg_OpenChannelToPpapiBroker, - OnOpenChannelToPpapiBroker) IPC_MESSAGE_HANDLER(FrameHostMsg_PluginInstanceThrottleStateChange, OnPluginInstanceThrottleStateChange) #endif // ENABLE_PLUGINS @@ -374,14 +339,6 @@ } } -void RenderFrameMessageFilter::OnOpenChannelToPpapiBroker( - int routing_id, - const base::FilePath& path) { - plugin_service_->OpenChannelToPpapiBroker( - render_process_id_, routing_id, path, - new OpenChannelToPpapiBrokerCallback(this, routing_id)); -} - void RenderFrameMessageFilter::OnPluginInstanceThrottleStateChange( int plugin_child_id, int32_t pp_instance,
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index 254093bd..7877f06 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -2343,6 +2343,9 @@ {base::MayBlock(), base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN, base::TaskPriority::USER_BLOCKING})); #if BUILDFLAG(USE_MINIKIN_HYPHENATION) +#if !defined(OS_ANDROID) + hyphenation::HyphenationImpl::RegisterGetDictionary(); +#endif registry->AddInterface( base::BindRepeating(&hyphenation::HyphenationImpl::Create), hyphenation::HyphenationImpl::GetTaskRunner());
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index f99748c1..0178c7b1 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc
@@ -1143,17 +1143,7 @@ return true; } -#if BUILDFLAG(ENABLE_PLUGINS) - bool handled = true; - IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(WebContentsImpl, message, render_view_host) - IPC_MESSAGE_HANDLER(ViewHostMsg_RequestPpapiBrokerPermission, - OnRequestPpapiBrokerPermission) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -#else return false; -#endif } bool WebContentsImpl::OnMessageReceived(RenderFrameHostImpl* render_frame_host, @@ -6176,40 +6166,6 @@ }); } -void WebContentsImpl::OnRequestPpapiBrokerPermission( - RenderViewHostImpl* source, - int ppb_broker_route_id, - const GURL& url, - const base::FilePath& plugin_path) { - OPTIONAL_TRACE_EVENT1("content", - "WebContentsImpl::OnRequestPpapiBrokerPermission", - "render_view_host", source); - base::OnceCallback<void(bool)> permission_result_callback = base::BindOnce( - &WebContentsImpl::SendPpapiBrokerPermissionResult, base::Unretained(this), - source->GetProcess()->GetID(), ppb_broker_route_id); - if (!delegate_) { - std::move(permission_result_callback).Run(false); - return; - } - - delegate_->RequestPpapiBrokerPermission( - this, url, plugin_path, std::move(permission_result_callback)); -} - -void WebContentsImpl::SendPpapiBrokerPermissionResult(int process_id, - int ppb_broker_route_id, - bool result) { - OPTIONAL_TRACE_EVENT2( - "content", "WebContentsImpl::SendPpapiBrokerPermissionResult", - "process_id", process_id, "ppb_broker_route_id", ppb_broker_route_id); - RenderProcessHost* rph = RenderProcessHost::FromID(process_id); - if (rph) { - // TODO(nick): Convert this from ViewMsg_ to a Ppapi msg, since it - // is not routed to a RenderView. - rph->Send( - new ViewMsg_PpapiBrokerPermissionResult(ppb_broker_route_id, result)); - } -} #endif // BUILDFLAG(ENABLE_PLUGINS) void WebContentsImpl::UpdateFaviconURL(
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h index 5cf2e9fc..2c4da68 100644 --- a/content/browser/web_contents/web_contents_impl.h +++ b/content/browser/web_contents/web_contents_impl.h
@@ -1512,16 +1512,6 @@ void OnPluginCrashed(RenderFrameHostImpl* source, const base::FilePath& plugin_path, base::ProcessId plugin_pid); - void OnRequestPpapiBrokerPermission(RenderViewHostImpl* source, - int ppb_broker_route_id, - const GURL& url, - const base::FilePath& plugin_path); - - // Callback function when requesting permission to access the PPAPI broker. - // |result| is true if permission was granted. - void SendPpapiBrokerPermissionResult(int process_id, - int ppb_broker_route_id, - bool result); #endif // BUILDFLAG(ENABLE_PLUGINS) void OnShowValidationMessage(RenderViewHostImpl* source, const gfx::Rect& anchor_in_root_view,
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc index 6cc4621..4bf20cb 100644 --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc
@@ -256,6 +256,8 @@ features::kEnableAccessibilityExposeDisplayNone}, {wf::EnableAccessibilityExposeHTMLElement, features::kEnableAccessibilityExposeHTMLElement}, + {wf::EnableAccessibilityExposeIgnoredNodes, + features::kEnableAccessibilityExposeIgnoredNodes}, {wf::EnableAllowSyncXHRInPageDismissal, blink::features::kAllowSyncXHRInPageDismissal}, {wf::EnableAutoplayIgnoresWebAudio, media::kAutoplayIgnoreWebAudio},
diff --git a/content/common/android/cpu_time_metrics.cc b/content/common/android/cpu_time_metrics.cc index 7dcdb0d3..5341d3e 100644 --- a/content/common/android/cpu_time_metrics.cc +++ b/content/common/android/cpu_time_metrics.cc
@@ -74,8 +74,6 @@ return ProcessTypeForUma::kGpu; if (process_type == switches::kPpapiPluginProcess) return ProcessTypeForUma::kPpapiPlugin; - if (process_type == switches::kPpapiBrokerProcess) - return ProcessTypeForUma::kPpapiBroker; NOTREACHED() << "Unexpected process type: " << process_type; return ProcessTypeForUma::kUnknown; }
diff --git a/content/common/widget_messages.h b/content/common/widget_messages.h index 44f948c..84a6dbf 100644 --- a/content/common/widget_messages.h +++ b/content/common/widget_messages.h
@@ -36,10 +36,6 @@ // Expects a Close_ACK message when finished. IPC_MESSAGE_ROUTED0(WidgetMsg_Close) -// Activate/deactivate the RenderWidget (i.e., set its controls' tint -// accordingly, etc.). -IPC_MESSAGE_ROUTED1(WidgetMsg_SetActive, bool /* active */) - // Reply to WidgetHostMsg_RequestSetBounds, WidgetHostMsg_ShowWidget, and // FrameHostMsg_ShowCreatedWindow, to inform the renderer that the browser has // processed the bounds-setting. The browser may have ignored the new bounds,
diff --git a/content/ppapi_plugin/BUILD.gn b/content/ppapi_plugin/BUILD.gn index 48c2a739..c6154b3 100644 --- a/content/ppapi_plugin/BUILD.gn +++ b/content/ppapi_plugin/BUILD.gn
@@ -31,7 +31,6 @@ "plugin_process_dispatcher.h", "ppapi_blink_platform_impl.cc", "ppapi_blink_platform_impl.h", - "ppapi_broker_main.cc", "ppapi_plugin_main.cc", "ppapi_thread.cc", "ppapi_thread.h",
diff --git a/content/ppapi_plugin/ppapi_broker_main.cc b/content/ppapi_plugin/ppapi_broker_main.cc deleted file mode 100644 index 860e6e6..0000000 --- a/content/ppapi_plugin/ppapi_broker_main.cc +++ /dev/null
@@ -1,41 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/run_loop.h" -#include "base/task/single_thread_task_executor.h" -#include "base/threading/platform_thread.h" -#include "build/build_config.h" -#include "content/child/child_process.h" -#include "content/common/content_constants_internal.h" -#include "content/common/content_switches_internal.h" -#include "content/ppapi_plugin/ppapi_thread.h" -#include "content/public/common/content_switches.h" -#include "content/public/common/main_function_params.h" - -namespace content { - -// Main function for starting the PPAPI broker process. -int PpapiBrokerMain(const MainFunctionParams& parameters) { - const base::CommandLine& command_line = parameters.command_line; - if (command_line.HasSwitch(switches::kPpapiStartupDialog)) - WaitForDebugger("PpapiBroker"); - - base::SingleThreadTaskExecutor main_thread_task_executor; - base::PlatformThread::SetName("CrPPAPIBrokerMain"); - base::trace_event::TraceLog::GetInstance()->set_process_name( - "PPAPI Broker Process"); - base::trace_event::TraceLog::GetInstance()->SetProcessSortIndex( - kTraceEventPpapiBrokerProcessSortIndex); - - ChildProcess ppapi_broker_process; - base::RunLoop run_loop; - ppapi_broker_process.set_main_thread(new PpapiThread( - run_loop.QuitClosure(), parameters.command_line, true /* Broker */)); - - run_loop.Run(); - DVLOG(1) << "PpapiBrokerMain exiting"; - return 0; -} - -} // namespace content
diff --git a/content/ppapi_plugin/ppapi_plugin_main.cc b/content/ppapi_plugin/ppapi_plugin_main.cc index 7a6d15d..4c9b9e4 100644 --- a/content/ppapi_plugin/ppapi_plugin_main.cc +++ b/content/ppapi_plugin/ppapi_plugin_main.cc
@@ -128,9 +128,8 @@ ChildProcess ppapi_process; base::RunLoop run_loop; - ppapi_process.set_main_thread(new PpapiThread(run_loop.QuitClosure(), - parameters.command_line, - false /* Not a broker */)); + ppapi_process.set_main_thread( + new PpapiThread(run_loop.QuitClosure(), parameters.command_line)); #if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MAC) // Startup tracing is usually enabled earlier, but if we forked from a zygote,
diff --git a/content/ppapi_plugin/ppapi_thread.cc b/content/ppapi_plugin/ppapi_thread.cc index a22d80e..ec7f7359 100644 --- a/content/ppapi_plugin/ppapi_thread.cc +++ b/content/ppapi_plugin/ppapi_thread.cc
@@ -86,32 +86,22 @@ namespace content { -typedef int32_t (*InitializeBrokerFunc) - (PP_ConnectInstance_Func* connect_instance_func); - PpapiThread::PpapiThread(base::RepeatingClosure quit_closure, - const base::CommandLine& command_line, - bool is_broker) + const base::CommandLine& command_line) : ChildThreadImpl(std::move(quit_closure)), - is_broker_(is_broker), plugin_globals_(GetIOTaskRunner()), - connect_instance_func_(nullptr), local_pp_module_(base::RandInt(0, std::numeric_limits<PP_Module>::max())), next_plugin_dispatcher_id_(1) { plugin_globals_.SetPluginProxyDelegate(this); - plugin_globals_.set_command_line( - command_line.GetSwitchValueASCII(switches::kPpapiFlashArgs)); blink_platform_impl_.reset(new PpapiBlinkPlatformImpl); blink::Platform::CreateMainThreadAndInitialize(blink_platform_impl_.get()); - if (!is_broker_) { - scoped_refptr<ppapi::proxy::PluginMessageFilter> plugin_filter( - new ppapi::proxy::PluginMessageFilter( - nullptr, plugin_globals_.resource_reply_thread_registrar())); - channel()->AddFilter(plugin_filter.get()); - plugin_globals_.RegisterResourceMessageFilters(plugin_filter.get()); - } + scoped_refptr<ppapi::proxy::PluginMessageFilter> plugin_filter( + new ppapi::proxy::PluginMessageFilter( + nullptr, plugin_globals_.resource_reply_thread_registrar())); + channel()->AddFilter(plugin_filter.get()); + plugin_globals_.RegisterResourceMessageFilters(plugin_filter.get()); // In single process, browser main loop set up the discardable memory // allocator. @@ -167,10 +157,6 @@ void PpapiThread::OnChannelConnected(int32_t peer_pid) { ChildThreadImpl::OnChannelConnected(peer_pid); -#if defined(OS_WIN) - if (is_broker_) - peer_handle_.Set(::OpenProcess(PROCESS_DUP_HANDLE, FALSE, peer_pid)); -#endif } base::SingleThreadTaskRunner* PpapiThread::GetIPCTaskRunner() { @@ -313,23 +299,18 @@ return; } - // The ShutdownModule/ShutdownBroker function is optional. + // The ShutdownModule function is optional. plugin_entry_points_.shutdown_module = - is_broker_ ? - reinterpret_cast<PP_ShutdownModule_Func>( - library.GetFunctionPointer("PPP_ShutdownBroker")) : reinterpret_cast<PP_ShutdownModule_Func>( library.GetFunctionPointer("PPP_ShutdownModule")); - if (!is_broker_) { - // Get the InitializeModule function (required for non-broker code). - plugin_entry_points_.initialize_module = - reinterpret_cast<PP_InitializeModule_Func>( - library.GetFunctionPointer("PPP_InitializeModule")); - if (!plugin_entry_points_.initialize_module) { - LOG(WARNING) << "No PPP_InitializeModule in plugin library"; - return; - } + // Get the InitializeModule function. + plugin_entry_points_.initialize_module = + reinterpret_cast<PP_InitializeModule_Func>( + library.GetFunctionPointer("PPP_InitializeModule")); + if (!plugin_entry_points_.initialize_module) { + LOG(WARNING) << "No PPP_InitializeModule in plugin library"; + return; } } @@ -372,32 +353,11 @@ } #endif - if (is_broker_) { - // Get the InitializeBroker function (required). - InitializeBrokerFunc init_broker = - reinterpret_cast<InitializeBrokerFunc>( - library.GetFunctionPointer("PPP_InitializeBroker")); - if (!init_broker) { - LOG(WARNING) << "No PPP_InitializeBroker in plugin library"; - return; - } - - int32_t init_error = init_broker(&connect_instance_func_); - if (init_error != PP_OK) { - LOG(WARNING) << "InitBroker failed with error " << init_error; - return; - } - if (!connect_instance_func_) { - LOG(WARNING) << "InitBroker did not provide PP_ConnectInstance_Func"; - return; - } - } else { - int32_t init_error = plugin_entry_points_.initialize_module( - local_pp_module_, &ppapi::proxy::PluginDispatcher::GetBrowserInterface); - if (init_error != PP_OK) { - LOG(WARNING) << "InitModule failed with error " << init_error; - return; - } + int32_t init_error = plugin_entry_points_.initialize_module( + local_pp_module_, &ppapi::proxy::PluginDispatcher::GetBrowserInterface); + if (init_error != PP_OK) { + LOG(WARNING) << "InitModule failed with error " << init_error; + return; } // Initialization succeeded, so keep the plugin DLL loaded. @@ -453,12 +413,10 @@ int renderer_child_id, bool incognito, IPC::ChannelHandle* handle) { - DCHECK(is_broker_ == (connect_instance_func_ != nullptr)); mojo::MessagePipe pipe; ppapi::proxy::ProxyChannel* dispatcher = nullptr; bool init_result = false; - DCHECK(!is_broker_); DCHECK_NE(base::kNullProcessId, renderer_pid); PluginProcessDispatcher* plugin_dispatcher = new PluginProcessDispatcher( plugin_entry_points_.get_interface, permissions_, incognito);
diff --git a/content/ppapi_plugin/ppapi_thread.h b/content/ppapi_plugin/ppapi_thread.h index 7f4404b3..6e34ee67 100644 --- a/content/ppapi_plugin/ppapi_thread.h +++ b/content/ppapi_plugin/ppapi_thread.h
@@ -19,7 +19,6 @@ #include "content/child/child_thread_impl.h" #include "content/public/common/pepper_plugin_info.h" #include "ppapi/c/pp_module.h" -#include "ppapi/c/trusted/ppp_broker.h" #include "ppapi/proxy/connection.h" #include "ppapi/proxy/plugin_dispatcher.h" #include "ppapi/proxy/plugin_globals.h" @@ -51,8 +50,7 @@ public ppapi::proxy::PluginProxyDelegate { public: PpapiThread(base::RepeatingClosure quit_closure, - const base::CommandLine& command_line, - bool is_broker); + const base::CommandLine& command_line); ~PpapiThread() override; void Shutdown() override; @@ -113,9 +111,6 @@ // Sets up the name of the plugin for logging using the given path. void SavePluginName(const base::FilePath& path); - // True if running in a broker process rather than a normal plugin process. - bool is_broker_; - base::ScopedNativeLibrary library_; ppapi::PpapiPermissions permissions_; @@ -126,10 +121,6 @@ // Storage for plugin entry points. PepperPluginInfo::EntryPoints plugin_entry_points_; - // Callback to call when a new instance connects to the broker. - // Used only when is_broker_. - PP_ConnectInstance_Func connect_instance_func_; - // Local concept of the module ID. Some functions take this. It's necessary // for the in-process PPAPI to handle this properly, but for proxied it's // unnecessary. The proxy talking to multiple renderers means that each @@ -148,11 +139,6 @@ // The BlinkPlatformImpl implementation. std::unique_ptr<PpapiBlinkPlatformImpl> blink_platform_impl_; -#if defined(OS_WIN) - // Caches the handle to the peer process if this is a broker. - base::win::ScopedHandle peer_handle_; -#endif - std::unique_ptr<discardable_memory::ClientDiscardableSharedMemoryManager> discardable_shared_memory_manager_;
diff --git a/content/public/browser/accessibility_tree_formatter.h b/content/public/browser/accessibility_tree_formatter.h index 3b53879..8ec983d 100644 --- a/content/public/browser/accessibility_tree_formatter.h +++ b/content/public/browser/accessibility_tree_formatter.h
@@ -74,9 +74,6 @@ }; static std::vector<TestPass> GetTestPasses(); - // Gets the test pass at the given index. - static TestPass GetTestPass(size_t index); - virtual void AddDefaultFilters( std::vector<AXPropertyFilter>* property_filters) = 0;
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc index c5620c9a..d7ade410 100644 --- a/content/public/browser/content_browser_client.cc +++ b/content/public/browser/content_browser_client.cc
@@ -1151,4 +1151,7 @@ } #endif // defined(OS_MAC) +void ContentBrowserClient::GetHyphenationDictionary( + base::OnceCallback<void(const base::FilePath&)>) {} + } // namespace content
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h index 4f9381f..e222a02 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h
@@ -1909,6 +1909,9 @@ sandbox::policy::SandboxType sandbox_type, sandbox::SeatbeltExecClient* client); #endif // defined(OS_MAC) + + virtual void GetHyphenationDictionary( + base::OnceCallback<void(const base::FilePath&)>); }; } // namespace content
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc index 7922e6a..830ae73 100644 --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc
@@ -409,12 +409,6 @@ const base::Feature kNeverSlowMode{"NeverSlowMode", base::FEATURE_DISABLED_BY_DEFAULT}; -// A kill switch for the change for more code sharing between usual prefetch -// and no-state prefetch. -// TODO(yhirano): Remove this if M86 stable looks good. -const base::Feature kNoStatePrefetchUsingPrefetchLoader{ - "NoStatePrefetchUsingPrefetchLoader", base::FEATURE_ENABLED_BY_DEFAULT}; - // Kill switch for Web Notification content images. const base::Feature kNotificationContentImage{"NotificationContentImage", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h index 94acb9c..1f06a82 100644 --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h
@@ -92,7 +92,6 @@ CONTENT_EXPORT extern const base::Feature kNetworkQualityEstimatorWebHoldback; CONTENT_EXPORT extern const base::Feature kNetworkServiceInProcess; CONTENT_EXPORT extern const base::Feature kNeverSlowMode; -CONTENT_EXPORT extern const base::Feature kNoStatePrefetchUsingPrefetchLoader; CONTENT_EXPORT extern const base::Feature kNotificationContentImage; CONTENT_EXPORT extern const base::Feature kNotificationTriggers; CONTENT_EXPORT extern const base::Feature kOriginIsolationHeader;
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc index 8a97806..2e851ca 100644 --- a/content/public/common/content_switches.cc +++ b/content/public/common/content_switches.cc
@@ -584,12 +584,6 @@ const char kOverridePluginPowerSaverForTesting[] = "override-plugin-power-saver-for-testing"; -// Argument to the process type that indicates a PPAPI broker process type. -const char kPpapiBrokerProcess[] = "ppapi-broker"; - -// "Command-line" arguments for the PPAPI Flash; used for debugging options. -const char kPpapiFlashArgs[] = "ppapi-flash-args"; - // Runs PPAPI (Pepper) plugins in-process. const char kPpapiInProcess[] = "ppapi-in-process";
diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h index 7c168275..c9368ea87 100644 --- a/content/public/common/content_switches.h +++ b/content/public/common/content_switches.h
@@ -172,8 +172,6 @@ extern const char kNoV8UntrustedCodeMitigations[]; CONTENT_EXPORT extern const char kNumRasterThreads[]; CONTENT_EXPORT extern const char kOverridePluginPowerSaverForTesting[]; -CONTENT_EXPORT extern const char kPpapiBrokerProcess[]; -CONTENT_EXPORT extern const char kPpapiFlashArgs[]; CONTENT_EXPORT extern const char kPpapiInProcess[]; extern const char kPpapiPluginLauncher[]; CONTENT_EXPORT extern const char kPpapiPluginProcess[];
diff --git a/content/public/test/render_view_test.cc b/content/public/test/render_view_test.cc index 5bb79dd..34e53d4 100644 --- a/content/public/test/render_view_test.cc +++ b/content/public/test/render_view_test.cc
@@ -130,7 +130,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -149,7 +148,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper>, blink::WebURLLoaderClient* client) override {
diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn index 6b2e25e..2e64b66 100644 --- a/content/renderer/BUILD.gn +++ b/content/renderer/BUILD.gn
@@ -101,8 +101,6 @@ "loader/url_loader_client_impl.h", "loader/web_url_loader_impl.cc", "loader/web_url_loader_impl.h", - "loader/web_url_request_util.cc", - "loader/web_url_request_util.h", "loader/web_worker_fetch_context_impl.cc", "loader/web_worker_fetch_context_impl.h", "media/audio_decoder.cc", @@ -468,8 +466,6 @@ "pepper/pepper_audio_input_host.h", "pepper/pepper_audio_output_host.cc", "pepper/pepper_audio_output_host.h", - "pepper/pepper_broker.cc", - "pepper/pepper_broker.h", "pepper/pepper_browser_connection.cc", "pepper/pepper_browser_connection.h", "pepper/pepper_camera_device_host.cc", @@ -534,8 +530,6 @@ "pepper/ppapi_preferences_builder.h", "pepper/ppb_audio_impl.cc", "pepper/ppb_audio_impl.h", - "pepper/ppb_broker_impl.cc", - "pepper/ppb_broker_impl.h", "pepper/ppb_buffer_impl.cc", "pepper/ppb_buffer_impl.h", "pepper/ppb_graphics_3d_impl.cc",
diff --git a/content/renderer/history_serialization.cc b/content/renderer/history_serialization.cc index f4b0d865..5f02c31 100644 --- a/content/renderer/history_serialization.cc +++ b/content/renderer/history_serialization.cc
@@ -9,12 +9,12 @@ #include "base/strings/nullable_string16.h" #include "content/renderer/history_entry.h" -#include "content/renderer/loader/web_url_request_util.h" #include "third_party/blink/public/common/page_state/page_state.h" #include "third_party/blink/public/common/page_state/page_state_serialization.h" #include "third_party/blink/public/platform/web_data.h" #include "third_party/blink/public/platform/web_http_body.h" #include "third_party/blink/public/platform/web_string.h" +#include "third_party/blink/public/platform/web_url_request_util.h" #include "third_party/blink/public/platform/web_vector.h" #include "third_party/blink/public/web/web_history_item.h" #include "third_party/blink/public/web/web_serialized_script_value.h" @@ -60,7 +60,8 @@ WebString::ToOptionalString16(item.HttpContentType()); const WebHTTPBody& http_body = item.HttpBody(); if (!http_body.IsNull()) { - state->http_body.request_body = GetRequestBodyForWebHTTPBody(http_body); + state->http_body.request_body = + blink::GetRequestBodyForWebHTTPBody(http_body); state->http_body.contains_passwords = http_body.ContainsPasswordData(); } @@ -109,7 +110,7 @@ WebString::FromUTF16(state.http_body.http_content_type)); if (state.http_body.request_body != nullptr) { item.SetHttpBody( - GetWebHTTPBodyForRequestBody(*state.http_body.request_body)); + blink::GetWebHTTPBodyForRequestBody(*state.http_body.request_body)); } item.SetScrollAnchorData({WebString::FromUTF16(state.scroll_anchor_selector),
diff --git a/content/renderer/loader/child_url_loader_factory_bundle.cc b/content/renderer/loader/child_url_loader_factory_bundle.cc index 3b44ea1..772228c4 100644 --- a/content/renderer/loader/child_url_loader_factory_bundle.cc +++ b/content/renderer/loader/child_url_loader_factory_bundle.cc
@@ -303,9 +303,7 @@ std::move(client), traffic_annotation); return; } - if (base::FeatureList::IsEnabled( - features::kNoStatePrefetchUsingPrefetchLoader) && - (request.load_flags & net::LOAD_PREFETCH) && prefetch_loader_factory_) { + if ((request.load_flags & net::LOAD_PREFETCH) && prefetch_loader_factory_) { // This is no-state prefetch (see // WebURLRequest::GetLoadFlagsForWebUrlRequest). prefetch_loader_factory_->CreateLoaderAndStart(
diff --git a/content/renderer/loader/web_url_loader_impl.cc b/content/renderer/loader/web_url_loader_impl.cc index a73ea8cc..9b48cd38 100644 --- a/content/renderer/loader/web_url_loader_impl.cc +++ b/content/renderer/loader/web_url_loader_impl.cc
@@ -39,7 +39,6 @@ #include "content/renderer/loader/request_extra_data.h" #include "content/renderer/loader/resource_dispatcher.h" #include "content/renderer/loader/sync_load_response.h" -#include "content/renderer/loader/web_url_request_util.h" #include "content/renderer/variations_render_thread_observer.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "net/base/filename_util.h" @@ -73,6 +72,7 @@ #include "third_party/blink/public/common/mime_util/mime_util.h" #include "third_party/blink/public/common/security/security_style.h" #include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h" +#include "third_party/blink/public/mojom/blob/blob_registry.mojom.h" #include "third_party/blink/public/platform/file_path_conversion.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/resource_load_info_notifier_wrapper.h" @@ -381,7 +381,6 @@ void Start(std::unique_ptr<network::ResourceRequest> request, scoped_refptr<blink::WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -478,74 +477,6 @@ DISALLOW_COPY_AND_ASSIGN(RequestPeerImpl); }; -// A sink peer that doesn't forward the data. -class WebURLLoaderImpl::SinkPeer : public RequestPeer { - public: - explicit SinkPeer(Context* context) - : context_(context), - body_watcher_(FROM_HERE, - mojo::SimpleWatcher::ArmingPolicy::AUTOMATIC, - context->task_runner()) {} - - // RequestPeer implementation: - void OnUploadProgress(uint64_t position, uint64_t size) override {} - bool OnReceivedRedirect(const net::RedirectInfo& redirect_info, - network::mojom::URLResponseHeadPtr head, - std::vector<std::string>*) override { - return true; - } - void OnReceivedResponse(network::mojom::URLResponseHeadPtr head) override {} - void OnStartLoadingResponseBody( - mojo::ScopedDataPipeConsumerHandle body) override { - body_handle_ = std::move(body); - body_watcher_.Watch( - body_handle_.get(), - MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, - MOJO_TRIGGER_CONDITION_SIGNALS_SATISFIED, - base::BindRepeating(&SinkPeer::OnBodyAvailable, - base::Unretained(this))); - } - void OnTransferSizeUpdated(int transfer_size_diff) override {} - void OnReceivedCachedMetadata(mojo_base::BigBuffer) override {} - void OnCompletedRequest( - const network::URLLoaderCompletionStatus& status) override { - body_handle_.reset(); - body_watcher_.Cancel(); - context_->resource_dispatcher()->Cancel(context_->request_id(), - context_->task_runner()); - } - scoped_refptr<base::TaskRunner> GetTaskRunner() override { - return context_->task_runner(); - } - - private: - void OnBodyAvailable(MojoResult, const mojo::HandleSignalsState&) { - while (true) { - const void* buffer = nullptr; - uint32_t available = 0; - MojoResult rv = body_handle_->BeginReadData(&buffer, &available, - MOJO_READ_DATA_FLAG_NONE); - if (rv == MOJO_RESULT_SHOULD_WAIT) { - return; - } - if (rv != MOJO_RESULT_OK) { - break; - } - rv = body_handle_->EndReadData(available); - if (rv != MOJO_RESULT_OK) { - break; - } - } - body_handle_.reset(); - body_watcher_.Cancel(); - } - - scoped_refptr<Context> context_; - mojo::ScopedDataPipeConsumerHandle body_handle_; - mojo::SimpleWatcher body_watcher_; - DISALLOW_COPY_AND_ASSIGN(SinkPeer); -}; - // WebURLLoaderImpl::Context -------------------------------------------------- // static @@ -609,7 +540,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<blink::WebURLRequest::ExtraData> passed_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -655,14 +585,7 @@ } extra_data->CopyToResourceRequest(request.get()); - std::unique_ptr<RequestPeer> peer; - if (download_to_network_cache_only && - !base::FeatureList::IsEnabled( - features::kNoStatePrefetchUsingPrefetchLoader)) { - peer = std::make_unique<SinkPeer>(this); - } else { - peer = std::make_unique<WebURLLoaderImpl::RequestPeerImpl>(this); - } + auto peer = std::make_unique<WebURLLoaderImpl::RequestPeerImpl>(this); if (resource_type == blink::mojom::ResourceType::kPrefetch) { request->corb_detachable = true; @@ -1079,7 +1002,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<blink::WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -1100,8 +1022,7 @@ const bool report_raw_headers = request->report_raw_headers; context_->Start(std::move(request), std::move(request_extra_data), - requestor_id, download_to_network_cache_only, - pass_response_pipe_to_client, no_mime_sniffing, + requestor_id, pass_response_pipe_to_client, no_mime_sniffing, timeout_interval, &sync_load_response, std::move(resource_load_info_notifier_wrapper)); @@ -1148,7 +1069,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<blink::WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper> resource_load_info_notifier_wrapper, @@ -1159,7 +1079,7 @@ context_->set_client(client); context_->Start(std::move(request), std::move(request_extra_data), - requestor_id, download_to_network_cache_only, + requestor_id, /*pass_response_pipe_to_client=*/false, no_mime_sniffing, base::TimeDelta(), nullptr, std::move(resource_load_info_notifier_wrapper));
diff --git a/content/renderer/loader/web_url_loader_impl.h b/content/renderer/loader/web_url_loader_impl.h index 050ce7d..6d5c806 100644 --- a/content/renderer/loader/web_url_loader_impl.h +++ b/content/renderer/loader/web_url_loader_impl.h
@@ -74,7 +74,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<blink::WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -91,7 +90,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<blink::WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper> resource_load_info_notifier_wrapper, @@ -104,7 +102,6 @@ private: class Context; class RequestPeerImpl; - class SinkPeer; void Cancel();
diff --git a/content/renderer/loader/web_url_loader_impl_unittest.cc b/content/renderer/loader/web_url_loader_impl_unittest.cc index c9dfd2de..15828204 100644 --- a/content/renderer/loader/web_url_loader_impl_unittest.cc +++ b/content/renderer/loader/web_url_loader_impl_unittest.cc
@@ -308,7 +308,7 @@ request->priority = net::IDLE; client()->loader()->LoadAsynchronously( std::move(request), /*extra_data=*/nullptr, /*requestor_id=*/0, - /*download_to_network_cache_only=*/false, /*no_mime_sniffing=*/false, + /*no_mime_sniffing=*/false, std::make_unique<blink::ResourceLoadInfoNotifierWrapper>( /*resource_load_info_notifier=*/nullptr), client()); @@ -668,7 +668,6 @@ client()->loader()->LoadSynchronously( std::move(request), /*extra_data=*/nullptr, /*requestor_id=*/0, - /*download_to_network_cache_only=*/false, /*pass_response_pipe_to_client=*/false, /*no_mime_sniffing=*/false, base::TimeDelta(), nullptr, response, error, data, encoded_data_length, encoded_body_length, downloaded_blob,
diff --git a/content/renderer/loader/web_url_request_util.cc b/content/renderer/loader/web_url_request_util.cc deleted file mode 100644 index 3ed6d44b..0000000 --- a/content/renderer/loader/web_url_request_util.cc +++ /dev/null
@@ -1,257 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/renderer/loader/web_url_request_util.h" - -#include <stddef.h> -#include <stdint.h> - -#include <limits> - -#include "base/check.h" -#include "base/notreached.h" -#include "base/strings/string_util.h" -#include "base/task/post_task.h" -#include "content/child/child_thread_impl.h" -#include "content/public/common/service_names.mojom.h" -#include "content/renderer/loader/request_extra_data.h" -#include "mojo/public/cpp/bindings/pending_remote.h" -#include "mojo/public/cpp/bindings/remote.h" -#include "net/base/load_flags.h" -#include "net/base/net_errors.h" -#include "net/http/http_util.h" -#include "services/network/public/cpp/features.h" -#include "services/network/public/mojom/data_pipe_getter.mojom.h" -#include "services/service_manager/public/cpp/interface_provider.h" -#include "third_party/blink/public/mojom/blob/blob_registry.mojom.h" -#include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom.h" -#include "third_party/blink/public/platform/file_path_conversion.h" -#include "third_party/blink/public/platform/platform.h" -#include "third_party/blink/public/platform/web_data.h" -#include "third_party/blink/public/platform/web_http_body.h" -#include "third_party/blink/public/platform/web_http_header_visitor.h" -#include "third_party/blink/public/platform/web_mixed_content.h" -#include "third_party/blink/public/platform/web_string.h" - -using blink::mojom::FetchCacheMode; -using blink::WebData; -using blink::WebHTTPBody; -using blink::WebString; -using blink::WebURLRequest; - -namespace content { - -namespace { - -std::string TrimLWSAndCRLF(const base::StringPiece& input) { - base::StringPiece string = net::HttpUtil::TrimLWS(input); - const char* begin = string.data(); - const char* end = string.data() + string.size(); - while (begin < end && (end[-1] == '\r' || end[-1] == '\n')) - --end; - return std::string(base::StringPiece(begin, end - begin)); -} - -class HttpRequestHeadersVisitor : public blink::WebHTTPHeaderVisitor { - public: - explicit HttpRequestHeadersVisitor(net::HttpRequestHeaders* headers) - : headers_(headers) {} - ~HttpRequestHeadersVisitor() override = default; - - void VisitHeader(const WebString& name, const WebString& value) override { - std::string name_latin1 = name.Latin1(); - std::string value_latin1 = TrimLWSAndCRLF(value.Latin1()); - - // Skip over referrer headers found in the header map because we already - // pulled it out as a separate parameter. - if (base::LowerCaseEqualsASCII(name_latin1, "referer")) - return; - - DCHECK(net::HttpUtil::IsValidHeaderName(name_latin1)) << name_latin1; - DCHECK(net::HttpUtil::IsValidHeaderValue(value_latin1)) << value_latin1; - headers_->SetHeader(name_latin1, value_latin1); - } - - private: - net::HttpRequestHeaders* const headers_; -}; - -class HeaderFlattener : public blink::WebHTTPHeaderVisitor { - public: - HeaderFlattener() {} - ~HeaderFlattener() override {} - - void VisitHeader(const WebString& name, const WebString& value) override { - // Headers are latin1. - const std::string& name_latin1 = name.Latin1(); - const std::string& value_latin1 = value.Latin1(); - - // Skip over referrer headers found in the header map because we already - // pulled it out as a separate parameter. - if (base::LowerCaseEqualsASCII(name_latin1, "referer")) - return; - - if (!buffer_.empty()) - buffer_.append("\r\n"); - buffer_.append(name_latin1 + ": " + value_latin1); - } - - const std::string& GetBuffer() const { - return buffer_; - } - - private: - std::string buffer_; -}; - -} // namespace - -std::string GetWebURLRequestHeadersAsString( - const blink::WebURLRequest& request) { - HeaderFlattener flattener; - request.VisitHttpHeaderFields(&flattener); - return flattener.GetBuffer(); -} - -WebHTTPBody GetWebHTTPBodyForRequestBody( - const network::ResourceRequestBody& input) { - WebHTTPBody http_body; - http_body.Initialize(); - http_body.SetIdentifier(input.identifier()); - http_body.SetContainsPasswordData(input.contains_sensitive_info()); - for (auto& element : *input.elements()) { - switch (element.type()) { - case network::mojom::DataElementType::kBytes: - http_body.AppendData(WebData(element.bytes(), element.length())); - break; - case network::mojom::DataElementType::kFile: { - base::Optional<base::Time> modification_time; - if (!element.expected_modification_time().is_null()) - modification_time = element.expected_modification_time(); - http_body.AppendFileRange( - blink::FilePathToWebString(element.path()), element.offset(), - (element.length() != std::numeric_limits<uint64_t>::max()) - ? element.length() - : -1, - modification_time); - break; - } - case network::mojom::DataElementType::kDataPipe: { - http_body.AppendDataPipe(element.CloneDataPipeGetter()); - break; - } - case network::mojom::DataElementType::kUnknown: - case network::mojom::DataElementType::kChunkedDataPipe: - case network::mojom::DataElementType::kReadOnceStream: - NOTREACHED(); - break; - } - } - return http_body; -} - -scoped_refptr<network::ResourceRequestBody> GetRequestBodyForWebURLRequest( - const WebURLRequest& request) { - scoped_refptr<network::ResourceRequestBody> request_body; - - if (request.HttpBody().IsNull()) { - return request_body; - } - - const std::string& method = request.HttpMethod().Latin1(); - // GET and HEAD requests shouldn't have http bodies. - DCHECK(method != "GET" && method != "HEAD"); - - return GetRequestBodyForWebHTTPBody(request.HttpBody()); -} - -scoped_refptr<network::ResourceRequestBody> GetRequestBodyForWebHTTPBody( - const blink::WebHTTPBody& httpBody) { - scoped_refptr<network::ResourceRequestBody> request_body = - new network::ResourceRequestBody(); - size_t i = 0; - WebHTTPBody::Element element; - while (httpBody.ElementAt(i++, element)) { - switch (element.type) { - case blink::HTTPBodyElementType::kTypeData: - request_body->AppendBytes(element.data.Copy().ReleaseVector()); - break; - case blink::HTTPBodyElementType::kTypeFile: - if (element.file_length == -1) { - request_body->AppendFileRange( - blink::WebStringToFilePath(element.file_path), 0, - std::numeric_limits<uint64_t>::max(), - element.modification_time.value_or(base::Time())); - } else { - request_body->AppendFileRange( - blink::WebStringToFilePath(element.file_path), - static_cast<uint64_t>(element.file_start), - static_cast<uint64_t>(element.file_length), - element.modification_time.value_or(base::Time())); - } - break; - case blink::HTTPBodyElementType::kTypeBlob: { - DCHECK(element.optional_blob); - mojo::Remote<blink::mojom::Blob> blob_remote( - mojo::PendingRemote<blink::mojom::Blob>( - std::move(element.optional_blob))); - - mojo::PendingRemote<network::mojom::DataPipeGetter> - data_pipe_getter_remote; - blob_remote->AsDataPipeGetter( - data_pipe_getter_remote.InitWithNewPipeAndPassReceiver()); - - request_body->AppendDataPipe(std::move(data_pipe_getter_remote)); - break; - } - case blink::HTTPBodyElementType::kTypeDataPipe: { - // Convert the raw message pipe to - // mojo::Remote<network::mojom::DataPipeGetter> data_pipe_getter. - mojo::Remote<network::mojom::DataPipeGetter> data_pipe_getter( - mojo::PendingRemote<network::mojom::DataPipeGetter>( - std::move(element.data_pipe_getter))); - - // Set the cloned DataPipeGetter to the output |request_body|, while - // keeping the original message pipe back in the input |httpBody|. This - // way the consumer of the |httpBody| can retrieve the data pipe - // multiple times (e.g. during redirects) until the request is finished. - mojo::PendingRemote<network::mojom::DataPipeGetter> cloned_getter; - data_pipe_getter->Clone(cloned_getter.InitWithNewPipeAndPassReceiver()); - request_body->AppendDataPipe(std::move(cloned_getter)); - element.data_pipe_getter = data_pipe_getter.Unbind(); - break; - } - } - } - request_body->set_identifier(httpBody.Identifier()); - request_body->set_contains_sensitive_info(httpBody.ContainsPasswordData()); - return request_body; -} - -#define STATIC_ASSERT_ENUM(a, b) \ - static_assert(static_cast<int>(a) == static_cast<int>(b), \ - "mismatching enums: " #a) - -blink::mojom::RequestContextType GetRequestContextTypeForWebURLRequest( - const WebURLRequest& request) { - return static_cast<blink::mojom::RequestContextType>( - request.GetRequestContext()); -} - -network::mojom::RequestDestination GetRequestDestinationForWebURLRequest( - const WebURLRequest& request) { - return static_cast<network::mojom::RequestDestination>( - request.GetRequestDestination()); -} - -blink::WebMixedContentContextType GetMixedContentContextTypeForWebURLRequest( - const WebURLRequest& request) { - return blink::WebMixedContent::ContextTypeFromRequestContext( - request.GetRequestContext(), - blink::WebMixedContent::CheckModeForPlugin::kLax); -} - -#undef STATIC_ASSERT_ENUM - -} // namespace content
diff --git a/content/renderer/loader/web_url_request_util.h b/content/renderer/loader/web_url_request_util.h deleted file mode 100644 index 025f45e5..0000000 --- a/content/renderer/loader/web_url_request_util.h +++ /dev/null
@@ -1,53 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_RENDERER_LOADER_WEB_URL_REQUEST_UTIL_H_ -#define CONTENT_RENDERER_LOADER_WEB_URL_REQUEST_UTIL_H_ - -#include <string> - -#include "content/common/content_export.h" -#include "net/http/http_request_headers.h" -#include "services/network/public/cpp/resource_request_body.h" -#include "third_party/blink/public/mojom/blob/blob_registry.mojom.h" -#include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-forward.h" -#include "third_party/blink/public/mojom/loader/resource_load_info.mojom-shared.h" -#include "third_party/blink/public/platform/web_mixed_content_context_type.h" -#include "third_party/blink/public/platform/web_url_request.h" - -namespace blink { -class WebHTTPBody; -} - -namespace content { - -std::string GetWebURLRequestHeadersAsString( - const blink::WebURLRequest& request); - -// Takes a ResourceRequestBody and converts into WebHTTPBody. -blink::WebHTTPBody GetWebHTTPBodyForRequestBody( - const network::ResourceRequestBody& input); - -// Takes a WebHTTPBody and converts into a ResourceRequestBody. -scoped_refptr<network::ResourceRequestBody> GetRequestBodyForWebHTTPBody( - const blink::WebHTTPBody& httpBody); - -// Takes a WebURLRequest and sets the appropriate information -// in a ResourceRequestBody structure. Returns an empty scoped_refptr -// if the request body is not present. -scoped_refptr<network::ResourceRequestBody> GetRequestBodyForWebURLRequest( - const blink::WebURLRequest& request); - -// Helper functions to convert enums from the blink type to the content -// type. -blink::mojom::RequestContextType GetRequestContextTypeForWebURLRequest( - const blink::WebURLRequest& request); -network::mojom::RequestDestination GetRequestDestinationForWebURLRequest( - const blink::WebURLRequest& request); -blink::WebMixedContentContextType GetMixedContentContextTypeForWebURLRequest( - const blink::WebURLRequest& request); - -} // namespace content - -#endif // CONTENT_RENDERER_LOADER_WEB_URL_REQUEST_UTIL_H_
diff --git a/content/renderer/loader/web_worker_fetch_context_impl.cc b/content/renderer/loader/web_worker_fetch_context_impl.cc index 44eda3a4..7538c5ab 100644 --- a/content/renderer/loader/web_worker_fetch_context_impl.cc +++ b/content/renderer/loader/web_worker_fetch_context_impl.cc
@@ -24,7 +24,6 @@ #include "content/renderer/loader/request_extra_data.h" #include "content/renderer/loader/resource_dispatcher.h" #include "content/renderer/loader/web_url_loader_impl.h" -#include "content/renderer/loader/web_url_request_util.h" #include "content/renderer/service_worker/controller_service_worker_connector.h" #include "content/renderer/service_worker/service_worker_provider_context.h" #include "content/renderer/service_worker/service_worker_subresource_loader.h"
diff --git a/content/renderer/pepper/host_globals.cc b/content/renderer/pepper/host_globals.cc index dd3e6db..29e7764 100644 --- a/content/renderer/pepper/host_globals.cc +++ b/content/renderer/pepper/host_globals.cc
@@ -133,11 +133,6 @@ return inst->module()->pp_module(); } -std::string HostGlobals::GetCmdLine() { - return base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( - switches::kPpapiFlashArgs); -} - void HostGlobals::PreCacheFontForFlash(const void* logfontw) { // Not implemented in-process. }
diff --git a/content/renderer/pepper/host_globals.h b/content/renderer/pepper/host_globals.h index afd803aa..057070c 100644 --- a/content/renderer/pepper/host_globals.h +++ b/content/renderer/pepper/host_globals.h
@@ -40,7 +40,6 @@ ppapi::thunk::ResourceCreationAPI* GetResourceCreationAPI( PP_Instance instance) override; PP_Module GetModuleForInstance(PP_Instance instance) override; - std::string GetCmdLine() override; void PreCacheFontForFlash(const void* logfontw) override; void LogWithSource(PP_Instance instance, PP_LogLevel level,
diff --git a/content/renderer/pepper/pepper_broker.cc b/content/renderer/pepper/pepper_broker.cc deleted file mode 100644 index 4d75b47..0000000 --- a/content/renderer/pepper/pepper_broker.cc +++ /dev/null
@@ -1,254 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/renderer/pepper/pepper_broker.h" - -#include "build/build_config.h" -#include "content/renderer/pepper/pepper_proxy_channel_delegate_impl.h" -#include "content/renderer/pepper/plugin_module.h" -#include "content/renderer/pepper/ppb_broker_impl.h" -#include "content/renderer/pepper/renderer_restrict_dispatch_group.h" -#include "ipc/ipc_channel_handle.h" -#include "ppapi/proxy/broker_dispatcher.h" -#include "ppapi/proxy/ppapi_messages.h" -#include "ppapi/shared_impl/platform_file.h" - -#if defined(OS_POSIX) -#include "base/posix/eintr_wrapper.h" -#endif - -#if defined(OS_WIN) -#include <windows.h> -#endif - -namespace content { - -namespace { - -base::SyncSocket::Handle DuplicateHandle(base::SyncSocket::Handle handle) { - base::SyncSocket::Handle out_handle = base::SyncSocket::kInvalidHandle; -#if defined(OS_WIN) - DWORD options = DUPLICATE_SAME_ACCESS; - if (!::DuplicateHandle(::GetCurrentProcess(), - handle, - ::GetCurrentProcess(), - &out_handle, - 0, - FALSE, - options)) { - out_handle = base::SyncSocket::kInvalidHandle; - } -#elif defined(OS_POSIX) - // If asked to close the source, we can simply re-use the source fd instead of - // dup()ing and close()ing. - out_handle = HANDLE_EINTR(::dup(handle)); -#else -#error Not implemented. -#endif - return out_handle; -} - -} // namespace - -PepperBrokerDispatcherWrapper::PepperBrokerDispatcherWrapper() {} - -PepperBrokerDispatcherWrapper::~PepperBrokerDispatcherWrapper() {} - -bool PepperBrokerDispatcherWrapper::Init( - base::ProcessId broker_pid, - const IPC::ChannelHandle& channel_handle) { - if (!channel_handle.is_mojo_channel_handle()) - return false; - - dispatcher_delegate_.reset(new PepperProxyChannelDelegateImpl); - dispatcher_.reset(new ppapi::proxy::BrokerHostDispatcher()); - - if (!dispatcher_->InitBrokerWithChannel(dispatcher_delegate_.get(), - broker_pid, - channel_handle, - true)) { // Client. - dispatcher_.reset(); - dispatcher_delegate_.reset(); - return false; - } - dispatcher_->channel()->SetRestrictDispatchChannelGroup( - kRendererRestrictDispatchGroup_Pepper); - return true; -} - -// Does not take ownership of the local pipe. -int32_t PepperBrokerDispatcherWrapper::SendHandleToBroker( - PP_Instance instance, - base::SyncSocket::Handle handle) { - IPC::PlatformFileForTransit foreign_socket_handle = - dispatcher_->ShareHandleWithRemote(handle, false); - if (foreign_socket_handle == IPC::InvalidPlatformFileForTransit()) - return PP_ERROR_FAILED; - - int32_t result = PP_ERROR_FAILED; - if (!dispatcher_->Send(new PpapiMsg_ConnectToPlugin( - instance, foreign_socket_handle, &result))) { - // The plugin did not receive the handle, so it must be closed. - // The easiest way to clean it up is to just put it in an object - // and then close it. This failure case is not performance critical. - // The handle could still leak if Send succeeded but the IPC later failed. - base::SyncSocket temp_socket( - IPC::PlatformFileForTransitToPlatformFile(foreign_socket_handle)); - return PP_ERROR_FAILED; - } - - return result; -} - -PepperBroker::PepperBroker(PluginModule* plugin_module) - : plugin_module_(plugin_module) { - DCHECK(plugin_module_); - - plugin_module_->SetBroker(this); -} - -PepperBroker::~PepperBroker() { - ReportFailureToClients(PP_ERROR_ABORTED); - plugin_module_->SetBroker(nullptr); - plugin_module_ = nullptr; -} - -// If the channel is not ready, queue the connection. -void PepperBroker::AddPendingConnect(PPB_Broker_Impl* client) { - DCHECK(pending_connects_.find(client) == pending_connects_.end()) - << "Connect was already called for this client"; - - // Ensure this object and the associated broker exist as long as the - // client exists. There is a corresponding Release() call in Disconnect(), - // which is called when the PPB_Broker_Impl is destroyed. The only other - // possible reference is in pending_connect_broker_, which only holds a - // transient reference. This ensures the broker is available as long as the - // plugin needs it and allows the plugin to release the broker when it is no - // longer using it. - AddRef(); - - pending_connects_[client].client = client->AsWeakPtr(); -} - -void PepperBroker::Disconnect(PPB_Broker_Impl* client) { - // Remove the pending connect if one exists. This class will not call client's - // callback. - pending_connects_.erase(client); - - // TODO(ddorwin): Send message disconnect message using dispatcher_. - - // Release the reference added in Connect(). - // This must be the last statement because it may delete this object. - Release(); -} - -void PepperBroker::OnBrokerChannelConnected( - base::ProcessId broker_pid, - const IPC::ChannelHandle& channel_handle) { - std::unique_ptr<PepperBrokerDispatcherWrapper> dispatcher( - new PepperBrokerDispatcherWrapper); - if (!dispatcher->Init(broker_pid, channel_handle)) { - ReportFailureToClients(PP_ERROR_FAILED); - return; - } - - dispatcher_.reset(dispatcher.release()); - - // Process all pending channel requests from the plugins. - for (auto i = pending_connects_.begin(); i != pending_connects_.end();) { - base::WeakPtr<PPB_Broker_Impl>& weak_ptr = i->second.client; - if (!i->second.is_authorized) { - ++i; - continue; - } - - if (weak_ptr.get()) - ConnectPluginToBroker(weak_ptr.get()); - - pending_connects_.erase(i++); - } -} - -void PepperBroker::OnBrokerPermissionResult(PPB_Broker_Impl* client, - bool result) { - auto entry = pending_connects_.find(client); - if (entry == pending_connects_.end()) - return; - - if (!entry->second.client.get()) { - // Client has gone away. - pending_connects_.erase(entry); - return; - } - - if (!result) { - // Report failure. - client->BrokerConnected( - ppapi::PlatformFileToInt(base::SyncSocket::kInvalidHandle), - PP_ERROR_NOACCESS); - pending_connects_.erase(entry); - return; - } - - if (dispatcher_) { - ConnectPluginToBroker(client); - pending_connects_.erase(entry); - return; - } - - // Mark the request as authorized, continue waiting for the broker - // connection. - DCHECK(!entry->second.is_authorized); - entry->second.is_authorized = true; -} - -PepperBroker::PendingConnection::PendingConnection() : is_authorized(false) {} - -PepperBroker::PendingConnection::PendingConnection( - const PendingConnection& other) = default; - -PepperBroker::PendingConnection::~PendingConnection() {} - -void PepperBroker::ReportFailureToClients(int error_code) { - DCHECK_NE(PP_OK, error_code); - for (auto i = pending_connects_.begin(); i != pending_connects_.end(); ++i) { - base::WeakPtr<PPB_Broker_Impl>& weak_ptr = i->second.client; - if (weak_ptr.get()) { - weak_ptr->BrokerConnected( - ppapi::PlatformFileToInt(base::SyncSocket::kInvalidHandle), - error_code); - } - } - pending_connects_.clear(); -} - -void PepperBroker::ConnectPluginToBroker(PPB_Broker_Impl* client) { - base::SyncSocket::Handle plugin_handle = base::SyncSocket::kInvalidHandle; - int32_t result = PP_OK; - - // The socket objects will be deleted when this function exits, closing the - // handles. Any uses of the socket must duplicate them. - std::unique_ptr<base::SyncSocket> broker_socket(new base::SyncSocket()); - std::unique_ptr<base::SyncSocket> plugin_socket(new base::SyncSocket()); - if (base::SyncSocket::CreatePair(broker_socket.get(), plugin_socket.get())) { - result = dispatcher_->SendHandleToBroker(client->pp_instance(), - broker_socket->handle()); - - // If the broker has its pipe handle, duplicate the plugin's handle. - // Otherwise, the plugin's handle will be automatically closed. - if (result == PP_OK) - plugin_handle = DuplicateHandle(plugin_socket->handle()); - } else { - result = PP_ERROR_FAILED; - } - - // TODO(ddorwin): Change the IPC to asynchronous: Queue an object containing - // client and plugin_socket.release(), then return. - // That message handler will then call client->BrokerConnected() with the - // saved pipe handle. - // Temporarily, just call back. - client->BrokerConnected(ppapi::PlatformFileToInt(plugin_handle), result); -} - -} // namespace content
diff --git a/content/renderer/pepper/pepper_broker.h b/content/renderer/pepper/pepper_broker.h deleted file mode 100644 index 0a4ef95..0000000 --- a/content/renderer/pepper/pepper_broker.h +++ /dev/null
@@ -1,107 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_RENDERER_PEPPER_PEPPER_BROKER_H_ -#define CONTENT_RENDERER_PEPPER_PEPPER_BROKER_H_ - -#include <stdint.h> - -#include "base/macros.h" -#include "base/memory/ref_counted.h" -#include "base/process/process.h" -#include "base/sync_socket.h" -#include "content/common/content_export.h" -#include "content/renderer/pepper/ppb_broker_impl.h" -#include "ppapi/proxy/proxy_channel.h" - -namespace IPC { -struct ChannelHandle; -} - -namespace ppapi { -namespace proxy { -class BrokerDispatcher; -} -} - -namespace content { - -class PluginModule; - -// This object is NOT thread-safe. -class CONTENT_EXPORT PepperBrokerDispatcherWrapper { - public: - PepperBrokerDispatcherWrapper(); - ~PepperBrokerDispatcherWrapper(); - - bool Init(base::ProcessId broker_pid, - const IPC::ChannelHandle& channel_handle); - - int32_t SendHandleToBroker(PP_Instance instance, - base::SyncSocket::Handle handle); - - private: - std::unique_ptr<ppapi::proxy::BrokerDispatcher> dispatcher_; - std::unique_ptr<ppapi::proxy::ProxyChannel::Delegate> dispatcher_delegate_; -}; - -class PepperBroker : public base::RefCountedThreadSafe<PepperBroker> { - public: - explicit PepperBroker(PluginModule* plugin_module); - - // Decrements the references to the broker. - // When there are no more references, this renderer's dispatcher is - // destroyed, allowing the broker to shutdown if appropriate. - // Callers should not reference this object after calling Disconnect(). - void Disconnect(PPB_Broker_Impl* client); - - // Adds a pending connection to the broker. Balances out Disconnect() calls. - void AddPendingConnect(PPB_Broker_Impl* client); - - // Called when the channel to the broker has been established. - void OnBrokerChannelConnected(base::ProcessId broker_pid, - const IPC::ChannelHandle& channel_handle); - - // Called when we know whether permission to access the PPAPI broker was - // granted. - void OnBrokerPermissionResult(PPB_Broker_Impl* client, bool result); - - private: - friend class base::RefCountedThreadSafe<PepperBroker>; - - struct PendingConnection { - PendingConnection(); - PendingConnection(const PendingConnection& other); - ~PendingConnection(); - - bool is_authorized; - base::WeakPtr<PPB_Broker_Impl> client; - }; - - virtual ~PepperBroker(); - - // Reports failure to all clients that had pending operations. - void ReportFailureToClients(int error_code); - - // Connects the plugin to the broker via a pipe. - void ConnectPluginToBroker(PPB_Broker_Impl* client); - - std::unique_ptr<PepperBrokerDispatcherWrapper> dispatcher_; - - // A map of pointers to objects that have requested a connection to the weak - // pointer we can use to reference them. The mapping is needed so we can clean - // up entries for objects that may have been deleted. - typedef std::map<PPB_Broker_Impl*, PendingConnection> ClientMap; - ClientMap pending_connects_; - - // Pointer to the associated plugin module. - // Always set and cleared at the same time as the module's pointer to this. - PluginModule* plugin_module_; - - DISALLOW_COPY_AND_ASSIGN(PepperBroker); -}; - -} // namespace content - -#endif // CONTENT_RENDERER_PEPPER_PEPPER_BROKER_H_
diff --git a/content/renderer/pepper/pepper_broker_unittest.cc b/content/renderer/pepper/pepper_broker_unittest.cc deleted file mode 100644 index 96e0b88..0000000 --- a/content/renderer/pepper/pepper_broker_unittest.cc +++ /dev/null
@@ -1,51 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/renderer/pepper/pepper_broker.h" - -#if defined(OS_POSIX) -#include <fcntl.h> -#include <sys/socket.h> -#endif // defined(OS_POSIX) - -#include "base/test/task_environment.h" -#include "build/build_config.h" -#include "content/renderer/render_process.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace content { - -class PepperBrokerTest : public ::testing::Test { - protected: - PepperBrokerTest() - : task_environment_(base::test::TaskEnvironment::MainThreadType::IO) {} - base::test::TaskEnvironment task_environment_; - // We need a render process for ppapi::proxy::ProxyChannel to work. - RenderProcess process_; -}; - -// Try to initialize PepperBrokerDispatcherWrapper with invalid ChannelHandle. -// Initialization should fail. -TEST_F(PepperBrokerTest, InitFailure) { - PepperBrokerDispatcherWrapper dispatcher_wrapper; - IPC::ChannelHandle invalid_channel; // Invalid by default. - - // An invalid handle should result in a failure (false) without a LOG(FATAL), - // such as the one in CreatePipe(). Call it twice because without the invalid - // handle check, the posix code would hit a one-time path due to a static - // variable and go through the LOG(FATAL) path. - EXPECT_FALSE(dispatcher_wrapper.Init(base::kNullProcessId, invalid_channel)); - EXPECT_FALSE(dispatcher_wrapper.Init(base::kNullProcessId, invalid_channel)); -} - -// On valid ChannelHandle, initialization should succeed. -TEST_F(PepperBrokerTest, InitSuccess) { - PepperBrokerDispatcherWrapper dispatcher_wrapper; - mojo::MessagePipe pipe; - IPC::ChannelHandle valid_channel(pipe.handle0.release()); - - EXPECT_TRUE(dispatcher_wrapper.Init(base::kNullProcessId, valid_channel)); -} - -} // namespace content
diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.cc b/content/renderer/pepper/pepper_plugin_instance_impl.cc index 4e25188f..37ab78d 100644 --- a/content/renderer/pepper/pepper_plugin_instance_impl.cc +++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
@@ -2544,7 +2544,6 @@ ppapi::SingletonResourceID id) { // Flash APIs and some others aren't implemented in-process. switch (id) { - case ppapi::BROKER_SINGLETON_ID: case ppapi::BROWSER_FONT_SINGLETON_ID: case ppapi::FLASH_FULLSCREEN_SINGLETON_ID: case ppapi::ISOLATED_FILESYSTEM_SINGLETON_ID:
diff --git a/content/renderer/pepper/plugin_module.cc b/content/renderer/pepper/plugin_module.cc index a42968ec..5d7297c7 100644 --- a/content/renderer/pepper/plugin_module.cc +++ b/content/renderer/pepper/plugin_module.cc
@@ -118,7 +118,6 @@ #include "ppapi/c/private/ppb_udp_socket_private.h" #include "ppapi/c/private/ppb_uma_private.h" #include "ppapi/c/private/ppb_x509_certificate_private.h" -#include "ppapi/c/trusted/ppb_broker_trusted.h" #include "ppapi/c/trusted/ppb_browser_font_trusted.h" #include "ppapi/c/trusted/ppb_char_set_trusted.h" #include "ppapi/c/trusted/ppb_file_chooser_trusted.h" @@ -485,7 +484,6 @@ : callback_tracker_(new ppapi::CallbackTracker), is_in_destructor_(false), is_crashed_(false), - broker_(nullptr), library_(nullptr), name_(name), version_(version), @@ -690,13 +688,6 @@ return true; // Instance ID is usable. } -void PluginModule::SetBroker(PepperBroker* broker) { - DCHECK(!broker_ || !broker); - broker_ = broker; -} - -PepperBroker* PluginModule::GetBroker() { return broker_; } - RendererPpapiHostImpl* PluginModule::CreateOutOfProcessModule( RenderFrameImpl* render_frame, const base::FilePath& path,
diff --git a/content/renderer/pepper/plugin_module.h b/content/renderer/pepper/plugin_module.h index 57fadde..1ab89fc 100644 --- a/content/renderer/pepper/plugin_module.h +++ b/content/renderer/pepper/plugin_module.h
@@ -50,7 +50,6 @@ namespace content { class HostDispatcherWrapper; class PepperPluginInstanceImpl; -class PepperBroker; class RendererPpapiHostImpl; class RenderFrameImpl; struct WebPluginInfo; @@ -183,10 +182,6 @@ void SetReserveInstanceIDCallback(PP_Bool (*reserve)(PP_Module, PP_Instance)); bool ReserveInstanceID(PP_Instance instance); - // These should only be called from the main thread. - void SetBroker(PepperBroker* broker); - PepperBroker* GetBroker(); - // Create a new HostDispatcher for proxying, hook it to the PluginModule, // and perform other common initialization. RendererPpapiHostImpl* CreateOutOfProcessModule( @@ -249,10 +244,6 @@ // entry_points_ aren't valid. std::unique_ptr<HostDispatcherWrapper> host_dispatcher_wrapper_; - // Non-owning pointer to the broker for this plugin module, if one exists. - // It is populated and cleared in the main thread. - PepperBroker* broker_; - // Holds a reference to the base::NativeLibrary handle if this PluginModule // instance wraps functions loaded from a library. Can be NULL. If // |library_| is non-NULL, PluginModule will attempt to unload the library
diff --git a/content/renderer/pepper/ppb_broker_impl.cc b/content/renderer/pepper/ppb_broker_impl.cc deleted file mode 100644 index 41c36f9d..0000000 --- a/content/renderer/pepper/ppb_broker_impl.cc +++ /dev/null
@@ -1,151 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/renderer/pepper/ppb_broker_impl.h" - -#include "base/check.h" -#include "base/metrics/histogram_macros.h" -#include "content/common/frame_messages.h" -#include "content/common/view_messages.h" -#include "content/renderer/pepper/host_globals.h" -#include "content/renderer/pepper/pepper_broker.h" -#include "content/renderer/pepper/pepper_plugin_instance_impl.h" -#include "content/renderer/pepper/plugin_module.h" -#include "content/renderer/render_thread_impl.h" -#include "content/renderer/render_view_impl.h" -#include "ppapi/c/pp_errors.h" -#include "ppapi/shared_impl/platform_file.h" -#include "third_party/blink/public/web/web_document.h" -#include "third_party/blink/public/web/web_plugin_container.h" - -using ppapi::PlatformFileToInt; -using ppapi::thunk::PPB_Broker_API; -using ppapi::TrackedCallback; - -namespace content { - -enum class PepperBrokerAction { CREATE = 0, CONNECT = 1, NUM }; - -// PPB_Broker_Impl ------------------------------------------------------ - -PPB_Broker_Impl::PPB_Broker_Impl(PP_Instance instance) - : Resource(ppapi::OBJECT_IS_IMPL, instance), - broker_(nullptr), - connect_callback_(), - pipe_handle_(PlatformFileToInt(base::SyncSocket::kInvalidHandle)), - routing_id_(RenderThreadImpl::current()->GenerateRoutingID()) { - ChildThreadImpl::current()->GetRouter()->AddRoute(routing_id_, this); - - UMA_HISTOGRAM_ENUMERATION("Pepper.BrokerAction", PepperBrokerAction::CREATE, - PepperBrokerAction::NUM); -} - -PPB_Broker_Impl::~PPB_Broker_Impl() { - if (broker_) { - broker_->Disconnect(this); - broker_ = nullptr; - } - - // The plugin owns the handle. - pipe_handle_ = PlatformFileToInt(base::SyncSocket::kInvalidHandle); - ChildThreadImpl::current()->GetRouter()->RemoveRoute(routing_id_); -} - -PPB_Broker_API* PPB_Broker_Impl::AsPPB_Broker_API() { return this; } - -int32_t PPB_Broker_Impl::Connect( - scoped_refptr<TrackedCallback> connect_callback) { - // TODO(ddorwin): Return PP_ERROR_FAILED if plugin is in-process. - - if (broker_) { - // May only be called once. - return PP_ERROR_FAILED; - } - - PepperPluginInstanceImpl* plugin_instance = - HostGlobals::Get()->GetInstance(pp_instance()); - if (!plugin_instance) - return PP_ERROR_FAILED; - PluginModule* module = plugin_instance->module(); - const base::FilePath& broker_path = module->path(); - - // The callback must be populated now in case we are connected to the broker - // and BrokerConnected is called before ConnectToBroker returns. - // Because it must be created now, it must be aborted and cleared if - // ConnectToBroker fails. - connect_callback_ = connect_callback; - - broker_ = module->GetBroker(); - if (!broker_) { - broker_ = new PepperBroker(module); - - // Have the browser start the broker process for us. - RenderThreadImpl::current()->Send( - new FrameHostMsg_OpenChannelToPpapiBroker(routing_id_, broker_path)); - } - - RenderThreadImpl::current()->Send( - new ViewHostMsg_RequestPpapiBrokerPermission( - plugin_instance->render_frame()->render_view()->GetRoutingID(), - routing_id_, - GetDocumentUrl(), - broker_path)); - - // Adds a reference, ensuring that the broker is not deleted when - // |broker| goes out of scope. - broker_->AddPendingConnect(this); - - return PP_OK_COMPLETIONPENDING; -} - -int32_t PPB_Broker_Impl::GetHandle(int32_t* handle) { - if (pipe_handle_ == PlatformFileToInt(base::SyncSocket::kInvalidHandle)) - return PP_ERROR_FAILED; // Handle not set yet. - *handle = pipe_handle_; - return PP_OK; -} - -GURL PPB_Broker_Impl::GetDocumentUrl() { - PepperPluginInstanceImpl* plugin_instance = - HostGlobals::Get()->GetInstance(pp_instance()); - return plugin_instance->container()->GetDocument().Url(); -} - -// Transfers ownership of the handle to the plugin. -void PPB_Broker_Impl::BrokerConnected(int32_t handle, int32_t result) { - DCHECK(pipe_handle_ == PlatformFileToInt(base::SyncSocket::kInvalidHandle)); - DCHECK(result == PP_OK || - handle == PlatformFileToInt(base::SyncSocket::kInvalidHandle)); - - pipe_handle_ = handle; - - // Synchronous calls are not supported. - DCHECK(TrackedCallback::IsPending(connect_callback_)); - - connect_callback_->Run(result); -} - -bool PPB_Broker_Impl::OnMessageReceived(const IPC::Message& message) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(PPB_Broker_Impl, message) - IPC_MESSAGE_HANDLER(ViewMsg_PpapiBrokerChannelCreated, - OnPpapiBrokerChannelCreated) - IPC_MESSAGE_HANDLER(ViewMsg_PpapiBrokerPermissionResult, - OnPpapiBrokerPermissionResult) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - -void PPB_Broker_Impl::OnPpapiBrokerChannelCreated( - base::ProcessId broker_pid, - const IPC::ChannelHandle& handle) { - broker_->OnBrokerChannelConnected(broker_pid, handle); -} - -void PPB_Broker_Impl::OnPpapiBrokerPermissionResult(bool result) { - broker_->OnBrokerPermissionResult(this, result); -} - -} // namespace content
diff --git a/content/renderer/pepper/ppb_broker_impl.h b/content/renderer/pepper/ppb_broker_impl.h deleted file mode 100644 index 54a1680a..0000000 --- a/content/renderer/pepper/ppb_broker_impl.h +++ /dev/null
@@ -1,79 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_RENDERER_PEPPER_PPB_BROKER_IMPL_H_ -#define CONTENT_RENDERER_PEPPER_PPB_BROKER_IMPL_H_ - -#include <stdint.h> - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "base/memory/weak_ptr.h" -#include "base/process/process.h" -#include "ipc/ipc_listener.h" -#include "ppapi/c/pp_completion_callback.h" -#include "ppapi/c/trusted/ppb_broker_trusted.h" -#include "ppapi/shared_impl/resource.h" -#include "ppapi/shared_impl/tracked_callback.h" -#include "ppapi/thunk/ppb_broker_api.h" - -class GURL; - -namespace IPC { -struct ChannelHandle; -} - -namespace content { -class PepperBroker; - -class PPB_Broker_Impl : public ppapi::Resource, - public ppapi::thunk::PPB_Broker_API, - public IPC::Listener, - public base::SupportsWeakPtr<PPB_Broker_Impl> { - public: - explicit PPB_Broker_Impl(PP_Instance instance); - - // Resource override. - ppapi::thunk::PPB_Broker_API* AsPPB_Broker_API() override; - - // PPB_BrokerTrusted implementation. - int32_t Connect( - scoped_refptr<ppapi::TrackedCallback> connect_callback) override; - int32_t GetHandle(int32_t* handle) override; - - // Returns the URL of the document this plugin runs in. This is necessary to - // decide whether to grant access to the PPAPI broker. - GURL GetDocumentUrl(); - - void BrokerConnected(int32_t handle, int32_t result); - - private: - ~PPB_Broker_Impl() override; - - // IPC::Listener implementation. - bool OnMessageReceived(const IPC::Message& message) override; - - void OnPpapiBrokerChannelCreated(base::ProcessId broker_pid, - const IPC::ChannelHandle& handle); - void OnPpapiBrokerPermissionResult(bool result); - - // PluginDelegate ppapi broker object. - // We don't own this pointer but are responsible for calling Disconnect on it. - PepperBroker* broker_; - - // Callback invoked from BrokerConnected. - scoped_refptr<ppapi::TrackedCallback> connect_callback_; - - // Pipe handle for the plugin instance to use to communicate with the broker. - // Never owned by this object. - int32_t pipe_handle_; - - int routing_id_; - - DISALLOW_COPY_AND_ASSIGN(PPB_Broker_Impl); -}; - -} // namespace content - -#endif // CONTENT_RENDERER_PEPPER_PPB_BROKER_IMPL_H_
diff --git a/content/renderer/pepper/resource_creation_impl.cc b/content/renderer/pepper/resource_creation_impl.cc index 81540f818..a0e87939 100644 --- a/content/renderer/pepper/resource_creation_impl.cc +++ b/content/renderer/pepper/resource_creation_impl.cc
@@ -7,7 +7,6 @@ #include "build/build_config.h" #include "content/common/content_switches_internal.h" #include "content/renderer/pepper/ppb_audio_impl.h" -#include "content/renderer/pepper/ppb_broker_impl.h" #include "content/renderer/pepper/ppb_buffer_impl.h" #include "content/renderer/pepper/ppb_graphics_3d_impl.h" #include "content/renderer/pepper/ppb_image_data_impl.h" @@ -72,10 +71,6 @@ return 0; // Not supported in-process. } -PP_Resource ResourceCreationImpl::CreateBroker(PP_Instance instance) { - return (new PPB_Broker_Impl(instance))->GetReference(); -} - PP_Resource ResourceCreationImpl::CreateBuffer(PP_Instance instance, uint32_t size) { return PPB_Buffer_Impl::Create(instance, size);
diff --git a/content/renderer/pepper/resource_creation_impl.h b/content/renderer/pepper/resource_creation_impl.h index af3ec62..a5165b4c 100644 --- a/content/renderer/pepper/resource_creation_impl.h +++ b/content/renderer/pepper/resource_creation_impl.h
@@ -39,7 +39,6 @@ uint32_t sample_frame_count) override; PP_Resource CreateAudioInput(PP_Instance instance) override; PP_Resource CreateAudioOutput(PP_Instance instance) override; - PP_Resource CreateBroker(PP_Instance instance) override; PP_Resource CreateBuffer(PP_Instance instance, uint32_t size) override; PP_Resource CreateCameraDevicePrivate(PP_Instance instance) override; PP_Resource CreateFlashFontFile(
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index 781e8c8..2ff7132 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc
@@ -104,7 +104,6 @@ #include "content/renderer/loader/resource_dispatcher.h" #include "content/renderer/loader/tracked_child_url_loader_factory_bundle.h" #include "content/renderer/loader/web_url_loader_impl.h" -#include "content/renderer/loader/web_url_request_util.h" #include "content/renderer/loader/web_worker_fetch_context_impl.h" #include "content/renderer/media/media_permission_dispatcher.h" #include "content/renderer/mhtml_handle_writer.h" @@ -183,6 +182,7 @@ #include "third_party/blink/public/platform/web_string.h" #include "third_party/blink/public/platform/web_url.h" #include "third_party/blink/public/platform/web_url_error.h" +#include "third_party/blink/public/platform/web_url_request_util.h" #include "third_party/blink/public/platform/web_url_response.h" #include "third_party/blink/public/platform/web_vector.h" #include "third_party/blink/public/web/blink.h" @@ -448,7 +448,7 @@ if (common_params.post_data) { navigation_params->http_body = - GetWebHTTPBodyForRequestBody(*common_params.post_data); + blink::GetWebHTTPBodyForRequestBody(*common_params.post_data); if (!commit_params.post_content_type.empty()) { navigation_params->http_content_type = WebString::FromASCII(commit_params.post_content_type); @@ -588,7 +588,7 @@ GURL(), static_cast<blink::PreviewsState>(info->url_request.GetPreviewsState()), base::TimeTicks::Now(), info->url_request.HttpMethod().Latin1(), - GetRequestBodyForWebURLRequest(info->url_request), + blink::GetRequestBodyForWebURLRequest(info->url_request), std::move(source_location), false /* started_from_context_menu */, info->url_request.HasUserGesture(), info->url_request.HasTextFragmentToken(), std::move(initiator_csp_info), @@ -5892,9 +5892,10 @@ auto params = mojom::OpenURLParams::New(); params->url = info->url_request.Url(); params->initiator_origin = info->url_request.RequestorOrigin(); - params->post_body = GetRequestBodyForWebURLRequest(info->url_request); + params->post_body = blink::GetRequestBodyForWebURLRequest(info->url_request); DCHECK_EQ(!!params->post_body, IsHttpPost(info->url_request)); - params->extra_headers = GetWebURLRequestHeadersAsString(info->url_request); + params->extra_headers = + blink::GetWebURLRequestHeadersAsString(info->url_request).Latin1(); params->referrer = blink::mojom::Referrer::New( blink::WebStringToGURL(info->url_request.ReferrerString()), @@ -6253,11 +6254,11 @@ mojom::BeginNavigationParamsPtr begin_navigation_params = mojom::BeginNavigationParams::New( initiator_frame_routing_id, - GetWebURLRequestHeadersAsString(info->url_request), load_flags, - info->url_request.GetSkipServiceWorker(), - GetRequestContextTypeForWebURLRequest(info->url_request), - GetRequestDestinationForWebURLRequest(info->url_request), - GetMixedContentContextTypeForWebURLRequest(info->url_request), + blink::GetWebURLRequestHeadersAsString(info->url_request).Latin1(), + load_flags, info->url_request.GetSkipServiceWorker(), + blink::GetRequestContextTypeForWebURLRequest(info->url_request), + blink::GetRequestDestinationForWebURLRequest(info->url_request), + blink::GetMixedContentContextTypeForWebURLRequest(info->url_request), is_form_submission, was_initiated_by_link_click, searchable_form_url, searchable_form_encoding, client_side_redirect_url, initiator ? base::make_optional<base::Value>(std::move(*initiator))
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc index ffe016a..700f481 100644 --- a/content/renderer/render_frame_proxy.cc +++ b/content/renderer/render_frame_proxy.cc
@@ -27,7 +27,6 @@ #include "content/renderer/agent_scheduling_group.h" #include "content/renderer/child_frame_compositing_helper.h" #include "content/renderer/impression_conversions.h" -#include "content/renderer/loader/web_url_request_util.h" #include "content/renderer/mojo/blink_interface_registry_impl.h" #include "content/renderer/render_frame_impl.h" #include "content/renderer/render_thread_impl.h" @@ -43,6 +42,7 @@ #include "third_party/blink/public/platform/url_conversion.h" #include "third_party/blink/public/platform/web_rect.h" #include "third_party/blink/public/platform/web_string.h" +#include "third_party/blink/public/platform/web_url_request_util.h" #include "third_party/blink/public/web/web_frame_widget.h" #include "third_party/blink/public/web/web_local_frame.h" #include "third_party/blink/public/web/web_view.h" @@ -637,9 +637,10 @@ auto params = mojom::OpenURLParams::New(); params->url = request.Url(); params->initiator_origin = request.RequestorOrigin(); - params->post_body = GetRequestBodyForWebURLRequest(request); + params->post_body = blink::GetRequestBodyForWebURLRequest(request); DCHECK_EQ(!!params->post_body, request.HttpMethod().Utf8() == "POST"); - params->extra_headers = GetWebURLRequestHeadersAsString(request); + params->extra_headers = + blink::GetWebURLRequestHeadersAsString(request).Latin1(); params->referrer = blink::mojom::Referrer::New( blink::WebStringToGURL(request.ReferrerString()), request.GetReferrerPolicy());
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc index 0052ec5..0337fdf 100644 --- a/content/renderer/service_worker/service_worker_context_client.cc +++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -31,7 +31,6 @@ #include "content/public/renderer/worker_thread.h" #include "content/renderer/loader/child_url_loader_factory_bundle.h" #include "content/renderer/loader/web_url_loader_impl.h" -#include "content/renderer/loader/web_url_request_util.h" #include "content/renderer/renderer_blink_platform_impl.h" #include "content/renderer/service_worker/embedded_worker_instance_client_impl.h" #include "content/renderer/service_worker/navigation_preload_request.h"
diff --git a/content/renderer/service_worker/service_worker_fetch_context_impl.cc b/content/renderer/service_worker/service_worker_fetch_context_impl.cc index c64203e..1a14e13c 100644 --- a/content/renderer/service_worker/service_worker_fetch_context_impl.cc +++ b/content/renderer/service_worker/service_worker_fetch_context_impl.cc
@@ -13,7 +13,6 @@ #include "content/renderer/loader/request_extra_data.h" #include "content/renderer/loader/resource_dispatcher.h" #include "content/renderer/loader/web_url_loader_impl.h" -#include "content/renderer/loader/web_url_request_util.h" #include "ipc/ipc_message.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "services/network/public/cpp/wrapper_shared_url_loader_factory.h"
diff --git a/content/renderer/service_worker/service_worker_subresource_loader.cc b/content/renderer/service_worker/service_worker_subresource_loader.cc index 40ecdc7..c0e7bbc 100644 --- a/content/renderer/service_worker/service_worker_subresource_loader.cc +++ b/content/renderer/service_worker/service_worker_subresource_loader.cc
@@ -16,7 +16,6 @@ #include "content/common/fetch/fetch_request_type_converters.h" #include "content/common/service_worker/service_worker_loader_helpers.h" #include "content/common/service_worker/service_worker_utils.h" -#include "content/renderer/loader/web_url_request_util.h" #include "content/renderer/render_thread_impl.h" #include "content/renderer/renderer_blink_platform_impl.h" #include "content/renderer/service_worker/controller_service_worker_connector.h" @@ -756,13 +755,6 @@ url_loader_client_->OnReceiveCachedMetadata(std::move(metadata.value())); DCHECK(data_pipe.is_valid()); - - base::TimeDelta delay = - base::TimeTicks::Now() - response_head_->response_start; - UMA_HISTOGRAM_TIMES( - "ServiceWorker.SubresourceNotifyStartLoadingResponseBodyDelay", delay); - - DCHECK(data_pipe.is_valid()); CommitResponseBody(std::move(data_pipe)); // If the blob reading completed before the side data reading, then we
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index c619f83..4eb225a 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -2285,7 +2285,6 @@ if (enable_plugins) { sources += [ "../browser/plugin_content_origin_allowlist_unittest.cc", - "../browser/plugin_service_impl_unittest.cc", "../browser/renderer_host/pepper/browser_ppapi_host_test.cc", "../browser/renderer_host/pepper/browser_ppapi_host_test.h", "../browser/renderer_host/pepper/pepper_file_system_browser_host_unittest.cc", @@ -2296,7 +2295,6 @@ "../renderer/pepper/event_conversion_unittest.cc", "../renderer/pepper/host_var_tracker_unittest.cc", "../renderer/pepper/mock_resource.h", - "../renderer/pepper/pepper_broker_unittest.cc", "../renderer/pepper/plugin_instance_throttler_impl_unittest.cc", "../renderer/pepper/v8_var_converter_unittest.cc", ]
diff --git a/content/test/data/accessibility/html/input-radio-checkbox-label-expected-android.txt b/content/test/data/accessibility/html/input-radio-checkbox-label-expected-android.txt index a5295911..3f7e937 100644 --- a/content/test/data/accessibility/html/input-radio-checkbox-label-expected-android.txt +++ b/content/test/data/accessibility/html/input-radio-checkbox-label-expected-android.txt
@@ -5,8 +5,6 @@ ++++android.view.View focusable name='label exposed for radio button ' ++++++android.widget.TextView name='label exposed for radio button ' ++++++android.widget.RadioButton role_description='radio button' checkable clickable focusable name='label exposed for radio button' item_index=1 row_index=1 -++++++android.widget.TextView name=' ' ++++android.view.View focusable name='label exposed for checkbox ' ++++++android.widget.TextView name='label exposed for checkbox ' -++++++android.widget.CheckBox role_description='checkbox' checkable clickable focusable name='label exposed for checkbox' -++++++android.widget.TextView name=' ' \ No newline at end of file +++++++android.widget.CheckBox role_description='checkbox' checkable clickable focusable name='label exposed for checkbox' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/input-radio-checkbox-label-expected-auralinux.txt b/content/test/data/accessibility/html/input-radio-checkbox-label-expected-auralinux.txt index 3bd42bb..13dfdeb 100644 --- a/content/test/data/accessibility/html/input-radio-checkbox-label-expected-auralinux.txt +++ b/content/test/data/accessibility/html/input-radio-checkbox-label-expected-auralinux.txt
@@ -1,12 +1,10 @@ [document web] ++[section] -++++[radio button] name='label ignored for radio button' checkable:true -++++[check box] name='label ignored for checkbox' checkable:true +++++[radio button] name='label ignored for radio button' labelled-by checkable:true +++++[check box] name='label ignored for checkbox' labelled-by checkable:true ++++[label] name='label exposed for radio button ' label-for ++++++[static] name='label exposed for radio button ' ++++++[radio button] name='label exposed for radio button' labelled-by checkable:true -++++++[static] name=' ' ++++[label] name='label exposed for checkbox ' label-for ++++++[static] name='label exposed for checkbox ' -++++++[check box] name='label exposed for checkbox' labelled-by checkable:true -++++++[static] name=' ' +++++++[check box] name='label exposed for checkbox' labelled-by checkable:true \ No newline at end of file
diff --git a/content/test/data/accessibility/html/input-radio-checkbox-label-expected-blink.txt b/content/test/data/accessibility/html/input-radio-checkbox-label-expected-blink.txt index 70970717..dcc2735 100644 --- a/content/test/data/accessibility/html/input-radio-checkbox-label-expected-blink.txt +++ b/content/test/data/accessibility/html/input-radio-checkbox-label-expected-blink.txt
@@ -1,17 +1,20 @@ rootWebArea ++genericContainer ignored ++++genericContainer -++++++radioButton name='label ignored for radio button' checkedState=false -++++++checkBox name='label ignored for checkbox' checkedState=false +++++++labelText ignored +++++++++staticText ignored name='label ignored for radio button ' +++++++++++inlineTextBox ignored name='label ignored for radio button ' +++++++++radioButton name='label ignored for radio button' checkedState=false +++++++labelText ignored +++++++++staticText ignored name='label ignored for checkbox ' +++++++++++inlineTextBox ignored name='label ignored for checkbox ' +++++++++checkBox name='label ignored for checkbox' checkedState=false ++++++labelText name='label exposed for radio button ' ++++++++staticText name='label exposed for radio button ' ++++++++++inlineTextBox name='label exposed for radio button ' ++++++++radioButton name='label exposed for radio button' checkedState=false -++++++++staticText name=' ' -++++++++++inlineTextBox name=' ' ++++++labelText name='label exposed for checkbox ' ++++++++staticText name='label exposed for checkbox ' ++++++++++inlineTextBox name='label exposed for ' ++++++++++inlineTextBox name='checkbox ' ++++++++checkBox name='label exposed for checkbox' checkedState=false -++++++++staticText name=' '
diff --git a/content/test/data/accessibility/html/input-radio-checkbox-label-expected-mac.txt b/content/test/data/accessibility/html/input-radio-checkbox-label-expected-mac.txt index ca4940c..84b28c44 100644 --- a/content/test/data/accessibility/html/input-radio-checkbox-label-expected-mac.txt +++ b/content/test/data/accessibility/html/input-radio-checkbox-label-expected-mac.txt
@@ -5,8 +5,6 @@ ++++AXGroup AXTitle='label exposed for radio button ' ++++++AXStaticText AXValue='label exposed for radio button ' ++++++AXRadioButton AXTitleUIElement=:5 AXValue=0 -++++++AXStaticText AXValue=' ' ++++AXGroup AXTitle='label exposed for checkbox ' ++++++AXStaticText AXValue='label exposed for checkbox ' -++++++AXCheckBox AXTitleUIElement=:9 AXValue=0 -++++++AXStaticText AXValue=' ' +++++++AXCheckBox AXTitleUIElement=:8 AXValue=0 \ No newline at end of file
diff --git a/content/test/data/accessibility/html/input-radio-checkbox-label-expected-uia-win.txt b/content/test/data/accessibility/html/input-radio-checkbox-label-expected-uia-win.txt index 8eede08..7621949 100644 --- a/content/test/data/accessibility/html/input-radio-checkbox-label-expected-uia-win.txt +++ b/content/test/data/accessibility/html/input-radio-checkbox-label-expected-uia-win.txt
@@ -5,8 +5,6 @@ ++++Text Name='label exposed for radio button ' ++++++Text Name='label exposed for radio button ' ++++++RadioButton Name='label exposed for radio button' SelectionItem.IsSelected=false -++++++Text Name=' ' ++++Text Name='label exposed for checkbox ' ++++++Text Name='label exposed for checkbox ' -++++++CheckBox Name='label exposed for checkbox' Toggle.ToggleState='Off' -++++++Text Name=' ' +++++++CheckBox Name='label exposed for checkbox' Toggle.ToggleState='Off' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/input-radio-checkbox-label-expected-win.txt b/content/test/data/accessibility/html/input-radio-checkbox-label-expected-win.txt index 3d1c4020..3ba2cd0 100644 --- a/content/test/data/accessibility/html/input-radio-checkbox-label-expected-win.txt +++ b/content/test/data/accessibility/html/input-radio-checkbox-label-expected-win.txt
@@ -5,8 +5,6 @@ ++++IA2_ROLE_LABEL name='label exposed for radio button ' FOCUSABLE ++++++ROLE_SYSTEM_STATICTEXT name='label exposed for radio button ' ++++++ROLE_SYSTEM_RADIOBUTTON name='label exposed for radio button' FOCUSABLE IA2_STATE_CHECKABLE checkable:true -++++++ROLE_SYSTEM_STATICTEXT name=' ' ++++IA2_ROLE_LABEL name='label exposed for checkbox ' FOCUSABLE ++++++ROLE_SYSTEM_STATICTEXT name='label exposed for checkbox ' -++++++ROLE_SYSTEM_CHECKBUTTON name='label exposed for checkbox' FOCUSABLE IA2_STATE_CHECKABLE checkable:true -++++++ROLE_SYSTEM_STATICTEXT name=' ' +++++++ROLE_SYSTEM_CHECKBUTTON name='label exposed for checkbox' FOCUSABLE IA2_STATE_CHECKABLE checkable:true \ No newline at end of file
diff --git a/content/test/data/font_src_local_matching.html b/content/test/data/font_src_local_matching.html index b0de52f..ade3d664 100644 --- a/content/test/data/font_src_local_matching.html +++ b/content/test/data/font_src_local_matching.html
@@ -51,6 +51,9 @@ ["RobotoCondensed-Italic", "0"], ["RobotoCondensed-Regular", "0"], ["Roboto-Italic", "0"], + ["Google Sans", "0"], + ["Google Sans Medium", "0"], + ["Google Sans Bold", "0"], ]; } else if (navigator.userAgent.indexOf("Linux") !== -1 || navigator.userAgent.indexOf("CrOS") !== -1) {
diff --git a/content/test/data/media/video_audio_element_capture_test.html b/content/test/data/media/video_audio_element_capture_test.html index 7046a99..0ab79cb5 100644 --- a/content/test/data/media/video_audio_element_capture_test.html +++ b/content/test/data/media/video_audio_element_capture_test.html
@@ -23,11 +23,12 @@ : document.getElementById('video'); assertTrue(element, 'Error resolving tag'); - element.src = filename; element.onerror = function(e) { failTest("error playing back [" + filename + "] " + e); } + element.src = filename; + var recorded_events = 0; element.onloadedmetadata = function() { const stream = element.captureStream(); @@ -38,6 +39,10 @@ const recorder = new MediaRecorder(stream); assertTrue(recorder, 'Error creating recorder out of the MediaStream'); + recorder.onerror = function(e) { + failTest("error recording [" + filename + "] " + e); + } + recorder.ondataavailable = function(event) { if (++recorded_events > NUMBER_OF_EVENTS_TO_RECORD) reportTestSuccess();
diff --git a/extensions/browser/extension_function.h b/extensions/browser/extension_function.h index 0777e3b..dbf0946 100644 --- a/extensions/browser/extension_function.h +++ b/extensions/browser/extension_function.h
@@ -73,13 +73,21 @@ // supply a unique |histogramvalue| used for histograms of extension function // invocation (add new ones at the end of the enum in // extension_function_histogram_value.h). -#define DECLARE_EXTENSION_FUNCTION(name, histogramvalue) \ - public: \ - static constexpr const char* function_name() { return name; } \ - \ - public: \ - static constexpr extensions::functions::HistogramValue histogram_value() { \ - return extensions::functions::histogramvalue; \ +// TODO(devlin): This would be nicer if instead we defined the constructor +// for the ExtensionFunction since the histogram value and name should never +// change. Then, we could get rid of the set_ methods for those values on +// ExtensionFunction, and there'd be no possibility of having them be +// "wrong" for a given function. Unfortunately, that would require updating +// each ExtensionFunction and construction site, which, while possible, is +// quite costly. +#define DECLARE_EXTENSION_FUNCTION(name, histogramvalue) \ + public: \ + static constexpr const char* static_function_name() { return name; } \ + \ + public: \ + static constexpr extensions::functions::HistogramValue \ + static_histogram_value() { \ + return extensions::functions::histogramvalue; \ } // Abstract base class for extension functions the ExtensionFunctionDispatcher
diff --git a/extensions/browser/extension_function_registry.h b/extensions/browser/extension_function_registry.h index 0e26517..73cb6f4 100644 --- a/extensions/browser/extension_function_registry.h +++ b/extensions/browser/extension_function_registry.h
@@ -61,8 +61,8 @@ void Register(const FactoryEntry& entry); template <class T> void RegisterFunction() { - Register(FactoryEntry(&NewExtensionFunction<T>, T::function_name(), - T::histogram_value())); + Register(FactoryEntry(&NewExtensionFunction<T>, T::static_function_name(), + T::static_histogram_value())); } const FactoryMap& GetFactoriesForTesting() const { return factories_; }
diff --git a/extensions/shell/browser/shell_desktop_controller_aura.cc b/extensions/shell/browser/shell_desktop_controller_aura.cc index 58a660ef9..ea1f2bcc 100644 --- a/extensions/shell/browser/shell_desktop_controller_aura.cc +++ b/extensions/shell/browser/shell_desktop_controller_aura.cc
@@ -17,7 +17,7 @@ #include "ui/aura/window.h" #include "ui/aura/window_tree_host.h" #include "ui/base/cursor/cursor.h" -#include "ui/base/cursor/cursor_loader.h" +#include "ui/base/cursor/image_cursors.h" #include "ui/base/cursor/mojom/cursor_type.mojom-shared.h" #include "ui/base/ime/init/input_method_factory.h" #include "ui/base/ime/input_method.h" @@ -57,21 +57,21 @@ public: explicit ShellNativeCursorManager( ShellDesktopControllerAura* desktop_controller) - : desktop_controller_(desktop_controller) {} + : desktop_controller_(desktop_controller), + image_cursors_(new ui::ImageCursors) {} ~ShellNativeCursorManager() override {} // wm::NativeCursorManager overrides. void SetDisplay(const display::Display& display, wm::NativeCursorManagerDelegate* delegate) override { - if (cursor_loader_->SetDisplayData(display.panel_rotation(), - display.device_scale_factor())) + if (image_cursors_->SetDisplay(display, display.device_scale_factor())) SetCursor(delegate->GetCursor(), delegate); } void SetCursor(gfx::NativeCursor cursor, wm::NativeCursorManagerDelegate* delegate) override { - cursor_loader_->SetPlatformCursor(&cursor); - cursor.set_image_scale_factor(cursor_loader_->scale()); + image_cursors_->SetPlatformCursor(&cursor); + cursor.set_image_scale_factor(image_cursors_->GetScale()); delegate->CommitCursor(cursor); if (delegate->IsCursorVisible()) @@ -86,14 +86,14 @@ SetCursor(delegate->GetCursor(), delegate); } else { gfx::NativeCursor invisible_cursor(ui::mojom::CursorType::kNone); - cursor_loader_->SetPlatformCursor(&invisible_cursor); + image_cursors_->SetPlatformCursor(&invisible_cursor); SetCursorOnAllRootWindows(invisible_cursor); } } void SetCursorSize(ui::CursorSize cursor_size, wm::NativeCursorManagerDelegate* delegate) override { - cursor_loader_->set_size(cursor_size); + image_cursors_->SetCursorSize(cursor_size); delegate->CommitCursorSize(cursor_size); if (delegate->IsCursorVisible()) SetCursor(delegate->GetCursor(), delegate); @@ -115,8 +115,7 @@ ShellDesktopControllerAura* desktop_controller_; // Not owned. - std::unique_ptr<ui::CursorLoader> cursor_loader_ = - ui::CursorLoader::Create(/*use_platform_cursors=*/false); + std::unique_ptr<ui::ImageCursors> image_cursors_; DISALLOW_COPY_AND_ASSIGN(ShellNativeCursorManager); };
diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc index 1a34f07a..6b8aa52 100644 --- a/gpu/command_buffer/service/webgpu_decoder_impl.cc +++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc
@@ -909,12 +909,12 @@ static_cast<DawnRequestAdapterSerial>(c.request_adapter_serial); if (gr_context_type_ != GrContextType::kVulkan) { -#if defined(OS_LINUX) +#if defined(OS_LINUX) || defined(OS_CHROMEOS) SendAdapterProperties(request_adapter_serial, -1, nullptr, "WebGPU on Linux requires command-line flag " "--enable-features=Vulkan,UseSkiaRenderer"); return error::kNoError; -#endif // defined(OS_LINUX) +#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) } int32_t requested_adapter_index = GetPreferredAdapterIndex(power_preference);
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg index 1f5727d..1134fa35 100644 --- a/infra/config/generated/cr-buildbucket.cfg +++ b/infra/config/generated/cr-buildbucket.cfg
@@ -38,10 +38,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -75,10 +71,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -112,10 +104,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -149,10 +137,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -186,10 +170,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -223,10 +203,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -260,10 +236,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -297,10 +269,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -334,10 +302,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -371,10 +335,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -418,10 +378,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -465,10 +421,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -512,10 +464,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -559,10 +507,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -606,10 +550,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -653,10 +593,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -700,10 +636,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -747,10 +679,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -794,10 +722,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -841,10 +765,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -888,10 +808,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -935,10 +851,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -982,10 +894,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1029,10 +937,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1076,10 +980,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1123,10 +1023,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1160,10 +1056,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1197,10 +1089,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1234,10 +1122,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1271,10 +1155,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1308,10 +1188,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1345,10 +1221,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1382,10 +1254,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1419,10 +1287,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1456,10 +1320,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1493,10 +1353,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1530,10 +1386,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1567,10 +1419,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1604,10 +1452,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1641,10 +1485,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1678,10 +1518,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1725,10 +1561,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1772,10 +1604,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1809,10 +1637,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1846,10 +1670,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1883,10 +1703,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1920,10 +1736,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1957,10 +1769,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -1994,10 +1802,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2031,10 +1835,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2068,10 +1868,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2103,10 +1899,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2138,10 +1930,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2175,10 +1963,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2212,10 +1996,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2249,10 +2029,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2286,10 +2062,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2323,10 +2095,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2360,10 +2128,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2397,10 +2161,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2434,10 +2194,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2471,10 +2227,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2508,10 +2260,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2545,10 +2293,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2582,10 +2326,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2619,10 +2359,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2656,10 +2392,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2693,10 +2425,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2730,10 +2458,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2767,10 +2491,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2804,10 +2524,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2841,10 +2557,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2878,10 +2590,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2915,10 +2623,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2952,10 +2656,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -2989,10 +2689,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3026,10 +2722,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3063,10 +2755,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3110,10 +2798,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3157,10 +2841,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3204,10 +2884,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3249,10 +2925,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3294,10 +2966,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3339,10 +3007,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3386,10 +3050,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3433,10 +3093,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3480,10 +3136,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3527,10 +3179,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3574,10 +3222,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3621,10 +3265,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3668,10 +3308,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3715,10 +3351,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3762,10 +3394,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3809,10 +3437,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3856,10 +3480,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3903,10 +3523,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3948,10 +3564,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -3993,10 +3605,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4040,10 +3648,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4087,10 +3691,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4134,10 +3734,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4171,10 +3767,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4208,10 +3800,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4245,10 +3833,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4282,10 +3866,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4318,10 +3898,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4355,10 +3931,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4392,10 +3964,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4429,10 +3997,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4466,10 +4030,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4503,10 +4063,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4540,10 +4096,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4576,10 +4128,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4612,10 +4160,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4649,10 +4193,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4686,10 +4226,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4723,10 +4259,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4760,10 +4292,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4797,10 +4325,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4834,10 +4358,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4871,10 +4391,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4908,10 +4424,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4945,10 +4457,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -4982,10 +4490,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5019,10 +4523,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5056,10 +4556,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5093,10 +4589,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5140,10 +4632,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5187,10 +4675,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5234,10 +4718,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5281,10 +4761,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5328,10 +4804,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5375,10 +4847,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5422,10 +4890,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5469,10 +4933,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5516,10 +4976,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5563,10 +5019,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5610,10 +5062,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5657,10 +5105,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5704,10 +5148,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5751,10 +5191,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5798,10 +5234,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5835,10 +5267,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5872,10 +5300,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5909,10 +5333,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5946,10 +5366,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -5983,10 +5399,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6030,10 +5442,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6067,10 +5475,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6104,10 +5508,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6141,10 +5541,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6289,10 +5685,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6326,10 +5718,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6363,10 +5751,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6400,10 +5784,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6436,10 +5816,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6472,10 +5848,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6507,10 +5879,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6543,10 +5911,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6578,10 +5942,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6613,10 +5973,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6684,10 +6040,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6731,10 +6083,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6778,10 +6126,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6825,10 +6169,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6872,10 +6212,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6917,10 +6253,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -6964,10 +6296,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7011,10 +6339,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7058,10 +6382,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7105,10 +6425,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7152,10 +6468,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7197,10 +6509,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7244,10 +6552,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7291,10 +6595,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7338,10 +6638,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7385,10 +6681,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7432,10 +6724,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7479,10 +6767,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7596,10 +6880,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7633,10 +6913,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7670,10 +6946,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7707,10 +6979,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7744,10 +7012,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7781,10 +7045,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7818,10 +7078,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7855,10 +7111,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7892,10 +7144,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7929,10 +7177,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -7966,10 +7210,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8003,10 +7243,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8040,10 +7276,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8076,10 +7308,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8113,10 +7341,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8150,10 +7374,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8187,10 +7407,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8261,10 +7477,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8298,10 +7510,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8335,10 +7543,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8372,10 +7576,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8409,10 +7609,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8446,10 +7642,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8483,10 +7675,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8520,10 +7708,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8557,10 +7741,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8594,10 +7774,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8631,10 +7807,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8668,10 +7840,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8704,10 +7872,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8741,10 +7905,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8778,10 +7938,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8815,10 +7971,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8852,10 +8004,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8889,10 +8037,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8926,10 +8070,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -8963,10 +8103,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9000,10 +8136,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9037,10 +8169,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9074,10 +8202,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9111,10 +8235,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9148,10 +8268,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9185,10 +8301,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9222,10 +8334,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9259,10 +8367,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9296,10 +8400,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9336,10 +8436,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9376,10 +8472,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9413,10 +8505,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9450,10 +8538,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9487,10 +8571,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9561,10 +8641,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9598,10 +8674,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9635,10 +8707,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9671,10 +8739,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9743,10 +8807,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9779,10 +8839,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9815,10 +8871,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9851,10 +8903,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9887,10 +8935,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9923,10 +8967,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9960,10 +9000,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -9997,10 +9033,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10044,10 +9076,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10091,10 +9119,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10138,10 +9162,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10185,10 +9205,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10232,10 +9248,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10279,10 +9291,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10326,10 +9334,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10373,10 +9377,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10420,10 +9420,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10467,10 +9463,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10514,10 +9506,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10561,10 +9549,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10608,10 +9592,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10655,10 +9635,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10701,10 +9677,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10737,10 +9709,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10846,10 +9814,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10893,10 +9857,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10939,10 +9899,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -10976,10 +9932,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11023,10 +9975,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11070,10 +10018,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11117,10 +10061,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11164,10 +10104,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11211,10 +10147,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11257,10 +10189,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11293,10 +10221,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11329,10 +10253,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11366,10 +10286,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11403,10 +10319,6 @@ build_numbers: YES service_account: "chromium-cipd-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11440,10 +10352,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11477,10 +10385,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11514,10 +10418,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11551,10 +10451,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11588,10 +10484,6 @@ build_numbers: YES service_account: "chromium-cipd-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11625,10 +10517,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11662,10 +10550,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11773,10 +10657,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11810,10 +10690,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11847,10 +10723,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11884,10 +10756,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11921,10 +10789,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11958,10 +10822,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -11995,10 +10855,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12032,10 +10888,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12066,10 +10918,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12103,10 +10951,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12140,10 +10984,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12177,10 +11017,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12214,10 +11050,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12251,10 +11083,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12358,10 +11186,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12395,10 +11219,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12432,10 +11252,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12469,10 +11285,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12506,10 +11318,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12543,10 +11351,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12580,10 +11384,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12617,10 +11417,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12654,10 +11450,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12691,10 +11483,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12728,10 +11516,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12765,10 +11549,6 @@ build_numbers: YES service_account: "chromium-cipd-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12802,10 +11582,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12839,10 +11615,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12876,10 +11648,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12913,10 +11681,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -12950,10 +11714,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -13024,10 +11784,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -13061,10 +11817,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -13098,10 +11850,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -13135,10 +11883,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -13172,10 +11916,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -13357,10 +12097,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -13394,10 +12130,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -13431,10 +12163,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -13509,10 +12237,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -13548,10 +12272,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -13705,10 +12425,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -13783,10 +12499,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -14196,10 +12908,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -14233,10 +12941,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -14307,10 +13011,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -14638,10 +13338,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -14712,10 +13408,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -14897,10 +13589,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15008,10 +13696,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15082,10 +13766,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15118,10 +13798,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15155,10 +13831,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15229,10 +13901,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15266,10 +13934,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15303,10 +13967,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15340,10 +14000,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15377,10 +14033,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15414,10 +14066,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15451,10 +14099,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15488,10 +14132,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15562,10 +14202,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15712,10 +14348,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15748,10 +14380,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15783,10 +14411,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15820,10 +14444,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15929,10 +14549,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -15964,10 +14580,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -16071,10 +14683,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -16366,10 +14974,6 @@ build_numbers: YES service_account: "component-mapping-updater@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -16544,10 +15148,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -16580,10 +15180,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -16617,10 +15213,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -16653,10 +15245,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -16689,10 +15277,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -16725,10 +15309,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -16869,10 +15449,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -16906,10 +15482,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -16943,10 +15515,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -16980,10 +15548,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -17017,10 +15581,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -17054,10 +15614,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -17091,10 +15647,6 @@ build_numbers: YES service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -17237,10 +15789,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -17273,10 +15821,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 } @@ -17345,10 +15889,6 @@ build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" experiments { - key: "chromium.resultdb.result_sink" - value: 10 - } - experiments { key: "luci.use_realms" value: 100 }
diff --git a/infra/config/lib/ci.star b/infra/config/lib/ci.star index 86dcb37..ae1b196 100644 --- a/infra/config/lib/ci.star +++ b/infra/config/lib/ci.star
@@ -339,7 +339,6 @@ tree_closing = False, notifies = None, resultdb_bigquery_exports = None, - experiments = None, **kwargs): """Define a CI builder. @@ -394,11 +393,6 @@ ] merged_resultdb_bigquery_exports.extend(resultdb_bigquery_exports or []) - if not experiments or experiments.get("chromium.resultdb.result_sink") == None: - # Enable "chromium.resultdb.result_sink" on all ci builders for 10% by default. - experiments = experiments or {} - experiments["chromium.resultdb.result_sink"] = 10 - # Define the builder first so that any validation of luci.builder arguments # (e.g. bucket) occurs before we try to use it builders.builder( @@ -406,7 +400,6 @@ branch_selector = branch_selector, resultdb_bigquery_exports = merged_resultdb_bigquery_exports, notifies = notifies, - experiments = experiments, **kwargs )
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb index 6a61f0e..1d50722 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb
@@ -69,6 +69,7 @@ <translation id="8240981428553046115">Chromiumএ আপডে’টৰ বাবে পৰীক্ষা কৰিব নোৱাৰিলে। পাছত পুনৰ চেষ্টা কৰক।</translation> <translation id="8252885722420466166">আপোনাৰ অৱস্থানৰ ভিত্তিত Chromiumত Google ব্যৱহাৰৰ উৎকৃষ্ট অভিজ্ঞতা লাভ কৰক।</translation> <translation id="8586442755830160949">স্বত্ত্বাধিকাৰ <ph name="YEAR" /> The Chromium Authors. সর্বস্বত্ব সংৰক্ষিত।</translation> +<translation id="8663480472502753423">Chromium আপ টু ডে’ট কৰি ৰাখক</translation> <translation id="8776843108004031667">এই একাউণ্টটো আৰু যিকোনো ছেভ নকৰা ডেটা Chromiumৰ পৰা আঁতৰোৱা হ’ব।</translation> <translation id="9022552996538154597">Chromiumত ছাইন ইন কৰক</translation> <translation id="9089354809943900324">Chromiumটো অতি পুৰণি</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_es-419.xtb index 9966c155..6a530f17 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_es-419.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_es-419.xtb
@@ -69,6 +69,7 @@ <translation id="8240981428553046115">Chromium no pudo buscar actualizaciones. Vuelve a intentarlo más tarde.</translation> <translation id="8252885722420466166">Obtén una mejor experiencia de Google en Chromium según tu ubicación.</translation> <translation id="8586442755830160949">Copyright <ph name="YEAR" /> Los autores de Chromium. Todos los derechos reservados.</translation> +<translation id="8663480472502753423">Mantén Chromium actualizado</translation> <translation id="8776843108004031667">Esta cuenta y todos los datos sin guardar se quitarán de Chromium.</translation> <translation id="9022552996538154597">Iniciar sesión en Chromium</translation> <translation id="9089354809943900324">Chromium no actualizado</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-CN.xtb index 0e03c9a..b0a6b03a 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-CN.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-CN.xtb
@@ -69,6 +69,7 @@ <translation id="8240981428553046115">Chromium 无法检查是否有更新。请稍后再试。</translation> <translation id="8252885722420466166">Chromium 可根据您的位置信息为您提供更好的 Google 产品使用体验。</translation> <translation id="8586442755830160949">版权所有<ph name="YEAR" /> The Chromium Authors。保留所有权利。</translation> +<translation id="8663480472502753423">让 Chromium 保持最新状态</translation> <translation id="8776843108004031667">系统会从 Chromium 中移除此帐号以及所有未保存的数据。</translation> <translation id="9022552996538154597">登录 Chromium</translation> <translation id="9089354809943900324">Chromium版本太旧</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_as.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_as.xtb index 5fab51aa..9a42a30 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_as.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_as.xtb
@@ -54,6 +54,7 @@ <translation id="6648150602980899529">আপুনি <ph name="DOMAIN" />এ পৰিচালনা কৰা এটা একাউণ্টৰ জৰিয়তে ছাইন ইন কৰিছে আৰু সেইটোৰ প্ৰশাসকে আপোনাৰ Chrome ডেটা নিয়ন্ত্ৰণ কৰিবলৈ সুবিধা দিছে। আপোনাৰ ডেটা এই একাউণ্টটোৰ সৈতে স্থায়ীভাৱে সংযুক্ত হৈ থাকিব। Chromeৰ পৰা ছাইন আউট কৰিলে আপোনাৰ ডেটা মচা যাব কিন্ত সেইবোৰ আপোনাৰ Google একাউণ্টত জমা হৈয়ে থাকিব।</translation> <translation id="6676840375528380067">এই ডিভাইচটোৰ পৰা Chrome ডেটা মচিবনে?</translation> <translation id="6822673484890854830">Chromeএ সকলো পাছৱৰ্ড পৰীক্ষা কৰিব নোৱাৰিলে। পাছত পুনৰ চেষ্টা কৰক।</translation> +<translation id="7124339256045485976">Chrome আপ টু ডে’ট কৰি ৰাখক</translation> <translation id="7161390184744336561">Google Chrome পুৰণি হৈছে</translation> <translation id="7165736900384873061">Google Chrome QR স্কেনাৰ ব্যৱহাৰ কৰিবলৈ আৰম্ভ কৰক</translation> <translation id="7172660552945675509">দিহা: <ph name="BEGIN_LINK" />আপোনাৰ ড’কলৈ Chromeক আঁতৰাওক<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_es-419.xtb index ec0cc70..78af894 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_es-419.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_es-419.xtb
@@ -55,6 +55,7 @@ <translation id="6648150602980899529">Estás accediendo con una cuenta administrada por <ph name="DOMAIN" /> y dándole permiso a su administrador para que controle tus datos de Chrome. Tus datos se vincularán de forma permanente a esta cuenta. Si sales de Chrome, tus datos se borrarán en este dispositivo, pero quedarán guardados en tu cuenta de Google.</translation> <translation id="6676840375528380067">¿Quieres borrar tus datos de Chrome de este dispositivo?</translation> <translation id="6822673484890854830">Chrome no pudo verificar todas las contraseñas. Vuelve a intentarlo más tarde.</translation> +<translation id="7124339256045485976">Mantén Chrome actualizado</translation> <translation id="7161390184744336561">Google Chrome está desactualizado</translation> <translation id="7165736900384873061">Usar el escáner QR en Google Chrome</translation> <translation id="7172660552945675509">Sugerencia: <ph name="BEGIN_LINK" />Lleva Chrome a tu Dock<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-CN.xtb index d383ec0..c3e35b2 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-CN.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-CN.xtb
@@ -55,6 +55,7 @@ <translation id="6648150602980899529">您正要登录由 <ph name="DOMAIN" /> 管理的帐号,并要授权其管理员控制您的 Chrome 数据。您的数据将与此帐号永久关联。退出 Chrome 后,您的数据将从这台设备上删除,但仍会保留在您的 Google 帐号中。</translation> <translation id="6676840375528380067">从这部设备中清除您的 Chrome 数据?</translation> <translation id="6822673484890854830">Chrome 无法检查所有密码。请稍后再试。</translation> +<translation id="7124339256045485976">让 Chrome 保持最新状态</translation> <translation id="7161390184744336561">Google Chrome 版本太旧</translation> <translation id="7165736900384873061">开始使用 Google Chrome QR 码扫描器</translation> <translation id="7172660552945675509">提示:<ph name="BEGIN_LINK" />将 Chrome 移到 Dock 中<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_as.xtb b/ios/chrome/app/strings/resources/ios_strings_as.xtb index c680e12..5112f5ed 100644 --- a/ios/chrome/app/strings/resources/ios_strings_as.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_as.xtb
@@ -61,6 +61,7 @@ <translation id="1545749641540134597">কিউআৰ ক’ড স্কেন কৰক</translation> <translation id="1552525382687785070">আপোনাৰ প্ৰশাসকে ছিংক অক্ষম কৰিছে</translation> <translation id="1554477036522844996">নতুন ৱিণ্ড’</translation> +<translation id="1580715474678097352">বিপজ্জনক ৱেবছাইটৰ পৰা সুৰক্ষিত হৈ থাকক</translation> <translation id="1580783302095112590">মেইল পঠিওৱা হ'ল।</translation> <translation id="1582732959743469162">এই কার্যয়ে আপোনাৰ বর্তমানৰ ডাউনল’ডৰ সকলো প্ৰগতি বন্ধ কৰিব।</translation> <translation id="1605405588277479165">অফ আছে - চুপাৰিছ কৰা নহয়</translation> @@ -725,6 +726,8 @@ <translation id="9087108903408689779">Chromeএ চুপাৰিছ কৰা পাছৱৰ্ড:</translation> <translation id="9094033019050270033">পাছৱৰ্ড আপডে’ট কৰক</translation> <translation id="9100610230175265781">পাছফ্ৰেজ আৱশ্যক</translation> +<translation id="9107664647686727385">পাছৱৰ্ড হেক কৰা হৈছেনে নাই পৰীক্ষা কৰক</translation> +<translation id="9137526406337347448">Google সেৱা</translation> <translation id="9148126808321036104">আকৌ ছাইন ইন কৰক</translation> <translation id="9152539721251340337">এটা কিউআৰ ক’ড সৃষ্টি কৰক</translation> <translation id="9157836665414082580">ডায়ল'গ লুকুৱাওক</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 0adabc2..0770a67 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -61,6 +61,7 @@ <translation id="1545749641540134597">Escanear código QR</translation> <translation id="1552525382687785070">Tu administrador inhabilitó la sincronización</translation> <translation id="1554477036522844996">Nueva ventana</translation> +<translation id="1580715474678097352">Protégete de sitios web peligrosos</translation> <translation id="1580783302095112590">Correo enviado</translation> <translation id="1582732959743469162">Esta acción detendrá el progreso de la descarga actual.</translation> <translation id="1605405588277479165">Desactivada (no se recomienda)</translation> @@ -728,6 +729,7 @@ <translation id="9087108903408689779">Contraseña sugerida de Chrome:</translation> <translation id="9094033019050270033">Actualizar contraseña</translation> <translation id="9100610230175265781">Se necesita una frase de contraseña.</translation> +<translation id="9107664647686727385">Verifica si hay contraseñas hackeadas</translation> <translation id="9137526406337347448">Servicios de Google</translation> <translation id="9148126808321036104">Accede nuevamente</translation> <translation id="9152539721251340337">Crear un código QR</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 a7d56b9..0af436d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -61,6 +61,7 @@ <translation id="1545749641540134597">扫描 QR 码</translation> <translation id="1552525382687785070">您的管理员已停用同步功能</translation> <translation id="1554477036522844996">打开新的窗口</translation> +<translation id="1580715474678097352">时刻保护您免受危险网站的侵害</translation> <translation id="1580783302095112590">邮件已发送。</translation> <translation id="1582732959743469162">这会全面停止您正在执行的下载任务。</translation> <translation id="1605405588277479165">关闭 - 不推荐</translation> @@ -728,6 +729,7 @@ <translation id="9087108903408689779">Chrome 建议的密码:</translation> <translation id="9094033019050270033">更新密码</translation> <translation id="9100610230175265781">必须提供密码</translation> +<translation id="9107664647686727385">检查是否有已泄露的密码</translation> <translation id="9137526406337347448">Google 服务</translation> <translation id="9148126808321036104">重新登录</translation> <translation id="9152539721251340337">生成二维码</translation>
diff --git a/ios/chrome/browser/metrics/BUILD.gn b/ios/chrome/browser/metrics/BUILD.gn index c4be26e4..56658c3 100644 --- a/ios/chrome/browser/metrics/BUILD.gn +++ b/ios/chrome/browser/metrics/BUILD.gn
@@ -10,7 +10,7 @@ ] deps = [ "//base", - "//components/metrics:demographic_metrics_provider", + "//components/metrics/demographics", "//components/network_time", "//ios/chrome/browser", "//ios/chrome/browser/browser_state", @@ -51,9 +51,9 @@ "//components/keyed_service/core", "//components/keyed_service/ios", "//components/metrics", - "//components/metrics:demographic_metrics_provider", "//components/metrics:net", "//components/metrics:ui", + "//components/metrics/demographics", "//components/metrics_services_manager", "//components/navigation_metrics", "//components/omnibox/browser", @@ -247,7 +247,7 @@ ":eg_test_support+eg2", ":tab_usage_recorder_metrics", "//base/test:test_support", - "//components/metrics:demographic_metrics_provider", + "//components/metrics/demographics", "//components/strings:components_strings_grit", "//components/ukm", "//ios/chrome/app/strings:ios_strings_grit", @@ -290,7 +290,7 @@ "//base", "//base/test:test_support", "//components/metrics", - "//components/metrics:demographics_test_support", + "//components/metrics/demographics:test_support", "//components/metrics_services_manager", "//components/network_time", "//components/prefs",
diff --git a/ios/chrome/browser/metrics/chrome_browser_state_client.h b/ios/chrome/browser/metrics/chrome_browser_state_client.h index c14f05a..1c01ac6 100644 --- a/ios/chrome/browser/metrics/chrome_browser_state_client.h +++ b/ios/chrome/browser/metrics/chrome_browser_state_client.h
@@ -6,7 +6,7 @@ #define IOS_CHROME_BROWSER_METRICS_CHROME_BROWSER_STATE_CLIENT_H_ #include "base/macros.h" -#include "components/metrics/demographic_metrics_provider.h" +#include "components/metrics/demographics/demographic_metrics_provider.h" namespace metrics {
diff --git a/ios/chrome/browser/metrics/demographics_egtest.mm b/ios/chrome/browser/metrics/demographics_egtest.mm index c65d2d96..2ebb558 100644 --- a/ios/chrome/browser/metrics/demographics_egtest.mm +++ b/ios/chrome/browser/metrics/demographics_egtest.mm
@@ -4,7 +4,7 @@ #include "base/macros.h" #include "base/time/time.h" -#include "components/metrics/demographic_metrics_provider.h" +#include "components/metrics/demographics/demographic_metrics_provider.h" #include "components/ukm/ukm_service.h" #import "ios/chrome/browser/metrics/metrics_app_interface.h" #import "ios/chrome/browser/ui/authentication/signin_earl_grey.h"
diff --git a/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm b/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm index d564a273..d4e045e 100644 --- a/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm +++ b/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm
@@ -32,7 +32,7 @@ #include "components/keyed_service/core/service_access_type.h" #include "components/metrics/call_stack_profile_metrics_provider.h" #include "components/metrics/cpu_metrics_provider.h" -#include "components/metrics/demographic_metrics_provider.h" +#include "components/metrics/demographics/demographic_metrics_provider.h" #include "components/metrics/drive_metrics_provider.h" #include "components/metrics/field_trials_provider.h" #include "components/metrics/metrics_log_uploader.h"
diff --git a/ios/chrome/browser/metrics/metrics_app_interface.mm b/ios/chrome/browser/metrics/metrics_app_interface.mm index cb2d96b..448e1fb3 100644 --- a/ios/chrome/browser/metrics/metrics_app_interface.mm +++ b/ios/chrome/browser/metrics/metrics_app_interface.mm
@@ -10,8 +10,8 @@ #include "base/stl_util.h" #include "base/strings/sys_string_conversions.h" #import "base/test/ios/wait_util.h" +#include "components/metrics/demographics/demographic_metrics_test_utils.h" #include "components/metrics/metrics_service.h" -#include "components/metrics/test/demographic_metrics_test_utils.h" #include "components/metrics_services_manager/metrics_services_manager.h" #include "components/network_time/network_time_tracker.h" #include "components/ukm/ukm_service.h"
diff --git a/ios/chrome/browser/ui/settings/google_services/accounts_table_egtest.mm b/ios/chrome/browser/ui/settings/google_services/accounts_table_egtest.mm index b58c41c..bcfa5e0 100644 --- a/ios/chrome/browser/ui/settings/google_services/accounts_table_egtest.mm +++ b/ios/chrome/browser/ui/settings/google_services/accounts_table_egtest.mm
@@ -23,8 +23,8 @@ #error "This file requires ARC support." #endif +using chrome_test_util::AddAccountButton; using chrome_test_util::ButtonWithAccessibilityLabel; -using chrome_test_util::ButtonWithAccessibilityLabelId; using chrome_test_util::PrimarySignInButton; using chrome_test_util::SettingsAccountButton; using chrome_test_util::SettingsDoneButton; @@ -153,6 +153,27 @@ performAction:grey_tap()]; } +// Tests that the Settings screen is displayed after the user signs in through +// the add account flow from the account list screen entrypoint. +- (void)testSSOAddAccount { + FakeChromeIdentity* fakeIdentity = [SigninEarlGrey fakeIdentity1]; + [SigninEarlGreyUI signinWithFakeIdentity:fakeIdentity]; + + [ChromeEarlGreyUI openSettingsMenu]; + [ChromeEarlGreyUI tapSettingsMenuButton:SettingsAccountButton()]; + [[EarlGrey selectElementWithMatcher:AddAccountButton()] + performAction:grey_tap()]; + [[EarlGrey + selectElementWithMatcher:grey_allOf( + ButtonWithAccessibilityLabel(@"Sign in"), + grey_sufficientlyVisible(), nil)] + performAction:grey_tap()]; + + [ChromeEarlGreyUI waitForAppToIdle]; + [[EarlGrey selectElementWithMatcher:SettingsAccountButton()] + assertWithMatcher:grey_sufficientlyVisible()]; +} + // Tests that the Account Settings screen is popped and the user signed out // when the account is removed. - (void)testSignOutOnRemoveAccount {
diff --git a/ios/chrome/browser/ui/settings/google_services/accounts_table_view_controller.mm b/ios/chrome/browser/ui/settings/google_services/accounts_table_view_controller.mm index 2485838..a3aa98f5 100644 --- a/ios/chrome/browser/ui/settings/google_services/accounts_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/google_services/accounts_table_view_controller.mm
@@ -389,9 +389,16 @@ - (void)onEndBatchOfRefreshTokenStateChanges { [self reloadData]; - [self popViewIfSignedOut]; - if (![self authService] -> IsAuthenticated() && - _dimissAccountDetailsViewControllerBlock) { + if (self.authService->IsAuthenticated() || + _authenticationOperationInProgress) { + // The signed out state might be temporary (e.g. account switch, ...). + // Don't pop this view based on intermediary values. + return; + } + + [self dismissSelfAnimated:NO]; + + if (_dimissAccountDetailsViewControllerBlock) { _dimissAccountDetailsViewControllerBlock(/*animated=*/YES); _dimissAccountDetailsViewControllerBlock = nil; } @@ -418,8 +425,12 @@ } - (void)handleDidAddAccount:(BOOL)success { + if (!success) { + return; + } + [self handleAuthenticationOperationDidFinish]; - if (success && _closeSettingsOnAddAccount) { + if (_closeSettingsOnAddAccount) { [self.dispatcher closeSettingsUI]; } } @@ -569,23 +580,10 @@ } } -// Sets |_authenticationOperationInProgress| to NO and pops this accounts -// table view controller if the user is signed out. +// Finishes the authentication flow and dismisses the accounts view. - (void)handleAuthenticationOperationDidFinish { DCHECK(_authenticationOperationInProgress); _authenticationOperationInProgress = NO; - [self popViewIfSignedOut]; -} - -- (void)popViewIfSignedOut { - if ([self authService] -> IsAuthenticated()) { - return; - } - if (_authenticationOperationInProgress) { - // The signed out state might be temporary (e.g. account switch, ...). - // Don't pop this view based on intermediary values. - return; - } [self dismissSelfAnimated:NO]; }
diff --git a/ios/chrome/test/app/BUILD.gn b/ios/chrome/test/app/BUILD.gn index d71d86bf..de1d48e 100644 --- a/ios/chrome/test/app/BUILD.gn +++ b/ios/chrome/test/app/BUILD.gn
@@ -42,7 +42,7 @@ "//components/history/core/browser", "//components/keyed_service/core", "//components/metrics", - "//components/metrics:demographics_test_support", + "//components/metrics/demographics:test_support", "//components/prefs", "//components/previous_session_info", "//components/signin/public/base",
diff --git a/ios/chrome/test/app/sync_test_util.mm b/ios/chrome/test/app/sync_test_util.mm index 14dc484..78ab44e 100644 --- a/ios/chrome/test/app/sync_test_util.mm +++ b/ios/chrome/test/app/sync_test_util.mm
@@ -17,7 +17,7 @@ #include "components/autofill/core/browser/personal_data_manager.h" #include "components/history/core/browser/history_service.h" #include "components/keyed_service/core/service_access_type.h" -#include "components/metrics/test/demographic_metrics_test_utils.h" +#include "components/metrics/demographics/demographic_metrics_test_utils.h" #include "components/sync/base/pref_names.h" #include "components/sync/driver/profile_sync_service.h" #include "components/sync/driver/sync_service.h"
diff --git a/ios/chrome/test/earl_grey/BUILD.gn b/ios/chrome/test/earl_grey/BUILD.gn index 85b2f56d..461e8ec 100644 --- a/ios/chrome/test/earl_grey/BUILD.gn +++ b/ios/chrome/test/earl_grey/BUILD.gn
@@ -61,7 +61,7 @@ "//components/autofill/core/browser", "//components/browsing_data/core", "//components/content_settings/core/browser", - "//components/metrics:demographic_metrics_provider", + "//components/metrics/demographics", "//components/prefs", "//components/strings", "//components/sync/base",
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 fd4f648f..2fd871e 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
@@ -13,7 +13,7 @@ #include "components/autofill/core/common/autofill_features.h" #include "components/browsing_data/core/pref_names.h" #include "components/content_settings/core/browser/host_content_settings_map.h" -#include "components/metrics/demographic_metrics_provider.h" +#include "components/metrics/demographics/demographic_metrics_provider.h" #include "components/prefs/pref_service.h" #import "components/ukm/ios/features.h" #include "components/unified_consent/unified_consent_service.h"
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 81e902cc..97ac554e 100644 --- a/ios/components/webui/sync_internals/sync_internals_message_handler.mm +++ b/ios/components/webui/sync_internals/sync_internals_message_handler.mm
@@ -12,8 +12,8 @@ #include "base/logging.h" #include "base/values.h" #include "components/sync/base/weak_handle.h" -#include "components/sync/driver/about_sync_util.h" #include "components/sync/driver/sync_driver_switches.h" +#include "components/sync/driver/sync_internals_util.h" #include "components/sync/driver/sync_service.h" #include "components/sync/driver/sync_user_settings.h" #include "components/sync/engine/events/protocol_event.h"
diff --git a/ios/components/webui/sync_internals/sync_internals_ui.mm b/ios/components/webui/sync_internals/sync_internals_ui.mm index b6b8e0f..182ddc3 100644 --- a/ios/components/webui/sync_internals/sync_internals_ui.mm +++ b/ios/components/webui/sync_internals/sync_internals_ui.mm
@@ -7,7 +7,7 @@ #include <memory> #include "components/grit/sync_driver_resources.h" -#include "components/sync/driver/about_sync_util.h" +#include "components/sync/driver/sync_internals_util.h" #include "ios/components/webui/sync_internals/sync_internals_message_handler.h" #include "ios/components/webui/web_ui_url_constants.h" #include "ios/web/public/browser_state.h"
diff --git a/ios/public/provider/chrome/browser/signin/fake_chrome_identity_interaction_manager.mm b/ios/public/provider/chrome/browser/signin/fake_chrome_identity_interaction_manager.mm index 2b0272a..331ada5 100644 --- a/ios/public/provider/chrome/browser/signin/fake_chrome_identity_interaction_manager.mm +++ b/ios/public/provider/chrome/browser/signin/fake_chrome_identity_interaction_manager.mm
@@ -125,8 +125,12 @@ } - (void)addAccountViewControllerDidTapSignIn { - ios::FakeChromeIdentityService::GetInstanceFromChromeProvider() - ->AddIdentity(_fakeIdentity); + // Fake sign-in is used to show a fake add an account screen. In this + // case _fakeIdentity will be nil. + if (_fakeIdentity) { + ios::FakeChromeIdentityService::GetInstanceFromChromeProvider() + ->AddIdentity(_fakeIdentity); + } [self dismissAndRunCompletionCallbackWithError:nil animated:YES completion:nil];
diff --git a/ios/web_view/internal/webui/web_view_sync_internals_ui.mm b/ios/web_view/internal/webui/web_view_sync_internals_ui.mm index 79f4113..56327f3 100644 --- a/ios/web_view/internal/webui/web_view_sync_internals_ui.mm +++ b/ios/web_view/internal/webui/web_view_sync_internals_ui.mm
@@ -4,7 +4,7 @@ #import "ios/web_view/internal/webui/web_view_sync_internals_ui.h" -#include "components/sync/driver/about_sync_util.h" +#include "components/sync/driver/sync_internals_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/net/http/http_stream_factory_unittest.cc b/net/http/http_stream_factory_unittest.cc index c6f6e0f51..a6f5279 100644 --- a/net/http/http_stream_factory_unittest.cc +++ b/net/http/http_stream_factory_unittest.cc
@@ -2111,9 +2111,7 @@ // TODO(https://crbug.com/1059250): Implement PRIORITY_UPDATE in // BidirectionalStreamQuicImpl. spdy::SpdyPriority priority = - version().UsesHttp3() - ? 1 - : ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); + ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); size_t spdy_headers_frame_length; int packet_num = 1; if (VersionUsesHttp3(version().transport_version)) { @@ -2248,9 +2246,7 @@ // TODO(https://crbug.com/1059250): Implement PRIORITY_UPDATE in // BidirectionalStreamQuicImpl. spdy::SpdyPriority priority = - version().UsesHttp3() - ? 1 - : ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); + ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); size_t spdy_headers_frame_length; int packet_num = 1; if (VersionUsesHttp3(version().transport_version)) {
diff --git a/net/quic/bidirectional_stream_quic_impl_unittest.cc b/net/quic/bidirectional_stream_quic_impl_unittest.cc index 1eb474f..fc953d9 100644 --- a/net/quic/bidirectional_stream_quic_impl_unittest.cc +++ b/net/quic/bidirectional_stream_quic_impl_unittest.cc
@@ -860,8 +860,7 @@ if (VersionUsesHttp3(version_.transport_version)) AddWrite(ConstructInitialSettingsPacket()); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); AddWrite(ConstructClientAckPacket(3, 1)); @@ -964,13 +963,12 @@ if (VersionUsesHttp3(version_.transport_version)) AddWrite(ConstructInitialSettingsPacket()); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, nullptr)); + GetNthClientInitiatedBidirectionalStreamId(0), kFin, DEFAULT_PRIORITY, + nullptr)); // SetRequest() again for second request as |request_headers_| was moved. SetRequest("GET", "/", DEFAULT_PRIORITY); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(1), kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(1), kFin, DEFAULT_PRIORITY, GetNthClientInitiatedBidirectionalStreamId(0), nullptr)); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); AddWrite(ConstructClientAckPacket(3, 1)); @@ -1046,8 +1044,7 @@ std::string header2 = ConstructDataHeader(kBody2.length()); std::vector<std::string> two_writes = {kBody1, kBody2}; AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), !kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); if (!version_.UsesHttp3()) { AddWrite( @@ -1187,7 +1184,8 @@ std::string header = ConstructDataHeader(strlen(kBody1)); if (version_.UsesHttp3()) { AddWrite(ConstructRequestHeadersAndMultipleDataFramesPacket( - !kFin, MEDIUM, &spdy_request_headers_frame_length, {header, kBody1})); + !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length, + {header, kBody1})); } else { AddWrite(ConstructRequestHeadersAndMultipleDataFramesPacket( !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length, {kBody1})); @@ -1305,7 +1303,7 @@ if (version_.UsesHttp3()) { AddWrite(ConstructRequestHeadersAndMultipleDataFramesPacket( - !kFin, MEDIUM, &spdy_request_headers_frame_length, + !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length, {header + kBody1 + header2 + kBody2})); } else { AddWrite(ConstructRequestHeadersAndMultipleDataFramesPacket( @@ -1510,8 +1508,7 @@ AddWrite(ConstructInitialSettingsPacket()); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), !kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); std::string header = ConstructDataHeader(strlen(kUploadData)); if (version_.UsesHttp3()) { @@ -1605,8 +1602,7 @@ if (VersionUsesHttp3(version_.transport_version)) AddWrite(ConstructInitialSettingsPacket()); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); AddWrite(ConstructClientAckPacket(3, 1)); @@ -1712,8 +1708,7 @@ AddWrite(ConstructInitialSettingsPacket()); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), !kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); std::string header = ConstructDataHeader(strlen(kUploadData)); @@ -1822,8 +1817,7 @@ if (VersionUsesHttp3(version_.transport_version)) AddWrite(ConstructInitialSettingsPacket()); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); Initialize(); @@ -1869,8 +1863,7 @@ if (VersionUsesHttp3(version_.transport_version)) AddWrite(ConstructInitialSettingsPacket()); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); // Why does QUIC ack Rst? Is this expected? @@ -1935,8 +1928,7 @@ AddWrite(ConstructInitialSettingsPacket()); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), !kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); Initialize(); @@ -2076,8 +2068,7 @@ AddWrite(ConstructInitialSettingsPacket()); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), !kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); AddWrite(ConstructClientEarlyRstStreamPacket()); @@ -2111,8 +2102,7 @@ AddWrite(ConstructInitialSettingsPacket()); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), !kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); AddWrite(ConstructClientAckAndRstStreamPacket(2, 1)); @@ -2170,8 +2160,7 @@ AddWrite(ConstructInitialSettingsPacket()); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), !kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); AddWrite(ConstructClientAckAndRstStreamPacket(2, 1)); @@ -2221,8 +2210,7 @@ AddWrite(ConstructInitialSettingsPacket()); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), !kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); AddWrite(ConstructClientAckPacket(3, 1)); AddWrite(ConstructClientRstStreamPacket()); @@ -2284,8 +2272,7 @@ AddWrite(ConstructInitialSettingsPacket()); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); AddWrite(ConstructRequestHeadersPacketInner( - GetNthClientInitiatedBidirectionalStreamId(0), !kFin, - version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, + GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length)); std::string header = ConstructDataHeader(strlen(kBody)); if (version_.UsesHttp3()) { @@ -2360,9 +2347,8 @@ if (VersionUsesHttp3(version_.transport_version)) AddWrite(ConstructInitialSettingsPacket()); client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE); - AddWrite(ConstructRequestHeadersPacket( - kFin, version_.UsesHttp3() ? MEDIUM : DEFAULT_PRIORITY, - &spdy_request_headers_frame_length)); + AddWrite(ConstructRequestHeadersPacket(kFin, DEFAULT_PRIORITY, + &spdy_request_headers_frame_length)); AddWrite(ConstructClientAckPacket(3, 1)); // Ack the data packet AddWrite(ConstructClientAckAndRstStreamPacket(4, 4));
diff --git a/net/quic/quic_flags_list.h b/net/quic/quic_flags_list.h index e04f3af..4d568f6 100644 --- a/net/quic/quic_flags_list.h +++ b/net/quic/quic_flags_list.h
@@ -313,7 +313,7 @@ // If true, QuicStream::kDefaultUrgency is 3, otherwise 1. QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_http3_new_default_urgency_value, - false) + true) // If true, close connection on packet serialization failures QUIC_FLAG(
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc index fd37fa1..4d27e24 100644 --- a/net/quic/quic_network_transaction_unittest.cc +++ b/net/quic/quic_network_transaction_unittest.cc
@@ -7704,12 +7704,6 @@ if (VersionUsesHttp3(version_.transport_version)) { mock_quic_data.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket(packet_num++)); - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker_->MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(0), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); } mock_quic_data.AddWrite( SYNCHRONOUS, @@ -7717,7 +7711,7 @@ packet_num++, GetNthClientInitiatedBidirectionalStreamId(0), true, false, VersionUsesHttp3(version_.transport_version) - ? MEDIUM + ? DEFAULT_PRIORITY : HttpProxyConnectJob::kH2QuicTunnelPriority, ConnectRequestHeaders("mail.example.org:443"), 0)); mock_quic_data.AddRead( @@ -7800,12 +7794,6 @@ if (VersionUsesHttp3(version_.transport_version)) { mock_quic_data.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket(packet_num++)); - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker_->MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(0), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); } mock_quic_data.AddWrite( SYNCHRONOUS, @@ -7813,7 +7801,7 @@ packet_num++, GetNthClientInitiatedBidirectionalStreamId(0), true, false, VersionUsesHttp3(version_.transport_version) - ? MEDIUM + ? DEFAULT_PRIORITY : HttpProxyConnectJob::kH2QuicTunnelPriority, ConnectRequestHeaders("mail.example.org:443"), 0)); mock_quic_data.AddRead( @@ -7900,12 +7888,6 @@ if (VersionUsesHttp3(version_.transport_version)) { mock_quic_data.AddWrite( SYNCHRONOUS, ConstructInitialSettingsPacket(write_packet_index++)); - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker_->MakePriorityPacket( - write_packet_index++, true, - GetNthClientInitiatedBidirectionalStreamId(0), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); } mock_quic_data.AddWrite( SYNCHRONOUS, @@ -7913,7 +7895,7 @@ write_packet_index++, GetNthClientInitiatedBidirectionalStreamId(0), true, false, VersionUsesHttp3(version_.transport_version) - ? MEDIUM + ? DEFAULT_PRIORITY : HttpProxyConnectJob::kH2QuicTunnelPriority, ConnectRequestHeaders("mail.example.org:443"), 0)); mock_quic_data.AddRead( @@ -8033,12 +8015,6 @@ if (VersionUsesHttp3(version_.transport_version)) { mock_quic_data.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket(packet_num++)); - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker_->MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(0), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); } // CONNECT request and response for first request @@ -8048,7 +8024,7 @@ packet_num++, GetNthClientInitiatedBidirectionalStreamId(0), true, false, VersionUsesHttp3(version_.transport_version) - ? MEDIUM + ? DEFAULT_PRIORITY : HttpProxyConnectJob::kH2QuicTunnelPriority, ConnectRequestHeaders("mail.example.org:443"), 0)); mock_quic_data.AddRead( @@ -8082,21 +8058,13 @@ ConstructClientAckPacket(packet_num++, 3, 2)); // CONNECT request and response for second request - if (VersionUsesHttp3(version_.transport_version)) { - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker_->MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(1), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); - } mock_quic_data.AddWrite( SYNCHRONOUS, ConstructClientRequestHeadersPacket( packet_num++, GetNthClientInitiatedBidirectionalStreamId(1), false, false, VersionUsesHttp3(version_.transport_version) - ? MEDIUM + ? DEFAULT_PRIORITY : HttpProxyConnectJob::kH2QuicTunnelPriority, ConnectRequestHeaders("different.example.org:443"), GetNthClientInitiatedBidirectionalStreamId(0))); @@ -8207,12 +8175,6 @@ if (VersionUsesHttp3(version_.transport_version)) { mock_quic_data.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket(packet_num++)); - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker_->MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(0), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); } mock_quic_data.AddWrite( SYNCHRONOUS, @@ -8220,7 +8182,7 @@ packet_num++, GetNthClientInitiatedBidirectionalStreamId(0), true, false, VersionUsesHttp3(version_.transport_version) - ? MEDIUM + ? DEFAULT_PRIORITY : HttpProxyConnectJob::kH2QuicTunnelPriority, ConnectRequestHeaders("mail.example.org:443"), 0)); mock_quic_data.AddRead( @@ -8264,12 +8226,6 @@ if (VersionUsesHttp3(version_.transport_version)) { mock_quic_data.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket(packet_num++)); - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker_->MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(0), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); } mock_quic_data.AddWrite( SYNCHRONOUS, @@ -8277,7 +8233,7 @@ packet_num++, GetNthClientInitiatedBidirectionalStreamId(0), true, false, VersionUsesHttp3(version_.transport_version) - ? MEDIUM + ? DEFAULT_PRIORITY : HttpProxyConnectJob::kH2QuicTunnelPriority, ConnectRequestHeaders("mail.example.org:443"), 0)); mock_quic_data.AddRead(ASYNC, ERR_CONNECTION_FAILED); @@ -8311,12 +8267,6 @@ if (VersionUsesHttp3(version_.transport_version)) { mock_quic_data.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket(packet_num++)); - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker_->MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(0), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); } mock_quic_data.AddWrite( SYNCHRONOUS, @@ -8324,7 +8274,7 @@ packet_num++, GetNthClientInitiatedBidirectionalStreamId(0), true, false, VersionUsesHttp3(version_.transport_version) - ? MEDIUM + ? DEFAULT_PRIORITY : HttpProxyConnectJob::kH2QuicTunnelPriority, ConnectRequestHeaders("mail.example.org:443"), 0)); mock_quic_data.AddRead( @@ -8349,22 +8299,13 @@ quic::QUIC_STREAM_CANCELLED, 1, 1)); } - if (VersionUsesHttp3(version_.transport_version)) { - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker_->MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(1), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); - } - mock_quic_data.AddWrite( SYNCHRONOUS, ConstructClientRequestHeadersPacket( packet_num++, GetNthClientInitiatedBidirectionalStreamId(1), false, false, VersionUsesHttp3(version_.transport_version) - ? MEDIUM + ? DEFAULT_PRIORITY : HttpProxyConnectJob::kH2QuicTunnelPriority, ConnectRequestHeaders("mail.example.org:443"), GetNthClientInitiatedBidirectionalStreamId(0))); @@ -8461,12 +8402,6 @@ if (VersionUsesHttp3(version_.transport_version)) { mock_quic_data.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket(packet_num++)); - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker_->MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(0), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); } spdy::SpdyHeaderBlock headers = ConnectRequestHeaders("mail.example.org:443"); @@ -8477,7 +8412,7 @@ packet_num++, GetNthClientInitiatedBidirectionalStreamId(0), true, false, VersionUsesHttp3(version_.transport_version) - ? MEDIUM + ? DEFAULT_PRIORITY : HttpProxyConnectJob::kH2QuicTunnelPriority, std::move(headers), 0)); // Return an error, so the transaction stops here (this test isn't interested @@ -8520,12 +8455,6 @@ if (VersionUsesHttp3(version_.transport_version)) { mock_quic_data.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket(packet_num++)); - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker_->MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(0), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); } mock_quic_data.AddWrite( SYNCHRONOUS, @@ -8533,7 +8462,7 @@ packet_num++, GetNthClientInitiatedBidirectionalStreamId(0), true, false, VersionUsesHttp3(version_.transport_version) - ? MEDIUM + ? DEFAULT_PRIORITY : HttpProxyConnectJob::kH2QuicTunnelPriority, ConnectRequestHeaders("mail.example.org:443"), 0)); // Return an error, so the transaction stops here (this test isn't interested @@ -8661,12 +8590,6 @@ if (VersionUsesHttp3(version_.transport_version)) { mock_quic_data.AddWrite( SYNCHRONOUS, client_maker.MakeInitialSettingsPacket(packet_num++)); - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker.MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(0), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); } mock_quic_data.AddWrite( @@ -8675,7 +8598,7 @@ packet_num++, GetNthClientInitiatedBidirectionalStreamId(0), true, false, VersionUsesHttp3(version_.transport_version) - ? 1 + ? quic::QuicStream::DefaultUrgency() : ConvertRequestPriorityToQuicPriority( HttpProxyConnectJob::kH2QuicTunnelPriority), client_maker.ConnectRequestHeaders("mail.example.org:443"), 0, @@ -8723,21 +8646,13 @@ headers = client_maker.ConnectRequestHeaders("mail.example.org:443"); headers["proxy-authorization"] = "Basic Zm9vOmJheg=="; - if (VersionUsesHttp3(version_.transport_version)) { - mock_quic_data.AddWrite( - SYNCHRONOUS, client_maker.MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(1), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); - } mock_quic_data.AddWrite( SYNCHRONOUS, client_maker.MakeRequestHeadersPacket( packet_num++, GetNthClientInitiatedBidirectionalStreamId(1), false, false, VersionUsesHttp3(version_.transport_version) - ? 1 + ? quic::QuicStream::DefaultUrgency() : ConvertRequestPriorityToQuicPriority( HttpProxyConnectJob::kH2QuicTunnelPriority), std::move(headers), GetNthClientInitiatedBidirectionalStreamId(0), @@ -9366,12 +9281,6 @@ if (VersionUsesHttp3(version_.transport_version)) { mock_quic_data[index]->AddWrite( SYNCHRONOUS, client_maker.MakeInitialSettingsPacket(packet_num++)); - mock_quic_data[index]->AddWrite( - SYNCHRONOUS, client_maker.MakePriorityPacket( - packet_num++, true, - GetNthClientInitiatedBidirectionalStreamId(0), 0, - ConvertRequestPriorityToQuicPriority( - HttpProxyConnectJob::kH2QuicTunnelPriority))); } mock_quic_data[index]->AddWrite( @@ -9380,7 +9289,7 @@ packet_num++, GetNthClientInitiatedBidirectionalStreamId(0), true, false, VersionUsesHttp3(version_.transport_version) - ? 1 + ? quic::QuicStream::DefaultUrgency() : ConvertRequestPriorityToQuicPriority( HttpProxyConnectJob::kH2QuicTunnelPriority), ConnectRequestHeaders("mail.example.org:443"), 0, nullptr));
diff --git a/net/quic/quic_proxy_client_socket_unittest.cc b/net/quic/quic_proxy_client_socket_unittest.cc index f51ae81..b4e2930e 100644 --- a/net/quic/quic_proxy_client_socket_unittest.cc +++ b/net/quic/quic_proxy_client_socket_unittest.cc
@@ -365,9 +365,6 @@ RequestPriority request_priority = LOWEST) { spdy::SpdyHeaderBlock block; PopulateConnectRequestIR(&block); - if (VersionUsesHttp3(version_.transport_version)) { - request_priority = MEDIUM; - } return client_maker_.MakeRequestHeadersPacket( packet_number, client_data_stream_id1_, kIncludeVersion, !kFin, ConvertRequestPriorityToQuicPriority(request_priority), @@ -385,9 +382,6 @@ for (const auto& header : extra_headers) { block[header.first] = header.second; } - if (VersionUsesHttp3(version_.transport_version)) { - request_priority = MEDIUM; - } return client_maker_.MakeRequestHeadersPacket( packet_number, client_data_stream_id1_, kIncludeVersion, !kFin, ConvertRequestPriorityToQuicPriority(request_priority), @@ -397,9 +391,6 @@ std::unique_ptr<quic::QuicReceivedPacket> ConstructConnectAuthRequestPacket( uint64_t packet_number) { RequestPriority request_priority = LOWEST; - if (VersionUsesHttp3(version_.transport_version)) { - request_priority = MEDIUM; - } spdy::SpdyHeaderBlock block; PopulateConnectRequestIR(&block); block["proxy-authorization"] = "Basic Zm9vOmJhcg==";
diff --git a/net/quic/quic_test_packet_maker.cc b/net/quic/quic_test_packet_maker.cc index 28edb405..4a0846f 100644 --- a/net/quic/quic_test_packet_maker.cc +++ b/net/quic/quic_test_packet_maker.cc
@@ -15,6 +15,7 @@ #include "net/third_party/quiche/src/quic/core/crypto/null_encrypter.h" #include "net/third_party/quiche/src/quic/core/http/http_constants.h" #include "net/third_party/quiche/src/quic/core/quic_framer.h" +#include "net/third_party/quiche/src/quic/core/quic_stream.h" #include "net/third_party/quiche/src/quic/core/quic_utils.h" #include "net/third_party/quiche/src/quic/test_tools/mock_random.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" @@ -558,7 +559,7 @@ if (quic::VersionUsesHttp3(version_.transport_version)) { MaybeAddHttp3SettingsFrames(); - if (priority != 1) { + if (priority != quic::QuicStream::DefaultUrgency()) { std::string priority_data = GenerateHttp3PriorityData(priority, stream_id); AddQuicStreamFrame(2, false, priority_data); @@ -606,7 +607,7 @@ if (quic::VersionUsesHttp3(version_.transport_version)) { MaybeAddHttp3SettingsFrames(); - if (priority != 1) { + if (priority != quic::QuicStream::DefaultUrgency()) { std::string priority_data = GenerateHttp3PriorityData(priority, stream_id); AddQuicStreamFrame(2, false, priority_data); @@ -645,8 +646,11 @@ if (quic::VersionUsesHttp3(version_.transport_version)) { MaybeAddHttp3SettingsFrames(); - std::string priority_data = GenerateHttp3PriorityData(priority, stream_id); - AddQuicStreamFrame(2, false, priority_data); + if (priority != quic::QuicStream::DefaultUrgency()) { + std::string priority_data = + GenerateHttp3PriorityData(priority, stream_id); + AddQuicStreamFrame(2, false, priority_data); + } std::string data = QpackEncodeHeaders(stream_id, std::move(headers), spdy_headers_frame_length);
diff --git a/ppapi/BUILD.gn b/ppapi/BUILD.gn index 9dc7901..1600a054 100644 --- a/ppapi/BUILD.gn +++ b/ppapi/BUILD.gn
@@ -163,8 +163,6 @@ source_set("ppapi_tests_sources") { sources = test_common_source_files sources += [ - "tests/test_broker.cc", - "tests/test_broker.h", "tests/test_browser_font.cc", "tests/test_browser_font.h", "tests/test_buffer.cc",
diff --git a/ppapi/api/trusted/ppb_broker_trusted.idl b/ppapi/api/trusted/ppb_broker_trusted.idl deleted file mode 100644 index 023d9fc..0000000 --- a/ppapi/api/trusted/ppb_broker_trusted.idl +++ /dev/null
@@ -1,77 +0,0 @@ -/* Copyright (c) 2012 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -/** - * This file defines the PPB_BrokerTrusted interface, which provides - * access to a trusted broker with greater privileges than the plugin. - */ - -label Chrome { - M14 = 0.2, - M25 = 0.3 -}; - -/** - * The PPB_BrokerTrusted interface provides access to a trusted broker - * with greater privileges than the plugin. The interface only supports - * out-of-process plugins and is to be used by proxy implementations. All - * functions should be called from the main thread only. - * - * A PPB_BrokerTrusted resource represents a connection to the broker. Its - * lifetime controls the lifetime of the broker, regardless of whether the - * handle is closed. The handle should be closed before the resource is - * released. - */ -[macro="PPB_BROKER_TRUSTED_INTERFACE"] -interface PPB_BrokerTrusted { - /** - * Returns a trusted broker resource. - */ - PP_Resource CreateTrusted([in] PP_Instance instance); - - /** - * Returns true if the resource is a trusted broker. - */ - PP_Bool IsBrokerTrusted([in] PP_Resource resource); - - /** - * Connects to the trusted broker. It may have already - * been launched by another instance. - * The plugin takes ownership of the handle once the callback has been called - * with a result of PP_OK. The plugin should immediately call GetHandle and - * begin managing it. If the result is not PP_OK, the browser still owns the - * handle. - * - * Returns PP_ERROR_WOULD_BLOCK on success, and invokes - * the |connect_callback| asynchronously to complete. - * As this function should always be invoked from the main thread, - * do not use the blocking variant of PP_CompletionCallback. - * Returns PP_ERROR_FAILED if called from an in-process plugin. - */ - int32_t Connect([in] PP_Resource broker, - [in] PP_CompletionCallback connect_callback); - - /** - * Gets the handle to the pipe. Use once Connect has completed. Each instance - * of this interface has its own pipe. - * - * Returns PP_OK on success, and places the result into the given output - * parameter. The handle is only set when returning PP_OK. Calling this - * before connect has completed will return PP_ERROR_FAILED. - */ - int32_t GetHandle([in] PP_Resource broker, [out] int32_t handle); - - /** - * Returns PP_TRUE if the plugin has permission to launch the broker. A user - * must explicitly grant permission to launch the broker for a particular - * website. This is done through an infobar that is displayed when |Connect| - * is called. This function returns PP_TRUE if the user has already granted - * permission to launch the broker for the website containing this plugin - * instance. Returns PP_FALSE otherwise. - */ - [version=0.3] - PP_Bool IsAllowed([in] PP_Resource broker); -}; -
diff --git a/ppapi/api/trusted/ppp_broker.idl b/ppapi/api/trusted/ppp_broker.idl deleted file mode 100644 index a9dc4fab..0000000 --- a/ppapi/api/trusted/ppp_broker.idl +++ /dev/null
@@ -1,94 +0,0 @@ -/* Copyright (c) 2012 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -/** - * This file defines functions that your module must implement to support a - * broker. - */ - -#inline c -// {PENDING: undefine PP_EXPORT?} - -#include "ppapi/c/pp_instance.h" -#include "ppapi/c/pp_stdint.h" - - -#if __GNUC__ >= 4 - -#define PP_EXPORT __attribute__ ((visibility("default"))) -#elif defined(_MSC_VER) -#define PP_EXPORT __declspec(dllexport) -#endif - - - -/* We don't want name mangling for these external functions. We only need - * 'extern "C"' if we're compiling with a C++ compiler. - */ -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @addtogroup Typedefs - * @{ - */ - -/** - * PP_ConnectInstance_Func defines the signature that you implement to - * receive notifications when a plugin instance connects to the broker. - * The broker should listen on the socket before returning. - * - * @param[in] instance The plugin instance connecting to the broker. - * @param[in] handle Handle to a socket the broker can use to communicate with - * the plugin. - * @return PP_OK on success. Any other value on failure. - */ -typedef int32_t (*PP_ConnectInstance_Func)(PP_Instance instance, - int32_t handle); -/** - * @} - */ - -/** - * @addtogroup Functions - * @{ - */ - -/** - * PPP_InitializeBroker() is the entry point for a broker and is - * called by the browser when your module loads. Your code must implement this - * function. - * - * Failure indicates to the browser that this broker can not be used. In this - * case, the broker will be unloaded. - * - * @param[out] connect_instance_func A pointer to a connect instance function. - * @return PP_OK on success. Any other value on failure. -*/ -PP_EXPORT int32_t PPP_InitializeBroker( - PP_ConnectInstance_Func* connect_instance_func); -/** - * @} - */ - -/** - * @addtogroup Functions - * @{ - */ - -/** PPP_ShutdownBroker() is called before the broker is unloaded. - */ -PP_EXPORT void PPP_ShutdownBroker(); -/** - * @} - */ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endinl -
diff --git a/ppapi/c/BUILD.gn b/ppapi/c/BUILD.gn index 885152ae..d2aad13d 100644 --- a/ppapi/c/BUILD.gn +++ b/ppapi/c/BUILD.gn
@@ -143,11 +143,9 @@ "dev/ppp_class_deprecated.h", # Trusted interfaces. - "trusted/ppb_broker_trusted.h", "trusted/ppb_browser_font_trusted.h", "trusted/ppb_char_set_trusted.h", "trusted/ppb_file_chooser_trusted.h", "trusted/ppb_url_loader_trusted.h", - "trusted/ppp_broker.h", ] }
diff --git a/ppapi/c/trusted/ppb_broker_trusted.h b/ppapi/c/trusted/ppb_broker_trusted.h deleted file mode 100644 index 019e2e9..0000000 --- a/ppapi/c/trusted/ppb_broker_trusted.h +++ /dev/null
@@ -1,103 +0,0 @@ -/* Copyright (c) 2012 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -/* From trusted/ppb_broker_trusted.idl modified Mon Dec 3 11:10:40 2012. */ - -#ifndef PPAPI_C_TRUSTED_PPB_BROKER_TRUSTED_H_ -#define PPAPI_C_TRUSTED_PPB_BROKER_TRUSTED_H_ - -#include "ppapi/c/pp_bool.h" -#include "ppapi/c/pp_completion_callback.h" -#include "ppapi/c/pp_instance.h" -#include "ppapi/c/pp_macros.h" -#include "ppapi/c/pp_resource.h" -#include "ppapi/c/pp_stdint.h" - -#define PPB_BROKER_TRUSTED_INTERFACE_0_2 "PPB_BrokerTrusted;0.2" -#define PPB_BROKER_TRUSTED_INTERFACE_0_3 "PPB_BrokerTrusted;0.3" -#define PPB_BROKER_TRUSTED_INTERFACE PPB_BROKER_TRUSTED_INTERFACE_0_3 - -/** - * @file - * This file defines the PPB_BrokerTrusted interface, which provides - * access to a trusted broker with greater privileges than the plugin. - */ - - -/** - * @addtogroup Interfaces - * @{ - */ -/** - * The PPB_BrokerTrusted interface provides access to a trusted broker - * with greater privileges than the plugin. The interface only supports - * out-of-process plugins and is to be used by proxy implementations. All - * functions should be called from the main thread only. - * - * A PPB_BrokerTrusted resource represents a connection to the broker. Its - * lifetime controls the lifetime of the broker, regardless of whether the - * handle is closed. The handle should be closed before the resource is - * released. - */ -struct PPB_BrokerTrusted_0_3 { - /** - * Returns a trusted broker resource. - */ - PP_Resource (*CreateTrusted)(PP_Instance instance); - /** - * Returns true if the resource is a trusted broker. - */ - PP_Bool (*IsBrokerTrusted)(PP_Resource resource); - /** - * Connects to the trusted broker. It may have already - * been launched by another instance. - * The plugin takes ownership of the handle once the callback has been called - * with a result of PP_OK. The plugin should immediately call GetHandle and - * begin managing it. If the result is not PP_OK, the browser still owns the - * handle. - * - * Returns PP_ERROR_WOULD_BLOCK on success, and invokes - * the |connect_callback| asynchronously to complete. - * As this function should always be invoked from the main thread, - * do not use the blocking variant of PP_CompletionCallback. - * Returns PP_ERROR_FAILED if called from an in-process plugin. - */ - int32_t (*Connect)(PP_Resource broker, - struct PP_CompletionCallback connect_callback); - /** - * Gets the handle to the pipe. Use once Connect has completed. Each instance - * of this interface has its own pipe. - * - * Returns PP_OK on success, and places the result into the given output - * parameter. The handle is only set when returning PP_OK. Calling this - * before connect has completed will return PP_ERROR_FAILED. - */ - int32_t (*GetHandle)(PP_Resource broker, int32_t* handle); - /** - * Returns PP_TRUE if the plugin has permission to launch the broker. A user - * must explicitly grant permission to launch the broker for a particular - * website. This is done through an infobar that is displayed when |Connect| - * is called. This function returns PP_TRUE if the user has already granted - * permission to launch the broker for the website containing this plugin - * instance. Returns PP_FALSE otherwise. - */ - PP_Bool (*IsAllowed)(PP_Resource broker); -}; - -typedef struct PPB_BrokerTrusted_0_3 PPB_BrokerTrusted; - -struct PPB_BrokerTrusted_0_2 { - PP_Resource (*CreateTrusted)(PP_Instance instance); - PP_Bool (*IsBrokerTrusted)(PP_Resource resource); - int32_t (*Connect)(PP_Resource broker, - struct PP_CompletionCallback connect_callback); - int32_t (*GetHandle)(PP_Resource broker, int32_t* handle); -}; -/** - * @} - */ - -#endif /* PPAPI_C_TRUSTED_PPB_BROKER_TRUSTED_H_ */ -
diff --git a/ppapi/c/trusted/ppp_broker.h b/ppapi/c/trusted/ppp_broker.h deleted file mode 100644 index ccd6706..0000000 --- a/ppapi/c/trusted/ppp_broker.h +++ /dev/null
@@ -1,102 +0,0 @@ -/* Copyright (c) 2011 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -/* From trusted/ppp_broker.idl modified Sat Jul 16 16:51:03 2011. */ - -#ifndef PPAPI_C_TRUSTED_PPP_BROKER_H_ -#define PPAPI_C_TRUSTED_PPP_BROKER_H_ - -#include "ppapi/c/pp_macros.h" - -/** - * @file - * This file defines functions that your module must implement to support a - * broker. - */ - - -// {PENDING: undefine PP_EXPORT?} - -#include "ppapi/c/pp_instance.h" -#include "ppapi/c/pp_stdint.h" - - -#if __GNUC__ >= 4 - -#define PP_EXPORT __attribute__ ((visibility("default"))) -#elif defined(_MSC_VER) -#define PP_EXPORT __declspec(dllexport) -#endif - - - -/* We don't want name mangling for these external functions. We only need - * 'extern "C"' if we're compiling with a C++ compiler. - */ -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @addtogroup Typedefs - * @{ - */ - -/** - * PP_ConnectInstance_Func defines the signature that you implement to - * receive notifications when a plugin instance connects to the broker. - * The broker should listen on the socket before returning. - * - * @param[in] instance The plugin instance connecting to the broker. - * @param[in] handle Handle to a socket the broker can use to communicate with - * the plugin. - * @return PP_OK on success. Any other value on failure. - */ -typedef int32_t (*PP_ConnectInstance_Func)(PP_Instance instance, - int32_t handle); -/** - * @} - */ - -/** - * @addtogroup Functions - * @{ - */ - -/** - * PPP_InitializeBroker() is the entry point for a broker and is - * called by the browser when your module loads. Your code must implement this - * function. - * - * Failure indicates to the browser that this broker can not be used. In this - * case, the broker will be unloaded. - * - * @param[out] connect_instance_func A pointer to a connect instance function. - * @return PP_OK on success. Any other value on failure. -*/ -PP_EXPORT int32_t PPP_InitializeBroker( - PP_ConnectInstance_Func* connect_instance_func); -/** - * @} - */ - -/** - * @addtogroup Functions - * @{ - */ - -/** PPP_ShutdownBroker() is called before the broker is unloaded. - */ -PP_EXPORT void PPP_ShutdownBroker(); -/** - * @} - */ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* PPAPI_C_TRUSTED_PPP_BROKER_H_ */ -
diff --git a/ppapi/cpp/module_embedder.h b/ppapi/cpp/module_embedder.h index a1d00a86..ad45ca4 100644 --- a/ppapi/cpp/module_embedder.h +++ b/ppapi/cpp/module_embedder.h
@@ -22,19 +22,6 @@ /// failure. Upon failure, the module will be unloaded. pp::Module* CreateModule(); -/// Sets the get interface function in the broker process. -/// -/// This function is only relevant when you're using the PPB_Broker interface -/// in a trusted native plugin. In this case, you may need to implement -/// PPP_GetInterface when the plugin is loaded in the unsandboxed process. -/// Normally the C++ wrappers implement PPP_GetInterface for you but this -/// doesn't work in the context of the broker process. -// -/// So if you need to implement PPP_* interfaces in the broker process, call -/// this function in your PPP_InitializeBroker implementation which will set -/// up the given function as implementing PPP_GetInterface. -void SetBrokerGetInterfaceFunc(PP_GetInterface_Func broker_get_interface); - } // namespace pp #endif // PPAPI_CPP_MODULE_EMBEDDER_H_
diff --git a/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.c b/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.c index 11e7f50..4e6b625 100644 --- a/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.c +++ b/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.c
@@ -2453,10 +2453,6 @@ /* Not generating wrapper methods for PPP_MouseLock_1_0 */ -/* Not generating wrapper methods for PPB_BrokerTrusted_0_2 */ - -/* Not generating wrapper methods for PPB_BrokerTrusted_0_3 */ - /* Not generating wrapper methods for PPB_BrowserFont_Trusted_1_0 */ /* Not generating wrapper methods for PPB_CharSet_Trusted_1_0 */ @@ -4399,10 +4395,6 @@ /* Not generating wrapper interface for PPP_MouseLock_1_0 */ -/* Not generating wrapper interface for PPB_BrokerTrusted_0_2 */ - -/* Not generating wrapper interface for PPB_BrokerTrusted_0_3 */ - /* Not generating wrapper interface for PPB_BrowserFont_Trusted_1_0 */ /* Not generating wrapper interface for PPB_CharSet_Trusted_1_0 */
diff --git a/ppapi/proxy/BUILD.gn b/ppapi/proxy/BUILD.gn index e0052bd..000c50d 100644 --- a/ppapi/proxy/BUILD.gn +++ b/ppapi/proxy/BUILD.gn
@@ -21,8 +21,6 @@ "../utility/completion_callback_factory.h", "audio_buffer_resource.cc", "audio_buffer_resource.h", - "broker_resource.cc", - "broker_resource.h", "camera_capabilities_resource.cc", "camera_capabilities_resource.h", "camera_device_resource.cc", @@ -203,8 +201,6 @@ "audio_input_resource.h", "audio_output_resource.cc", "audio_output_resource.h", - "broker_dispatcher.cc", - "broker_dispatcher.h", "browser_font_singleton_resource.cc", "browser_font_singleton_resource.h", "device_enumeration_resource_helper.cc", @@ -219,8 +215,6 @@ "host_var_serialization_rules.h", "pdf_resource.cc", "pdf_resource.h", - "ppb_broker_proxy.cc", - "ppb_broker_proxy.h", "ppb_buffer_proxy.cc", "ppb_buffer_proxy.h", "ppb_var_deprecated_proxy.cc",
diff --git a/ppapi/proxy/broker_dispatcher.cc b/ppapi/proxy/broker_dispatcher.cc deleted file mode 100644 index 37734a1..0000000 --- a/ppapi/proxy/broker_dispatcher.cc +++ /dev/null
@@ -1,100 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ppapi/proxy/broker_dispatcher.h" - -#include "base/sync_socket.h" -#include "ppapi/c/pp_errors.h" -#include "ppapi/proxy/ppapi_messages.h" -#include "ppapi/shared_impl/platform_file.h" - -namespace ppapi { -namespace proxy { - -BrokerDispatcher::BrokerDispatcher(PP_ConnectInstance_Func connect_instance) - : connect_instance_(connect_instance) { -} - -BrokerDispatcher::~BrokerDispatcher() { -} - -bool BrokerDispatcher::InitBrokerWithChannel( - ProxyChannel::Delegate* delegate, - base::ProcessId peer_pid, - const IPC::ChannelHandle& channel_handle, - bool is_client) { - return ProxyChannel::InitWithChannel(delegate, peer_pid, channel_handle, - is_client, - base::ThreadTaskRunnerHandle::Get()); -} - -bool BrokerDispatcher::OnMessageReceived(const IPC::Message& msg) { - // Control messages. - if (msg.routing_id() == MSG_ROUTING_CONTROL) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(BrokerDispatcher, msg) - IPC_MESSAGE_HANDLER(PpapiMsg_ConnectToPlugin, OnMsgConnectToPlugin) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; - } - return false; -} - -// Transfers ownership of the handle to the broker module. -void BrokerDispatcher::OnMsgConnectToPlugin( - PP_Instance instance, - IPC::PlatformFileForTransit handle, - int32_t* result) { - if (handle == IPC::InvalidPlatformFileForTransit()) { - *result = PP_ERROR_FAILED; - } else { - base::SyncSocket::Handle socket_handle = - IPC::PlatformFileForTransitToPlatformFile(handle); - - if (connect_instance_) { - *result = connect_instance_(instance, - ppapi::PlatformFileToInt(socket_handle)); - } else { - *result = PP_ERROR_FAILED; - // Close the handle since there is no other owner. - // The easiest way to clean it up is to just put it in an object - // and then close them. This failure case is not performance critical. - base::SyncSocket temp_socket(socket_handle); - } - } -} - -BrokerHostDispatcher::BrokerHostDispatcher() - : BrokerDispatcher(NULL) { -} - -void BrokerHostDispatcher::OnChannelError() { - DVLOG(1) << "BrokerHostDispatcher::OnChannelError()"; - BrokerDispatcher::OnChannelError(); // Stop using the channel. - - // Tell the host about the crash so it can clean up and display notification. - // TODO(ddorwin): Add BrokerCrashed() to PPB_Proxy_Private and call it. - // ppb_proxy_->BrokerCrashed(pp_module()); -} - -BrokerSideDispatcher::BrokerSideDispatcher( - PP_ConnectInstance_Func connect_instance) - : BrokerDispatcher(connect_instance) { -} - -void BrokerSideDispatcher::OnChannelError() { - DVLOG(1) << "BrokerSideDispatcher::OnChannelError()"; - BrokerDispatcher::OnChannelError(); - - // The renderer has crashed or exited. This channel and all instances - // associated with it are no longer valid. - // TODO(ddorwin): This causes the broker process to exit, which may not be - // desirable in some use cases. - delete this; -} - - -} // namespace proxy -} // namespace ppapi
diff --git a/ppapi/proxy/broker_dispatcher.h b/ppapi/proxy/broker_dispatcher.h deleted file mode 100644 index 5b3d586..0000000 --- a/ppapi/proxy/broker_dispatcher.h +++ /dev/null
@@ -1,68 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef PPAPI_PROXY_BROKER_DISPATCHER_H_ -#define PPAPI_PROXY_BROKER_DISPATCHER_H_ - -#include <stdint.h> - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "ppapi/c/trusted/ppp_broker.h" -#include "ppapi/proxy/proxy_channel.h" - -namespace ppapi { -namespace proxy { - -class PPAPI_PROXY_EXPORT BrokerDispatcher : public ProxyChannel { - public: - ~BrokerDispatcher() override; - - // You must call this function before anything else. Returns true on success. - // The delegate pointer must outlive this class, ownership is not - // transferred. - virtual bool InitBrokerWithChannel(ProxyChannel::Delegate* delegate, - base::ProcessId peer_pid, - const IPC::ChannelHandle& channel_handle, - bool is_client); - - // IPC::Listener implementation. - bool OnMessageReceived(const IPC::Message& msg) override; - - protected: - // You must call InitBrokerWithChannel after the constructor. - explicit BrokerDispatcher(PP_ConnectInstance_Func connect_instance); - - void OnMsgConnectToPlugin(PP_Instance instance, - IPC::PlatformFileForTransit handle, - int32_t* result); - - PP_ConnectInstance_Func connect_instance_; - - private: - DISALLOW_COPY_AND_ASSIGN(BrokerDispatcher); -}; - -// The dispatcher for the browser side of the broker channel. -class PPAPI_PROXY_EXPORT BrokerHostDispatcher : public BrokerDispatcher { - public: - BrokerHostDispatcher(); - - // IPC::Listener implementation. - void OnChannelError() override; -}; - -// The dispatcher for the broker side of the broker channel. -class PPAPI_PROXY_EXPORT BrokerSideDispatcher : public BrokerDispatcher { - public: - explicit BrokerSideDispatcher(PP_ConnectInstance_Func connect_instance); - - // IPC::Listener implementation. - void OnChannelError() override; -}; - -} // namespace proxy -} // namespace ppapi - -#endif // PPAPI_PROXY_BROKER_DISPATCHER_H_
diff --git a/ppapi/proxy/broker_resource.cc b/ppapi/proxy/broker_resource.cc deleted file mode 100644 index 18273cd..0000000 --- a/ppapi/proxy/broker_resource.cc +++ /dev/null
@@ -1,34 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ppapi/proxy/broker_resource.h" - -#include <stdint.h> - -#include "ppapi/c/pp_bool.h" -#include "ppapi/proxy/ppapi_messages.h" - -namespace ppapi { -namespace proxy { - -BrokerResource::BrokerResource(Connection connection, PP_Instance instance) - : PluginResource(connection, instance) { - SendCreate(BROWSER, PpapiHostMsg_Broker_Create()); -} - -BrokerResource::~BrokerResource() { -} - -thunk::PPB_Broker_Instance_API* BrokerResource::AsPPB_Broker_Instance_API() { - return this; -} - -PP_Bool BrokerResource::IsAllowed() { - int32_t result = - SyncCall<IPC::Message>(BROWSER, PpapiHostMsg_Broker_IsAllowed()); - return PP_FromBool(result == PP_OK); -} - -} // namespace proxy -} // namespace ppapi
diff --git a/ppapi/proxy/broker_resource.h b/ppapi/proxy/broker_resource.h deleted file mode 100644 index 60f6fdb2a..0000000 --- a/ppapi/proxy/broker_resource.h +++ /dev/null
@@ -1,36 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef PPAPI_PROXY_BROKER_RESOURCE_H_ -#define PPAPI_PROXY_BROKER_RESOURCE_H_ - -#include "base/macros.h" -#include "ppapi/proxy/connection.h" -#include "ppapi/proxy/plugin_resource.h" -#include "ppapi/thunk/ppb_broker_api.h" - -namespace ppapi { -namespace proxy { - -class BrokerResource - : public PluginResource, - public thunk::PPB_Broker_Instance_API { - public: - BrokerResource(Connection connection, PP_Instance instance); - ~BrokerResource() override; - - // Resource override. - thunk::PPB_Broker_Instance_API* AsPPB_Broker_Instance_API() override; - - // thunk::PPB_Broker_Instance_API implementation. - PP_Bool IsAllowed() override; - - private: - DISALLOW_COPY_AND_ASSIGN(BrokerResource); -}; - -} // namespace proxy -} // namespace ppapi - -#endif // PPAPI_PROXY_BROKER_RESOURCE_H_
diff --git a/ppapi/proxy/interface_list.cc b/ppapi/proxy/interface_list.cc index 8d83d34..0f9265f 100644 --- a/ppapi/proxy/interface_list.cc +++ b/ppapi/proxy/interface_list.cc
@@ -87,7 +87,6 @@ #include "ppapi/c/private/ppb_udp_socket_private.h" #include "ppapi/c/private/ppb_uma_private.h" #include "ppapi/c/private/ppb_x509_certificate_private.h" -#include "ppapi/c/trusted/ppb_broker_trusted.h" #include "ppapi/c/trusted/ppb_browser_font_trusted.h" #include "ppapi/c/trusted/ppb_char_set_trusted.h" #include "ppapi/c/trusted/ppb_file_chooser_trusted.h" @@ -96,7 +95,6 @@ #include "ppapi/proxy/plugin_globals.h" #include "ppapi/proxy/ppapi_messages.h" #include "ppapi/proxy/ppb_audio_proxy.h" -#include "ppapi/proxy/ppb_broker_proxy.h" #include "ppapi/proxy/ppb_buffer_proxy.h" #include "ppapi/proxy/ppb_core_proxy.h" #include "ppapi/proxy/ppb_graphics_3d_proxy.h"
diff --git a/ppapi/proxy/plugin_globals.cc b/ppapi/proxy/plugin_globals.cc index 24dab3f..a84cfef1 100644 --- a/ppapi/proxy/plugin_globals.cc +++ b/ppapi/proxy/plugin_globals.cc
@@ -138,10 +138,6 @@ return 0; } -std::string PluginGlobals::GetCmdLine() { - return command_line_; -} - void PluginGlobals::PreCacheFontForFlash(const void* logfontw) { ProxyAutoUnlock unlock; plugin_proxy_delegate_->PreCacheFontForFlash(logfontw);
diff --git a/ppapi/proxy/plugin_globals.h b/ppapi/proxy/plugin_globals.h index cb766f71..9a3e87b 100644 --- a/ppapi/proxy/plugin_globals.h +++ b/ppapi/proxy/plugin_globals.h
@@ -70,7 +70,6 @@ thunk::ResourceCreationAPI* GetResourceCreationAPI( PP_Instance instance) override; PP_Module GetModuleForInstance(PP_Instance instance) override; - std::string GetCmdLine() override; void PreCacheFontForFlash(const void* logfontw) override; void LogWithSource(PP_Instance instance, PP_LogLevel level, @@ -140,9 +139,6 @@ // is known. This will be used for error logging. void set_plugin_name(const std::string& name) { plugin_name_ = name; } - // The embedder should call this function when the command line is known. - void set_command_line(const std::string& c) { command_line_ = c; } - ResourceReplyThreadRegistrar* resource_reply_thread_registrar() { return resource_reply_thread_registrar_.get(); } @@ -177,10 +173,6 @@ // set_plugin_name is called. std::string plugin_name_; - // Command line for the plugin. This will be empty until set_command_line is - // called. - std::string command_line_; - std::unique_ptr<BrowserSender> browser_sender_; scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner_;
diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h index 0051604..634b8c34 100644 --- a/ppapi/proxy/ppapi_messages.h +++ b/ppapi/proxy/ppapi_messages.h
@@ -640,11 +640,6 @@ IPC_MESSAGE_CONTROL1(PpapiMsg_SetNetworkState, bool /* online */) -// Broker Process. -IPC_SYNC_MESSAGE_CONTROL2_1(PpapiMsg_ConnectToPlugin, - PP_Instance /* instance */, - IPC::PlatformFileForTransit /* handle */, - int32_t /* result */) #endif // !defined(OS_NACL) && !defined(NACL_WIN64) // PPB_Audio. @@ -869,13 +864,6 @@ uint32_t /* desired_number_of_characters */) #if !defined(OS_NACL) && !defined(NACL_WIN64) -// PPB_Broker. -IPC_MESSAGE_ROUTED3( - PpapiMsg_PPBBroker_ConnectComplete, - ppapi::HostResource /* broker */, - IPC::PlatformFileForTransit /* handle */, - int32_t /* result */) - // PPP_Instance_Private. IPC_SYNC_MESSAGE_ROUTED1_1(PpapiMsg_PPPInstancePrivate_GetInstanceObject, PP_Instance /* instance */, @@ -1207,13 +1195,6 @@ ppapi::proxy::SerializedVar /* result */) #if !defined(OS_NACL) && !defined(NACL_WIN64) -// PPB_Broker. -IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBBroker_Create, - PP_Instance /* instance */, - ppapi::HostResource /* result_resource */) -IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBBroker_Connect, - ppapi::HostResource /* broker */) - // PPB_Buffer. IPC_SYNC_MESSAGE_ROUTED2_2( PpapiHostMsg_PPBBuffer_Create, @@ -1399,14 +1380,6 @@ //----------------------------------------------------------------------------- // Messages for resources using call/reply above. -// Broker ---------------------------------------------------------------------- -IPC_MESSAGE_CONTROL0(PpapiHostMsg_Broker_Create) - -// Queries whether the plugin has permission to connect to the Pepper broker. -// The response is contained in the error value of the -// ResourceMessageReplyParams in the reply message. -IPC_MESSAGE_CONTROL0(PpapiHostMsg_Broker_IsAllowed) - // UMA IPC_MESSAGE_CONTROL0(PpapiHostMsg_UMA_Create) IPC_MESSAGE_CONTROL5(PpapiHostMsg_UMA_HistogramCustomTimes,
diff --git a/ppapi/proxy/ppb_broker_proxy.cc b/ppapi/proxy/ppb_broker_proxy.cc deleted file mode 100644 index 3f2b617..0000000 --- a/ppapi/proxy/ppb_broker_proxy.cc +++ /dev/null
@@ -1,236 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ppapi/proxy/ppb_broker_proxy.h" - -#include "base/bind.h" -#include "base/macros.h" -#include "ppapi/c/pp_errors.h" -#include "ppapi/c/trusted/ppb_broker_trusted.h" -#include "ppapi/proxy/enter_proxy.h" -#include "ppapi/proxy/plugin_dispatcher.h" -#include "ppapi/proxy/ppapi_messages.h" -#include "ppapi/shared_impl/platform_file.h" -#include "ppapi/shared_impl/tracked_callback.h" -#include "ppapi/thunk/enter.h" -#include "ppapi/thunk/ppb_broker_api.h" -#include "ppapi/thunk/resource_creation_api.h" -#include "ppapi/thunk/thunk.h" - -using ppapi::IntToPlatformFile; -using ppapi::PlatformFileToInt; -using ppapi::thunk::PPB_Broker_API; - -namespace ppapi { -namespace proxy { - -class Broker : public PPB_Broker_API, public Resource { - public: - explicit Broker(const HostResource& resource); - ~Broker() override; - - // Resource overrides. - PPB_Broker_API* AsPPB_Broker_API() override; - - // PPB_Broker_API implementation. - int32_t Connect(scoped_refptr<TrackedCallback> connect_callback) override; - int32_t GetHandle(int32_t* handle) override; - - // Called by the proxy when the host side has completed the request. - void ConnectComplete(IPC::PlatformFileForTransit socket_handle, - int32_t result); - - private: - bool called_connect_; - scoped_refptr<TrackedCallback> current_connect_callback_; - - // The plugin module owns the handle. - // The host side transfers ownership of the handle to the plugin side when it - // sends the IPC. This member holds the handle value for the plugin module - // to read, but the plugin side of the proxy never takes ownership. - base::SyncSocket::Handle socket_handle_; - - DISALLOW_COPY_AND_ASSIGN(Broker); -}; - -Broker::Broker(const HostResource& resource) - : Resource(OBJECT_IS_PROXY, resource), - called_connect_(false), - socket_handle_(base::SyncSocket::kInvalidHandle) { -} - -Broker::~Broker() { - socket_handle_ = base::SyncSocket::kInvalidHandle; -} - -PPB_Broker_API* Broker::AsPPB_Broker_API() { - return this; -} - -int32_t Broker::Connect(scoped_refptr<TrackedCallback> connect_callback) { - if (TrackedCallback::IsPending(current_connect_callback_)) - return PP_ERROR_INPROGRESS; - else if (called_connect_) - return PP_ERROR_FAILED; - - current_connect_callback_ = connect_callback; - called_connect_ = true; - - bool success = PluginDispatcher::GetForResource(this)->Send( - new PpapiHostMsg_PPBBroker_Connect( - API_ID_PPB_BROKER, host_resource())); - return success ? PP_OK_COMPLETIONPENDING : PP_ERROR_FAILED; -} - -int32_t Broker::GetHandle(int32_t* handle) { - if (socket_handle_ == base::SyncSocket::kInvalidHandle) - return PP_ERROR_FAILED; - *handle = PlatformFileToInt(socket_handle_); - return PP_OK; -} - -void Broker::ConnectComplete(IPC::PlatformFileForTransit socket_handle, - int32_t result) { - if (result == PP_OK) { - DCHECK(socket_handle_ == base::SyncSocket::kInvalidHandle); - socket_handle_ = IPC::PlatformFileForTransitToPlatformFile(socket_handle); - } else { - // The caller may still have given us a handle in the failure case. - // The easiest way to clean it up is to just put it in an object - // and then close them. This failure case is not performance critical. - base::SyncSocket temp_socket( - IPC::PlatformFileForTransitToPlatformFile(socket_handle)); - } - - if (!TrackedCallback::IsPending(current_connect_callback_)) { - // The handle might leak if the plugin never calls GetHandle(). - return; - } - - current_connect_callback_->Run(result); -} - -PPB_Broker_Proxy::PPB_Broker_Proxy(Dispatcher* dispatcher) - : InterfaceProxy(dispatcher), - callback_factory_(this){ -} - -PPB_Broker_Proxy::~PPB_Broker_Proxy() { -} - -// static -PP_Resource PPB_Broker_Proxy::CreateProxyResource(PP_Instance instance) { - PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); - if (!dispatcher) - return 0; - - HostResource result; - dispatcher->Send(new PpapiHostMsg_PPBBroker_Create( - API_ID_PPB_BROKER, instance, &result)); - if (result.is_null()) - return 0; - return (new Broker(result))->GetReference(); -} - -bool PPB_Broker_Proxy::OnMessageReceived(const IPC::Message& msg) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(PPB_Broker_Proxy, msg) - IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBBroker_Create, OnMsgCreate) - IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBBroker_Connect, OnMsgConnect) - IPC_MESSAGE_HANDLER(PpapiMsg_PPBBroker_ConnectComplete, - OnMsgConnectComplete) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - -void PPB_Broker_Proxy::OnMsgCreate(PP_Instance instance, - HostResource* result_resource) { - if (!dispatcher()->permissions().HasPermission(PERMISSION_PRIVATE)) - return; - thunk::EnterResourceCreation enter(instance); - if (enter.succeeded()) { - result_resource->SetHostResource( - instance, - enter.functions()->CreateBroker(instance)); - } -} - -void PPB_Broker_Proxy::OnMsgConnect(const HostResource& broker) { - if (!dispatcher()->permissions().HasPermission(PERMISSION_PRIVATE)) - return; - EnterHostFromHostResourceForceCallback<PPB_Broker_API> enter( - broker, callback_factory_, - &PPB_Broker_Proxy::ConnectCompleteInHost, broker); - if (enter.succeeded()) - enter.SetResult(enter.object()->Connect(enter.callback())); -} - -// Called in the plugin to handle the connect callback. -// The proxy owns the handle and transfers it to the Broker. At that point, -// the plugin owns the handle and is responsible for closing it. -// The caller guarantees that socket_handle is not valid if result is not PP_OK. -void PPB_Broker_Proxy::OnMsgConnectComplete( - const HostResource& resource, - IPC::PlatformFileForTransit socket_handle, - int32_t result) { - DCHECK(result == PP_OK || - socket_handle == IPC::InvalidPlatformFileForTransit()); - - EnterPluginFromHostResource<PPB_Broker_API> enter(resource); - if (enter.failed()) { - // As in Broker::ConnectComplete, we need to close the resource on error. - base::SyncSocket temp_socket( - IPC::PlatformFileForTransitToPlatformFile(socket_handle)); - } else { - static_cast<Broker*>(enter.object())->ConnectComplete(socket_handle, - result); - } -} - -// Callback on the host side. -// Transfers ownership of the handle to the plugin side. This function must -// either successfully call the callback or close the handle. -void PPB_Broker_Proxy::ConnectCompleteInHost(int32_t result, - const HostResource& broker) { - IPC::PlatformFileForTransit foreign_socket_handle = - IPC::InvalidPlatformFileForTransit(); - if (result == PP_OK) { - int32_t socket_handle = PlatformFileToInt(base::SyncSocket::kInvalidHandle); - EnterHostFromHostResource<PPB_Broker_API> enter(broker); - if (enter.succeeded()) - result = enter.object()->GetHandle(&socket_handle); - DCHECK(result == PP_OK || - socket_handle == - PlatformFileToInt(base::SyncSocket::kInvalidHandle)); - - if (result == PP_OK) { - foreign_socket_handle = - dispatcher()->ShareHandleWithRemote(IntToPlatformFile(socket_handle), - true); - if (foreign_socket_handle == IPC::InvalidPlatformFileForTransit()) { - result = PP_ERROR_FAILED; - // Assume the local handle was closed even if the foreign handle could - // not be created. - } - } - } - DCHECK(result == PP_OK || - foreign_socket_handle == IPC::InvalidPlatformFileForTransit()); - - bool success = dispatcher()->Send(new PpapiMsg_PPBBroker_ConnectComplete( - API_ID_PPB_BROKER, broker, foreign_socket_handle, result)); - - if (!success || result != PP_OK) { - // The plugin did not receive the handle, so it must be closed. - // The easiest way to clean it up is to just put it in an object - // and then close it. This failure case is not performance critical. - // The handle could still leak if Send succeeded but the IPC later failed. - base::SyncSocket temp_socket( - IPC::PlatformFileForTransitToPlatformFile(foreign_socket_handle)); - } -} - -} // namespace proxy -} // namespace ppapi
diff --git a/ppapi/proxy/ppb_broker_proxy.h b/ppapi/proxy/ppb_broker_proxy.h deleted file mode 100644 index ec29de43..0000000 --- a/ppapi/proxy/ppb_broker_proxy.h +++ /dev/null
@@ -1,52 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef PPAPI_PROXY_PPB_BROKER_PROXY_H_ -#define PPAPI_PROXY_PPB_BROKER_PROXY_H_ - -#include <stdint.h> - -#include "base/sync_socket.h" -#include "ipc/ipc_platform_file.h" -#include "ppapi/c/pp_instance.h" -#include "ppapi/proxy/interface_proxy.h" -#include "ppapi/proxy/proxy_completion_callback_factory.h" -#include "ppapi/utility/completion_callback_factory.h" - -namespace ppapi { - -class HostResource; - -namespace proxy { - -class PPB_Broker_Proxy : public InterfaceProxy { - public: - explicit PPB_Broker_Proxy(Dispatcher* dispatcher); - ~PPB_Broker_Proxy() override; - - static PP_Resource CreateProxyResource(PP_Instance instance); - - // InterfaceProxy implementation. - bool OnMessageReceived(const IPC::Message& msg) override; - - static const ApiID kApiID = API_ID_PPB_BROKER; - - private: - // Message handlers. - void OnMsgCreate(PP_Instance instance, ppapi::HostResource* result_resource); - void OnMsgConnect(const ppapi::HostResource& broker); - void OnMsgConnectComplete(const ppapi::HostResource& broker, - IPC::PlatformFileForTransit foreign_socket_handle, - int32_t result); - - void ConnectCompleteInHost(int32_t result, - const ppapi::HostResource& host_resource); - - ProxyCompletionCallbackFactory<PPB_Broker_Proxy> callback_factory_; -}; - -} // namespace proxy -} // namespace ppapi - -#endif // PPAPI_PROXY_PPB_BROKER_PROXY_H_
diff --git a/ppapi/proxy/ppb_instance_proxy.cc b/ppapi/proxy/ppb_instance_proxy.cc index 167757e..9bd064e 100644 --- a/ppapi/proxy/ppb_instance_proxy.cc +++ b/ppapi/proxy/ppb_instance_proxy.cc
@@ -18,7 +18,6 @@ #include "ppapi/c/ppb_instance.h" #include "ppapi/c/ppb_messaging.h" #include "ppapi/c/ppb_mouse_lock.h" -#include "ppapi/proxy/broker_resource.h" #include "ppapi/proxy/browser_font_singleton_resource.h" #include "ppapi/proxy/enter_proxy.h" #include "ppapi/proxy/flash_fullscreen_resource.h" @@ -345,9 +344,6 @@ static_cast<PluginDispatcher*>(dispatcher())->sender()); switch (id) { - case BROKER_SINGLETON_ID: - new_singleton = new BrokerResource(connection, instance); - break; case GAMEPAD_SINGLETON_ID: new_singleton = new GamepadResource(connection, instance); break;
diff --git a/ppapi/proxy/resource_creation_proxy.cc b/ppapi/proxy/resource_creation_proxy.cc index 584b715c..f216904 100644 --- a/ppapi/proxy/resource_creation_proxy.cc +++ b/ppapi/proxy/resource_creation_proxy.cc
@@ -27,7 +27,6 @@ #include "ppapi/proxy/plugin_resource_tracker.h" #include "ppapi/proxy/ppapi_messages.h" #include "ppapi/proxy/ppb_audio_proxy.h" -#include "ppapi/proxy/ppb_broker_proxy.h" #include "ppapi/proxy/ppb_buffer_proxy.h" #include "ppapi/proxy/ppb_graphics_3d_proxy.h" #include "ppapi/proxy/ppb_image_data_proxy.h" @@ -391,10 +390,6 @@ return (new AudioOutputResource(GetConnection(), instance))->GetReference(); } -PP_Resource ResourceCreationProxy::CreateBroker(PP_Instance instance) { - return PPB_Broker_Proxy::CreateProxyResource(instance); -} - PP_Resource ResourceCreationProxy::CreateBrowserFont( PP_Instance instance, const PP_BrowserFont_Trusted_Description* description) {
diff --git a/ppapi/proxy/resource_creation_proxy.h b/ppapi/proxy/resource_creation_proxy.h index 06c02f79..4ed2cc9 100644 --- a/ppapi/proxy/resource_creation_proxy.h +++ b/ppapi/proxy/resource_creation_proxy.h
@@ -156,7 +156,6 @@ #if !defined(OS_NACL) PP_Resource CreateAudioInput(PP_Instance instance) override; PP_Resource CreateAudioOutput(PP_Instance instance) override; - PP_Resource CreateBroker(PP_Instance instance) override; PP_Resource CreateBrowserFont( PP_Instance instance, const PP_BrowserFont_Trusted_Description* description) override;
diff --git a/ppapi/shared_impl/api_id.h b/ppapi/shared_impl/api_id.h index 553a1f4..9ee914d8 100644 --- a/ppapi/shared_impl/api_id.h +++ b/ppapi/shared_impl/api_id.h
@@ -13,7 +13,6 @@ // Zero is reserved for control messages. API_ID_NONE = 0, API_ID_PPB_AUDIO = 1, - API_ID_PPB_BROKER, API_ID_PPB_BUFFER, API_ID_PPB_CORE, API_ID_PPB_FLASH_MESSAGELOOP,
diff --git a/ppapi/shared_impl/ppapi_globals.h b/ppapi/shared_impl/ppapi_globals.h index 3dcc901f..59f8904 100644 --- a/ppapi/shared_impl/ppapi_globals.h +++ b/ppapi/shared_impl/ppapi_globals.h
@@ -117,9 +117,6 @@ // in-process plugins. virtual base::TaskRunner* GetFileTaskRunner() = 0; - // Returns the command line for the process. - virtual std::string GetCmdLine() = 0; - // Preloads the font on Windows, does nothing on other platforms. // TODO(brettw) remove this by passing the instance into the API so we don't // have to have it on the globals.
diff --git a/ppapi/shared_impl/resource.h b/ppapi/shared_impl/resource.h index 844da78..80a6ed1d 100644 --- a/ppapi/shared_impl/resource.h +++ b/ppapi/shared_impl/resource.h
@@ -25,8 +25,6 @@ F(PPB_AudioInput_API) \ F(PPB_AudioOutput_API) \ F(PPB_AudioTrusted_API) \ - F(PPB_Broker_API) \ - F(PPB_Broker_Instance_API) \ F(PPB_BrowserFont_Singleton_API) \ F(PPB_BrowserFont_Trusted_API) \ F(PPB_Buffer_API) \
diff --git a/ppapi/shared_impl/singleton_resource_id.h b/ppapi/shared_impl/singleton_resource_id.h index 756c9f5d..b41a34dd2 100644 --- a/ppapi/shared_impl/singleton_resource_id.h +++ b/ppapi/shared_impl/singleton_resource_id.h
@@ -10,10 +10,6 @@ // These IDs are used to access singleton resource objects using // PPB_Instance_API.GetSingletonResource. enum SingletonResourceID { - // TODO(raymes): The broker resource isn't really a singleton. This is only - // a hack until PPB_Broker trusted has been fully refactored to the new - // resource model. - BROKER_SINGLETON_ID, BROWSER_FONT_SINGLETON_ID, FLASH_FULLSCREEN_SINGLETON_ID, GAMEPAD_SINGLETON_ID,
diff --git a/ppapi/shared_impl/test_globals.cc b/ppapi/shared_impl/test_globals.cc index d640997..b7c57b60 100644 --- a/ppapi/shared_impl/test_globals.cc +++ b/ppapi/shared_impl/test_globals.cc
@@ -40,8 +40,6 @@ PP_Module TestGlobals::GetModuleForInstance(PP_Instance instance) { return 0; } -std::string TestGlobals::GetCmdLine() { return std::string(); } - void TestGlobals::PreCacheFontForFlash(const void* /* logfontw */) {} void TestGlobals::LogWithSource(PP_Instance instance,
diff --git a/ppapi/shared_impl/test_globals.h b/ppapi/shared_impl/test_globals.h index a3f36bb..c7b6994 100644 --- a/ppapi/shared_impl/test_globals.h +++ b/ppapi/shared_impl/test_globals.h
@@ -69,7 +69,6 @@ thunk::ResourceCreationAPI* GetResourceCreationAPI( PP_Instance instance) override; PP_Module GetModuleForInstance(PP_Instance instance) override; - std::string GetCmdLine() override; void PreCacheFontForFlash(const void* logfontw) override; void LogWithSource(PP_Instance instance, PP_LogLevel level,
diff --git a/ppapi/tests/test_broker.cc b/ppapi/tests/test_broker.cc deleted file mode 100644 index 40ac5b5e..0000000 --- a/ppapi/tests/test_broker.cc +++ /dev/null
@@ -1,355 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ppapi/tests/test_broker.h" - -#if defined(_MSC_VER) -#define OS_WIN 1 -#include <windows.h> -#else -#define OS_POSIX 1 -#include <errno.h> -#include <unistd.h> -#endif - -#include <stddef.h> -#include <stdint.h> - -#include <cstdio> -#include <cstring> -#include <fstream> -#include <limits> - -#include "ppapi/c/pp_errors.h" -#include "ppapi/c/trusted/ppb_broker_trusted.h" -#include "ppapi/c/trusted/ppp_broker.h" -#include "ppapi/tests/test_utils.h" -#include "ppapi/tests/testing_instance.h" - -REGISTER_TEST_CASE(Broker); - -namespace { - -const char kHelloMessage[] = "Hello Plugin! This is Broker!"; -// Message sent from broker to plugin if the broker is unsandboxed. -const char kBrokerUnsandboxed[] = "Broker is Unsandboxed!"; -// Message sent from broker to plugin if the broker is sandboxed. This message -// needs to be longer than |kBrokerUnsandboxed| because the plugin is expecting -// |kBrokerUnsandboxed|. If it's shorter and the broker doesn't close its handle -// properly the plugin will hang waiting for all data of |kBrokerUnsandboxed| to -// be read. -const char kBrokerSandboxed[] = "Broker is Sandboxed! Verification failed!"; - -#if defined(OS_WIN) -typedef HANDLE PlatformFile; -const PlatformFile kInvalidPlatformFileValue = INVALID_HANDLE_VALUE; -const int32_t kInvalidHandle = static_cast<int32_t>( - reinterpret_cast<intptr_t>(INVALID_HANDLE_VALUE)); -#elif defined(OS_POSIX) -typedef int PlatformFile; -const PlatformFile kInvalidPlatformFileValue = -1; -const int32_t kInvalidHandle = -1; -#endif - -PlatformFile IntToPlatformFile(int32_t handle) { -#if defined(OS_WIN) - return reinterpret_cast<HANDLE>(static_cast<intptr_t>(handle)); -#elif defined(OS_POSIX) - return handle; -#endif -} - -#if defined(OS_POSIX) - -#define HANDLE_EINTR(x) ({ \ - decltype(x) eintr_wrapper_result; \ - do { \ - eintr_wrapper_result = (x); \ - } while (eintr_wrapper_result == -1 && errno == EINTR); \ - eintr_wrapper_result; \ -}) - -#define IGNORE_EINTR(x) ({ \ - decltype(x) eintr_wrapper_result; \ - do { \ - eintr_wrapper_result = (x); \ - if (eintr_wrapper_result == -1 && errno == EINTR) { \ - eintr_wrapper_result = 0; \ - } \ - } while (0); \ - eintr_wrapper_result; \ -}) - -#endif - -bool ReadMessage(PlatformFile file, size_t message_len, char* message) { -#if defined(OS_WIN) - assert(message_len < std::numeric_limits<DWORD>::max()); - DWORD read = 0; - const DWORD size = static_cast<DWORD>(message_len); - return ::ReadFile(file, message, size, &read, NULL) && read == size; -#elif defined(OS_POSIX) - assert(message_len < - static_cast<size_t>(std::numeric_limits<ssize_t>::max())); - size_t total_read = 0; - while (total_read < message_len) { - ssize_t read = HANDLE_EINTR(::read(file, message + total_read, - message_len - total_read)); - if (read <= 0) - break; - total_read += read; - } - return total_read == message_len; -#endif -} - -bool WriteMessage(PlatformFile file, size_t message_len, const char* message) { -#if defined(OS_WIN) - assert(message_len < std::numeric_limits<DWORD>::max()); - DWORD written = 0; - const DWORD size = static_cast<DWORD>(message_len); - return ::WriteFile(file, message, size, &written, NULL) && written == size; -#elif defined(OS_POSIX) - assert(message_len < - static_cast<size_t>(std::numeric_limits<ssize_t>::max())); - size_t total_written = 0; - while (total_written < message_len) { - ssize_t written = HANDLE_EINTR(::write(file, message + total_written, - message_len - total_written)); - if (written <= 0) - break; - total_written += written; - } - return total_written == message_len; -#endif -} - -bool VerifyMessage(PlatformFile file, size_t message_len, const char* message) { - char* message_received = new char[message_len]; - bool success = ReadMessage(file, message_len, message_received) && - !::strcmp(message_received, message); - delete [] message_received; - return success; -} - -bool ClosePlatformFile(PlatformFile file) { -#if defined(OS_WIN) - return !!::CloseHandle(file); -#elif defined(OS_POSIX) - return !IGNORE_EINTR(::close(file)); -#endif -} - -bool VerifyIsUnsandboxed() { -#if defined(OS_WIN) - FILE* file = NULL; - wchar_t temp_path[MAX_PATH] = {'\0'}; - wchar_t file_name[MAX_PATH] = {'\0'}; - if (!::GetTempPath(MAX_PATH, temp_path) || - !::GetTempFileName(temp_path, L"test_pepper_broker", 0, file_name) || - ::_wfopen_s(&file, file_name, L"w")) - return false; - - if (::fclose(file)) { - ::DeleteFile(file_name); - return false; - } - - return !!::DeleteFile(file_name); -#elif defined(OS_POSIX) - char file_name[] = "/tmp/test_pepper_broker_XXXXXX"; - int fd = ::mkstemp(file_name); - if (-1 == fd) - return false; - - if (IGNORE_EINTR(::close(fd))) { - ::remove(file_name); - return false; - } - - return !::remove(file_name); -#endif -} - -// Callback in the broker when a new broker connection occurs. -int32_t OnInstanceConnected(PP_Instance instance, int32_t handle) { - PlatformFile file = IntToPlatformFile(handle); - if (file == kInvalidPlatformFileValue) - return PP_ERROR_FAILED; - - // Send hello message. - if (!WriteMessage(file, sizeof(kHelloMessage), kHelloMessage)) { - ClosePlatformFile(file); - return PP_ERROR_FAILED; - } - - // Verify broker is not sandboxed and send result to plugin over the pipe. - if (VerifyIsUnsandboxed()) { - if (!WriteMessage(file, sizeof(kBrokerUnsandboxed), kBrokerUnsandboxed)) { - ClosePlatformFile(file); - return PP_ERROR_FAILED; - } - } else { - if (!WriteMessage(file, sizeof(kBrokerSandboxed), kBrokerSandboxed)) { - ClosePlatformFile(file); - return PP_ERROR_FAILED; - } - } - - if (!ClosePlatformFile(file)) - return PP_ERROR_FAILED; - - return PP_OK; -} - -} // namespace - -PP_EXPORT int32_t PPP_InitializeBroker( - PP_ConnectInstance_Func* connect_instance_func) { - *connect_instance_func = &OnInstanceConnected; - return PP_OK; -} - -PP_EXPORT void PPP_ShutdownBroker() {} - -TestBroker::TestBroker(TestingInstance* instance) - : TestCase(instance), - broker_interface_(NULL) { -} - -bool TestBroker::Init() { - broker_interface_ = static_cast<const PPB_BrokerTrusted*>( - pp::Module::Get()->GetBrowserInterface(PPB_BROKER_TRUSTED_INTERFACE)); - return !!broker_interface_; -} - -void TestBroker::RunTests(const std::string& filter) { - RUN_TEST(Create, filter); - RUN_TEST(Create, filter); - RUN_TEST(GetHandleFailure, filter); - RUN_TEST_FORCEASYNC_AND_NOT(ConnectFailure, filter); - RUN_TEST_FORCEASYNC_AND_NOT(ConnectAndPipe, filter); - - // The following tests require special setup, so only run them if they're - // explicitly specified by the filter. - if (!ShouldRunAllTests(filter)) { - RUN_TEST(ConnectPermissionDenied, filter); - RUN_TEST(ConnectPermissionGranted, filter); - RUN_TEST(IsAllowedPermissionDenied, filter); - RUN_TEST(IsAllowedPermissionGranted, filter); - } -} - -std::string TestBroker::TestCreate() { - // Very simplistic test to make sure we can create a broker interface. - // TODO(raymes): All of the resources created in this file are leaked. Write - // a C++ wrapper for PPB_Broker_Trusted to avoid these leaks. - PP_Resource broker = broker_interface_->CreateTrusted( - instance_->pp_instance()); - ASSERT_TRUE(broker); - - ASSERT_FALSE(broker_interface_->IsBrokerTrusted(0)); - ASSERT_TRUE(broker_interface_->IsBrokerTrusted(broker)); - - PASS(); -} - -// Test connection on invalid resource. -std::string TestBroker::TestConnectFailure() { - TestCompletionCallback callback(instance_->pp_instance(), callback_type()); - callback.WaitForResult(broker_interface_->Connect(0, - callback.GetCallback().pp_completion_callback())); - CHECK_CALLBACK_BEHAVIOR(callback); - ASSERT_EQ(PP_ERROR_BADRESOURCE, callback.result()); - - PASS(); -} - -std::string TestBroker::TestGetHandleFailure() { - int32_t handle = kInvalidHandle; - - // Test getting the handle for an invalid resource. - ASSERT_EQ(PP_ERROR_BADRESOURCE, broker_interface_->GetHandle(0, &handle)); - - // Connect hasn't been called so this should fail. - PP_Resource broker = broker_interface_->CreateTrusted( - instance_->pp_instance()); - ASSERT_TRUE(broker); - ASSERT_EQ(PP_ERROR_FAILED, broker_interface_->GetHandle(broker, &handle)); - - PASS(); -} - -std::string TestBroker::TestConnectAndPipe() { - PP_Resource broker = broker_interface_->CreateTrusted( - instance_->pp_instance()); - ASSERT_TRUE(broker); - - TestCompletionCallback callback(instance_->pp_instance(), callback_type()); - callback.WaitForResult(broker_interface_->Connect(broker, - callback.GetCallback().pp_completion_callback())); - CHECK_CALLBACK_BEHAVIOR(callback); - ASSERT_EQ(PP_OK, callback.result()); - - int32_t handle = kInvalidHandle; - ASSERT_EQ(PP_OK, broker_interface_->GetHandle(broker, &handle)); - ASSERT_NE(kInvalidHandle, handle); - - PlatformFile file = IntToPlatformFile(handle); - ASSERT_TRUE(VerifyMessage(file, sizeof(kHelloMessage), kHelloMessage)); - ASSERT_TRUE(VerifyMessage(file, sizeof(kBrokerUnsandboxed), - kBrokerUnsandboxed)); - - ASSERT_TRUE(ClosePlatformFile(file)); - - PASS(); -} - -std::string TestBroker::TestConnectPermissionDenied() { - // This assumes that the browser side is set up to deny access to the broker. - PP_Resource broker = broker_interface_->CreateTrusted( - instance_->pp_instance()); - ASSERT_TRUE(broker); - - TestCompletionCallback callback(instance_->pp_instance(), callback_type()); - callback.WaitForResult(broker_interface_->Connect(broker, - callback.GetCallback().pp_completion_callback())); - CHECK_CALLBACK_BEHAVIOR(callback); - ASSERT_EQ(PP_ERROR_NOACCESS, callback.result()); - - PASS(); -} - -std::string TestBroker::TestConnectPermissionGranted() { - // This assumes that the browser side is set up to allow access to the broker. - PP_Resource broker = broker_interface_->CreateTrusted( - instance_->pp_instance()); - ASSERT_TRUE(broker); - - TestCompletionCallback callback(instance_->pp_instance(), callback_type()); - callback.WaitForResult(broker_interface_->Connect(broker, - callback.GetCallback().pp_completion_callback())); - CHECK_CALLBACK_BEHAVIOR(callback); - ASSERT_EQ(PP_OK, callback.result()); - - PASS(); -} - -std::string TestBroker::TestIsAllowedPermissionDenied() { - PP_Resource broker = broker_interface_->CreateTrusted( - instance_->pp_instance()); - ASSERT_TRUE(broker); - ASSERT_EQ(PP_FALSE, broker_interface_->IsAllowed(broker)); - - PASS(); -} - -std::string TestBroker::TestIsAllowedPermissionGranted() { - PP_Resource broker = broker_interface_->CreateTrusted( - instance_->pp_instance()); - ASSERT_TRUE(broker); - ASSERT_EQ(PP_TRUE, broker_interface_->IsAllowed(broker)); - - PASS(); -}
diff --git a/ppapi/tests/test_broker.h b/ppapi/tests/test_broker.h deleted file mode 100644 index ee869f64..0000000 --- a/ppapi/tests/test_broker.h +++ /dev/null
@@ -1,35 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef PPAPI_TESTS_TEST_BROKER_H_ -#define PPAPI_TESTS_TEST_BROKER_H_ - -#include <string> -#include <vector> - -#include "ppapi/c/trusted/ppb_broker_trusted.h" -#include "ppapi/tests/test_case.h" - -class TestBroker : public TestCase { - public: - TestBroker(TestingInstance* instance); - - // TestCase implementation. - virtual bool Init(); - virtual void RunTests(const std::string& filter); - - private: - std::string TestCreate(); - std::string TestConnectFailure(); - std::string TestGetHandleFailure(); - std::string TestConnectAndPipe(); - std::string TestConnectPermissionDenied(); - std::string TestConnectPermissionGranted(); - std::string TestIsAllowedPermissionDenied(); - std::string TestIsAllowedPermissionGranted(); - - const PPB_BrokerTrusted* broker_interface_; -}; - -#endif // PPAPI_TESTS_TEST_BROKER_H_
diff --git a/ppapi/thunk/BUILD.gn b/ppapi/thunk/BUILD.gn index 1fc5932..ae80cd12 100644 --- a/ppapi/thunk/BUILD.gn +++ b/ppapi/thunk/BUILD.gn
@@ -31,7 +31,6 @@ "ppb_audio_input_api.h", "ppb_audio_output_api.h", "ppb_audio_thunk.cc", - "ppb_broker_api.h", "ppb_browser_font_singleton_api.h", "ppb_browser_font_trusted_api.h", "ppb_buffer_api.h", @@ -143,7 +142,6 @@ sources += [ "ppb_audio_input_dev_thunk.cc", "ppb_audio_output_dev_thunk.cc", - "ppb_broker_thunk.cc", "ppb_browser_font_trusted_thunk.cc", "ppb_buffer_thunk.cc", "ppb_char_set_thunk.cc",
diff --git a/ppapi/thunk/interfaces_ppb_private.h b/ppapi/thunk/interfaces_ppb_private.h index 07780c4..fe2b67d 100644 --- a/ppapi/thunk/interfaces_ppb_private.h +++ b/ppapi/thunk/interfaces_ppb_private.h
@@ -17,12 +17,6 @@ PPB_X509Certificate_Private_0_1) #if !defined(OS_NACL) -PROXIED_API(PPB_Broker) - -PROXIED_IFACE(PPB_BROKER_TRUSTED_INTERFACE_0_2, - PPB_BrokerTrusted_0_2) -PROXIED_IFACE(PPB_BROKER_TRUSTED_INTERFACE_0_3, - PPB_BrokerTrusted_0_3) PROXIED_IFACE(PPB_BROWSERFONT_TRUSTED_INTERFACE_1_0, PPB_BrowserFont_Trusted_1_0) PROXIED_IFACE(PPB_CHARSET_TRUSTED_INTERFACE_1_0,
diff --git a/ppapi/thunk/ppb_broker_api.h b/ppapi/thunk/ppb_broker_api.h deleted file mode 100644 index 8ac1dd2e..0000000 --- a/ppapi/thunk/ppb_broker_api.h +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef PPAPI_THUNK_PPB_BROKER_API_H_ -#define PPAPI_THUNK_PPB_BROKER_API_H_ - -#include "base/memory/ref_counted.h" -#include "ppapi/c/pp_bool.h" -#include "ppapi/c/pp_completion_callback.h" -#include "ppapi/c/pp_stdint.h" -#include "ppapi/shared_impl/singleton_resource_id.h" - -namespace ppapi { - -class TrackedCallback; - -namespace thunk { - -class PPB_Broker_API { - public: - virtual ~PPB_Broker_API() {} - - virtual int32_t Connect(scoped_refptr<TrackedCallback> connect_callback) = 0; - virtual int32_t GetHandle(int32_t* handle) = 0; -}; - -// TODO(raymes): Merge this into PPB_Broker_API when the PPB_Broker proxy is -// refactored to the new resource model. The IsAllowed function should be -// attached to the resource implementing the PPB_Broker_API. However in order to -// implement this quickly, the function is added in a new instance API. -class PPB_Broker_Instance_API { - public: - virtual ~PPB_Broker_Instance_API() {} - - virtual PP_Bool IsAllowed() = 0; - - static const SingletonResourceID kSingletonResourceID = BROKER_SINGLETON_ID; -}; - -} // namespace thunk -} // namespace ppapi - -#endif // PPAPI_THUNK_PPB_BROKER_API_H_
diff --git a/ppapi/thunk/ppb_broker_thunk.cc b/ppapi/thunk/ppb_broker_thunk.cc deleted file mode 100644 index 43a82f3..0000000 --- a/ppapi/thunk/ppb_broker_thunk.cc +++ /dev/null
@@ -1,88 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include <stdint.h> - -#include "ppapi/c/pp_errors.h" -#include "ppapi/c/trusted/ppb_broker_trusted.h" -#include "ppapi/shared_impl/tracked_callback.h" -#include "ppapi/thunk/enter.h" -#include "ppapi/thunk/ppb_broker_api.h" -#include "ppapi/thunk/resource_creation_api.h" -#include "ppapi/thunk/thunk.h" - -namespace ppapi { -namespace thunk { - -namespace { - -PP_Resource CreateTrusted(PP_Instance instance) { - EnterResourceCreation enter(instance); - if (enter.failed()) - return 0; - return enter.functions()->CreateBroker(instance); -} - -PP_Bool IsBrokerTrusted(PP_Resource resource) { - EnterResource<PPB_Broker_API> enter(resource, false); - return PP_FromBool(enter.succeeded()); -} - -int32_t Connect(PP_Resource resource, - PP_CompletionCallback callback) { - EnterResource<PPB_Broker_API> enter(resource, callback, true); - if (enter.failed()) - return enter.retval(); - return enter.SetResult(enter.object()->Connect(enter.callback())); -} - -int32_t GetHandle(PP_Resource resource, int32_t* handle) { - EnterResource<PPB_Broker_API> enter(resource, true); - if (enter.failed()) - return enter.retval(); - return enter.object()->GetHandle(handle); -} - -PP_Bool IsAllowed(PP_Resource resource) { - // TODO(raymes): This is a hack. See the note in ppb_broker_api.h. - PP_Instance instance = 0; - { - EnterResource<PPB_Broker_API> enter_resource(resource, true); - if (enter_resource.failed()) - return PP_FALSE; - instance = enter_resource.resource()->pp_instance(); - } - EnterInstanceAPI<PPB_Broker_Instance_API> enter_instance(instance); - if (enter_instance.failed()) - return PP_FALSE; - return enter_instance.functions()->IsAllowed(); -} - -const PPB_BrokerTrusted_0_2 g_ppb_broker_0_2_thunk = { - &CreateTrusted, - &IsBrokerTrusted, - &Connect, - &GetHandle, -}; - -const PPB_BrokerTrusted_0_3 g_ppb_broker_0_3_thunk = { - &CreateTrusted, - &IsBrokerTrusted, - &Connect, - &GetHandle, - &IsAllowed, -}; - -} // namespace - -const PPB_BrokerTrusted_0_2* GetPPB_BrokerTrusted_0_2_Thunk() { - return &g_ppb_broker_0_2_thunk; -} - -const PPB_BrokerTrusted_0_3* GetPPB_BrokerTrusted_0_3_Thunk() { - return &g_ppb_broker_0_3_thunk; -} - -} // namespace thunk -} // namespace ppapi
diff --git a/ppapi/thunk/resource_creation_api.h b/ppapi/thunk/resource_creation_api.h index 90727f6..3c53a8d0 100644 --- a/ppapi/thunk/resource_creation_api.h +++ b/ppapi/thunk/resource_creation_api.h
@@ -179,7 +179,6 @@ #if !defined(OS_NACL) virtual PP_Resource CreateAudioInput(PP_Instance instance) = 0; virtual PP_Resource CreateAudioOutput(PP_Instance instance) = 0; - virtual PP_Resource CreateBroker(PP_Instance instance) = 0; virtual PP_Resource CreateBrowserFont( PP_Instance instance, const PP_BrowserFont_Trusted_Description* description) = 0;
diff --git a/printing/backend/print_backend.h b/printing/backend/print_backend.h index db9bc3f..b8b46ff 100644 --- a/printing/backend/print_backend.h +++ b/printing/backend/print_backend.h
@@ -5,11 +5,14 @@ #ifndef PRINTING_BACKEND_PRINT_BACKEND_H_ #define PRINTING_BACKEND_PRINT_BACKEND_H_ +#include <stdint.h> + #include <map> #include <string> #include <vector> #include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "printing/mojom/print.mojom.h" @@ -28,6 +31,8 @@ // This is the interface for platform-specific code for a print backend namespace printing { +using PrinterBasicInfoOptions = std::map<std::string, std::string>; + struct PRINTING_EXPORT PrinterBasicInfo { PrinterBasicInfo(); PrinterBasicInfo(const PrinterBasicInfo& other); @@ -42,8 +47,8 @@ std::string display_name; std::string printer_description; int printer_status = 0; - int is_default = false; - std::map<std::string, std::string> options; + bool is_default = false; + PrinterBasicInfoOptions options; }; using PrinterList = std::vector<PrinterBasicInfo>;
diff --git a/printing/backend/test_print_backend.cc b/printing/backend/test_print_backend.cc index e2daca2..2eff8c9a 100644 --- a/printing/backend/test_print_backend.cc +++ b/printing/backend/test_print_backend.cc
@@ -72,7 +72,10 @@ void TestPrintBackend::AddValidPrinter( const std::string& printer_name, - std::unique_ptr<PrinterSemanticCapsAndDefaults> caps) { + std::unique_ptr<PrinterSemanticCapsAndDefaults> caps, + std::unique_ptr<PrinterBasicInfo> info) { + // TODO(crbug.com/809738) Utilize the extra `info` parameter to improve + // TestPrintBackend internal consistency. valid_printers_[printer_name] = std::move(caps); }
diff --git a/printing/backend/test_print_backend.h b/printing/backend/test_print_backend.h index 98f4041f..c80b8b0 100644 --- a/printing/backend/test_print_backend.h +++ b/printing/backend/test_print_backend.h
@@ -36,10 +36,19 @@ // Set a default printer. The default is the empty string. void SetDefaultPrinterName(const std::string& printer_name); - // Add a printer to satisfy IsValidPrinter and - // GetPrinterSemanticCapsAndDefualts. + // Add a printer to satisfy IsValidPrinter(), EnumeratePrinters(), + // GetPrinterBasicInfo(), and GetPrinterSemanticCapsAndDefaults(). + // While `caps` can be null, it will cause queries for the capabilities to + // fail, and thus is likely not of interest for most tests. IsValidPrinter() + // will still show true even if `caps` is null, which provides the benefit of + // simulating a printer that exists in the system but cannot be queried. + // `info` can be null, which will result in empty information being provided + // for any queries. + // Calling EnumeratePrinters() will include the identified `printer_name` + // even if either parameter is null. void AddValidPrinter(const std::string& printer_name, - std::unique_ptr<PrinterSemanticCapsAndDefaults> caps); + std::unique_ptr<PrinterSemanticCapsAndDefaults> caps, + std::unique_ptr<PrinterBasicInfo> info); protected: ~TestPrintBackend() override;
diff --git a/sandbox/policy/sandbox_type.cc b/sandbox/policy/sandbox_type.cc index c96b871..c22a6d4 100644 --- a/sandbox/policy/sandbox_type.cc +++ b/sandbox/policy/sandbox_type.cc
@@ -178,8 +178,6 @@ return SandboxType::kNoSandbox; return SandboxType::kGpu; } - if (process_type == switches::kPpapiBrokerProcess) - return SandboxType::kNoSandbox; if (process_type == switches::kPpapiPluginProcess) return SandboxType::kPpapi;
diff --git a/sandbox/policy/sandbox_type_unittest.cc b/sandbox/policy/sandbox_type_unittest.cc index 36347574..e6860da 100644 --- a/sandbox/policy/sandbox_type_unittest.cc +++ b/sandbox/policy/sandbox_type_unittest.cc
@@ -134,19 +134,6 @@ EXPECT_EQ(SandboxType::kNoSandbox, SandboxTypeFromCommandLine(command_line)); } -TEST(SandboxTypeTest, PPAPIBroker) { - base::CommandLine command_line(base::CommandLine::NO_PROGRAM); - command_line.AppendSwitchASCII(switches::kProcessType, - switches::kPpapiBrokerProcess); - EXPECT_EQ(SandboxType::kNoSandbox, SandboxTypeFromCommandLine(command_line)); - - command_line.AppendSwitchASCII(switches::kServiceSandboxType, "network"); - EXPECT_EQ(SandboxType::kNoSandbox, SandboxTypeFromCommandLine(command_line)); - - command_line.AppendSwitch(switches::kNoSandbox); - EXPECT_EQ(SandboxType::kNoSandbox, SandboxTypeFromCommandLine(command_line)); -} - TEST(SandboxTypeTest, PPAPIPlugin) { base::CommandLine command_line(base::CommandLine::NO_PROGRAM); command_line.AppendSwitchASCII(switches::kProcessType,
diff --git a/sandbox/policy/switches.cc b/sandbox/policy/switches.cc index 3afb8768..9f103e9 100644 --- a/sandbox/policy/switches.cc +++ b/sandbox/policy/switches.cc
@@ -114,7 +114,6 @@ const char kGpuProcess[] = "gpu-process"; const char kNaClBrokerProcess[] = "nacl-broker"; const char kNaClLoaderProcess[] = "nacl-loader"; -const char kPpapiBrokerProcess[] = "ppapi-broker"; const char kPpapiPluginProcess[] = "ppapi"; const char kRendererProcess[] = "renderer"; const char kUtilityProcess[] = "utility";
diff --git a/sandbox/policy/switches.h b/sandbox/policy/switches.h index e096e96..b02ae73 100644 --- a/sandbox/policy/switches.h +++ b/sandbox/policy/switches.h
@@ -71,7 +71,6 @@ SANDBOX_POLICY_EXPORT extern const char kGpuProcess[]; SANDBOX_POLICY_EXPORT extern const char kNaClBrokerProcess[]; SANDBOX_POLICY_EXPORT extern const char kNaClLoaderProcess[]; -SANDBOX_POLICY_EXPORT extern const char kPpapiBrokerProcess[]; SANDBOX_POLICY_EXPORT extern const char kPpapiPluginProcess[]; SANDBOX_POLICY_EXPORT extern const char kRendererProcess[]; SANDBOX_POLICY_EXPORT extern const char kUtilityProcess[];
diff --git a/services/network/public/cpp/content_security_policy/content_security_policy.cc b/services/network/public/cpp/content_security_policy/content_security_policy.cc index 21c5aa5..a708015c 100644 --- a/services/network/public/cpp/content_security_policy/content_security_policy.cc +++ b/services/network/public/cpp/content_security_policy/content_security_policy.cc
@@ -220,12 +220,27 @@ return GURL(url.path()); } -bool ShouldBypassContentSecurityPolicy(CSPContext* context, const GURL& url) { - if (url.SchemeIsFileSystem() || url.SchemeIsBlob()) { - return context->SchemeShouldBypassCSP(ExtractInnerURL(url).scheme()); - } else { - return context->SchemeShouldBypassCSP(url.scheme()); - } +std::string InnermostScheme(const GURL& url) { + if (url.SchemeIsFileSystem() || url.SchemeIsBlob()) + return ExtractInnerURL(url).scheme(); + return url.scheme(); +} + +// Extensions can load their own internal content into the document. They +// shouldn't be blocked by the document's CSP. +// +// There is an exception: CSP:frame-ancestors. This one is not about allowing a +// document to embed other resources. This is about being embedded. As such +// this shouldn't be bypassed. A document should be able to deny being embedded +// inside an extension. +// See https://crbug.com/1115590 +bool ShouldBypassContentSecurityPolicy(CSPContext* context, + CSPDirectiveName directive, + const GURL& url) { + if (directive == CSPDirectiveName::FrameAncestors) + return false; + + return context->SchemeShouldBypassCSP(InnermostScheme(url)); } // Parses a "Content-Security-Policy" header. @@ -982,7 +997,7 @@ CSPContext* context, const mojom::SourceLocationPtr& source_location, bool is_form_submission) { - if (ShouldBypassContentSecurityPolicy(context, url)) + if (ShouldBypassContentSecurityPolicy(context, directive_name, url)) return true; // 'navigate-to' has no effect when doing a form submission and a
diff --git a/services/network/public/cpp/content_security_policy/csp_context.cc b/services/network/public/cpp/content_security_policy/csp_context.cc index 563f7eb..ee5a5d5 100644 --- a/services/network/public/cpp/content_security_policy/csp_context.cc +++ b/services/network/public/cpp/content_security_policy/csp_context.cc
@@ -39,9 +39,6 @@ const mojom::SourceLocationPtr& source_location, CheckCSPDisposition check_csp_disposition, bool is_form_submission) { - if (SchemeShouldBypassCSP(url.scheme_piece())) - return true; - bool allow = true; for (const auto& policy : policies_) { if (ShouldCheckPolicy(policy, check_csp_disposition)) {
diff --git a/services/network/public/cpp/ip_address_space_util.cc b/services/network/public/cpp/ip_address_space_util.cc index a9824b1..b81778bf 100644 --- a/services/network/public/cpp/ip_address_space_util.cc +++ b/services/network/public/cpp/ip_address_space_util.cc
@@ -5,6 +5,9 @@ #include "services/network/public/cpp/ip_address_space_util.h" #include "net/base/ip_address.h" +#include "services/network/public/cpp/content_security_policy/content_security_policy.h" +#include "services/network/public/mojom/url_response_head.mojom.h" +#include "url/gurl.h" namespace network { @@ -41,4 +44,31 @@ return CollapseUnknown(lhs) < CollapseUnknown(rhs); } +IPAddressSpace CalculateClientAddressSpace( + const GURL& url, + const mojom::URLResponseHead* response_head) { + if (url.SchemeIsFile()) { + // See: https://wicg.github.io/cors-rfc1918/#file-url. + return IPAddressSpace::kLocal; + } + + if (!response_head) { + return IPAddressSpace::kUnknown; + } + + // First, check whether the response forces itself into a public address space + // as per https://wicg.github.io/cors-rfc1918/#csp. + DCHECK(response_head->parsed_headers) + << "CalculateIPAddressSpace() called for URL " << url + << " with null parsed_headers."; + if (response_head->parsed_headers && + ShouldTreatAsPublicAddress( + response_head->parsed_headers->content_security_policy)) { + return IPAddressSpace::kPublic; + } + + // Otherwise, calculate the address space via the provided IP address. + return IPAddressToIPAddressSpace(response_head->remote_endpoint.address()); +} + } // namespace network
diff --git a/services/network/public/cpp/ip_address_space_util.h b/services/network/public/cpp/ip_address_space_util.h index d16f8f9..4e8423c 100644 --- a/services/network/public/cpp/ip_address_space_util.h +++ b/services/network/public/cpp/ip_address_space_util.h
@@ -6,6 +6,9 @@ #define SERVICES_NETWORK_PUBLIC_CPP_IP_ADDRESS_SPACE_UTIL_H_ #include "services/network/public/mojom/ip_address_space.mojom.h" +#include "services/network/public/mojom/url_response_head.mojom-forward.h" + +class GURL; namespace net { @@ -17,8 +20,8 @@ // Returns the IPAddressSpace from an IPAddress. // -// This can be used as-is for subresource requests. For documents, also take -// into account the 'treat-as-public-address' CSP directive. +// WARNING: This can only be used as-is for subresource requests loaded over the +// network. For other cases, see the Calculate*AddressSpace() functions below. mojom::IPAddressSpace COMPONENT_EXPORT(NETWORK_CPP) IPAddressToIPAddressSpace(const net::IPAddress& address); @@ -36,6 +39,30 @@ IsLessPublicAddressSpace(mojom::IPAddressSpace lhs, mojom::IPAddressSpace rhs); +// Given a request URL and response information, this function calculates the +// IPAddressSpace which should be associated with documents or worker global +// scopes (collectively: request clients) instantiated from this resource. +// +// |response_head| may be nullptr. Caller retains ownership. If not nullptr, +// then |response_head->parsed_headers| must be populated with the result of +// parsing |response->headers|. +// +// WARNING: This function is defined here for proximity with related code and +// the data structures involved. However since it deals with higher-level +// concepts too (documents and worker global scopes), it should probably only be +// used at the content/ layer or above. +// +// See: https://wicg.github.io/cors-rfc1918/#address-space +// +// TODO(https://crbug.com/1134601): This implementation treats requests that +// don't use a URL loader (`about:blank`), as well as requests whose IP address +// is invalid (`about:srcdoc`, `blob:`, etc.) as `kUnknown`. This is incorrect. +// We'll eventually want to make sure we inherit from the client's creator +// in some cases), but safe, as `kUnknown` is treated the same as `kPublic`. +mojom::IPAddressSpace COMPONENT_EXPORT(NETWORK_CPP) + CalculateClientAddressSpace(const GURL& url, + const mojom::URLResponseHead* response_head); + } // namespace network #endif // SERVICES_NETWORK_PUBLIC_CPP_IP_ADDRESS_SPACE_UTIL_H_
diff --git a/services/network/public/cpp/ip_address_space_util_unittest.cc b/services/network/public/cpp/ip_address_space_util_unittest.cc index c29491b3..a7120f6f 100644 --- a/services/network/public/cpp/ip_address_space_util_unittest.cc +++ b/services/network/public/cpp/ip_address_space_util_unittest.cc
@@ -4,15 +4,30 @@ #include "services/network/public/cpp/ip_address_space_util.h" +#include <utility> + #include "net/base/ip_address.h" +#include "net/base/ip_endpoint.h" +#include "services/network/public/mojom/content_security_policy.mojom.h" +#include "services/network/public/mojom/parsed_headers.mojom.h" +#include "services/network/public/mojom/url_response_head.mojom.h" #include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" namespace network { namespace { +using mojom::ContentSecurityPolicy; using mojom::IPAddressSpace; +using mojom::ParsedHeaders; +using mojom::URLResponseHead; using net::IPAddress; using net::IPAddressBytes; +using net::IPEndPoint; + +IPAddress PrivateIPv4Address() { + return IPAddress(192, 168, 1, 1); +} TEST(IPAddressSpaceTest, IPAddressToIPAddressSpacev4) { EXPECT_EQ(IPAddressToIPAddressSpace(IPAddress()), IPAddressSpace::kUnknown); @@ -20,12 +35,12 @@ EXPECT_EQ(IPAddressToIPAddressSpace(IPAddress(64, 233, 160, 0)), IPAddressSpace::kPublic); - EXPECT_EQ(IPAddressToIPAddressSpace(IPAddress(192, 168, 1, 1)), + EXPECT_EQ(IPAddressToIPAddressSpace(PrivateIPv4Address()), IPAddressSpace::kPrivate); EXPECT_EQ(IPAddressToIPAddressSpace(IPAddress(10, 1, 1, 1)), IPAddressSpace::kPrivate); - EXPECT_EQ(IPAddressToIPAddressSpace(IPAddress(127, 0, 0, 1)), + EXPECT_EQ(IPAddressToIPAddressSpace(IPAddress::IPv4Localhost()), IPAddressSpace::kLocal); } @@ -93,5 +108,48 @@ IPAddressSpace::kUnknown)); } +TEST(IPAddressSpaceTest, CalculateClientAddressSpaceFileURL) { + EXPECT_EQ(IPAddressSpace::kLocal, + CalculateClientAddressSpace(GURL("file:///foo"), nullptr)); +} + +TEST(IPAddressSpaceTest, CalculateClientAddressSpaceNullResponseHead) { + EXPECT_EQ(IPAddressSpace::kUnknown, + CalculateClientAddressSpace(GURL("http://foo.test"), nullptr)); +} + +TEST(IPAddressSpaceTest, CalculateClientAddressSpaceEmptyResponseHead) { + URLResponseHead response_head; + response_head.parsed_headers = ParsedHeaders::New(); + EXPECT_EQ( + IPAddressSpace::kUnknown, + CalculateClientAddressSpace(GURL("http://foo.test"), &response_head)); +} + +TEST(IPAddressSpaceTest, CalculateClientAddressSpaceIPAddress) { + URLResponseHead response_head; + response_head.remote_endpoint = IPEndPoint(PrivateIPv4Address(), 1234); + response_head.parsed_headers = ParsedHeaders::New(); + + EXPECT_EQ( + IPAddressSpace::kPrivate, + CalculateClientAddressSpace(GURL("http://foo.test"), &response_head)); +} + +TEST(IPAddressSpaceTest, CalculateClientAddressSpaceTreatAsPublicAddress) { + URLResponseHead response_head; + response_head.remote_endpoint = IPEndPoint(IPAddress::IPv4Localhost(), 1234); + + auto csp = ContentSecurityPolicy::New(); + csp->treat_as_public_address = true; + response_head.parsed_headers = ParsedHeaders::New(); + response_head.parsed_headers->content_security_policy.push_back( + std::move(csp)); + + EXPECT_EQ( + IPAddressSpace::kPublic, + CalculateClientAddressSpace(GURL("http://foo.test"), &response_head)); +} + } // namespace } // namespace network
diff --git a/third_party/blink/public/BUILD.gn b/third_party/blink/public/BUILD.gn index 6cd29fe..caf2f2a 100644 --- a/third_party/blink/public/BUILD.gn +++ b/third_party/blink/public/BUILD.gn
@@ -260,6 +260,7 @@ "platform/web_url_loader_mock_factory.h", "platform/web_url_loader_test_delegate.h", "platform/web_url_request.h", + "platform/web_url_request_util.h", "platform/web_url_response.h", "platform/web_vector.h", "platform/web_video_frame_submitter.h",
diff --git a/third_party/blink/public/platform/DEPS b/third_party/blink/public/platform/DEPS index 170382c..23fb529 100644 --- a/third_party/blink/public/platform/DEPS +++ b/third_party/blink/public/platform/DEPS
@@ -39,6 +39,7 @@ "+net/url_request/redirect_info.h", "+services/network/public/cpp/cors/cors_error_status.h", "+services/network/public/cpp/cors/preflight_result.h", + "+services/network/public/cpp/resource_request_body.h", "+services/network/public/cpp/shared_url_loader_factory.h", # Enforce to use mojom-shared.h in blink/public so that it can compile
diff --git a/third_party/blink/public/platform/internet_disconnected_web_url_loader.h b/third_party/blink/public/platform/internet_disconnected_web_url_loader.h index bf430f6..01683dd 100644 --- a/third_party/blink/public/platform/internet_disconnected_web_url_loader.h +++ b/third_party/blink/public/platform/internet_disconnected_web_url_loader.h
@@ -39,7 +39,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -56,7 +55,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper> resource_load_info_notifier_wrapper,
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h index 77f99305..a36dcbb 100644 --- a/third_party/blink/public/platform/web_runtime_features.h +++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -74,6 +74,7 @@ BLINK_PLATFORM_EXPORT static void EnableAccelerated2dCanvas(bool); BLINK_PLATFORM_EXPORT static void EnableAccessibilityExposeDisplayNone(bool); BLINK_PLATFORM_EXPORT static void EnableAccessibilityExposeHTMLElement(bool); + BLINK_PLATFORM_EXPORT static void EnableAccessibilityExposeIgnoredNodes(bool); BLINK_PLATFORM_EXPORT static void EnableAccessibilityObjectModel(bool); BLINK_PLATFORM_EXPORT static void EnableAdTagging(bool); BLINK_PLATFORM_EXPORT static void EnableAllowActivationDelegationAttr(bool);
diff --git a/third_party/blink/public/platform/web_url_loader.h b/third_party/blink/public/platform/web_url_loader.h index 5e42be1..24c7218 100644 --- a/third_party/blink/public/platform/web_url_loader.h +++ b/third_party/blink/public/platform/web_url_loader.h
@@ -69,7 +69,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -90,7 +89,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<ResourceLoadInfoNotifierWrapper>, WebURLLoaderClient*) = 0;
diff --git a/third_party/blink/public/platform/web_url_request_util.h b/third_party/blink/public/platform/web_url_request_util.h new file mode 100644 index 0000000..dd996aa --- /dev/null +++ b/third_party/blink/public/platform/web_url_request_util.h
@@ -0,0 +1,49 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_URL_REQUEST_UTIL_H_ +#define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_URL_REQUEST_UTIL_H_ + +#include "net/http/http_request_headers.h" +#include "services/network/public/cpp/resource_request_body.h" +#include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-forward.h" +#include "third_party/blink/public/mojom/loader/resource_load_info.mojom-forward.h" +#include "third_party/blink/public/platform/web_common.h" +#include "third_party/blink/public/platform/web_mixed_content_context_type.h" + +namespace blink { + +class WebHTTPBody; +class WebURLRequest; +class WebString; + +BLINK_PLATFORM_EXPORT WebString +GetWebURLRequestHeadersAsString(const WebURLRequest& request); + +// Takes a ResourceRequestBody and converts into WebHTTPBody. +BLINK_PLATFORM_EXPORT WebHTTPBody +GetWebHTTPBodyForRequestBody(const network::ResourceRequestBody& input); + +// Takes a WebHTTPBody and converts into a ResourceRequestBody. +BLINK_PLATFORM_EXPORT scoped_refptr<network::ResourceRequestBody> +GetRequestBodyForWebHTTPBody(const WebHTTPBody& httpBody); + +// Takes a WebURLRequest and sets the appropriate information +// in a ResourceRequestBody structure. Returns an empty scoped_refptr +// if the request body is not present. +BLINK_PLATFORM_EXPORT scoped_refptr<network::ResourceRequestBody> +GetRequestBodyForWebURLRequest(const WebURLRequest& request); + +// Helper functions to convert enums from the blink type to the content +// type. +BLINK_PLATFORM_EXPORT mojom::RequestContextType +GetRequestContextTypeForWebURLRequest(const WebURLRequest& request); +BLINK_PLATFORM_EXPORT network::mojom::RequestDestination +GetRequestDestinationForWebURLRequest(const WebURLRequest& request); +BLINK_PLATFORM_EXPORT WebMixedContentContextType +GetMixedContentContextTypeForWebURLRequest(const WebURLRequest& request); + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_URL_REQUEST_UTIL_H_
diff --git a/third_party/blink/public/strings/translations/blink_strings_as.xtb b/third_party/blink/public/strings/translations/blink_strings_as.xtb index b28bc19..f7c1b399 100644 --- a/third_party/blink/public/strings/translations/blink_strings_as.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_as.xtb
@@ -30,6 +30,7 @@ <translation id="1806710327868736751">সতৰ্কতা সম্পৰ্কীয়_ডায়লগ</translation> <translation id="1821985195704844674">ট্ৰী গ্ৰিড</translation> <translation id="1822429046913737220">AM/PM</translation> +<translation id="1823704031293214298">পৃষ্ঠাৰ ফুটাৰ</translation> <translation id="1832974991323546415">ৰিম’ট ডিভাইচত প্লে’ কৰক</translation> <translation id="190587075670221089">মচা কার্য</translation> <translation id="1907737156431278478">উদাহৰণ</translation> @@ -105,6 +106,7 @@ <translation id="4201051445878709314">পূৰ্বৱৰ্তী মাহটো দেখুৱাওক</translation> <translation id="421884353938374759">ৰং নিৰ্বাচক</translation> <translation id="4248100235867064564">মেনু বাৰ</translation> +<translation id="4293574643247337246">পৃষ্ঠাৰ হে’ডাৰ</translation> <translation id="4360991593054037559">অনুগ্ৰহ কৰি এক মান্য মান দিয়ক। নিকটৱর্তী মান্য মান দুটা হৈছে <ph name="VALID_VALUE_LOW" /> আৰু <ph name="VALID_VALUE_HIGHER" />।</translation> <translation id="4384583879834880242">প্ৰশ্ন আৰু উত্তৰ</translation> <translation id="4444765639179266822">এনেকুৱা কিহবাৰ কথা কোৱা যেন লাগিছে: <ph name="OCR_TEXT" /></translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_es-419.xtb b/third_party/blink/public/strings/translations/blink_strings_es-419.xtb index bda5505..2473917 100644 --- a/third_party/blink/public/strings/translations/blink_strings_es-419.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_es-419.xtb
@@ -30,6 +30,7 @@ <translation id="1806710327868736751">alert_dialog</translation> <translation id="1821985195704844674">cuadrícula de árbol</translation> <translation id="1822429046913737220">AM/PM</translation> +<translation id="1823704031293214298">pie de página</translation> <translation id="1832974991323546415">jugar en el dispositivo remoto</translation> <translation id="190587075670221089">contenido borrado</translation> <translation id="1907737156431278478">ejemplo</translation> @@ -105,6 +106,7 @@ <translation id="4201051445878709314">Mostrar el mes anterior</translation> <translation id="421884353938374759">selector de color</translation> <translation id="4248100235867064564">barra de menús</translation> +<translation id="4293574643247337246">encabezado</translation> <translation id="4360991593054037559">Ingresa un valor válido. Los dos valores válidos más aproximados son <ph name="VALID_VALUE_LOW" /> y <ph name="VALID_VALUE_HIGHER" />.</translation> <translation id="4384583879834880242">Preguntas y respuestas</translation> <translation id="4444765639179266822">Parece decir: <ph name="OCR_TEXT" /></translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_zh-CN.xtb b/third_party/blink/public/strings/translations/blink_strings_zh-CN.xtb index df129bc..f80c718 100644 --- a/third_party/blink/public/strings/translations/blink_strings_zh-CN.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_zh-CN.xtb
@@ -30,6 +30,7 @@ <translation id="1806710327868736751">提醒对话框</translation> <translation id="1821985195704844674">树状网格</translation> <translation id="1822429046913737220">上午/下午</translation> +<translation id="1823704031293214298">页脚</translation> <translation id="1832974991323546415">在远程设备上播放</translation> <translation id="190587075670221089">删除</translation> <translation id="1907737156431278478">示例</translation> @@ -105,6 +106,7 @@ <translation id="4201051445878709314">显示上一个月</translation> <translation id="421884353938374759">颜色选择器</translation> <translation id="4248100235867064564">菜单栏</translation> +<translation id="4293574643247337246">页首</translation> <translation id="4360991593054037559">请输入有效值。两个最接近的有效值分别为<ph name="VALID_VALUE_LOW" />和<ph name="VALID_VALUE_HIGHER" />。</translation> <translation id="4384583879834880242">问答</translation> <translation id="4444765639179266822">似乎是说:<ph name="OCR_TEXT" /></translation>
diff --git a/third_party/blink/renderer/bindings/core/v8/script_streamer_test.cc b/third_party/blink/renderer/bindings/core/v8/script_streamer_test.cc index 9bd6065..de1c0ce 100644 --- a/third_party/blink/renderer/bindings/core/v8/script_streamer_test.cc +++ b/third_party/blink/renderer/bindings/core/v8/script_streamer_test.cc
@@ -83,7 +83,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -102,7 +101,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper> resource_load_info_notifier_wrapper,
diff --git a/third_party/blink/renderer/bindings/modules/v8/generated.gni b/third_party/blink/renderer/bindings/modules/v8/generated.gni index 62f5cae..2818d9ac 100644 --- a/third_party/blink/renderer/bindings/modules/v8/generated.gni +++ b/third_party/blink/renderer/bindings/modules/v8/generated.gni
@@ -47,6 +47,8 @@ "$bindings_modules_v8_output_dir/dom_exception_or_overconstrained_error.h", "$bindings_modules_v8_output_dir/double_or_constrain_double_range.cc", "$bindings_modules_v8_output_dir/double_or_constrain_double_range.h", + "$bindings_modules_v8_output_dir/double_or_dom_point.h", + "$bindings_modules_v8_output_dir/double_or_dom_point.cc", "$bindings_modules_v8_output_dir/double_sequence_or_gpu_color_dict.cc", "$bindings_modules_v8_output_dir/double_sequence_or_gpu_color_dict.h", "$bindings_modules_v8_output_dir/float32_array_or_float64_array_or_dom_matrix.cc", @@ -95,8 +97,6 @@ "$bindings_modules_v8_output_dir/string_or_array_buffer_or_array_buffer_view_or_ndef_message_init.h", "$bindings_modules_v8_output_dir/string_or_canvas_gradient_or_canvas_pattern.cc", "$bindings_modules_v8_output_dir/string_or_canvas_gradient_or_canvas_pattern.h", - "$bindings_modules_v8_output_dir/double_or_dom_point.h", - "$bindings_modules_v8_output_dir/double_or_dom_point.cc", "$bindings_modules_v8_output_dir/string_or_string_sequence_or_constrain_dom_string_parameters.cc", "$bindings_modules_v8_output_dir/string_or_string_sequence_or_constrain_dom_string_parameters.h", "$bindings_modules_v8_output_dir/string_or_unsigned_long.cc",
diff --git a/third_party/blink/renderer/core/css/BUILD.gn b/third_party/blink/renderer/core/css/BUILD.gn index 8bceb63..3f40690 100644 --- a/third_party/blink/renderer/core/css/BUILD.gn +++ b/third_party/blink/renderer/core/css/BUILD.gn
@@ -689,6 +689,7 @@ "resolver/style_resolver_test.cc", "rule_feature_set_test.cc", "rule_set_test.cc", + "selector_checker_test.cc", "selector_query_test.cc", "style_element_test.cc", "style_engine_test.cc",
diff --git a/third_party/blink/renderer/core/css/css_selector.cc b/third_party/blink/renderer/core/css/css_selector.cc index 0b73bb6..84ea9ee 100644 --- a/third_party/blink/renderer/core/css/css_selector.cc +++ b/third_party/blink/renderer/core/css/css_selector.cc
@@ -1037,53 +1037,23 @@ return true; } -unsigned CSSSelector::ComputeLinkMatchType(unsigned link_match_type) const { - // Determine if this selector will match a link in visited, unvisited or any - // state, or never. - // :visited never matches other elements than the innermost link element. +bool CSSSelector::HasLinkOrVisited() const { for (const CSSSelector* current = this; current; current = current->TagHistory()) { - switch (current->GetPseudoType()) { - case kPseudoNot: { - // :not(:visited) is equivalent to :link. Parser enforces that :not - // can't nest. - DCHECK(current->SelectorList()); - for (const CSSSelector* sub_selector = current->SelectorList()->First(); - sub_selector; sub_selector = sub_selector->TagHistory()) { - PseudoType sub_type = sub_selector->GetPseudoType(); - if (sub_type == kPseudoVisited) - link_match_type &= ~kMatchVisited; - else if (sub_type == kPseudoLink) - link_match_type &= ~kMatchLink; - } - } break; - case kPseudoLink: - link_match_type &= ~kMatchVisited; - break; - case kPseudoVisited: - link_match_type &= ~kMatchLink; - break; - case kPseudoSlotted: - DCHECK(current->SelectorList()); - DCHECK(current->SelectorList()->First()); - DCHECK(!CSSSelectorList::Next(*current->SelectorList()->First())); - link_match_type = - current->SelectorList()->First()->ComputeLinkMatchType( - link_match_type); - break; - default: - // We don't support :link and :visited inside :-webkit-any. - break; + CSSSelector::PseudoType pseudo = current->GetPseudoType(); + if (pseudo == CSSSelector::kPseudoLink || + pseudo == CSSSelector::kPseudoVisited) { + return true; } - RelationType relation = current->Relation(); - if (relation == kSubSelector) - continue; - if (relation != kDescendant && relation != kChild) - return link_match_type; - if (link_match_type != kMatchAll) - return link_match_type; + if (const CSSSelectorList* list = current->SelectorList()) { + for (const CSSSelector* sub_selector = list->First(); sub_selector; + sub_selector = CSSSelectorList::Next(*sub_selector)) { + if (sub_selector->HasLinkOrVisited()) + return true; + } + } } - return link_match_type; + return false; } void CSSSelector::SetNth(int a, int b) {
diff --git a/third_party/blink/renderer/core/css/css_selector.h b/third_party/blink/renderer/core/css/css_selector.h index 13d03dd..9a92eb4a 100644 --- a/third_party/blink/renderer/core/css/css_selector.h +++ b/third_party/blink/renderer/core/css/css_selector.h
@@ -376,7 +376,10 @@ kMatchVisited = 2, kMatchAll = kMatchLink | kMatchVisited }; - unsigned ComputeLinkMatchType(unsigned link_match_type) const; + + // True if :link or :visited pseudo-classes are found anywhere in + // the selector. + bool HasLinkOrVisited() const; bool IsForPage() const { return is_for_page_; } void SetForPage() { is_for_page_ = true; }
diff --git a/third_party/blink/renderer/core/css/css_selector_test.cc b/third_party/blink/renderer/core/css/css_selector_test.cc index 65212137..97f0d9b5 100644 --- a/third_party/blink/renderer/core/css/css_selector_test.cc +++ b/third_party/blink/renderer/core/css/css_selector_test.cc
@@ -16,12 +16,15 @@ namespace { unsigned Specificity(const String& selector_text) { - CSSSelectorList selector_list = CSSParser::ParseSelector( - StrictCSSParserContext(SecureContextMode::kInsecureContext), nullptr, - selector_text); + CSSSelectorList selector_list = + css_test_helpers::ParseSelectorList(selector_text); + return selector_list.First()->Specificity(); +} - const CSSSelector* selector = selector_list.First(); - return selector->Specificity(); +bool HasLinkOrVisited(const String& selector_text) { + CSSSelectorList selector_list = + css_test_helpers::ParseSelectorList(selector_text); + return selector_list.First()->HasLinkOrVisited(); } } // namespace @@ -120,4 +123,29 @@ Specificity("*")); } +TEST(CSSSelector, HasLinkOrVisited) { + EXPECT_FALSE(HasLinkOrVisited("tag")); + EXPECT_FALSE(HasLinkOrVisited("visited")); + EXPECT_FALSE(HasLinkOrVisited("link")); + EXPECT_FALSE(HasLinkOrVisited(".a")); + EXPECT_FALSE(HasLinkOrVisited("#a:is(visited)")); + EXPECT_FALSE(HasLinkOrVisited(":not(link):hover")); + EXPECT_FALSE(HasLinkOrVisited(":hover")); + EXPECT_FALSE(HasLinkOrVisited(":is(:hover)")); + EXPECT_FALSE(HasLinkOrVisited(":not(:is(:hover))")); + + EXPECT_TRUE(HasLinkOrVisited(":visited")); + EXPECT_TRUE(HasLinkOrVisited(":link")); + EXPECT_TRUE(HasLinkOrVisited(":visited:link")); + EXPECT_TRUE(HasLinkOrVisited(":not(:visited)")); + EXPECT_TRUE(HasLinkOrVisited(":not(:link)")); + EXPECT_TRUE(HasLinkOrVisited(":not(:is(:link))")); + EXPECT_TRUE(HasLinkOrVisited(":is(:link)")); + EXPECT_TRUE(HasLinkOrVisited(":is(.a, .b, :is(:visited))")); + EXPECT_TRUE(HasLinkOrVisited("::cue(:visited)")); + EXPECT_TRUE(HasLinkOrVisited("::cue(:link)")); + EXPECT_TRUE(HasLinkOrVisited(":host(:link)")); + EXPECT_TRUE(HasLinkOrVisited(":host-context(:link)")); +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/css/element_rule_collector.cc b/third_party/blink/renderer/core/css/element_rule_collector.cc index 3d7609f..9906eb3 100644 --- a/third_party/blink/renderer/core/css/element_rule_collector.cc +++ b/third_party/blink/renderer/core/css/element_rule_collector.cc
@@ -146,8 +146,7 @@ init.scrollbar_part = pseudo_style_request_.scrollbar_part; init.part_names = part_names; SelectorChecker checker(init); - SelectorChecker::SelectorCheckingContext context( - &context_.GetElement(), SelectorChecker::kVisitedMatchEnabled); + SelectorChecker::SelectorCheckingContext context(&context_.GetElement()); context.scope = match_request.scope; context.pseudo_id = pseudo_style_request_.pseudo_id; context.vtt_originating_element = match_request.vtt_originating_element; @@ -178,6 +177,11 @@ SelectorChecker::MatchResult result; context.selector = &rule_data->Selector(); + // If the selector does not contain :link or :visited, we disable + // :visited matching as a performance optimization. + context.is_inside_visited_link = + (inside_link_ == EInsideLink::kInsideVisitedLink) && + rule_data->HasLinkOrVisited(); if (!checker.Match(context, result)) { rejected++; continue; @@ -341,10 +345,11 @@ // Now transfer the set of matched rules over to our list of declarations. for (unsigned i = 0; i < matched_rules_.size(); i++) { - const RuleData* rule_data = matched_rules_[i].GetRuleData(); + const MatchedRule& matched_rule = matched_rules_[i]; + const RuleData* rule_data = matched_rule.GetRuleData(); result_.AddMatchedProperties( &rule_data->Rule()->Properties(), - AdjustLinkMatchType(inside_link_, rule_data->LinkMatchType()), + AdjustLinkMatchType(inside_link_, matched_rule.GetLinkMatchType()), rule_data->GetValidPropertyFilter(matching_ua_rules_)); } } @@ -373,7 +378,7 @@ style_->SetHasPseudoElementStyle(dynamic_pseudo); } else { matched_rules_.push_back(MatchedRule( - rule_data, result.specificity, cascade_order, + rule_data, result.specificity, result.link_match_type, cascade_order, match_request.style_sheet_index, match_request.style_sheet)); } }
diff --git a/third_party/blink/renderer/core/css/element_rule_collector.h b/third_party/blink/renderer/core/css/element_rule_collector.h index 60c3283..4c5c1e1 100644 --- a/third_party/blink/renderer/core/css/element_rule_collector.h +++ b/third_party/blink/renderer/core/css/element_rule_collector.h
@@ -54,11 +54,13 @@ public: MatchedRule(const RuleData* rule_data, unsigned specificity, + unsigned link_match_type, ShadowV0CascadeOrder cascade_order, unsigned style_sheet_index, const CSSStyleSheet* parent_style_sheet) : rule_data_(rule_data), specificity_(specificity), + link_match_type_(link_match_type), parent_style_sheet_(parent_style_sheet) { DCHECK(rule_data_); static const unsigned kBitsForPositionInRuleData = 18; @@ -74,6 +76,7 @@ unsigned Specificity() const { return GetRuleData()->Specificity() + specificity_; } + unsigned GetLinkMatchType() const { return link_match_type_; } const CSSStyleSheet* ParentStyleSheet() const { return parent_style_sheet_; } void Trace(Visitor* visitor) const { visitor->Trace(parent_style_sheet_); @@ -83,6 +86,7 @@ private: Member<const RuleData> rule_data_; unsigned specificity_; + unsigned link_match_type_; uint64_t position_; Member<const CSSStyleSheet> parent_style_sheet_; }; @@ -166,6 +170,9 @@ const MatchRequest&, PartNames* = nullptr); + bool Match(SelectorChecker&, + const SelectorChecker::SelectorCheckingContext&, + MatchResult&); void DidMatchRule(const RuleData*, const SelectorChecker::MatchResult&, ShadowV0CascadeOrder,
diff --git a/third_party/blink/renderer/core/css/media_query_exp.cc b/third_party/blink/renderer/core/css/media_query_exp.cc index 7c1d9b9..870db6e 100644 --- a/third_party/blink/renderer/core/css/media_query_exp.cc +++ b/third_party/blink/renderer/core/css/media_query_exp.cc
@@ -420,7 +420,7 @@ output.Append(CSSPrimitiveValue::UnitTypeToString(unit)); } else if (is_ratio) { output.Append(PrintNumber(numerator)); - output.Append('/'); + output.Append(" / "); output.Append(PrintNumber(denominator)); } else if (is_id) { output.Append(getValueName(id));
diff --git a/third_party/blink/renderer/core/css/media_query_set_test.cc b/third_party/blink/renderer/core/css/media_query_set_test.cc index 6424fc3..39bba57 100644 --- a/third_party/blink/renderer/core/css/media_query_set_test.cc +++ b/third_party/blink/renderer/core/css/media_query_set_test.cc
@@ -50,7 +50,7 @@ {"not screen and (color)", nullptr}, {"only screen and (color)", nullptr}, {"screen and (color), projection and (color)", nullptr}, - {"aural and (device-aspect-ratio: 16/9)", nullptr}, + {"aural and (device-aspect-ratio: 16 / 9)", nullptr}, {"speech and (min-device-width: 800px)", nullptr}, {"example", nullptr}, {"screen and (max-weight: 3kg) and (color), (monochrome)", @@ -65,10 +65,10 @@ {"screen and (device-height: 60em)", nullptr}, {"screen and (device-height: 60rem)", nullptr}, {"screen and (device-height: 60ch)", nullptr}, - {"screen and (device-aspect-ratio: 16/9)", nullptr}, + {"screen and (device-aspect-ratio: 16 / 9)", nullptr}, {"(device-aspect-ratio: 16.0/9.0)", "not all"}, - {"(device-aspect-ratio: 16/ 9)", "(device-aspect-ratio: 16/9)"}, - {"(device-aspect-ratio: 16/\r9)", "(device-aspect-ratio: 16/9)"}, + {"(device-aspect-ratio: 16/ 9)", "(device-aspect-ratio: 16 / 9)"}, + {"(device-aspect-ratio: 16/\r9)", "(device-aspect-ratio: 16 / 9)"}, {"all and (color)", "(color)"}, {"all and (min-color: 1)", "(min-color: 1)"}, {"all and (min-color: 1.0)", "not all"},
diff --git a/third_party/blink/renderer/core/css/rule_set.cc b/third_party/blink/renderer/core/css/rule_set.cc index a443bf08..185cc3e34 100644 --- a/third_party/blink/renderer/core/css/rule_set.cc +++ b/third_party/blink/renderer/core/css/rule_set.cc
@@ -86,7 +86,7 @@ selector_index_(selector_index), position_(position), specificity_(Selector().Specificity()), - link_match_type_(Selector().ComputeLinkMatchType(CSSSelector::kMatchAll)), + has_link_or_visited_(Selector().HasLinkOrVisited()), has_document_security_origin_(add_rule_flags & kRuleHasDocumentSecurityOrigin), valid_property_filter_(
diff --git a/third_party/blink/renderer/core/css/rule_set.h b/third_party/blink/renderer/core/css/rule_set.h index 5971a197..c1d0330 100644 --- a/third_party/blink/renderer/core/css/rule_set.h +++ b/third_party/blink/renderer/core/css/rule_set.h
@@ -110,7 +110,7 @@ return contains_uncommon_attribute_selector_; } unsigned Specificity() const { return specificity_; } - unsigned LinkMatchType() const { return link_match_type_; } + bool HasLinkOrVisited() const { return has_link_or_visited_; } bool HasDocumentSecurityOrigin() const { return has_document_security_origin_; } @@ -146,10 +146,10 @@ unsigned contains_uncommon_attribute_selector_ : 1; // 32 bits above unsigned specificity_ : 24; - unsigned link_match_type_ : 2; // CSSSelector::LinkMatchMask + unsigned has_link_or_visited_ : 1; unsigned has_document_security_origin_ : 1; unsigned valid_property_filter_ : 2; - // 29 bits above + // 28 bits above // Use plain array instead of a Vector to minimize memory overhead. unsigned descendant_selector_identifier_hashes_[kMaximumIdentifierCount]; };
diff --git a/third_party/blink/renderer/core/css/selector_checker.cc b/third_party/blink/renderer/core/css/selector_checker.cc index 92899d19..dfd8ff2 100644 --- a/third_party/blink/renderer/core/css/selector_checker.cc +++ b/third_party/blink/renderer/core/css/selector_checker.cc
@@ -228,11 +228,18 @@ bool SelectorChecker::Match(const SelectorCheckingContext& context, MatchResult& result) const { DCHECK(context.selector); +#if DCHECK_IS_ON() + DCHECK(!inside_match_) << "Do not re-enter Match: use MatchSelector instead"; + base::AutoReset<bool> reset_inside_match(&inside_match_, true); +#endif // DCHECK_IS_ON() + if (UNLIKELY(context.vtt_originating_element)) { // A kShadowPseudo combinator is required for VTT matching. if (context.selector->IsLastInTagHistory()) return false; } + if (UNLIKELY(context.is_inside_visited_link)) + return MatchForVisitedLink(context, result) == kSelectorMatches; return MatchSelector(context, result) == kSelectorMatches; } @@ -332,6 +339,26 @@ return MatchSelector(context, result); } +SelectorChecker::MatchStatus SelectorChecker::MatchForVisitedLink( + const SelectorCheckingContext& context, + MatchResult& result) const { + DCHECK(context.is_inside_visited_link); + + SelectorCheckingContext unvisited(context); + unvisited.is_inside_visited_link = false; + + unsigned link_match_type = 0; + + if (MatchSelector(unvisited, result) == kSelectorMatches) + link_match_type |= CSSSelector::kMatchLink; + if (MatchSelector(context, result) == kSelectorMatches) + link_match_type |= CSSSelector::kMatchVisited; + + result.link_match_type = link_match_type; + + return link_match_type ? kSelectorMatches : kSelectorFailsCompletely; +} + static inline Element* ParentOrV0ShadowHostElement(const Element& element) { if (auto* shadow_root = DynamicTo<ShadowRoot>(element.parentNode())) { if (shadow_root->GetType() != ShadowRootType::V0) @@ -348,14 +375,11 @@ CSSSelector::RelationType relation = context.selector->Relation(); // Disable :visited matching when we see the first link or try to match - // anything else than an ancestors. - // - // FIXME(emilio): This is_sub_selector check is wrong if we allow sub - // selectors with combinators somewhere. - if (!context.is_sub_selector && + // anything else than an ancestor. + if ((!context.is_sub_selector || context.in_nested_complex_selector) && (context.element->IsLink() || (relation != CSSSelector::kDescendant && relation != CSSSelector::kChild))) - next_context.visited_match_type = kVisitedMatchDisabled; + next_context.is_inside_visited_link = false; next_context.in_rightmost_compound = false; next_context.is_sub_selector = false; @@ -398,7 +422,7 @@ if (NextSelectorExceedsScope(next_context)) return kSelectorFailsCompletely; if (next_context.element->IsLink()) - next_context.visited_match_type = kVisitedMatchDisabled; + next_context.is_inside_visited_link = false; } return kSelectorFailsCompletely; case CSSSelector::kChild: { @@ -569,7 +593,7 @@ SelectorCheckingContext next_context(context); for (const auto& insertion_point : insertion_points) { next_context.element = insertion_point; - if (Match(next_context, result)) + if (MatchSelector(next_context, result) == kSelectorMatches) return kSelectorMatches; } return kSelectorFailsLocally; @@ -769,12 +793,6 @@ // restriction in CSS3, but it is, so let's honor it. // the parser enforces that this never occurs DCHECK_NE(sub_context.selector->GetPseudoType(), CSSSelector::kPseudoNot); - // We select between :visited and :link when applying. We don't know which - // one applied (or not) yet. - if (sub_context.selector->GetPseudoType() == CSSSelector::kPseudoVisited || - (sub_context.selector->GetPseudoType() == CSSSelector::kPseudoLink && - sub_context.visited_match_type == kVisitedMatchEnabled)) - return true; if (!CheckOne(sub_context, result)) return true; } @@ -958,11 +976,11 @@ } case CSSSelector::kPseudoAnyLink: case CSSSelector::kPseudoWebkitAnyLink: - case CSSSelector::kPseudoLink: return element.IsLink(); + case CSSSelector::kPseudoLink: + return element.IsLink() && !context.is_inside_visited_link; case CSSSelector::kPseudoVisited: - return element.IsLink() && - context.visited_match_type == kVisitedMatchEnabled; + return element.IsLink() && context.is_inside_visited_link; case CSSSelector::kPseudoDrag: if (mode_ == kResolvingStyle) { if (context.in_rightmost_compound) @@ -1251,7 +1269,7 @@ DCHECK(!CSSSelectorList::Next(*selector.SelectorList()->First())); sub_context.selector = selector.SelectorList()->First(); MatchResult sub_result; - if (!Match(sub_context, sub_result)) + if (MatchSelector(sub_context, sub_result) != kSelectorMatches) return false; result.specificity += sub_context.selector->Specificity() + sub_result.specificity + @@ -1314,7 +1332,7 @@ do { MatchResult sub_result; host_context.element = next_element; - if (Match(host_context, sub_result)) { + if (MatchSelector(host_context, sub_result) == kSelectorMatches) { matched = true; // Consider div:host(div:host(div:host(div:host...))). max_specificity =
diff --git a/third_party/blink/renderer/core/css/selector_checker.h b/third_party/blink/renderer/core/css/selector_checker.h index d5be4da..27cd94a2 100644 --- a/third_party/blink/renderer/core/css/selector_checker.h +++ b/third_party/blink/renderer/core/css/selector_checker.h
@@ -43,15 +43,10 @@ class Element; class PartNames; -class SelectorChecker { +class CORE_EXPORT SelectorChecker { STACK_ALLOCATED(); public: - enum VisitedMatchType : uint8_t { - kVisitedMatchDisabled, - kVisitedMatchEnabled - }; - enum Mode { // Used when matching selectors inside style recalc. This mode will set // restyle flags across the tree during matching which impact how style @@ -110,15 +105,12 @@ public: // Initial selector constructor - SelectorCheckingContext(Element* element, - VisitedMatchType visited_match_type) - : element(element), visited_match_type(visited_match_type) {} + explicit SelectorCheckingContext(Element* element) : element(element) {} const CSSSelector* selector = nullptr; Element* element = nullptr; Element* previous_element = nullptr; const ContainerNode* scope = nullptr; - VisitedMatchType visited_match_type; PseudoId pseudo_id = kPseudoIdNone; bool is_sub_selector = false; bool in_rightmost_compound = true; @@ -127,16 +119,16 @@ bool treat_shadow_host_as_normal_scope = false; Element* vtt_originating_element = nullptr; bool in_nested_complex_selector = false; + bool is_inside_visited_link = false; }; struct MatchResult { STACK_ALLOCATED(); public: - MatchResult() : dynamic_pseudo(kPseudoIdNone), specificity(0) {} - - PseudoId dynamic_pseudo; - unsigned specificity; + PseudoId dynamic_pseudo{kPseudoIdNone}; + unsigned specificity{0}; + unsigned link_match_type{CSSSelector::kMatchAll}; }; bool Match(const SelectorCheckingContext& context, MatchResult& result) const; @@ -191,6 +183,8 @@ MatchStatus MatchForPseudoShadow(const SelectorCheckingContext&, const ContainerNode*, MatchResult&) const; + MatchStatus MatchForVisitedLink(const SelectorCheckingContext&, + MatchResult&) const; bool CheckPseudoClass(const SelectorCheckingContext&, MatchResult&) const; bool CheckPseudoElement(const SelectorCheckingContext&, MatchResult&) const; bool CheckScrollbarPseudoClass(const SelectorCheckingContext&, @@ -204,6 +198,7 @@ ScrollbarPart scrollbar_part_; Mode mode_; #if DCHECK_IS_ON() + mutable bool inside_match_ = false; bool is_ua_rule_; #else static constexpr bool is_ua_rule_ = true;
diff --git a/third_party/blink/renderer/core/css/selector_checker_test.cc b/third_party/blink/renderer/core/css/selector_checker_test.cc new file mode 100644 index 0000000..c728bd0 --- /dev/null +++ b/third_party/blink/renderer/core/css/selector_checker_test.cc
@@ -0,0 +1,240 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/core/css/selector_checker.h" +#include "base/optional.h" +#include "third_party/blink/renderer/core/css/css_test_helpers.h" +#include "third_party/blink/renderer/core/css/parser/css_parser.h" +#include "third_party/blink/renderer/core/css/parser/css_parser_context.h" +#include "third_party/blink/renderer/core/css/resolver/element_resolve_context.h" +#include "third_party/blink/renderer/core/dom/document.h" +#include "third_party/blink/renderer/core/dom/element_traversal.h" +#include "third_party/blink/renderer/core/dom/flat_tree_traversal.h" +#include "third_party/blink/renderer/core/style/computed_style.h" +#include "third_party/blink/renderer/core/testing/page_test_base.h" + +#include "testing/gtest/include/gtest/gtest.h" + +#include <iostream> + +namespace blink { + +class SelectorCheckerTest : public PageTestBase { + public: + bool IsInsideVisitedLink(Element* element) { + if (!element) + return false; + if (element->IsLink()) { + ElementResolveContext context(*element); + return context.ElementLinkState() == EInsideLink::kInsideVisitedLink; + } + return IsInsideVisitedLink( + DynamicTo<Element>(FlatTreeTraversal::Parent(*element))); + } + + // Returns the link_match_type upon successful match, or base::nullopt + // on failure. + base::Optional<unsigned> Match( + const SelectorChecker::SelectorCheckingContext& context, + const String& selector) { + CSSSelectorList selector_list = + css_test_helpers::ParseSelectorList(selector); + DCHECK(selector_list.First()) << "Invalid selector: " << selector; + + SelectorChecker::Init init; + SelectorChecker checker(init); + SelectorChecker::SelectorCheckingContext local_context(context); + local_context.selector = selector_list.First(); + local_context.is_inside_visited_link = IsInsideVisitedLink(context.element); + SelectorChecker::MatchResult result; + if (checker.Match(local_context, result)) + return result.link_match_type; + + return base::nullopt; + } + + base::Optional<unsigned> Match(Element* element, const String& selector) { + SelectorChecker::SelectorCheckingContext context(element); + return Match(context, selector); + } +}; + +TEST_F(SelectorCheckerTest, LinkMatchType) { + SetBodyInnerHTML(R"HTML( + <div id=foo></div> + <a id=visited href=""> + <span id=visited_span></span> + </a> + <a id=link href="unvisited"> + <span id=unvisited_span></span> + </a> + <div id=bar></div> + )HTML"); + Element* foo = GetDocument().getElementById("foo"); + Element* bar = GetDocument().getElementById("bar"); + Element* visited = GetDocument().getElementById("visited"); + Element* link = GetDocument().getElementById("link"); + Element* unvisited_span = GetDocument().getElementById("unvisited_span"); + Element* visited_span = GetDocument().getElementById("visited_span"); + ASSERT_TRUE(foo); + ASSERT_TRUE(bar); + ASSERT_TRUE(visited); + ASSERT_TRUE(link); + ASSERT_TRUE(unvisited_span); + ASSERT_TRUE(visited_span); + + ASSERT_TRUE(IsInsideVisitedLink(visited)); + ASSERT_TRUE(IsInsideVisitedLink(visited_span)); + ASSERT_FALSE(IsInsideVisitedLink(foo)); + ASSERT_FALSE(IsInsideVisitedLink(link)); + ASSERT_FALSE(IsInsideVisitedLink(unvisited_span)); + ASSERT_FALSE(IsInsideVisitedLink(bar)); + + const auto kMatchLink = CSSSelector::kMatchLink; + const auto kMatchVisited = CSSSelector::kMatchVisited; + const auto kMatchAll = CSSSelector::kMatchAll; + ASSERT_TRUE(kMatchLink); + ASSERT_TRUE(kMatchVisited); + ASSERT_TRUE(kMatchAll); + + EXPECT_EQ(Match(foo, "#bar"), base::nullopt); + EXPECT_EQ(Match(visited, "#foo"), base::nullopt); + EXPECT_EQ(Match(link, "#foo"), base::nullopt); + + EXPECT_EQ(Match(foo, "#foo"), kMatchAll); + EXPECT_EQ(Match(link, ":visited"), base::nullopt); + // Note that |link| isn't a _visited_ link, hence it gets regular treatment by + // SelectorChecker::Match. And for regular treatments we always get kMatchAll + // if the selector matches. + EXPECT_EQ(Match(link, ":link"), kMatchAll); + EXPECT_EQ(Match(foo, ":not(:visited)"), kMatchAll); + EXPECT_EQ(Match(foo, ":not(:link)"), kMatchAll); + EXPECT_EQ(Match(foo, ":not(:link):not(:visited)"), kMatchAll); + + EXPECT_EQ(Match(visited, ":link"), kMatchLink); + EXPECT_EQ(Match(visited, ":visited"), kMatchVisited); + EXPECT_EQ(Match(visited, ":link:visited"), base::nullopt); + EXPECT_EQ(Match(visited, ":visited:link"), base::nullopt); + EXPECT_EQ(Match(visited, "#visited:visited"), kMatchVisited); + EXPECT_EQ(Match(visited, ":visited#visited"), kMatchVisited); + EXPECT_EQ(Match(visited, "body :link"), kMatchLink); + EXPECT_EQ(Match(visited, "body > :link"), kMatchLink); + EXPECT_EQ(Match(visited_span, ":link span"), kMatchLink); + EXPECT_EQ(Match(visited_span, ":visited span"), kMatchVisited); + EXPECT_EQ(Match(visited, ":not(:visited)"), kMatchLink); + EXPECT_EQ(Match(visited, ":not(:link)"), kMatchVisited); + EXPECT_EQ(Match(visited, ":not(:link):not(:visited)"), base::nullopt); + EXPECT_EQ(Match(visited, ":is(:not(:link))"), kMatchVisited); + EXPECT_EQ(Match(visited, ":is(:not(:visited))"), kMatchLink); + EXPECT_EQ(Match(visited, ":is(:link, :not(:link))"), kMatchAll); + EXPECT_EQ(Match(visited, ":is(:not(:visited), :not(:link))"), kMatchAll); + EXPECT_EQ(Match(visited, ":is(:not(:visited):not(:link))"), base::nullopt); + EXPECT_EQ(Match(visited, ":is(:not(:visited):link)"), kMatchLink); + EXPECT_EQ(Match(visited, ":not(:is(:link))"), kMatchVisited); + EXPECT_EQ(Match(visited, ":not(:is(:visited))"), kMatchLink); + EXPECT_EQ(Match(visited, ":not(:is(:not(:visited)))"), kMatchVisited); + EXPECT_EQ(Match(visited, ":not(:is(:link, :visited))"), base::nullopt); + EXPECT_EQ(Match(visited, ":not(:is(:link:visited))"), kMatchAll); + EXPECT_EQ(Match(visited, ":not(:is(:not(:link):visited))"), kMatchLink); + EXPECT_EQ(Match(visited, ":not(:is(:not(:link):not(:visited)))"), kMatchAll); + + EXPECT_EQ(Match(visited, ":is(#visited)"), kMatchAll); + EXPECT_EQ(Match(visited, ":is(#visited, :visited)"), kMatchAll); + EXPECT_EQ(Match(visited, ":is(#visited, :link)"), kMatchAll); + EXPECT_EQ(Match(visited, ":is(#unrelated, :link)"), kMatchLink); + EXPECT_EQ(Match(visited, ":is(:visited, :is(#unrelated))"), kMatchVisited); + EXPECT_EQ(Match(visited, ":is(:visited, #visited)"), kMatchAll); + EXPECT_EQ(Match(visited, ":is(:link, #visited)"), kMatchAll); + EXPECT_EQ(Match(visited, ":is(:visited)"), kMatchVisited); + EXPECT_EQ(Match(visited, ":is(:link)"), kMatchLink); + EXPECT_EQ(Match(visited, ":is(:link):is(:visited)"), base::nullopt); + EXPECT_EQ(Match(visited, ":is(:link:visited)"), base::nullopt); + EXPECT_EQ(Match(visited, ":is(:link, :link)"), kMatchLink); + EXPECT_EQ(Match(visited, ":is(:is(:link))"), kMatchLink); + EXPECT_EQ(Match(visited, ":is(:link, :visited)"), kMatchAll); + EXPECT_EQ(Match(visited, ":is(:link, :visited):link"), kMatchLink); + EXPECT_EQ(Match(visited, ":is(:link, :visited):visited"), kMatchVisited); + EXPECT_EQ(Match(visited, ":link:is(:link, :visited)"), kMatchLink); + EXPECT_EQ(Match(visited, ":visited:is(:link, :visited)"), kMatchVisited); + + // When using :link/:visited in a sibling selector, we expect special + // behavior for privacy reasons. + // https://developer.mozilla.org/en-US/docs/Web/CSS/Privacy_and_the_:visited_selector + EXPECT_EQ(Match(bar, ":link + #bar"), kMatchAll); + EXPECT_EQ(Match(bar, ":visited + #bar"), base::nullopt); + EXPECT_EQ(Match(bar, ":is(:link + #bar)"), kMatchAll); + EXPECT_EQ(Match(bar, ":is(:visited ~ #bar)"), base::nullopt); + EXPECT_EQ(Match(bar, ":not(:is(:link + #bar))"), base::nullopt); + EXPECT_EQ(Match(bar, ":not(:is(:visited ~ #bar))"), kMatchAll); +} + +TEST_F(SelectorCheckerTest, LinkMatchTypeHostContext) { + SetBodyInnerHTML(R"HTML( + <a href=""><div id="visited_host"></div></a> + <a href="unvisited"><div id="unvisited_host"></div></a> + )HTML"); + + Element* visited_host = GetDocument().getElementById("visited_host"); + Element* unvisited_host = GetDocument().getElementById("unvisited_host"); + ASSERT_TRUE(visited_host); + ASSERT_TRUE(unvisited_host); + + ShadowRoot& visited_root = + visited_host->AttachShadowRootInternal(ShadowRootType::kOpen); + ShadowRoot& unvisited_root = + unvisited_host->AttachShadowRootInternal(ShadowRootType::kOpen); + + visited_root.setInnerHTML(R"HTML( + <style id=style></style> + <div id=div></div> + )HTML"); + unvisited_root.setInnerHTML(R"HTML( + <style id=style></style> + <div id=div></div> + )HTML"); + + UpdateAllLifecyclePhasesForTest(); + + Element* visited_style = visited_root.getElementById("style"); + Element* unvisited_style = unvisited_root.getElementById("style"); + ASSERT_TRUE(visited_style); + ASSERT_TRUE(unvisited_style); + + Element* visited_div = visited_root.getElementById("div"); + Element* unvisited_div = unvisited_root.getElementById("div"); + ASSERT_TRUE(visited_div); + ASSERT_TRUE(unvisited_div); + + const auto kMatchLink = CSSSelector::kMatchLink; + const auto kMatchVisited = CSSSelector::kMatchVisited; + const auto kMatchAll = CSSSelector::kMatchAll; + + { + SelectorChecker::SelectorCheckingContext context(visited_div); + context.scope = visited_style; + + EXPECT_EQ(Match(context, ":host-context(a) div"), kMatchAll); + EXPECT_EQ(Match(context, ":host-context(:link) div"), kMatchLink); + EXPECT_EQ(Match(context, ":host-context(:visited) div"), kMatchVisited); + EXPECT_EQ(Match(context, ":host-context(:is(:visited, :link)) div"), + kMatchAll); + + // :host-context(:not(:visited/link)) matches the host itself. + EXPECT_EQ(Match(context, ":host-context(:not(:visited)) div"), kMatchAll); + EXPECT_EQ(Match(context, ":host-context(:not(:link)) div"), kMatchAll); + } + + { + SelectorChecker::SelectorCheckingContext context(unvisited_div); + context.scope = unvisited_style; + + EXPECT_EQ(Match(context, ":host-context(a) div"), kMatchAll); + EXPECT_EQ(Match(context, ":host-context(:link) div"), kMatchAll); + EXPECT_EQ(Match(context, ":host-context(:visited) div"), base::nullopt); + EXPECT_EQ(Match(context, ":host-context(:is(:visited, :link)) div"), + kMatchAll); + } +} + +} // namespace blink
diff --git a/third_party/blink/renderer/core/css/selector_query.cc b/third_party/blink/renderer/core/css/selector_query.cc index fa70620..0f962e1 100644 --- a/third_party/blink/renderer/core/css/selector_query.cc +++ b/third_party/blink/renderer/core/css/selector_query.cc
@@ -100,8 +100,7 @@ SelectorChecker::Init init; init.mode = SelectorChecker::kQueryingRules; SelectorChecker checker(init); - SelectorChecker::SelectorCheckingContext context( - &element, SelectorChecker::kVisitedMatchDisabled); + SelectorChecker::SelectorCheckingContext context(&element); context.selector = &selector; context.scope = &root_node; return checker.Match(context);
diff --git a/third_party/blink/renderer/core/editing/iterators/text_searcher_icu.cc b/third_party/blink/renderer/core/editing/iterators/text_searcher_icu.cc index f9fd3b7..5b4cafe 100644 --- a/third_party/blink/renderer/core/editing/iterators/text_searcher_icu.cc +++ b/third_party/blink/renderer/core/editing/iterators/text_searcher_icu.cc
@@ -104,9 +104,10 @@ static bool IsWholeWordMatch(const UChar* text, int text_length, MatchResultICU& result) { - DCHECK_LE((int)(result.start + result.length), text_length); + const wtf_size_t result_end = result.start + result.length; + DCHECK_LE(result_end, static_cast<wtf_size_t>(text_length)); UChar32 first_character; - U16_GET(text, 0, result.start, result.length, first_character); + U16_GET(text, 0, result.start, result_end, first_character); // Chinese and Japanese lack word boundary marks, and there is no clear // agreement on what constitutes a word, so treat the position before any CJK @@ -114,15 +115,15 @@ if (Character::IsCJKIdeographOrSymbol(first_character)) return true; - wtf_size_t word_break_search_start = result.start + result.length; + wtf_size_t word_break_search_start = result_end; while (word_break_search_start > result.start) { word_break_search_start = FindNextWordBackward(text, text_length, word_break_search_start); } if (word_break_search_start != result.start) return false; - return static_cast<int>(result.start + result.length) == - FindWordEndBoundary(text, text_length, word_break_search_start); + return result_end == static_cast<wtf_size_t>(FindWordEndBoundary( + text, text_length, word_break_search_start)); } // Grab the single global searcher.
diff --git a/third_party/blink/renderer/core/editing/iterators/text_searcher_icu_test.cc b/third_party/blink/renderer/core/editing/iterators/text_searcher_icu_test.cc index c0c01cf..1bc9a279 100644 --- a/third_party/blink/renderer/core/editing/iterators/text_searcher_icu_test.cc +++ b/third_party/blink/renderer/core/editing/iterators/text_searcher_icu_test.cc
@@ -113,4 +113,26 @@ EXPECT_EQ(0u, result.length); } +// For http://crbug.com/1138877 +TEST(TextSearcherICUTest, BrokenSurrogate) { + TextSearcherICU searcher; + UChar one[1]; + one[0] = 0xDB00; + const String pattern(one, 1); + searcher.SetPattern(pattern, kWholeWord); + + UChar two[2]; + two[0] = 0x0022; + two[1] = 0xDB00; + const String text(two, 2); + searcher.SetText(text.Characters16(), text.length()); + + // Note: Because even if ICU find U+DB00 but ICU doesn't think U+DB00 as + // word, we consider it doesn't match whole word. + MatchResultICU result; + EXPECT_FALSE(searcher.NextMatchResult(result)); + EXPECT_EQ(0u, result.start); + EXPECT_EQ(0u, result.length); +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/exported/local_frame_client_impl.cc b/third_party/blink/renderer/core/exported/local_frame_client_impl.cc index f46bec18..168056e4 100644 --- a/third_party/blink/renderer/core/exported/local_frame_client_impl.cc +++ b/third_party/blink/renderer/core/exported/local_frame_client_impl.cc
@@ -796,12 +796,6 @@ client->DidObserveLazyLoadBehavior(lazy_load_behavior); } -bool LocalFrameClientImpl::ShouldTrackUseCounter(const KURL& url) { - if (web_frame_->Client()) - return web_frame_->Client()->ShouldTrackUseCounter(url); - return false; -} - void LocalFrameClientImpl::SelectorMatchChanged( const Vector<String>& added_selectors, const Vector<String>& removed_selectors) {
diff --git a/third_party/blink/renderer/core/exported/local_frame_client_impl.h b/third_party/blink/renderer/core/exported/local_frame_client_impl.h index f4b653a..13a4c4ae 100644 --- a/third_party/blink/renderer/core/exported/local_frame_client_impl.h +++ b/third_party/blink/renderer/core/exported/local_frame_client_impl.h
@@ -142,7 +142,6 @@ uint32_t ng_call_count) override; void DidObserveLazyLoadBehavior( WebLocalFrameClient::LazyLoadBehavior lazy_load_behavior) override; - bool ShouldTrackUseCounter(const KURL&) override; void SelectorMatchChanged(const Vector<String>& added_selectors, const Vector<String>& removed_selectors) override;
diff --git a/third_party/blink/renderer/core/frame/local_frame_client.h b/third_party/blink/renderer/core/frame/local_frame_client.h index ca739d6..d76577d 100644 --- a/third_party/blink/renderer/core/frame/local_frame_client.h +++ b/third_party/blink/renderer/core/frame/local_frame_client.h
@@ -213,10 +213,6 @@ virtual void DidObserveLazyLoadBehavior( WebLocalFrameClient::LazyLoadBehavior lazy_load_behavior) {} - // Will be called by a Page upon DidCommitLoad, deciding whether to track - // UseCounter usage or not based on its url. - virtual bool ShouldTrackUseCounter(const KURL&) { return true; } - // Transmits the change in the set of watched CSS selectors property that // match any element on the frame. virtual void SelectorMatchChanged(
diff --git a/third_party/blink/renderer/core/html/html_content_element.cc b/third_party/blink/renderer/core/html/html_content_element.cc index 2834d6c..de6e6c7 100644 --- a/third_party/blink/renderer/core/html/html_content_element.cc +++ b/third_party/blink/renderer/core/html/html_content_element.cc
@@ -114,8 +114,7 @@ SelectorChecker::Init init; init.mode = SelectorChecker::kQueryingRules; SelectorChecker checker(init); - SelectorChecker::SelectorCheckingContext context( - &element, SelectorChecker::kVisitedMatchDisabled); + SelectorChecker::SelectorCheckingContext context(&element); for (const CSSSelector* selector = SelectorList().First(); selector; selector = CSSSelectorList::Next(*selector)) { context.selector = selector;
diff --git a/third_party/blink/renderer/core/loader/prefetched_signed_exchange_manager.cc b/third_party/blink/renderer/core/loader/prefetched_signed_exchange_manager.cc index b774fec1..e7e2c11 100644 --- a/third_party/blink/renderer/core/loader/prefetched_signed_exchange_manager.cc +++ b/third_party/blink/renderer/core/loader/prefetched_signed_exchange_manager.cc
@@ -69,7 +69,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -88,7 +87,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper> resource_load_info_notifier_wrapper, @@ -96,8 +94,8 @@ if (url_loader_) { url_loader_->LoadAsynchronously( std::move(request), std::move(request_extra_data), requestor_id, - download_to_network_cache_only, no_mime_sniffing, - std::move(resource_load_info_notifier_wrapper), client); + no_mime_sniffing, std::move(resource_load_info_notifier_wrapper), + client); return; } // It is safe to use Unretained(client), because |client| is a @@ -106,8 +104,7 @@ pending_method_calls_.push(WTF::Bind( &PrefetchedSignedExchangeLoader::LoadAsynchronously, GetWeakPtr(), std::move(request), std::move(request_extra_data), requestor_id, - download_to_network_cache_only, no_mime_sniffing, - std::move(resource_load_info_notifier_wrapper), + no_mime_sniffing, std::move(resource_load_info_notifier_wrapper), WTF::Unretained(client))); } void SetDefersLoading(bool value) override {
diff --git a/third_party/blink/renderer/core/svg/graphics/svg_image.cc b/third_party/blink/renderer/core/svg/graphics/svg_image.cc index 3ff5c91..f809cd3 100644 --- a/third_party/blink/renderer/core/svg/graphics/svg_image.cc +++ b/third_party/blink/renderer/core/svg/graphics/svg_image.cc
@@ -90,7 +90,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -109,7 +108,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper> resource_load_info_notifier_wrapper,
diff --git a/third_party/blink/renderer/core/trustedtypes/trusted_types_util.cc b/third_party/blink/renderer/core/trustedtypes/trusted_types_util.cc index 3d077c8b..29586e78 100644 --- a/third_party/blink/renderer/core/trustedtypes/trusted_types_util.cc +++ b/third_party/blink/renderer/core/trustedtypes/trusted_types_util.cc
@@ -106,8 +106,16 @@ // If we don't have the required values being passed in, just leave the // sample empty. StringBuilder sample_prefix; - if (interface_name && strcmp("eval", interface_name) == 0) { + if (!interface_name) { + // No interface name? Then we have no prefix to use. + } else if (strcmp("eval", interface_name) == 0) { sample_prefix.Append("eval"); + } else if ((strcmp("Worker", interface_name) == 0 || + strcmp("SharedWorker", interface_name) == 0) && + !property_name) { + // Worker/SharedWorker constructor has nullptr as property_name. + sample_prefix.Append(interface_name); + sample_prefix.Append(" constructor"); } else if (interface_name && property_name) { sample_prefix.Append(interface_name); sample_prefix.Append(" ");
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc index aada1fae..71e8e2b7 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
@@ -812,8 +812,8 @@ } bool AXLayoutObject::CanIgnoreTextAsEmpty() const { - DCHECK(layout_object_->IsText()); - DCHECK(layout_object_->Parent()); + if (!layout_object_ || !layout_object_->IsText() || !layout_object_->Parent()) + return false; LayoutText* layout_text = ToLayoutText(layout_object_);
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object.h b/third_party/blink/renderer/modules/accessibility/ax_layout_object.h index 7517cae..b00fde5 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.h +++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.h
@@ -102,6 +102,7 @@ AXObjectInclusion DefaultObjectInclusion( IgnoredReasons* = nullptr) const override; bool ComputeAccessibilityIsIgnored(IgnoredReasons* = nullptr) const override; + bool CanIgnoreTextAsEmpty() const override; // Properties of static elements. ax::mojom::blink::ListStyle GetListStyle() const final; @@ -192,7 +193,6 @@ bool FindAllTableCellsWithRole(ax::mojom::blink::Role, AXObjectVector&) const; LayoutRect ComputeElementRect() const; - bool CanIgnoreTextAsEmpty() const; bool CanIgnoreSpaceNextTo(LayoutObject*, bool is_after) const; bool HasAriaCellRole(Element*) const; bool IsPlaceholder() const;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc index 0a0c8c7..394034d 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -505,6 +505,14 @@ return true; } +bool AXNodeObject::CanIgnoreTextAsEmpty() const { + // Note: it's safe to call AXNodeObject::ComputeAccessibilityIsIgnored, + // since that has just the logic we need - but note that + // AXLayoutObject::ComputeAccessibilityIsIgnored calls CanIgnoreTextAsEmpty + // so that'd create a loop. + return ComputeAccessibilityIsIgnored(); +} + static bool IsListElement(Node* node) { return IsA<HTMLUListElement>(*node) || IsA<HTMLOListElement>(*node) || IsA<HTMLDListElement>(*node); @@ -3396,10 +3404,23 @@ child = LayoutTreeBuilderTraversal::NextSibling(*child)) { if (child->IsMarkerPseudoElement() && AccessibilityIsIgnored()) continue; - AddChild(AXObjectCache().GetOrCreate(child)); + AXObject* child_obj = AXObjectCache().GetOrCreate(child); + + if (RuntimeEnabledFeatures::AccessibilityExposeIgnoredNodesEnabled() && + child_obj && + child_obj->RoleValue() == ax::mojom::blink::Role::kStaticText && + child_obj->CanIgnoreTextAsEmpty()) + continue; + + AddChild(child_obj); } } else { for (AXObject* obj = RawFirstChild(); obj; obj = obj->RawNextSibling()) { + if (RuntimeEnabledFeatures::AccessibilityExposeIgnoredNodesEnabled() && + obj && obj->RoleValue() == ax::mojom::blink::Role::kStaticText && + obj->CanIgnoreTextAsEmpty()) + continue; + AddChild(obj); } }
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.h b/third_party/blink/renderer/modules/accessibility/ax_node_object.h index 3220246b..83a56a9 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_node_object.h +++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.h
@@ -60,6 +60,7 @@ AXObjectInclusion ShouldIncludeBasedOnSemantics( IgnoredReasons* = nullptr) const; bool ComputeAccessibilityIsIgnored(IgnoredReasons* = nullptr) const override; + bool CanIgnoreTextAsEmpty() const override; const AXObject* InheritsPresentationalRoleFrom() const override; ax::mojom::blink::Role DetermineTableSectionRole() const; ax::mojom::blink::Role DetermineTableCellRole() const;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc index 6e60ddd..dd15c70c 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -1740,6 +1740,9 @@ } bool AXObject::ComputeAccessibilityIsIgnoredButIncludedInTree() const { + if (RuntimeEnabledFeatures::AccessibilityExposeIgnoredNodesEnabled()) + return true; + if (AXObjectCache().IsAriaOwned(this)) { // Always include an aria-owned object. It must be a child of the // element with aria-owns.
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.h b/third_party/blink/renderer/modules/accessibility/ax_object.h index d9d8585..66dc603 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object.h +++ b/third_party/blink/renderer/modules/accessibility/ax_object.h
@@ -526,6 +526,7 @@ virtual bool ComputeAccessibilityIsIgnored(IgnoredReasons* = nullptr) const { return true; } + virtual bool CanIgnoreTextAsEmpty() const { return false; } bool AccessibilityIsIgnoredByDefault(IgnoredReasons* = nullptr) const; virtual AXObjectInclusion DefaultObjectInclusion( IgnoredReasons* = nullptr) const;
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc index 4c512aea8..0eb2188 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
@@ -2012,6 +2012,14 @@ WillOverwriteCanvas(); } +double BaseRenderingContext2D::textLetterSpacing() const { + return GetState().GetTextLetterSpacing(); +} + +double BaseRenderingContext2D::textWordSpacing() const { + return GetState().GetTextWordSpacing(); +} + float BaseRenderingContext2D::GetFontBaseline( const SimpleFontData& font_data) const { return TextMetrics::GetFontBaseline(GetState().GetTextBaseline(), font_data);
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.h b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.h index f7fc03f..3765f456 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.h +++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.h
@@ -263,6 +263,10 @@ String textBaseline() const; void setTextBaseline(const String&); + double textLetterSpacing() const; + + double textWordSpacing() const; + void Trace(Visitor*) const override; enum DrawCallType {
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc index ffbbcba..187a2ec 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
@@ -793,6 +793,25 @@ ModifiableState().SetDirection(direction); } +void CanvasRenderingContext2D::setTextLetterSpacing( + const double letter_spacing) { + if (!GetState().HasRealizedFont()) + setFont(font()); + + float letter_spacing_float = clampTo<float>(letter_spacing); + ModifiableState().SetTextLetterSpacing(letter_spacing_float, + Host()->GetFontSelector()); +} + +void CanvasRenderingContext2D::setTextWordSpacing(const double word_spacing) { + if (!GetState().HasRealizedFont()) + setFont(font()); + + float word_spacing_float = clampTo<float>(word_spacing); + ModifiableState().SetTextWordSpacing(word_spacing_float, + Host()->GetFontSelector()); +} + void CanvasRenderingContext2D::fillText(const String& text, double x, double y) {
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h index ac10ae4..1378f67c 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h
@@ -129,6 +129,9 @@ String direction() const; void setDirection(const String&); + void setTextLetterSpacing(const double letter_spacing); + void setTextWordSpacing(const double word_spacing); + void fillText(const String& text, double x, double y); void fillText(const String& text, double x, double y, double max_width); void strokeText(const String& text, double x, double y);
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl index 9a27c3a..e5db2f31 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl
@@ -159,6 +159,8 @@ attribute DOMString textAlign; // "start", "end", "left", "right", "center" (default: "start") attribute DOMString textBaseline; // "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" (default: "alphabetic") attribute DOMString direction; // "inherit", "rtl", "ltr" (default: "inherit") + [RuntimeEnabled=NewCanvas2DAPI] attribute unrestricted double textLetterSpacing; // length in pixel (default: 0) + [RuntimeEnabled=NewCanvas2DAPI] attribute unrestricted double textWordSpacing; // length in pixel (default: 0) }; CanvasRenderingContext2D includes CanvasPath;
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc index efbf624..e067e23 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc
@@ -47,7 +47,6 @@ unparsed_filter_(defaultFilter), text_align_(kStartTextAlign), text_baseline_(kAlphabeticTextBaseline), - direction_(kDirectionInherit), realized_font_(false), is_transform_invertible_(true), has_clip_(false), @@ -103,6 +102,8 @@ text_align_(other.text_align_), text_baseline_(other.text_baseline_), direction_(other.direction_), + letter_spacing_(other.letter_spacing_), + word_spacing_(other.word_spacing_), realized_font_(other.realized_font_), is_transform_invertible_(other.is_transform_invertible_), has_clip_(other.has_clip_), @@ -649,4 +650,23 @@ return Style(paint_type)->GetCanvasPattern()->GetPattern()->IsTextureBacked(); } +void CanvasRenderingContext2DState::SetTextLetterSpacing( + float letter_spacing, + FontSelector* selector) { + DCHECK(realized_font_); + FontDescription font_description(GetFontDescription()); + font_description.SetLetterSpacing(letter_spacing); + letter_spacing_ = letter_spacing; + SetFont(font_description, selector); +} + +void CanvasRenderingContext2DState::SetTextWordSpacing(float word_spacing, + FontSelector* selector) { + DCHECK(realized_font_); + FontDescription font_description(GetFontDescription()); + font_description.SetWordSpacing(word_spacing); + word_spacing_ = word_spacing; + SetFont(font_description, selector); +} + } // namespace blink
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.h b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.h index e92c4ee..4b3c877 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.h +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.h
@@ -130,6 +130,12 @@ void SetTextBaseline(TextBaseline baseline) { text_baseline_ = baseline; } TextBaseline GetTextBaseline() const { return text_baseline_; } + void SetTextLetterSpacing(float letter_space, FontSelector* selector); + float GetTextLetterSpacing() const { return letter_spacing_; } + + void SetTextWordSpacing(float word_space, FontSelector* selector); + float GetTextWordSpacing() const { return word_spacing_; } + void SetLineWidth(double line_width) { stroke_flags_.setStrokeWidth(clampTo<float>(line_width)); } @@ -242,7 +248,9 @@ // Text state. TextAlign text_align_; TextBaseline text_baseline_; - Direction direction_; + Direction direction_{kDirectionInherit}; + float letter_spacing_{0}; + float word_spacing_{0}; bool realized_font_ : 1; bool is_transform_invertible_ : 1;
diff --git a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc index dfd453b..8bc972d 100644 --- a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc +++ b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc
@@ -441,6 +441,25 @@ ? kRtlDirectionString : kLtrDirectionString; } +void OffscreenCanvasRenderingContext2D::setTextLetterSpacing( + const double letter_spacing) { + if (!GetState().HasRealizedFont()) + setFont(font()); + + float letter_spacing_float = clampTo<float>(letter_spacing); + ModifiableState().SetTextLetterSpacing(letter_spacing_float, + Host()->GetFontSelector()); +} + +void OffscreenCanvasRenderingContext2D::setTextWordSpacing( + const double word_spacing) { + if (!GetState().HasRealizedFont()) + setFont(font()); + + float word_spacing_float = clampTo<float>(word_spacing); + ModifiableState().SetTextWordSpacing(word_spacing_float, + Host()->GetFontSelector()); +} void OffscreenCanvasRenderingContext2D::setDirection( const String& direction_string) {
diff --git a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h index e73aeb82..c4725f6cf 100644 --- a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h +++ b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h
@@ -82,6 +82,9 @@ String direction() const; void setDirection(const String&); + void setTextLetterSpacing(const double letter_spacing); + void setTextWordSpacing(const double word_spacing); + void fillText(const String& text, double x, double y); void fillText(const String& text, double x, double y, double max_width); void strokeText(const String& text, double x, double y);
diff --git a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl index ae627681..e82840e 100644 --- a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl +++ b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl
@@ -107,6 +107,8 @@ attribute DOMString textAlign; // "start", "end", "left", "right", "center" (default: "start") attribute DOMString textBaseline; // "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" (default: "alphabetic") attribute DOMString direction; // "inherit", "rtl", "ltr" (default: "inherit") + [RuntimeEnabled=NewCanvas2DAPI] attribute unrestricted double textLetterSpacing; // length in pixel (default: 0) + [RuntimeEnabled=NewCanvas2DAPI] attribute unrestricted double textWordSpacing; // length in pixel (default: 0) }; OffscreenCanvasRenderingContext2D includes CanvasPath;
diff --git a/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc b/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc index febb2c8..07e19c6 100644 --- a/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc +++ b/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc
@@ -475,6 +475,50 @@ } // static +scoped_refptr<media::VideoFrame> +VideoTrackRecorderImpl::Encoder::WrapMappedGpuMemoryBufferVideoFrame( + scoped_refptr<media::VideoFrame> video_frame) { + DCHECK(video_frame); + DCHECK_EQ(video_frame->storage_type(), + media::VideoFrame::StorageType::STORAGE_GPU_MEMORY_BUFFER); + + auto* gmb = video_frame->GetGpuMemoryBuffer(); + DCHECK(gmb); + + if (!gmb->Map()) { + LOG(WARNING) << "Failed to map GpuMemoryBuffer"; + return nullptr; + } + + const size_t num_planes = media::VideoFrame::NumPlanes(video_frame->format()); + uint8_t* plane_addrs[media::VideoFrame::kMaxPlanes] = {}; + for (size_t i = 0; i < num_planes; i++) + plane_addrs[i] = static_cast<uint8_t*>(gmb->memory(i)); + + auto mapped_frame = media::VideoFrame::WrapExternalYuvDataWithLayout( + video_frame->layout(), video_frame->visible_rect(), + video_frame->natural_size(), plane_addrs[0], plane_addrs[1], + plane_addrs[2], video_frame->timestamp()); + + if (!mapped_frame) { + gmb->Unmap(); + return nullptr; + } + + mapped_frame->set_color_space(video_frame->ColorSpace()); + + // Pass |video_frame| so that it outlives |mapped_frame| and the mapped buffer + // is unmapped on destruction. + mapped_frame->AddDestructionObserver(WTF::Bind( + [](scoped_refptr<media::VideoFrame> frame) { + DCHECK(frame->HasGpuMemoryBuffer()); + frame->GetGpuMemoryBuffer()->Unmap(); + }, + std::move(video_frame))); + return mapped_frame; +} + +// static VideoTrackRecorderImpl::CodecId VideoTrackRecorderImpl::GetPreferredCodecId() { return GetCodecEnumerator()->GetPreferredCodecId(); }
diff --git a/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h b/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h index d475ddc..e5719ac 100644 --- a/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h +++ b/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h
@@ -200,6 +200,12 @@ scoped_refptr<media::VideoFrame> ConvertToI420ForSoftwareEncoder( scoped_refptr<media::VideoFrame> frame); + // A helper function to map GpuMemoryBuffer-based VideoFrame. This function + // maps the given GpuMemoryBuffer of |frame| as-is without converting pixel + // format. The returned VideoFrame owns the |frame|. + static scoped_refptr<media::VideoFrame> WrapMappedGpuMemoryBufferVideoFrame( + scoped_refptr<media::VideoFrame> frame); + // Used to shutdown properly on the same thread we were created. const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
diff --git a/third_party/blink/renderer/modules/mediarecorder/vpx_encoder.cc b/third_party/blink/renderer/modules/mediarecorder/vpx_encoder.cc index f76bc65b..dfc5c45 100644 --- a/third_party/blink/renderer/modules/mediarecorder/vpx_encoder.cc +++ b/third_party/blink/renderer/modules/mediarecorder/vpx_encoder.cc
@@ -72,8 +72,13 @@ TRACE_EVENT0("media", "VpxEncoder::EncodeOnEncodingTaskRunner"); DCHECK(encoding_task_runner_->BelongsToCurrentThread()); - if (frame->storage_type() == media::VideoFrame::STORAGE_GPU_MEMORY_BUFFER) - frame = ConvertToI420ForSoftwareEncoder(frame); + if (frame->format() == media::PIXEL_FORMAT_NV12 && + frame->storage_type() == media::VideoFrame::STORAGE_GPU_MEMORY_BUFFER) + frame = WrapMappedGpuMemoryBufferVideoFrame(frame); + if (!frame) { + LOG(WARNING) << "Invalid video frame to encode"; + return; + } const gfx::Size frame_size = frame->visible_rect().size(); base::TimeDelta duration = EstimateFrameDuration(*frame); @@ -84,54 +89,85 @@ ConfigureEncoderOnEncodingTaskRunner(frame_size, &codec_config_, &encoder_); } - const bool frame_has_alpha = frame->format() == media::PIXEL_FORMAT_I420A; - // Split the duration between two encoder instances if alpha is encoded. - duration = frame_has_alpha ? duration / 2 : duration; - if (frame_has_alpha && (!IsInitialized(alpha_codec_config_) || - gfx::Size(alpha_codec_config_.g_w, - alpha_codec_config_.g_h) != frame_size)) { - ConfigureEncoderOnEncodingTaskRunner(frame_size, &alpha_codec_config_, - &alpha_encoder_); - u_plane_stride_ = media::VideoFrame::RowBytes( - VideoFrame::kUPlane, frame->format(), frame_size.width()); - v_plane_stride_ = media::VideoFrame::RowBytes( - VideoFrame::kVPlane, frame->format(), frame_size.width()); - v_plane_offset_ = media::VideoFrame::PlaneSize( - frame->format(), VideoFrame::kUPlane, frame_size) - .GetArea(); - alpha_dummy_planes_.resize(SafeCast<wtf_size_t>( - v_plane_offset_ + media::VideoFrame::PlaneSize( - frame->format(), VideoFrame::kVPlane, frame_size) - .GetArea())); - // It is more expensive to encode 0x00, so use 0x80 instead. - std::fill(alpha_dummy_planes_.begin(), alpha_dummy_planes_.end(), 0x80); - } - // If we introduced a new alpha frame, force keyframe. - const bool force_keyframe = frame_has_alpha && !last_frame_had_alpha_; - last_frame_had_alpha_ = frame_has_alpha; - - std::string data; bool keyframe = false; - DoEncode(encoder_.get(), frame_size, frame->data(VideoFrame::kYPlane), - frame->visible_data(VideoFrame::kYPlane), - frame->stride(VideoFrame::kYPlane), - frame->visible_data(VideoFrame::kUPlane), - frame->stride(VideoFrame::kUPlane), - frame->visible_data(VideoFrame::kVPlane), - frame->stride(VideoFrame::kVPlane), duration, force_keyframe, data, - &keyframe); - + bool force_keyframe = false; + bool alpha_keyframe = false; + std::string data; std::string alpha_data; - if (frame_has_alpha) { - bool alpha_keyframe = false; - DoEncode(alpha_encoder_.get(), frame_size, frame->data(VideoFrame::kAPlane), - frame->visible_data(VideoFrame::kAPlane), - frame->stride(VideoFrame::kAPlane), alpha_dummy_planes_.data(), - SafeCast<int>(u_plane_stride_), - alpha_dummy_planes_.data() + v_plane_offset_, - SafeCast<int>(v_plane_stride_), duration, keyframe, alpha_data, - &alpha_keyframe); - DCHECK_EQ(keyframe, alpha_keyframe); + switch (frame->format()) { + case media::PIXEL_FORMAT_NV12: { + last_frame_had_alpha_ = false; + DoEncode(encoder_.get(), frame_size, frame->data(VideoFrame::kYPlane), + frame->visible_data(VideoFrame::kYPlane), + frame->stride(VideoFrame::kYPlane), + frame->visible_data(VideoFrame::kUVPlane), + frame->stride(VideoFrame::kUVPlane), + frame->visible_data(VideoFrame::kUVPlane) + 1, + frame->stride(VideoFrame::kUVPlane), duration, force_keyframe, + data, &keyframe, VPX_IMG_FMT_NV12); + break; + } + case media::PIXEL_FORMAT_I420: { + last_frame_had_alpha_ = false; + DoEncode(encoder_.get(), frame_size, frame->data(VideoFrame::kYPlane), + frame->visible_data(VideoFrame::kYPlane), + frame->stride(VideoFrame::kYPlane), + frame->visible_data(VideoFrame::kUPlane), + frame->stride(VideoFrame::kUPlane), + frame->visible_data(VideoFrame::kVPlane), + frame->stride(VideoFrame::kVPlane), duration, force_keyframe, + data, &keyframe, VPX_IMG_FMT_I420); + break; + } + case media::PIXEL_FORMAT_I420A: { + // Split the duration between two encoder instances if alpha is encoded. + duration = duration / 2; + if ((!IsInitialized(alpha_codec_config_) || + gfx::Size(alpha_codec_config_.g_w, alpha_codec_config_.g_h) != + frame_size)) { + ConfigureEncoderOnEncodingTaskRunner(frame_size, &alpha_codec_config_, + &alpha_encoder_); + u_plane_stride_ = media::VideoFrame::RowBytes( + VideoFrame::kUPlane, frame->format(), frame_size.width()); + v_plane_stride_ = media::VideoFrame::RowBytes( + VideoFrame::kVPlane, frame->format(), frame_size.width()); + v_plane_offset_ = media::VideoFrame::PlaneSize( + frame->format(), VideoFrame::kUPlane, frame_size) + .GetArea(); + alpha_dummy_planes_.resize(SafeCast<wtf_size_t>( + v_plane_offset_ + media::VideoFrame::PlaneSize(frame->format(), + VideoFrame::kVPlane, + frame_size) + .GetArea())); + // It is more expensive to encode 0x00, so use 0x80 instead. + std::fill(alpha_dummy_planes_.begin(), alpha_dummy_planes_.end(), 0x80); + } + // If we introduced a new alpha frame, force keyframe. + force_keyframe = !last_frame_had_alpha_; + last_frame_had_alpha_ = true; + + DoEncode(encoder_.get(), frame_size, frame->data(VideoFrame::kYPlane), + frame->visible_data(VideoFrame::kYPlane), + frame->stride(VideoFrame::kYPlane), + frame->visible_data(VideoFrame::kUPlane), + frame->stride(VideoFrame::kUPlane), + frame->visible_data(VideoFrame::kVPlane), + frame->stride(VideoFrame::kVPlane), duration, force_keyframe, + data, &keyframe, VPX_IMG_FMT_I420); + + DoEncode(alpha_encoder_.get(), frame_size, + frame->data(VideoFrame::kAPlane), + frame->visible_data(VideoFrame::kAPlane), + frame->stride(VideoFrame::kAPlane), alpha_dummy_planes_.data(), + SafeCast<int>(u_plane_stride_), + alpha_dummy_planes_.data() + v_plane_offset_, + SafeCast<int>(v_plane_stride_), duration, keyframe, alpha_data, + &alpha_keyframe, VPX_IMG_FMT_I420); + DCHECK_EQ(keyframe, alpha_keyframe); + break; + } + default: + NOTREACHED() << media::VideoPixelFormatToString(frame->format()); } frame = nullptr; @@ -156,13 +192,15 @@ const base::TimeDelta& duration, bool force_keyframe, std::string& output_data, - bool* const keyframe) { + bool* const keyframe, + vpx_img_fmt_t img_fmt) { DCHECK(encoding_task_runner_->BelongsToCurrentThread()); + DCHECK(img_fmt == VPX_IMG_FMT_I420 || img_fmt == VPX_IMG_FMT_NV12); vpx_image_t vpx_image; vpx_image_t* const result = - vpx_img_wrap(&vpx_image, VPX_IMG_FMT_I420, frame_size.width(), - frame_size.height(), 1 /* align */, data); + vpx_img_wrap(&vpx_image, img_fmt, frame_size.width(), frame_size.height(), + 1 /* align */, data); DCHECK_EQ(result, &vpx_image); vpx_image.planes[VPX_PLANE_Y] = y_plane; vpx_image.planes[VPX_PLANE_U] = u_plane;
diff --git a/third_party/blink/renderer/modules/mediarecorder/vpx_encoder.h b/third_party/blink/renderer/modules/mediarecorder/vpx_encoder.h index 48d569d..d109e4c05 100644 --- a/third_party/blink/renderer/modules/mediarecorder/vpx_encoder.h +++ b/third_party/blink/renderer/modules/mediarecorder/vpx_encoder.h
@@ -7,7 +7,6 @@ #include "base/single_thread_task_runner.h" #include "third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h" - #include "third_party/blink/renderer/platform/wtf/vector.h" #include "third_party/libvpx/source/libvpx/vpx/vp8cx.h" #include "third_party/libvpx/source/libvpx/vpx/vpx_encoder.h" @@ -43,6 +42,7 @@ void ConfigureEncoderOnEncodingTaskRunner(const gfx::Size& size, vpx_codec_enc_cfg_t* codec_config, ScopedVpxCodecCtxPtr* encoder); + void DoEncode(vpx_codec_ctx_t* const encoder, const gfx::Size& frame_size, uint8_t* const data, @@ -55,7 +55,8 @@ const base::TimeDelta& duration, bool force_keyframe, std::string& output_data, - bool* const keyframe); + bool* const keyframe, + vpx_img_fmt_t img_fmt); // Returns true if |codec_config| has been filled in at least once. bool IsInitialized(const vpx_codec_enc_cfg_t& codec_config) const;
diff --git a/third_party/blink/renderer/modules/service_worker/web_embedded_worker_impl_test.cc b/third_party/blink/renderer/modules/service_worker/web_embedded_worker_impl_test.cc index 3dafa1cf..ea22d0f 100644 --- a/third_party/blink/renderer/modules/service_worker/web_embedded_worker_impl_test.cc +++ b/third_party/blink/renderer/modules/service_worker/web_embedded_worker_impl_test.cc
@@ -50,7 +50,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -70,7 +69,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper> resource_load_info_notifier_wrapper,
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc index 05cf9f6..a0eb13af 100644 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -121,6 +121,10 @@ RuntimeEnabledFeatures::SetAccessibilityExposeHTMLElementEnabled(enable); } +void WebRuntimeFeatures::EnableAccessibilityExposeIgnoredNodes(bool enable) { + RuntimeEnabledFeatures::SetAccessibilityExposeIgnoredNodesEnabled(enable); +} + void WebRuntimeFeatures::EnableAccessibilityObjectModel(bool enable) { RuntimeEnabledFeatures::SetAccessibilityObjectModelEnabled(enable); }
diff --git a/third_party/blink/renderer/platform/loader/BUILD.gn b/third_party/blink/renderer/platform/loader/BUILD.gn index e80eb5e..2953d589e 100644 --- a/third_party/blink/renderer/platform/loader/BUILD.gn +++ b/third_party/blink/renderer/platform/loader/BUILD.gn
@@ -135,6 +135,7 @@ "static_data_navigation_body_loader.h", "subresource_integrity.cc", "subresource_integrity.h", + "web_url_request_util.cc", ] sources += get_target_outputs(
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc index f8cf14e..30a4445 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
@@ -1235,10 +1235,9 @@ request.GetRequestContext() == blink::mojom::RequestContextType::FETCH; loader_->LoadSynchronously( std::move(network_resource_request), request.GetExtraData(), - request.RequestorID(), request.IsDownloadToNetworkCacheOnly(), - request.DownloadToBlob(), no_mime_sniffing, request.TimeoutInterval(), - this, response_out, error_out, data_out, encoded_data_length, - encoded_body_length, downloaded_blob, + request.RequestorID(), request.DownloadToBlob(), no_mime_sniffing, + request.TimeoutInterval(), this, response_out, error_out, data_out, + encoded_data_length, encoded_body_length, downloaded_blob, Context().CreateResourceLoadInfoNotifierWrapper()); } // A message dispatched while synchronously fetching the resource @@ -1300,9 +1299,8 @@ request_body_ = ResourceRequestBody(std::move(form_body)); loader_->LoadAsynchronously( std::move(network_resource_request), request.GetExtraData(), - request.RequestorID(), request.IsDownloadToNetworkCacheOnly(), - no_mime_sniffing, Context().CreateResourceLoadInfoNotifierWrapper(), - this); + request.RequestorID(), no_mime_sniffing, + Context().CreateResourceLoadInfoNotifierWrapper(), this); if (code_cache_request_) { // Sets defers loading and initiates a fetch from code cache. code_cache_request_->FetchFromCodeCache(loader_.get(), this);
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader_defer_loading_test.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader_defer_loading_test.cc index 777f4587..e816c9e8 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_loader_defer_loading_test.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader_defer_loading_test.cc
@@ -63,7 +63,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -82,7 +81,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper> resource_load_info_notifier_wrapper,
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader_test.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader_test.cc index 98fb3fa3..f546c71 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_loader_test.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader_test.cc
@@ -85,7 +85,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -104,7 +103,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper> resource_load_info_notifier_wrapper,
diff --git a/third_party/blink/renderer/platform/loader/internet_disconnected_web_url_loader.cc b/third_party/blink/renderer/platform/loader/internet_disconnected_web_url_loader.cc index db9dd199..93b247f 100644 --- a/third_party/blink/renderer/platform/loader/internet_disconnected_web_url_loader.cc +++ b/third_party/blink/renderer/platform/loader/internet_disconnected_web_url_loader.cc
@@ -35,7 +35,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -55,7 +54,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper> resource_load_info_notifier_wrapper,
diff --git a/third_party/blink/renderer/platform/loader/web_url_request_util.cc b/third_party/blink/renderer/platform/loader/web_url_request_util.cc new file mode 100644 index 0000000..d89f39a --- /dev/null +++ b/third_party/blink/renderer/platform/loader/web_url_request_util.cc
@@ -0,0 +1,208 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/public/platform/web_url_request_util.h" + +#include <stddef.h> +#include <stdint.h> + +#include <limits> + +#include "base/check.h" +#include "base/notreached.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "services/network/public/mojom/data_pipe_getter.mojom-blink.h" +#include "third_party/blink/public/mojom/blob/blob_registry.mojom-blink.h" +#include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h" +#include "third_party/blink/public/mojom/loader/resource_load_info.mojom-blink.h" +#include "third_party/blink/public/platform/file_path_conversion.h" +#include "third_party/blink/public/platform/platform.h" +#include "third_party/blink/public/platform/web_data.h" +#include "third_party/blink/public/platform/web_http_body.h" +#include "third_party/blink/public/platform/web_http_header_visitor.h" +#include "third_party/blink/public/platform/web_mixed_content.h" +#include "third_party/blink/public/platform/web_string.h" +#include "third_party/blink/public/platform/web_url_request.h" +#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" +#include "third_party/blink/renderer/platform/wtf/text/string_builder.h" +#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + +namespace blink { + +namespace { + +class HeaderFlattener : public WebHTTPHeaderVisitor { + public: + HeaderFlattener() = default; + ~HeaderFlattener() override = default; + + void VisitHeader(const WebString& name, const WebString& value) override { + const String wtf_name = name; + const String wtf_value = value; + + // Skip over referrer headers found in the header map because we already + // pulled it out as a separate parameter. + if (EqualIgnoringASCIICase(wtf_name, "referer")) + return; + + if (!buffer_.IsEmpty()) + buffer_.Append("\r\n"); + buffer_.Append(wtf_name); + buffer_.Append(": "); + buffer_.Append(wtf_value); + } + + WebString GetBuffer() { return buffer_.ToString(); } + + private: + StringBuilder buffer_; +}; + +} // namespace + +WebString GetWebURLRequestHeadersAsString(const WebURLRequest& request) { + HeaderFlattener flattener; + request.VisitHttpHeaderFields(&flattener); + return flattener.GetBuffer(); +} + +WebHTTPBody GetWebHTTPBodyForRequestBody( + const network::ResourceRequestBody& input) { + WebHTTPBody http_body; + http_body.Initialize(); + http_body.SetIdentifier(input.identifier()); + http_body.SetContainsPasswordData(input.contains_sensitive_info()); + for (auto& element : *input.elements()) { + switch (element.type()) { + case network::mojom::blink::DataElementType::kBytes: + http_body.AppendData( + WebData(element.bytes(), SafeCast<size_t>(element.length()))); + break; + case network::mojom::blink::DataElementType::kFile: { + base::Optional<base::Time> modification_time; + if (!element.expected_modification_time().is_null()) + modification_time = element.expected_modification_time(); + http_body.AppendFileRange( + FilePathToWebString(element.path()), element.offset(), + (element.length() != std::numeric_limits<uint64_t>::max()) + ? element.length() + : -1, + modification_time); + break; + } + case network::mojom::blink::DataElementType::kDataPipe: { + http_body.AppendDataPipe(element.CloneDataPipeGetter()); + break; + } + case network::mojom::blink::DataElementType::kUnknown: + case network::mojom::blink::DataElementType::kChunkedDataPipe: + case network::mojom::blink::DataElementType::kReadOnceStream: + NOTREACHED(); + break; + } + } + return http_body; +} + +scoped_refptr<network::ResourceRequestBody> GetRequestBodyForWebURLRequest( + const WebURLRequest& request) { + scoped_refptr<network::ResourceRequestBody> request_body; + + if (request.HttpBody().IsNull()) { + return request_body; + } + + const std::string& method = request.HttpMethod().Latin1(); + // GET and HEAD requests shouldn't have http bodies. + DCHECK(method != "GET" && method != "HEAD"); + + return GetRequestBodyForWebHTTPBody(request.HttpBody()); +} + +scoped_refptr<network::ResourceRequestBody> GetRequestBodyForWebHTTPBody( + const WebHTTPBody& httpBody) { + scoped_refptr<network::ResourceRequestBody> request_body = + new network::ResourceRequestBody(); + size_t i = 0; + WebHTTPBody::Element element; + while (httpBody.ElementAt(i++, element)) { + switch (element.type) { + case HTTPBodyElementType::kTypeData: + request_body->AppendBytes(element.data.Copy().ReleaseVector()); + break; + case HTTPBodyElementType::kTypeFile: + if (element.file_length == -1) { + request_body->AppendFileRange( + WebStringToFilePath(element.file_path), 0, + std::numeric_limits<uint64_t>::max(), + element.modification_time.value_or(base::Time())); + } else { + request_body->AppendFileRange( + WebStringToFilePath(element.file_path), + static_cast<uint64_t>(element.file_start), + static_cast<uint64_t>(element.file_length), + element.modification_time.value_or(base::Time())); + } + break; + case HTTPBodyElementType::kTypeBlob: { + DCHECK(element.optional_blob); + mojo::Remote<mojom::blink::Blob> blob_remote( + mojo::PendingRemote<mojom::blink::Blob>( + std::move(element.optional_blob))); + + mojo::PendingRemote<network::mojom::blink::DataPipeGetter> + data_pipe_getter_remote; + blob_remote->AsDataPipeGetter( + data_pipe_getter_remote.InitWithNewPipeAndPassReceiver()); + request_body->AppendDataPipe( + mojo::PendingRemote<network::mojom::DataPipeGetter>( + data_pipe_getter_remote.PassPipe(), 0u)); + break; + } + case HTTPBodyElementType::kTypeDataPipe: { + // Convert the raw message pipe to + // mojo::Remote<network::mojom::DataPipeGetter> data_pipe_getter. + mojo::Remote<network::mojom::blink::DataPipeGetter> data_pipe_getter( + mojo::PendingRemote<network::mojom::blink::DataPipeGetter>( + std::move(element.data_pipe_getter))); + + // Set the cloned DataPipeGetter to the output |request_body|, while + // keeping the original message pipe back in the input |httpBody|. This + // way the consumer of the |httpBody| can retrieve the data pipe + // multiple times (e.g. during redirects) until the request is finished. + mojo::PendingRemote<network::mojom::blink::DataPipeGetter> + cloned_getter; + data_pipe_getter->Clone(cloned_getter.InitWithNewPipeAndPassReceiver()); + request_body->AppendDataPipe( + mojo::PendingRemote<network::mojom::DataPipeGetter>( + cloned_getter.PassPipe(), 0u)); + element.data_pipe_getter = data_pipe_getter.Unbind(); + break; + } + } + } + request_body->set_identifier(httpBody.Identifier()); + request_body->set_contains_sensitive_info(httpBody.ContainsPasswordData()); + return request_body; +} + +mojom::blink::RequestContextType GetRequestContextTypeForWebURLRequest( + const WebURLRequest& request) { + return static_cast<mojom::blink::RequestContextType>( + request.GetRequestContext()); +} + +network::mojom::blink::RequestDestination GetRequestDestinationForWebURLRequest( + const WebURLRequest& request) { + return static_cast<network::mojom::blink::RequestDestination>( + request.GetRequestDestination()); +} + +WebMixedContentContextType GetMixedContentContextTypeForWebURLRequest( + const WebURLRequest& request) { + return WebMixedContent::ContextTypeFromRequestContext( + request.GetRequestContext(), WebMixedContent::CheckModeForPlugin::kLax); +} + +} // 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 7409180..daba5e72 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -123,6 +123,9 @@ name: "AccessibilityExposeHTMLElement", }, { + name: "AccessibilityExposeIgnoredNodes", + }, + { name: "AccessibilityObjectModel", status: "experimental", },
diff --git a/third_party/blink/renderer/platform/testing/weburl_loader_mock.cc b/third_party/blink/renderer/platform/testing/weburl_loader_mock.cc index 902421e..f5a74dae 100644 --- a/third_party/blink/renderer/platform/testing/weburl_loader_mock.cc +++ b/third_party/blink/renderer/platform/testing/weburl_loader_mock.cc
@@ -98,7 +98,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -120,7 +119,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper> resource_load_info_notifier_wrapper,
diff --git a/third_party/blink/renderer/platform/testing/weburl_loader_mock.h b/third_party/blink/renderer/platform/testing/weburl_loader_mock.h index d295c2e..5e818447 100644 --- a/third_party/blink/renderer/platform/testing/weburl_loader_mock.h +++ b/third_party/blink/renderer/platform/testing/weburl_loader_mock.h
@@ -47,7 +47,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool pass_response_pipe_to_client, bool no_mime_sniffing, base::TimeDelta timeout_interval, @@ -64,7 +63,6 @@ std::unique_ptr<network::ResourceRequest> request, scoped_refptr<WebURLRequest::ExtraData> request_extra_data, int requestor_id, - bool download_to_network_cache_only, bool no_mime_sniffing, std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper> resource_load_info_notifier_wrapper,
diff --git a/third_party/blink/web_tests/android/ChromiumWPTExpectations b/third_party/blink/web_tests/android/ChromiumWPTExpectations index 358817e..ae18897 100644 --- a/third_party/blink/web_tests/android/ChromiumWPTExpectations +++ b/third_party/blink/web_tests/android/ChromiumWPTExpectations
@@ -1506,7 +1506,6 @@ crbug.com/1050754 external/wpt/css/filter-effects/animation/filter-interpolation-003.html [ Failure ] crbug.com/1050754 external/wpt/css/filter-effects/idlharness.any.html [ Failure ] crbug.com/1050754 external/wpt/css/geometry/DOMMatrix2DInit-validate-fixup.html [ Failure ] -crbug.com/1050754 external/wpt/css/mediaqueries/aspect-ratio-serialization.html [ Failure ] crbug.com/1050754 external/wpt/css/mediaqueries/forced-colors.html [ Failure ] crbug.com/1050754 external/wpt/css/mediaqueries/navigation-controls.tentative.html [ Failure ] crbug.com/1050754 external/wpt/css/mediaqueries/prefers-reduced-data.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/WeblayerWPTExpectations b/third_party/blink/web_tests/android/WeblayerWPTExpectations index 3a9f267..1541aca 100644 --- a/third_party/blink/web_tests/android/WeblayerWPTExpectations +++ b/third_party/blink/web_tests/android/WeblayerWPTExpectations
@@ -1418,7 +1418,6 @@ crbug.com/1050754 external/wpt/css/filter-effects/animation/filter-interpolation-003.html [ Failure ] crbug.com/1050754 external/wpt/css/filter-effects/idlharness.any.html [ Failure ] crbug.com/1050754 external/wpt/css/geometry/DOMMatrix2DInit-validate-fixup.html [ Failure ] -crbug.com/1050754 external/wpt/css/mediaqueries/aspect-ratio-serialization.html [ Failure ] crbug.com/1050754 external/wpt/css/mediaqueries/forced-colors.html [ Failure ] crbug.com/1050754 external/wpt/css/mediaqueries/navigation-controls.tentative.html [ Failure ] crbug.com/1050754 external/wpt/css/mediaqueries/prefers-contrast.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/WebviewWPTExpectations b/third_party/blink/web_tests/android/WebviewWPTExpectations index d7272cfa..667e397 100644 --- a/third_party/blink/web_tests/android/WebviewWPTExpectations +++ b/third_party/blink/web_tests/android/WebviewWPTExpectations
@@ -1540,7 +1540,6 @@ crbug.com/1050754 external/wpt/css/filter-effects/animation/filter-interpolation-003.html [ Failure ] crbug.com/1050754 external/wpt/css/filter-effects/idlharness.any.html [ Failure ] crbug.com/1050754 external/wpt/css/geometry/DOMMatrix2DInit-validate-fixup.html [ Failure ] -crbug.com/1050754 external/wpt/css/mediaqueries/aspect-ratio-serialization.html [ Failure ] crbug.com/1050754 external/wpt/css/mediaqueries/forced-colors.html [ Failure ] crbug.com/1050754 external/wpt/css/mediaqueries/navigation-controls.tentative.html [ Failure ] crbug.com/1050754 external/wpt/css/mediaqueries/prefers-reduced-data.html [ Failure ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index 21f6526..c3f9994 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -173059,6 +173059,16 @@ [] ] }, + "cors-rfc1918": { + "META.yml": [ + "7f0d420a0e6f040497827a1cf19cb7b39d55922a", + [] + ], + "README.md": [ + "f641b61971e8b09de644476d2e04a1e45890b633", + [] + ] + }, "credential-management": { "META.yml": [ "7b1860921312cc9d9934aa803e3f639df21423a0",
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/service-workers/intercept-request.https.html b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/intercept-request.https.html new file mode 100644 index 0000000..00e024b7 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/intercept-request.https.html
@@ -0,0 +1,11 @@ +<!DOCTYPE html> +<title>Client Hint/Service Worker interaction</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script> +<script src="resources/util.js"></script> +<script> +promise_test((t) => + ch_sw_test(t, 'resources/intercept-request.js', 'resources/foo.html', 'PASS'), + "Service workers succsefully receives hints from request"); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/service-workers/intercept-request.https.html.headers b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/intercept-request.https.html.headers new file mode 100644 index 0000000..91ee4065 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/intercept-request.https.html.headers
@@ -0,0 +1 @@ +Accept-CH: device-memory
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/service-workers/new-request.https.html b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/new-request.https.html new file mode 100644 index 0000000..006ec24e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/new-request.https.html
@@ -0,0 +1,11 @@ +<!DOCTYPE html> +<title>Client Hint/Service Worker interaction</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script> +<script src="resources/util.js"></script> +<script> +promise_test((t) => + ch_sw_test(t, 'resources/new-request.js', 'resources/foo.html', 'FAIL'), + "Service worker does NOT generate client hints in a new request"); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/service-workers/new-request.https.html.headers b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/new-request.https.html.headers new file mode 100644 index 0000000..91ee4065 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/new-request.https.html.headers
@@ -0,0 +1 @@ +Accept-CH: device-memory
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/service-workers/passthrough-request.https.html b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/passthrough-request.https.html new file mode 100644 index 0000000..8dca4240 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/passthrough-request.https.html
@@ -0,0 +1,11 @@ +<!DOCTYPE html> +<title>Client Hint/Service Worker interaction</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script> +<script src="resources/util.js"></script> +<script> +promise_test((t) => + ch_sw_test(t, 'resources/passthrough-request.js', 'resources/echo-hint-in-html.py', 'PASS'), + "Service worker successfully passes hints through to new fetch"); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/service-workers/passthrough-request.https.html.headers b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/passthrough-request.https.html.headers new file mode 100644 index 0000000..91ee4065 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/passthrough-request.https.html.headers
@@ -0,0 +1 @@ +Accept-CH: device-memory
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/echo-hint-in-html.py b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/echo-hint-in-html.py new file mode 100644 index 0000000..c1d99cb5 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/echo-hint-in-html.py
@@ -0,0 +1,21 @@ +import sys + +def main(request, response): + """ + Simple handler that sets a response header based on which client hint + request headers were received. + """ + + response.headers.append(b"Content-Type", b"text/html; charset=UTF-8") + response.headers.append(b"Access-Control-Allow-Origin", b"*") + response.headers.append(b"Access-Control-Allow-Headers", b"*") + response.headers.append(b"Access-Control-Expose-Headers", b"*") + + response.headers.append(b"Cache-Control", b"no-store") + + result = "FAIL" + + if b"device-memory" in request.headers: + result = "PASS" + + response.content = result
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/foo.html b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/foo.html new file mode 100644 index 0000000..ba578e4 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/foo.html
@@ -0,0 +1 @@ +BAR
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/intercept-request.js b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/intercept-request.js new file mode 100644 index 0000000..b85e6e9 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/intercept-request.js
@@ -0,0 +1,6 @@ +self.addEventListener('fetch', (event) => { + result="FAIL"; + if(event.request.headers.has("device-memory")) + result="PASS"; + event.respondWith(new Response(result)); +});
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/new-request.js b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/new-request.js new file mode 100644 index 0000000..395c7718 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/new-request.js
@@ -0,0 +1,3 @@ +self.addEventListener('fetch', (event) => { + event.respondWith(fetch("/client-hints/service-workers/resources/echo-hint-in-html.py")) +});
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/passthrough-request.js b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/passthrough-request.js new file mode 100644 index 0000000..5541c5e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/passthrough-request.js
@@ -0,0 +1 @@ +self.addEventListener('fetch', (event) => fetch(event.request));
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/util.js b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/util.js new file mode 100644 index 0000000..5692cd891 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/client-hints/service-workers/resources/util.js
@@ -0,0 +1,18 @@ +async function ch_sw_test(t, worker, url, response) { + r = await service_worker_unregister_and_register(t, worker, worker) + await wait_for_state(t, r.installing, 'activated') + var popup_window = window.open('about:blank'); + assert_not_equals(popup_window, null, "Popup windows not allowed?"); + + t.add_cleanup(async _=>{ + popup_window.close(); + await r.unregister(); + }); + + popup_window.addEventListener('load', (e) => { + t.step(()=>{assert_equals(popup_window.document.body.textContent, response)}); + t.done(); + }); + + popup_window.location = url; +}
diff --git a/third_party/blink/web_tests/external/wpt/cors-rfc1918/META.yml b/third_party/blink/web_tests/external/wpt/cors-rfc1918/META.yml new file mode 100644 index 0000000..7f0d420 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/cors-rfc1918/META.yml
@@ -0,0 +1,5 @@ +spec: https://wicg.github.io/cors-rfc1918/ +suggested_reviewers: + - letitz + - camillelamy + - mikewest
diff --git a/third_party/blink/web_tests/external/wpt/cors-rfc1918/README.md b/third_party/blink/web_tests/external/wpt/cors-rfc1918/README.md new file mode 100644 index 0000000..f641b61 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/cors-rfc1918/README.md
@@ -0,0 +1,8 @@ +# CORS-RFC1918 tests + +This directory contains tests for CORS-RFC1918. See also: + +* [The specification](https://wicg.github.io/cors-rfc1918/) +* [The repository](https://github.com/WICG/cors-rfc1918/) +* [Open issues](https://github.com/WICG/cors-rfc1918/issues/) +* Additional tests: ../fetch/cors-rfc1918/
diff --git a/third_party/blink/web_tests/external/wpt/css/mediaqueries/aspect-ratio-serialization-expected.txt b/third_party/blink/web_tests/external/wpt/css/mediaqueries/aspect-ratio-serialization-expected.txt deleted file mode 100644 index 551aadd1..0000000 --- a/third_party/blink/web_tests/external/wpt/css/mediaqueries/aspect-ratio-serialization-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL <ratio> serializes with spaces around the integer. assert_equals: expected "(aspect-ratio: 1 / 3)" but got "(aspect-ratio: 1/3)" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/selectors/is-where-visited-ref.html b/third_party/blink/web_tests/external/wpt/css/selectors/is-where-visited-ref.html new file mode 100644 index 0000000..c8243ac --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/selectors/is-where-visited-ref.html
@@ -0,0 +1,66 @@ +<!DOCTYPE html> +<title>:is/:where combined with :visited/:link</title> +<link rel="help" href="https://drafts.csswg.org/selectors-4/#matches"> +<style> + :visited, :link { + color: black; + } + + #parent1 .a, #parent1 .b, #parent1 .c { + color: green; + } + #parent1 .d, #parent1 .f { + color: magenta; + } + + #parent2 .b, #parent2 .e { + color: tomato; + } + + #parent3 .c, #parent3 .f { + color: skyblue; + } + + #parent4 .c, #parent4 .f { + color: blue; + } + + #parent3 .b, #parent3 .e, #parent4 .b, #parent4 .e { + color: maroon; + } +</style> +<main> + <div id=parent1> + <a class=a href="">a</a> + <a class=b href="">b</a> + <a class=c href="">c</a> + <a class=d href="unvisited">d</a> + <a class=e href="unvisited">e</a> + <a class=f href="unvisited">f</a> + </div> + <div id=parent2> + <a class=a href="">a</a> + <a class=b href="">b</a> + <a class=c href="">c</a> + <a class=d href="unvisited">d</a> + <a class=e href="unvisited">e</a> + <a class=f href="unvisited">f</a> + </div> + <a id=parent3 href=""> + <span class=a>a</span> + <span class=b>b</span> + <span class=c>c</span> + <span class=d>d</span> + <span class=e>e</span> + <span class=f>f</span> + </a> + <br> + <a id=parent4 href="unvisited"> + <span class=a>a</span> + <span class=b>b</span> + <span class=c>c</span> + <span class=d>d</span> + <span class=e>e</span> + <span class=f>f</span> + </a> +</main>
diff --git a/third_party/blink/web_tests/external/wpt/css/selectors/is-where-visited.html b/third_party/blink/web_tests/external/wpt/css/selectors/is-where-visited.html new file mode 100644 index 0000000..5025b0a1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/selectors/is-where-visited.html
@@ -0,0 +1,67 @@ +<!DOCTYPE html> +<title>:is/:where combined with :visited/:link</title> +<link rel="help" href="https://drafts.csswg.org/selectors-4/#matches"> +<link rel="match" href="is-where-visited-ref.html"> +<style> + :visited, :link { + color: black; + } + + #parent1 :is(:visited) { + color: green; + } + #parent1 :is(:link):nth-child(even) { + color: magenta; + } + + :is(#parent2 .a + :visited, #parent2 .e:link) { + color: tomato; + } + + main :is(a:visited > :where(.a + span + span, .f)) { + color: skyblue; + } + + main :is(a:link > :where(.a + span + span, .f)) { + color: blue; + } + + main :is(a:is(:link, :visited) > :where(.b, .e)) { + color: maroon; + } +</style> +<main> + <div id=parent1> + <a class=a href="">a</a> + <a class=b href="">b</a> + <a class=c href="">c</a> + <a class=d href="unvisited">d</a> + <a class=e href="unvisited">e</a> + <a class=f href="unvisited">f</a> + </div> + <div id=parent2> + <a class=a href="">a</a> + <a class=b href="">b</a> + <a class=c href="">c</a> + <a class=d href="unvisited">d</a> + <a class=e href="unvisited">e</a> + <a class=f href="unvisited">f</a> + </div> + <a id=parent3 href=""> + <span class=a>a</span> + <span class=b>b</span> + <span class=c>c</span> + <span class=d>d</span> + <span class=e>e</span> + <span class=f>f</span> + </a> + <br> + <a id=parent4 href="unvisited"> + <span class=a>a</span> + <span class=b>b</span> + <span class=c>c</span> + <span class=d>d</span> + <span class=e>e</span> + <span class=f>f</span> + </a> +</main>
diff --git a/third_party/blink/web_tests/external/wpt/css/selectors/not-links-ref.html b/third_party/blink/web_tests/external/wpt/css/selectors/not-links-ref.html index 1efe594..1b2515a5 100644 --- a/third_party/blink/web_tests/external/wpt/css/selectors/not-links-ref.html +++ b/third_party/blink/web_tests/external/wpt/css/selectors/not-links-ref.html
@@ -1,10 +1,17 @@ <!DOCTYPE html> <title>Test that *:not(:link):not(:visited) does not match links</title> +<style> + span { + background-color: green; + } +</style> <body> - <a href="#">Unvisited</a> - <a href="">Visited</a> - <span style="background-color: green">Green</span> + <div> + <a href="#">Unvisited (<span>Green</span>)</a> + <a href="#">Visited (<span>Green</span>)</a> + <span>Green</span> + </div> <p> - Only "Green" should have a green background. + Only "Green" should have green backgrounds. </p> </body>
diff --git a/third_party/blink/web_tests/external/wpt/css/selectors/not-links.html b/third_party/blink/web_tests/external/wpt/css/selectors/not-links.html index d49a86f..58cef1a2 100644 --- a/third_party/blink/web_tests/external/wpt/css/selectors/not-links.html +++ b/third_party/blink/web_tests/external/wpt/css/selectors/not-links.html
@@ -3,15 +3,23 @@ <link rel="match" href="not-links-ref.html"> <link rel="help" href="https://drafts.csswg.org/selectors-4/#negation"> <style> - body > *:not(:link):not(:visited) { + * { + /* Browsers typically ignore the :visited alpha and use the unvisited + alpha instead, which by default is 0, in which case a failure would + not be detected. */ + background-color: white; + } + div *:not(:link):not(:visited) { background-color: green; } </style> <body> - <a href="#">Unvisited</a> - <a href="">Visited</a> - <span>Green</span> - <p style="background-color: initial"> - Only "Green" should have a green background. + <div> + <a href="#">Unvisited (<span>Green</span>)</a> + <a href="#">Visited (<span>Green</span>)</a> + <span>Green</span> + </div> + <p> + Only "Green" should have green backgrounds. </p> </body>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.spacing.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.spacing.html new file mode 100644 index 0000000..a4ec0833 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.spacing.html
@@ -0,0 +1,41 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. --> +<title>Canvas test: 2d.text.drawing.style.spacing</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/html/canvas/resources/canvas-tests.js"></script> +<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css"> +<body class="show_output"> + +<h1>2d.text.drawing.style.spacing</h1> +<p class="desc">Testing baselines</p> + + +<p class="output">Actual output:</p> +<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas> + +<ul id="d"></ul> +<script> +var t = async_test("Testing baselines"); +_addTest(function(canvas, ctx) { + +_assertSame(ctx.textLetterSpacing, 0, "ctx.textLetterSpacing", "0"); +_assertSame(ctx.textWordSpacing, 0, "ctx.textWordSpacing", "0"); + +ctx.textLetterSpacing = 3; +_assertSame(ctx.textLetterSpacing, 3, "ctx.textLetterSpacing", "3"); +_assertSame(ctx.textWordSpacing, 0, "ctx.textWordSpacing", "0"); + +ctx.textWordSpacing = 5; +_assertSame(ctx.textLetterSpacing, 3, "ctx.textLetterSpacing", "3"); +_assertSame(ctx.textWordSpacing, 5, "ctx.textWordSpacing", "5"); + +ctx.textLetterSpacing = -1; +ctx.textWordSpacing = -1; +_assertSame(ctx.textLetterSpacing, -1, "ctx.textLetterSpacing", "-1"); +_assertSame(ctx.textWordSpacing, -1, "ctx.textWordSpacing", "-1"); + + +}); +</script> +
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.html new file mode 100644 index 0000000..d3cf89a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.html
@@ -0,0 +1,41 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. --> +<title>OffscreenCanvas test: 2d.text.drawing.style.spacing</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/html/canvas/resources/canvas-tests.js"></script> + +<h1>2d.text.drawing.style.spacing</h1> +<p class="desc">Testing baselines</p> + + +<script> +var t = async_test("Testing baselines"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.textLetterSpacing, 0, "ctx.textLetterSpacing", "0"); +_assertSame(ctx.textWordSpacing, 0, "ctx.textWordSpacing", "0"); + +ctx.textLetterSpacing = 3; +_assertSame(ctx.textLetterSpacing, 3, "ctx.textLetterSpacing", "3"); +_assertSame(ctx.textWordSpacing, 0, "ctx.textWordSpacing", "0"); + +ctx.textWordSpacing = 5; +_assertSame(ctx.textLetterSpacing, 3, "ctx.textLetterSpacing", "3"); +_assertSame(ctx.textWordSpacing, 5, "ctx.textWordSpacing", "5"); + +ctx.textLetterSpacing = -1; +ctx.textWordSpacing = -1; +_assertSame(ctx.textLetterSpacing, -1, "ctx.textLetterSpacing", "-1"); +_assertSame(ctx.textWordSpacing, -1, "ctx.textWordSpacing", "-1"); +t.done(); + +}); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.worker.js new file mode 100644 index 0000000..0499b310 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.worker.js
@@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.text.drawing.style.spacing +// Description:Testing baselines +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Testing baselines"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.textLetterSpacing, 0, "ctx.textLetterSpacing", "0"); +_assertSame(ctx.textWordSpacing, 0, "ctx.textWordSpacing", "0"); + +ctx.textLetterSpacing = 3; +_assertSame(ctx.textLetterSpacing, 3, "ctx.textLetterSpacing", "3"); +_assertSame(ctx.textWordSpacing, 0, "ctx.textWordSpacing", "0"); + +ctx.textWordSpacing = 5; +_assertSame(ctx.textLetterSpacing, 3, "ctx.textLetterSpacing", "3"); +_assertSame(ctx.textWordSpacing, 5, "ctx.textWordSpacing", "5"); + +ctx.textLetterSpacing = -1; +ctx.textWordSpacing = -1; +_assertSame(ctx.textLetterSpacing, -1, "ctx.textLetterSpacing", "-1"); +_assertSame(ctx.textWordSpacing, -1, "ctx.textWordSpacing", "-1"); +t.done(); + +}); +done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml b/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml index 31e85a7..550746b 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml +++ b/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml
@@ -738,4 +738,25 @@ }), 500); }); +- name: 2d.text.drawing.style.spacing + desc: Testing baselines + testing: + - 2d.text.drawing.style.spacing + code: | + @assert ctx.textLetterSpacing === 0; + @assert ctx.textWordSpacing === 0; + + ctx.textLetterSpacing = 3; + @assert ctx.textLetterSpacing === 3; + @assert ctx.textWordSpacing === 0; + + ctx.textWordSpacing = 5; + @assert ctx.textLetterSpacing === 3; + @assert ctx.textWordSpacing === 5; + + ctx.textLetterSpacing = -1; + ctx.textWordSpacing = -1; + @assert ctx.textLetterSpacing === -1; + @assert ctx.textWordSpacing === -1; + # TODO: shadows, alpha, composite, clip
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/offscreen/text.yaml b/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/offscreen/text.yaml index 7edd25e..d204a56 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/offscreen/text.yaml +++ b/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/offscreen/text.yaml
@@ -1210,6 +1210,7 @@ @assert ctx.measureText('ABCD').emHeightDescent === 12.5; @assert ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent === 50; }).then(t_pass, t_fail); + - name: 2d.text.measure.baselines desc: Testing baselines for OffscreenCanvas testing: @@ -1233,4 +1234,27 @@ @assert ctx.measureText('ABCD').getBaselines().ideographic === -39; @assert ctx.measureText('ABCD').getBaselines().hanging === 68; }).then(t_pass, t_fail); + +- name: 2d.text.drawing.style.spacing + desc: Testing baselines + testing: + - 2d.text.drawing.style.spacing + code: | + @assert ctx.textLetterSpacing === 0; + @assert ctx.textWordSpacing === 0; + + ctx.textLetterSpacing = 3; + @assert ctx.textLetterSpacing === 3; + @assert ctx.textWordSpacing === 0; + + ctx.textWordSpacing = 5; + @assert ctx.textLetterSpacing === 3; + @assert ctx.textWordSpacing === 5; + + ctx.textLetterSpacing = -1; + ctx.textWordSpacing = -1; + @assert ctx.textLetterSpacing === -1; + @assert ctx.textWordSpacing === -1; + t.done(); + # TODO: shadows, alpha, composite, clip
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/trusted-types-reporting.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/trusted-types-reporting.tentative.html index 5d9cd8b..1e9d20d 100644 --- a/third_party/blink/web_tests/external/wpt/trusted-types/trusted-types-reporting.tentative.html +++ b/third_party/blink/web_tests/external/wpt/trusted-types/trusted-types-reporting.tentative.html
@@ -258,6 +258,17 @@ }, "Trusted Type violation report: sample for custom element assignment"); } + promise_test(t => { + let p = Promise.resolve() + .then(promise_violation("require-trusted-types-for 'script'")) + .then(expect_blocked_uri("trusted-types-sink")) + .then(expect_sample("Worker constructor|")) + .then(promise_flush()); + expect_throws(_ => new Worker("blabla")); + flush(); + return p; + }, "Trusted Type violation report: Worker constructor"); + </script> <!-- Some elements for the tests to act on. -->
diff --git a/third_party/blink/web_tests/fast/canvas/canvas-text-drawing-style-letterWordSpacing.html b/third_party/blink/web_tests/fast/canvas/canvas-text-drawing-style-letterWordSpacing.html new file mode 100644 index 0000000..94123bd --- /dev/null +++ b/third_party/blink/web_tests/fast/canvas/canvas-text-drawing-style-letterWordSpacing.html
@@ -0,0 +1,21 @@ +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> +<body> +<script> +test(function(t) { + var ctx = document.createElement('canvas').getContext('2d'); + + // Verify initial values: + assert_equals(ctx.textLetterSpacing, 0); + assert_equals(ctx.textWordSpacing, 0); + + ctx.textLetterSpacing = 3; + assert_equals(ctx.textLetterSpacing, 3); + assert_equals(ctx.textWordSpacing, 0); + ctx.textWordSpacing = 5; + assert_equals(ctx.textLetterSpacing, 3); + assert_equals(ctx.textWordSpacing, 5); + +}, "Test basic functionality of textLetterSpacing and textWordSpacing."); +</script> +</body>
diff --git a/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt b/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt index 5f530b4..589e0fb5 100644 --- a/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt +++ b/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
@@ -1035,6 +1035,8 @@ getter strokeStyle getter textAlign getter textBaseline + getter textLetterSpacing + getter textWordSpacing method arc method arcTo method beginPath @@ -1099,6 +1101,8 @@ setter strokeStyle setter textAlign setter textBaseline + setter textLetterSpacing + setter textWordSpacing interface Path2D attribute @@toStringTag method addPath
diff --git a/third_party/blink/web_tests/inspector-protocol/css/css-get-media-queries-expected.txt b/third_party/blink/web_tests/inspector-protocol/css/css-get-media-queries-expected.txt index ab568607..d7f9aba 100644 --- a/third_party/blink/web_tests/inspector-protocol/css/css-get-media-queries-expected.txt +++ b/third_party/blink/web_tests/inspector-protocol/css/css-get-media-queries-expected.txt
@@ -180,7 +180,7 @@ unit: in computed length: 816 mediaRule #15 - text: screen and (device-aspect-ratio: 16/9), screen and (device-aspect-ratio: 16/10) + text: screen and (device-aspect-ratio: 16 / 9), screen and (device-aspect-ratio: 16 / 10) source: mediaRule range: {"endColumn":86,"endLine":1,"startColumn":7,"startLine":1} computedText: screen and (device-aspect-ratio: 16/9), screen and (device-aspect-ratio: 16/10)
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt index d0cb77d..a4dde65 100644 --- a/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt +++ b/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt
@@ -1001,6 +1001,8 @@ [Worker] getter strokeStyle [Worker] getter textAlign [Worker] getter textBaseline +[Worker] getter textLetterSpacing +[Worker] getter textWordSpacing [Worker] method arc [Worker] method arcTo [Worker] method beginPath @@ -1065,6 +1067,8 @@ [Worker] setter strokeStyle [Worker] setter textAlign [Worker] setter textBaseline +[Worker] setter textLetterSpacing +[Worker] setter textWordSpacing [Worker] interface Path2D [Worker] attribute @@toStringTag [Worker] method addPath
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt index e6364e1..9f22cd5 100644 --- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt +++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -987,6 +987,8 @@ getter strokeStyle getter textAlign getter textBaseline + getter textLetterSpacing + getter textWordSpacing method addHitRegion method arc method arcTo @@ -1057,6 +1059,8 @@ setter strokeStyle setter textAlign setter textBaseline + setter textLetterSpacing + setter textWordSpacing interface ChannelMergerNode : AudioNode attribute @@toStringTag method constructor @@ -5676,6 +5680,8 @@ getter strokeStyle getter textAlign getter textBaseline + getter textLetterSpacing + getter textWordSpacing method arc method arcTo method beginPath @@ -5740,6 +5746,8 @@ setter strokeStyle setter textAlign setter textBaseline + setter textLetterSpacing + setter textWordSpacing interface Option attribute @@toStringTag getter defaultSelected
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt index a57770c3..0698b386 100644 --- a/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt +++ b/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt
@@ -955,6 +955,8 @@ [Worker] getter strokeStyle [Worker] getter textAlign [Worker] getter textBaseline +[Worker] getter textLetterSpacing +[Worker] getter textWordSpacing [Worker] method arc [Worker] method arcTo [Worker] method beginPath @@ -1019,6 +1021,8 @@ [Worker] setter strokeStyle [Worker] setter textAlign [Worker] setter textBaseline +[Worker] setter textLetterSpacing +[Worker] setter textWordSpacing [Worker] interface Path2D [Worker] attribute @@toStringTag [Worker] method addPath
diff --git a/third_party/woff2/.gitignore b/third_party/woff2/.gitignore index e327693..6b35b1f 100644 --- a/third_party/woff2/.gitignore +++ b/third_party/woff2/.gitignore
@@ -2,3 +2,4 @@ *.a /woff2_compress /woff2_decompress +/woff2_info
diff --git a/third_party/woff2/LICENSE b/third_party/woff2/LICENSE index d645695..4f9441b6 100644 --- a/third_party/woff2/LICENSE +++ b/third_party/woff2/LICENSE
@@ -1,202 +1,19 @@ +Copyright (c) 2013-2017 by the WOFF2 Authors. - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE.
diff --git a/third_party/woff2/Makefile b/third_party/woff2/Makefile index 622a2af..fbb945c8 100644 --- a/third_party/woff2/Makefile +++ b/third_party/woff2/Makefile
@@ -1,6 +1,6 @@ OS := $(shell uname) -CPPFLAGS = -I./brotli/include/ -I./src +CPPFLAGS = -I./brotli/c/include/ -I./src -I./include AR ?= ar CC ?= gcc @@ -11,13 +11,16 @@ NOISY_LOGGING ?= -DFONT_COMPRESSION_BIN COMMON_FLAGS = -fno-omit-frame-pointer $(CANONICAL_PREFIXES) $(NOISY_LOGGING) -D __STDC_FORMAT_MACROS +ARFLAGS = crf + ifeq ($(OS), Darwin) CPPFLAGS += -DOS_MACOSX + ARFLAGS = cr else COMMON_FLAGS += -fno-tree-vrp endif -ARFLAGS = crf + CFLAGS += $(COMMON_FLAGS) CXXFLAGS += $(COMMON_FLAGS) -std=c++11 @@ -28,13 +31,13 @@ variable_length.o BROTLI = brotli -BROTLIOBJ = $(BROTLI)/bin/obj +BROTLIOBJ = $(BROTLI)/bin/obj/c ENCOBJ = $(BROTLIOBJ)/enc/*.o DECOBJ = $(BROTLIOBJ)/dec/*.o COMMONOBJ = $(BROTLIOBJ)/common/*.o OBJS = $(patsubst %, $(SRCDIR)/%, $(OUROBJ)) -EXECUTABLES=woff2_compress woff2_decompress +EXECUTABLES=woff2_compress woff2_decompress woff2_info EXE_OBJS=$(patsubst %, $(SRCDIR)/%.o, $(EXECUTABLES)) ARCHIVES=convert_woff2ttf_fuzzer convert_woff2ttf_fuzzer_new_entry ARCHIVE_OBJS=$(patsubst %, $(SRCDIR)/%.o, $(ARCHIVES))
diff --git a/third_party/woff2/README.chromium b/third_party/woff2/README.chromium index c97a8e40..4cf3e71 100644 --- a/third_party/woff2/README.chromium +++ b/third_party/woff2/README.chromium
@@ -1,7 +1,7 @@ Name: woff2 URL: https://github.com/google/woff2 -Version: 1bccf208bca986e53a647dfe4811322adb06ecf8 -License: Apache 2.0 +Version: a0d0ed7da27b708c0a4e96ad7a998bddc933c06e +License: MIT License File: LICENSE Security Critical: yes @@ -12,4 +12,3 @@ Local Modifications: - BUILD.gn: Added. -- woff2.gyp: Added.
diff --git a/third_party/woff2/README.md b/third_party/woff2/README.md index f5210afc..6576772 100644 --- a/third_party/woff2/README.md +++ b/third_party/woff2/README.md
@@ -25,6 +25,29 @@ make clean all ``` +Alternatively, if Brotli is already installed on your system you can use CMake +to build executables and libraries: + +``` +git clone https://github.com/google/woff2.git +cd woff2 +mkdir out +cd out +cmake .. +make +make install +``` + +By default, shared libraries are built. To use static linkage, do: + +``` +cd woff2 +mkdir out-static +cmake -DBUILD_SHARED_LIBS=OFF .. +make +make install +``` + ## Run Ensure the binaries from the build process are in your $PATH, then:
diff --git a/third_party/woff2/src/woff2_dec.cc b/third_party/woff2/src/woff2_dec.cc index 8186c8e..25e18c6 100644 --- a/third_party/woff2/src/woff2_dec.cc +++ b/third_party/woff2/src/woff2_dec.cc
@@ -111,6 +111,16 @@ return (flag & 1) ? baseval : -baseval; } +bool _SafeIntAddition(int a, int b, int* result) { + if (PREDICT_FALSE( + ((a > 0) && (b > std::numeric_limits<int>::max() - a)) || + ((a < 0) && (b < std::numeric_limits<int>::min() - a)))) { + return false; + } + *result = a + b; + return true; +} + bool TripletDecode(const uint8_t* flags_in, const uint8_t* in, size_t in_size, unsigned int n_points, Point* result, size_t* in_bytes_consumed) { int x = 0; @@ -166,9 +176,12 @@ (in[triplet_index + 2] << 8) + in[triplet_index + 3]); } triplet_index += n_data_bytes; - // Possible overflow but coordinate values are not security sensitive - x += dx; - y += dy; + if (!_SafeIntAddition(x, dx, &x)) { + return false; + } + if (!_SafeIntAddition(y, dy, &y)) { + return false; + } *result++ = {x, y, on_curve}; } *in_bytes_consumed = triplet_index;
diff --git a/tools/cfi/ignores.txt b/tools/cfi/ignores.txt index 4a6f5f80..7a498aa 100644 --- a/tools/cfi/ignores.txt +++ b/tools/cfi/ignores.txt
@@ -139,6 +139,9 @@ fun:*GetTraceCategoryEnabledFlag* fun:*AddTraceEvent* +# Dawn, calls to OpenGL and Vulkan function pointers from shared library. +src:*third_part/dawn/src/dawn_native/* + # PPAPI src:*ppapi/* src:*content/renderer/pepper*
diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec index 6d644fe..c996129 100644 --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec
@@ -132,12 +132,10 @@ "META": {"sizes": {"includes": [50],}}, "includes": [1540], }, - "chrome/browser/resources/history/history_resources_vulcanized.grd": { + "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/history/history_resources.grd": { + "META": {"sizes": {"includes": [30]}}, "includes": [1580], }, - "chrome/browser/resources/history/history_resources.grd": { - "includes": [1600], - }, "chrome/browser/resources/local_ntp/local_ntp_resources.grd": { "includes": [1620], },
diff --git a/tools/json_schema_compiler/cpp_bundle_generator.py b/tools/json_schema_compiler/cpp_bundle_generator.py index af044af..494efd60 100644 --- a/tools/json_schema_compiler/cpp_bundle_generator.py +++ b/tools/json_schema_compiler/cpp_bundle_generator.py
@@ -171,8 +171,8 @@ namespace_name, function.name) c.Sblock('{') c.Append('&NewExtensionFunction<%s>,' % function_name) - c.Append('%s::function_name(),' % function_name) - c.Append('%s::histogram_value(),' % function_name) + c.Append('%s::static_function_name(),' % function_name) + c.Append('%s::static_histogram_value(),' % function_name) c.Eblock('},') if function_ifdefs is not None:
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml index 66de3ab..508d022 100644 --- a/tools/metrics/actions/actions.xml +++ b/tools/metrics/actions/actions.xml
@@ -20830,6 +20830,15 @@ </description> </action> +<action name="Settings.SafetyCheck.ChromeCleanerCaretNavigation"> + <owner>rainhard@chromium.org</owner> + <owner>msramek@chromium.org</owner> + <description> + User clicks the safety check Chrome cleaner row to navigate to the Chrome + cleaner UI. + </description> +</action> + <action name="Settings.SafetyCheck.ChromeCleanerReboot"> <owner>rainhard@chromium.org</owner> <owner>msramek@chromium.org</owner>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 904281e..32cc42d 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -984,6 +984,12 @@ <int value="11" label="DismissedOther"> User has dismissed the promo by other means. </int> + <int value="12" label="AuthErrorShown"> + The auth error screen was shown to the user. + </int> + <int value="13" label="GenericErrorShown"> + The generic error screen was shown to the user. + </int> </enum> <enum name="AccountManagerAccountAdditionSource"> @@ -16626,6 +16632,19 @@ <int value="90" label="timeline.save-to-file"/> <int value="91" label="timeline.show-history"/> <int value="92" label="timeline.toggle-recording"/> + <int value="93" label="sources.increment-css"/> + <int value="94" label="sources.increment-css-by-ten"/> + <int value="95" label="sources.decrement-css"/> + <int value="96" label="sources.decrement-css-by-ten"/> + <int value="97" label="layers.reset-view"/> + <int value="98" label="layers.pan-mode"/> + <int value="99" label="layers.rotate-mode"/> + <int value="100" label="layers.zoom-in"/> + <int value="101" label="layers.zoom-out"/> + <int value="102" label="layers.up"/> + <int value="103" label="layers.down"/> + <int value="104" label="layers.left"/> + <int value="105" label="layers.right"/> </enum> <enum name="DevToolsPanel"> @@ -57513,6 +57532,13 @@ <int value="7" label="Phone Collected, WebOTP Used, OTC Used"/> </enum> +<enum name="PhoneHubInterstitialScreenEvent"> + <int value="0" label="Screen Shown"/> + <int value="1" label="Learn More Clicked"/> + <int value="2" label="Dismiss Clicked"/> + <int value="3" label="Confirm Clicked"/> +</enum> + <enum name="PhoneNumberRegexVariantResult"> <obsolete> Removed in M82 as the experiment has been stopped. @@ -63725,6 +63751,12 @@ <int value="1" label="CHECKING"/> <int value="2" label="INFECTED"/> <int value="3" label="REBOOT_REQUIRED"/> + <int value="4" label="SCANNING_FOR_UWS"/> + <int value="5" label="REMOVING_UWS"/> + <int value="6" label="DISABLED_BY_ADMIN"/> + <int value="7" label="ERROR"/> + <int value="8" label="NO_UWS_FOUND_WITH_TIMESTAMP"/> + <int value="9" label="NO_UWS_FOUND_WITHOUT_TIMESTAMP"/> </enum> <enum name="SafetyCheckExtensionsStatus"> @@ -65982,6 +66014,8 @@ label="Safety check, manage safe browsing through caret navigation"/> <int value="9" label="Safety check, review extensions through caret navigation"/> + <int value="10" + label="Safety check, caret navigation to the Chrome cleaner UI"/> </enum> <enum name="SettingsSections">
diff --git a/tools/metrics/histograms/histograms_xml/ash/histograms.xml b/tools/metrics/histograms/histograms_xml/ash/histograms.xml index ce33b5aa..2cc54112 100644 --- a/tools/metrics/histograms/histograms_xml/ash/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/ash/histograms.xml
@@ -1025,6 +1025,24 @@ </summary> </histogram> +<histogram name="Ash.PhoneHub.InterstitialScreenEvent.{ScreenName}" + enum="PhoneHubInterstitialScreenEvent" expires_after="2021-10-31"> +<!-- Name completed by histogram_suffixes name="PhoneHubInterstitialScreen" --> + + <owner>tengs@chromium.org</owner> + <owner>khorimoto@chromium.org</owner> + <summary>Events for the given PhoneHub interstitial screen.</summary> + <token key="ScreenName"> + <variant name="BluetoothOrWifiDisabled"/> + <variant name="ConnectionError"/> + <variant name="InitialConnecting"/> + <variant name="NotificationOptIn"/> + <variant name="Onboarding.ExistingMultideviceUser"/> + <variant name="Onboarding.NewMultideviceUser"/> + <variant name="Reconnecting"/> + </token> +</histogram> + <histogram name="Ash.Pip.AndroidPipUseTime" units="ms" expires_after="2021-06-16"> <owner>takise@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/obsolete_histograms.xml b/tools/metrics/histograms/histograms_xml/obsolete_histograms.xml index 02b15886..1ddeaf6 100644 --- a/tools/metrics/histograms/histograms_xml/obsolete_histograms.xml +++ b/tools/metrics/histograms/histograms_xml/obsolete_histograms.xml
@@ -72831,6 +72831,18 @@ </summary> </histogram> +<histogram name="ServiceWorker.FetchRespondWithDataPipeCreation.Time" + units="ms" expires_after="M85"> + <obsolete> + Expired after M85. + </obsolete> + <owner>wanderview@chromium.org</owner> + <summary> + Measures how long the service worker thread is blocked creating a + mojo::DataPipe during FetchEvent.respondWith() processing. + </summary> +</histogram> + <histogram name="ServiceWorker.ForeignFetch.OriginCount" units="units" expires_after="2018-04-09"> <obsolete> @@ -73436,6 +73448,22 @@ </summary> </histogram> +<histogram name="ServiceWorker.SubresourceNotifyStartLoadingResponseBodyDelay" + units="ms" expires_after="M85"> + <obsolete> + Expired after M85. + </obsolete> + <owner>wanderview@chromium.org</owner> + <summary> + The time between when the ServiceWorkerSubresourceLoader receives a Response + and when it notifies the loader's client that the body has started loading. + This is different from SubresourceStartBlobReadingDelay in that notifying + the client about the Response may take place some time later than when the + blob body reading begins. This will be triggered for every successful + subresource load handled by a ServiceWorker with servification enabled. + </summary> +</histogram> + <histogram name="ServiceWorker.SubresourceStartBlobReadingDelay" units="ms" expires_after="M77"> <obsolete>
diff --git a/tools/metrics/histograms/histograms_xml/others/histograms.xml b/tools/metrics/histograms/histograms_xml/others/histograms.xml index 0a2a221..e289578 100644 --- a/tools/metrics/histograms/histograms_xml/others/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/others/histograms.xml
@@ -7299,27 +7299,6 @@ </summary> </histogram> -<histogram name="KeyboardAccessory.AccessorySheetToggleClicked" - enum="AccessoryToggleType" expires_after="M88"> - <owner>ioanap@chromium.org</owner> - <owner>fhorschig@chromium.org</owner> - <summary> - Android only. Records how often the user clicks on a certain toggle when - opening an accessory sheet together with the state the toggle was in before - clicking. - </summary> -</histogram> - -<histogram name="KeyboardAccessory.AccessorySheetToggleImpression" - enum="AccessoryToggleType" expires_after="M88"> - <owner>ioanap@chromium.org</owner> - <owner>fhorschig@chromium.org</owner> - <summary> - Android only. Records how often the user sees a certain toggle when opening - an accessory sheet together with the state the toggle was in. - </summary> -</histogram> - <histogram name="KeyboardAccessory.AccessorySheetTriggered" enum="AccessorySheetTrigger" expires_after="2021-03-21"> <owner>fhorschig@chromium.org</owner> @@ -7330,8 +7309,29 @@ </summary> </histogram> +<histogram name="KeyboardAccessory.AccessoryToggleClicked" + enum="AccessoryToggleType" expires_after="M90"> + <owner>ioanap@chromium.org</owner> + <owner>fhorschig@chromium.org</owner> + <summary> + Android only. Records how often the user clicks on a certain toggle when + opening an accessory sheet together with the state the toggle was in before + clicking. + </summary> +</histogram> + +<histogram name="KeyboardAccessory.AccessoryToggleImpression" + enum="AccessoryToggleType" expires_after="M90"> + <owner>ioanap@chromium.org</owner> + <owner>fhorschig@chromium.org</owner> + <summary> + Android only. Records how often the user sees a certain toggle when opening + an accessory sheet together with the state the toggle was in. + </summary> +</histogram> + <histogram name="KeyboardAccessory.DisabledSavingAccessoryImpressions" - enum="BooleanShown" expires_after="M88"> + enum="BooleanShown" expires_after="M90"> <owner>ioanap@chromium.org</owner> <owner>fhorschig@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/password/histograms.xml b/tools/metrics/histograms/histograms_xml/password/histograms.xml index 22f58e0..01a2605 100644 --- a/tools/metrics/histograms/histograms_xml/password/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/password/histograms.xml
@@ -538,7 +538,7 @@ </histogram> <histogram name="PasswordManager.Android.PasswordCredentialEntry" - enum="PasswordManagerAndroidPasswordEntryActions" expires_after="M88"> + enum="PasswordManagerAndroidPasswordEntryActions" expires_after="M90"> <owner>fhorschig@chromium.org</owner> <owner>ioanap@chromium.org</owner> <summary> @@ -548,7 +548,7 @@ </histogram> <histogram name="PasswordManager.Android.PasswordCredentialEntry.Password" - enum="PasswordManagerAndroidPasswordActions" expires_after="M88"> + enum="PasswordManagerAndroidPasswordActions" expires_after="M90"> <owner>fhorschig@chromium.org</owner> <owner>ioanap@chromium.org</owner> <summary> @@ -558,7 +558,7 @@ </histogram> <histogram name="PasswordManager.Android.PasswordCredentialEntry.Username" - enum="PasswordManagerAndroidUsernameActions" expires_after="M88"> + enum="PasswordManagerAndroidUsernameActions" expires_after="M90"> <owner>fhorschig@chromium.org</owner> <owner>ioanap@chromium.org</owner> <summary> @@ -568,7 +568,7 @@ </histogram> <histogram name="PasswordManager.Android.PasswordCredentialEntry.Website" - enum="PasswordManagerAndroidWebsiteActions" expires_after="M88"> + enum="PasswordManagerAndroidWebsiteActions" expires_after="M90"> <owner>fhorschig@chromium.org</owner> <owner>ioanap@chromium.org</owner> <summary> @@ -578,7 +578,7 @@ </histogram> <histogram name="PasswordManager.Android.PasswordExceptionEntry" - enum="PasswordManagerAndroidPasswordEntryActions" expires_after="M88"> + enum="PasswordManagerAndroidPasswordEntryActions" expires_after="M90"> <owner>fhorschig@chromium.org</owner> <owner>ioanap@chromium.org</owner> <summary> @@ -588,7 +588,7 @@ </histogram> <histogram name="PasswordManager.Android.PasswordExceptionEntry.Website" - enum="PasswordManagerAndroidWebsiteActions" expires_after="M88"> + enum="PasswordManagerAndroidWebsiteActions" expires_after="M90"> <owner>fhorschig@chromium.org</owner> <owner>ioanap@chromium.org</owner> <summary> @@ -748,7 +748,7 @@ </histogram> <histogram name="PasswordManager.BulkCheck.PasswordCheckReferrerAndroid" - enum="PasswordCheckReferrerAndroid" expires_after="M88"> + enum="PasswordCheckReferrerAndroid" expires_after="M90"> <owner>ioanap@chromium.org</owner> <owner>fhorschig@chromium.org</owner> <summary> @@ -1914,7 +1914,7 @@ </histogram> <histogram name="PasswordManager.SaveUIDismissalReasonAfterUnblacklisting" - enum="PasswordManagerUIDismissalReason" expires_after="M88"> + enum="PasswordManagerUIDismissalReason" expires_after="M90"> <owner>ioanap@chromium.org</owner> <owner>vasilii@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/renderer/histograms.xml b/tools/metrics/histograms/histograms_xml/renderer/histograms.xml index dbd73ce..31afa81 100644 --- a/tools/metrics/histograms/histograms_xml/renderer/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/renderer/histograms.xml
@@ -33,6 +33,27 @@ </summary> </histogram> +<histogram + name="Renderer.DelegatedInkTrail.LatencyImprovement.{Renderer}.{Prediction}" + units="ms" expires_after="2021-01-01"> + <owner>dlibby@chromium.org</owner> + <owner>mabian@microsoft.com</owner> + <summary> + The latency improvement provided by the delegated ink trail API, both with + and without prediction, in milliseconds. This latency improvement is the + difference between the timestamp of the pointerevent provided to the API, + and the final point of the trail that is drawn. Points are forwarded from + the browser to viz when this API is being used, so viz will have points + ahead of what the app provided the API, and they are used to draw the trail. + </summary> + <token key="Renderer"> + <variant name="Skia"/> + </token> + <token key="Prediction"> + <variant name="WithoutPrediction"/> + </token> +</histogram> + <histogram name="Renderer.Hung.Duration" units="ms" expires_after="M85"> <obsolete> Expired in M85, removed in M88.
diff --git a/tools/metrics/histograms/histograms_xml/service/histograms.xml b/tools/metrics/histograms/histograms_xml/service/histograms.xml index bf97b12b7..da2f6d0 100644 --- a/tools/metrics/histograms/histograms_xml/service/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/service/histograms.xml
@@ -369,15 +369,6 @@ </summary> </histogram> -<histogram name="ServiceWorker.FetchRespondWithDataPipeCreation.Time" - units="ms" expires_after="M85"> - <owner>wanderview@chromium.org</owner> - <summary> - Measures how long the service worker thread is blocked creating a - mojo::DataPipe during FetchEvent.respondWith() processing. - </summary> -</histogram> - <histogram name="ServiceWorker.GetAllOriginsInfoTime" units="ms" expires_after="2021-01-24"> <owner>bashi@chromium.org</owner> @@ -1103,19 +1094,6 @@ </summary> </histogram> -<histogram name="ServiceWorker.SubresourceNotifyStartLoadingResponseBodyDelay" - units="ms" expires_after="M85"> - <owner>wanderview@chromium.org</owner> - <summary> - The time between when the ServiceWorkerSubresourceLoader receives a Response - and when it notifies the loader's client that the body has started loading. - This is different from SubresourceStartBlobReadingDelay in that notifying - the client about the Response may take place some time later than when the - blob body reading begins. This will be triggered for every successful - subresource load handled by a ServiceWorker with servification enabled. - </summary> -</histogram> - <histogram name="ServiceWorker.WorkerForMessageFound" enum="Boolean" expires_after="M85"> <owner>falken@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/settings/histograms.xml b/tools/metrics/histograms/histograms_xml/settings/histograms.xml index 16df0e2..f7b360f 100644 --- a/tools/metrics/histograms/histograms_xml/settings/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/settings/histograms.xml
@@ -162,7 +162,10 @@ enum="SafetyCheckChromeCleanerStatus" expires_after="M90"> <owner>rainhard@chromium.org</owner> <owner>msramek@chromium.org</owner> - <summary>Resulting state of the safety check Chrome cleaner check.</summary> + <summary> + Resulting state of the safety check Chrome cleaner check. Value 4-9 got + added with M88. + </summary> </histogram> <histogram name="Settings.SafetyCheck.ExtensionsResult" @@ -179,7 +182,8 @@ <owner>anaudrey@chromium.org</owner> <summary> Which user actions were taken in safety check. Recorded every time a user - does an interaction in safety check. Value 5 and 6 got added with M86. + does an interaction in safety check. Value 5 and 6 got added with M86, 7-9 + with M87, and 10 with M88. </summary> </histogram>
diff --git a/ui/accessibility/accessibility_features.cc b/ui/accessibility/accessibility_features.cc index 403fc18..acc79ed 100644 --- a/ui/accessibility/accessibility_features.cc +++ b/ui/accessibility/accessibility_features.cc
@@ -28,6 +28,18 @@ ::features::kEnableAccessibilityExposeHTMLElement); } +// Enable exposing ignored nodes from Blink to the browser process AXTree. +// This will allow us to simplify logic by eliminating the distiction between +// "ignored and included in the tree" from "ignored and not included in the +// tree". +const base::Feature kEnableAccessibilityExposeIgnoredNodes{ + "AccessibilityExposeIgnoredNodes", base::FEATURE_DISABLED_BY_DEFAULT}; + +bool IsAccessibilityExposeIgnoredNodesEnabled() { + return base::FeatureList::IsEnabled( + ::features::kEnableAccessibilityExposeIgnoredNodes); +} + // Enable language detection to determine language used in page text, exposed // on the browser process AXTree. const base::Feature kEnableAccessibilityLanguageDetection{
diff --git a/ui/accessibility/accessibility_features.h b/ui/accessibility/accessibility_features.h index 167fd29..39a637f 100644 --- a/ui/accessibility/accessibility_features.h +++ b/ui/accessibility/accessibility_features.h
@@ -24,6 +24,13 @@ // browser process AXTree (as an ignored node). AX_BASE_EXPORT bool IsAccessibilityExposeHTMLElementEnabled(); +AX_BASE_EXPORT extern const base::Feature + kEnableAccessibilityExposeIgnoredNodes; + +// Returns true if all ignored nodes are exposed by Blink in the +// accessibility tree. +AX_BASE_EXPORT bool IsAccessibilityExposeIgnoredNodesEnabled(); + AX_BASE_EXPORT extern const base::Feature kEnableAccessibilityLanguageDetection; // Return true if language detection should be used to determine the language
diff --git a/ui/base/cursor/BUILD.gn b/ui/base/cursor/BUILD.gn index 14c64f03..f4e3f83c 100644 --- a/ui/base/cursor/BUILD.gn +++ b/ui/base/cursor/BUILD.gn
@@ -55,6 +55,8 @@ "cursor_util.h", "cursors_aura.cc", "cursors_aura.h", + "image_cursors.cc", + "image_cursors.h", ] defines = [ "IS_UI_BASE_CURSOR_IMPL" ] public_deps = [
diff --git a/ui/base/cursor/cursor_factory.h b/ui/base/cursor/cursor_factory.h index 3eef1dd..f038a42 100644 --- a/ui/base/cursor/cursor_factory.h +++ b/ui/base/cursor/cursor_factory.h
@@ -46,7 +46,6 @@ // cursors are referenced counted and have an initial refcount of 1. // Therefore, each CreateAnimatedCursor call must be matched with a call to // UnrefImageCursor. - // |frame_delay_ms| is the delay between frames in millisecond. virtual PlatformCursor CreateAnimatedCursor( const std::vector<SkBitmap>& bitmaps, const gfx::Point& hotspot,
diff --git a/ui/base/cursor/cursor_loader.h b/ui/base/cursor/cursor_loader.h index b8e55ef3..2553c54 100644 --- a/ui/base/cursor/cursor_loader.h +++ b/ui/base/cursor/cursor_loader.h
@@ -5,70 +5,71 @@ #ifndef UI_BASE_CURSOR_CURSOR_LOADER_H_ #define UI_BASE_CURSOR_CURSOR_LOADER_H_ -#include <memory> - #include "base/component_export.h" -#include "ui/base/cursor/cursor_size.h" +#include "base/macros.h" #include "ui/base/cursor/mojom/cursor_type.mojom-forward.h" #include "ui/display/display.h" #include "ui/gfx/native_widget_types.h" +namespace gfx { +class Point; +} + namespace ui { class COMPONENT_EXPORT(UI_BASE_CURSOR) CursorLoader { public: - CursorLoader() = default; - CursorLoader(const CursorLoader&) = delete; - CursorLoader& operator=(const CursorLoader&) = delete; - virtual ~CursorLoader() = default; + CursorLoader() : scale_(1.f), rotation_(display::Display::ROTATE_0) {} + virtual ~CursorLoader() {} - // Returns the rotation and scale of the currently loaded cursor. display::Display::Rotation rotation() const { return rotation_; } - float scale() const { return scale_; } - // Sets the rotation and scale the cursors are loaded for. - // Returns true if the cursor image was reloaded. - bool SetDisplayData(display::Display::Rotation rotation, float scale) { - if (rotation_ == rotation && scale_ == scale) - return false; - + void set_rotation(display::Display::Rotation rotation) { rotation_ = rotation; + } + + // Returns the current scale of the mouse cursor icon. + float scale() const { + return scale_; + } + + // Sets the scale of the mouse cursor icon. + void set_scale(const float scale) { scale_ = scale; - UnloadAll(); - return true; } - // Returns the size of the currently loaded cursor. - CursorSize size() { return size_; } + // Creates a cursor from an image resource and puts it in the cursor map. + virtual void LoadImageCursor(mojom::CursorType id, + int resource_id, + const gfx::Point& hot) = 0; - // Sets the size of the mouse cursor icon. - void set_size(CursorSize size) { - if (size_ == size) - return; + // Creates an animated cursor from an image resource and puts it in the + // cursor map. The image is assumed to be a concatenation of animation frames + // from left to right. Also, each frame is assumed to be square + // (width == height). + // |frame_delay_ms| is the delay between frames in millisecond. + virtual void LoadAnimatedCursor(mojom::CursorType id, + int resource_id, + const gfx::Point& hot, + int frame_delay_ms) = 0; - size_ = size; - UnloadAll(); - } + // Unloads all the cursors. + virtual void UnloadAll() = 0; // Sets the platform cursor based on the native type of |cursor|. virtual void SetPlatformCursor(gfx::NativeCursor* cursor) = 0; // Creates a CursorLoader. - static std::unique_ptr<CursorLoader> Create(bool use_platform_cursors = true); - - protected: - // Resets the cursor cache. - virtual void UnloadAll() = 0; + static CursorLoader* Create(); private: // The current scale of the mouse cursor icon. - float scale_ = 1.0f; + float scale_; // The current rotation of the mouse cursor icon. - display::Display::Rotation rotation_ = display::Display::ROTATE_0; + display::Display::Rotation rotation_; - // The preferred size of the mouse cursor icon. - CursorSize size_ = CursorSize::kNormal; + DISALLOW_COPY_AND_ASSIGN(CursorLoader); }; } // namespace ui
diff --git a/ui/base/cursor/cursor_loader_ozone.cc b/ui/base/cursor/cursor_loader_ozone.cc index 40ea981..6df16b5f 100644 --- a/ui/base/cursor/cursor_loader_ozone.cc +++ b/ui/base/cursor/cursor_loader_ozone.cc
@@ -6,33 +6,47 @@ #include <vector> -#include "base/ranges/algorithm.h" #include "ui/base/cursor/cursor_factory.h" #include "ui/base/cursor/cursor_size.h" #include "ui/base/cursor/cursor_util.h" #include "ui/base/cursor/cursors_aura.h" #include "ui/base/cursor/mojom/cursor_type.mojom-shared.h" -#include "ui/gfx/geometry/point.h" namespace ui { -namespace { - -constexpr mojom::CursorType kAnimatedCursorTypes[] = { - mojom::CursorType::kWait, mojom::CursorType::kProgress}; - -const int kAnimatedCursorFrameDelayMs = 25; - -} // namespace - -CursorLoaderOzone::CursorLoaderOzone(bool use_platform_cursors) - : use_platform_cursors_(use_platform_cursors), - factory_(CursorFactory::GetInstance()) {} +CursorLoaderOzone::CursorLoaderOzone() { + factory_ = CursorFactory::GetInstance(); +} CursorLoaderOzone::~CursorLoaderOzone() { UnloadAll(); } +void CursorLoaderOzone::LoadImageCursor(mojom::CursorType id, + int resource_id, + const gfx::Point& hot) { + SkBitmap bitmap; + gfx::Point hotspot = hot; + + GetImageCursorBitmap(resource_id, scale(), rotation(), &hotspot, &bitmap); + + image_cursors_[id] = factory_->CreateImageCursor(bitmap, hotspot); +} + +void CursorLoaderOzone::LoadAnimatedCursor(mojom::CursorType id, + int resource_id, + const gfx::Point& hot, + int frame_delay_ms) { + std::vector<SkBitmap> bitmaps; + gfx::Point hotspot = hot; + + GetAnimatedCursorBitmaps( + resource_id, scale(), rotation(), &hotspot, &bitmaps); + + image_cursors_[id] = + factory_->CreateAnimatedCursor(bitmaps, hotspot, frame_delay_ms); +} + void CursorLoaderOzone::UnloadAll() { for (const auto& image_cursor : image_cursors_) factory_->UnrefImageCursor(image_cursor.second); @@ -49,61 +63,43 @@ cursor->SetPlatformCursor(CursorFromType(cursor->type())); } -void CursorLoaderOzone::LoadImageCursor(mojom::CursorType type, - int resource_id, - const gfx::Point& hot) { - gfx::Point hotspot = hot; - if (base::ranges::count(kAnimatedCursorTypes, type) == 0) { - SkBitmap bitmap; - GetImageCursorBitmap(resource_id, scale(), rotation(), &hotspot, &bitmap); - image_cursors_[type] = factory_->CreateImageCursor(bitmap, hotspot); - } else { - std::vector<SkBitmap> bitmaps; - GetAnimatedCursorBitmaps(resource_id, scale(), rotation(), &hotspot, - &bitmaps); - image_cursors_[type] = factory_->CreateAnimatedCursor( - bitmaps, hotspot, kAnimatedCursorFrameDelayMs); - } -} - PlatformCursor CursorLoaderOzone::CursorFromType(mojom::CursorType type) { // An image cursor is loaded for this type. if (image_cursors_.count(type)) return image_cursors_[type]; // Check if there's a default platform cursor available. - if (use_platform_cursors_) { - base::Optional<PlatformCursor> default_cursor = - factory_->GetDefaultCursor(type); - if (default_cursor) - return *default_cursor; - } + base::Optional<PlatformCursor> default_cursor = + factory_->GetDefaultCursor(type); + if (default_cursor) + return *default_cursor; // Loads the default Aura cursor bitmap for the cursor type. Falls back on // pointer cursor if this fails. - PlatformCursor platform = LoadCursorFromAsset(type); + PlatformCursor platform = CreateFallbackCursor(type); if (!platform && type != mojom::CursorType::kPointer) { platform = CursorFromType(mojom::CursorType::kPointer); factory_->RefImageCursor(platform); image_cursors_[type] = platform; } - DCHECK(platform) << "Failed to load a bitmap for the pointer cursor."; + DCHECK(platform) << "Failed to load a fallback bitmap for cursor " << type; return platform; } // Gets default Aura cursor bitmap/hotspot and creates a PlatformCursor with it. -PlatformCursor CursorLoaderOzone::LoadCursorFromAsset(mojom::CursorType type) { +PlatformCursor CursorLoaderOzone::CreateFallbackCursor(mojom::CursorType type) { int resource_id; - gfx::Point hotspot; - if (GetCursorDataFor(size(), type, scale(), &resource_id, &hotspot)) { - LoadImageCursor(type, resource_id, hotspot); + gfx::Point point; + if (ui::GetCursorDataFor(ui::CursorSize::kNormal, type, scale(), &resource_id, + &point)) { + LoadImageCursor(type, resource_id, point); return image_cursors_[type]; } return nullptr; } -std::unique_ptr<CursorLoader> CursorLoader::Create(bool use_platform_cursors) { - return std::make_unique<CursorLoaderOzone>(use_platform_cursors); +CursorLoader* CursorLoader::Create() { + return new CursorLoaderOzone(); } } // namespace ui
diff --git a/ui/base/cursor/cursor_loader_ozone.h b/ui/base/cursor/cursor_loader_ozone.h index 4da2230..ccd23a3 100644 --- a/ui/base/cursor/cursor_loader_ozone.h +++ b/ui/base/cursor/cursor_loader_ozone.h
@@ -13,35 +13,28 @@ #include "ui/base/cursor/cursor_loader.h" #include "ui/base/cursor/mojom/cursor_type.mojom-forward.h" -namespace gfx { -class Point; -} - namespace ui { class CursorFactory; class COMPONENT_EXPORT(UI_BASE_CURSOR) CursorLoaderOzone : public CursorLoader { public: - explicit CursorLoaderOzone(bool use_platform_cursors); + CursorLoaderOzone(); ~CursorLoaderOzone() override; // CursorLoader overrides: + void LoadImageCursor(mojom::CursorType id, + int resource_id, + const gfx::Point& hot) override; + void LoadAnimatedCursor(mojom::CursorType id, + int resource_id, + const gfx::Point& hot, + int frame_delay_ms) override; + void UnloadAll() override; void SetPlatformCursor(gfx::NativeCursor* cursor) override; private: - // CursorLoader overrides: - void UnloadAll() override; - - void LoadImageCursor(mojom::CursorType id, - int resource_id, - const gfx::Point& hot); PlatformCursor CursorFromType(mojom::CursorType type); - PlatformCursor LoadCursorFromAsset(mojom::CursorType type); - - // Whether to use cursors provided by the underlying platform (e.g. X11 - // cursors). If false or in the case of a failure, Chromium assets will be - // used instead. - const bool use_platform_cursors_; + PlatformCursor CreateFallbackCursor(mojom::CursorType type); // Pointers are owned by ResourceBundle and must not be freed here. std::map<mojom::CursorType, PlatformCursor> image_cursors_;
diff --git a/ui/base/cursor/cursor_loader_win.cc b/ui/base/cursor/cursor_loader_win.cc index f960b8a..735568d 100644 --- a/ui/base/cursor/cursor_loader_win.cc +++ b/ui/base/cursor/cursor_loader_win.cc
@@ -122,8 +122,8 @@ } // namespace -std::unique_ptr<CursorLoader> CursorLoader::Create(bool use_platform_cursors) { - return std::make_unique<CursorLoaderWin>(); +CursorLoader* CursorLoader::Create() { + return new CursorLoaderWin; } CursorLoaderWin::CursorLoaderWin() { @@ -132,6 +132,19 @@ CursorLoaderWin::~CursorLoaderWin() { } +void CursorLoaderWin::LoadImageCursor(mojom::CursorType id, + int resource_id, + const gfx::Point& hot) { + // NOTIMPLEMENTED(); +} + +void CursorLoaderWin::LoadAnimatedCursor(mojom::CursorType id, + int resource_id, + const gfx::Point& hot, + int frame_delay_ms) { + // NOTIMPLEMENTED(); +} + void CursorLoaderWin::UnloadAll() { // NOTIMPLEMENTED(); }
diff --git a/ui/base/cursor/cursor_loader_win.h b/ui/base/cursor/cursor_loader_win.h index d534e24..bf3ec63 100644 --- a/ui/base/cursor/cursor_loader_win.h +++ b/ui/base/cursor/cursor_loader_win.h
@@ -18,6 +18,13 @@ ~CursorLoaderWin() override; // Overridden from CursorLoader: + void LoadImageCursor(mojom::CursorType id, + int resource_id, + const gfx::Point& hot) override; + void LoadAnimatedCursor(mojom::CursorType id, + int resource_id, + const gfx::Point& hot, + int frame_delay_ms) override; void UnloadAll() override; void SetPlatformCursor(gfx::NativeCursor* cursor) override;
diff --git a/ui/base/cursor/cursor_util.cc b/ui/base/cursor/cursor_util.cc index ee513696..a19a4dd 100644 --- a/ui/base/cursor/cursor_util.cc +++ b/ui/base/cursor/cursor_util.cc
@@ -133,9 +133,6 @@ ResourceBundle::GetSharedInstance().GetImageSkiaNamed(resource_id); const gfx::ImageSkiaRep& image_rep = image->GetRepresentation(scale); SkBitmap bitmap = image_rep.GetBitmap(); - - // The image is assumed to be a concatenation of animation frames from left to - // right. Also, each frame is assumed to be square (width == height). int frame_width = bitmap.height(); int frame_height = frame_width; int total_width = bitmap.width();
diff --git a/ui/base/cursor/cursors_aura.cc b/ui/base/cursor/cursors_aura.cc index c527ac4d..710fb8d 100644 --- a/ui/base/cursor/cursors_aura.cc +++ b/ui/base/cursor/cursors_aura.cc
@@ -42,6 +42,8 @@ const CursorSize id; const CursorData* cursors; const int length; + const CursorData* animated_cursors; + const int animated_length; }; const CursorData kNormalCursors[] = { @@ -125,8 +127,6 @@ {24, 23}}, {mojom::CursorType::kGrab, IDR_AURA_CURSOR_GRAB, {8, 5}, {16, 10}}, {mojom::CursorType::kGrabbing, IDR_AURA_CURSOR_GRABBING, {9, 9}, {18, 18}}, - {mojom::CursorType::kWait, IDR_AURA_CURSOR_THROBBER, {7, 7}, {14, 14}}, - {mojom::CursorType::kProgress, IDR_AURA_CURSOR_THROBBER, {7, 7}, {14, 14}}, }; const CursorData kLargeCursors[] = { @@ -233,12 +233,20 @@ IDR_AURA_CURSOR_BIG_GRABBING, {20, 12}, {40, 24}}, - // TODO(https://crbug.com/336867): create IDR_AURA_CURSOR_BIG_THROBBER. +}; + +const CursorData kAnimatedCursors[] = { + {mojom::CursorType::kWait, IDR_AURA_CURSOR_THROBBER, {7, 7}, {14, 14}}, + {mojom::CursorType::kProgress, IDR_AURA_CURSOR_THROBBER, {7, 7}, {14, 14}}, }; const CursorSizeData kCursorSizes[] = { - {CursorSize::kNormal, kNormalCursors, base::size(kNormalCursors)}, - {CursorSize::kLarge, kLargeCursors, base::size(kLargeCursors)}, + {CursorSize::kNormal, kNormalCursors, base::size(kNormalCursors), + kAnimatedCursors, base::size(kAnimatedCursors)}, + {CursorSize::kLarge, kLargeCursors, base::size(kLargeCursors), + // TODO(yoshiki): Replace animated cursors with big assets. + // crbug.com/247254 + kAnimatedCursors, base::size(kAnimatedCursors)}, }; const CursorSizeData* GetCursorSizeByType(CursorSize cursor_size) { @@ -294,6 +302,25 @@ resource_id, point); } +bool GetAnimatedCursorDataFor(CursorSize cursor_size, + mojom::CursorType id, + float scale_factor, + int* resource_id, + gfx::Point* point) { + const CursorSizeData* cursor_set = GetCursorSizeByType(cursor_size); + if (cursor_set && + SearchTable(cursor_set->animated_cursors, cursor_set->animated_length, id, + scale_factor, resource_id, point)) { + return true; + } + + // Falls back to the default cursor set. + cursor_set = GetCursorSizeByType(ui::CursorSize::kNormal); + DCHECK(cursor_set); + return SearchTable(cursor_set->animated_cursors, cursor_set->animated_length, + id, scale_factor, resource_id, point); +} + SkBitmap GetDefaultBitmap(const Cursor& cursor) { #if defined(OS_WIN) Cursor cursor_copy = cursor;
diff --git a/ui/base/cursor/cursors_aura.h b/ui/base/cursor/cursors_aura.h index 69e514e..cc82d97 100644 --- a/ui/base/cursor/cursors_aura.h +++ b/ui/base/cursor/cursors_aura.h
@@ -18,6 +18,8 @@ class Cursor; enum class CursorSize; +const int kAnimatedCursorFrameDelayMs = 25; + // Returns data about |id|, where id is a cursor constant like // ui::mojom::CursorType::kHelp. The IDR will be placed in |resource_id| and // the hotspots for the different DPIs will be placed in |hot_1x| and @@ -29,6 +31,14 @@ int* resource_id, gfx::Point* point); +// Like above, but for animated cursors. +COMPONENT_EXPORT(UI_BASE_CURSOR) +bool GetAnimatedCursorDataFor(CursorSize cursor_size, + mojom::CursorType id, + float scale_factor, + int* resource_id, + gfx::Point* point); + SkBitmap GetDefaultBitmap(const Cursor& cursor); gfx::Point GetDefaultHotspot(const Cursor& cursor);
diff --git a/ui/base/cursor/image_cursors.cc b/ui/base/cursor/image_cursors.cc new file mode 100644 index 0000000..42fd3249 --- /dev/null +++ b/ui/base/cursor/image_cursors.cc
@@ -0,0 +1,120 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/base/cursor/image_cursors.h" + +#include "base/check.h" +#include "ui/base/cursor/cursor_loader.h" +#include "ui/base/cursor/cursors_aura.h" +#include "ui/base/cursor/mojom/cursor_type.mojom-shared.h" +#include "ui/gfx/geometry/point.h" + +namespace ui { + +namespace { + +constexpr mojom::CursorType kImageCursorIds[] = { + mojom::CursorType::kNull, + mojom::CursorType::kPointer, + mojom::CursorType::kNoDrop, + mojom::CursorType::kNotAllowed, + mojom::CursorType::kCopy, + mojom::CursorType::kHand, + mojom::CursorType::kMove, + mojom::CursorType::kNorthEastResize, + mojom::CursorType::kSouthWestResize, + mojom::CursorType::kSouthEastResize, + mojom::CursorType::kNorthWestResize, + mojom::CursorType::kNorthResize, + mojom::CursorType::kSouthResize, + mojom::CursorType::kEastResize, + mojom::CursorType::kWestResize, + mojom::CursorType::kIBeam, + mojom::CursorType::kAlias, + mojom::CursorType::kCell, + mojom::CursorType::kContextMenu, + mojom::CursorType::kCross, + mojom::CursorType::kHelp, + mojom::CursorType::kVerticalText, + mojom::CursorType::kZoomIn, + mojom::CursorType::kZoomOut, + mojom::CursorType::kRowResize, + mojom::CursorType::kColumnResize, + mojom::CursorType::kEastWestResize, + mojom::CursorType::kNorthSouthResize, + mojom::CursorType::kNorthEastSouthWestResize, + mojom::CursorType::kNorthWestSouthEastResize, + mojom::CursorType::kGrab, + mojom::CursorType::kGrabbing, +}; + +constexpr mojom::CursorType kAnimatedCursorIds[] = { + mojom::CursorType::kWait, mojom::CursorType::kProgress}; + +} // namespace + +ImageCursors::ImageCursors() + : cursor_loader_(CursorLoader::Create()), + cursor_size_(CursorSize::kNormal) {} + +ImageCursors::~ImageCursors() = default; + +float ImageCursors::GetScale() const { + return cursor_loader_->scale(); +} + +display::Display::Rotation ImageCursors::GetRotation() const { + return cursor_loader_->rotation(); +} + +bool ImageCursors::SetDisplay(const display::Display& display, + float scale_factor) { + if (cursor_loader_->rotation() == display.panel_rotation() && + cursor_loader_->scale() == scale_factor) + return false; + + cursor_loader_->set_rotation(display.panel_rotation()); + cursor_loader_->set_scale(scale_factor); + ReloadCursors(); + return true; +} + +void ImageCursors::ReloadCursors() { + float device_scale_factor = cursor_loader_->scale(); + + cursor_loader_->UnloadAll(); + + for (auto cursor_id : kImageCursorIds) { + int resource_id = -1; + gfx::Point hot_point; + bool success = GetCursorDataFor( + cursor_size_, cursor_id, device_scale_factor, &resource_id, &hot_point); + DCHECK(success); + cursor_loader_->LoadImageCursor(cursor_id, resource_id, hot_point); + } + for (auto cursor_id : kAnimatedCursorIds) { + int resource_id = -1; + gfx::Point hot_point; + bool success = GetAnimatedCursorDataFor( + cursor_size_, cursor_id, device_scale_factor, &resource_id, &hot_point); + DCHECK(success); + cursor_loader_->LoadAnimatedCursor(cursor_id, resource_id, hot_point, + kAnimatedCursorFrameDelayMs); + } +} + +void ImageCursors::SetCursorSize(CursorSize cursor_size) { + if (cursor_size_ == cursor_size) + return; + + cursor_size_ = cursor_size; + + ReloadCursors(); +} + +void ImageCursors::SetPlatformCursor(gfx::NativeCursor* cursor) { + cursor_loader_->SetPlatformCursor(cursor); +} + +} // namespace ui
diff --git a/ui/base/cursor/image_cursors.h b/ui/base/cursor/image_cursors.h new file mode 100644 index 0000000..b5b5ec2 --- /dev/null +++ b/ui/base/cursor/image_cursors.h
@@ -0,0 +1,52 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_BASE_CURSOR_IMAGE_CURSORS_H_ +#define UI_BASE_CURSOR_IMAGE_CURSORS_H_ + +#include <memory> + +#include "base/component_export.h" +#include "ui/base/cursor/cursor_size.h" +#include "ui/display/display.h" +#include "ui/gfx/native_widget_types.h" + +namespace ui { + +class CursorLoader; + +// A utility class that provides cursors for NativeCursors for which we have +// image resources. +class COMPONENT_EXPORT(UI_BASE_CURSOR) ImageCursors { + public: + ImageCursors(); + ImageCursors(const ImageCursors&) = delete; + ImageCursors& operator=(const ImageCursors&) = delete; + ~ImageCursors(); + + // Returns the scale and rotation of the currently loaded cursor. + float GetScale() const; + display::Display::Rotation GetRotation() const; + + // Sets the display the cursors are loaded for. |scale_factor| determines the + // size of the image to load. Returns true if the cursor image is reloaded. + bool SetDisplay(const display::Display& display, float scale_factor); + + // Sets the size of the mouse cursor icon. + void SetCursorSize(CursorSize cursor_size); + + // Sets the platform cursor based on the native type of |cursor|. + void SetPlatformCursor(gfx::NativeCursor* cursor); + + private: + // Reloads the all loaded cursors in the cursor loader. + void ReloadCursors(); + + std::unique_ptr<CursorLoader> cursor_loader_; + CursorSize cursor_size_; +}; + +} // namespace ui + +#endif // UI_BASE_CURSOR_IMAGE_CURSORS_H_
diff --git a/ui/chromeos/translations/ui_chromeos_strings_as.xtb b/ui/chromeos/translations/ui_chromeos_strings_as.xtb index 2dc6723..f8b5e00d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_as.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_as.xtb
@@ -60,6 +60,7 @@ <translation id="1538729222189715449">Linux ফাইল খুলি থকা হৈছে...</translation> <translation id="1547964879613821194">কানাডিয়ান ইংৰাজী</translation> <translation id="1556189134700913550">সকলোতে প্ৰয়োগ কৰক</translation> +<translation id="1561842594491319104">Chrome ডিভাইচ</translation> <translation id="1572585716423026576">ৱালপেপাৰ হিচাপে ছেট কৰক</translation> <translation id="158809615184981282">ফা’ৰছ কীব’র্ড</translation> <translation id="1589128298353575783"><ph name="NUMBER_OF_PB" /> পি.বি.</translation> @@ -189,6 +190,7 @@ <translation id="3064388234319122767">লিপ্যন্তৰণ (zdravo → здраво)</translation> <translation id="3067790092342515856">Windows ফাইলসমূহ</translation> <translation id="3078461028045006476"><ph name="EXTENSION_NAME" />ৰ জৰিয়তে শ্বেয়াৰ কৰক</translation> +<translation id="3083975830683400843">Chromebits</translation> <translation id="3116361045094675131">UK কীব’ৰ্ড</translation> <translation id="3126026824346185272">Ctrl</translation> <translation id="3144126448740580210">কৰা হ’ল</translation> @@ -339,6 +341,7 @@ <translation id="4804827417948292437">এভ‘কাড‘</translation> <translation id="4823651846660089135">ডিভাইচটো কেৱল পঢ়িব পৰা</translation> <translation id="4839847978919684242"><ph name="SELCTED_FILES_COUNT" />টা বস্তু বাছনি কৰা হ’ল</translation> +<translation id="4843566743023903107">Chromebases</translation> <translation id="4849981557599196363">জাৰ্মান (বেলজিয়াম)</translation> <translation id="4850886885716139402">চাওক</translation> <translation id="485316830061041779">জাৰ্মান</translation> @@ -466,6 +469,7 @@ <translation id="5932901536148835538">Chromebit</translation> <translation id="5949281959820712067">আপোনাৰ Google Driveত ফাইল সংশোধন কৰিবলৈ Linux এপক অনুমতি দিয়ক। আপোনাৰ অন্য ডিভাইচৰ সৈতে সলনি কার্য ছিংক কৰা হ'ব।</translation> <translation id="5955954492236143329"><ph name="NUMBER_OF_ITEMS" />টা বস্তু</translation> +<translation id="5957366693331451795">Chromeboxes</translation> <translation id="5982621672636444458">মিলোৱাৰ বিকল্পসমূহ</translation> <translation id="6005282720244019462">লেটিন আমেৰিকান কীব’র্ড</translation> <translation id="6007237601604674381">স্থানান্তৰ কৰিবপৰা নগ’ল। <ph name="ERROR_MESSAGE" /></translation> @@ -623,6 +627,7 @@ <ph name="MARKUP_4" />ডাউনল’ড ফ‘ল্ডাৰত থকা ফাইল মচক<ph name="MARKUP_5" /></translation> <translation id="7794058097940213561">ডিভাইচটো ফর্মেট কৰক</translation> <translation id="7799329977874311193">HTML নথি</translation> +<translation id="7801354353640549019">Chromebooks</translation> <translation id="7805768142964895445">স্থিতি</translation> <translation id="7821462174190887129"><ph name="FILE_COUNT" />টা ফাইল পোৱা গ’ল। <ph name="LINE_BREAK1" />
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bg.xtb b/ui/chromeos/translations/ui_chromeos_strings_bg.xtb index 3f558266..4eb3ec3 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_bg.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_bg.xtb
@@ -207,6 +207,7 @@ <translation id="3252266817569339921">френски</translation> <translation id="3254434849914415189">Избиране на приложението по подразбиране за файлове от тип <ph name="FILE_TYPE" />:</translation> <translation id="3264582393905923483">Контекст</translation> +<translation id="3272909651715601089">„<ph name="PATH" />“ не можа да се отвори</translation> <translation id="3280431534455935878">Подготвя се</translation> <translation id="3280987981688031357">Грамофонна плоча</translation> <translation id="3296763833017966289">грузински</translation> @@ -309,6 +310,7 @@ <translation id="4477219268485577442">Българска фонетична клавиатура</translation> <translation id="4479812471636796472">Американска (Дворак) клавиатура</translation> <translation id="4522570452068850558">Подробности</translation> +<translation id="4527800702232535228">Тази папка е споделена с Parallels Desktop</translation> <translation id="4552678318981539154">Купуване на още хранилище</translation> <translation id="4559767610552730302">Боке</translation> <translation id="4572815280350369984">Файл от тип <ph name="FILE_TYPE" /></translation> @@ -326,6 +328,7 @@ <translation id="4694604912444486114">Маймуна</translation> <translation id="4697043402264950621">Списъкът с файлове е сортиран във възходящ ред по <ph name="COLUMN_NAME" />.</translation> <translation id="4711094779914110278">турски</translation> +<translation id="4712283082407695269">„<ph name="PATH" />“ се отваря</translation> <translation id="4713544552769165154">Този файл е предназначен за компютри със софтуер Macintosh и не е съвместим с устройството ви с Chrome OS. Моля, потърсете в <ph name="BEGIN_LINK" />уеб магазина на Chrome<ph name="END_LINK" /> подходящо приложение със същата функционалност. <ph name="BEGIN_LINK_HELP" />Научете повече<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449">На <ph name="FILE_COUNT" /> снимки бяха създадени резервни копия</translation> <translation id="4725511304875193254">Корги</translation> @@ -525,6 +528,7 @@ <translation id="6558280019477628686">Възникна грешка. Някои елементи може да не са изтрити.</translation> <translation id="656398493051028875">„<ph name="FILENAME" />“ се изтрива...</translation> <translation id="6581162200855843583">Връзка към Google Диск</translation> +<translation id="6594855146910089723">Тази папка е споделена с Linux и Parallels Desktop</translation> <translation id="6607272825297743757">Информация за файла</translation> <translation id="6609332149380188670"><ph name="NUMBER_OF_ITEMS" /> папки са споделени с Parallels Desktop</translation> <translation id="6629841649550503054">На всичко бе създадено резервно копие в <ph name="BEGIN_LINK" />Google Диск<ph name="END_LINK" />!</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_da.xtb b/ui/chromeos/translations/ui_chromeos_strings_da.xtb index b1ff0d7..3d229e85 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_da.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_da.xtb
@@ -207,6 +207,7 @@ <translation id="3252266817569339921">Fransk</translation> <translation id="3254434849914415189">Vælg standardappen for <ph name="FILE_TYPE" />-filer:</translation> <translation id="3264582393905923483">Kontekst</translation> +<translation id="3272909651715601089">"<ph name="PATH" />" kunne ikke åbnes</translation> <translation id="3280431534455935878">Forbereder</translation> <translation id="3280987981688031357">Vinylplade</translation> <translation id="3296763833017966289">Georgisk</translation> @@ -309,6 +310,7 @@ <translation id="4477219268485577442">Bulgarsk (fonetisk)</translation> <translation id="4479812471636796472">Amerikansk (Dvorak) tastatur</translation> <translation id="4522570452068850558">Detaljer</translation> +<translation id="4527800702232535228">Denne mappe er delt med Parallels Desktop</translation> <translation id="4552678318981539154">Køb mere lagerplads</translation> <translation id="4559767610552730302">Bokeh</translation> <translation id="4572815280350369984"><ph name="FILE_TYPE" />-fil</translation> @@ -326,6 +328,7 @@ <translation id="4694604912444486114">Abe</translation> <translation id="4697043402264950621">Listen med filer er sorteret efter <ph name="COLUMN_NAME" /> i stigende rækkefølge.</translation> <translation id="4711094779914110278">Tyrkisk</translation> +<translation id="4712283082407695269">Åbner "<ph name="PATH" />"</translation> <translation id="4713544552769165154">Denne fil er designet til en computer, der bruger Macintosh-software. Den er ikke kompatibel med din enhed, som kører Chrome OS. Find en tilsvarende app i <ph name="BEGIN_LINK" />Chrome Webshop<ph name="END_LINK" /> i stedet.<ph name="BEGIN_LINK_HELP" />Få flere oplysninger<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449"><ph name="FILE_COUNT" /> billeder blev sikkerhedskopieret</translation> <translation id="4725511304875193254">Corgi</translation> @@ -525,6 +528,7 @@ <translation id="6558280019477628686">Der opstod en fejl. Nogle elementer blev muligvis ikke slettet.</translation> <translation id="656398493051028875">Slettter "<ph name="FILENAME" />"...</translation> <translation id="6581162200855843583">Link til Google Drev</translation> +<translation id="6594855146910089723">Denne mappe er delt med Linux og Parallels Desktop</translation> <translation id="6607272825297743757">Filoplysninger</translation> <translation id="6609332149380188670"><ph name="NUMBER_OF_ITEMS" /> mapper blev delt med Parallels Desktop</translation> <translation id="6629841649550503054">Alt er sikkerhedskopieret til <ph name="BEGIN_LINK" />Google Drev<ph name="END_LINK" />.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb index 6f70844..030d5421 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
@@ -60,6 +60,7 @@ <translation id="1538729222189715449">Abriendo archivos de Linux…</translation> <translation id="1547964879613821194">Inglés (Canadá)</translation> <translation id="1556189134700913550">Aplicar a todo</translation> +<translation id="1561842594491319104">Dispositivos Chrome</translation> <translation id="1572585716423026576">Establecer como fondo de pantalla</translation> <translation id="158809615184981282">Teclado feroés</translation> <translation id="1589128298353575783"><ph name="NUMBER_OF_PB" /> PB</translation> @@ -189,6 +190,7 @@ <translation id="3064388234319122767">Transliteración (zdravo → здраво)</translation> <translation id="3067790092342515856">Archivos de Windows</translation> <translation id="3078461028045006476">Compartir con <ph name="EXTENSION_NAME" /></translation> +<translation id="3083975830683400843">Las Chromebits</translation> <translation id="3116361045094675131">Teclado en inglés del Reino Unido</translation> <translation id="3126026824346185272">Ctrl</translation> <translation id="3144126448740580210">LISTO</translation> @@ -341,6 +343,7 @@ <translation id="4804827417948292437">Aguacate</translation> <translation id="4823651846660089135">El dispositivo es de solo lectura</translation> <translation id="4839847978919684242"><ph name="SELCTED_FILES_COUNT" /> elementos seleccionados</translation> +<translation id="4843566743023903107">Las Chromebases</translation> <translation id="4849981557599196363">Alemán (Bélgica)</translation> <translation id="4850886885716139402">Ver</translation> <translation id="485316830061041779">Alemán</translation> @@ -470,6 +473,7 @@ <translation id="5932901536148835538">Chromebit</translation> <translation id="5949281959820712067">Permite que las apps de Linux modifiquen archivos en tu cuenta de Google Drive. Los cambios se sincronizarán con tus otros dispositivos.</translation> <translation id="5955954492236143329"><ph name="NUMBER_OF_ITEMS" /> elementos</translation> +<translation id="5957366693331451795">Las Chromeboxes</translation> <translation id="5982621672636444458">Ordenar opciones</translation> <translation id="6005282720244019462">Teclado latinoamericano</translation> <translation id="6007237601604674381">Se produjo un error en al mover el archivo (<ph name="ERROR_MESSAGE" />).</translation> @@ -629,6 +633,7 @@ <ph name="MARKUP_4" />Elimina archivos de la carpeta de descargas.<ph name="MARKUP_5" /></translation> <translation id="7794058097940213561">Formato del dispositivo</translation> <translation id="7799329977874311193">Documento HTML</translation> +<translation id="7801354353640549019">Las Chromebooks</translation> <translation id="7805768142964895445">Estado</translation> <translation id="7821462174190887129">Se encontró un total de <ph name="FILE_COUNT" />. <ph name="LINE_BREAK1" />
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sk.xtb b/ui/chromeos/translations/ui_chromeos_strings_sk.xtb index 6576f64..92986d3 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sk.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sk.xtb
@@ -207,6 +207,7 @@ <translation id="3252266817569339921">Francúzština</translation> <translation id="3254434849914415189">Zvoľte pre súbory <ph name="FILE_TYPE" /> predvolenú aplikáciu:</translation> <translation id="3264582393905923483">Kontext</translation> +<translation id="3272909651715601089"><ph name="PATH" /> sa nepodarilo otvoriť</translation> <translation id="3280431534455935878">Prebieha príprava</translation> <translation id="3280987981688031357">Vinylová platňa</translation> <translation id="3296763833017966289">Gruzínčina</translation> @@ -309,6 +310,7 @@ <translation id="4477219268485577442">Bulharská fonetická klávesnica</translation> <translation id="4479812471636796472">americká klávesnica s rozložením klávesov Dvorak</translation> <translation id="4522570452068850558">Podrobnosti</translation> +<translation id="4527800702232535228">Tento priečinok je zdieľaný aplikáciou Parallels Desktop</translation> <translation id="4552678318981539154">Kúpiť väčší ukladací priestor</translation> <translation id="4559767610552730302">Rozostrenie</translation> <translation id="4572815280350369984">Súbor <ph name="FILE_TYPE" /></translation> @@ -326,6 +328,7 @@ <translation id="4694604912444486114">Opica</translation> <translation id="4697043402264950621">Zoznam súborov je usporiadaný podľa stĺpca <ph name="COLUMN_NAME" /> vo vzostupnom poradí.</translation> <translation id="4711094779914110278">Turečtina</translation> +<translation id="4712283082407695269">Otvára sa <ph name="PATH" /></translation> <translation id="4713544552769165154">Tento súbor je určený pre počítač so softvérom Macintosh. Nie je kompatibilný s vaším zariadením používajúcim OS Chrome. Vyhľadajte vhodnú náhradnú aplikáciu v <ph name="BEGIN_LINK" />Internetovom obchode Chrome<ph name="END_LINK" />.<ph name="BEGIN_LINK_HELP" />Ďalšie informácie<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449">Počet zálohovaných fotiek: <ph name="FILE_COUNT" /></translation> <translation id="4725511304875193254">Corgi</translation> @@ -525,6 +528,7 @@ <translation id="6558280019477628686">Vyskytla sa chyba. Niektoré položky sa nemuseli odstrániť.</translation> <translation id="656398493051028875">Prebieha odstraňovanie súboru <ph name="FILENAME" />...</translation> <translation id="6581162200855843583">Odkaz na službu Disk Google</translation> +<translation id="6594855146910089723">Tento priečinok je zdieľaný systémom Linux a aplikáciou Parallels Desktop</translation> <translation id="6607272825297743757">Informácie o súbore</translation> <translation id="6609332149380188670">Aplikáciou Parallels Desktop zdieľate tento počet priečinkov: <ph name="NUMBER_OF_ITEMS" /></translation> <translation id="6629841649550503054">Všetko bolo zálohované na <ph name="BEGIN_LINK" />Disk Google<ph name="END_LINK" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sw.xtb b/ui/chromeos/translations/ui_chromeos_strings_sw.xtb index 6f13b2b6..600c2ce 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sw.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sw.xtb
@@ -207,6 +207,7 @@ <translation id="3252266817569339921">Kifaransa</translation> <translation id="3254434849914415189">Chagua programu chaguomsingi ya faili <ph name="FILE_TYPE" />:</translation> <translation id="3264582393905923483">Muktadha</translation> +<translation id="3272909651715601089">Imeshindwa kufungua "<ph name="PATH" />"</translation> <translation id="3280431534455935878">Inaandaa</translation> <translation id="3280987981688031357">Santuri</translation> <translation id="3296763833017966289">Kijiojia</translation> @@ -309,6 +310,7 @@ <translation id="4477219268485577442">Fonetiki ya Kibulgaria</translation> <translation id="4479812471636796472">Kibodi ya Dvorak ya Marekani</translation> <translation id="4522570452068850558">Maelezo</translation> +<translation id="4527800702232535228">Umeshiriki folda hii na Parallels Desktop</translation> <translation id="4552678318981539154">Nunua hifadhi zaidi</translation> <translation id="4559767610552730302">Bokeh</translation> <translation id="4572815280350369984">Faili ya <ph name="FILE_TYPE" /></translation> @@ -326,6 +328,7 @@ <translation id="4694604912444486114">Tumbili</translation> <translation id="4697043402264950621">Orodha ya faili imepangwa kulingana na <ph name="COLUMN_NAME" /> katika mpangilio wa kupanda.</translation> <translation id="4711094779914110278">Kituruki</translation> +<translation id="4712283082407695269">Inafungua "<ph name="PATH" />"</translation> <translation id="4713544552769165154">Faili hii imeundwa kwa kompyuta inayotumia programu ya Macintosh. Hii haioani na kifaa chako kinachotumia Chrome OS. Tafadhali tafuta <ph name="BEGIN_LINK" />Duka la Chrome Wavutini<ph name="END_LINK" /> kwa programu nyingine inayofaa.<ph name="BEGIN_LINK_HELP" />Pata Maelezo zaidi<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449">Picha <ph name="FILE_COUNT" /> zimehifadhiwa nakala</translation> <translation id="4725511304875193254">Mbwa mlinzi</translation> @@ -525,6 +528,7 @@ <translation id="6558280019477628686">Hitilafu imetokea. Huenda baadhi ya vipengee havijafutwa.</translation> <translation id="656398493051028875">Inafuta "<ph name="FILENAME" />"...</translation> <translation id="6581162200855843583">Kiungo cha Hifadhi ya Google</translation> +<translation id="6594855146910089723">Umeshiriki folda hii na Linux na Parallels Desktop</translation> <translation id="6607272825297743757">Maelezo ya faili</translation> <translation id="6609332149380188670">Umeshiriki folda <ph name="NUMBER_OF_ITEMS" /> na Parallels Desktop</translation> <translation id="6629841649550503054">Zote zimehifadhiwa nakala kwenye <ph name="BEGIN_LINK" />Hifadhi ya Google!<ph name="END_LINK" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb index 1e0a7ab..abf8b42 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
@@ -207,6 +207,7 @@ <translation id="3252266817569339921">Fransuzcha</translation> <translation id="3254434849914415189"><ph name="FILE_TYPE" /> fayllari uchun standart ilovani tanlang:</translation> <translation id="3264582393905923483">Kontekst</translation> +<translation id="3272909651715601089">“<ph name="PATH" />” ochilmadi</translation> <translation id="3280431534455935878">Fayl tayyorlanmoqda</translation> <translation id="3280987981688031357">Plastinka</translation> <translation id="3296763833017966289">Gruzin tili</translation> @@ -309,6 +310,7 @@ <translation id="4477219268485577442">Bolgar fonetik</translation> <translation id="4479812471636796472">AQSH Dvorak klaviaturasi</translation> <translation id="4522570452068850558">Tafsilotlar</translation> +<translation id="4527800702232535228">Bu jild Parallels Desktopga ulashilgan</translation> <translation id="4552678318981539154">Ko‘proq joy sotib olish</translation> <translation id="4559767610552730302">Boke</translation> <translation id="4572815280350369984"><ph name="FILE_TYPE" />-fayl</translation> @@ -326,6 +328,7 @@ <translation id="4694604912444486114">Maymun</translation> <translation id="4697043402264950621"><ph name="COLUMN_NAME" /> ustunidagi fayllar roʻyxati oʻsishi boʻyicha tartiblangan.</translation> <translation id="4711094779914110278">Turk tili</translation> +<translation id="4712283082407695269">“<ph name="PATH" />” ochilmoqda</translation> <translation id="4713544552769165154">Ushbu fayl Mac platformasidagi kompyuterlar uchun ishlab chiqilgan va qurilmangizdagi Chrome OT‘da ishga tushmaydi. Uni ochishga mos ilova topish uchun <ph name="BEGIN_LINK" />Chrome internet do‘koniga<ph name="END_LINK" /> tashrif buyuring. <ph name="BEGIN_LINK_HELP" />Batafsil<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449"><ph name="FILE_COUNT" /> ta rasm saqlab qolindi</translation> <translation id="4725511304875193254">Korgi</translation> @@ -524,6 +527,7 @@ <translation id="6558280019477628686">Xatolik yuz berdi. Ba’zi elementlar o‘chirilmadi.</translation> <translation id="656398493051028875">“<ph name="FILENAME" />” fayli o‘chirilmoqda...</translation> <translation id="6581162200855843583">Google Disk havolasi</translation> +<translation id="6594855146910089723">Bu jild Linux va Parallels Desktopga ulashilgan</translation> <translation id="6607272825297743757">Fayl haqida</translation> <translation id="6609332149380188670"><ph name="NUMBER_OF_ITEMS" /> ta jild Parallels Desktopga ulashilgan</translation> <translation id="6629841649550503054">Hammasi <ph name="BEGIN_LINK" />Google Drive’ga<ph name="END_LINK" /> zaxiralandi!</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb index 6265ee06..4a5e117 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
@@ -60,6 +60,7 @@ <translation id="1538729222189715449">正在打开 Linux 文件…</translation> <translation id="1547964879613821194">加拿大英语</translation> <translation id="1556189134700913550">全部应用</translation> +<translation id="1561842594491319104">Chrome 设备</translation> <translation id="1572585716423026576">设为壁纸</translation> <translation id="158809615184981282">法罗语键盘</translation> <translation id="1589128298353575783"><ph name="NUMBER_OF_PB" /> PB</translation> @@ -189,6 +190,7 @@ <translation id="3064388234319122767">音译(zdravo → здраво)</translation> <translation id="3067790092342515856">Windows 文件</translation> <translation id="3078461028045006476">使用“<ph name="EXTENSION_NAME" />”分享</translation> +<translation id="3083975830683400843">Chromebit</translation> <translation id="3116361045094675131">英语(英国)键盘</translation> <translation id="3126026824346185272">Ctrl</translation> <translation id="3144126448740580210">完成</translation> @@ -341,6 +343,7 @@ <translation id="4804827417948292437">牛油果</translation> <translation id="4823651846660089135">设备目前处于只读模式</translation> <translation id="4839847978919684242">已经选择 <ph name="SELCTED_FILES_COUNT" /> 个文件或目录</translation> +<translation id="4843566743023903107">Chromebase</translation> <translation id="4849981557599196363">德语(比利时)</translation> <translation id="4850886885716139402">视图</translation> <translation id="485316830061041779">德语</translation> @@ -465,6 +468,7 @@ <translation id="5932901536148835538">Chromebit</translation> <translation id="5949281959820712067">授权 Linux 应用修改您 Google 云端硬盘中的文件。相关更改会同步到您的其他设备。</translation> <translation id="5955954492236143329"><ph name="NUMBER_OF_ITEMS" /> 项内容</translation> +<translation id="5957366693331451795">Chromebox</translation> <translation id="5982621672636444458">排序选项</translation> <translation id="6005282720244019462">拉丁美洲文键盘</translation> <translation id="6007237601604674381">移动失败。<ph name="ERROR_MESSAGE" /></translation> @@ -624,6 +628,7 @@ <ph name="MARKUP_4" />删除“下载内容”文件夹中的文件<ph name="MARKUP_5" /></translation> <translation id="7794058097940213561">格式化设备</translation> <translation id="7799329977874311193">HTML 文档</translation> +<translation id="7801354353640549019">Chromebook</translation> <translation id="7805768142964895445">状态</translation> <translation id="7821462174190887129">找到了 <ph name="FILE_COUNT" />。 <ph name="LINE_BREAK1" />
diff --git a/ui/gtk/BUILD.gn b/ui/gtk/BUILD.gn index 4c6b469..e1106392 100644 --- a/ui/gtk/BUILD.gn +++ b/ui/gtk/BUILD.gn
@@ -97,11 +97,6 @@ public_deps = [ ":gtk_ui_delegate" ] - if (use_x11 || ozone_platform_x11) { - # select_file_dialog_impl_kde.cc still refers to XID - deps += [ "//ui/gfx/x" ] - } - # TODO: This should be removed. if (use_ozone) { deps += [ "//ui/ozone" ]
diff --git a/ui/gtk/select_file_dialog_impl_kde.cc b/ui/gtk/select_file_dialog_impl_kde.cc index 5b5a139..30fd12b 100644 --- a/ui/gtk/select_file_dialog_impl_kde.cc +++ b/ui/gtk/select_file_dialog_impl_kde.cc
@@ -25,7 +25,6 @@ #include "base/version.h" #include "ui/aura/window_tree_host.h" #include "ui/base/l10n/l10n_util.h" -#include "ui/gfx/x/x11.h" #include "ui/gtk/select_file_dialog_impl.h" #include "ui/strings/grit/ui_strings.h"
diff --git a/ui/login/display_manager.js b/ui/login/display_manager.js index 9b0d5c7..bf9c10e 100644 --- a/ui/login/display_manager.js +++ b/ui/login/display_manager.js
@@ -102,7 +102,6 @@ SCREEN_ARC_TERMS_OF_SERVICE, SCREEN_CONFIRM_PASSWORD, SCREEN_UPDATE_REQUIRED, - SCREEN_FATAL_ERROR, SCREEN_SYNC_CONSENT, SCREEN_APP_DOWNLOADING, SCREEN_DISCOVER,
diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn index 904bff8..b8e1f99 100644 --- a/ui/views/BUILD.gn +++ b/ui/views/BUILD.gn
@@ -3,7 +3,6 @@ # found in the LICENSE file. import("//build/buildflag_header.gni") -import("//build/config/chromeos/ui_mode.gni") import("//build/config/features.gni") import("//build/config/ozone.gni") import("//build/config/ui.gni") @@ -762,8 +761,6 @@ "//ui/base/cursor", "//ui/base/cursor/mojom:cursor_type", ] - deps += [ "//build:chromeos_buildflags" ] - if (use_x11) { public_deps += [ "//ui/base/x", @@ -787,9 +784,6 @@ public += [ "widget/desktop_aura/desktop_screen_ozone.h" ] sources += [ "widget/desktop_aura/desktop_screen_ozone.cc" ] } - if (is_lacros) { - deps += [ "//ui/base:ui_data_pack" ] - } if (is_linux || is_chromeos) { public += [ "widget/desktop_aura/desktop_window_tree_host_linux.h" ] sources += [
diff --git a/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc b/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc index 5359b46..ab7213a3 100644 --- a/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc +++ b/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc
@@ -7,27 +7,15 @@ #include <utility> #include "base/trace_event/trace_event.h" -#include "build/chromeos_buildflags.h" #include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_tree_host.h" #include "ui/base/cursor/cursor_loader.h" #include "ui/base/cursor/mojom/cursor_type.mojom-shared.h" -#if BUILDFLAG(IS_LACROS) -#include "ui/base/layout.h" -#include "ui/base/resource/scale_factor.h" -#endif - namespace views { -DesktopNativeCursorManager::DesktopNativeCursorManager() { -#if BUILDFLAG(IS_LACROS) - const bool use_platform_cursors = false; -#else - const bool use_platform_cursors = true; -#endif - cursor_loader_ = ui::CursorLoader::Create(use_platform_cursors); -} +DesktopNativeCursorManager::DesktopNativeCursorManager() + : cursor_loader_(ui::CursorLoader::Create()) {} DesktopNativeCursorManager::~DesktopNativeCursorManager() = default; @@ -49,14 +37,9 @@ void DesktopNativeCursorManager::SetDisplay( const display::Display& display, wm::NativeCursorManagerDelegate* delegate) { - float cursor_scale = display.device_scale_factor(); -#if BUILDFLAG(IS_LACROS) - // Use the nearest resource scale factor, as Ash does, so that the cursor - // doesn't change its size when hovering a Lacros window. - cursor_scale = - ui::GetScaleForScaleFactor(ui::GetSupportedScaleFactor(cursor_scale)); -#endif - cursor_loader_->SetDisplayData(display.rotation(), cursor_scale); + cursor_loader_->UnloadAll(); + cursor_loader_->set_rotation(display.rotation()); + cursor_loader_->set_scale(display.device_scale_factor()); SetCursor(delegate->GetCursor(), delegate); }
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc index d2cc34b..3d70eb2 100644 --- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc +++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
@@ -523,6 +523,9 @@ if (!cursor_manager_) { cursor_manager_ = new wm::CursorManager( std::unique_ptr<wm::NativeCursorManager>(native_cursor_manager_)); + cursor_manager_->SetDisplay( + display::Screen::GetScreen()->GetDisplayNearestWindow( + host_->window())); } native_cursor_manager_->AddHost(host()); aura::client::SetCursorClient(host_->window(), cursor_manager_);
diff --git a/ui/webui/resources/cr_elements/cr_toolbar/BUILD.gn b/ui/webui/resources/cr_elements/cr_toolbar/BUILD.gn index 040f9a4..7d0f4a7 100644 --- a/ui/webui/resources/cr_elements/cr_toolbar/BUILD.gn +++ b/ui/webui/resources/cr_elements/cr_toolbar/BUILD.gn
@@ -38,8 +38,7 @@ js_file = "cr_toolbar.js" html_file = "cr_toolbar.html" html_type = "dom-module" - auto_imports = - [ "ui/webui/resources/html/polymer.html|afterNextRender,html,Polymer" ] + auto_imports = [ "ui/webui/resources/html/polymer.html|html,Polymer" ] } polymer_modulizer("cr_toolbar_search_field") {
diff --git a/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.html b/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.html index da7259f..98231ed 100644 --- a/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.html +++ b/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.html
@@ -104,72 +104,15 @@ flex: 1 1 0; text-align: end; } - - #menuPromo { - align-items: center; - background: #616161; - border-radius: 2px; - color: white; - display: flex; - font-size: 92.3%; - font-weight: 500; - opacity: 0; - padding-bottom: 6px; - padding-inline-end: 12px; - padding-inline-start: 8px; - padding-top: 6px; - position: absolute; - top: var(--cr-toolbar-height); - white-space: nowrap; - z-index: 2; - } - - #menuPromo::before { - background: inherit; - /* Up arrow. 105% in Y coordinates fixes glitch at 110/125% zoom. */ - clip-path: polygon(0 105%, 100% 105%, 50% 0); - content: ''; - display: block; - height: 6px; - left: 10px; - position: absolute; - top: -6px; - width: 12px; - } - - :host-context([dir=rtl]) #menuPromo::before { - left: auto; - right: 10px; - } - - #closePromo { - -webkit-appearance: none; - background: none; - border: none; - color: inherit; - font-size: 20px; /* Shouldn't change if default font-size changes. */ - line-height: 20px; - margin-inline-start: 12px; - padding: 0; - width: 20px; - } </style> <div id="leftContent"> <div id="leftSpacer"> - <!-- Note: showing #menuPromo relies on this dom-if being [restamp]. --> <template is="dom-if" if="[[showMenu]]" restamp> <cr-icon-button id="menuButton" class="no-overlap" iron-icon="cr20:menu" on-click="onMenuTap_" aria-label$="[[menuLabel]]" - title="[[titleIfNotShowMenuPromo_(menuLabel, showMenuPromo)]]"> + title="[[menuLabel]]"> </cr-icon-button> - <template is="dom-if" if="[[showMenuPromo]]"> - <div id="menuPromo" role="tooltip"> - [[menuPromo]] - <button id="closePromo" on-click="onClosePromoTap_" - aria-label$="[[closeMenuPromo]]">✕</button> - </paper-tooltip> - </template> </template> <h1>[[pageName]]</h1> </div>
diff --git a/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.js b/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.js index 23640a9..46af138 100644 --- a/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.js +++ b/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.js
@@ -18,10 +18,6 @@ // Tooltip to display on the menu button. menuLabel: String, - // Promotional toolstip string, shown in narrow mode if showMenuPromo is - // true. - menuPromo: String, - // Value is proxied through to cr-toolbar-search-field. When true, // the search field will show a processing spinner. spinnerActive: Boolean, @@ -29,12 +25,6 @@ // Controls whether the menu button is shown at the start of the menu. showMenu: {type: Boolean, value: false}, - // Whether to show menu promo tooltip. - showMenuPromo: { - type: Boolean, - value: false, - }, - // Controls whether the search field is shown. showSearch: {type: Boolean, value: true}, @@ -62,8 +52,6 @@ value: 900, }, - closeMenuPromo: String, - /** @private */ showingSearch_: { type: Boolean, @@ -71,50 +59,14 @@ }, }, - observers: [ - 'possiblyShowMenuPromo_(showMenu, showMenuPromo, showingSearch_)', - ], - /** @return {!CrToolbarSearchFieldElement} */ getSearchField() { return /** @type {!CrToolbarSearchFieldElement} */ (this.$.search); }, /** @private */ - onClosePromoTap_() { - this.fire('cr-toolbar-menu-promo-close'); - }, - - /** @private */ onMenuTap_() { this.fire('cr-toolbar-menu-tap'); }, - /** @private */ - possiblyShowMenuPromo_() { - Polymer.RenderStatus.afterNextRender(this, function() { - if (this.showMenu && this.showMenuPromo && !this.showingSearch_) { - // The call to animate can have 2 methods of passing the keyframes, - // however as of the current closure version, only one of them is - // supported. See https://crbug.com/987842 for more info. - this.$$('#menuPromo') - .animate( - [{opacity: 0}, {opacity: 0.9}], - /** @type {!KeyframeAnimationOptions} */ ({ - duration: 500, - fill: 'forwards' - })); - this.fire('cr-toolbar-menu-promo-shown'); - } - }.bind(this)); - }, - - /** - * @param {string} title - * @param {boolean} showMenuPromo - * @return {string} The title if the menu promo isn't showing, else "". - */ - titleIfNotShowMenuPromo_(title, showMenuPromo) { - return showMenuPromo ? '' : title; - }, });
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java index 0b2a8cd..d0dcfdc 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java
@@ -42,7 +42,6 @@ import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.NativeMethods; -import org.chromium.base.compat.ApiHelperForO; import org.chromium.base.library_loader.LibraryLoader; import org.chromium.base.library_loader.LibraryProcessType; import org.chromium.base.metrics.RecordHistogram; @@ -219,7 +218,6 @@ notifyWebViewRunningInProcess(remoteContext.getClassLoader()); } - remoteContext = processRemoteContext(remoteContext); Context appContext = minimalInitForContext( ObjectWrapper.unwrap(appContextWrapper, Context.class), remoteContext); PackageInfo packageInfo = WebViewFactory.getLoadedPackageInfo(); @@ -374,7 +372,7 @@ StrictModeWorkaround.apply(); // This is a no-op if init has already happened. minimalInitForContext(ObjectWrapper.unwrap(appContext, Context.class), - processRemoteContext(ObjectWrapper.unwrap(remoteContext, Context.class))); + ObjectWrapper.unwrap(remoteContext, Context.class)); return CrashReporterControllerImpl.getInstance(); } @@ -425,7 +423,7 @@ assert ContextUtils.getApplicationContext() == null; CommandLine.init(null); minimalInitForContext(ObjectWrapper.unwrap(appContext, Context.class), - processRemoteContext(ObjectWrapper.unwrap(remoteContext, Context.class))); + ObjectWrapper.unwrap(remoteContext, Context.class)); LibraryLoader.getInstance().setLibraryProcessType( LibraryProcessType.PROCESS_WEBLAYER_CHILD); LibraryLoader.getInstance().ensureInitialized(); @@ -856,18 +854,6 @@ } } - private static Context processRemoteContext(Context remoteContext) { - // If WebLayer is in a DFM, make sure the correct resources are used. - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - try { - return ApiHelperForO.createContextForSplit(remoteContext, "weblayer"); - } catch (PackageManager.NameNotFoundException e) { - // WebLayer is not in a split, the original context will have the resources. - } - } - return remoteContext; - } - private static Context createContextForMode(Context remoteContext, int uiMode) { Configuration configuration = new Configuration(); configuration.uiMode = uiMode;