diff --git a/AUTHORS b/AUTHORS index 9bc8198..dee1adf 100644 --- a/AUTHORS +++ b/AUTHORS
@@ -466,6 +466,7 @@ Jeremy Spiegel <jeremysspiegel@gmail.com> Jeroen Van den Berghe <vandenberghe.jeroen@gmail.com> Jerry Lin <wahahab11@gmail.com> +Jerry Zhang <zhj8407@gmail.com> Jesper Storm Bache <jsbache@gmail.com> Jesse Miller <jesse@jmiller.biz> Jesus Sanchez-Palencia <jesus.sanchez-palencia.fernandez.fil@intel.com>
diff --git a/BUILD.gn b/BUILD.gn index 86c82ac..ab2f323 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -353,6 +353,7 @@ "//services:services_junit_tests", "//testing/android/junit:junit_unit_tests", "//third_party/catapult/devil", + "//third_party/r8:custom_d8_java", "//third_party/smhasher:murmurhash3", "//tools/android:android_tools", "//tools/android:memconsumer",
diff --git a/DEPS b/DEPS index 2ee5d13..2307441 100644 --- a/DEPS +++ b/DEPS
@@ -199,7 +199,7 @@ # 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': '15595ea39c4442ded546ba36ef63a521240bc0f4', + 'skia_revision': '05e5446145a6c104e156b4a6c78940fb19db4b62', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. @@ -211,11 +211,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': 'd2e76b73efc2c16d7c4a2cddbef4965deeb2f1c9', + 'angle_revision': 'ff170c6f508d45a48e573dcbf2a3001200dde61b', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. - 'swiftshader_revision': 'aedd133cd85f40f92c304776d240a8a3503d1d71', + 'swiftshader_revision': '149733cead636de93d96c5c64f30168d5f6bb03f', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. @@ -274,7 +274,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': '3100aca993ac2fc227ed4a29c855c8302e0cff0d', + 'devtools_frontend_revision': 'ff5c7857d90c41e20f2823396e4fb70c447bdb30', # 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. @@ -314,7 +314,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': '5a6fda1a6fcc99553bab1411e2159cf962b6a36d', + 'dawn_revision': '04772515a8b613150b28bbed19b4c261e0b50e96', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -353,7 +353,7 @@ 'ukey2_revision': '0275885d8e6038c39b8a8ca55e75d1d4d1727f47', # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'tint_revision': '0a68b365ebff6144228140eb00dd367f62e964ed', + 'tint_revision': 'c068cfc1397a2e640c5d917b8d41a8d31bf250c9', # TODO(crbug.com/941824): The values below need to be kept in sync # between //DEPS and //buildtools/DEPS, so if you're updating one, @@ -364,7 +364,7 @@ # revisions. # GN CIPD package version. - 'gn_version': 'git_revision:595e3be7c8381d4eeefce62a63ec12bae9ce5140', + 'gn_version': 'git_revision:d62642c920e6a0d1756316d225a90fd6faa9e21e', # Also, if you change these, update buildtools/DEPS too. Also update the # libc++ svn_revision in //buildtools/deps_revisions.gni. @@ -893,7 +893,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '428143ee24c5f084c8dfb38cd17f07b4f7ba9bf7', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'dabd9655278a9ba3ce753496cd4f6c4b17f5d779', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -1163,7 +1163,7 @@ }, 'src/third_party/libvpx/source/libvpx': - Var('chromium_git') + '/webm/libvpx.git' + '@' + 'b5d77a48d740e211a130c8e45d9353ef8c154a47', + Var('chromium_git') + '/webm/libvpx.git' + '@' + '576e0801f9281fd54e2c69ad5be5fef7af656011', 'src/third_party/libwebm/source': Var('chromium_git') + '/webm/libwebm.git' + '@' + '51ca718c3adf0ddedacd7df25fe45f67dc5a9ce1', @@ -1546,7 +1546,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/linux-amd64', - 'version': 'kjkgNP4EaChPUcoDLbUiF85Tgg3RbK3xzpcwZ5HyUosC', + 'version': '6Jyrz0wn3TSlHy8rWlrugbIUaDslD0FgTnUUQRePl5oC', }, ], 'dep_type': 'cipd', @@ -1556,7 +1556,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/windows-amd64', - 'version': '_5BJmSzcXDTJJSe1g7mA2Qb5L1P6cEseriZG8lUfDuAC', + 'version': '6YmqskIJgPxw9ZFHFHZIlV6xTpym5GZKued9YODyoSwC', }, ], 'dep_type': 'cipd', @@ -1566,7 +1566,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/mac-amd64', - 'version': 'Cb3ZdanPJ4Sjcf0QVUa5PMI5nkXnfRX3fQltIjHI7ZoC', + 'version': 'YFTZ-MeyIxai3DnjeDbaQtkjXVsXKMXIiFvM2GV62_EC', }, ], 'dep_type': 'cipd',
diff --git a/PRESUBMIT.py b/PRESUBMIT.py index da914ed3..e4c0e39 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py
@@ -381,8 +381,7 @@ '^components/webcrypto/', '^extensions/browser/', '^extensions/renderer/', - '^media/blink/', - '^media/cdm/', + '^media/blink/', '^net/http/', '^net/url_request/', '^ppapi/proxy/',
diff --git a/WATCHLISTS b/WATCHLISTS index 657f8af..2a3f074 100644 --- a/WATCHLISTS +++ b/WATCHLISTS
@@ -1245,12 +1245,6 @@ 'media_controls': { 'filepath': 'third_party/blink/renderer/modules/media_controls/' }, - 'media_feeds': { - 'filepath': 'chrome/browser/media/feeds/'\ - '|chrome/renderer/media/media_feeds*'\ - '|components/schema_org/'\ - '|third_party/schema_org/', - }, 'media_galleries': { 'filepath': 'chrome/browser/extensions/api/media_galleries/'\ '|chrome/browser/media_galleries/'\ @@ -1274,9 +1268,6 @@ 'media_gpu_win': { 'filepath': 'media/gpu/windows/' }, - 'media_history': { - 'filepath': 'chrome/browser/media/history/' - }, 'media_mojo': { 'filepath': 'media/mojo/' }, @@ -2613,17 +2604,14 @@ 'webappwatch@microsoft.com'], 'media': ['feature-media-reviews@chromium.org'], 'media_capture_from_element': ['emircan+watch+capturefromdom@chromium.org'], - 'media_controls': ['beccahughes+watch@chromium.org', - 'steimel+watch-mediacontrols@chromium.org', + 'media_controls': ['steimel+watch-mediacontrols@chromium.org', 'shihken@microsoft.com'], - 'media_feeds': ['beccahughes+watch@chromium.org'], 'media_galleries': ['thestig@chromium.org', 'tommycli@chromium.org'], 'media_gpu': ['hiroh+watch@chromium.org'], 'media_gpu_cros': ['media-cros-reviews@chromium.org'], 'media_gpu_vaapi': ['vaapi-reviews@chromium.org'], 'media_gpu_win': ['media-win-reviews@chromium.org'], - 'media_history': ['beccahughes+watch@chromium.org'], 'media_mojo': ['alokp+watch@chromium.org', 'xhwang+watch@chromium.org'], 'media_recorder': ['emircan+watch+mediarecorder@chromium.org',
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn index 2ae8b82d..874cc02 100644 --- a/android_webview/BUILD.gn +++ b/android_webview/BUILD.gn
@@ -299,14 +299,16 @@ # a WebView-specific library defined here for whichever ABI isn't used by # Chrome. # -# Note that this library only includes code needed for the embedded usecase, -# as all non-embedded code uses the primary library. +# Note that this library does also include code needed for the embedded usecase, +# because even though it's not used in normal circumstances, it is required on +# a 64-bit-only device where the nonembedded process will also be 64-bit. template("webview_alternate_library") { chrome_common_shared_library(target_name) { forward_variables_from(invoker, "*") deps = [ "//android_webview/lib", "//android_webview/lib:webview_entry_point", + "//android_webview/nonembedded", ] is_webview = true }
diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc index b15584e..f08cd53 100644 --- a/android_webview/browser/aw_content_browser_client.cc +++ b/android_webview/browser/aw_content_browser_client.cc
@@ -566,10 +566,9 @@ } void AwContentBrowserClient::OverrideWebkitPrefs( - content::RenderViewHost* rvh, + content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) { - AwSettings* aw_settings = AwSettings::FromWebContents( - content::WebContents::FromRenderViewHost(rvh)); + AwSettings* aw_settings = AwSettings::FromWebContents(web_contents); if (aw_settings) { aw_settings->PopulateWebPreferences(web_prefs); }
diff --git a/android_webview/browser/aw_content_browser_client.h b/android_webview/browser/aw_content_browser_client.h index dfe839e..65861ef 100644 --- a/android_webview/browser/aw_content_browser_client.h +++ b/android_webview/browser/aw_content_browser_client.h
@@ -134,7 +134,7 @@ const base::CommandLine& command_line, int child_process_id, content::PosixFileDescriptorInfo* mappings) override; - void OverrideWebkitPrefs(content::RenderViewHost* rvh, + void OverrideWebkitPrefs(content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) override; std::vector<std::unique_ptr<content::NavigationThrottle>> CreateThrottlesForNavigation(
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java index 84a2fc98..5d8ad7f 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java
@@ -567,6 +567,7 @@ @Test @SmallTest @Feature({"AndroidWebView"}) + @DisabledTest(message = "https://crbug.com/1147838") public void testFlingScroll() throws Throwable { final TestAwContentsClient contentsClient = new TestAwContentsClient(); final ScrollTestContainerView testContainerView =
diff --git a/android_webview/renderer/aw_content_renderer_client.cc b/android_webview/renderer/aw_content_renderer_client.cc index 52a8cd7..d5e36e9 100644 --- a/android_webview/renderer/aw_content_renderer_client.cc +++ b/android_webview/renderer/aw_content_renderer_client.cc
@@ -205,15 +205,7 @@ content::RenderFrame* render_frame) { js_injection::JsCommunication* communication = js_injection::JsCommunication::Get(render_frame); - // We will get RunScriptsAtDocumentStart() event even before we received - // RenderFrameCreated() for that |render_frame|. This is because Blink code - // does initialization work on the main frame, which is not related to any - // real navigation. If the communication is nullptr, it means we haven't - // received RenderFrameCreated() yet, we simply ignore this event for - // JsCommunication since that is not the right time to run the script and - // the script may not reach renderer from browser yet. - if (communication) - communication->RunScriptsAtDocumentStart(); + communication->RunScriptsAtDocumentStart(); } void AwContentRendererClient::AddSupportedKeySystems(
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index 2722434..0c230f5 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -323,6 +323,8 @@ "clipboard/clipboard_nudge_constants.h", "clipboard/clipboard_nudge_controller.cc", "clipboard/clipboard_nudge_controller.h", + "clipboard/control_v_histogram_recorder.cc", + "clipboard/control_v_histogram_recorder.h", "clipboard/scoped_clipboard_history_pause_impl.cc", "clipboard/scoped_clipboard_history_pause_impl.h", "clipboard/views/clipboard_history_bitmap_item_view.cc", @@ -1387,6 +1389,8 @@ "system/unified/notification_counter_view.h", "system/unified/notification_hidden_view.cc", "system/unified/notification_hidden_view.h", + "system/unified/notification_icons_controller.cc", + "system/unified/notification_icons_controller.h", "system/unified/page_indicator_view.cc", "system/unified/page_indicator_view.h", "system/unified/quiet_mode_feature_pod_controller.cc", @@ -2277,6 +2281,7 @@ "system/unified/camera_mic_tray_item_view_unittest.cc", "system/unified/feature_pods_container_view_unittest.cc", "system/unified/notification_counter_view_unittest.cc", + "system/unified/notification_icons_controller_unittest.cc", "system/unified/page_indicator_view_unittest.cc", "system/unified/quiet_mode_feature_pod_controller_unittest.cc", "system/unified/top_shortcuts_view_unittest.cc",
diff --git a/ash/accelerators/accelerator_controller_impl.cc b/ash/accelerators/accelerator_controller_impl.cc index f3accee4..456c190 100644 --- a/ash/accelerators/accelerator_controller_impl.cc +++ b/ash/accelerators/accelerator_controller_impl.cc
@@ -1123,10 +1123,6 @@ l10n_util::GetStringUTF16( IDS_ASH_ASSISTANT_DISABLED_IN_PUBLIC_SESSION_MESSAGE)); return; - case AssistantAllowedState::DISALLOWED_BY_SUPERVISED_USER: - // supervised user is deprecated, wait for the code clean up. - NOTREACHED(); - return; case AssistantAllowedState::DISALLOWED_BY_INCOGNITO: ShowToast(kAssistantErrorToastId, l10n_util::GetStringUTF16(
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc index b792d26..f0535ab8 100644 --- a/ash/accelerators/accelerator_controller_unittest.cc +++ b/ash/accelerators/accelerator_controller_unittest.cc
@@ -2244,7 +2244,7 @@ } // namespace // TODO (afakhry): Remove this class after refactoring MagnificationManager. -// Mocked chrome/browser/chromeos/accessibility/magnification_manager.cc +// Mocked chrome/browser/ash/accessibility/magnification_manager.cc class FakeMagnificationManager { public: FakeMagnificationManager() = default;
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd index e7ac5e0..ce22e9f 100644 --- a/ash/ash_strings.grd +++ b/ash/ash_strings.grd
@@ -2668,6 +2668,12 @@ <message name="IDS_ASH_MULTI_DEVICE_SETUP_EXISTING_USER_NEW_CHROME_DEVICE_ADDED_MESSAGE" desc="Message shown as part of the notification shown to a user that has already completed the MultiDevice setup flow logging into a new Chrome device that all their Chrome devices are MultiDevice enabled."> This <ph name="DEVICE_NAME">$1<ex>Chromebook</ex></ph> and your phone will connect automatically </message> + <message name="IDS_ASH_MULTI_DEVICE_WIFI_SYNC_AVAILABLE_TITLE" desc="Title of the notification shown to a user that is newly eligible for Wi-Fi Sync."> + Turn on Wi-Fi Sync + </message> + <message name="IDS_ASH_MULTI_DEVICE_WIFI_SYNC_AVAILABLE_MESSAGE" desc="Message shown as part of the notification shown to a user that has become eligible to enable Wi-Fi Sync."> + Wi-Fi networks will be shared between your phone and <ph name="DEVICE_NAME">$1<ex>Chromebook</ex></ph> + </message> <!-- Window teleportation warning dialog --> <message name="IDS_ASH_TELEPORT_WARNING_TITLE" desc="The title of the dialog which warns user about oddities which can be seen when a window gets moved to another user desktop.">
diff --git a/ash/ash_strings_grd/IDS_ASH_MULTI_DEVICE_WIFI_SYNC_AVAILABLE_MESSAGE.png.sha1 b/ash/ash_strings_grd/IDS_ASH_MULTI_DEVICE_WIFI_SYNC_AVAILABLE_MESSAGE.png.sha1 new file mode 100644 index 0000000..1b2a2a7 --- /dev/null +++ b/ash/ash_strings_grd/IDS_ASH_MULTI_DEVICE_WIFI_SYNC_AVAILABLE_MESSAGE.png.sha1
@@ -0,0 +1 @@ +77739c07b3a18f3b0a727267e02a489e466a048f \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_MULTI_DEVICE_WIFI_SYNC_AVAILABLE_TITLE.png.sha1 b/ash/ash_strings_grd/IDS_ASH_MULTI_DEVICE_WIFI_SYNC_AVAILABLE_TITLE.png.sha1 new file mode 100644 index 0000000..1b2a2a7 --- /dev/null +++ b/ash/ash_strings_grd/IDS_ASH_MULTI_DEVICE_WIFI_SYNC_AVAILABLE_TITLE.png.sha1
@@ -0,0 +1 @@ +77739c07b3a18f3b0a727267e02a489e466a048f \ No newline at end of file
diff --git a/ash/clipboard/clipboard_history_controller_impl.cc b/ash/clipboard/clipboard_history_controller_impl.cc index f59f8340..64361de 100644 --- a/ash/clipboard/clipboard_history_controller_impl.cc +++ b/ash/clipboard/clipboard_history_controller_impl.cc
@@ -373,6 +373,17 @@ return false; } +bool ClipboardHistoryControllerImpl::DeleteClipboardItemByClipboardData( + ui::ClipboardData* data) { + for (const auto& item : history()->GetItems()) { + if (item.data() == *data) { + DeleteClipboardHistoryItem(item); + return true; + } + } + return false; +} + void ClipboardHistoryControllerImpl::OnClipboardHistoryItemAdded( const ClipboardHistoryItem& item, bool is_duplicate) {
diff --git a/ash/clipboard/clipboard_history_controller_impl.h b/ash/clipboard/clipboard_history_controller_impl.h index b06eb33..5ddefbf 100644 --- a/ash/clipboard/clipboard_history_controller_impl.h +++ b/ash/clipboard/clipboard_history_controller_impl.h
@@ -95,6 +95,7 @@ std::vector<std::string> GetHistoryItemIds() const override; bool PasteClipboardItemById(const std::string& item_id) override; bool DeleteClipboardItemById(const std::string& item_id) override; + bool DeleteClipboardItemByClipboardData(ui::ClipboardData* data) override; // ClipboardHistory::Observer: void OnClipboardHistoryItemAdded(const ClipboardHistoryItem& item,
diff --git a/ash/clipboard/clipboard_history_unittest.cc b/ash/clipboard/clipboard_history_unittest.cc index 71ac586..eab03a2 100644 --- a/ash/clipboard/clipboard_history_unittest.cc +++ b/ash/clipboard/clipboard_history_unittest.cc
@@ -15,6 +15,7 @@ #include "ash/shell.h" #include "ash/test/ash_test_base.h" #include "base/strings/utf_string_conversions.h" +#include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "chromeos/constants/chromeos_features.h" #include "testing/gtest/include/gtest/gtest.h" @@ -23,6 +24,7 @@ #include "ui/base/clipboard/clipboard_buffer.h" #include "ui/base/clipboard/custom_data_helper.h" #include "ui/base/clipboard/scoped_clipboard_writer.h" +#include "ui/events/event_constants.h" #include "ui/events/test/event_generator.h" namespace ash { @@ -41,12 +43,24 @@ AshTestBase::SetUp(); clipboard_history_ = const_cast<ClipboardHistory*>( Shell::Get()->clipboard_history_controller()->history()); + event_generator_ = std::make_unique<ui::test::EventGenerator>( + ash::Shell::GetPrimaryRootWindow()); } const std::list<ClipboardHistoryItem>& GetClipboardHistoryItems() { return clipboard_history_->GetItems(); } + ui::test::EventGenerator* GetEventGenerator() { + return event_generator_.get(); + } + + // Simulates pressing and releasing `key_code`. + void PressAndRelease(ui::KeyboardCode key_code, int flags) { + event_generator_->PressKey(key_code, flags); + event_generator_->ReleaseKey(key_code, flags); + } + // Writes |input_strings| to the clipboard buffer and ensures that // |expected_strings| are retained in history. If |in_same_sequence| is true, // writes to the buffer will be performed in the same task sequence. @@ -134,6 +148,7 @@ private: base::test::ScopedFeatureList scoped_feature_list_; + std::unique_ptr<ui::test::EventGenerator> event_generator_; // Owned by ClipboardHistoryControllerImpl. ClipboardHistory* clipboard_history_ = nullptr; }; @@ -349,4 +364,44 @@ ClipboardHistoryUtil::CalculateDisplayFormat(data)); } +// Tests that Ash.ClipboardHistory.ControlToVDelay is only recorded if +// ui::VKEY_V is pressed with only ui::VKEY_CONTROL pressed. +TEST_F(ClipboardHistoryTest, RecordControlV) { + base::HistogramTester histogram_tester; + auto* event_generator = GetEventGenerator(); + + // Press Ctrl + V, a histogram should be emitted. + event_generator->PressKey(ui::VKEY_CONTROL, ui::EF_NONE); + PressAndRelease(ui::VKEY_V, ui::EF_CONTROL_DOWN); + + histogram_tester.ExpectTotalCount("Ash.ClipboardHistory.ControlToVDelay", 1u); + + // Press and release V again, no additional histograms should be emitted. + PressAndRelease(ui::VKEY_V, ui::EF_CONTROL_DOWN); + + histogram_tester.ExpectTotalCount("Ash.ClipboardHistory.ControlToVDelay", 1u); + + // Release Control to return to no keys pressed. + event_generator->ReleaseKey(ui::VKEY_CONTROL, ui::EF_NONE); + histogram_tester.ExpectTotalCount("Ash.ClipboardHistory.ControlToVDelay", 1u); + + // Hold shift while pressing ctrl + V, no histogram should be recorded. + event_generator->PressKey(ui::VKEY_SHIFT, ui::EF_NONE); + event_generator->PressKey(ui::VKEY_CONTROL, ui::EF_SHIFT_DOWN); + PressAndRelease(ui::VKEY_V, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN); + + event_generator->ReleaseKey(ui::VKEY_CONTROL, ui::EF_SHIFT_DOWN); + event_generator->ReleaseKey(ui::VKEY_SHIFT, ui::EF_NONE); + + histogram_tester.ExpectTotalCount("Ash.ClipboardHistory.ControlToVDelay", 1u); + + // Press Ctrl, then press and release a random key, then press V. A histogram + // should be recorded. + event_generator->PressKey(ui::VKEY_CONTROL, ui::EF_NONE); + PressAndRelease(ui::VKEY_X, ui::EF_CONTROL_DOWN); + PressAndRelease(ui::VKEY_V, ui::EF_CONTROL_DOWN); + + histogram_tester.ExpectTotalCount("Ash.ClipboardHistory.ControlToVDelay", 2u); +} + } // namespace ash
diff --git a/ash/clipboard/clipboard_nudge.cc b/ash/clipboard/clipboard_nudge.cc index 6a5aab1..b894f69f 100644 --- a/ash/clipboard/clipboard_nudge.cc +++ b/ash/clipboard/clipboard_nudge.cc
@@ -173,6 +173,10 @@ ClipboardNudge::~ClipboardNudge() = default; +void ClipboardNudge::OnAutoHideStateChanged(ShelfAutoHideState new_state) { + CalculateAndSetWidgetBounds(); +} + void ClipboardNudge::OnHotseatStateChanged(HotseatState old_state, HotseatState new_state) { CalculateAndSetWidgetBounds(); @@ -196,15 +200,36 @@ widget_bounds = gfx::Rect(display_bounds.x() + kNudgeMargin, - display_bounds.height() - ShelfConfig::Get()->shelf_size() - + display_bounds.bottom() - ShelfConfig::Get()->shelf_size() - nudge_height - kNudgeMargin, nudge_width, nudge_height); - if (base::i18n::IsRTL()) - widget_bounds.set_x(display_bounds.right() - nudge_width - kNudgeMargin); + + Shelf* shelf = RootWindowController::ForWindow(root_window_)->shelf(); + bool shelf_hidden = shelf->GetVisibilityState() != SHELF_VISIBLE && + shelf->GetAutoHideState() == SHELF_AUTO_HIDE_HIDDEN; + + if (base::i18n::IsRTL()) { + if (shelf->alignment() == ShelfAlignment::kRight && !shelf_hidden) { + widget_bounds.set_x(display_bounds.right() - nudge_width - kNudgeMargin - + ShelfConfig::Get()->shelf_size()); + } else { + widget_bounds.set_x(display_bounds.right() - nudge_width - kNudgeMargin); + } + } else { + if (shelf->alignment() == ShelfAlignment::kLeft && !shelf_hidden) { + widget_bounds.set_x(display_bounds.x() + + ShelfConfig::Get()->shelf_size() + kNudgeMargin); + } + } + + if ((shelf->alignment() == ShelfAlignment::kBottom && shelf_hidden) || + shelf->alignment() == ShelfAlignment::kLeft || + shelf->alignment() == ShelfAlignment::kRight) { + widget_bounds.set_y(display_bounds.bottom() - nudge_height - kNudgeMargin); + } // Set the nudge's bounds above the hotseat when it is extended. - HotseatWidget* hotseat_widget = - RootWindowController::ForWindow(root_window_)->shelf()->hotseat_widget(); + HotseatWidget* hotseat_widget = shelf->hotseat_widget(); if (hotseat_widget->state() == HotseatState::kExtended) { widget_bounds.set_y(hotseat_widget->GetTargetBounds().y() - nudge_height - kNudgeMargin);
diff --git a/ash/clipboard/clipboard_nudge.h b/ash/clipboard/clipboard_nudge.h index 78f6f56..19d687e 100644 --- a/ash/clipboard/clipboard_nudge.h +++ b/ash/clipboard/clipboard_nudge.h
@@ -22,6 +22,7 @@ ~ClipboardNudge() override; // ShelfObserver overrides: + void OnAutoHideStateChanged(ShelfAutoHideState new_state) override; void OnHotseatStateChanged(HotseatState old_state, HotseatState new_state) override; void Close();
diff --git a/ash/clipboard/control_v_histogram_recorder.cc b/ash/clipboard/control_v_histogram_recorder.cc new file mode 100644 index 0000000..e55ec3c --- /dev/null +++ b/ash/clipboard/control_v_histogram_recorder.cc
@@ -0,0 +1,42 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/clipboard/control_v_histogram_recorder.h" + +#include "ash/accelerators/accelerator_controller_impl.h" +#include "ash/shell.h" +#include "base/metrics/histogram_functions.h" +#include "ui/base/accelerators/accelerator_history.h" +#include "ui/events/event.h" + +namespace ash { + +void ControlVHistogramRecorder::OnKeyEvent(ui::KeyEvent* event) { + if (event->type() != ui::ET_KEY_PRESSED) + return; + + switch (event->key_code()) { + case ui::VKEY_CONTROL: + ctrl_pressed_time_ = base::TimeTicks::Now(); + break; + case ui::VKEY_V: { + auto& currently_pressed_keys = Shell::Get() + ->accelerator_controller() + ->accelerator_history() + ->currently_pressed_keys(); + if (currently_pressed_keys.find(ui::VKEY_CONTROL) != + currently_pressed_keys.end() && + currently_pressed_keys.size() == 1 && !ctrl_pressed_time_.is_null()) { + base::UmaHistogramTimes("Ash.ClipboardHistory.ControlToVDelay", + base::TimeTicks::Now() - ctrl_pressed_time_); + // Prevent a second V from recording a second metric. + ctrl_pressed_time_ = base::TimeTicks(); + } + } break; + default: + break; + } +} + +} // namespace ash \ No newline at end of file
diff --git a/ash/clipboard/control_v_histogram_recorder.h b/ash/clipboard/control_v_histogram_recorder.h new file mode 100644 index 0000000..6103448 --- /dev/null +++ b/ash/clipboard/control_v_histogram_recorder.h
@@ -0,0 +1,41 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_CLIPBOARD_CONTROL_V_HISTOGRAM_RECORDER_H_ +#define ASH_CLIPBOARD_CONTROL_V_HISTOGRAM_RECORDER_H_ + +#include "ash/ash_export.h" +#include "base/time/time.h" +#include "ui/events/event_handler.h" + +namespace ui { + +class KeyEvent; + +} // namespace ui + +namespace ash { + +// An EventHandler added as a pretarget handler to Shell to record the time +// delay between ui::VKEY_CONTROL and ui::VKEY_V when a user is pasting. +class ControlVHistogramRecorder : public ui::EventHandler { + public: + ControlVHistogramRecorder() = default; + ControlVHistogramRecorder(const ControlVHistogramRecorder&) = delete; + ControlVHistogramRecorder& operator=(const ControlVHistogramRecorder&) = + delete; + ~ControlVHistogramRecorder() override = default; + + // ui::EventHandler: + void OnKeyEvent(ui::KeyEvent* event) override; + + private: + // The last time a user pressed ui::VKEY_CONTROL. Used to establish a time + // range for user patterns while pressing ui::VKEY_CONTROL + ui::VKEY_V. + base::TimeTicks ctrl_pressed_time_; +}; + +} // namespace ash + +#endif // ASH_CLIPBOARD_CONTROL_V_HISTOGRAM_RECORDER_H_ \ No newline at end of file
diff --git a/ash/media/OWNERS b/ash/media/OWNERS index 98a39ee..2d28246 100644 --- a/ash/media/OWNERS +++ b/ash/media/OWNERS
@@ -1 +1 @@ -beccahughes@chromium.org +mlamouri@chromium.org
diff --git a/ash/multi_device_setup/multi_device_notification_presenter.cc b/ash/multi_device_setup/multi_device_notification_presenter.cc index 38ed319..51dacd9 100644 --- a/ash/multi_device_setup/multi_device_notification_presenter.cc +++ b/ash/multi_device_setup/multi_device_notification_presenter.cc
@@ -35,10 +35,14 @@ } // namespace // static -const char MultiDeviceNotificationPresenter::kNotificationId[] = +const char MultiDeviceNotificationPresenter::kSetupNotificationId[] = "cros_multi_device_setup_notification_id"; // static +const char MultiDeviceNotificationPresenter::kWifiSyncNotificationId[] = + "cros_wifi_sync_announcement_notification_id"; + +// static std::string MultiDeviceNotificationPresenter::GetNotificationDescriptionForLogging( Status notification_status) { @@ -96,7 +100,7 @@ base::string16 message = l10n_util::GetStringFUTF16( IDS_ASH_MULTI_DEVICE_SETUP_NEW_USER_POTENTIAL_HOST_EXISTS_MESSAGE, ui::GetChromeOSDeviceName()); - ShowNotification(Status::kNewUserNotificationVisible, title, message); + ShowSetupNotification(Status::kNewUserNotificationVisible, title, message); } void MultiDeviceNotificationPresenter::OnNoLongerNewUser() { @@ -113,8 +117,8 @@ base::string16 message = l10n_util::GetStringFUTF16( IDS_ASH_MULTI_DEVICE_SETUP_EXISTING_USER_HOST_SWITCHED_MESSAGE, ui::GetChromeOSDeviceName()); - ShowNotification(Status::kExistingUserHostSwitchedNotificationVisible, title, - message); + ShowSetupNotification(Status::kExistingUserHostSwitchedNotificationVisible, + title, message); } void MultiDeviceNotificationPresenter::OnNewChromebookAddedForExistingUser( @@ -125,13 +129,22 @@ base::string16 message = l10n_util::GetStringFUTF16( IDS_ASH_MULTI_DEVICE_SETUP_EXISTING_USER_NEW_CHROME_DEVICE_ADDED_MESSAGE, ui::GetChromeOSDeviceName()); - ShowNotification(Status::kExistingUserNewChromebookNotificationVisible, title, - message); + ShowSetupNotification(Status::kExistingUserNewChromebookNotificationVisible, + title, message); +} + +void MultiDeviceNotificationPresenter::OnBecameEligibleForWifiSync() { + base::string16 title = + l10n_util::GetStringUTF16(IDS_ASH_MULTI_DEVICE_WIFI_SYNC_AVAILABLE_TITLE); + base::string16 message = l10n_util::GetStringFUTF16( + IDS_ASH_MULTI_DEVICE_WIFI_SYNC_AVAILABLE_MESSAGE, + ui::GetChromeOSDeviceName()); + ShowNotification(kWifiSyncNotificationId, title, message); } void MultiDeviceNotificationPresenter::RemoveMultiDeviceSetupNotification() { notification_status_ = Status::kNoNotificationVisible; - message_center_->RemoveNotification(kNotificationId, + message_center_->RemoveNotification(kSetupNotificationId, /* by_user */ false); } @@ -148,7 +161,7 @@ void MultiDeviceNotificationPresenter::OnNotificationRemoved( const std::string& notification_id, bool by_user) { - if (by_user && notification_id == kNotificationId) { + if (by_user && notification_id == kSetupNotificationId) { UMA_HISTOGRAM_ENUMERATION( "MultiDeviceSetup_NotificationDismissed", GetMetricValueForNotification(notification_status_), @@ -160,7 +173,14 @@ const std::string& notification_id, const base::Optional<int>& button_index, const base::Optional<base::string16>& reply) { - if (notification_id != kNotificationId) + if (notification_id == kWifiSyncNotificationId) { + Shell::Get()->system_tray_model()->client()->ShowConnectedDevicesSettings(); + message_center_->RemoveNotification(kWifiSyncNotificationId, + /* by_user */ false); + return; + } + + if (notification_id != kSetupNotificationId) return; DCHECK(notification_status_ != Status::kNoNotificationVisible); @@ -219,7 +239,7 @@ message_center_->AddObserver(this); } -void MultiDeviceNotificationPresenter::ShowNotification( +void MultiDeviceNotificationPresenter::ShowSetupNotification( const Status notification_status, const base::string16& title, const base::string16& message) { @@ -229,28 +249,33 @@ UMA_HISTOGRAM_ENUMERATION("MultiDeviceSetup_NotificationShown", GetMetricValueForNotification(notification_status), kNotificationTypeMax); - if (message_center_->FindVisibleNotificationById(kNotificationId)) { - message_center_->UpdateNotification(kNotificationId, - CreateNotification(title, message)); - } else { - message_center_->AddNotification(CreateNotification(title, message)); - } + + ShowNotification(kSetupNotificationId, title, message); notification_status_ = notification_status; } -std::unique_ptr<message_center::Notification> -MultiDeviceNotificationPresenter::CreateNotification( +void MultiDeviceNotificationPresenter::ShowNotification( + const std::string& id, const base::string16& title, const base::string16& message) { - return CreateSystemNotification( - message_center::NotificationType::NOTIFICATION_TYPE_SIMPLE, - kNotificationId, title, message, base::string16() /* display_source */, - GURL() /* origin_url */, - message_center::NotifierId(message_center::NotifierType::SYSTEM_COMPONENT, - kNotifierMultiDevice), - message_center::RichNotificationData(), nullptr /* delegate */, - kNotificationMultiDeviceSetupIcon, - message_center::SystemNotificationWarningLevel::NORMAL); + std::unique_ptr<message_center::Notification> notification = + CreateSystemNotification( + message_center::NotificationType::NOTIFICATION_TYPE_SIMPLE, id, title, + message, base::string16() /* display_source */, + GURL() /* origin_url */, + message_center::NotifierId( + message_center::NotifierType::SYSTEM_COMPONENT, + kNotifierMultiDevice), + message_center::RichNotificationData(), nullptr /* delegate */, + kNotificationMultiDeviceSetupIcon, + message_center::SystemNotificationWarningLevel::NORMAL); + + if (message_center_->FindVisibleNotificationById(kSetupNotificationId)) { + message_center_->UpdateNotification(id, std::move(notification)); + return; + } + + message_center_->AddNotification(std::move(notification)); } void MultiDeviceNotificationPresenter::FlushForTesting() {
diff --git a/ash/multi_device_setup/multi_device_notification_presenter.h b/ash/multi_device_setup/multi_device_notification_presenter.h index db10b6a3..527f4db2 100644 --- a/ash/multi_device_setup/multi_device_notification_presenter.h +++ b/ash/multi_device_setup/multi_device_notification_presenter.h
@@ -61,6 +61,7 @@ const std::string& new_host_device_name) override; void OnNewChromebookAddedForExistingUser( const std::string& new_host_device_name) override; + void OnBecameEligibleForWifiSync() override; // SessionObserver: void OnUserSessionAdded(const AccountId& account_id) override; @@ -79,7 +80,8 @@ friend class MultiDeviceNotificationPresenterTest; // MultiDevice setup notification ID. - static const char kNotificationId[]; + static const char kSetupNotificationId[]; + static const char kWifiSyncNotificationId[]; // Represents each possible MultiDevice setup notification that the setup flow // can show with a "none" option for the general state with no notification @@ -107,12 +109,12 @@ Status notification_status); void ObserveMultiDeviceSetupIfPossible(); - void ShowNotification(const Status notification_status, + void ShowSetupNotification(const Status notification_status, + const base::string16& title, + const base::string16& message); + void ShowNotification(const std::string& id, const base::string16& title, const base::string16& message); - std::unique_ptr<message_center::Notification> CreateNotification( - const base::string16& title, - const base::string16& message); void FlushForTesting();
diff --git a/ash/multi_device_setup/multi_device_notification_presenter_unittest.cc b/ash/multi_device_setup/multi_device_notification_presenter_unittest.cc index c25b73e..a91fdd3 100644 --- a/ash/multi_device_setup/multi_device_notification_presenter_unittest.cc +++ b/ash/multi_device_setup/multi_device_notification_presenter_unittest.cc
@@ -156,36 +156,65 @@ InvokePendingMojoCalls(); } + void ShowWifiSyncNotification() { + EXPECT_TRUE(fake_multidevice_setup_->delegate().is_bound()); + fake_multidevice_setup_->delegate()->OnBecameEligibleForWifiSync(); + InvokePendingMojoCalls(); + } + void ClickNotification() { test_message_center_.ClickOnNotification( - MultiDeviceNotificationPresenter::kNotificationId); + MultiDeviceNotificationPresenter::kSetupNotificationId); + } + + void ClickWifiSyncNotification() { + test_message_center_.ClickOnNotification( + MultiDeviceNotificationPresenter::kWifiSyncNotificationId); } void DismissNotification(bool by_user) { test_message_center_.RemoveNotification( - MultiDeviceNotificationPresenter::kNotificationId, by_user); + MultiDeviceNotificationPresenter::kSetupNotificationId, by_user); } void VerifyNewUserPotentialHostExistsNotificationIsVisible() { - VerifyNotificationIsVisible( + VerifySetupNotificationIsVisible( MultiDeviceNotificationPresenter::Status::kNewUserNotificationVisible); } void VerifyExistingUserHostSwitchedNotificationIsVisible() { - VerifyNotificationIsVisible( + VerifySetupNotificationIsVisible( MultiDeviceNotificationPresenter::Status:: kExistingUserHostSwitchedNotificationVisible); } void VerifyExistingUserNewChromebookAddedNotificationIsVisible() { - VerifyNotificationIsVisible( + VerifySetupNotificationIsVisible( MultiDeviceNotificationPresenter::Status:: kExistingUserNewChromebookNotificationVisible); } + void VerifyWifiSyncNotificationIsVisible() { + const message_center::Notification* kVisibleNotification = + test_message_center_.FindVisibleNotificationById( + MultiDeviceNotificationPresenter::kWifiSyncNotificationId); + base::string16 title = l10n_util::GetStringUTF16( + IDS_ASH_MULTI_DEVICE_WIFI_SYNC_AVAILABLE_TITLE); + base::string16 message = l10n_util::GetStringFUTF16( + IDS_ASH_MULTI_DEVICE_WIFI_SYNC_AVAILABLE_MESSAGE, + base::ASCIIToUTF16(kTestDeviceType)); + EXPECT_EQ(title, kVisibleNotification->title()); + EXPECT_EQ(message, kVisibleNotification->message()); + } + void VerifyNoNotificationIsVisible() { EXPECT_FALSE(test_message_center_.FindVisibleNotificationById( - MultiDeviceNotificationPresenter::kNotificationId)); + MultiDeviceNotificationPresenter::kSetupNotificationId)); + } + + void VerifyNoWifiSyncNotificationIsVisible() { + EXPECT_FALSE(test_message_center_.FindVisibleNotificationById( + MultiDeviceNotificationPresenter::kWifiSyncNotificationId)); } void AssertPotentialHostBucketCount(std::string histogram, int count) { @@ -232,11 +261,11 @@ std::unique_ptr<MultiDeviceNotificationPresenter> notification_presenter_; private: - void VerifyNotificationIsVisible( + void VerifySetupNotificationIsVisible( MultiDeviceNotificationPresenter::Status notification_status) { const message_center::Notification* kVisibleNotification = test_message_center_.FindVisibleNotificationById( - MultiDeviceNotificationPresenter::kNotificationId); + MultiDeviceNotificationPresenter::kSetupNotificationId); base::string16 title; base::string16 message; switch (notification_status) { @@ -437,6 +466,21 @@ } TEST_F(MultiDeviceNotificationPresenterTest, + TestWifiSyncNotification_TapNotification) { + SignIntoAccount(); + + ShowWifiSyncNotification(); + VerifyWifiSyncNotificationIsVisible(); + + ClickWifiSyncNotification(); + + VerifyNoWifiSyncNotificationIsVisible(); + + EXPECT_EQ(test_system_tray_client_->show_connected_devices_settings_count(), + 1); +} + +TEST_F(MultiDeviceNotificationPresenterTest, TestHostExistingUserNewChromebookAddedNotification_TapNotification) { SignIntoAccount();
diff --git a/ash/public/cpp/clipboard_history_controller.h b/ash/public/cpp/clipboard_history_controller.h index 44c4620..d673925 100644 --- a/ash/public/cpp/clipboard_history_controller.h +++ b/ash/public/cpp/clipboard_history_controller.h
@@ -21,6 +21,10 @@ class Rect; } // namespace gfx +namespace ui { +class ClipboardData; +} // namespace ui + namespace ash { class ScopedClipboardHistoryPause; @@ -96,6 +100,9 @@ // Deletes the clipboard item specified by the item id. virtual bool DeleteClipboardItemById(const std::string& item_id) = 0; + // Deletes the clipboard item that matches `data`. + virtual bool DeleteClipboardItemByClipboardData(ui::ClipboardData* data) = 0; + protected: ClipboardHistoryController(); virtual ~ClipboardHistoryController();
diff --git a/ash/public/cpp/pagination/pagination_controller.cc b/ash/public/cpp/pagination/pagination_controller.cc index c54645803..663c32d3 100644 --- a/ash/public/cpp/pagination/pagination_controller.cc +++ b/ash/public/cpp/pagination/pagination_controller.cc
@@ -13,7 +13,7 @@ namespace { // Constants for dealing with scroll events. -const int kMinScrollToSwitchPage = 20; +const int kMinScrollToSwitchPage = 10; const int kMinHorizVelocityToSwitchPage = 800; const double kFinishTransitionThreshold = 0.33;
diff --git a/ash/search_box/DIR_METADATA b/ash/search_box/DIR_METADATA index 68b61d6..2f11d02 100644 --- a/ash/search_box/DIR_METADATA +++ b/ash/search_box/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Shell>Launcher" +monorail: { + component: "UI>Shell>Launcher" }
diff --git a/ash/shell.cc b/ash/shell.cc index 17a00a0..f57ec73 100644 --- a/ash/shell.cc +++ b/ash/shell.cc
@@ -26,6 +26,7 @@ #include "ash/capture_mode/capture_mode_controller.h" #include "ash/child_accounts/parent_access_controller_impl.h" #include "ash/clipboard/clipboard_history_controller_impl.h" +#include "ash/clipboard/control_v_histogram_recorder.h" #include "ash/dbus/ash_dbus_services.h" #include "ash/detachable_base/detachable_base_handler.h" #include "ash/detachable_base/detachable_base_notification_controller.h" @@ -629,6 +630,7 @@ RemovePreTargetHandler(overlay_filter_.get()); overlay_filter_.reset(); + RemovePreTargetHandler(control_v_histogram_recorder_.get()); RemovePreTargetHandler(accelerator_filter_.get()); RemovePreTargetHandler(event_transformation_handler_.get()); if (back_gesture_event_handler_) @@ -1058,9 +1060,12 @@ overlay_filter_.reset(new OverlayEventFilter); AddPreTargetHandler(overlay_filter_.get()); - accelerator_filter_.reset(new ::wm::AcceleratorFilter( + control_v_histogram_recorder_ = std::make_unique<ControlVHistogramRecorder>(); + AddPreTargetHandler(control_v_histogram_recorder_.get()); + + accelerator_filter_ = std::make_unique<::wm::AcceleratorFilter>( std::make_unique<PreTargetAcceleratorHandler>(), - accelerator_controller_->accelerator_history())); + accelerator_controller_->accelerator_history()); AddPreTargetHandler(accelerator_filter_.get()); event_transformation_handler_.reset(new EventTransformationHandler);
diff --git a/ash/shell.h b/ash/shell.h index 9259c43..ef0dd44 100644 --- a/ash/shell.h +++ b/ash/shell.h
@@ -100,6 +100,7 @@ class BluetoothPowerController; class BrightnessControlDelegate; class CaptureModeController; +class ControlVHistogramRecorder; class CrosDisplayConfig; class DesksController; class DetachableBaseHandler; @@ -725,6 +726,7 @@ std::unique_ptr<ShelfWindowWatcher> shelf_window_watcher_; std::unique_ptr<ShellDelegate> shell_delegate_; std::unique_ptr<CaptureModeController> capture_mode_controller_; + std::unique_ptr<ControlVHistogramRecorder> control_v_histogram_recorder_; std::unique_ptr<ShutdownControllerImpl> shutdown_controller_; std::unique_ptr<SystemNotificationController> system_notification_controller_; std::unique_ptr<SystemTrayModel> system_tray_model_;
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_hu.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_hu.xtb index ee8511d2..e1d318b 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_hu.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_hu.xtb
@@ -61,7 +61,7 @@ <translation id="2872353916818027657">Elsődleges monitor felcserélése</translation> <translation id="2914313326123580426">A Fejlesztői eszközök panel megjelenítése vagy elrejtése</translation> <translation id="292495055542441795">Váltás teljes képernyős módra</translation> -<translation id="3020183492814296499">Billentyűparancsok</translation> +<translation id="3020183492814296499">Parancsikonok</translation> <translation id="3084301071537457911">A következő elem kiemelése a polcon</translation> <translation id="309173601632226815">Az indító gomb kiemelése a polcon</translation> <translation id="3105917916468784889">Képernyőkép készítése</translation>
diff --git a/ash/strings/ash_strings_af.xtb b/ash/strings/ash_strings_af.xtb index 638047d..63f38d2 100644 --- a/ash/strings/ash_strings_af.xtb +++ b/ash/strings/ash_strings_af.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Stel jou taal</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Sluitskerm</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hallo, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Wissel <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Beweeg merker</translation> <translation id="3098580329624789136">Kry die <ph name="INTENT" /> vir "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Neem skermkiekie</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Herbegin om op te dateer</translation> <translation id="3139942575505304791">Lessenaar 1</translation> -<translation id="3147157020428159854">Skermopnemer het gestop</translation> <translation id="315116470104423982">Mobiele data</translation> <translation id="3151786313568798007">Oriëntasie</translation> <translation id="3153444934357957346">Jy kan net tot en met <ph name="MULTI_PROFILE_USER_LIMIT" /> rekeninge in veelvoudige aanmelding hê.</translation> @@ -367,7 +368,6 @@ <translation id="4296136865091727875">Vee al <ph name="COUNT" /> kennisgewings uit</translation> <translation id="4302592941791324970">Nie beskikbaar nie</translation> <translation id="4303223480529385476">Vou statusarea uit</translation> -<translation id="4315586716182276649">Brei jou foon se internetverbinding uit, beheer Moenie Steur Nie, en spoor jou toestel op. Bekyk aktiewe Chrome-oortjies van jou foon af op jou <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Jy het die sleutelbordkortpad vir hoë kontras gedruk. Wil jy dit aanskakel?</translation> <translation id="4331809312908958774">Chrome-bedryfstelsel</translation> @@ -561,6 +561,7 @@ <translation id="6054305421211936131">Meld met slimkaart aan</translation> <translation id="6059276912018042191">Onlangse Chrome-oortjies</translation> <translation id="6062360702481658777">Jy sal oor <ph name="LOGOUT_TIME_LEFT" /> outomaties afgemeld word.</translation> +<translation id="6073451960410192870">Stop opname</translation> <translation id="607652042414456612">Jou rekenaar is opspoorbaar vir Bluetooth-toestelle wat naby is en sal verskyn as "<ph name="NAME" />" met adres <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Die Google Assistent is nie in 'n gastesessie beskikbaar nie.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Druk en hou albei volumesleutels vir vyf sekondes om die gesproke terugvoer te deaktiveer.</translation> <translation id="7658239707568436148">Kanselleer</translation> <translation id="7662283695561029522">Tik om op te stel</translation> -<translation id="7683326293741220026">Dit lyk of Bluetooth op jou foon afgeskakel is. Skakel asseblief Bluetooth op jou foon aan om Foonsentrum te gebruik.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 kennisgewing}other{# kennisgewings}}</translation> <translation id="7724603315864178912">Knip</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Bereken tans batterytyd.</translation> <translation id="8061464966246066292">Hoë kontras</translation> <translation id="8098591350844501178">Hou op om skerm na <ph name="RECEIVER_NAME" /> toe uit te saai</translation> -<translation id="8108657971283652031">Brei jou foon se internetverbinding uit, beheer Moenie Steur Nie, en spoor jou foon op. Bekyk aktiewe Chrome-oortjies van jou foon af op jou <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Aan; alle prog.</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation> <translation id="8131740175452115882">Bevestig</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> werk nie met <ph name="SPECIFIED_RESOLUTION" /> nie. Die resolusie is verander na <ph name="FALLBACK_RESOLUTION" />. Klik Bevestig om veranderinge te hou. Die vorige instellings sal oor <ph name="TIMEOUT_SECONDS" /> teruggestel word.</translation> <translation id="8513108775083588393">Outodraai</translation> <translation id="8517041960877371778">Jou <ph name="DEVICE_TYPE" /> mag nie laai terwyl dit aangeskakel is nie.</translation> +<translation id="8553395910833293175">Reeds toegewys aan alle lessenaars.</translation> <translation id="8563862697512465947">Kennisgewinginstellings</translation> <translation id="857201607579416096">Kieslys is na die skerm se hoek regs onder geskuif.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590">Gebruik tans <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Ontsluit toestel as <ph name="LOGIN_ID" /> om die kennisgewinghandeling uit te voer</translation> <translation id="9017320285115481645">Voer die Family Link-ouertoegangskode in.</translation> +<translation id="9024331582947483881">volskerm</translation> <translation id="9047624247355796468">Maak instellings oop vir <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Toestel sal teruggerol word</translation> <translation id="9065203028668620118">Wysig</translation>
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb index edf07711..83c3cf1e7 100644 --- a/ash/strings/ash_strings_am.xtb +++ b/ash/strings/ash_strings_am.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">ረዳት</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">የእርስዎን ቋንቋ ያቀናብሩ</translation> +<translation id="1961832440516943645"><ph name="DATE" />፣ <ph name="TIME" /></translation> <translation id="1962969542251276847">የማያ ገጽ ቁልፍ</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">ሠላም <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> ቀያይር። <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">ጠቋሚን አንቀሳቅስ</translation> <translation id="3098580329624789136">ለ«<ph name="QUERY" />» <ph name="INTENT" />ን ያግኙ</translation> +<translation id="3105917916468784889">ቅጽበታዊ ገጽ እይታን ያነሳል</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (ብሉቱዝ)</translation> <translation id="3126069444801937830">ለማዘመን ዳግም ያስጀምሩ</translation> <translation id="3139942575505304791">ዴስክ 1</translation> -<translation id="3147157020428159854">የማያ ገጽ ቀረጻ ቆሟል</translation> <translation id="315116470104423982">የተንቀሳቃሽ ስልክ ውሂብ</translation> <translation id="3151786313568798007">አቀማመጥ</translation> <translation id="3153444934357957346">በአንድ ጊዜ ብዙ መግባት ላይ እስከ <ph name="MULTI_PROFILE_USER_LIMIT" /> መለያዎች ድረስ ብቻ ነው ሊኖርዎት የሚችለው።</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">ሁሉንም <ph name="COUNT" /> ማሳወቂያዎች አጽዳ</translation> <translation id="4302592941791324970">አይገኝም</translation> <translation id="4303223480529385476">የሁኔታ አካባቢን ዘርጋ</translation> -<translation id="4315586716182276649">የእርስዎን የበይነመረብ ግንኙነት ያራዝሙ፣ አትረብሽን ይቆጣጠሩ እና የእርስዎን መሣሪያ ያለበትን ያግኙ። ንቁ የChrome ትሮችን ከእርስዎ ስልክ ላይ በእርስዎ <ph name="DEVICE_TYPE" /> ላይ ይመልከቱ።</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">የከፍተኛ ንጽጽር የቁልፍ ሰሌዳ አቋራጩን ተጭነዋል። ሊያበሩት ይፈልጋሉ?</translation> <translation id="4331809312908958774">Chrome ስርዓተ ክወና</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">በዘመናዊ ካርድ በመለያ ይግቡ</translation> <translation id="6059276912018042191">የቅርብ ጊዜ Chrome ትሮች</translation> <translation id="6062360702481658777">በ<ph name="LOGOUT_TIME_LEFT" /> ውስጥ በራስ-ሰር ዘግተው እንዲወጡ ይደረጋሉ።</translation> +<translation id="6073451960410192870">መቅረጽ አቁም</translation> <translation id="607652042414456612">ኮምፒውተርዎ አቅራቢያ ባሉ የብሉቱዝ መሣሪያዎች ሊገኝ የሚችል ነው፣ እና በ<ph name="ADDRESS" /> አድራሻ እንደ «<ph name="NAME" />» ሆኖ ይታያል</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />። <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">የGoogle ረዳቱ በእንግዳ ክፍለ-ጊዜ ውስጥ አይገኝም።</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">የሚነገር ግብረመልስን ለማሰናከል ለአምስት ሰከንዶች ሁለቱንም የድምፅ ቁልፎች ተጭነው ያይዙ።</translation> <translation id="7658239707568436148">ይቅር</translation> <translation id="7662283695561029522">ለማዋቀር መታ ያድርጉ</translation> -<translation id="7683326293741220026">ብሉቱዝ በስልክዎ ላይ የጠፋ ይመስላል። የስልክ ሃብን ለመጠቀም እባክዎን በስልክዎ ላይ ብሉቱዝን ያብሩ።</translation> <translation id="7705524343798198388">ቪ ፒ ኤን</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ማሳወቂያ}one{# ማሳወቂያዎች}other{# ማሳወቂያዎች}}</translation> <translation id="7724603315864178912">ቁረጥ</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">የባትሪ ጊዜን በማስላት ላይ።</translation> <translation id="8061464966246066292">ከፍተኛ ንፅፅር</translation> <translation id="8098591350844501178">ማያ ገጹን ወደ <ph name="RECEIVER_NAME" /> Cast ማድረግ አስቁም</translation> -<translation id="8108657971283652031">የእርስዎን የበይነመረብ ግንኙነት ያራዝሙ፣ አትረብሽን ይቆጣጠሩ እና የእርስዎን ስልክ ያለበትን ያግኙ። ንቁ የChrome ትሮችን ከእርስዎ ስልክ ላይ በእርስዎ <ph name="DEVICE_TYPE" /> ላይ ይመልከቱ።</translation> <translation id="8113423164597455979">በርቷል፣ ሁሉም መተግበሪያዎች</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° ሴ</translation> <translation id="8131740175452115882">አረጋግጥ</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> <ph name="SPECIFIED_RESOLUTION" />ን አይደግፍም። ጥራቱ ወደ <ph name="FALLBACK_RESOLUTION" /> ተቀይሯል። ለውጦችን ለማቆየት አረጋግጥን ጠቅ ያድርጉ። ቀዳሚ ቅንብሮቹ በ<ph name="TIMEOUT_SECONDS" /> ውስጥ ወደነበሩበት ይመለሳሉ።</translation> <translation id="8513108775083588393">በራስ ሰር አሽከርክር</translation> <translation id="8517041960877371778">የእርሰዎ <ph name="DEVICE_TYPE" /> እንደበራ ኃይል መሙላት አይችሉ ይሆናል።</translation> +<translation id="8553395910833293175">ለሁሉም ዴስኮች ቀድሞውኑ ተመድቧል።</translation> <translation id="8563862697512465947">የማስታወቂያ ቅንብሮች </translation> <translation id="857201607579416096">ምናሌ ወደ የማያ ገጹ የታችኛው ቀኝ ጥግ ተወስዷል።</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" />ን በመጠቀም ላይ</translation> <translation id="899350903320462459">የማሳወቅ እርምጃውን ለማከናወን መሣሪያን እንደ <ph name="LOGIN_ID" /> ይክፈቱ</translation> <translation id="9017320285115481645">የ Family Link ወላጅ መዳረሻ ኮድ ያስገቡ።</translation> +<translation id="9024331582947483881">ሙሉ ገጽ ማያ</translation> <translation id="9047624247355796468">ለ <ph name="NETWORK_NAME" /> ቅንብሮችን ክፈት</translation> <translation id="9056839673611986238">መሣሪያ ይቀነሳል</translation> <translation id="9065203028668620118">አርትዕ</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb index 4fe9f422..365c0f9 100644 --- a/ash/strings/ash_strings_ar.xtb +++ b/ash/strings/ash_strings_ar.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">المساعد</translation> <translation id="1957803754585243749">0 درجة</translation> <translation id="1957958912175573503">تعيين اللغة</translation> +<translation id="1961832440516943645"><ph name="DATE" /> و<ph name="TIME" /></translation> <translation id="1962969542251276847">قفل الشاشة</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">مرحبًا، <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">تبديل <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">نقل المؤشر</translation> <translation id="3098580329624789136">احصل على <ph name="INTENT" /> لطلب البحث "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">أخذ لقطة شاشة</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (بلوتوث)</translation> <translation id="3126069444801937830">إعادة التشغيل للتحديث</translation> <translation id="3139942575505304791">مكتب 1</translation> -<translation id="3147157020428159854">تم إيقاف تسجيل الشاشة</translation> <translation id="315116470104423982">بيانات الجوال</translation> <translation id="3151786313568798007">الاتجاه</translation> <translation id="3153444934357957346">يمكنك الحصول فقط على ما يصل إلى <ph name="MULTI_PROFILE_USER_LIMIT" /> حساب في الدخول المتعدد.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">محو جميع الإشعارات التي يبلغ عددها <ph name="COUNT" /></translation> <translation id="4302592941791324970">غير متوفّر</translation> <translation id="4303223480529385476">توسيع منطقة الحالة</translation> -<translation id="4315586716182276649">سيكون بإمكانك توسيع نطاق اتصال الإنترنت الخاص بالهاتف والتحكّم في وضع "عدم الإزعاج" وتحديد الموقع الجغرافي للجهاز. ويمكنك عرض علامات تبويب Chrome النشطة على الجهاز <ph name="DEVICE_TYPE" /> من هاتفك.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">لقد ضغطت على اختصار لوحة المفاتيح للتباين العالي. هل ترغب في تفعيله؟</translation> <translation id="4331809312908958774">نظام تشغيل Chrome</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">تسجيل الدخول باستخدام البطاقة الذكية</translation> <translation id="6059276912018042191">علامات تبويب Chrome الأخيرة</translation> <translation id="6062360702481658777">سيتم تسجيل خروجك تلقائيًا في غضون <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">إيقاف التسجيل</translation> <translation id="607652042414456612">يمكن لأجهزة بلوتوث القريبة اكتشاف جهاز الكمبيوتر وسيظهر كـ "<ph name="NAME" />" بالعنوان <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">لا يتوفر "مساعد Google" في جلسة ضيف.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">اضغط مع الاستمرار على مفتاحي مستوى الصوت لمدة خمس ثوانٍ لإيقاف التعليقات والملاحظات المنطوقة.</translation> <translation id="7658239707568436148">إلغاء</translation> <translation id="7662283695561029522">النقر للإعداد</translation> -<translation id="7683326293741220026">يبدو أنّه تم إيقاف اتصال البلوتوث على هاتفك. يُرجى تفعيل البلوتوث لاستخدام ميزة "مركز التحكم بالهاتف".</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{إشعار واحد}zero{# إشعار}two{إشعاران (#)}few{# إشعارات}many{# إشعارًا}other{# إشعار}}</translation> <translation id="7724603315864178912">قص</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">يجري حساب وقت البطارية.</translation> <translation id="8061464966246066292">تباين عالٍ</translation> <translation id="8098591350844501178">إيقاف إرسال الشاشة إلى <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">سيكون بإمكانك توسيع نطاق اتصال الإنترنت الخاص بالهاتف والتحكّم في وضع "عدم الإزعاج" وتحديد الموقع الجغرافي للهاتف. ويمكنك عرض علامات تبويب Chrome النشطة على الجهاز <ph name="DEVICE_TYPE" /> من هاتفك.</translation> <translation id="8113423164597455979">مفعلة، كل التطبيقات</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° مئوية</translation> <translation id="8131740175452115882">التأكيد</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> غير متوافق مع <ph name="SPECIFIED_RESOLUTION" />. تم تغيير درجة الدقة إلى <ph name="FALLBACK_RESOLUTION" />. انقر على "تأكيد" لحفظ التغييرات. ستتم استعادة الإعدادات السابقة خلال <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">التدوير تلقائي</translation> <translation id="8517041960877371778">قد يتعذر شحن <ph name="DEVICE_TYPE" /> أثناء التشغيل.</translation> +<translation id="8553395910833293175">سبقَ نقل المحتوى المرئي إلى جميع أسطح المكتب.</translation> <translation id="8563862697512465947">إعدادات الاشعارات</translation> <translation id="857201607579416096">تم نقل القائمة إلى أسفل يسار الشاشة.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590">استخدام <ph name="IME_NAME" /></translation> <translation id="899350903320462459">فتح قفل الجهاز بواسطة <ph name="LOGIN_ID" /> لتنفيذ إجراء الإشعارات</translation> <translation id="9017320285115481645">يُرجى إدخال رمز الدخول المخصّص للوالدين في Family Link.</translation> +<translation id="9024331582947483881">ملء الشاشة</translation> <translation id="9047624247355796468">فتح الإعدادات للشبكة <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">سيتم إعادة النسخة السابقة من نظام التشغيل Chrome إلى جهازك.</translation> <translation id="9065203028668620118">تعديل</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb index faeb9b6..55708923 100644 --- a/ash/strings/ash_strings_as.xtb +++ b/ash/strings/ash_strings_as.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">০°</translation> <translation id="1957958912175573503">আপোনাৰ ভাষা ছেট কৰক</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">লক স্ক্ৰীণ</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (ইউএছবি)</translation> <translation id="1972950159383891558">নমস্কাৰ, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> ট’গল কৰক। <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">কাৰ্ছৰ স্থানান্তৰ কৰক</translation> <translation id="3098580329624789136">"<ph name="QUERY" />"ৰ বাবে <ph name="INTENT" /> লাভ কৰক</translation> +<translation id="3105917916468784889">স্ক্ৰীণশ্বট লওক</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (ব্লুটুথ)</translation> <translation id="3126069444801937830">আপডে’ট কৰিবলৈ ৰিষ্টাৰ্ট কৰক</translation> <translation id="3139942575505304791">ডেস্ক ১</translation> -<translation id="3147157020428159854">স্ক্ৰীন ৰেকৰ্ডিং বন্ধ হৈছে</translation> <translation id="315116470104423982">ম’বাইল ডেটা</translation> <translation id="3151786313568798007">দিশ</translation> <translation id="3153444934357957346">একাধিক ছাইন ইন প্ৰক্রিয়াত আপোনাৰ মাত্ৰ <ph name="MULTI_PROFILE_USER_LIMIT" />টা একাউণ্টহে থাকিব পাৰে।</translation> @@ -365,7 +366,6 @@ <translation id="4296136865091727875">সম্পূৰ্ণ <ph name="COUNT" />টা জাননী মচক</translation> <translation id="4302592941791324970">উপলব্ধ নহয়</translation> <translation id="4303223480529385476">বিভিন্ন স্থিতি দেখুওৱা ঠাই বিস্তাৰ কৰক</translation> -<translation id="4315586716182276649">আপোনাৰ ফ’নৰ ইণ্টাৰনেট সংযোগ বিস্তাৰ কৰক, অসুবিধা নিদিব নিয়ন্ত্ৰণ কৰক আৰু আপোনাৰ ডিভাইচটো ক’ত আছে জানক। আপোনাৰ <ph name="DEVICE_TYPE" />ত নিজৰ ফ’নৰ পৰা সক্ৰিয় হৈ থকা Chrome টেবসমূহ চাওক।</translation> <translation id="4321179778687042513">Ctrl</translation> <translation id="4321776623976362024">আপুনি হাই কনট্ৰাষ্টৰ বাবে কীব’ৰ্ডৰ শ্বৰ্টকাটত টিপিছে৷ আপুনি এইটো অন কৰিব বিচাৰেনে?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -559,6 +559,7 @@ <translation id="6054305421211936131">স্মার্ট কার্ডৰ জৰিয়তে ছাইন ইন কৰক</translation> <translation id="6059276912018042191">Chromeৰ শেহতীয়া টেব</translation> <translation id="6062360702481658777">আপোনাক স্বয়ংক্ৰিয়ভাৱে <ph name="LOGOUT_TIME_LEFT" />ত ছাইন আউট কৰোৱা হ’ব।</translation> +<translation id="6073451960410192870">ৰেকৰ্ডিং কৰা বন্ধ কৰক</translation> <translation id="607652042414456612">আপোনাৰ কম্পিউটাৰটো নিকটৱৰ্তী ডিভাইচসমূহে পাব পৰা অৱস্থাত আছে আৰু এইটো <ph name="ADDRESS" /> ঠিকনাৰ সৈতে "<ph name="NAME" />" হিচাপে প্ৰদর্শিত হ’ব</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />। <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">অতিথিৰ ছেশ্বনত Google Assistant উপলব্ধ নহয়।</translation> @@ -722,7 +723,6 @@ <translation id="7654687942625752712">কথিত প্ৰতিক্ৰিয়া অক্ষম কৰিবলৈ দুয়োটা ভলিউম বুটাম টিপি পাঁচ ছেকেণ্ডৰ বাবে ধৰি ৰাখক।</translation> <translation id="7658239707568436148">বাতিল কৰক</translation> <translation id="7662283695561029522">কনফিগাৰ কৰিবলৈ টিপক</translation> -<translation id="7683326293741220026">আপোনাৰ ফ’নটোত ব্লুটুথ অফ কৰি থোৱা আছে যেন লাগিছে। ফ’ন হাব ব্যৱহাৰ কৰিবলৈ অনুগ্ৰহ কৰি আপোনাৰ ফ’নটোত ব্লুটুথ অন কৰক।</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{১টা জাননী}one{#টা জাননী}other{#টা জাননী}}</translation> <translation id="7724603315864178912">কাট কৰক</translation> @@ -769,7 +769,6 @@ <translation id="8054466585765276473">বেটাৰিৰ বাকী থকা সময় গণনা কৰি থকা হৈছে</translation> <translation id="8061464966246066292">ৰঙৰ উচ্চ প্ৰভেদ</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" /> লৈ স্ক্ৰীন কাষ্ট কৰা বন্ধ কৰক</translation> -<translation id="8108657971283652031">আপোনাৰ ফ’নৰ ইণ্টাৰনেট সংযোগ বিস্তাৰ কৰক, অসুবিধা নিদিব নিয়ন্ত্ৰণ কৰক আৰু আপোনাৰ ফ’নটো ক’ত আছে জানক। আপোনাৰ <ph name="DEVICE_TYPE" />ত নিজৰ ফ’নৰ পৰা সক্ৰিয় হৈ থকা Chrome টেবসমূহ চাওক।</translation> <translation id="8113423164597455979">অন, সকলো এপতে</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">নিশ্চিত কৰক</translation> @@ -818,6 +817,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" />এ <ph name="SPECIFIED_RESOLUTION" /> সমৰ্থন নকৰে। ৰিজ’লিউশ্বনটো <ph name="FALLBACK_RESOLUTION" />লৈ সলনি কৰা হৈছে। সালসলনিসমূহ ৰাখিবলৈ নিশ্চিত কৰকত ক্লিক কৰক। পূৰ্বৱৰ্তী ছেটিংসমূহ <ph name="TIMEOUT_SECONDS" />ত পুনঃস্থাপন কৰা হ’ব।</translation> <translation id="8513108775083588393">স্বয়ং-ঘূৰ্ণন</translation> <translation id="8517041960877371778">আপোনাৰ <ph name="DEVICE_TYPE" /> অন কৰি থোৱা অৱস্থাত চার্জ নহ'ব পাৰে।</translation> +<translation id="8553395910833293175">ইতিমধ্যে আটাইবোৰ ডেস্কক দায়িত্ব প্ৰদান কৰা হৈছে।</translation> <translation id="8563862697512465947">জাননীৰ ছেটিংসমূহ</translation> <translation id="857201607579416096">স্ক্ৰীনখনৰ তলৰ সোঁফালৰ কোণটোলৈ মেনুখন নিয়া হৈছে।</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb index 816cb97d..67e5f3d 100644 --- a/ash/strings/ash_strings_az.xtb +++ b/ash/strings/ash_strings_az.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Dili ayarlayın</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Ekranı Kilidləyin</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Salam, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> dəyişdirin. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Kursoru hərəkət etdirin</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" üçün <ph name="INTENT" /> əldə edin</translation> +<translation id="3105917916468784889">Skrinşot çəkin</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Güncəlləşmək üçün yenidən başladın</translation> <translation id="3139942575505304791">Masa 1</translation> -<translation id="3147157020428159854">Ekran çəkilişi dayandırılıb</translation> <translation id="315116470104423982">Mobil data</translation> <translation id="3151786313568798007">Oriyentasiya</translation> <translation id="3153444934357957346">Çoxsaylı girişdə maksimum <ph name="MULTI_PROFILE_USER_LIMIT" /> hesabınız ola bilər.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875"><ph name="COUNT" /> bildirişin hamısını silin</translation> <translation id="4302592941791324970">Əlçatan deyil</translation> <translation id="4303223480529385476">Status sahəsini genişləndirin</translation> -<translation id="4315586716182276649">Telefonun internet bağlantısını istifadə edin, Narahat Etməyin rejiminə nəzarət edin və cihazınızın məkanını təyin edin. <ph name="DEVICE_TYPE" /> cihazında telefonunuzdan aktiv Chrome tablarına baxın.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Yüksək kontrast üçün klaviatura qısayoluna basdınız. Onu aktiv etmək istəyirsiniz?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Smart kart ilə daxil olun</translation> <translation id="6059276912018042191">Son Chrome tabları</translation> <translation id="6062360702481658777"><ph name="LOGOUT_TIME_LEFT" /> ərzində avtomatik çıxış edəcəksiniz.</translation> +<translation id="6073451960410192870">Çəkməyi dayandırın</translation> <translation id="607652042414456612">Kompeteriniz yaxınlıqdakı Bluetooth cihazlarına görünür və "<ph name="NAME" />" adına, <ph name="ADDRESS" /> ünvanına malikdir.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Assistent qonaq sessiyasında əlçatan deyil.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Səsləndirilmiş rəyi deaktiv etmək üçün hər iki səs düyməsinə beş saniyə basıb saxlayın.</translation> <translation id="7658239707568436148">Ləğv edin</translation> <translation id="7662283695561029522">Konfiqurasiya etmək üçün klikləyin</translation> -<translation id="7683326293741220026">Görünür, Bluetooth telefonunuzda deaktiv edilib. Telefon Mərkəzindən istifadə etmək üçün telefonunuzda Bluetooth'u aktiv edin.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 bildiriş}other{# bildiriş}}</translation> <translation id="7724603315864178912">Kəsin</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Enerji vaxtı hesablanır.</translation> <translation id="8061464966246066292">Yüksək kontrast</translation> <translation id="8098591350844501178">Ekranın <ph name="RECEIVER_NAME" /> üzrə yayımlanmasını dayandırın</translation> -<translation id="8108657971283652031">Telefonun internet bağlantısını artırın, Narahat Etməyin rejiminə nəzarət edin və telefonunuzun məkanını təyin edin. <ph name="DEVICE_TYPE" /> cihazında telefonunuzdan aktiv Chrome tablarına baxın.</translation> <translation id="8113423164597455979">Bütün tətbiqlərdə aktivdir</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Təsdiq edin</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> <ph name="SPECIFIED_RESOLUTION" /> əksetmə qabiliyyətini dəstəkləmir. Əksetmə qabiliyyəti <ph name="FALLBACK_RESOLUTION" /> olaraq dəyişildi. Dəyişiklikləri saxlamaq üçün "təsdiq edin" üzərinə klikləyin. Əvvəlki ayarlar <ph name="TIMEOUT_SECONDS" /> ərzində bərpa ediləcək.</translation> <translation id="8513108775083588393">Avtodönüş</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> cihazınız aktiv olan zaman elektrik yığmaya bilər.</translation> +<translation id="8553395910833293175">Artıq bütün masalara təyin olunub.</translation> <translation id="8563862697512465947">Bildiriş Ayarları</translation> <translation id="857201607579416096">Menyu ekranın aşağı sağ küncünə köçürülüb.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> işlədilir</translation> <translation id="899350903320462459">Bildiriş əməliyyatını icra etmək üçün cihazı <ph name="LOGIN_ID" /> olaraq kiliddən çıxarın</translation> <translation id="9017320285115481645">Family Link valideyn girişi kodunu daxil edin.</translation> +<translation id="9024331582947483881">Tam ekran</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> üzrə ayarları açın</translation> <translation id="9056839673611986238">Cihaz bərpa ediləcək</translation> <translation id="9065203028668620118">Düzəliş edin</translation>
diff --git a/ash/strings/ash_strings_be.xtb b/ash/strings/ash_strings_be.xtb index 73063ef..e7a759f 100644 --- a/ash/strings/ash_strings_be.xtb +++ b/ash/strings/ash_strings_be.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Памочнік</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Задайце мову</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Экран блакіроўкі</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Вітаем, <ph name="USERNAME" />!</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Уключыць або выключыць функцыю "<ph name="FEATURE_NAME" />". <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Перамясціць курсор</translation> <translation id="3098580329624789136">Атрымаць <ph name="INTENT" /> для "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Зрабіць здымак экрана</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Перазапусціце для абнаўлення</translation> <translation id="3139942575505304791">Стол 1</translation> -<translation id="3147157020428159854">Запіс экрана спынены</translation> <translation id="315116470104423982">Мабільная перадача даных</translation> <translation id="3151786313568798007">Арыентацыя</translation> <translation id="3153444934357957346">Максімальная колькасць уліковых запісаў для функцыі ўваходу ў некалькі ўліковых запісаў: <ph name="MULTI_PROFILE_USER_LIMIT" />.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Выдаліць усе апавяшчэнні (<ph name="COUNT" />)</translation> <translation id="4302592941791324970">Недаступна</translation> <translation id="4303223480529385476">Разгарнуць панэль стану</translation> -<translation id="4315586716182276649">Абагульвайце інтэрнэт-падключэнне тэлефона, кіруйце рэжымам "Не турбаваць" і вызначайце месцазнаходжанне прылады. Праглядайце актыўныя ўкладкі Chrome з тэлефона на прыладзе <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Вы націснулі спалучэнне клавіш для рэжыму высокай кантраснасці. Уключыць высокую кантраснасць?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Увайсці з дапамогай разумнай карткі</translation> <translation id="6059276912018042191">Нядаўна адкрытыя ўкладкі Chrome</translation> <translation id="6062360702481658777">Праз <ph name="LOGOUT_TIME_LEFT" /> будзе выкананы аўтаматычны выхад.</translation> +<translation id="6073451960410192870">Спыніць запіс</translation> <translation id="607652042414456612">Ваш камп'ютар бачны для прылад Bluetooth паблізу, ён будзе адлюстроўвацца як "<ph name="NAME" />" з адрасам <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Памочнік Google недаступны ў гасцявым сеансе.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Каб выключыць галасавую зваротную сувязь, націсніце і ўтрымлівайце на працягу пяці секунд абедзве клавішы гучнасці.</translation> <translation id="7658239707568436148">Скасаваць</translation> <translation id="7662283695561029522">Дакраніцеся, каб сканфігураваць</translation> -<translation id="7683326293741220026">Здаецца, на тэлефоне выключана падключэнне па Bluetooth. Уключыце яго, каб выкарыстоўваць функцыю "Тэлефонны цэнтр".</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 апавяшчэнне}one{# апавяшчэнне}few{# апавяшчэнні}many{# апавяшчэнняў}other{# апавяшчэння}}</translation> <translation id="7724603315864178912">Выразаць</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Разлічваецца час да разрадкі акумулятара.</translation> <translation id="8061464966246066292">Высокая кантраснасць</translation> <translation id="8098591350844501178">Спыніць трансляцыю экрана на прыёмнік "<ph name="RECEIVER_NAME" />"</translation> -<translation id="8108657971283652031">Абагульвайце інтэрнэт-падключэнне тэлефона, кіруйце рэжымам "Не турбаваць" і вызначайце месцазнаходжанне тэлефона. Праглядайце актыўныя ўкладкі Chrome з тэлефона на прыладзе <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Уключана, усе праграмы</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Пацвердзіць</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> не падтрымлівае раздзяляльнасць <ph name="SPECIFIED_RESOLUTION" />. Прыменена раздзяляльнасць <ph name="FALLBACK_RESOLUTION" />. Каб захаваць змяненні, націсніце "Пацвердзіць". Папярэднія налады будуць адноўлены праз <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Аўтапаварот</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> можа не зараджацца ва ўключаным стане.</translation> +<translation id="8553395910833293175">Акно ўжо даступнае на ўсіх працоўных сталах.</translation> <translation id="8563862697512465947">Налады апавяшчэнняў</translation> <translation id="857201607579416096">Меню перамешчана ў правы ніжні вугал экрана.</translation> <translation id="8594115950068821369">–<ph name="FORMATTED_TIME" /></translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb index dabb0e6..9ef92aea 100644 --- a/ash/strings/ash_strings_bg.xtb +++ b/ash/strings/ash_strings_bg.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Асистент</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Задайте език</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Заключване на екрана</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Здравейте, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Превключване на „<ph name="FEATURE_NAME" />“. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Преместване на курсора</translation> <translation id="3098580329624789136">Извеждане на <ph name="INTENT" /> за „<ph name="QUERY" />“</translation> +<translation id="3105917916468784889">Създаване на екранна снимка</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Рестартирайте, за да актуализирате</translation> <translation id="3139942575505304791">Работен кът 1</translation> -<translation id="3147157020428159854">Записването на екрана бе спряно</translation> <translation id="315116470104423982">Мобилни данни</translation> <translation id="3151786313568798007">Ориентация</translation> <translation id="3153444934357957346">Можете да използвате най-много <ph name="MULTI_PROFILE_USER_LIMIT" /> профила с функцията за централизиран вход.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Изчистване на всичките <ph name="COUNT" /> известия</translation> <translation id="4302592941791324970">Не е налице</translation> <translation id="4303223480529385476">Разгъване на лентата на състоянието</translation> -<translation id="4315586716182276649">Споделяйте връзката с интернет на телефона си, контролирайте режима „Не безпокойте“ и намирайте устройството си. Преглеждайте на <ph name="DEVICE_TYPE" /> разделите на Chrome, които са активни на телефона ви.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Използвахте клавишната комбинация за режима на висок контраст. Искате ли да го включите?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Влизане със смарткарта</translation> <translation id="6059276912018042191">Скорошни раздели на Chrome</translation> <translation id="6062360702481658777">Ще излезете автоматично след <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Спиране на записа</translation> <translation id="607652042414456612">Компютърът ви е откриваем за устройства с Bluetooth наблизо и ще се показва като „<ph name="NAME" />“ с адрес <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Асистент не се поддържа по време на сесия като гост.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Натиснете и двата бутона за силата на звука и ги задръжте за пет секунди, за да деактивирате обратната връзка с говор.</translation> <translation id="7658239707568436148">Отказ</translation> <translation id="7662283695561029522">Докоснете, за да конфигурирате</translation> -<translation id="7683326293741220026">Изглежда, че функцията за Bluetooth на телефона ви е изключена. Включете я, за да използвате Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 известие}other{# известия}}</translation> <translation id="7724603315864178912">Изрязване</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Издръжливостта на батерията се изчислява.</translation> <translation id="8061464966246066292">Висок контраст</translation> <translation id="8098591350844501178">Спиране на предаването на екрана към „<ph name="RECEIVER_NAME" />“</translation> -<translation id="8108657971283652031">Споделяйте връзката с интернет на телефона си, контролирайте режима „Не безпокойте“ и намирайте устройството си. Преглеждайте на <ph name="DEVICE_TYPE" /> разделите на Chrome, които са активни на телефона ви.</translation> <translation id="8113423164597455979">Вкл. за всички</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation> <translation id="8131740175452115882">Потвърждаване</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> не поддържа <ph name="SPECIFIED_RESOLUTION" />. Разделителната способност бе променена на <ph name="FALLBACK_RESOLUTION" />. Кликнете върху бутона за потвърждаване, за да запазите промените. Предишните настройки ще бъдат възстановени след <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Автоматично</translation> <translation id="8517041960877371778">Възможно е вашият <ph name="DEVICE_TYPE" /> да не се зарежда, докато е включен.</translation> +<translation id="8553395910833293175">Вече е прехвърлено във всички работни кътове.</translation> <translation id="8563862697512465947">Настройки за известия</translation> <translation id="857201607579416096">Менюто е преместено в долния десен ъгъл на екрана.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Използвате <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Отключете устройството като <ph name="LOGIN_ID" />, за да се изпълни действието от известието</translation> <translation id="9017320285115481645">Въведете кода за достъп на родител от Family Link.</translation> +<translation id="9024331582947483881">цял екран</translation> <translation id="9047624247355796468">Отваряне на настройките за <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Устройството ще бъде върнато към по-ранна версия</translation> <translation id="9065203028668620118">Редактиране</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb index 138257c..a59d8abc 100644 --- a/ash/strings/ash_strings_bn.xtb +++ b/ash/strings/ash_strings_bn.xtb
@@ -232,10 +232,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> টগল করুন। <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">কার্সর সরান</translation> <translation id="3098580329624789136">"<ph name="QUERY" />"-এর জন্য <ph name="INTENT" /> পান</translation> +<translation id="3105917916468784889">স্ক্রিনশট নিন</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (ব্লুটুথ)</translation> <translation id="3126069444801937830">আপডেট করার জন্য পুনরারম্ভ করুন</translation> <translation id="3139942575505304791">ডেস্ক ১</translation> -<translation id="3147157020428159854">স্ক্রিন রেকর্ডিং করা বন্ধ করা হয়েছে</translation> <translation id="315116470104423982">মোবাইল ডেটা</translation> <translation id="3151786313568798007">সজ্জা</translation> <translation id="3153444934357957346">একধিক সাইন-ইনে আপনার সর্বাধিক <ph name="MULTI_PROFILE_USER_LIMIT" />টি অ্যাকাউন্ট থাকতে পারে।</translation> @@ -366,7 +366,6 @@ <translation id="4296136865091727875"><ph name="COUNT" />টি বিজ্ঞপ্তি মুছে ফেলুন</translation> <translation id="4302592941791324970">উপলভ্য নেই</translation> <translation id="4303223480529385476">স্ট্যাটাস এরিয়া বড় করুন</translation> -<translation id="4315586716182276649">আপনার ফোনের ইন্টারনেট কানেকশন প্রসারিত করুন, 'বিরক্ত করবে না' মোড নিয়ন্ত্রণ করুন এবং আপনার ডিভাইসের অবস্থান নির্ণয় করুন। আপনার <ph name="DEVICE_TYPE" /> থেকে অ্যাক্টিভ Chrome ট্যাব দেখুন।</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">উচ্চ কনট্রাস্টের জন্য আপনি কীবোর্ড শর্টকাট টিপেছেন। আপনি কি এটি চালু করতে চান?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +559,7 @@ <translation id="6054305421211936131">স্মার্ট কার্ড দিয়ে সাইন-ইন করুন</translation> <translation id="6059276912018042191">Chrome-এ সম্প্রতি খোলা ট্যাবগুলি</translation> <translation id="6062360702481658777">আপনি <ph name="LOGOUT_TIME_LEFT" /> এর মধ্যে স্বয়ংক্রিয়ভাবে প্রস্থান করুন হবেন৷</translation> +<translation id="6073451960410192870">রেকর্ডিং বন্ধ করুন</translation> <translation id="607652042414456612">আপনার কম্পিউটার কাছাকাছি ব্লুটুথ ডিভাইসে খুঁজে পাওয়া সম্ভব এবং ঠিকানা <ph name="ADDRESS" /> সমেত "<ph name="NAME" />" হিসাবে প্রদর্শিত হবে</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />। <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google অ্যাসিস্ট্যান্ট কোনও গেস্ট সেশনে উপলভ্য নয়।</translation> @@ -726,7 +726,6 @@ <translation id="7654687942625752712">পড়ে শোনানো বিকল্প চালু করতে পাঁচ সেকেন্ডের জন্য ভলিউম কীগুলি প্রেস করে ধরে রাখুন।</translation> <translation id="7658239707568436148">বাতিল</translation> <translation id="7662283695561029522">কনফিগার করতে ট্যাপ করুন</translation> -<translation id="7683326293741220026">মনে হচ্ছে যে আপনার ফোনে ব্লুটুথ বন্ধ রয়েছে। 'ফোন হাব' ফিচার ব্যবহার করতে, আপনার ফোনে ব্লুটুথ চালু করুন।</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{১টি বিজ্ঞপ্তি}one{#টি বিজ্ঞপ্তি}other{#টি বিজ্ঞপ্তি}}</translation> <translation id="7724603315864178912">কাটুন</translation> @@ -774,7 +773,6 @@ <translation id="8054466585765276473">ব্যাটারি সময় গণনা করা হচ্ছে।</translation> <translation id="8061464966246066292">উচ্চ বৈসাদৃশ্য</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" /> এ স্ক্রিন কাস্ট করা বন্ধ করুন</translation> -<translation id="8108657971283652031">আপনার ফোনের ইন্টারনেট কানেকশন প্রসারিত করুন, 'বিরক্ত করবে না' মোড নিয়ন্ত্রণ করুন এবং আপনার ফোনের অবস্থান নির্ণয় করুন। আপনার <ph name="DEVICE_TYPE" /> থেকে অ্যাক্টিভ Chrome ট্যাব দেখুন।</translation> <translation id="8113423164597455979">সমস্ত অ্যাপে</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° সেঃ</translation> <translation id="8131740175452115882">নিশ্চিত হন</translation> @@ -881,6 +879,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> ব্যবহার করা হচ্ছে</translation> <translation id="899350903320462459">বিজ্ঞপ্তি সম্পর্কিত অ্যাকশনের জন্য <ph name="LOGIN_ID" /> হিসেবে ডিভাইস আনলক করুন</translation> <translation id="9017320285115481645">Family Link-এর অভিভাবকীয় অ্যাক্সেস কোডটি লিখুন।</translation> +<translation id="9024331582947483881">পূর্ণ স্ক্রিন</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> নেটওয়ার্কের জন্য সেটিংস খুলুন</translation> <translation id="9056839673611986238">ডিভাইস রোল ব্যাক করা হবে</translation> <translation id="9065203028668620118">সম্পাদনা</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb index 45d6526..0cc97eb 100644 --- a/ash/strings/ash_strings_bs.xtb +++ b/ash/strings/ash_strings_bs.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Postavite jezik</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Zaključaj zaslon</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Zdravo, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Uključite/isključite funkciju <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Pomjeranje kursora</translation> <translation id="3098580329624789136">Preuzmite sljedeće: <ph name="INTENT" /> za "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Napravi snimak ekrana</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Ponovo pokrenite za ažuriranje</translation> <translation id="3139942575505304791">Radna površina 1</translation> -<translation id="3147157020428159854">Snimanje ekrana je zaustavljeno</translation> <translation id="315116470104423982">Mobilni podaci</translation> <translation id="3151786313568798007">Orijentacija</translation> <translation id="3153444934357957346">Maksimalan broj računa koje možete imati u višestrukoj prijavi je <ph name="MULTI_PROFILE_USER_LIMIT" />.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Brisanje svih obavijesti (<ph name="COUNT" />)</translation> <translation id="4302592941791324970">Nije dostupno</translation> <translation id="4303223480529385476">Proširi područje statusa</translation> -<translation id="4315586716182276649">Poboljšajte internetsku vezu telefona, kontrolirajte funkciju Ne ometaj i locirajte uređaj. Pogledajte aktivne kartice Chromea s telefona na uređaju <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Pritisnuli ste prečicu na tastaturi za visoki kontrast. Želite li ga uključiti?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Prijava pomoću pametne kartice</translation> <translation id="6059276912018042191">Nedavne kartice Chromea</translation> <translation id="6062360702481658777">Bit ćete automatski odjavljeni za <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Zaustavi snimanje</translation> <translation id="607652042414456612">Vaš računar je vidljiv Bluetooth uređajima u blizini i pojavit će se kao "<ph name="NAME" />" s adresom <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Asistent nije dostupan u sesiji gosta.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Pritisnite obje tipke za podešavanje jačine zvuka i držite ih pet sekundi da onemogućite govorne povratne informacije.</translation> <translation id="7658239707568436148">Otkaži</translation> <translation id="7662283695561029522">Dodirnite za konfiguriranje</translation> -<translation id="7683326293741220026">Izgleda da je Bluetooth isključen na vašem telefonu. Uključite Bluetooth na telefonu da koristite Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 obavještenje}one{# obavještenje}few{# obavještenja}other{# obavještenja}}</translation> <translation id="7724603315864178912">Izreži</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Izračunava se vrijeme baterije.</translation> <translation id="8061464966246066292">Visoki kontrast</translation> <translation id="8098591350844501178">Prestanak emitiranja ekrana na prijemniku <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Poboljšajte internetsku vezu telefona, kontrolirajte funkciju Ne ometaj i locirajte telefon. Pogledajte aktivne kartice Chromea s telefona na uređaju <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Uključeno, sve</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Potvrdi</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> ne podržava <ph name="SPECIFIED_RESOLUTION" />. Rezolucija je promijenjena na <ph name="FALLBACK_RESOLUTION" />. Kliknite Potvrdi da zadržite promjene. Prethodne postavke će se vratiti za <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Aut. rotiranje</translation> <translation id="8517041960877371778">Moguće je da se vaš uređaj <ph name="DEVICE_TYPE" /> neće puniti dok je uključen.</translation> +<translation id="8553395910833293175">Već je dodijeljeno svim radnim površinama.</translation> <translation id="8563862697512465947">Postavke obavijesti</translation> <translation id="857201607579416096">Meni je pomjeren u donji desni ugao ekrana.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Koristi se <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Otključajte uređaj kao <ph name="LOGIN_ID" /> da izvršite radnju obavještenja</translation> <translation id="9017320285115481645">Unesite kôd za pristup roditelja za Family Link.</translation> +<translation id="9024331582947483881">cijeli zaslon</translation> <translation id="9047624247355796468">Otvorite postavke za mrežu <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Uređaj će se vratiti na prethodnu verziju.</translation> <translation id="9065203028668620118">Uredi</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb index 6cc2fcc..f7ba3f6f 100644 --- a/ash/strings/ash_strings_ca.xtb +++ b/ash/strings/ash_strings_ca.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Estableix el teu idioma</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Pantalla de bloqueig</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hola, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Commuta <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Mou el cursor</translation> <translation id="3098580329624789136">Obtén la <ph name="INTENT" /> de: <ph name="QUERY" /></translation> +<translation id="3105917916468784889">Fes una captura de pantalla</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Reinicia per actualitzar</translation> <translation id="3139942575505304791">Escriptori 1</translation> -<translation id="3147157020428159854">La gravació de pantalla s'ha aturat</translation> <translation id="315116470104423982">Dades mòbils</translation> <translation id="3151786313568798007">Orientació</translation> <translation id="3153444934357957346">Només pots tenir <ph name="MULTI_PROFILE_USER_LIMIT" /> comptes com a màxim en un inici de sessió múltiple.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Esborra les <ph name="COUNT" /> notificacions</translation> <translation id="4302592941791324970">No disponible</translation> <translation id="4303223480529385476">Desplega l'àrea d'estat</translation> -<translation id="4315586716182276649">Amplia la connexió a Internet del telèfon, controla la funció No molestis i localitza el teu dispositiu. Consulta al teu <ph name="DEVICE_TYPE" /> les pestanyes de Chrome actives del telèfon.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Has premut la tecla de drecera de l'alt contrast. Vols activar-lo?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Inicia la sessió amb la targeta intel·ligent</translation> <translation id="6059276912018042191">Pestanyes de Chrome recents</translation> <translation id="6062360702481658777">Es tancarà la sessió automàticament d'aquí a <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Atura la gravació</translation> <translation id="607652042414456612">El vostre ordinador està visible als dispositius Bluetooth propers i apareixerà com a "<ph name="NAME" />" amb l'adreça <ph name="ADDRESS" />.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" />.</translation> <translation id="612734058257491180">L'Assistent de Google no està disponible a les sessions de convidat.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Mantén premudes les dues tecles de volum durant cinc segons per desactivar els avisos de veu.</translation> <translation id="7658239707568436148">Cancel·la</translation> <translation id="7662283695561029522">Toca per configurar</translation> -<translation id="7683326293741220026">Sembla que el Bluetooth està desactivat al teu telèfon. Activa'l per utilitzar El meu telèfon.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificació}other{# notificacions}}</translation> <translation id="7724603315864178912">Retalla</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">S'està calculant el temps de la bateria.</translation> <translation id="8061464966246066292">Contrast alt</translation> <translation id="8098591350844501178">Deixa d'emetre la pantalla a <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Amplia la connexió a Internet del telèfon, controla la funció No molestis i localitza el teu telèfon. Consulta al teu <ph name="DEVICE_TYPE" /> les pestanyes de Chrome actives del telèfon.</translation> <translation id="8113423164597455979">Sí, en totes</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Confirma</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> no admet la resolució <ph name="SPECIFIED_RESOLUTION" />. La resolució ha canviat a <ph name="FALLBACK_RESOLUTION" />. Fes clic a Confirma per conservar els canvis. La configuració anterior es restaurarà d'aquí a <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Rotació autom.</translation> <translation id="8517041960877371778">És possible que el dispositiu <ph name="DEVICE_TYPE" /> no es carregui mentre està encès.</translation> +<translation id="8553395910833293175">Ja està assignada a tots els escriptoris.</translation> <translation id="8563862697512465947">Configuració de notificació</translation> <translation id="857201607579416096">El menú s'ha mogut a l'extrem inferior dret de la pantalla.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">S'està utilitzant <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Desbloqueja el dispositiu com a <ph name="LOGIN_ID" /> per dur a terme l'acció que indica la notificació</translation> <translation id="9017320285115481645">Introdueix el codi d'accés parental de Family Link.</translation> +<translation id="9024331582947483881">pantalla completa</translation> <translation id="9047624247355796468">Obre la configuració de la xarxa <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">El dispositiu es revertirà a una versió anterior</translation> <translation id="9065203028668620118">Edita</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb index 770f7a8..af48e76 100644 --- a/ash/strings/ash_strings_cs.xtb +++ b/ash/strings/ash_strings_cs.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Nastavit jazyk</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Zamknout obrazovku</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Dobrý den, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Zapnout nebo vypnout funkci <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Přesunout kurzor</translation> <translation id="3098580329624789136">Získání <ph name="INTENT" /> pro dotaz „<ph name="QUERY" />“</translation> +<translation id="3105917916468784889">Pořídit snímek obrazovky</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Restartovat a aktualizovat</translation> <translation id="3139942575505304791">Plocha 1</translation> -<translation id="3147157020428159854">Záznam obrazovky ukončen</translation> <translation id="315116470104423982">Mobilní datové přenosy</translation> <translation id="3151786313568798007">Orientace</translation> <translation id="3153444934357957346">Počet účtů, které lze v rámci vícenásobného přihlášení používat, je omezen na <ph name="MULTI_PROFILE_USER_LIMIT" />.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Vymazat všechna oznámení (<ph name="COUNT" />)</translation> <translation id="4302592941791324970">Nedostupné</translation> <translation id="4303223480529385476">Rozbalit stavovou oblast</translation> -<translation id="4315586716182276649">Zpřístupněte internetové připojení telefonu, ovládejte režim Nerušit a zjistěte polohu zařízení. Zobrazte v zařízení <ph name="DEVICE_TYPE" /> aktivní karty Chromu z telefonu.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Stiskli jste klávesovou zkratku pro vysoký kontrast. Chcete ho zapnout?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Přihlásit se pomocí chytré karty</translation> <translation id="6059276912018042191">Nedávno použité karty Chromu</translation> <translation id="6062360702481658777">Za <ph name="LOGOUT_TIME_LEFT" /> budete automaticky odhlášeni.</translation> +<translation id="6073451960410192870">Zastavit nahrávání</translation> <translation id="607652042414456612">Váš počítač mohou objevit okolní zařízení Bluetooth, ve kterých se bude zobrazovat s názvem „<ph name="NAME" />“ a adresou <ph name="ADDRESS" />.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Asistent Google v relaci hosta není k dispozici.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Hlasovou odezvu vypnete podržením obou tlačítek hlasitosti po dobu pěti sekund.</translation> <translation id="7658239707568436148">Zrušit</translation> <translation id="7662283695561029522">Klepnutím zahájíte konfiguraci</translation> -<translation id="7683326293741220026">Na telefonu je pravděpodobně vypnuté rozhraní Bluetooth. Pokud chcete používat Telefonní centrum, zapněte Bluetooth.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 oznámení}few{# oznámení}many{# oznámení}other{# oznámení}}</translation> <translation id="7724603315864178912">Vyjmout</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Výpočet doby výdrže baterie.</translation> <translation id="8061464966246066292">Vysoký kontrast</translation> <translation id="8098591350844501178">Ukončit odesílání obrazovky do přijímače <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Zpřístupněte internetové připojení telefonu, ovládejte režim Nerušit a zjistěte polohu telefonu. Zobrazte v zařízení <ph name="DEVICE_TYPE" /> aktivní karty Chromu z telefonu.</translation> <translation id="8113423164597455979">Zap., všechny</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Potvrdit</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> rozlišení <ph name="SPECIFIED_RESOLUTION" /> nepodporuje. Rozlišení bylo změněno na <ph name="FALLBACK_RESOLUTION" />. Chcete-li změny ponechat, potvrďte je. Předchozí nastavení bude obnoveno za <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Autom. otáčení</translation> <translation id="8517041960877371778">Je možné, že když bude zařízení <ph name="DEVICE_TYPE" /> zapnuté, nebude se nabíjet.</translation> +<translation id="8553395910833293175">Již přiřazeno ke všem plochám.</translation> <translation id="8563862697512465947">Nastavení oznámení</translation> <translation id="857201607579416096">Nabídka byla přesunuta do pravého dolního rohu obrazovky.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Metoda zadávání: <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Chcete-li provést akci s oznámením, odemkněte zařízení jako <ph name="LOGIN_ID" /></translation> <translation id="9017320285115481645">Zadejte svůj rodičovský přístupový kód služby Family Link.</translation> +<translation id="9024331582947483881">celá obrazovka</translation> <translation id="9047624247355796468">Otevřít nastavení sítě <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">V zařízení bude obnovena předchozí verze systému</translation> <translation id="9065203028668620118">Upravit</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb index 23b043e0..766824c 100644 --- a/ash/strings/ash_strings_da.xtb +++ b/ash/strings/ash_strings_da.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Angiv dit sprog</translation> +<translation id="1961832440516943645"><ph name="DATE" /> <ph name="TIME" /></translation> <translation id="1962969542251276847">Skærmlås</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hej <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Slå <ph name="FEATURE_NAME" /> til/fra. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Flyttemarkør</translation> <translation id="3098580329624789136">Få <ph name="INTENT" /> til "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Tag screenshot</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Genstart for at opdatere</translation> <translation id="3139942575505304791">Skrivebord 1</translation> -<translation id="3147157020428159854">Skærmoptagelsen er stoppet</translation> <translation id="315116470104423982">Mobildata</translation> <translation id="3151786313568798007">Retning</translation> <translation id="3153444934357957346">Du kan kun have op til <ph name="MULTI_PROFILE_USER_LIMIT" /> konti i samlet login fra flere konti.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Ryd alle <ph name="COUNT" /> notifikationer</translation> <translation id="4302592941791324970">Ikke tilgængelig</translation> <translation id="4303223480529385476">Udvid statusområde</translation> -<translation id="4315586716182276649">Udvid din telefons internetforbindelse, administrer Forstyr ikke, og find din enhed. Se aktive Chrome-faner fra din telefon på din <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Du trykkede på tastaturgenvejen for høj kontrast. Vil du aktivere indstillingen?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Log ind med chipkort</translation> <translation id="6059276912018042191">Seneste Chrome-faner</translation> <translation id="6062360702481658777">Du bliver automatisk logget ud om <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Stop optagelse</translation> <translation id="607652042414456612">Din computer kan registreres af Bluetooth-enheder i nærheden, og den vil blive vist som "<ph name="NAME" />" med adressen <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Assistent er ikke tilgængelig i en gæstesession.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Tryk på begge lydstyrketaster, og hold dem nede i fem sekunder for at deaktivere oplæsning.</translation> <translation id="7658239707568436148">Annuller</translation> <translation id="7662283695561029522">Tryk for at konfigurere</translation> -<translation id="7683326293741220026">Det ser ud til, at Bluetooth er deaktiveret på din telefon. Aktivér Bluetooth på din telefon for at bruge Telefonstyring.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notifikation}one{# notifikation}other{# notifikationer}}</translation> <translation id="7724603315864178912">Klip</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Beregner batteritid.</translation> <translation id="8061464966246066292">Høj kontrast</translation> <translation id="8098591350844501178">Stop skærmcast til <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Udvid din telefons internetforbindelse, administrer Forstyr ikke, og find din telefon. Se aktive Chrome-faner fra din telefon på din <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Til, alle apps</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Bekræft</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> understøtter ikke <ph name="SPECIFIED_RESOLUTION" />. Opløsningen blev ændret til <ph name="FALLBACK_RESOLUTION" />. Klik på Bekræft for at gemme ændringerne. De tidligere indstillinger gendannes om <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Autoroter</translation> <translation id="8517041960877371778">Din <ph name="DEVICE_TYPE" /> kan muligvis ikke oplades, mens den er tændt.</translation> +<translation id="8553395910833293175">Allerede tildelt til alle skriveborde.</translation> <translation id="8563862697512465947">Indstillinger for notifikationer</translation> <translation id="857201607579416096">Menuen blev flyttet til nederste højre hjørne af skærmen.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> anvendes</translation> <translation id="899350903320462459">Lås enheden op som <ph name="LOGIN_ID" /> for at udføre notifikationshandlingen</translation> <translation id="9017320285115481645">Angiv forældreadgangskoden til Family Link.</translation> +<translation id="9024331582947483881">fuld skærm</translation> <translation id="9047624247355796468">Åbn indstillingerne for <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">En tidligere version gendannes på enheden</translation> <translation id="9065203028668620118">Rediger</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb index 123cc95..7d545b1 100644 --- a/ash/strings/ash_strings_de.xtb +++ b/ash/strings/ash_strings_de.xtb
@@ -232,10 +232,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> ein-/ausschalten. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Textcursor verschieben</translation> <translation id="3098580329624789136"><ph name="INTENT" /> für "<ph name="QUERY" />" abrufen</translation> +<translation id="3105917916468784889">Screenshot aufnehmen</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Zum Aktualisieren neu starten</translation> <translation id="3139942575505304791">Desktop 1</translation> -<translation id="3147157020428159854">Bildschirmaufzeichnung angehalten</translation> <translation id="315116470104423982">Mobile Daten</translation> <translation id="3151786313568798007">Ausrichtung</translation> <translation id="3153444934357957346">Bei der Mehrfachanmeldung sind maximal <ph name="MULTI_PROFILE_USER_LIMIT" /> Konten zulässig.</translation> @@ -366,7 +366,6 @@ <translation id="4296136865091727875">Alle <ph name="COUNT" /> Benachrichtigungen löschen</translation> <translation id="4302592941791324970">Nicht verfügbar</translation> <translation id="4303223480529385476">Statusbereich maximieren</translation> -<translation id="4315586716182276649">Verwenden Sie Ihr Smartphone als mobilen Hotspot, deaktivieren Sie bei Bedarf die Einstellung „Bitte nicht stören“ und suchen Sie nach Ihrem Gerät. Sie können die aktiven Chrome-Tabs von Ihrem Smartphone auf Ihrem <ph name="DEVICE_TYPE" /> sehen.</translation> <translation id="4321179778687042513">Strg</translation> <translation id="4321776623976362024">Sie haben die Tastenkombination für den Modus "Hoher Kontrast" gedrückt. Möchten Sie ihn aktivieren?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +559,7 @@ <translation id="6054305421211936131">Mit Smartcard anmelden</translation> <translation id="6059276912018042191">Zuletzt geöffnete Chrome-Tabs</translation> <translation id="6062360702481658777">Sie werden in <ph name="LOGOUT_TIME_LEFT" /> automatisch abgemeldet.</translation> +<translation id="6073451960410192870">Aufnahme beenden</translation> <translation id="607652042414456612">Ihr Computer kann von Bluetooth-Geräten in der näheren Umgebung erkannt werden. Er erscheint als "<ph name="NAME" />" mit der Adresse <ph name="ADDRESS" />.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" />.</translation> <translation id="612734058257491180">In Gastsitzungen ist Google Assistant nicht verfügbar.</translation> @@ -725,7 +725,6 @@ <translation id="7654687942625752712">Sie können gesprochenes Feedback deaktivieren, indem Sie die beiden Lautstärketasten fünf Sekunden lang gedrückt halten.</translation> <translation id="7658239707568436148">Abbrechen</translation> <translation id="7662283695561029522">Zum Konfigurieren tippen</translation> -<translation id="7683326293741220026">Bluetooth ist auf Ihrem Smartphone deaktiviert. Aktivieren Sie Bluetooth auf Ihrem Smartphone mit Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 Benachrichtigung}other{# Benachrichtigungen}}</translation> <translation id="7724603315864178912">Ausschneiden</translation> @@ -773,7 +772,6 @@ <translation id="8054466585765276473">Akku-Laufzeit wird berechnet.</translation> <translation id="8061464966246066292">Hoher Kontrast</translation> <translation id="8098591350844501178">Streamen von Bildschirm an <ph name="RECEIVER_NAME" /> beenden</translation> -<translation id="8108657971283652031">Verwenden Sie Ihr Smartphone als mobilen Hotspot, deaktivieren Sie bei Bedarf die Einstellung „Bitte nicht stören“ und suchen Sie nach Ihrem Smartphone. Sie können die aktiven Chrome-Tabs von Ihrem Smartphone auf Ihrem <ph name="DEVICE_TYPE" /> sehen.</translation> <translation id="8113423164597455979">An: alle Apps</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Bestätigen</translation> @@ -880,6 +878,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> aktiv</translation> <translation id="899350903320462459">Wenn Sie die Benachrichtigungsaktion ausführen möchten, entsperren Sie das Gerät als <ph name="LOGIN_ID" /></translation> <translation id="9017320285115481645">Geben Sie Ihren Eltern-Zugangscode für Family Link ein.</translation> +<translation id="9024331582947483881">Vollbild</translation> <translation id="9047624247355796468">Einstellungen für <ph name="NETWORK_NAME" /> öffnen</translation> <translation id="9056839673611986238">Das Gerät wird zurückgesetzt</translation> <translation id="9065203028668620118">Bearbeiten</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb index aa1e31d..302ca20 100644 --- a/ash/strings/ash_strings_el.xtb +++ b/ash/strings/ash_strings_el.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Βοηθός</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Ρύθμιση της γλώσσας σας</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Οθόνη κλειδώματος</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Γεια σας, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Εναλλαγή λειτουργίας <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Μετακίνηση δείκτη ποντικιού</translation> <translation id="3098580329624789136">Λήψη του <ph name="INTENT" /> για το ερώτημα "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Λήψη στιγμιότυπου οθόνης</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Επανεκκίνηση για ενημέρωση</translation> <translation id="3139942575505304791">Γραφείο 1</translation> -<translation id="3147157020428159854">Η εγγραφή οθόνης διακόπηκε</translation> <translation id="315116470104423982">Δεδομένα κινητής τηλεφωνίας</translation> <translation id="3151786313568798007">Προσανατολισμός</translation> <translation id="3153444934357957346">Μπορείτε να χρησιμοποιήσετε έως <ph name="MULTI_PROFILE_USER_LIMIT" /> λογαριασμούς στη λειτουργία σύνδεσης σε πολλούς λογαριασμούς.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Διαγραφή και των <ph name="COUNT" /> ειδοποιήσεων</translation> <translation id="4302592941791324970">Μη διαθέσιμη</translation> <translation id="4303223480529385476">Ανάπτυξη περιοχής κατάστασης</translation> -<translation id="4315586716182276649">Επεκτείνετε τη σύνδεση του τηλεφώνου σας στο διαδίκτυο, ελέγξτε τη λειτουργία Μην ενοχλείτε και εντοπίστε τη συσκευή σας. Δείτε ενεργές καρτέλες του Chrome από το τηλέφωνό σας στη συσκευή <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Πατήσατε τη συντόμευση πληκτρολογίου για την υψηλή αντίθεση. Θέλετε να την ενεργοποιήσετε;</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Σύνδεση με έξυπνη κάρτα</translation> <translation id="6059276912018042191">Πρόσφατες καρτέλες Chrome</translation> <translation id="6062360702481658777">Θα αποσυνδεθείτε αυτόματα σε <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Διακοπή εγγραφής</translation> <translation id="607652042414456612">Ο υπολογιστής σας μπορεί να εντοπιστεί από κοντινές συσκευές Bluetooth και θα εμφανίζεται ως "<ph name="NAME" />" με διεύθυνση <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" />.</translation> <translation id="612734058257491180">Ο Βοηθός Google δεν είναι διαθέσιμος σε περιόδους σύνδεσης επισκέπτη.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Πατήστε παρατεταμένα και τα δύο πλήκτρα έντασης ήχου για πέντε δευτερόλεπτα, για να απενεργοποιήσετε τα εκφωνημένα σχόλια.</translation> <translation id="7658239707568436148">Ακύρωση</translation> <translation id="7662283695561029522">Πατήστε για διαμόρφωση</translation> -<translation id="7683326293741220026">Φαίνεται ότι το Bluetooth έχει απενεργοποιηθεί στο τηλέφωνό σας. Ενεργοποιήστε το Bluetooth στο τηλέφωνό σας για να χρησιμοποιήσετε το Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ειδοποίηση}other{# ειδοποιήσεις}}</translation> <translation id="7724603315864178912">Αποκοπή</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Υπολογισμός χρόνου μπαταρίας που απομένει.</translation> <translation id="8061464966246066292">Υψηλή αντίθεση</translation> <translation id="8098591350844501178">Διακοπή μετάδοσης οθόνης σε <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Επεκτείνετε τη σύνδεση του τηλεφώνου σας στο διαδίκτυο, ελέγξτε τη λειτουργία Μην ενοχλείτε και εντοπίστε το τηλέφωνό σας. Δείτε ενεργές καρτέλες του Chrome από το τηλέφωνό σας στη συσκευή <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Ενεργές, όλες οι εφαρμογές</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Επιβεβαίωση</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069">Η οθόνη <ph name="DISPLAY_NAME" /> δεν υποστηρίζει <ph name="SPECIFIED_RESOLUTION" />. Η ανάλυση άλλαξε σε <ph name="FALLBACK_RESOLUTION" />. Κάντε κλικ στην Επιβεβαίωση για να κρατήσετε τις αλλαγές. Θα γίνει επαναφορά των προηγούμενων ρυθμίσεων σε <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Αυτ. περιστρ.</translation> <translation id="8517041960877371778">Δεν είναι δυνατή η φόρτιση της συσκευής <ph name="DEVICE_TYPE" /> ενώ είναι ενεργοποιημένη.</translation> +<translation id="8553395910833293175">Έχει εκχωρηθεί ήδη σε όλα τα γραφεία.</translation> <translation id="8563862697512465947">Ρυθμίσεις ειδοποίησης</translation> <translation id="857201607579416096">Το μενού μεταφέρθηκε στην κάτω δεξιά γωνία της οθόνης.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Χρήση <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Ξεκλειδώστε τη συσκευή ως <ph name="LOGIN_ID" /> για εκτέλεση της ενέργειας ειδοποίησης</translation> <translation id="9017320285115481645">Εισαγάγετε τον κωδικό πρόσβασης γονέα του Family Link.</translation> +<translation id="9024331582947483881">πλήρης οθόνη</translation> <translation id="9047624247355796468">Άνοιγμα ρυθμίσεων για το δίκτυο <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Θα γίνει επαναφορά της συσκευής</translation> <translation id="9065203028668620118">Επεξεργασία</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb index f2558dd..9cf5cab 100644 --- a/ash/strings/ash_strings_en-GB.xtb +++ b/ash/strings/ash_strings_en-GB.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Set your language</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Lock Screen</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hi, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Toggle <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Move cursor</translation> <translation id="3098580329624789136">Get the <ph name="INTENT" /> for '<ph name="QUERY" />'</translation> +<translation id="3105917916468784889">Take screenshot</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Restart to update</translation> <translation id="3139942575505304791">Desk 1</translation> -<translation id="3147157020428159854">Screen recording stopped</translation> <translation id="315116470104423982">Mobile data</translation> <translation id="3151786313568798007">Orientation</translation> <translation id="3153444934357957346">You can only have up to <ph name="MULTI_PROFILE_USER_LIMIT" /> accounts in multiple sign-in.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Clear all <ph name="COUNT" /> notifications</translation> <translation id="4302592941791324970">Not available</translation> <translation id="4303223480529385476">Expand status area</translation> -<translation id="4315586716182276649">Extend your phone’s Internet connection, control Do Not Disturb and locate your device. View active Chrome tabs from your phone on your <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">You pressed the keyboard shortcut for high contrast. Do you want to turn it on?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Sign in with smart card</translation> <translation id="6059276912018042191">Recent Chrome tabs</translation> <translation id="6062360702481658777">You will automatically be signed out in <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Stop recording</translation> <translation id="607652042414456612">Your computer is discoverable to nearby Bluetooth devices and will appear as "<ph name="NAME" />" with address <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">The Google Assistant is not available in a guest session.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Press and hold both volume keys for five seconds to disable spoken feedback.</translation> <translation id="7658239707568436148">Cancel</translation> <translation id="7662283695561029522">Tap to configure</translation> -<translation id="7683326293741220026">Looks like Bluetooth is turned off on your phone. Please turn on Bluetooth on your phone to use Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}other{# notifications}}</translation> <translation id="7724603315864178912">Cut</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Calculating battery time.</translation> <translation id="8061464966246066292">High contrast</translation> <translation id="8098591350844501178">Stop casting screen to <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Extend your phone’s Internet connection, control Do Not Disturb and locate your phone. View active Chrome tabs from your phone on your <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">On, all apps</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Confirm</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> doesn't support <ph name="SPECIFIED_RESOLUTION" />. The resolution was changed to <ph name="FALLBACK_RESOLUTION" />. Click confirm to keep changes. The previous settings will be restored in <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Auto-rotate</translation> <translation id="8517041960877371778">Your <ph name="DEVICE_TYPE" /> may not charge while it is turned on.</translation> +<translation id="8553395910833293175">Already assigned to all desks.</translation> <translation id="8563862697512465947">Notification Settings</translation> <translation id="857201607579416096">Menu moved to the bottom-right corner of the screen.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Using <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Unlock device as <ph name="LOGIN_ID" /> to perform the notification action</translation> <translation id="9017320285115481645">Enter Family Link parent access code.</translation> +<translation id="9024331582947483881">full screen</translation> <translation id="9047624247355796468">Open settings for <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Device will be rolled back</translation> <translation id="9065203028668620118">Edit</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb index 0317ec38..8635ab0 100644 --- a/ash/strings/ash_strings_es-419.xtb +++ b/ash/strings/ash_strings_es-419.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asistente</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Establecer el idioma</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Bloquear pantalla</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hola, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Activa o desactiva <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Cursor de movimiento</translation> <translation id="3098580329624789136">Obtén la <ph name="INTENT" /> para "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Tomar captura de pantalla</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Reinicia para actualizar.</translation> <translation id="3139942575505304791">Escritorio 1</translation> -<translation id="3147157020428159854">Se detuvo la grabación de pantalla</translation> <translation id="315116470104423982">Datos móviles</translation> <translation id="3151786313568798007">Orientación</translation> <translation id="3153444934357957346">Puedes acceder a un máximo de <ph name="MULTI_PROFILE_USER_LIMIT" /> cuentas con acceso múltiple.</translation> @@ -367,7 +368,6 @@ <translation id="4296136865091727875">Borrar las <ph name="COUNT" /> notificaciones</translation> <translation id="4302592941791324970">No disponible</translation> <translation id="4303223480529385476">Expandir el área de estado</translation> -<translation id="4315586716182276649">Extiende la conexión a Internet de tu teléfono, controla la función No interrumpir y determina la ubicación del dispositivo. Puedes acceder a las pestañas de Chrome activas en el teléfono desde tu <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Presionaste la combinación de teclas para activar el modo de contraste alto. ¿Quieres activarlo?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -561,6 +561,7 @@ <translation id="6054305421211936131">Acceder con una tarjeta inteligente</translation> <translation id="6059276912018042191">Pestañas recientes de Chrome</translation> <translation id="6062360702481658777">Saldrás de la sesión automáticamente en <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Detener grabación</translation> <translation id="607652042414456612">La computadora es visible para dispositivos Bluetooth cercanos y aparecerá como "<ph name="NAME" />" con la dirección <ph name="ADDRESS" />.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" />.</translation> <translation id="612734058257491180">El Asistente de Google no está disponible en las sesiones de invitado.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Mantén presionadas las teclas de volumen durante cinco segundos para inhabilitar los comentarios por voz.</translation> <translation id="7658239707568436148">Cancelar</translation> <translation id="7662283695561029522">Presiona para configurar</translation> -<translation id="7683326293741220026">Al parecer, tu teléfono tiene la conexión Bluetooth desactivada. Actívala para poder usar Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificación}other{# notificaciones}}</translation> <translation id="7724603315864178912">Cortar</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Calculando duración de la batería...</translation> <translation id="8061464966246066292">Contraste alto</translation> <translation id="8098591350844501178">Detener la transmisión de la pantalla a <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Extiende la conexión a Internet de tu teléfono, controla la función No interrumpir y determina la ubicación del teléfono. Puedes acceder a las pestañas de Chrome activas en el teléfono desde tu <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Sí, para todas</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Confirmar</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> no admite la resolución <ph name="SPECIFIED_RESOLUTION" />. Se cambió la resolución a <ph name="FALLBACK_RESOLUTION" />. Para mantener este cambio, haz clic en Confirmar. En <ph name="TIMEOUT_SECONDS" />, se restablecerá la configuración anterior.</translation> <translation id="8513108775083588393">Giro autom.</translation> <translation id="8517041960877371778">Tu <ph name="DEVICE_TYPE" /> podría no cargarse si el dispositivo está encendido.</translation> +<translation id="8553395910833293175">Ya se asignó a todos los escritorios.</translation> <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> @@ -881,6 +881,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> en uso</translation> <translation id="899350903320462459">Desbloquea el dispositivo como <ph name="LOGIN_ID" /> para realizar la acción con las notificaciones</translation> <translation id="9017320285115481645">Ingresa el código de acceso para padres de Family Link.</translation> +<translation id="9024331582947483881">pantalla completa</translation> <translation id="9047624247355796468">Abrir la configuración para <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Se restablecerá el dispositivo</translation> <translation id="9065203028668620118">Editar</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb index b377b1ff..9b1821b5 100644 --- a/ash/strings/ash_strings_es.xtb +++ b/ash/strings/ash_strings_es.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asistente</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Elegir el idioma</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Bloquear pantalla</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hola, <ph name="USERNAME" />:</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Activar o desactivar <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Mover cursor</translation> <translation id="3098580329624789136">Obtener <ph name="INTENT" /> de "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Hacer una captura de pantalla</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Reinicia el sistema para actualizarlo.</translation> <translation id="3139942575505304791">Escritorio 1</translation> -<translation id="3147157020428159854">Grabación de pantalla detenida</translation> <translation id="315116470104423982">Redes móviles</translation> <translation id="3151786313568798007">Orientación</translation> <translation id="3153444934357957346">Solo puedes tener un máximo de <ph name="MULTI_PROFILE_USER_LIMIT" /> cuentas en el inicio de sesión múltiple.</translation> @@ -367,7 +368,6 @@ <translation id="4296136865091727875">Borrar las <ph name="COUNT" /> notificaciones</translation> <translation id="4302592941791324970">No disponible</translation> <translation id="4303223480529385476">Ampliar área de estado</translation> -<translation id="4315586716182276649">Amplía la conexión a Internet de tu teléfono, controla la función No molestar y localiza tu dispositivo. Visualiza las pestañas de Chrome activas de tu teléfono en tu <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Has pulsado la combinación de teclas que activa el contraste alto. ¿Quieres activarlo?</translation> <translation id="4331809312908958774">SO de Chrome</translation> @@ -561,6 +561,7 @@ <translation id="6054305421211936131">Iniciar sesión con tarjeta inteligente</translation> <translation id="6059276912018042191">Pestañas de Chrome recientes</translation> <translation id="6062360702481658777">Tu sesión se cerrará automáticamente en <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Detener grabación</translation> <translation id="607652042414456612">Tu ordenador es visible para dispositivos Bluetooth cercanos y aparecerá como "<ph name="NAME" />" con la dirección <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">El Asistente de Google no está disponible en las sesiones de invitado.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Mantén pulsadas ambas teclas de volumen durante cinco segundos para inhabilitar los mensajes de voz.</translation> <translation id="7658239707568436148">Cancelar</translation> <translation id="7662283695561029522">Toca para configurar</translation> -<translation id="7683326293741220026">Parece que el Bluetooth de tu teléfono está desactivado. Activa el Bluetooth para usar la función Mi teléfono.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificación}other{# notificaciones}}</translation> <translation id="7724603315864178912">Cortar</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Calculando duración de la batería...</translation> <translation id="8061464966246066292">Contraste alto</translation> <translation id="8098591350844501178">Dejar de enviar la pantalla a <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Amplía la conexión a Internet de tu teléfono, controla la función No molestar y localiza tu teléfono. Visualiza las pestañas de Chrome activas de tu teléfono en tu <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Sí, todas</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Confirmar</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069">La pantalla <ph name="DISPLAY_NAME" /> no admite <ph name="SPECIFIED_RESOLUTION" />. Se ha cambiado la resolución a <ph name="FALLBACK_RESOLUTION" />. Haz clic en Confirmar para mantener los cambios. La configuración anterior se restaurará en <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Girar autom.</translation> <translation id="8517041960877371778">Es posible que tu <ph name="DEVICE_TYPE" /> no se cargue mientras esté encendido.</translation> +<translation id="8553395910833293175">Ya está asignado a todos los escritorios.</translation> <translation id="8563862697512465947">Configuración de notificaciones</translation> <translation id="857201607579416096">Se ha movido el menú a la esquina inferior derecha de la pantalla.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590">Estás usando <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Desbloquea el dispositivo como <ph name="LOGIN_ID" /> para hacer lo que indica la notificación</translation> <translation id="9017320285115481645">Introduce el código de acceso parental de Family Link.</translation> +<translation id="9024331582947483881">pantalla completa</translation> <translation id="9047624247355796468">Abrir la configuración de <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Se va a instalar una versión anterior en el dispositivo</translation> <translation id="9065203028668620118">Editar</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb index 0e182fd..2bda0b1 100644 --- a/ash/strings/ash_strings_et.xtb +++ b/ash/strings/ash_strings_et.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Valige keel</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Lukusta ekraan</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Tere, <ph name="USERNAME" />!</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Vahetage funktsiooni <ph name="FEATURE_NAME" /> olekut. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Kursori liigutamine</translation> <translation id="3098580329624789136">Hankige päringu „<ph name="QUERY" />” <ph name="INTENT" /></translation> +<translation id="3105917916468784889">Teeb kuvatõmmise</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Taaskäivitage värskendamiseks</translation> <translation id="3139942575505304791">Töölaud 1</translation> -<translation id="3147157020428159854">Ekraanikuva salvestamine on peatatud</translation> <translation id="315116470104423982">Mobiilne andmeside</translation> <translation id="3151786313568798007">Suund</translation> <translation id="3153444934357957346">Saate korraga sisse logida kuni <ph name="MULTI_PROFILE_USER_LIMIT" /> kontole.</translation> @@ -367,7 +368,6 @@ <translation id="4296136865091727875">Kustuta kõik <ph name="COUNT" /> märguannet</translation> <translation id="4302592941791324970">Pole saadaval</translation> <translation id="4303223480529385476">Laienda olekuala</translation> -<translation id="4315586716182276649">Laiendage oma telefoni interneti leviala, juhtige funktsiooni Mitte segada ja määrake kindlaks oma seadme asukoht. Vaadake seadmes <ph name="DEVICE_TYPE" /> oma telefoni aktiivseid Chrome'i vahelehti.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Vajutasite suure kontrastsusega režiimi otseteed. Kas soovite režiimi sisse lülitada?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -561,6 +561,7 @@ <translation id="6054305421211936131">Logi sisse kiipkaardiga</translation> <translation id="6059276912018042191">Hiljutised Chrome'i vahelehed</translation> <translation id="6062360702481658777">Teid logitakse automaatselt välja <ph name="LOGOUT_TIME_LEFT" /> pärast.</translation> +<translation id="6073451960410192870">Peata salvestamine</translation> <translation id="607652042414456612">Lähedal olevad Bluetoothi seadmed saavad teie arvuti tuvastada ja see kuvatakse nimega „<ph name="NAME" />” ja aadressiga <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google'i assistent ei ole külastajaseansis saadaval.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Suulise tagasiside keelamiseks hoidke mõlemat helitugevuse klahvi viis sekundit all.</translation> <translation id="7658239707568436148">Tühista</translation> <translation id="7662283695561029522">Puudutage seadistamiseks</translation> -<translation id="7683326293741220026">Näib, et Bluetooth on teie telefonis välja lülitatud. Phone Hubi kasutamiseks lülitage Bluetooth oma telefonis sisse.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 märguanne}other{# märguannet}}</translation> <translation id="7724603315864178912">Lõika</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Aku tööaja arvutamine.</translation> <translation id="8061464966246066292">Kõrge kontrast</translation> <translation id="8098591350844501178">Peata ekraani ülekandmine vastuvõtjasse <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Laiendage oma telefoni interneti leviala, juhtige funktsiooni Mitte segada ja määrake kindlaks oma telefoni asukoht. Vaadake seadmes <ph name="DEVICE_TYPE" /> oma telefoni aktiivseid Chrome'i vahelehti.</translation> <translation id="8113423164597455979">Sees, kõik rak.</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Kinnita</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069">Seade <ph name="DISPLAY_NAME" /> ei toeta eraldusvõimet <ph name="SPECIFIED_RESOLUTION" />. Eraldusvõimeks määrati <ph name="FALLBACK_RESOLUTION" />. Muudatuste säilitamiseks klõpsake nupul Kinnita. Eelmised seaded taastatakse <ph name="TIMEOUT_SECONDS" /> pärast.</translation> <translation id="8513108775083588393">Aut. pööramine</translation> <translation id="8517041960877371778">Kui seade <ph name="DEVICE_TYPE" /> on sisse lülitatud, ei pruugita seda laadida.</translation> +<translation id="8553395910833293175">Juba määratud kõigile töölaudadele.</translation> <translation id="8563862697512465947">Teatiste seaded</translation> <translation id="857201607579416096">Menüü teisaldati ekraanikuva paremasse alanurka.</translation> <translation id="8594115950068821369">–<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590">Kasutusel: <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Märguandetoimingu tegemiseks avage seade kontoga <ph name="LOGIN_ID" /></translation> <translation id="9017320285115481645">Sisestage Family Linki vanema pääsukood.</translation> +<translation id="9024331582947483881">täisekraan</translation> <translation id="9047624247355796468">Ava võrgu <ph name="NETWORK_NAME" /> seaded</translation> <translation id="9056839673611986238">Seade viiakse vanemale versioonile</translation> <translation id="9065203028668620118">Muuda</translation>
diff --git a/ash/strings/ash_strings_eu.xtb b/ash/strings/ash_strings_eu.xtb index 28a6802b..1581e70 100644 --- a/ash/strings/ash_strings_eu.xtb +++ b/ash/strings/ash_strings_eu.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Laguntzailea</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Zehaztu hizkuntza</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Pantaila blokeatua</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Kaixo, <ph name="USERNAME" />:</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Aldatu <ph name="FEATURE_NAME" /> eginbidearen egoera. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Mugitu kurtsorea</translation> <translation id="3098580329624789136">Lortu "<ph name="QUERY" />" kontsultaren <ph name="INTENT" /></translation> +<translation id="3105917916468784889">Atera pantaila-argazkia</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth-a)</translation> <translation id="3126069444801937830">Eguneratzeko, berrabiarazi</translation> <translation id="3139942575505304791">1. lan-eremua</translation> -<translation id="3147157020428159854">Pantaila grabatzeari utzi zaio</translation> <translation id="315116470104423982">Datu-konexioa</translation> <translation id="3151786313568798007">Orientazioa</translation> <translation id="3153444934357957346">Gehienez ere, <ph name="MULTI_PROFILE_USER_LIMIT" /> kontu izan ditzakezu saio-hasiera anitza erabiltzen duzunean.</translation> @@ -367,7 +368,6 @@ <translation id="4296136865091727875">Garbitu <ph name="COUNT" /> jakinarazpenak</translation> <translation id="4302592941791324970">Ez dago erabilgarri</translation> <translation id="4303223480529385476">Zabaldu egoeraren eremua</translation> -<translation id="4315586716182276649">Zabaldu telefonoaren Interneteko konexioa, kontrolatu ez molestatzeko modua eta aurkitu gailua. <ph name="DEVICE_TYPE" /> gailuan, ikusi telefonoan aktibo dituzun Chrome-ko fitxak.</translation> <translation id="4321179778687042513">ktrl</translation> <translation id="4321776623976362024">Kontraste handiaren lasterbidea sakatu duzu. Aktibatu egin nahi duzu?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -561,6 +561,7 @@ <translation id="6054305421211936131">Hasi saioa txartel adimendunarekin</translation> <translation id="6059276912018042191">Azkenaldian erabilitako Chrome-ko fitxak</translation> <translation id="6062360702481658777">Saioa automatikoki amaituko da <ph name="LOGOUT_TIME_LEFT" /> igarotakoan.</translation> +<translation id="6073451960410192870">Utzi grabatzeari</translation> <translation id="607652042414456612">Ordenagailua ikusgai dago inguruko Bluetooth bidezko gailuetarako, eta "<ph name="NAME" />" izenarekin eta <ph name="ADDRESS" /> helbidearekin agertuko da</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google-ren Laguntzailea ez dago erabilgarri gonbidatuentzako saioetan.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Ahozko argibideak desgaitzeko, eduki sakatuta bi bolumen-botoiak bost segundoz.</translation> <translation id="7658239707568436148">Utzi</translation> <translation id="7662283695561029522">Sakatu konfiguratzeko</translation> -<translation id="7683326293741220026">Bluetooth-a desaktibatuta dago telefonoan. Aktiba ezazu Phone Hub erabiltzeko.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 jakinarazpen}other{# jakinarazpen}}</translation> <translation id="7724603315864178912">Ebaki</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Bateria-denbora kalkulatzen.</translation> <translation id="8061464966246066292">Kontraste handia</translation> <translation id="8098591350844501178">Utzi pantaila <ph name="RECEIVER_NAME" /> izeneko gailura igortzeari</translation> -<translation id="8108657971283652031">Zabaldu telefonoaren Interneteko konexioa, kontrolatu ez molestatzeko modua eta aurkitu telefonoa. <ph name="DEVICE_TYPE" /> gailuan, ikusi telefonoan aktibo dituzun Chrome-ko fitxak.</translation> <translation id="8113423164597455979">Guzt. aktibat.</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Berretsi</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> pantailak ez du onartzen <ph name="SPECIFIED_RESOLUTION" /> bereizmena. <ph name="FALLBACK_RESOLUTION" /> ezarri da pantailaren bereizmen gisa. Sakatu "Berretsi" aldaketak gordetzeko. <ph name="TIMEOUT_SECONDS" /> barru aurreko ezarpenak leheneratuko dira.</translation> <translation id="8513108775083588393">Biratu auto.</translation> <translation id="8517041960877371778">Baliteke <ph name="DEVICE_TYPE" /> gailua ez kargatzea piztuta dagoen bitartean.</translation> +<translation id="8553395910833293175">Lan-eremu guztiei esleitu zaie dagoeneko.</translation> <translation id="8563862697512465947">Jakinarazpen-ezarpenak</translation> <translation id="857201607579416096">Pantailaren beheko eskuineko izkinara eraman da menua.</translation> <translation id="8594115950068821369">–<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> erabiltzen</translation> <translation id="899350903320462459">Desblokeatu gailua <ph name="LOGIN_ID" /> gisa jakinarazpen-ekintza gauzatzeko</translation> <translation id="9017320285115481645">Idatzi Family Link-eko gurasoen sarbide-kodea.</translation> +<translation id="9024331582947483881">pantaila osoa</translation> <translation id="9047624247355796468">Ireki <ph name="NETWORK_NAME" /> sarearen ezarpenak</translation> <translation id="9056839673611986238">Leheneratu egingo da gailua</translation> <translation id="9065203028668620118">Editatu</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb index b2861c5..5015b153 100644 --- a/ash/strings/ash_strings_fa.xtb +++ b/ash/strings/ash_strings_fa.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">دستیار</translation> <translation id="1957803754585243749">۰ درجه</translation> <translation id="1957958912175573503">تنظیم زبان</translation> +<translation id="1961832440516943645"><ph name="DATE" />، <ph name="TIME" /></translation> <translation id="1962969542251276847">صفحه قفل</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">سلام، <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">روشن/خاموش کردن <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">حرکت دادن نشانگر</translation> <translation id="3098580329624789136">دریافت <ph name="INTENT" /> برای «<ph name="QUERY" />»</translation> +<translation id="3105917916468784889">گرفتن نماگرفت</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (بلوتوث)</translation> <translation id="3126069444801937830">راهاندازی مجدد برای بهروزرسانی</translation> <translation id="3139942575505304791">میز ۱</translation> -<translation id="3147157020428159854">ضبط صفحهنمایش متوقف شد</translation> <translation id="315116470104423982">دادههای تلفن همراه</translation> <translation id="3151786313568798007">جهت</translation> <translation id="3153444934357957346">در ورود چندگانه به سیستم، میتوانید حداکثر از <ph name="MULTI_PROFILE_USER_LIMIT" /> حساب استفاده کنید.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">پاک کردن همه <ph name="COUNT" /> اعلان</translation> <translation id="4302592941791324970">موجود نیست</translation> <translation id="4303223480529385476">بزرگ کردن ناحیه نشانگر وضعیت</translation> -<translation id="4315586716182276649">اتصال اینترنت تلفنتان را گسترش دهید، «مزاحم نشوید» را کنترل کنید، و دستگاهتان را پیدا کنید. برگههای فعال Chrome در تلفنتان را در <ph name="DEVICE_TYPE" /> مشاهده کنید.</translation> <translation id="4321179778687042513">مهار</translation> <translation id="4321776623976362024">میانبر صفحهکلید مربوط به کنتراست بالا را فشار دادید. میخواهید آن را روشن کنید؟</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">ورود به سیستم با کارت هوشمند</translation> <translation id="6059276912018042191">برگههای اخیر Chrome</translation> <translation id="6062360702481658777">به صورت خودکار در عرض <ph name="LOGOUT_TIME_LEFT" /> از سیستم خارج میشوید.</translation> +<translation id="6073451960410192870">توقف ضبط</translation> <translation id="607652042414456612">رایانه شما توسط دستگاههای بلوتوث نزدیک قابل شناسایی است و با نام «<ph name="NAME" />» و آدرس <ph name="ADDRESS" /> نشان داده میشود</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">«دستیار Google» در جلسه مهمان دردسترس نیست.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">برای غیرفعال کردن بازخورد گفتاری، هردو کلید تنظیم صدا را پنج ثانیه فشار دهید و نگهدارید.</translation> <translation id="7658239707568436148">لغو</translation> <translation id="7662283695561029522">برای پیکربندی ضربه بزنید</translation> -<translation id="7683326293741220026">ظاهراً بلوتوث در تلفنتان خاموش است. لطفاً برای استفاده از «مرکز کنترل تلفن»، بلوتوث را در تلفنتان روشن کنید.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{۱ اعلان}one{# اعلان}other{# اعلان}}</translation> <translation id="7724603315864178912">برش</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">درحال محاسبه زمان شارژ باتری.</translation> <translation id="8061464966246066292">کنتراست بالا</translation> <translation id="8098591350844501178">توقف ارسال محتوای صفحه به <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">اتصال اینترنت تلفن را گسترش دهید، «مزاحم نشوید» را کنترل کنید، و تلفنتان را پیدا کنید. برگههای فعال Chrome در تلفنتان را در <ph name="DEVICE_TYPE" /> مشاهده کنید.</translation> <translation id="8113423164597455979">روشن، همه برنامهها</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> درجه سانتیگراد</translation> <translation id="8131740175452115882">تأیید</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> از <ph name="SPECIFIED_RESOLUTION" /> پشتیبانی نمیکند. وضوح به <ph name="FALLBACK_RESOLUTION" /> تغییر کرد. برای حفظ تغییرات، روی تأیید کلیک کنید. تنظیمات قبلی <ph name="TIMEOUT_SECONDS" /> دیگر بازیابی خواهد شد.</translation> <translation id="8513108775083588393">چرخش خودکار</translation> <translation id="8517041960877371778">ممکن است وقتی <ph name="DEVICE_TYPE" /> شما خاموش است، شارژ نشود.</translation> +<translation id="8553395910833293175">قبلاً به همه میزکارها اختصاص داده شده است.</translation> <translation id="8563862697512465947">تنظیمات اعلام</translation> <translation id="857201607579416096">منو به گوشه چپ پایین صفحه منتقل شد.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">درحال استفاده از <ph name="IME_NAME" /></translation> <translation id="899350903320462459">بهعنوان <ph name="LOGIN_ID" />، قفل دستگاه را باز کنید تا کنش اعلان اجرا شود</translation> <translation id="9017320285115481645">کد دسترسی والدین Family Link را وارد کنید</translation> +<translation id="9024331582947483881">تمامصفحه</translation> <translation id="9047624247355796468">باز کردن تنظیمات <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">دستگاه عقبگرد میکند</translation> <translation id="9065203028668620118">ویرایش</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb index f8500c0..3a6658e7 100644 --- a/ash/strings/ash_strings_fi.xtb +++ b/ash/strings/ash_strings_fi.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Määritä kieli</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Näytönlukitus</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hei <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> päälle/pois. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Siirrä kohdistinta</translation> <translation id="3098580329624789136">Katso <ph name="INTENT" /> haulle <ph name="QUERY" /></translation> +<translation id="3105917916468784889">Ota kuvakaappaus</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Päivitä käynnistämällä uudelleen</translation> <translation id="3139942575505304791">Pöytä 1</translation> -<translation id="3147157020428159854">Näytön tallennus lopetettu</translation> <translation id="315116470104423982">Mobiilitiedonsiirto</translation> <translation id="3151786313568798007">Suunta</translation> <translation id="3153444934357957346">Voit lisätä enintään <ph name="MULTI_PROFILE_USER_LIMIT" /> tiliä useille tileille kirjautumista varten.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Poista kaikki <ph name="COUNT" /> ilmoitusta</translation> <translation id="4302592941791324970">Ei käytössä</translation> <translation id="4303223480529385476">Laajenna tila-alue</translation> -<translation id="4315586716182276649">Laajenna puhelimesi internetyhteyttä, ohjaa Älä häiritse ‑tilaa ja paikanna laitteesi. Katso puhelimesi aktiiviset Chrome-välilehdet laitteelta (<ph name="DEVICE_TYPE" />).</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Painoit suuren kontrastin pikanäppäintä. Haluatko ottaa sen käyttöön?</translation> <translation id="4331809312908958774">Chrome-käyttöjärjestelmä</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Kirjaudu sisään älykortilla</translation> <translation id="6059276912018042191">Viimeaikaiset Chrome-välilehdet</translation> <translation id="6062360702481658777">Sinut kirjataan ulos automaattisesti, aikaa jäljellä <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Lopeta tallennus</translation> <translation id="607652042414456612">Lähellä olevat Bluetooth-laitteet voivat löytää tietokoneesi. Tietokoneesi nimi on <ph name="NAME" /> ja osoite <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Assistantia ei voi käyttää Vierailija-käyttökerralla.</translation> @@ -727,7 +728,6 @@ <translation id="7654687942625752712">Poista äänipalaute käytöstä painamalla molempia äänenvoimakkuuspainikkeita viiden sekunnin ajan.</translation> <translation id="7658239707568436148">Peruuta</translation> <translation id="7662283695561029522">Määritä napauttamalla.</translation> -<translation id="7683326293741220026">Bluetooth näyttää olevan poissa päältä laitteellasi. Laita puhelimen Bluetooth päälle, jotta voit käyttää Phone Hubia.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ilmoitus}other{# ilmoitusta}}</translation> <translation id="7724603315864178912">Leikkaa</translation> @@ -775,7 +775,6 @@ <translation id="8054466585765276473">Lasketaan akun kesto.</translation> <translation id="8061464966246066292">Suuri kontrasti</translation> <translation id="8098591350844501178">Lopeta suoratoisto: <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Laajenna puhelimesi internetyhteyttä, ohjaa Älä häiritse ‑tilaa ja paikanna puhelimesi. Katso puhelimesi aktiiviset Chrome-välilehdet laitteelta (<ph name="DEVICE_TYPE" />).</translation> <translation id="8113423164597455979">Päällä, kaikki</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Vahvista</translation> @@ -824,6 +823,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> ei tue resoluutiota <ph name="SPECIFIED_RESOLUTION" />. Resoluutioksi vaihdettiin <ph name="FALLBACK_RESOLUTION" />. Pidä muutokset valitsemalla Vahvista. Aiempi asetus palautetaan <ph name="TIMEOUT_SECONDS" /> päästä.</translation> <translation id="8513108775083588393">Autom. kääntö</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> ei välttämättä lataudu, kun se on käynnissä.</translation> +<translation id="8553395910833293175">Lisätty jo kaikille työpöydille.</translation> <translation id="8563862697512465947">Ilmoitusasetukset</translation> <translation id="857201607579416096">Valikko siirretty näytön oikeaan alanurkkaan</translation> <translation id="8594115950068821369">–<ph name="FORMATTED_TIME" /></translation> @@ -882,6 +882,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> käytössä</translation> <translation id="899350903320462459">Avaa laitteen lukitus tunnuksella <ph name="LOGIN_ID" />, niin voit käyttää ilmoitustoimintoa</translation> <translation id="9017320285115481645">Syötä vanhemman Family Link ‑käyttökoodi</translation> +<translation id="9024331582947483881">koko näyttö</translation> <translation id="9047624247355796468">Avaa asetukset: <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Laite palautetaan</translation> <translation id="9065203028668620118">Muokkaa</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb index 573cb12..a9b9a50 100644 --- a/ash/strings/ash_strings_fil.xtb +++ b/ash/strings/ash_strings_fil.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Itakda ang iyong wika</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Screen ng Lock</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Kumusta, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">I-toggle ang <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Ilipat ang cursor</translation> <translation id="3098580329624789136">Kunin ang <ph name="INTENT" /> para sa "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Kunin screenshot</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">I-restart upang mag-update</translation> <translation id="3139942575505304791">Desk 1</translation> -<translation id="3147157020428159854">Huminto ang pag-record ng screen</translation> <translation id="315116470104423982">Data sa mobile</translation> <translation id="3151786313568798007">Oryentasyon</translation> <translation id="3153444934357957346">Maaari ka lang magkaroon ng hanggang <ph name="MULTI_PROFILE_USER_LIMIT" /> (na) account sa maraming pag-sign in.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">I-clear ang lahat ng <ph name="COUNT" /> (na) notification</translation> <translation id="4302592941791324970">Hindi available</translation> <translation id="4303223480529385476">I-expand ang lugar ng status</translation> -<translation id="4315586716182276649">I-extend ang koneksyon sa internet ng iyong telepono, kontrolin ang Huwag Istorbohin, at hanapin ang device mo. Tingnan ang mga aktibong tab ng Chrome mula sa iyong telepono sa <ph name="DEVICE_TYPE" /> mo.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Napindot mo ang keyboard shortcut para sa mataas na contrast. Gusto mo ba itong i-on?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Mag-sign in gamit ang smart card</translation> <translation id="6059276912018042191">Mga kamakailang tab ng Chrome</translation> <translation id="6062360702481658777">Awtomatiko kang masa-sign out sa loob ng <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Ihinto ang pag-record</translation> <translation id="607652042414456612">Ang iyong computer ay katuklas-tuklas sa mga kalapit na Bluetooth device at lalabas bilang "<ph name="NAME" />" na may address na <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Hindi available ang Google Assistant sa session ng bisita.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Pindutin nang matagal ang parehong volume key sa loob ng limang segundo para i-disable ang pasalitang feedback.</translation> <translation id="7658239707568436148">Kanselahin</translation> <translation id="7662283695561029522">I-tap upang i-configure</translation> -<translation id="7683326293741220026">Mukhang naka-off ang Bluetooth sa iyong telepono. Paki-on ang Bluetooth sa iyong telepono para magamit ang Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}one{# notification}other{# na notification}}</translation> <translation id="7724603315864178912">I-cut</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Kinakalkula ang oras ng baterya.</translation> <translation id="8061464966246066292">Mataas na contrast</translation> <translation id="8098591350844501178">Ihinto ang pag-cast ng screen sa <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">I-extend ang koneksyon sa internet ng iyong telepono, kontrolin ang Huwag Istorbohin, at hanapin ang telepono mo. Tingnan ang mga aktibong tab ng Chrome mula sa iyong telepono sa <ph name="DEVICE_TYPE" /> mo.</translation> <translation id="8113423164597455979">Naka-on lahat</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Kumpirmahin</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069">Hindi sinusuportahan ng <ph name="DISPLAY_NAME" /> ang <ph name="SPECIFIED_RESOLUTION" />. Ginawang <ph name="FALLBACK_RESOLUTION" /> ang resolution. I-click ang kumpirmahin para panatilihin ang mga pagbabago. Ire-restore ang mga dating setting pagkalipas ng <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">I-auto rotate</translation> <translation id="8517041960877371778">Maaaring hindi mag-charge ang iyong <ph name="DEVICE_TYPE" /> habang naka-on ito.</translation> +<translation id="8553395910833293175">Naitalaga na sa lahat ng desk.</translation> <translation id="8563862697512465947">Mga Setting sa Abiso</translation> <translation id="857201607579416096">Inilipat ang menu sa kanang sulok sa ibaba ng screen.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Gamit ang <ph name="IME_NAME" /></translation> <translation id="899350903320462459">I-unlock ang device bilang <ph name="LOGIN_ID" /> para maisagawa ang pagkilos sa notification</translation> <translation id="9017320285115481645">Ilagay ang access code ng magulang sa Family Link.</translation> +<translation id="9024331582947483881">buong screen</translation> <translation id="9047624247355796468">Buksan ang mga setting para sa <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Iro-roll back ang device</translation> <translation id="9065203028668620118">I-edit</translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb index 08ee7ef..e0e4dc1f 100644 --- a/ash/strings/ash_strings_fr-CA.xtb +++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -232,10 +232,10 @@ <translation id="3090989381251959936">Basculer la fonctionnalité <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Déplacer le curseur</translation> <translation id="3098580329624789136">Obtenir la <ph name="INTENT" /> de « <ph name="QUERY" /> »</translation> +<translation id="3105917916468784889">Faire une capture d'écran</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Redémarrer pour faire la mise à jour</translation> <translation id="3139942575505304791">Bureau 1</translation> -<translation id="3147157020428159854">L'enregistrement d'écran s'est arrêté</translation> <translation id="315116470104423982">Données mobiles</translation> <translation id="3151786313568798007">Orientation</translation> <translation id="3153444934357957346">Vous ne pouvez vous connecter qu'à <ph name="MULTI_PROFILE_USER_LIMIT" /> comptes au maximum dans le cadre de la connexion multicompte.</translation> @@ -366,7 +366,6 @@ <translation id="4296136865091727875">Effacer les <ph name="COUNT" /> notifications</translation> <translation id="4302592941791324970">Non accessible</translation> <translation id="4303223480529385476">Développer la zone de notifications</translation> -<translation id="4315586716182276649">Augmentez la portée de la connexion Internet de votre téléphone, gérez le mode Ne pas déranger et localisez votre appareil. Consultez les onglets Chrome actifs de votre téléphone sur votre <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Vous avez appuyé sur le raccourci-clavier de contraste élevé. Voulez-vous l'activer?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +559,7 @@ <translation id="6054305421211936131">Se connecter avec une carte à puce</translation> <translation id="6059276912018042191">Onglets Chrome récents</translation> <translation id="6062360702481658777">Vous serez automatiquement déconnecté dans <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Arrêter l'enregistrement</translation> <translation id="607652042414456612">Votre ordinateur est visible pour les appareils Bluetooth situés à proximité sous le nom « <ph name="NAME" /> » et a comme adresse <ph name="ADDRESS" />.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">L'Assistant Google n'est pas accessible dans une session d'invité.</translation> @@ -725,7 +725,6 @@ <translation id="7654687942625752712">Maintenez les deux touches de volume enfoncées cinq secondes pour désactiver la rétroaction vocale.</translation> <translation id="7658239707568436148">Annuler</translation> <translation id="7662283695561029522">Touchez pour configurer</translation> -<translation id="7683326293741220026">Il semble que le Bluetooth est désactivé sur votre téléphone. Veuillez activer le Bluetooth sur votre téléphone pour utiliser Phone Hub.</translation> <translation id="7705524343798198388">RPV</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}one{# notification}other{# notifications}}</translation> <translation id="7724603315864178912">Couper</translation> @@ -773,7 +772,6 @@ <translation id="8054466585765276473">Calcul de l'autonomie de la batterie en cours…</translation> <translation id="8061464966246066292">Contraste élevé</translation> <translation id="8098591350844501178">Arrêter la diffusion de l'écran sur <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Augmentez la portée de la connexion Internet de votre téléphone, gérez le mode Ne pas déranger et localisez votre téléphone. Consultez les onglets Chrome actifs de votre téléphone sur votre <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Activées, toutes applis</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Confirmer</translation> @@ -880,6 +878,7 @@ <translation id="8990809378771970590">Mode de saisie utilisé : <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Déverrouillez l'appareil en tant que <ph name="LOGIN_ID" /> pour effectuer l'action de la notification</translation> <translation id="9017320285115481645">Entrez le code d'accès parental pour Family Link.</translation> +<translation id="9024331582947483881">plein écran</translation> <translation id="9047624247355796468">Ouvrir les paramètres pour <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">L'appareil sera restauré</translation> <translation id="9065203028668620118">Modifier</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb index ee5e126..c56706e 100644 --- a/ash/strings/ash_strings_fr.xtb +++ b/ash/strings/ash_strings_fr.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Définir la langue</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Verrouiller l'écran</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Bonjour <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Activer/Désactiver <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Curseur de déplacement</translation> <translation id="3098580329624789136">Trouvez la <ph name="INTENT" /> de "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Faire une capture d'écran</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Redémarrer pour mettre à jour</translation> <translation id="3139942575505304791">Bureau 1</translation> -<translation id="3147157020428159854">Enregistrement de l'écran arrêté</translation> <translation id="315116470104423982">Données mobiles</translation> <translation id="3151786313568798007">Orientation</translation> <translation id="3153444934357957346">Vous ne pouvez vous connecter qu'à <ph name="MULTI_PROFILE_USER_LIMIT" /> comptes au maximum dans le cadre de la connexion multicompte.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Effacer les <ph name="COUNT" /> notifications</translation> <translation id="4302592941791324970">Non disponible</translation> <translation id="4303223480529385476">Développer la zone d'état</translation> -<translation id="4315586716182276649">Étendez la connexion Internet de votre téléphone, contrôlez le mode Ne pas déranger et localisez votre appareil. Affichez sur votre <ph name="DEVICE_TYPE" /> les onglets Chrome actifs sur votre téléphone.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Vous avez appuyé sur le raccourci clavier du contraste élevé. Voulez-vous l'activer ?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Se connecter avec une carte à puce</translation> <translation id="6059276912018042191">Onglets Chrome récents</translation> <translation id="6062360702481658777">Vous allez être déconnecté automatiquement dans <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Arrêter l'enregistrement</translation> <translation id="607652042414456612">Votre ordinateur est visible par les appareils Bluetooth situés à proximité sous le nom "<ph name="NAME" />", associé à l'adresse <ph name="ADDRESS" />.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">L'Assistant Google n'est pas disponible dans une session Invité.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Appuyez pendant cinq secondes sur les deux touches de volume pour désactiver les commentaires audio.</translation> <translation id="7658239707568436148">Annuler</translation> <translation id="7662283695561029522">Appuyer pour configurer</translation> -<translation id="7683326293741220026">Apparemment, le Bluetooth est désactivé sur votre téléphone. Activez-le pour utiliser Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}one{# notification}other{# notifications}}</translation> <translation id="7724603315864178912">Couper</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Calcul de l'autonomie de la batterie en cours…</translation> <translation id="8061464966246066292">Contraste élevé</translation> <translation id="8098591350844501178">Arrêter de diffuser l'écran sur "<ph name="RECEIVER_NAME" />"</translation> -<translation id="8108657971283652031">Étendez la connexion Internet de votre téléphone, contrôlez le mode Ne pas déranger et localisez votre téléphone. Affichez sur votre <ph name="DEVICE_TYPE" /> les onglets Chrome actifs sur votre téléphone.</translation> <translation id="8113423164597455979">Activées, toutes applis</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Confirmer</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> n'est pas compatible avec la résolution <ph name="SPECIFIED_RESOLUTION" />. La résolution <ph name="FALLBACK_RESOLUTION" /> sera utilisée à la place. Cliquez sur "Confirmer" pour conserver les modifications. Les paramètres précédents seront restaurés dans <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Rotation auto</translation> <translation id="8517041960877371778">Il est possible que votre appareil <ph name="DEVICE_TYPE" /> ne se recharge pas lorsqu'il est allumé.</translation> +<translation id="8553395910833293175">Association déjà faite sur tous les bureaux.</translation> <translation id="8563862697512465947">Paramètres de notification</translation> <translation id="857201607579416096">Le menu a été déplacé dans l'angle inférieur droit de l'écran.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> en cours d'utilisation</translation> <translation id="899350903320462459">Déverrouiller l'appareil en tant que <ph name="LOGIN_ID" /> pour effectuer l'action de notification</translation> <translation id="9017320285115481645">Saisissez le code d'accès parental Family Link.</translation> +<translation id="9024331582947483881">plein écran</translation> <translation id="9047624247355796468">Ouvrir les paramètres du réseau <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">L'appareil va être rétabli</translation> <translation id="9065203028668620118">Modifier</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb index 82d4ab8..fc01a3f 100644 --- a/ash/strings/ash_strings_gl.xtb +++ b/ash/strings/ash_strings_gl.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asistente</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Definir idioma</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Pantalla de bloqueo</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Ola, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Activar/desactivar función <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Mover cursor</translation> <translation id="3098580329624789136">Obter <ph name="INTENT" /> de "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Fai unha captura de pantalla</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Reinicia para actualizar</translation> <translation id="3139942575505304791">Escritorio 1</translation> -<translation id="3147157020428159854">Detívose a gravación da pantalla</translation> <translation id="315116470104423982">Datos móbiles</translation> <translation id="3151786313568798007">Orientación</translation> <translation id="3153444934357957346">Só podes ter ata <ph name="MULTI_PROFILE_USER_LIMIT" /> contas no inicio de sesión múltiple.</translation> @@ -367,7 +368,6 @@ <translation id="4296136865091727875">Borrar as <ph name="COUNT" /> notificacións</translation> <translation id="4302592941791324970">Non dispoñible</translation> <translation id="4303223480529385476">Despregar área de estado</translation> -<translation id="4315586716182276649">Sácalle máis partido á conexión a Internet do teléfono, controla o modo Non molestar e localiza o teu dispositivo. Accede ás pestanas de Chrome que tes activas no teléfono desde o teu dispositivo (<ph name="DEVICE_TYPE" />).</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Premiches o atallo de teclado para o alto contraste. Queres activalo?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -561,6 +561,7 @@ <translation id="6054305421211936131">Inicia sesión coa tarxeta intelixente</translation> <translation id="6059276912018042191">Pestanas recentes de Chrome</translation> <translation id="6062360702481658777">A túa sesión pecharase automaticamente en <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Deter gravación</translation> <translation id="607652042414456612">Os dispositivos Bluetooth situados nas proximidades poderán detectar o teu dispositivo, que aparecerá como "<ph name="NAME" />" co enderezo <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">O Asistente de Google non está dispoñible cando se utiliza unha sesión de invitado.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Mantén premidas as dúas teclas de volume durante cinco segundos para desactivar os comentarios de voz.</translation> <translation id="7658239707568436148">Cancelar</translation> <translation id="7662283695561029522">Toca para configurar a conexión compartida</translation> -<translation id="7683326293741220026">Parece que tes o Bluetooth desactivado no teléfono. Para utilizar a función O meu teléfono, activa o Bluetooth do teléfono.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificación}other{# notificacións}}</translation> <translation id="7724603315864178912">Cortar</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Calculando o tempo da batería.</translation> <translation id="8061464966246066292">Alto contraste</translation> <translation id="8098591350844501178">Deter a emisión da pantalla en: <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Sácalle máis partido á conexión a Internet do teléfono, localízao e controla o modo Non molestar. Accede ás pestanas de Chrome que tes activas no teléfono desde o teu dispositivo (<ph name="DEVICE_TYPE" />).</translation> <translation id="8113423164597455979">Si, para todas</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Confirmar</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> non admite <ph name="SPECIFIED_RESOLUTION" />. A resolución cambiouse a <ph name="FALLBACK_RESOLUTION" />. Para gardar os cambios, fai clic en Confirmar. A configuración anterior restaurarase en <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Xirar autom.</translation> <translation id="8517041960877371778">É posible que o teu <ph name="DEVICE_TYPE" /> non cargue mentres estea acendido.</translation> +<translation id="8553395910833293175">Xa se asignou a todos os escritorios.</translation> <translation id="8563862697512465947">Configuración de notificacións</translation> <translation id="857201607579416096">O menú moveuse á esquina inferior dereita da pantalla.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590">Usando: <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Desbloquea o dispositivo como <ph name="LOGIN_ID" /> para levar a cabo a acción de notificación</translation> <translation id="9017320285115481645">Introduce o código de acceso parental de Family Link.</translation> +<translation id="9024331582947483881">pantalla completa</translation> <translation id="9047624247355796468">Abrir a configuración de <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Instalarase unha versión anterior no dispositivo</translation> <translation id="9065203028668620118">Editar</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb index a6c8451..129ec26 100644 --- a/ash/strings/ash_strings_gu.xtb +++ b/ash/strings/ash_strings_gu.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">તમારી ભાષા સેટ કરો</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">સ્ક્રીન લૉક કરો</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">નમસ્કાર, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> ટૉગલ કરો. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">કર્સર ખસેડો</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" માટે <ph name="INTENT" /> મેળવો</translation> +<translation id="3105917916468784889">સ્ક્રીનશૉટ લો</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">અપડેટ કરવા માટે પુનઃપ્રારંભ કરો</translation> <translation id="3139942575505304791">ડેસ્ક 1</translation> -<translation id="3147157020428159854">સ્ક્રીન રેકોર્ડિંગ બંધ કર્યું</translation> <translation id="315116470104423982">મોબાઇલ ડેટા</translation> <translation id="3151786313568798007">ઓરિએન્ટેશન</translation> <translation id="3153444934357957346">તમે એકથી વધુ સાઇન ઇનમાં માત્ર <ph name="MULTI_PROFILE_USER_LIMIT" /> સુધી એકાઉન્ટ રાખી શકો છો.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">બધા <ph name="COUNT" /> નોટિફિકેશન સાફ કરો</translation> <translation id="4302592941791324970">ઉપલબ્ધ નથી</translation> <translation id="4303223480529385476">સ્ટેટસ એરિયા વધારો</translation> -<translation id="4315586716182276649">તમારા ફોન માટે ઇન્ટરનેટ કનેક્શનની રેંજ વધારો, 'ખલેલ પાડશો નહીં' અને 'તમારું ડિવાઇસ શોધી કાઢો'ને નિયંત્રિત કરો. તમારા <ph name="DEVICE_TYPE" /> પર તમારા ફોનની સક્રિય Chrome ટૅબ જુઓ.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">તમે હાઇ કૉન્ટ્રાસ્ટ માટેનો કીબોર્ડ શૉર્ટકટ દબાવેલ છે. શું તમે તેને ચાલુ કરવા માગો છો?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">સ્માર્ટ કાર્ડ વડે સાઇન ઇન કરો</translation> <translation id="6059276912018042191">તાજેતરની Chrome ટૅબ</translation> <translation id="6062360702481658777">તમે ઑટોમૅટિક રીતે <ph name="LOGOUT_TIME_LEFT" /> માં સાઇન આઉટ થઈ જશો.</translation> +<translation id="6073451960410192870">રેકોર્ડિંગ બંધ કરો</translation> <translation id="607652042414456612">નજીકનાં Bluetooth ડિવાઇસ માટે તમારું કમ્પ્યુટર શોધવાયોગ્ય છે અને તે સરનામાં <ph name="ADDRESS" /> સાથે "<ph name="NAME" />" તરીકે દેખાશે</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">અતિથિ સત્રમાં Google આસિસ્ટંટ ઉપલબ્ધ હોતું નથી.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">બોલાયેલ પ્રતિસાદ બંધ કરવા પાંચ સેકન્ડ માટે બન્ને વૉલ્યૂમ કીને દબાવી રાખો.</translation> <translation id="7658239707568436148">રદ કરો</translation> <translation id="7662283695561029522">ગોઠવવા માટે ટૅપ કરો</translation> -<translation id="7683326293741220026">એવું લાગે છે કે તમારા ફોન પર બ્લૂટૂથ બંધ કરેલું છે. કૃપા કરીને ફોન હબનો ઉપયોગ કરવા માટે તમારા ફોન પર બ્લૂટૂથ ચાલુ કરો.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 નોટિફિકેશન}one{# નોટિફિકેશન}other{# નોટિફિકેશન}}</translation> <translation id="7724603315864178912">કાપો</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">બેટરી સમયની ગણના કરે છે.</translation> <translation id="8061464966246066292">ઉચ્ચ કોન્ટ્રાસ્ટ</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" /> પર સ્ક્રીન કાસ્ટ કરવાનું રોકો</translation> -<translation id="8108657971283652031">તમારા ફોન માટે ઇન્ટરનેટ કનેક્શનની રેંજ વધારો, 'ખલેલ પાડશો નહીં' અને 'તમારા ફોનને શોધી કાઢો'ને નિયંત્રિત કરો. તમારા <ph name="DEVICE_TYPE" /> પર તમારા ફોનની સક્રિય Chrome ટૅબ જુઓ.</translation> <translation id="8113423164597455979">ચાલુ, બધી ઍપ</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">પુષ્ટિ કરો</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" />, <ph name="SPECIFIED_RESOLUTION" />ને સપોર્ટ આપતું નથી. રિઝોલ્યુશનને <ph name="FALLBACK_RESOLUTION" /> પર બદલવામાં આવ્યું હતું. ફેરફારો રાખવા માટે કન્ફર્મ પર ક્લિક કરો. અગાઉના સેટિંગ <ph name="TIMEOUT_SECONDS" />માં રિસ્ટોર કરવામાં આવશે.</translation> <translation id="8513108775083588393">ઑટો રોટેટ</translation> <translation id="8517041960877371778">તમારું <ph name="DEVICE_TYPE" /> ચાલુ હોય ત્યારે તે ચાર્જ ન થાય તેવું બની શકે.</translation> +<translation id="8553395910833293175">બધા ડેસ્ક માટે પહેલેથી જ સોંપણી કરવામાં આવી છે.</translation> <translation id="8563862697512465947">સૂચના સેટિંગ્સ</translation> <translation id="857201607579416096">મેનૂને સ્ક્રીનની નીચેના જમણા ખૂણામાં ખસેડ્યું.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" />નો ઉપયોગ કરી રહ્યા છે</translation> <translation id="899350903320462459">નોટિફિકેશન ક્રિયા કરવા માટે ઉપકરણને <ph name="LOGIN_ID" /> તરીકે અનલૉક કરો</translation> <translation id="9017320285115481645">Family Linkનો માતાપિતા માટેનો ઍક્સેસ કોડ દાખલ કરો.</translation> +<translation id="9024331582947483881">પૂર્ણ સ્ક્રીન</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> માટે સેટિંગ ખોલો</translation> <translation id="9056839673611986238">ઉપકરણ રોલ બૅક કરવામાં આવશે</translation> <translation id="9065203028668620118">ફેરફાર કરો</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb index 60166fa..6639b334 100644 --- a/ash/strings/ash_strings_hi.xtb +++ b/ash/strings/ash_strings_hi.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">अपनी भाषा सेट करें</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">लॉक स्क्रीन</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">नमस्ते, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> को टॉगल करें. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">कर्सर घुमाएं</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" के लिए <ph name="INTENT" /> पाएं</translation> +<translation id="3105917916468784889">स्क्रीनशॉट लें</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (ब्लूटूथ)</translation> <translation id="3126069444801937830">अपडेट करने के लिए रीस्टार्ट करें</translation> <translation id="3139942575505304791">डेस्क 1</translation> -<translation id="3147157020428159854">स्क्रीन की रिकॉर्डिंग बंद हो गई</translation> <translation id="315116470104423982">मोबाइल डेटा</translation> <translation id="3151786313568798007">अभिविन्यास</translation> <translation id="3153444934357957346">एक से ज़्यादा साइन-इन की सुविधा के लिए आपके पास ज़्यादा से ज़्यादा <ph name="MULTI_PROFILE_USER_LIMIT" /> खाते हो सकते हैं.</translation> @@ -367,7 +368,6 @@ <translation id="4296136865091727875">सभी <ph name="COUNT" /> सूचनाएं हटाएं</translation> <translation id="4302592941791324970">उपलब्ध नहीं है</translation> <translation id="4303223480529385476">स्टेटस बताने वाली जगह को बड़ा करें</translation> -<translation id="4315586716182276649">अपने फ़ोन का इंटरनेट कनेक्शन बेहतर बनाएं. साथ ही, 'परेशान न करें' सुविधा को कंट्रोल करें और अपने डिवाइस का पता लगाएं. अपने फ़ोन में Chrome पर चालू किए गए टैब <ph name="DEVICE_TYPE" /> पर देखें.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">आपने 'हाई कंट्रास्ट' का कीबोर्ड शॉर्टकट दबाया है. क्या आप इसे चालू करना चाहते हैं?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -561,6 +561,7 @@ <translation id="6054305421211936131">स्मार्ट कार्ड से साइन इन करें</translation> <translation id="6059276912018042191">Chrome पर हाल ही में खोले गए टैब</translation> <translation id="6062360702481658777">आप <ph name="LOGOUT_TIME_LEFT" /> में अपने आप प्रस्थान कर जाएंगे.</translation> +<translation id="6073451960410192870">रिकॉर्डिंग बंद करें</translation> <translation id="607652042414456612">आपका कंप्यूर आस-पास के ब्लूटूथ डिवाइस के लिए खोजे जाने योग्य है और वह "<ph name="NAME" />" के रूप में <ph name="ADDRESS" /> पते के साथ दिखाई देगा</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Assistant की सुविधा मेहमान के तौर पर ब्राउज़ करने के सेशन में उपलब्ध नहीं है.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">कंप्यूटर का बोलकर दिया गया जवाब बंद करने के लिए दोनों वॉल्यूम की पांच सेकंड तक दबाकर रखें.</translation> <translation id="7658239707568436148">अभी नहीं</translation> <translation id="7662283695561029522">कॉन्फ़िगर करने के लिए टैप करें</translation> -<translation id="7683326293741220026">ऐसा लगता है कि आपके फ़ोन पर ब्लूटूथ बंद है. फ़ोन हब का इस्तेमाल करने के लिए, कृपया अपने फ़ोन पर ब्लूटूथ चालू करें.</translation> <translation id="7705524343798198388">वीपीएन</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 सूचना}one{# सूचना}other{# सूचनाएं}}</translation> <translation id="7724603315864178912">काटें</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">बैटरी समय की गणना की जा रही है.</translation> <translation id="8061464966246066292">उच्च स्क्रीन की रोशनी</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" /> को स्क्रीन कास्ट करना बंद करें</translation> -<translation id="8108657971283652031">अपने फ़ोन का इंटरनेट कनेक्शन बेहतर बनाएं. साथ ही, 'परेशान न करें' सुविधा को कंट्रोल करें और अपने फ़ोन का पता लगाएं. अपने फ़ोन में Chrome पर चालू किए गए टैब <ph name="DEVICE_TYPE" /> पर देखें.</translation> <translation id="8113423164597455979">चालू, सभी ऐप</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">पुष्टि करें</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" />, <ph name="SPECIFIED_RESOLUTION" /> के साथ काम नहीं करता. रिज़ॉल्यूशन को बदलकर <ph name="FALLBACK_RESOLUTION" /> कर दिया गया था. बदलाव बनाए रखने के लिए, 'जारी रखें' पर क्लिक करें. सेटिंग को <ph name="TIMEOUT_SECONDS" /> में पहले जैसा दिया जाएगा.</translation> <translation id="8513108775083588393">ऑटो-रोटेट</translation> <translation id="8517041960877371778">हो सकता है आपका <ph name="DEVICE_TYPE" /> चालू होने पर चार्ज नहीं होता हो.</translation> +<translation id="8553395910833293175">सभी डेस्क के लिए पहले से असाइन किया जा चुका है.</translation> <translation id="8563862697512465947">सूचना सेटिंग</translation> <translation id="857201607579416096">मेन्यू, स्क्रीन के सबसे नीचे दाएं कोने में चला गया है.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> का इस्तेमाल करें</translation> <translation id="899350903320462459">सूचना से जुड़ी कार्रवाई करने के लिए डिवाइस को <ph name="LOGIN_ID" /> के तौर पर अनलॉक करें</translation> <translation id="9017320285115481645">Family Link का अभिभावक ऐक्सेस कोड डालें.</translation> +<translation id="9024331582947483881">पूर्ण स्क्रीन</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> के लिए सेटिंग खोलें</translation> <translation id="9056839673611986238">डिवाइस बहाल कर दिया जाएगा</translation> <translation id="9065203028668620118">बदलाव करें</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb index cce7fee3..8d316b4 100644 --- a/ash/strings/ash_strings_hr.xtb +++ b/ash/strings/ash_strings_hr.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Postavite jezik</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Zaključaj zaslon</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Pozdrav, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Uključite ili isključite značajku <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Pomicanje pokazivača</translation> <translation id="3098580329624789136">Saznajte <ph name="INTENT" /> za "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Snimi zaslon</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Ponovo pokrenite za ažuriranje</translation> <translation id="3139942575505304791">Radna površina 1</translation> -<translation id="3147157020428159854">Snimanje zaslona zaustavljeno</translation> <translation id="315116470104423982">Mobilni podaci</translation> <translation id="3151786313568798007">Usmjerenje</translation> <translation id="3153444934357957346">U višestrukoj prijavi ne možete imati više od <ph name="MULTI_PROFILE_USER_LIMIT" /> računa.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Brisanje svih obavijesti (<ph name="COUNT" />)</translation> <translation id="4302592941791324970">Nedostupno</translation> <translation id="4303223480529385476">Proširite područje statusa</translation> -<translation id="4315586716182276649">Proširite internetsku vezu telefona, upravljajte značajkom Ne uznemiravaj i locirajte svoj uređaj. Pregledavajte aktivne Chromeove kartice s telefona na uređaju <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Pritisnuli ste tipkovni prečac za visoki kontrast. Želite li ga uključiti?</translation> <translation id="4331809312908958774">OS Chrome</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Prijava pomoću pametne kartice</translation> <translation id="6059276912018042191">Nedavne Chromeove kartice</translation> <translation id="6062360702481658777">Automatski ćete se odjaviti za <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Zaustavi snimanje</translation> <translation id="607652042414456612">Vaše računalo mogu otkriti Bluetooth uređaji u blizini i prikazivat će se kao "<ph name="NAME" />" s adresom <ph name="ADDRESS" />.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google asistent nije dostupan u gostujućoj sesiji.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Pritisnite i zadržite tipke za glasnoću pet sekundi da biste onemogućili govorne povratne informacije.</translation> <translation id="7658239707568436148">Odustani</translation> <translation id="7662283695561029522">Dodirnite da biste konfigurirali</translation> -<translation id="7683326293741220026">Čini se da je na vašem telefonu isključen Bluetooth. Da biste koristili Phone hub, uključite Bluetooth na telefonu.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 obavijest}one{# obavijest}few{# obavijesti}other{# obavijesti}}</translation> <translation id="7724603315864178912">Izreži</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Izračun vremena baterije.</translation> <translation id="8061464966246066292">Visoki kontrast</translation> <translation id="8098591350844501178">Zaustavi emitiranje zaslona na prijamniku <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Proširite internetsku vezu telefona, upravljajte značajkom Ne uznemiravaj i locirajte svoj telefon. Pregledavajte aktivne Chromeove kartice s telefona na uređaju <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Uklj., sve ap.</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Potvrdi</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> ne podržava razlučivost <ph name="SPECIFIED_RESOLUTION" />. Razlučivost je promijenjena u <ph name="FALLBACK_RESOLUTION" />. Kliknite Potvrdi da biste zadržali promjene. Prethodne postavke vratit će se za <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Aut. zakret.</translation> <translation id="8517041960877371778">Uređaj <ph name="DEVICE_TYPE" /> možda se neće puniti dok je uključen.</translation> +<translation id="8553395910833293175">Već je dodijeljeno svim radnim površinama.</translation> <translation id="8563862697512465947">Postavke obavijesti</translation> <translation id="857201607579416096">Izbornik je premješten u donji desni kut zaslona.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Upotrebljava se <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Otključajte uređaj kao <ph name="LOGIN_ID" /> za izvršenje radnje obavijesti.</translation> <translation id="9017320285115481645">Unesite kôd za roditeljski pristup Family Linka.</translation> +<translation id="9024331582947483881">cijeli zaslon</translation> <translation id="9047624247355796468">Otvorite postavke mreže <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Uređaj će se vratiti na prethodnu verziju sustava</translation> <translation id="9065203028668620118">Uredi</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb index 34c5582..d66e905 100644 --- a/ash/strings/ash_strings_hu.xtb +++ b/ash/strings/ash_strings_hu.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Segéd</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Nyelv beállítása</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Képernyő lezárása</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Üdv, <ph name="USERNAME" />!</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> be-/kikapcsolása. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Kurzor mozgatása</translation> <translation id="3098580329624789136"><ph name="INTENT" /> kérése a következőhöz: „<ph name="QUERY" />”.</translation> +<translation id="3105917916468784889">Képernyőkép készítése</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Indítsa újra a frissítéshez</translation> <translation id="3139942575505304791">1. asztal</translation> -<translation id="3147157020428159854">A képernyő rögzítése leállt</translation> <translation id="315116470104423982">Mobiladatok</translation> <translation id="3151786313568798007">Tájolás</translation> <translation id="3153444934357957346">Legfeljebb <ph name="MULTI_PROFILE_USER_LIMIT" /> fiókot használhat a többfiókos bejelentkezés során.</translation> @@ -367,7 +368,6 @@ <translation id="4296136865091727875">Az összes (<ph name="COUNT" />) értesítés törlése</translation> <translation id="4302592941791324970">Nem áll rendelkezésre</translation> <translation id="4303223480529385476">Állapotsor kibontása</translation> -<translation id="4315586716182276649">Kibővítheti telefonja internetkapcsolatát, vezérelheti a Ne zavarjanak funkciót, és megkeresheti eszközét. Telefonja aktív Chrome-lapjait <ph name="DEVICE_TYPE" /> eszközén is megtekintheti.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Lenyomta a nagy kontraszt billentyűparancsát. Bekapcsolja a funkciót?</translation> <translation id="4331809312908958774">Chrome operációs rendszer</translation> @@ -561,6 +561,7 @@ <translation id="6054305421211936131">Bejelentkezés intelligens kártyával</translation> <translation id="6059276912018042191">Nemrég megnyitott Chrome-lapok</translation> <translation id="6062360702481658777">A rendszer automatikusan kijelentkezteti Önt <ph name="LOGOUT_TIME_LEFT" /> idő múlva.</translation> +<translation id="6073451960410192870">Felvétel leállítása</translation> <translation id="607652042414456612">Számítógépét felfedezhetik a közeli Bluetooth-eszközök. Számítógépe „<ph name="NAME" />” néven, <ph name="ADDRESS" /> címmel lesz látható</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">A Google Segéd nem áll rendelkezésre Vendég-munkafolyamatban.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">A hangos visszajelzés kikapcsolásához öt másodpercig tartsa lenyomva mindkét hangerőgombot.</translation> <translation id="7658239707568436148">Mégse</translation> <translation id="7662283695561029522">Koppintson a konfiguráláshoz</translation> -<translation id="7683326293741220026">Úgy tűnik, ki van kapcsolva a Bluetooth a telefonon. A Telefonközpont használatához kapcsolja be a telefonon a Bluetootht.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 értesítés}other{# értesítés}}</translation> <translation id="7724603315864178912">Kivágás</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Akkumulátor-időtartam kiszámítása.</translation> <translation id="8061464966246066292">Kontrasztos megjelenítés</translation> <translation id="8098591350844501178">A képernyő „<ph name="RECEIVER_NAME" />” eszközre történő átküldésének leállítása</translation> -<translation id="8108657971283652031">Kibővítheti telefonja internetkapcsolatát, vezérelheti a Ne zavarjanak funkciót, és megkeresheti telefonját. Telefonja aktív Chrome-lapjait <ph name="DEVICE_TYPE" /> eszközén is megtekintheti.</translation> <translation id="8113423164597455979">Be, összes app</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Megerősítés</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069">A(z) <ph name="DISPLAY_NAME" /> nem támogatja a következő felbontást: <ph name="SPECIFIED_RESOLUTION" />. A felbontás erre módosult: <ph name="FALLBACK_RESOLUTION" />. A módosítás megtartásához kattintson a Megerősítés gombra. A beállítás <ph name="TIMEOUT_SECONDS" /> múlva visszaáll a korábbi értékre.</translation> <translation id="8513108775083588393">Autom.forgatás</translation> <translation id="8517041960877371778">Előfordulhat, hogy a(z) <ph name="DEVICE_TYPE" /> nem töltődik, amíg be van kapcsolva.</translation> +<translation id="8553395910833293175">Már minden asztalhoz hozzá van rendelve.</translation> <translation id="8563862697512465947">Értesítési beállítások</translation> <translation id="857201607579416096">A menü a képernyő jobb alsó sarkába került.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> használata</translation> <translation id="899350903320462459">Az eszköz zárolásának feloldása az értesítési művelet végrehajtásához a következő felhasználó által: <ph name="LOGIN_ID" />.</translation> <translation id="9017320285115481645">Adja meg a Family Link szülői hozzáférési kódját.</translation> +<translation id="9024331582947483881">teljes képernyő</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> beállításainak megnyitása</translation> <translation id="9056839673611986238">Az eszköz korábbi állapotra áll vissza</translation> <translation id="9065203028668620118">Szerkesztés</translation>
diff --git a/ash/strings/ash_strings_hy.xtb b/ash/strings/ash_strings_hy.xtb index 418a4b6..7c12454 100644 --- a/ash/strings/ash_strings_hy.xtb +++ b/ash/strings/ash_strings_hy.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Օգնական</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Ընտրեք լեզուն</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Կողպել էկրանը</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Ողջույն, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" />՝ միացնել/անջատել։ <ph name="STATE_TEXT" />։</translation> <translation id="309749186376891736">Նշորդի տեղափոխում</translation> <translation id="3098580329624789136">Ստացեք <ph name="INTENT" /> «<ph name="QUERY" />» հարցումով</translation> +<translation id="3105917916468784889">Ստանալ սքրինշոթը</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Թարմացնելու համար վերագործարկեք</translation> <translation id="3139942575505304791">Աշխատասեղան 1</translation> -<translation id="3147157020428159854">Էկրանի տեսագրումը դադարեցվեց</translation> <translation id="315116470104423982">Բջջային կապի տվյալներ</translation> <translation id="3151786313568798007">Էկրանի դիրքը</translation> <translation id="3153444934357957346">Դուք կարող եք առավելագույնը <ph name="MULTI_PROFILE_USER_LIMIT" /> հաշիվ ունենալ:</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Մաքրել բոլոր <ph name="COUNT" /> ծանուցումները</translation> <translation id="4302592941791324970">Հասանելի չէ</translation> <translation id="4303223480529385476">Ծավալել կարգավիճակի տարածքը</translation> -<translation id="4315586716182276649">Միացեք բջջային ինտերնետին, կառավարեք «Չանհանգստացնել» ռեժիմը և տեղորոշեք ձեր սարքը։ Դիտեք <ph name="DEVICE_TYPE" /> սարքում այն ներդիրները, որոնք բացել եք ձեր հեռախոսի Chrome դիտարկիչում։</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Դուք սեղմել եք բարձր կոնտրաստի դյուրանցման ստեղները: Ուզում եք միացնե՞լ այն:</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Մտնել հաշիվ խելացի քարտի օգնությամբ</translation> <translation id="6059276912018042191">Վերջերս բացված Chrome-ի ներդիրներ</translation> <translation id="6062360702481658777">Դուք ավտոմատ դուրս կգրվեք <ph name="LOGOUT_TIME_LEFT" />-ից:</translation> +<translation id="6073451960410192870">Դադարեցնել տեսագրումը</translation> <translation id="607652042414456612">Ձեր համակարգիչը տեսանելի է մոտակայքի Bluetooth սարքերի համար: Այն երևում է «<ph name="NAME" />» անունով, <ph name="ADDRESS" /> հասցեով</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />։ <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Օգնականը հասանելի չէ հյուրի աշխատաշրջանում:</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Ձայնային ուղեկցումն անջատելու համար սեղմեք և պահեք ձայնի երկու կոճակները հինգ վայրկյան:</translation> <translation id="7658239707568436148">Չեղարկել</translation> <translation id="7662283695561029522">Հպեք՝ կարգավորելու համար</translation> -<translation id="7683326293741220026">Bluetooth-ն անջատված է ձեր հեռախոսում։ Հեռախոսի կառավարման կենտրոնն օգտագործելու համար միացրեք Bluetooth-ը։</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ծանուցում}one{# ծանուցում}other{# ծանուցում}}</translation> <translation id="7724603315864178912">Կտրել</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Մարտկոցի ժամանակի հաշվարկում:</translation> <translation id="8061464966246066292">Բարձր կոնտրաստ</translation> <translation id="8098591350844501178">Դադարեցնել էկրանի հեռարձակումը <ph name="RECEIVER_NAME" />-ին</translation> -<translation id="8108657971283652031">Միացեք բջջային ինտերնետին, կառավարեք «Չանհանգստացնել» ռեժիմը և տեղորոշեք ձեր հեռախոսը։ Դիտեք <ph name="DEVICE_TYPE" /> սարքում այն ներդիրները, որոնք բացել եք ձեր հեռախոսի Chrome դիտարկիչում։</translation> <translation id="8113423164597455979">Բոլորը միացված են</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Հաստատել</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" />-ը չի աջակցում <ph name="SPECIFIED_RESOLUTION" /> լուծաչափը։ Լուծաչափը փոխվել է <ph name="FALLBACK_RESOLUTION" />-ի։ Հպեք «Հաստատել»՝ փոփոխությունները պահպանելու համար։ Նախորդ կարգավորումները կվերականգնվեն <ph name="TIMEOUT_SECONDS" /> հետո։</translation> <translation id="8513108775083588393">Ինքնապտտում</translation> <translation id="8517041960877371778">Որպեսզի ձեր <ph name="DEVICE_TYPE" /> սարքը լիցքավորվի, անհրաժեշտ է անջատել այն:</translation> +<translation id="8553395910833293175">Արդեն հասանելի է բոլոր աշխատասեղաններին։</translation> <translation id="8563862697512465947">Ծանուցումների կարգավորումներ</translation> <translation id="857201607579416096">Ընտրացանկը տեղափոխվեց էկրանի ներքևի աջ անկյուն։</translation> <translation id="8594115950068821369">–<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Օգտագործվում է՝ <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Ծանուցման հետ գործողություն կատարելու համար ապակողպեք սարքը որպես <ph name="LOGIN_ID" /></translation> <translation id="9017320285115481645">Մուտքագրեք Family Link-ի ծնողի մուտքի կոդը։</translation> +<translation id="9024331582947483881">լիաէկրան</translation> <translation id="9047624247355796468">Բացել «<ph name="NETWORK_NAME" />» ցանցի կարգավորումները</translation> <translation id="9056839673611986238">Սարքը կվերակայվի</translation> <translation id="9065203028668620118">Փոփոխել</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb index 15c4faf..e0fbfec3 100644 --- a/ash/strings/ash_strings_id.xtb +++ b/ash/strings/ash_strings_id.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asisten</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Setel bahasa Anda</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Kunci Layar</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558"><ph name="USERNAME" /> yang terhormat,</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Tombol <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Pindahkan kursor</translation> <translation id="3098580329624789136">Dapatkan <ph name="INTENT" /> untuk "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Ambil screenshot</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Mulai ulang untuk memperbarui</translation> <translation id="3139942575505304791">Halaman kerja 1</translation> -<translation id="3147157020428159854">Perekaman layar dihentikan</translation> <translation id="315116470104423982">Data seluler</translation> <translation id="3151786313568798007">Orientasi</translation> <translation id="3153444934357957346">Anda hanya dapat memiliki maksimum <ph name="MULTI_PROFILE_USER_LIMIT" /> akun dalam fitur login multipel.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Hapus semua (<ph name="COUNT" />) notifikasi</translation> <translation id="4302592941791324970">Tidak tersedia</translation> <translation id="4303223480529385476">Luaskan area status</translation> -<translation id="4315586716182276649">Perluas koneksi internet ponsel, kontrol fitur Jangan Ganggu, dan temukan perangkat Anda. Lihat tab Chrome yang aktif dari ponsel di <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Anda menekan pintasan keyboard untuk kontras tinggi. Ingin mengaktifkannya?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Login dengan kartu smart</translation> <translation id="6059276912018042191">Tab Chrome terbaru</translation> <translation id="6062360702481658777">Anda akan dikeluarkan secara otomatis dalam <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Berhenti merekam</translation> <translation id="607652042414456612">Komputer Anda dapat ditemukan pada perangkat Bluetooth terdekat dan akan muncul sebagai "<ph name="NAME" />" dengan alamat <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Asisten Google tidak tersedia dalam sesi tamu.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Tekan dan tahan kedua tombol volume selama 5 detik untuk menonaktifkan masukan lisan.</translation> <translation id="7658239707568436148">Batal</translation> <translation id="7662283695561029522">Ketuk untuk mengonfigurasi</translation> -<translation id="7683326293741220026">Sepertinya Bluetooth dinonaktifkan di ponsel Anda. Aktifkan Bluetooth di ponsel untuk menggunakan Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notifikasi}other{# notifikasi}}</translation> <translation id="7724603315864178912">Potong</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Menghitung masa pakai baterai.</translation> <translation id="8061464966246066292">Kontras tinggi</translation> <translation id="8098591350844501178">Hentikan casting layar ke <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Perluas koneksi internet ponsel, kontrol fitur Jangan Ganggu, dan temukan ponsel Anda. Lihat tab Chrome yang aktif dari ponsel di <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Aktif, semua</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Konfirmasi</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> tidak mendukung <ph name="SPECIFIED_RESOLUTION" />. Resolusi diubah ke <ph name="FALLBACK_RESOLUTION" />. Klik konfirmasi untuk menyimpan perubahan. Setelan sebelumnya akan dipulihkan dalam <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Putar otomatis</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> Anda mungkin tidak diisi daya saat dinyalakan.</translation> +<translation id="8553395910833293175">Telah ditetapkan ke semua desktop.</translation> <translation id="8563862697512465947">Setelan Notifikasi</translation> <translation id="857201607579416096">Menu dipindahkan ke pojok kanan bawah layar.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Menggunakan <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Buka kunci perangkat sebagai <ph name="LOGIN_ID" /> untuk melakukan tindakan notifikasi</translation> <translation id="9017320285115481645">Masukkan kode akses orang tua Family Link.</translation> +<translation id="9024331582947483881">layar penuh</translation> <translation id="9047624247355796468">Buka setelan untuk <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Perangkat akan dipulihkan</translation> <translation id="9065203028668620118">Edit</translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb index 1a2feb3..8d5969d 100644 --- a/ash/strings/ash_strings_is.xtb +++ b/ash/strings/ash_strings_is.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Aðstoðarmaður</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Veldu tungumál</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Lásskjár</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hæ, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Kveikja/slökkva á <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Færa bendil</translation> <translation id="3098580329624789136">Sækja <ph name="INTENT" /> fyrir „<ph name="QUERY" />“</translation> +<translation id="3105917916468784889">Taka skjámynd</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Endurræstu til að uppfæra</translation> <translation id="3139942575505304791">Skrifborð 1</translation> -<translation id="3147157020428159854">Skjáupptaka stöðvuð</translation> <translation id="315116470104423982">Farsímagögn</translation> <translation id="3151786313568798007">Stefna</translation> <translation id="3153444934357957346">Þú getur aðeins verið með <ph name="MULTI_PROFILE_USER_LIMIT" /> reikninga í innskráningu á marga reikninga.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Hreinsa <ph name="COUNT" /> tilkynningar</translation> <translation id="4302592941791324970">Ekki tiltækt</translation> <translation id="4303223480529385476">Stækka stöðusvæði</translation> -<translation id="4315586716182276649">Framlengdu nettengingu símans, stjórnaðu Ónáðið ekki og staðsettu tækið þitt. Skoðaðu virka Chrome flipa úr símanum í <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Þú ýttir á flýtilykilinn fyrir mikil birtuskil. Viltu kveikja á þeim?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Skrá inn með snjallkorti</translation> <translation id="6059276912018042191">Nýlegir Chrome flipar</translation> <translation id="6062360702481658777">Þú verður skráð(ur) út sjálfkrafa eftir <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Stöðva upptöku</translation> <translation id="607652042414456612">Nálæg Bluetooth-tæki geta fundið tölvuna þína og hún birtist sem „<ph name="NAME" />“ með vistfangið <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google hjálparinn er ekki í boði í gestalotu.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Haltu báðum hljóðstyrkshnöppunum inni í fimm sekúndur til að slökkva á raddsvörun.</translation> <translation id="7658239707568436148">Hætta við</translation> <translation id="7662283695561029522">Ýttu til að stilla</translation> -<translation id="7683326293741220026">Svo virðist sem slökkt sé á Bluetooth í símanum þínum. Kveiktu á Bluetooth í símanum til að nota Símstöð.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{Ein tilkynning}one{# tilkynning}other{# tilkynningar}}</translation> <translation id="7724603315864178912">Klippa</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Reiknar rafhlöðuendingu.</translation> <translation id="8061464966246066292">Mikil birtuskil</translation> <translation id="8098591350844501178">Hætta að senda skjáinn út í <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Framlengdu nettengingu símans, stjórnaðu Ónáðið ekki og staðsettu símann þinn. Skoðaðu virka Chrome flipa úr símanum í <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Öll forrit</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Staðfesta</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> styður ekki <ph name="SPECIFIED_RESOLUTION" />. Upplausninni var breytt í <ph name="FALLBACK_RESOLUTION" />. Veldu „Staðfesta“ til að halda breytingum. Fyrri stillingar verða valdar eftir <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Snýst sjálft</translation> <translation id="8517041960877371778">Ekki er víst að <ph name="DEVICE_TYPE" /> hlaðist á meðan kveikt er á tölvunni.</translation> +<translation id="8553395910833293175">Þegar úthlutað til allra skrifborða</translation> <translation id="8563862697512465947">Tilkynningastillingar</translation> <translation id="857201607579416096">Valmynd færð neðst í hægra horn skjásins.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Notar <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Opnaðu tækið sem <ph name="LOGIN_ID" /> til að framkvæma aðgerð tilkynningarinnar</translation> <translation id="9017320285115481645">Færðu inn aðgangskóða foreldris fyrir Family Link.</translation> +<translation id="9024331582947483881">allur skjárinn</translation> <translation id="9047624247355796468">Opna stillingar fyrir <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Tækið verður fært í eldri útgáfu</translation> <translation id="9065203028668620118">Breyta</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb index 93a7830..ec42db2 100644 --- a/ash/strings/ash_strings_it.xtb +++ b/ash/strings/ash_strings_it.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistente</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Imposta la lingua</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Blocco schermo</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Ciao <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Attiva/disattiva <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Sposta il cursore</translation> <translation id="3098580329624789136">Ottieni la <ph name="INTENT" /> di "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Acquisisce uno screenshot</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Riavvia per aggiornare</translation> <translation id="3139942575505304791">Scrivania 1</translation> -<translation id="3147157020428159854">Registrazione dello schermo interrotta</translation> <translation id="315116470104423982">Dati mobili</translation> <translation id="3151786313568798007">Orientamento</translation> <translation id="3153444934357957346">Puoi avere massimo <ph name="MULTI_PROFILE_USER_LIMIT" /> account per l'accesso simultaneo.</translation> @@ -367,7 +368,6 @@ <translation id="4296136865091727875">Cancella tutte e <ph name="COUNT" /> le notifiche</translation> <translation id="4302592941791324970">Non disponibile</translation> <translation id="4303223480529385476">Espandi area di stato</translation> -<translation id="4315586716182276649">Estendi la connessione a Internet del telefono, controlla la modalità Non disturbare e localizza il tuo dispositivo. Visualizza le schede di Chrome attive sul telefono dal tuo dispositivo <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Hai premuto la scorciatoia da tastiera per l'alto contrasto. Vuoi attivarlo?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -561,6 +561,7 @@ <translation id="6054305421211936131">Accedi con la smart card</translation> <translation id="6059276912018042191">Schede Chrome recenti</translation> <translation id="6062360702481658777">Verrai disconnesso automaticamente tra <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Interrompi registrazione</translation> <translation id="607652042414456612">Il tuo computer è rilevabile per i dispositivi Bluetooth nelle vicinanze e verrà visualizzato come "<ph name="NAME" />" con l'indirizzo <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">L'Assistente Google non è disponibile in una sessione Ospite.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Tieni premuti entrambi i tasti del volume per cinque secondi per disattivare la funzione di lettura vocale.</translation> <translation id="7658239707568436148">Annulla</translation> <translation id="7662283695561029522">Tocca per configurare</translation> -<translation id="7683326293741220026">Sembra che il Bluetooth sia disattivato sul telefono. Attiva il Bluetooth sul telefono per utilizzare Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notifica}other{# notifiche}}</translation> <translation id="7724603315864178912">Taglia</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Calcolo della durata della batteria.</translation> <translation id="8061464966246066292">Contrasto elevato</translation> <translation id="8098591350844501178">Interrompi la trasmissione dello schermo su <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Estendi la connessione a Internet del telefono, controlla la modalità Non disturbare e localizza il tuo telefono. Visualizza le schede di Chrome attive sul telefono dal tuo dispositivo <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">On, tutte</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Conferma</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> non supporta la risoluzione <ph name="SPECIFIED_RESOLUTION" />. È stata impostata la risoluzione <ph name="FALLBACK_RESOLUTION" />. Fai clic su Conferma per mantenere le modifiche. Le impostazioni precedenti verranno ripristinate tra <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Rotazione aut.</translation> <translation id="8517041960877371778">Il tuo dispositivo <ph name="DEVICE_TYPE" /> potrebbe non caricarsi mentre è acceso.</translation> +<translation id="8553395910833293175">Finestra già assegnata a tutte le scrivanie.</translation> <translation id="8563862697512465947">Impostazioni di notifica</translation> <translation id="857201607579416096">Menu spostato nell'angolo in basso a destra dello schermo.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590">In uso: <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Sblocca il dispositivo con l'account <ph name="LOGIN_ID" /> per eseguire l'azione di notifica</translation> <translation id="9017320285115481645">Inserisci il codice accesso genitori di Family Link.</translation> +<translation id="9024331582947483881">schermo intero</translation> <translation id="9047624247355796468">Apri Impostazioni per <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Verrà eseguito il rollback del dispositivo</translation> <translation id="9065203028668620118">Modifica</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb index a71183d..5787eec 100644 --- a/ash/strings/ash_strings_iw.xtb +++ b/ash/strings/ash_strings_iw.xtb
@@ -232,10 +232,10 @@ <translation id="3090989381251959936">החלפת <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">סמן הזזה</translation> <translation id="3098580329624789136">קבלת ה<ph name="INTENT" /> של "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">צילום מסך</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">הפעלה מחדש כדי לעדכן</translation> <translation id="3139942575505304791">שולחן עבודה 1</translation> -<translation id="3147157020428159854">הקלטת המסך הופסקה</translation> <translation id="315116470104423982">נתוני נייד</translation> <translation id="3151786313568798007">כיוון</translation> <translation id="3153444934357957346">אפשר לכלול עד <ph name="MULTI_PROFILE_USER_LIMIT" /> חשבונות בכניסה עם מספר חשבונות.</translation> @@ -366,7 +366,6 @@ <translation id="4296136865091727875">ניקוי כל <ph name="COUNT" /> ההתראות</translation> <translation id="4302592941791324970">לא זמינה</translation> <translation id="4303223480529385476">הרחבה של אזור הסטטוס</translation> -<translation id="4315586716182276649">ניתן לשפר את החיבור של הטלפון לאינטרנט, לשלוט ב'נא לא להפריע' ולאתר את המכשיר. אפשר להציג כרטיסיות Chrome שפעילות בטלפון ב-<ph name="DEVICE_TYPE" /> שלך.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">הקשת על מקש הקיצור של ניגודיות גבוהה. להפעיל אותה?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +559,7 @@ <translation id="6054305421211936131">כניסה באמצעות כרטיס חכם</translation> <translation id="6059276912018042191">כרטיסיות Chrome אחרונות</translation> <translation id="6062360702481658777">תבוצע יציאה באופן אוטומטי בעוד <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">הפסקת צילום הסרטון</translation> <translation id="607652042414456612">מכשירי Bluetooth קרובים יכולים לאתר את המחשב שלך, והוא יופיע כ-"<ph name="NAME" />" עם הכתובת <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Assistant לא זמינה בגלישה כאורח.</translation> @@ -727,7 +727,6 @@ <translation id="7654687942625752712">כדי להשבית את קורא המסך הקולי, צריך ללחוץ על שני לחצני עוצמת הקול למשך חמש שניות.</translation> <translation id="7658239707568436148">ביטול</translation> <translation id="7662283695561029522">יש להקיש כדי להגדיר</translation> -<translation id="7683326293741220026">כנראה שה-Bluetooth כבוי בטלפון שלך. יש להפעיל את Bluetooth בטלפון כדי להשתמש ב-Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{הודעה אחת}two{2 הודעות}many{# הודעות}other{# הודעות}}</translation> <translation id="7724603315864178912">חיתוך</translation> @@ -775,7 +774,6 @@ <translation id="8054466585765276473">מחשב זמן סוללה</translation> <translation id="8061464966246066292">ניגודיות גבוהה</translation> <translation id="8098591350844501178">הפסקת העברת המסך אל <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">ניתן לשפר את החיבור של הטלפון לאינטרנט, לשלוט ב'נא לא להפריע' ולאתר את הטלפון. אפשר להציג כרטיסיות Chrome שפעילות בטלפון ב-<ph name="DEVICE_TYPE" /> שלך.</translation> <translation id="8113423164597455979">מופעל, כל האפליקציות</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">אישור</translation> @@ -882,6 +880,7 @@ <translation id="8990809378771970590">מקלדת בשימוש: <ph name="IME_NAME" /></translation> <translation id="899350903320462459">יש לבטל את נעילת המכשיר כ-<ph name="LOGIN_ID" /> על מנת לבצע את פעולת ההודעה</translation> <translation id="9017320285115481645">יש להזין את קוד הגישה להורים עבור Family Link.</translation> +<translation id="9024331582947483881">מסך מלא</translation> <translation id="9047624247355796468">פתיחת ההגדרות של <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">המכשיר יוחזר למצב קודם</translation> <translation id="9065203028668620118">עריכה</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb index accef2e..9823a720 100644 --- a/ash/strings/ash_strings_ja.xtb +++ b/ash/strings/ash_strings_ja.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">アシスタント</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">言語を設定</translation> +<translation id="1961832440516943645"><ph name="DATE" />、<ph name="TIME" /></translation> <translation id="1962969542251276847">画面をロック</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" />(USB)</translation> <translation id="1972950159383891558"><ph name="USERNAME" /> さん、こんにちは</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> を切り替えます。<ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">カーソルを移動</translation> <translation id="3098580329624789136">「<ph name="QUERY" />」の<ph name="INTENT" />を表示</translation> +<translation id="3105917916468784889">スクリーンショットを撮る</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" />(Bluetooth)</translation> <translation id="3126069444801937830">再起動して更新</translation> <translation id="3139942575505304791">デスク 1</translation> -<translation id="3147157020428159854">画面の録画を停止しました</translation> <translation id="315116470104423982">モバイル データ</translation> <translation id="3151786313568798007">向き</translation> <translation id="3153444934357957346">マルチログインに使用できるのは <ph name="MULTI_PROFILE_USER_LIMIT" /> アカウントまでです。</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875"><ph name="COUNT" /> 件の通知をすべて消去</translation> <translation id="4302592941791324970">使用できません</translation> <translation id="4303223480529385476">ステータス領域を拡大</translation> -<translation id="4315586716182276649">スマートフォンのインターネット接続を利用したり、サイレント モードを管理したり、デバイスを探したりできるほか、スマートフォンのアクティブな Chrome タブを <ph name="DEVICE_TYPE" /> で表示できます。</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">ハイ コントラストのキーボード ショートカットを押しました。この機能をオンにしますか?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">スマートカードでログイン</translation> <translation id="6059276912018042191">最近使った Chrome タブ</translation> <translation id="6062360702481658777">あと <ph name="LOGOUT_TIME_LEFT" />で自動的にログアウトします。</translation> +<translation id="6073451960410192870">撮影を停止</translation> <translation id="607652042414456612">お使いのパソコンは近くの Bluetooth デバイスで検出可能です。名前「<ph name="NAME" />」、アドレス「<ph name="ADDRESS" />」のデバイスとして表示されます</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />。<ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google アシスタントは、ゲスト セッションではご利用いただけません。</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">音声フィードバックを無効にするには、音量大と音量小の両方のボタンを 5 秒間押し続けてください。</translation> <translation id="7658239707568436148">キャンセル</translation> <translation id="7662283695561029522">設定するにはタップします</translation> -<translation id="7683326293741220026">スマートフォンで Bluetooth がオフになっているようです。スマートフォン ハブを使用するには、スマートフォンで Bluetooth をオンにしてください。</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 件の通知}other{# 件の通知}}</translation> <translation id="7724603315864178912">切り取り</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">バッテリーの残り時間を計算しています。</translation> <translation id="8061464966246066292">ハイコントラスト</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" /> への画面のキャストを停止する</translation> -<translation id="8108657971283652031">スマートフォンのインターネット接続を利用したり、サイレント モードを管理したり、スマートフォンを探したりできるほか、スマートフォンのアクティブな Chrome タブを <ph name="DEVICE_TYPE" /> で表示できます。</translation> <translation id="8113423164597455979">オン: 全アプリ</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> ℃</translation> <translation id="8131740175452115882">確認</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> は <ph name="SPECIFIED_RESOLUTION" /> に対応していません。解像度を <ph name="FALLBACK_RESOLUTION" /> に変更しました。変更を保存するには確定してください。<ph name="TIMEOUT_SECONDS" /> 秒後に以前の設定に戻ります。</translation> <translation id="8513108775083588393">自動回転</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> は電源がオンのままでは充電できない可能性があります。</translation> +<translation id="8553395910833293175">すべてのデスクに割り当て済みです。</translation> <translation id="8563862697512465947">通知設定</translation> <translation id="857201607579416096">メニューは画面右下に移動しました。</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> を使用しています</translation> <translation id="899350903320462459">通知に関する操作を行うには、<ph name="LOGIN_ID" /> でデバイスのロックを解除してください</translation> <translation id="9017320285115481645">ファミリー リンクの保護者のアクセスコードを入力してください。</translation> +<translation id="9024331582947483881">全画面表示</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> の設定を開く</translation> <translation id="9056839673611986238">デバイスはロールバックされます</translation> <translation id="9065203028668620118">編集</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb index 428f0ab..9d4354f 100644 --- a/ash/strings/ash_strings_ka.xtb +++ b/ash/strings/ash_strings_ka.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">ასისტენტი</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">დააყენეთ ენა</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">ჩაკეტილი ეკრანი</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">გამარჯობა, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">გადაირთოს <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">კურსორის გადაადგილება</translation> <translation id="3098580329624789136">„<ph name="QUERY" />“-ის <ph name="INTENT" /></translation> +<translation id="3105917916468784889">ეკრანის ანაბეჭდის გადაღება</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">გადატვირთეთ განახლებისთვის</translation> <translation id="3139942575505304791">დესკტოპი 1</translation> -<translation id="3147157020428159854">ეკრანის ჩაწერა შეწყდა</translation> <translation id="315116470104423982">მობილური მონაცემები</translation> <translation id="3151786313568798007">ორიენტაცია</translation> <translation id="3153444934357957346">მრავალჯერადი შესვლის ფუნქციისთვის შესაძლებელია მხოლოდ <ph name="MULTI_PROFILE_USER_LIMIT" /> ანგარიშის გამოყენება.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875"><ph name="COUNT" />-ვე შეტყობინების გასუფთავება</translation> <translation id="4302592941791324970">მიუწვდომელი</translation> <translation id="4303223480529385476">სტატუსის არის გაშლა</translation> -<translation id="4315586716182276649">განავრცეთ თქვენი ტელეფონის ინტერნეტ-კავშირი, გააკონტროლეთ რეჟიმი „არ შემაწუხოთ“ და დაადგინეთ თქვენი მოწყობილობის მდებარეობა. იხილეთ Chrome-ის აქტიური ჩანართები თქვენი ტელეფონიდან თქვენს <ph name="DEVICE_TYPE" />-ზე.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">თქვენ დააჭირეთ მაღალკონტრასტული რეჟიმის კლავიატურის მალსახმობს. გსურთ მისი ჩართვა?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">სმარტ-ბარათით შესვლა</translation> <translation id="6059276912018042191">Chrome-ის ბოლოდროინდელი ჩანართები</translation> <translation id="6062360702481658777">თქვენ ავტომატურად გამოხვალთ ამ პერიოდში: <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">ჩაწერის შეწყვეტა</translation> <translation id="607652042414456612">თქვენი კომპიუტერი ხილულია ახლომდებარე Bluetooth მოწყობილობებისთვის და გამოჩნდება, როგორც „<ph name="NAME" />“ მისამართით <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google ასისტენტი მიუწვდომელია სტუმრის სესიაში.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">გახმოვანებული უკუკავშირის გასათიშად დააჭირეთ ხმის ორივე ღილაკს ხუთი წამის განმავლობაში.</translation> <translation id="7658239707568436148">გაუქმება</translation> <translation id="7662283695561029522">შეეხეთ პარამეტრების კონფიგურაციისთვის</translation> -<translation id="7683326293741220026">როგორც ჩანს, თქვენს ტელეფონზე გამორთულია Bluetooth. ტელეფონის ცენტრის გამოსაყენებლად ჩართეთ Bluetooth თქვენს ტელეფონზე.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 შეტყობინება}other{# შეტყობინება}}</translation> <translation id="7724603315864178912">ამოჭრა</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">ბატარეის დროის გამოთვლა.</translation> <translation id="8061464966246066292">მაღალკონტრასტული რეჟიმი</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" />-ში ეკრანის ტრანსლირების შეწყვეტა</translation> -<translation id="8108657971283652031">განავრცეთ თქვენი ტელეფონის ინტერნეტ-კავშირი, გააკონტროლეთ რეჟიმი „არ შემაწუხოთ“ და დაადგინეთ თქვენი ტელეფონის მდებარეობა. იხილეთ Chrome-ის აქტიური ჩანართები თქვენი ტელეფონიდან თქვენს <ph name="DEVICE_TYPE" />-ზე.</translation> <translation id="8113423164597455979">ჩართული, ყველა აპისთვის</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation> <translation id="8131740175452115882">დაადასტურება</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="SPECIFIED_RESOLUTION" /> არ არის მხარდაჭერილი <ph name="DISPLAY_NAME" />-ის მიერ. გარჩევადობა შეიცვალა <ph name="FALLBACK_RESOLUTION" />-ზე. დააწკაპუნეთ ცვლილებების შენარჩუნების დასადასტურებლად. წინა პარამეტრების აღდგენამდე დარჩა <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">ავტომატური შეტრიალება</translation> <translation id="8517041960877371778">თქვენი <ph name="DEVICE_TYPE" /> შეიძლება არ დაიტენოს, როცა ის ჩართულია.</translation> +<translation id="8553395910833293175">უკვე მიმაგრებულია ყველა სამუშაო მაგიდაზე.</translation> <translation id="8563862697512465947">შეტყობინების პარამეტრები</translation> <translation id="857201607579416096">მენიუ გადატანილია ეკრანის ქვედა მარჯვენა კუთხეში.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">გამოიყენება <ph name="IME_NAME" /></translation> <translation id="899350903320462459">შეტყობინების ქმედების შესასრულებლად განბლოკეთ მოწყობილობა <ph name="LOGIN_ID" />-ის სახელით</translation> <translation id="9017320285115481645">შეიყვანეთ Family Link-ის წვდომის კოდი მშობლებისთვის.</translation> +<translation id="9024331582947483881">მთელ ეკრანზე</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" />-ის პარამეტრების გახსნა</translation> <translation id="9056839673611986238">მოწყობილობა დაბრუნდება ძველ ვერსიაზე</translation> <translation id="9065203028668620118">რედაქტირება</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb index 64becd9..23c666c 100644 --- a/ash/strings/ash_strings_kk.xtb +++ b/ash/strings/ash_strings_kk.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Тіліңізді орнатыңыз</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Экран құлпы</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Сәлем, <ph name="USERNAME" />!</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> функциясын қосу немесе өшіру. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Курсорды жылжыту</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" туралы <ph name="INTENT" /> алу</translation> +<translation id="3105917916468784889">Скриншот түсіру</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Жаңарту үшін қайта іске қосу</translation> <translation id="3139942575505304791">1-ші жұмыс үстелі</translation> -<translation id="3147157020428159854">Экранды бейнеге жазу тоқтатылды</translation> <translation id="315116470104423982">Мобильді деректер</translation> <translation id="3151786313568798007">Бағдары</translation> <translation id="3153444934357957346">Бірнеше есептік жазбаға кіру мүмкіндігінде <ph name="MULTI_PROFILE_USER_LIMIT" /> есептік жазбаға ғана рұқсат етілген.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Барлық <ph name="COUNT" /> хабарландыруды өшіру</translation> <translation id="4302592941791324970">Қолжетімді емес</translation> <translation id="4303223480529385476">Күй аумағын жаю</translation> -<translation id="4315586716182276649">Телефоныңыздың интернет байланысын жақсартыңыз, мазаламау және құрылғы орнын анықтау функциясын басқарыңыз. Телефоныңыздағы белсенді Chrome қойындыларын <ph name="DEVICE_TYPE" /> құрылғысынан көріңіз.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Жоғары контрасқа арналған пернелер тіркесімін бастыңыз. Оны қосқыңыз келе ме?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Смарт картамен кіру</translation> <translation id="6059276912018042191">Соңғы Chrome қойындылары</translation> <translation id="6062360702481658777"><ph name="LOGOUT_TIME_LEFT" /> уақытта жүйеден автоматты түрде шығасыз.</translation> +<translation id="6073451960410192870">Бейнеге түсіруді тоқтату</translation> <translation id="607652042414456612">Компьютеріңізді жақын жердегі Bluetooth құрылғылары анықтай алады. <ph name="ADDRESS" /> мекенжайымен және "<ph name="NAME" />" атауымен көрсетіледі</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Assistant қонақ сеансында жұмыс істемейді.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Дауыстап оқу функциясын өшіру үшін дыбыс түймелерін бірге бес секунд басып тұрыңыз.</translation> <translation id="7658239707568436148">Бас тарту</translation> <translation id="7662283695561029522">Конфигурациялау үшін түртіңіз</translation> -<translation id="7683326293741220026">Телефоныңызда Bluetooth өшірулі сияқты. Phone Hub функциясын пайдалану үшін телефоныңыздан Bluetooth қосыңыз.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 хабарландыру}other{# хабарландыру}}</translation> <translation id="7724603315864178912">Қиып алу</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Батарея уақытын есептеу.</translation> <translation id="8061464966246066292">Жоғары контраст</translation> <translation id="8098591350844501178">Экран мазмұнын <ph name="RECEIVER_NAME" /> құрылғысына трансляциялауды тоқтату</translation> -<translation id="8108657971283652031">Телефоныңыздың интернет байланысын жақсартыңыз, мазаламау және телефон орнын анықтау функциясын басқарыңыз. Телефоныңыздағы белсенді Chrome қойындыларын <ph name="DEVICE_TYPE" /> құрылғысынан көріңіз.</translation> <translation id="8113423164597455979">Қосулы</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Растау</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> дисплейі <ph name="SPECIFIED_RESOLUTION" /> ажыратымдылығына қолдау көрсетпейді. Ажыратымдылық <ph name="FALLBACK_RESOLUTION" /> етіп өзгертілді. Өзгерістерді сақтау үшін "Растау" түймесін басыңыз. Алдыңғы параметрлер <ph name="TIMEOUT_SECONDS" /> кейін қалпына келтіріледі.</translation> <translation id="8513108775083588393">Автоматты бұру</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> іске қосылғанда зарядталмауы мүмкін.</translation> +<translation id="8553395910833293175">Барлық жұмыс үстеліне әлдеқашан тағайындалған.</translation> <translation id="8563862697512465947">Хабарландыру параметрлері</translation> <translation id="857201607579416096">Мәзір экранның төменгі оң жақ бұрышына жылжытылды.</translation> <translation id="8594115950068821369">–<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> пайдалану</translation> <translation id="899350903320462459">Хабарландыруда ұсынылған әрекетті орындау үшін <ph name="LOGIN_ID" /> арқылы құрылғының құлпын ашыңыз</translation> <translation id="9017320285115481645">Family Link ата-ананың рұқсат кодын енгізіңіз.</translation> +<translation id="9024331582947483881">толық экран</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> желісіне арналған параметрлерді ашу</translation> <translation id="9056839673611986238">Құрылғы алдыңғы нұсқаға қайтарылды</translation> <translation id="9065203028668620118">Өзгерту</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb index 6d61b7ed..b1a943bf 100644 --- a/ash/strings/ash_strings_km.xtb +++ b/ash/strings/ash_strings_km.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">ជំនួយការ</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">កំណត់ភាសារបស់អ្នក</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">អេក្រង់ចាក់សោ</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">សួស្តី <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">បិទ/បើក <ph name="FEATURE_NAME" />។ <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">រូបទស្សន៍ទ្រនិចសម្រាប់ផ្លាស់ទី</translation> <translation id="3098580329624789136">ទាញយក <ph name="INTENT" /> សម្រាប់ "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">ថតអេក្រង់</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (ប៊្លូធូស)</translation> <translation id="3126069444801937830">ចាប់ផ្តើមធ្វើបច្ចុប្បន្នភាពឡើងវិញ</translation> <translation id="3139942575505304791">តុទី 1</translation> -<translation id="3147157020428159854">ការថតវីដេអូអេក្រង់បានឈប់</translation> <translation id="315116470104423982">ទិន្នន័យទូរស័ព្ទ</translation> <translation id="3151786313568798007">ទិសដៅ</translation> <translation id="3153444934357957346">អ្នកអាចមានគណនីត្រឹមតែ <ph name="MULTI_PROFILE_USER_LIMIT" /> ប៉ុណ្ណោះ សម្រាប់ការចូលគណនីច្រើន។</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">សម្អាតការជូនដំណឹងទាំង <ph name="COUNT" /></translation> <translation id="4302592941791324970">មិនអាចប្រើបានទេ</translation> <translation id="4303223480529385476">ពង្រីកតំបន់ស្ថានភាព</translation> -<translation id="4315586716182276649">ពង្រីកការតភ្ជាប់អ៊ីនធឺណិតរបស់ទូរសព្ទអ្នក គ្រប់គ្រងមុខងារកុំរំខាន និងកំណត់ទីតាំងឧបករណ៍របស់អ្នក។ មើលផ្ទាំង Chrome ដែលកំពុងដំណើរការពីទូរសព្ទរបស់អ្នកនៅលើ <ph name="DEVICE_TYPE" />។</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">អ្នកបានចុចផ្លូវកាត់ក្ដារចុចសម្រាប់កម្រិតពន្លឺខ្ពស់។ តើអ្នកចង់បើកវាដែរទេ?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">ចូលគណនីដោយប្រើកាតឆ្លាតវៃ</translation> <translation id="6059276912018042191">ផ្ទាំង Chrome ថ្មីៗ</translation> <translation id="6062360702481658777">អ្នកនឹងចាកចេញដោយស្វ័យប្រវត្តិក្នុង <ph name="LOGOUT_TIME_LEFT" />។</translation> +<translation id="6073451960410192870">បញ្ឈប់ការថត</translation> <translation id="607652042414456612">កុំព្យូទ័ររបស់អ្នកអាចរកឃើញបានដោយឧបករណ៍ប៊្លូធូសដែលនៅជិត និងលេចឡើងជា "<ph name="NAME" />" ជាមួយអាសយដ្ឋាន <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />។ <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">មិនអាចប្រើ Google ជំនួយការនៅក្នុងវេនភ្ញៀវបានទេ។</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">ចុចគ្រាប់ចុចកម្រិតសំឡេងទាំងពីរឱ្យជាប់រយៈពេលប្រាំវិនាទី ដើម្បីបិទការអានអេក្រង់។</translation> <translation id="7658239707568436148">បដិសេធ</translation> <translation id="7662283695561029522">ចុចដើម្បីកំណត់រចនាសម្ព័ន្ធ</translation> -<translation id="7683326293741220026">ប៊្លូធូសហាក់ដូចជាបានបិទនៅលើទូរសព្ទរបស់អ្នក។ សូមបើកប៊្លូធូសនៅលើទូរសព្ទរបស់អ្នក ដើម្បីប្រើមណ្ឌលទូរសព្ទ។</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{ការជូនដំណឹង 1}other{ការជូនដំណឹង #}}</translation> <translation id="7724603315864178912">កាត់</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">កំពុងគណនារយៈពេលថាមពលថ្ម។</translation> <translation id="8061464966246066292">កម្រិតពន្លឺខ្ពស់</translation> <translation id="8098591350844501178">បញ្ឈប់ការបញ្ជូនអេក្រង់ទៅ <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">ពង្រីកការតភ្ជាប់អ៊ីនធឺណិតរបស់ទូរសព្ទអ្នក គ្រប់គ្រងមុខងារកុំរំខាន និងកំណត់ទីតាំងទូរសព្ទរបស់អ្នក។ មើលផ្ទាំង Chrome ដែលកំពុងដំណើរការពីទូរសព្ទរបស់អ្នកនៅលើ <ph name="DEVICE_TYPE" />។</translation> <translation id="8113423164597455979">បើក កម្មវិធីទាំងអស់</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">អះអាង</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> មិនអាចប្រើ <ph name="SPECIFIED_RESOLUTION" /> បានទេ។ បានប្ដូរកម្រិតច្បាស់ទៅ <ph name="FALLBACK_RESOLUTION" />។ សូមចុច "បញ្ជាក់" ដើម្បីរក្សាទុកការផ្លាស់ប្ដូរ។ ការកំណត់ពីមុននឹងរក្សាទុកក្នុងរយៈពេល <ph name="TIMEOUT_SECONDS" />។</translation> <translation id="8513108775083588393">បង្វិលស្វ័យប្រវត្តិ</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> របស់អ្នកអាចនឹងមិនសាកថ្មទេនៅពេលបើក។</translation> +<translation id="8553395910833293175">បានកំណត់ទៅតុទាំងអស់រួចហើយ។</translation> <translation id="8563862697512465947">កំណត់ការជូនដំណឹង</translation> <translation id="857201607579416096">ម៉ឺនុយត្រូវបានផ្លាស់ទីទៅជ្រុងខាងក្រោមផ្នែកខាងស្ដាំនៃអេក្រង់។</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">កំពុងប្រើ <ph name="IME_NAME" /></translation> <translation id="899350903320462459">ដោះសោឧបករណ៍ជា <ph name="LOGIN_ID" /> ដើម្បីធ្វើសកម្មភាពជូនដំណឹង</translation> <translation id="9017320285115481645">បញ្ចូលលេខកូដចូលប្រើប្រាស់របស់មាតាបិតាសម្រាប់ Family Link ។</translation> +<translation id="9024331582947483881">ពេញអេក្រង់</translation> <translation id="9047624247355796468">បើកការកំណត់សម្រាប់ <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">ឧបករណ៍នឹងត្រូវបានស្ដារ</translation> <translation id="9065203028668620118">កែប្រែ</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb index 85455722..910af4b 100644 --- a/ash/strings/ash_strings_kn.xtb +++ b/ash/strings/ash_strings_kn.xtb
@@ -232,10 +232,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> ಅನ್ನು ಟಾಗಲ್ ಮಾಡಿ. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">ಕರ್ಸರ್ ಸರಿಸಿ</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" ಗಾಗಿ <ph name="INTENT" /> ಅನ್ನು ಪಡೆಯಿರಿ</translation> +<translation id="3105917916468784889">ಸ್ಕ್ರೀನ್ಶಾಟ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (ಬ್ಲೂಟೂತ್)</translation> <translation id="3126069444801937830">ಅಪ್ಡೇಟ್ ಮಾಡಲು ಮರುಪ್ರಾರಂಭಿಸಿ</translation> <translation id="3139942575505304791">ಡೆಸ್ಕ್ 1</translation> -<translation id="3147157020428159854">ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡಿಂಗ್ ನಿಲ್ಲಿಸಲಾಗಿದೆ</translation> <translation id="315116470104423982">ಮೊಬೈಲ್ ಡೇಟಾ</translation> <translation id="3151786313568798007">ಓರಿಯಂಟೇಶನ್</translation> <translation id="3153444934357957346">ಹಲವು ಪ್ರೊಫೈಲ್ ಸೈನ್-ಇನ್ ಮಾಡುವಾಗ ನೀವು <ph name="MULTI_PROFILE_USER_LIMIT" /> ಖಾತೆಗಳವರೆಗೆ ಮಾತ್ರ ಹೊಂದಬಹುದು.</translation> @@ -366,7 +366,6 @@ <translation id="4296136865091727875">ಎಲ್ಲಾ <ph name="COUNT" /> ಅಧಿಸೂಚನೆಗಳನ್ನು ತೆರವುಗೊಳಿಸಿ</translation> <translation id="4302592941791324970">ಲಭ್ಯವಿಲ್ಲ</translation> <translation id="4303223480529385476">ಸ್ಥಿತಿ ಪ್ರದೇಶವನ್ನು ಹಿಗ್ಗಿಸಿ</translation> -<translation id="4315586716182276649">ನಿಮ್ಮ ಫೋನ್ನ ಇಂಟರ್ನೆಟ್ ಕನೆಕ್ಷನ್ ಅನ್ನು ವಿಸ್ತರಿಸಿ, ಅಡಚಣೆ ಮಾಡಬೇಡ ವೈಶಿಷ್ಟ್ಯವನ್ನು ನಿಯಂತ್ರಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಸಾಧನವನ್ನು ಪತ್ತೆ ಮಾಡಿ. ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿರುವ ಸಕ್ರಿಯ Chrome ಟ್ಯಾಬ್ಗಳನ್ನು ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ ವೀಕ್ಷಿಸಿ.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">ನೀವು ಅಧಿಕ ಕಾಂಟ್ರಾಸ್ಟ್ನ ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್ಕಟ್ ಒತ್ತಿದ್ದೀರಿ. ನೀವು ಅದನ್ನು ಆನ್ ಮಾಡಲು ಬಯಸುವಿರಾ?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -561,6 +560,7 @@ <translation id="6054305421211936131">ಸ್ಮಾರ್ಟ್ ಕಾರ್ಡ್ ಮೂಲಕ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation> <translation id="6059276912018042191">ಇತ್ತೀಚಿನ Chrome ಟ್ಯಾಬ್ಗಳು</translation> <translation id="6062360702481658777"><ph name="LOGOUT_TIME_LEFT" /> ನಲ್ಲಿ ನಿಮ್ಮನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೈನ್ಔಟ್ ಮಾಡಲಾಗುತ್ತದೆ.</translation> +<translation id="6073451960410192870">ರೆಕಾರ್ಡಿಂಗ್ ನಿಲ್ಲಿಸಿ</translation> <translation id="607652042414456612">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಸಮೀಪದಲ್ಲಿರುವ ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳು ಅನ್ವೇಷಿಸಬಹುದಾಗಿದೆ ಮತ್ತು <ph name="ADDRESS" /> ವಿಳಾಸದೊಂದಿಗೆ "<ph name="NAME" />" ರೂಪದಲ್ಲಿ ಗೋಚರಿಸುತ್ತದೆ</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google ಅಸಿಸ್ಟೆಂಟ್ ಅತಿಥಿ ಸೆಶನ್ನಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲ.</translation> @@ -726,7 +726,6 @@ <translation id="7654687942625752712">ಮಾತಿನ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು, ಎರಡೂ ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಐದು ಸೆಕೆಂಡ್ಗಳ ಕಾಲ ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ.</translation> <translation id="7658239707568436148">ರದ್ದುಮಾಡಿ</translation> <translation id="7662283695561029522">ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ</translation> -<translation id="7683326293741220026">ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿ ಬ್ಲೂಟೂತ್ ಆಫ್ ಆಗಿರುವಂತೆ ತೋರುತ್ತಿದೆ. ಫೋನ್ ಹಬ್ ಅನ್ನು ಬಳಸಲು ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿ ಬ್ಲೂಟೂತ್ ಅನ್ನು ಆನ್ ಮಾಡಿ.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ಅಧಿಸೂಚನೆ}one{# ಅಧಿಸೂಚನೆಗಳು}other{# ಅಧಿಸೂಚನೆಗಳು}}</translation> <translation id="7724603315864178912">ಕತ್ತರಿಸು</translation> @@ -774,7 +773,6 @@ <translation id="8054466585765276473">ಬ್ಯಾಟರಿ ಸಮಯವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲಾಗುತ್ತಿದೆ.</translation> <translation id="8061464966246066292">ಉನ್ನತ ಕಾಂಟ್ರಾಸ್ಟ್</translation> <translation id="8098591350844501178">ಪರದೆಯನ್ನು <ph name="RECEIVER_NAME" /> ಗೆ ಬಿತ್ತರಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿ</translation> -<translation id="8108657971283652031">ನಿಮ್ಮ ಫೋನ್ನ ಇಂಟರ್ನೆಟ್ ಕನೆಕ್ಷನ್ ಅನ್ನು ವಿಸ್ತರಿಸಿ, ಅಡಚಣೆ ಮಾಡಬೇಡ ವೈಶಿಷ್ಟ್ಯವನ್ನು ನಿಯಂತ್ರಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ಪತ್ತೆ ಮಾಡಿ. ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿರುವ ಸಕ್ರಿಯ Chrome ಟ್ಯಾಬ್ಗಳನ್ನು ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ ವೀಕ್ಷಿಸಿ.</translation> <translation id="8113423164597455979">ಆನ್, ಎಲ್ಲಾ ಆ್ಯಪ್</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">ದೃಢೀಕರಿಸು</translation> @@ -881,6 +879,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> ಬಳಸಲಾಗುತ್ತಿದೆ</translation> <translation id="899350903320462459">ಅಧಿಸೂಚನೆ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಲು ಸಾಧನವನ್ನು <ph name="LOGIN_ID" /> ನಂತೆ ಅನ್ಲಾಕ್ ಮಾಡಿ</translation> <translation id="9017320285115481645">Family Link ಪೋಷಕ ಪ್ರವೇಶದ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ.</translation> +<translation id="9024331582947483881">ಪೂರ್ಣ ಪರದೆ</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> ನ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="9056839673611986238">ಸಾಧನವನ್ನು ಮುಂಚಿನ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಗೆ ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ</translation> <translation id="9065203028668620118">ಎಡಿಟ್</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb index eeb4ffe1..4fe87a5 100644 --- a/ash/strings/ash_strings_ko.xtb +++ b/ash/strings/ash_strings_ko.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">어시스턴트</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">언어 설정</translation> +<translation id="1961832440516943645"><ph name="DATE" /> <ph name="TIME" /></translation> <translation id="1962969542251276847">화면 잠금</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" />(USB)</translation> <translation id="1972950159383891558"><ph name="USERNAME" />님, 안녕하세요.</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> 기능을 켜거나 끕니다. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">커서 이동</translation> <translation id="3098580329624789136">‘<ph name="QUERY" />’의 <ph name="INTENT" /> 확인하기</translation> +<translation id="3105917916468784889">스크린샷 찍기</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" />(블루투스)</translation> <translation id="3126069444801937830">업데이트하려면 다시 시작</translation> <translation id="3139942575505304791">데스크 1</translation> -<translation id="3147157020428159854">화면 녹화 중지됨</translation> <translation id="315116470104423982">모바일 데이터</translation> <translation id="3151786313568798007">방향</translation> <translation id="3153444934357957346">멀티 로그인에는 계정을 <ph name="MULTI_PROFILE_USER_LIMIT" />개까지만 사용할 수 있습니다.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">알림 <ph name="COUNT" />개 모두 지우기</translation> <translation id="4302592941791324970">사용할 수 없음</translation> <translation id="4303223480529385476">상태 영역 확장</translation> -<translation id="4315586716182276649">휴대전화의 인터넷 연결을 확장하고, 방해 금지 모드를 제어하며, 기기를 찾으세요. 또한 <ph name="DEVICE_TYPE" />에서 휴대전화의 활성 Chrome 탭을 볼 수도 있습니다.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">고대비 단축키를 누르셨습니다. 사용 설정할까요?</translation> <translation id="4331809312908958774">크롬 OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">스마트 카드로 로그인</translation> <translation id="6059276912018042191">최근 Chrome 탭</translation> <translation id="6062360702481658777"><ph name="LOGOUT_TIME_LEFT" /> 후 자동으로 로그아웃됩니다.</translation> +<translation id="6073451960410192870">녹화 중지</translation> <translation id="607652042414456612">내 컴퓨터가 근처 블루투스 기기에서 검색할 수 있도록 설정되어 있으며 주소(<ph name="ADDRESS" />)와 함께 '<ph name="NAME" />'(으)로 표시됩니다.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />, <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">게스트 세션에서는 Google 어시스턴트를 사용할 수 없습니다.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">음성 피드백을 사용 중지하려면 두 볼륨 키를 5초 동안 길게 누르세요.</translation> <translation id="7658239707568436148">취소</translation> <translation id="7662283695561029522">설정하려면 탭하세요.</translation> -<translation id="7683326293741220026">휴대전화의 블루투스가 꺼져 있는 것 같습니다. 휴대전화 허브를 사용하려면 휴대전화에서 블루투스를 사용 설정하세요.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{알림 1개}other{알림 #개}}</translation> <translation id="7724603315864178912">잘라내기</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">배터리 시간 계산 중</translation> <translation id="8061464966246066292">고대비</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" />에 화면 전송 중지</translation> -<translation id="8108657971283652031">휴대전화의 인터넷 연결을 확장하고, 방해 금지 모드를 제어하며, 휴대전화를 찾으세요. 또한 <ph name="DEVICE_TYPE" />에서 휴대전화의 활성 Chrome 탭을 볼 수도 있습니다.</translation> <translation id="8113423164597455979">모든 앱에서 사용 중</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation> <translation id="8131740175452115882">확인</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" />에서 <ph name="SPECIFIED_RESOLUTION" />을(를) 지원하지 않습니다. 해상도가 <ph name="FALLBACK_RESOLUTION" />(으)로 변경되었습니다. 변경사항을 유지하려면 확인을 클릭하세요. <ph name="TIMEOUT_SECONDS" /> 후 이전 설정으로 복원됩니다.</translation> <translation id="8513108775083588393">자동 회전</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" />이(가) 켜져 있는 동안에는 충전되지 않을 수 있습니다.</translation> +<translation id="8553395910833293175">이미 모든 데스크에 할당되어 있습니다.</translation> <translation id="8563862697512465947">알림 설정</translation> <translation id="857201607579416096">메뉴가 화면 오른쪽 하단으로 이동했습니다.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> 사용 중</translation> <translation id="899350903320462459">알림 작업을 실행하려면 <ph name="LOGIN_ID" />(으)로 기기의 잠금을 해제하세요.</translation> <translation id="9017320285115481645">Family Link 부모 액세스 코드를 입력하세요.</translation> +<translation id="9024331582947483881">전체화면</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> 설정 열기</translation> <translation id="9056839673611986238">기기가 롤백됨</translation> <translation id="9065203028668620118">수정</translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb index 4f01faa..2e5b473 100644 --- a/ash/strings/ash_strings_ky.xtb +++ b/ash/strings/ash_strings_ky.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Жардамчы</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Тилди тандаңыз</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Кулпуланган экран</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Салам <ph name="USERNAME" />,</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> функциясын өчүрүү/күйгүзүү. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Курсорду жылдыруу</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" үчүн <ph name="INTENT" /> алуу</translation> +<translation id="3105917916468784889">Скриншот тартып алуу</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Жаңыртуу үчүн өчүрүп күйгүзүңүз</translation> <translation id="3139942575505304791">1-иш такта</translation> -<translation id="3147157020428159854">Экрандан видео жаздыруу токтотулду</translation> <translation id="315116470104423982">Мобилдик Интернет</translation> <translation id="3151786313568798007">Багыты</translation> <translation id="3153444934357957346">Бир нече профиль менен кирүү үчүн <ph name="MULTI_PROFILE_USER_LIMIT" /> чейин гана каттоо эсебин ачууга болот.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875"><ph name="COUNT" /> билдирменин баарын өчүрүү</translation> <translation id="4302592941791324970">Жеткиликсиз</translation> <translation id="4303223480529385476">Статус аймагын жайып көрсөтүү</translation> -<translation id="4315586716182276649">Мобилдик Интернетке туташып, "Тынчымды алба" режимин башкарып, түзмөгүңүздүн жайгашкан жерин аныктай аласыз. Телефонуңузда ачылып турган Chrome өтмөктөрүн <ph name="DEVICE_TYPE" /> түзмөгүңүздө көрө аласыз.</translation> <translation id="4321179778687042513">Ctrl</translation> <translation id="4321776623976362024">Жогорку контрастты колдонуу үчүн тез баскычты бастыңыз. Ал күйгүзүлсүнбү?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Акылдуу карта менен кириңиз</translation> <translation id="6059276912018042191">Chrome'догу акыркы өтмөктөр</translation> <translation id="6062360702481658777"><ph name="LOGOUT_TIME_LEFT" /> ичинен автоматтык түрдө чыгарыласыз.</translation> +<translation id="6073451960410192870">Жаздырууну токтотуу</translation> <translation id="607652042414456612">Компьютериңиз жакын арадагы Bluetooth түзмөктөрүнө көрүнүп, <ph name="ADDRESS" /> дарегиндеги "<ph name="NAME" />" катары күйүп турат.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Жардамчысы конок сеансында жеткиликсиз.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Экрандагы текстти окуп берүү функциясын өчүрүү үчүн үндү чоңойтуп/кичирейтүү баскычтарынын экөөн тең беш секунд коё бербей басып туруңуз.</translation> <translation id="7658239707568436148">Жокко чыгаруу</translation> <translation id="7662283695561029522">Конфигурациялоо үчүн таптап коюңуз</translation> -<translation id="7683326293741220026">Телефонуңузда Bluetooth өчүрүлгөн окшойт. Phone Hub'ды колдонуу үчүн телефонуңузда Bluetooth'ду күйгүзүңүз.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 билдирме}other{# билдирме}}</translation> <translation id="7724603315864178912">Кесүү</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Батареянын убакыты эсептелүүдө.</translation> <translation id="8061464966246066292">Жогорку контраст</translation> <translation id="8098591350844501178">Экранды <ph name="RECEIVER_NAME" /> түзмөгүнө чыгарууну токтотуу</translation> -<translation id="8108657971283652031">Мобилдик Интернетке туташып, "Тынчымды алба" режимин башкарып, телефонуңуздун жайгашкан жерин аныктай аласыз. Телефонуңузда ачылып турган Chrome өтмөктөрүн <ph name="DEVICE_TYPE" /> түзмөгүңүздө көрө аласыз.</translation> <translation id="8113423164597455979">Бүт колд. күйүк</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Ырастоо</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> <ph name="SPECIFIED_RESOLUTION" /> дааналыкты колдоого албайт. Дааналыгы төмөнкүгө өзгөртүлдү: <ph name="FALLBACK_RESOLUTION" />. Өзгөртүүлөрдү сактоо үчүн "Ырастоо" баскычын басыңыз. Мурунку жөндөөлөр <ph name="TIMEOUT_SECONDS" /> кийин калыбына келтирилет.</translation> <translation id="8513108775083588393">Авто буруу</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> түзмөгүңүз өчүп турганда кубатталбай калышы мүмкүн.</translation> +<translation id="8553395910833293175">Бардык иш такталар дайындалган.</translation> <translation id="8563862697512465947">Билдирмелердин жөндөөлөрү</translation> <translation id="857201607579416096">Меню экрандын төмөнкү оң бурчуна жылдырылды.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> колдонулууда</translation> <translation id="899350903320462459">Билдирмедеги аракетти аткаруу үчүн түзмөктүн кулпусун <ph name="LOGIN_ID" /> катары ачыңыз</translation> <translation id="9017320285115481645">Family Link'ке ата-эненин кодун киргизиңиз.</translation> +<translation id="9024331582947483881">толук экран</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> тармагынын жөндөөлөрүн ачуу</translation> <translation id="9056839673611986238">Түзмөк баштапкы абалга келтирилет</translation> <translation id="9065203028668620118">Түзөтүү</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb index 618d998..7162b721 100644 --- a/ash/strings/ash_strings_lo.xtb +++ b/ash/strings/ash_strings_lo.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">ຜູ້ຊ່ວຍ</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">ຕັ້ງຄ່າພາສາຂອງທ່ານ</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">ຫນ້າຈໍລັອກ</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">ສະບາຍດີ, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">ສະຫຼັບ <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">ຍ້າຍເຄີເຊີ</translation> <translation id="3098580329624789136">ຮັບ <ph name="INTENT" /> ສຳລັບ "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">ຖ່າຍຮູບໜ້າຈໍ</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">ເລີ່ມການອັບເດດໃໝ່</translation> <translation id="3139942575505304791">ໂຕະ 1</translation> -<translation id="3147157020428159854">ຢຸດການບັນທຶກໜ້າຈໍແລ້ວ</translation> <translation id="315116470104423982">ຂໍ້ມູນມືຖື</translation> <translation id="3151786313568798007">ລວງເຈ້ຍ</translation> <translation id="3153444934357957346">ທ່ານສາມາດມີບັນຊີໄດ້ບໍ່ເກີນ <ph name="MULTI_PROFILE_USER_LIMIT" /> ບັນຊີເທົ່ານັ້ນໃນການເຂົ້າສູ່ລະບົບຫຼາຍບັນຊີ.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">ລຶບລ້າງການແຈ້ງເຕືອນທັງໝົດ <ph name="COUNT" /> ລາຍການ</translation> <translation id="4302592941791324970">ບໍ່ສາມາດໃຊ້ໄດ້</translation> <translation id="4303223480529385476">ຂະຫຍາຍພື້ນທີ່ສະແດງສະຖານະ</translation> -<translation id="4315586716182276649">ຂະຫຍາຍການເຊື່ອມຕໍ່ອິນເຕີເນັດໃນໂທລະສັບຂອງທ່ານ, ຄວບຄຸມໂໝດຫ້າມລົບກວນ ແລະ ຊອກຫາອຸປະກອນຂອງທ່ານ. ເບິ່ງແຖບທີ່ເປີດນຳໃຊ້ຢູ່ຂອງ Chrome ຈາກໂທລະສັບຂອງທ່ານໃນ <ph name="DEVICE_TYPE" /> ຂອງທ່ານ.</translation> <translation id="4321179778687042513">Ctrl</translation> <translation id="4321776623976362024">ທ່ານໄດ້ກົດປຸ່ມລັດແປ້ນພິມສຳລັບຄວາມຄົມຊັດສູງແລ້ວ. ທ່ານຕ້ອງການເປີດມັນບໍ?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">ເຂົ້າສູ່ລະບົບດ້ວຍບັດອັດສະລິຍະ</translation> <translation id="6059276912018042191">ແຖບ Chrome ຫຼ້າສຸດ</translation> <translation id="6062360702481658777">ທ່ານຈະຖືກອອກຈາກລະບົບໃນ <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">ຢຸດການບັນທຶກ</translation> <translation id="607652042414456612">ຄອມພິວເຕີຂອງທ່ານສາມາດໃຫ້ອຸປະກອນ Bluetooth ໃກ້ຄຽງຄົ້ນຫາໄດ້ ແລະຈະປະກົດເປັນ "<ph name="NAME" />"ພ້ອມທີ່ຢູ່ <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">ຜູ້ຊ່ວຍ Google ບໍ່ສາມາດໃຊ້ໄດ້ໃນເຊດຊັນແຂກ.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">ກົດປຸ່ມທັງສອງລະດັບສຽງເປັນເວລາຫ້າວິນາທີເພື່ອປິດນຳໃຊ້ການຕອບສະໜອງແບບສຽງເວົ້າ.</translation> <translation id="7658239707568436148">ຍົກເລີກ</translation> <translation id="7662283695561029522">ແຕະເພື່ອກຳນົດຄ່າ</translation> -<translation id="7683326293741220026">ປາກົດວ່າ Bluetooth ປິດຢູ່ໃນໂທລະສັບຂອງທ່ານ. ກະລຸນາເປີດ Bluetooth ໃນໂທລະສັບຂອງທ່ານເພື່ອໃຊ້ Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ການແຈ້ງເຕືອນ}other{# ການແຈ້ງເຕືອນ}}</translation> <translation id="7724603315864178912">ຕັດ</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">ການຄິດໄລ່ເວລາແບັດເຕີຣີ.</translation> <translation id="8061464966246066292">ຄວາມເຂັ້ມສູງ</translation> <translation id="8098591350844501178">ຢຸດການສົ່ງສັນຍານໜ້າຈໍຫາ <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">ຂະຫຍາຍການເຊື່ອມຕໍ່ອິນເຕີເນັດໃນໂທລະສັບຂອງທ່ານ, ຄວບຄຸມໂໝດຫ້າມລົບກວນ ແລະ ຊອກຫາໂທລະສັບຂອງທ່ານ. ເບິ່ງແຖບທີ່ເປີດນຳໃຊ້ຢູ່ຂອງ Chrome ຈາກໂທລະສັບຂອງທ່ານໃນ <ph name="DEVICE_TYPE" /> ຂອງທ່ານ.</translation> <translation id="8113423164597455979">ເປີດ, ທຸກແອັບ</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">ຢືນຢັນ</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> ບໍ່ຮອງຮັບ <ph name="SPECIFIED_RESOLUTION" />. ຄວາມລະອຽດໄດ້ປ່ຽນເປັນ <ph name="FALLBACK_RESOLUTION" /> ແລ້ວ. ຄລິກຢືນຢັນເພື່ອຮັກສາການປ່ຽນແປງໄວ້. ລະບົບຈະກູ້ຄືນການຕັ້ງຄ່າກ່ອນໜ້າໃນ <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">ໝຸນອັດຕະໂນມັດ</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> ຂອງທ່ານບໍ່ອາດສາກໄດ້ໃນຂະນະທີ່ມັນເປີດ.</translation> +<translation id="8553395910833293175">ມອບໝາຍໃຫ້ໂຕະທັງໝົດແລ້ວ.</translation> <translation id="8563862697512465947">ການຕັ້ງຄ່າການແຈ້ງເຕືອນ</translation> <translation id="857201607579416096">ຍ້າຍເມນູໄປແຈລຸ່ມສຸດເບື້ອງຂວາຂອງໜ້າຈໍ.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">ກຳລັງໃຊ້ <ph name="IME_NAME" /></translation> <translation id="899350903320462459">ປົດລັອກອຸປະກອນເປັນ <ph name="LOGIN_ID" /> ເພື່ອເຮັດການດຳເນີນການແຈ້ງເຕືອນ</translation> <translation id="9017320285115481645">ປ້ອນລະຫັດເຂົ້າເຖິງ Family Link ຂອງພໍ່ແມ່.</translation> +<translation id="9024331582947483881">ເຕັມຫນ້າຈໍ</translation> <translation id="9047624247355796468">ເປີດການຕັ້ງຄ່າສຳລັບ <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">ຈະຍ້ອນກັບອຸປະກອນ</translation> <translation id="9065203028668620118">ແກ້ໄຂ</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb index 1a47652..25130b5 100644 --- a/ash/strings/ash_strings_lt.xtb +++ b/ash/strings/ash_strings_lt.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Padėjėjas</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Kalbos nustatymas</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Užrakinti ekraną</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Sveiki, <ph name="USERNAME" />!</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Perjungti „<ph name="FEATURE_NAME" />“. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Perkelti žymeklį</translation> <translation id="3098580329624789136">Gaukite „<ph name="QUERY" />“ <ph name="INTENT" /></translation> +<translation id="3105917916468784889">Padaryti ekrano kopiją</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> („Bluetooth“)</translation> <translation id="3126069444801937830">Paleisti iš naujo, kad būtų atnaujinta</translation> <translation id="3139942575505304791">1 pultas</translation> -<translation id="3147157020428159854">Ekrano įrašymas sustabdytas</translation> <translation id="315116470104423982">Duomenys mobiliesiems</translation> <translation id="3151786313568798007">Orientacija</translation> <translation id="3153444934357957346">Naudodami kelių paskyrų funkciją, galite turėti iki <ph name="MULTI_PROFILE_USER_LIMIT" /> paskyr.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Išvalykite visus pranešimus (<ph name="COUNT" />)</translation> <translation id="4302592941791324970">Nepasiekiama</translation> <translation id="4303223480529385476">Išskleisti būsenos sritį</translation> -<translation id="4315586716182276649">Išplėskite telefono interneto ryšį, valdykite netrukdymo režimą ir suraskite įrenginį. Peržiūrėkite aktyvius „Chrome“ skirtukus telefonu „<ph name="DEVICE_TYPE" />“ įrenginyje.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Paspaudėte didelio kontrasto spartųjį klavišą. Ar norite jį įjungti?</translation> <translation id="4331809312908958774">„Chrome“ OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Prisijungti naudojant išmaniąją kortelę</translation> <translation id="6059276912018042191">Pastarieji „Chrome“ skirtukai</translation> <translation id="6062360702481658777">Būsite automatiškai atjungti po <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Sustabdyti įrašymą</translation> <translation id="607652042414456612">Jūsų kompiuterį galima aptikti netoliese esančiais „Bluetooth“ įrenginiais ir jis rodomas kaip „<ph name="NAME" />“ su adresu <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">„Google Assistant“ nepasiekiamas svečio sesijoje.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Paspauskite ir penkias sekundes palaikykite garsumo klavišus, kad išjungtumėte ekrano skaitymo balsu funkciją.</translation> <translation id="7658239707568436148">Atšaukti</translation> <translation id="7662283695561029522">Palieskite, kad konfigūruotumėte</translation> -<translation id="7683326293741220026">Panašu, kad „Bluetooth“ išjungta jūsų telefone. Įjunkite „Bluetooth“ telefone, kad galėtumėte naudoti „Phone Hub“.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 pranešimas}one{# pranešimas}few{# pranešimai}many{# pranešimo}other{# pranešimų}}</translation> <translation id="7724603315864178912">Iškirpti</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Apskaičiuojamas laikas, likęs iki akumuliatoriaus išsikrovimo.</translation> <translation id="8061464966246066292">Didelis kontrastas</translation> <translation id="8098591350844501178">Sustabdyti ekrano perdavimą į: <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Išplėskite telefono interneto ryšį, valdykite netrukdymo režimą ir suraskite telefoną. Peržiūrėkite aktyvius „Chrome“ skirtukus telefonu „<ph name="DEVICE_TYPE" />“ įrenginyje.</translation> <translation id="8113423164597455979">Visų programų pranešimai įjungti</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Patvirtinti</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069">„<ph name="DISPLAY_NAME" />“ nepalaiko <ph name="SPECIFIED_RESOLUTION" />. Skyra buvo pakeista į <ph name="FALLBACK_RESOLUTION" />. Spustelėkite „Patvirtinti“ ir išsaugokite pakeitimus. Ankstesni nustatymai bus atkurti už <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Auto. pasukti</translation> <translation id="8517041960877371778">„<ph name="DEVICE_TYPE" />“ gali nebūti kraunamas, kai yra įjungtas.</translation> +<translation id="8553395910833293175">Jau priskirta visiems darbalaukiams.</translation> <translation id="8563862697512465947">Pranešimų nustatymai</translation> <translation id="857201607579416096">Meniu perkeltas į apatinį dešinįjį ekrano kampą.</translation> <translation id="8594115950068821369">–<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Naudojama <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Atrakinkite įrenginį su <ph name="LOGIN_ID" />, kad galėtumėte įvykdyti pranešimo veiksmą</translation> <translation id="9017320285115481645">Įveskite „Family Link“ tėvų prieigos kodą.</translation> +<translation id="9024331582947483881">visas ekranas</translation> <translation id="9047624247355796468">Atidaryti „<ph name="NETWORK_NAME" />“ nustatymus</translation> <translation id="9056839673611986238">Įrenginys bus atkurtas</translation> <translation id="9065203028668620118">Redaguoti</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb index 573947f..f8445f9 100644 --- a/ash/strings/ash_strings_lv.xtb +++ b/ash/strings/ash_strings_lv.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asistents</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Iestatiet savu valodu.</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Bloķēt ekrānu</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Sveiki, <ph name="USERNAME" />!</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Pārslēgt funkciju <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Kursora pārvietošana</translation> <translation id="3098580329624789136">Varat skatīt “<ph name="QUERY" />” <ph name="INTENT" /></translation> +<translation id="3105917916468784889">Uzņemt ekrānuzņēmumu</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Restartēt, lai atjauninātu</translation> <translation id="3139942575505304791">1. galds</translation> -<translation id="3147157020428159854">Ekrāna ierakstīšana ir apturēta</translation> <translation id="315116470104423982">Mobilie dati</translation> <translation id="3151786313568798007">Orientācija</translation> <translation id="3153444934357957346">Vairākkārtējas pierakstīšanās laikā var izmantot ne vairāk kā <ph name="MULTI_PROFILE_USER_LIMIT" /> kontus.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Notīrīt visus paziņojumus (kopā <ph name="COUNT" />)</translation> <translation id="4302592941791324970">Nav pieejama</translation> <translation id="4303223480529385476">Izvērst statusa apgabalu</translation> -<translation id="4315586716182276649">Paplašiniet sava tālruņa interneta savienojumu, pārvaldiet funkciju Netraucēt un atrodiet savu ierīci. Skatiet aktīvās Chrome cilnes no sava tālruņa savā <ph name="DEVICE_TYPE" /> ierīcē.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Jūs nospiedāt augsta kontrasta īsinājumtaustiņu. Vai vēlaties to ieslēgt?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Pierakstīties ar viedkarti</translation> <translation id="6059276912018042191">Nesen atvērtās Chrome cilnes</translation> <translation id="6062360702481658777">Jūs tiksiet automātiski izrakstīts pēc šāda laika: <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Pārtraukt ierakstīšanu</translation> <translation id="607652042414456612">Tuvumā esošas Bluetooth ierīces var uztvert jūsu datoru; tā nosaukums ir “<ph name="NAME" />”, adrese — <ph name="ADDRESS" />.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" />.</translation> <translation id="612734058257491180">Google asistents nav pieejams viesa sesijā.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Lai atspējotu balss komentārus, nospiediet un piecas sekundes turiet abas skaļuma pogas.</translation> <translation id="7658239707568436148">Atcelt</translation> <translation id="7662283695561029522">Pieskarieties, lai konfigurētu.</translation> -<translation id="7683326293741220026">Šķiet, tālrunī ir izslēgts Bluetooth savienojums. Lai varētu izmantot funkciju Tālruņa centrmezgls, tālrunī ieslēdziet Bluetooth savienojumu.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 paziņojums}zero{# paziņojumu}one{# paziņojums}other{# paziņojumi}}</translation> <translation id="7724603315864178912">Izgriezt</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Notiek akumulatora darbības ilguma aprēķināšana.</translation> <translation id="8061464966246066292">Augsts kontrasts</translation> <translation id="8098591350844501178">Apturēt ekrāna apraidi uztvērējā “<ph name="RECEIVER_NAME" />”</translation> -<translation id="8108657971283652031">Paplašiniet sava tālruņa interneta savienojumu, pārvaldiet funkciju Netraucēt un atrodiet savu tālruni. Skatiet aktīvās Chrome cilnes no sava tālruņa savā <ph name="DEVICE_TYPE" /> ierīcē.</translation> <translation id="8113423164597455979">Iesl. v. lietotnēs</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Apstiprināt</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069">Displejā <ph name="DISPLAY_NAME" /> netiek atbalstīta izšķirtspēja <ph name="SPECIFIED_RESOLUTION" />. Izšķirtspēja tika nomainīta uz: <ph name="FALLBACK_RESOLUTION" />. Lai saglabātu izmaiņas, noklikšķiniet uz Apstiprināt. Iepriekšējie iestatījumi tiks atjaunoti pēc: <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Pagriezt aut.</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> ierīce, iespējams, netiks uzlādēta, kamēr tā būs ieslēgta.</translation> +<translation id="8553395910833293175">Jau ir redzams visās darbvietās.</translation> <translation id="8563862697512465947">Paziņojumu iestatījumi</translation> <translation id="857201607579416096">Izvēlne pārvietota uz ekrāna apakšējo kreiso malu.</translation> <translation id="8594115950068821369">–<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Izmantojot <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Atbloķēt ierīci kā <ph name="LOGIN_ID" />, lai veiktu paziņojuma darbību</translation> <translation id="9017320285115481645">Ievadiet Family Link vecāku piekļuves kodu.</translation> +<translation id="9024331582947483881">pilnekrāna režīms</translation> <translation id="9047624247355796468">Atvērt tīkla <ph name="NETWORK_NAME" /> iestatījumus</translation> <translation id="9056839673611986238">Ierīcē tiks veikta atrite</translation> <translation id="9065203028668620118">Labot</translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb index 1f05242..2cc8e62 100644 --- a/ash/strings/ash_strings_mk.xtb +++ b/ash/strings/ash_strings_mk.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Помошник</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Поставете го вашиот јазик</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Заклучен екран</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Здраво, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Вклучете/исклучете <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Премести го покажувачот</translation> <translation id="3098580329624789136">Добијте <ph name="INTENT" /> за „<ph name="QUERY" />“</translation> +<translation id="3105917916468784889">Сними слика од екранот</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Рестартирај за да се ажурира</translation> <translation id="3139942575505304791">Биро 1</translation> -<translation id="3147157020428159854">Снимањето на екранот запре</translation> <translation id="315116470104423982">Мобилен интернет</translation> <translation id="3151786313568798007">Ориентација</translation> <translation id="3153444934357957346">Може да имате само до <ph name="MULTI_PROFILE_USER_LIMIT" /> сметки при многукратно најавување.</translation> @@ -367,7 +368,6 @@ <translation id="4296136865091727875">Избриши ги сите <ph name="COUNT" /> известувања</translation> <translation id="4302592941791324970">Не е достапно</translation> <translation id="4303223480529385476">Прошири ја статусната област</translation> -<translation id="4315586716182276649">Проширете ја интернет-врската на телефонот, контролирајте ја „Не вознемирувај“ и лоцирајте го уредот. Прегледувајте ги картичките на Chrome од телефонот на вашиот <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Ја притиснавте кратенката од тастатура за висок контраст. Дали сакате да ја вклучите?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -561,6 +561,7 @@ <translation id="6054305421211936131">Најавете се со паметна картичка</translation> <translation id="6059276912018042191">Неодамнешни картички на Chrome</translation> <translation id="6062360702481658777">Автоматски ќе бидете одјавени за <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Сопри со снимање</translation> <translation id="607652042414456612">Уреди со Bluetooth во близина можат да го откријат вашиот уред, а тој ќе се појави како „<ph name="NAME" />“ со адреса <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">„Помошникот на Google“ не е достапен во гостинска сесија.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Притиснете ги и задржете ги двете копчиња за јачина на звук пет секунди за да оневозможите говорни повратни информации.</translation> <translation id="7658239707568436148">Откажи</translation> <translation id="7662283695561029522">Допрете за конфигурирање</translation> -<translation id="7683326293741220026">Се чини дека Bluetooth е исклучен на телефонот. Вклучете го Bluetooth на телефонот за да користите Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 известување}one{# известување}other{# известувања}}</translation> <translation id="7724603315864178912">Исечи</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">пресметување време на батерија.</translation> <translation id="8061464966246066292">Висок контраст</translation> <translation id="8098591350844501178">Престани со емитување на екранот на <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Проширете ја интернет-врската на телефонот, контролирајте ја „Не вознемирувај“ и лоцирајте го уредот. Прегледувајте ги картичките на Chrome од телефонот на вашиот <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Вкл. за сите апл.</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Потврди</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> не поддржува <ph name="SPECIFIED_RESOLUTION" />. Резолуцијата се смени во <ph name="FALLBACK_RESOLUTION" />. Кликнете „Потврди“ за да ги задржите промените. Претходната поставка ќе се врати за <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Авт. ротирање</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> може да не се полни додека е вклучен.</translation> +<translation id="8553395910833293175">Веќе е назначено на сите работни површини.</translation> <translation id="8563862697512465947">Поставки за известувања</translation> <translation id="857201607579416096">Менито е преместено во долниот десен агол на екранот.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590">Се користи <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Отклучете го уредот како <ph name="LOGIN_ID" /> за да се изврши дејството од известувањето</translation> <translation id="9017320285115481645">Внесете го кодот за пристап на родители на Family Link.</translation> +<translation id="9024331582947483881">цел екран</translation> <translation id="9047624247355796468">Отвори поставки за <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Уредот ќе се врати на фабричките поставки</translation> <translation id="9065203028668620118">Измени</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb index 8fd3dbe8..6bddd9f 100644 --- a/ash/strings/ash_strings_ml.xtb +++ b/ash/strings/ash_strings_ml.xtb
@@ -111,6 +111,7 @@ <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">നിങ്ങളുടെ ഭാഷ സജ്ജീകരിക്കുക</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">സ്ക്രീൻ ലോക്കുചെയ്യുക</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">ഹായ്, <ph name="USERNAME" /></translation> @@ -230,10 +231,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> മാറ്റുക. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">കഴ്സർ നീക്കുക</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" എന്നതിനുള്ള <ph name="INTENT" /> നേടുക</translation> +<translation id="3105917916468784889">സ്ക്രീന്ഷോട്ട് എടുക്കുക</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">അപ്ഡേറ്റ് ചെയ്യുന്നതിന് റീസ്റ്റാർട്ട് ചെയ്യുക</translation> <translation id="3139942575505304791">ഡെസ്ക് 1</translation> -<translation id="3147157020428159854">സ്ക്രീൻ റെക്കോർഡിംഗ് നിർത്തി</translation> <translation id="315116470104423982">മൊബൈല് ഡാറ്റ</translation> <translation id="3151786313568798007">ഓറിയന്റേഷൻ</translation> <translation id="3153444934357957346">ഒന്നിലധികം സൈൻ ഇന്നുകളിൽ നിങ്ങൾക്ക് <ph name="MULTI_PROFILE_USER_LIMIT" /> അക്കൗണ്ടുകൾ വരെ മാത്രമേ ഉണ്ടായിരിക്കാൻ പാടുള്ളൂ.</translation> @@ -364,7 +365,6 @@ <translation id="4296136865091727875">എല്ലാ <ph name="COUNT" /> അറിയിപ്പുകളും മായ്ക്കുക</translation> <translation id="4302592941791324970">ലഭ്യമല്ല</translation> <translation id="4303223480529385476">സ്റ്റാറ്റസ് ഏരിയ വികസിപ്പിക്കുക</translation> -<translation id="4315586716182276649">നിങ്ങളുടെ ഫോണിന്റെ ഇന്റർനെറ്റ് കണക്ഷൻ വിപുലീകരിക്കുക, "ശല്യപ്പെടുത്തരുത്" നിയന്ത്രിക്കുക, നിങ്ങളുടെ ഉപകരണം കണ്ടെത്തുക. നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> എന്നതിൽ നിങ്ങളുടെ ഫോണിൽ നിന്നുള്ള സജീവ Chrome ടാബുകൾ കാണുക.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">നിങ്ങൾ ഉയർന്ന ദൃശ്യതീവ്രതയ്ക്കുള്ള കീബോഡ് കുറുക്കുവഴി അമർത്തി. അത് ഓണാക്കണോ?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -558,6 +558,7 @@ <translation id="6054305421211936131">സ്മാർട്ട് കാർഡ് ഉപയോഗിച്ച് സൈൻ ഇൻ ചെയ്യുക</translation> <translation id="6059276912018042191">അടുത്തിടെയുള്ള Chrome ടാബുകൾ</translation> <translation id="6062360702481658777">നിങ്ങൾ <ph name="LOGOUT_TIME_LEFT" />-നുള്ളിൽ സ്വയമേവ സൈൻ ഔട്ട് ചെയ്യും.</translation> +<translation id="6073451960410192870">റെക്കോർഡിംഗ് നിർത്തുക</translation> <translation id="607652042414456612">നിങ്ങളുടെ കമ്പ്യൂട്ടർ സമീപത്തുള്ള Bluetooth ഉപകരണങ്ങൾക്ക് കണ്ടെത്താനാകുന്നതാണ് ഒപ്പം അത് <ph name="ADDRESS" /> എന്ന വിലാസത്തിൽ "<ph name="NAME" />" എന്നതായി ദൃശ്യമാകും.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">അതിഥി സെഷനിൽ Google അസിസ്റ്റന്റ് ലഭ്യമല്ല.</translation> @@ -723,7 +724,6 @@ <translation id="7654687942625752712">സംഭാഷണ ഫീഡ്ബാക്ക് പ്രവർത്തനരഹിതമാക്കാൻ രണ്ട് വോളിയം കീകളും രണ്ട് സെക്കൻഡ് നേരത്തേക്ക് അമർത്തിപ്പിടിക്കുക.</translation> <translation id="7658239707568436148">റദ്ദാക്കൂ</translation> <translation id="7662283695561029522">കോൺഫിഗർ ചെയ്യുന്നതിന് ടാപ്പ് ചെയ്യുക</translation> -<translation id="7683326293741220026">നിങ്ങളുടെ ഫോണിൽ Bluetooth ഓഫാണെന്ന് തോന്നുന്നു. ഫോൺ ഹബ് ഉപയോഗിക്കാൻ നിങ്ങളുടെ ഫോണിൽ Bluetooth ഓണാക്കുക.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{ഒരു അറിയിപ്പ്}other{# അറിയിപ്പുകൾ}}</translation> <translation id="7724603315864178912">മുറിക്കുക</translation> @@ -771,7 +771,6 @@ <translation id="8054466585765276473">ബാറ്ററി സമയം കണക്കാക്കുന്നു.</translation> <translation id="8061464966246066292">ഉയർന്ന ദൃശ്യ തീവ്രത</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" /> എന്നതിലേക്ക് സ്ക്രീൻ കാസ്റ്റുചെയ്യുന്നത് നിർത്തുക</translation> -<translation id="8108657971283652031">നിങ്ങളുടെ ഫോണിന്റെ ഇന്റർനെറ്റ് കണക്ഷൻ വിപുലീകരിക്കുക, ശല്യപ്പെടുത്തരുത് നിയന്ത്രിക്കുക, നിങ്ങളുടെ ഫോൺ കണ്ടെത്തുക. നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> എന്നതിൽ നിങ്ങളുടെ ഫോണിൽ നിന്നുള്ള സജീവ Chrome ടാബുകൾ കാണുക.</translation> <translation id="8113423164597455979">ആപ്പിലെല്ലാം ഓൺ</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">സ്ഥിരീകരിക്കുക</translation> @@ -820,6 +819,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" />, <ph name="SPECIFIED_RESOLUTION" /> എന്നതിനെ പിന്തുണയ്ക്കുന്നില്ല. റെസല്യൂഷൻ <ph name="FALLBACK_RESOLUTION" /> എന്നതിലേക്ക് മാറ്റി. മാറ്റങ്ങൾ നിലനിർത്താൻ 'സ്ഥിരീകരിക്കുക' ക്ലിക്ക് ചെയ്യുക. മുമ്പത്തെ ക്രമീകരണം <ph name="TIMEOUT_SECONDS" /> സെക്കൻഡിൽ പുനഃസ്ഥാപിക്കും.</translation> <translation id="8513108775083588393">സ്വയം തിരിയുക</translation> <translation id="8517041960877371778">നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> ഓണായിരിക്കുമ്പോൾ അത് ചാർജ്ജാകാതിരിക്കാം.</translation> +<translation id="8553395910833293175">എല്ലാ ഡെസ്ക്കുകൾക്കും ഇതിനകം അസൈൻ ചെയ്തിട്ടുണ്ട്.</translation> <translation id="8563862697512465947">വിജ്ഞാപന ക്രമീകരണങ്ങള്</translation> <translation id="857201607579416096">സ്ക്രീനിന്റെ ചുവടെ വലത് കോണിലേക്ക് മെനു നീക്കിയിരിക്കുന്നു.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -878,6 +878,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> ഉപയോഗിക്കുന്നു</translation> <translation id="899350903320462459">അറിയിപ്പ് പ്രവർത്തനം നിർവഹിക്കാൻ, <ph name="LOGIN_ID" /> ആയി ഉപകരണം അൺലോക്ക് ചെയ്യുക</translation> <translation id="9017320285115481645">Family Link രക്ഷാകർതൃ ആക്സസ് കോഡ് നൽകുക.</translation> +<translation id="9024331582947483881">പൂര്ണ്ണ സ്ക്രീന്</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> എന്നതിനുള്ള ക്രമീകരണം തുറക്കുക</translation> <translation id="9056839673611986238">ഉപകരണം പഴയ അവസ്ഥയിലേക്ക് പുനഃസ്ഥാപിക്കും</translation> <translation id="9065203028668620118">എഡിറ്റ് ചെയ്യുക</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb index 44bc24f..feaca80 100644 --- a/ash/strings/ash_strings_mn.xtb +++ b/ash/strings/ash_strings_mn.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Туслах</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Хэлээ тохируулах</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Түгжигдсэн дэлгэц</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Сайн уу, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" />-г унтраах/асаах. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Курсорыг зөөх</translation> <translation id="3098580329624789136">"<ph name="QUERY" />"-н <ph name="INTENT" />-г авах</translation> +<translation id="3105917916468784889">Дэлгэцийн зураг авах</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Шинэчлэлт хийхээр дахин эхлүүлэх</translation> <translation id="3139942575505304791">Дэлгэц 1</translation> -<translation id="3147157020428159854">Дэлгэцийн үйлдэл бичихийг зогсоосон</translation> <translation id="315116470104423982">Гар утасны дата</translation> <translation id="3151786313568798007">Чиглэл</translation> <translation id="3153444934357957346">Та олон зэрэг нэвтрэлтэд хамгийн ихдээ <ph name="MULTI_PROFILE_USER_LIMIT" /> бүртгэл ашиглах боломжтой.</translation> @@ -367,7 +368,6 @@ <translation id="4296136865091727875">Бүх <ph name="COUNT" /> мэдэгдлийг устгах</translation> <translation id="4302592941791324970">Боломжгүй</translation> <translation id="4303223480529385476">Төлөв байдал илэрхийлэгчийг дэлгэх</translation> -<translation id="4315586716182276649">Утасныхаа интернэт холболтыг өргөжүүлж, Бүү саад бол онцлогийг хянаж, төхөөрөмжийнхөө байршлыг тогтоогоорой. Утасныхаа идэвхтэй Chrome табуудыг <ph name="DEVICE_TYPE" /> дээр хараарай.</translation> <translation id="4321179778687042513">Ctrl</translation> <translation id="4321776623976362024">Та өндөр нягтралын товчлуурын шууд холбоосыг дарсан байна. Үүнийг асаах уу?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -561,6 +561,7 @@ <translation id="6054305421211936131">Ухаалаг картаар нэвтрэх</translation> <translation id="6059276912018042191">Саяхны Chrome табууд</translation> <translation id="6062360702481658777"><ph name="LOGOUT_TIME_LEFT" />-н дотор та сүлжээнээс автоматаар гарах болно.</translation> +<translation id="6073451960410192870">Бичихийг зогсоох</translation> <translation id="607652042414456612">Таны компьютер ойролцоо байгаа Bluetooth төхөөрөмж дээр илрэх боломжтой бөгөөд <ph name="ADDRESS" /> хаяг бүхий "<ph name="NAME" />" нэрээр гарч ирэх болно.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Зочны сургалтад Google Туслах боломжгүй байна.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Хэлсэн саналыг идэвхгүй болгохын тулд дууны түвшингийн хоёр товчлуурыг дараад хүлээнэ үү.</translation> <translation id="7658239707568436148">Болих</translation> <translation id="7662283695561029522">Тохируулахын тулд товших</translation> -<translation id="7683326293741220026">Таны утсан дээр Bluetooth-г унтраасан бололтой. Phone Hub-г ашиглахын тулд утсан дээрээ Bluetooth-г асаана уу.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 мэдэгдэл}other{# мэдэгдэл}}</translation> <translation id="7724603315864178912">Хайчлах</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Цэнэгний хугацааг тооцож байна.</translation> <translation id="8061464966246066292">Өндөр ялгарал</translation> <translation id="8098591350844501178">Дэлгэцийг <ph name="RECEIVER_NAME" />-д дамжуулахыг зогсоох</translation> -<translation id="8108657971283652031">Утасныхаа интернэт холболтыг өргөжүүлж, Бүү саад бол онцлогийг хянаж, утасныхаа байршлыг тогтоогоорой. Утасныхаа идэвхтэй Chrome табуудыг <ph name="DEVICE_TYPE" /> дээр хараарай.</translation> <translation id="8113423164597455979">Бүх аппд и.тэй</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation> <translation id="8131740175452115882">Батлах</translation> @@ -824,6 +823,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> <ph name="SPECIFIED_RESOLUTION" />-г дэмждэггүй. Нягтралыг <ph name="FALLBACK_RESOLUTION" /> болгож өөрчилсөн. Өөрчлөлтийг хадгалахын тулд баталгаажуулахыг товшино уу. Өмнөх тохиргоог <ph name="TIMEOUT_SECONDS" />-н дараа сэргээнэ.</translation> <translation id="8513108775083588393">Автомат эргэх</translation> <translation id="8517041960877371778">Таны <ph name="DEVICE_TYPE" /> асаалттай үед цэнэглэхгүй.</translation> +<translation id="8553395910833293175">Бүх дэлгэц дээр аль хэдийн оноосон.</translation> <translation id="8563862697512465947">Мэдэгдлийн тохиргоо</translation> <translation id="857201607579416096">Цэсийг дэлгэцийн баруун доод булан руу зөөсөн.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -882,6 +882,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" />-г ашиглаж байна</translation> <translation id="899350903320462459">Мэдэгдлийн үйлдлийг гүйцэтгэхийн тулд төхөөрөмжийн түгжээг <ph name="LOGIN_ID" />-р тайлна уу</translation> <translation id="9017320285115481645">Family Link-н эцэг эхийн нэвтрэх кодоо оруулна уу.</translation> +<translation id="9024331582947483881">бүтэн дэлгэц</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" />-н тохиргоог нээх</translation> <translation id="9056839673611986238">Төхөөрөмжийг буцаан шилжүүлнэ</translation> <translation id="9065203028668620118">Засварлах</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb index 479fff00..fb2ec46 100644 --- a/ash/strings/ash_strings_mr.xtb +++ b/ash/strings/ash_strings_mr.xtb
@@ -232,10 +232,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> टॉगल करा. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">कर्सर हलवा</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" साठी <ph name="INTENT" /> मिळवा</translation> +<translation id="3105917916468784889">स्क्रीनशॉट घ्या</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (ब्लूटूथ)</translation> <translation id="3126069444801937830">अपडेटासाठी पुनर्सुरू करा</translation> <translation id="3139942575505304791">डेस्क १</translation> -<translation id="3147157020428159854">स्क्रीन रेकॉर्डिंग थांबले</translation> <translation id="315116470104423982">मोबाइल डेटा</translation> <translation id="3151786313568798007">अभिमुखता</translation> <translation id="3153444934357957346">मल्टिपल साइन इन मध्ये तुमच्याकडे जास्तीत जास्त फक्त <ph name="MULTI_PROFILE_USER_LIMIT" /> खाती असू शकतात.</translation> @@ -365,7 +365,6 @@ <translation id="4296136865091727875">सर्व <ph name="COUNT" /> सूचना साफ करा</translation> <translation id="4302592941791324970">उपलब्ध नाही</translation> <translation id="4303223480529385476">स्थिती क्षेत्राचा विस्तार करा</translation> -<translation id="4315586716182276649">तुमच्या फोनच्या इंटरनेट कनेक्शनची रेंज वाढवा, व्यत्यय आणू नका हे नियंत्रित करा आणि तुमचे डिव्हाइस शोधा. तुमच्या फोनमधील अॅक्टिव्ह Chrome टॅब तुमच्या <ph name="DEVICE_TYPE" /> वर पाहा.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">तुम्ही उच्च कॉंट्रास्टसाठी कीबोर्ड शॉर्टकट दाबला आहे. तुम्हाला ते सुरू करायचे आहे का?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -559,6 +558,7 @@ <translation id="6054305421211936131">तुमचे स्मार्ट कार्ड वापरून साइन इन करा</translation> <translation id="6059276912018042191">अलीकडील Chrome टॅब</translation> <translation id="6062360702481658777">तुम्हाला <ph name="LOGOUT_TIME_LEFT" /> मधून स्वयंचलितपणे साइन आउट केले जाईल.</translation> +<translation id="6073451960410192870">रेकॉर्डिंग थांबवा</translation> <translation id="607652042414456612">तुमचा कॉंप्युटर जवळपासच्या ब्लूटूथ डिव्हाइसवर शोधता येऊ शकतो आणि <ph name="ADDRESS" /> पत्त्यासह "<ph name="NAME" />" म्हणून दिसेल</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">अतिथी सत्रामध्ये Google असिस्टंट उपलब्ध नाही.</translation> @@ -724,7 +724,6 @@ <translation id="7654687942625752712">वाचिक फीडबॅक बंद करण्यासाठी दोन्ही व्हॉल्युम की पाच सेकंदांसाठी दाबा आणि धरून ठेवा.</translation> <translation id="7658239707568436148">रद्द करा</translation> <translation id="7662283695561029522">कॉंफिगर करण्यासाठी टॅप करा</translation> -<translation id="7683326293741220026">तुमच्या फोनचा ब्लूटूथ बंद असल्याचे दिसते. कृपया फोन हब वापरण्यासाठी तुमच्या फोनचा ब्लूटूथ सुरू करा.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{एक सूचना}other{# सूचना}}</translation> <translation id="7724603315864178912">कट करा</translation> @@ -772,7 +771,6 @@ <translation id="8054466585765276473">बॅटरी वेळ गणना करत आहे.</translation> <translation id="8061464966246066292">उच्च रंगभेद</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" /> वर स्क्रीन कास्ट करणे थांबवा</translation> -<translation id="8108657971283652031">तुमच्या फोनच्या इंटरनेट कनेक्शनची रेंज वाढवा, व्यत्यय आणू नका हे नियंत्रित करा आणि तुमचा फोन शोधा. तुमच्या फोनमधील अॅक्टिव्ह Chrome टॅब तुमच्या <ph name="DEVICE_TYPE" /> वर पाहा.</translation> <translation id="8113423164597455979">सुरू, सर्व ॲप</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° से</translation> <translation id="8131740175452115882">पुष्टी करा</translation> @@ -879,6 +877,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> वापरत आहे</translation> <translation id="899350903320462459">सूचनेशी संबंधित क्रिया पार पाडण्यासाठी डिव्हाइस <ph name="LOGIN_ID" /> म्हणून अनलॉक करा</translation> <translation id="9017320285115481645">Family Link पालक ॲक्सेस कोड एंटर करा.</translation> +<translation id="9024331582947483881">फुल स्क्रीन</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> साठी सेटिंग्ज उघडा</translation> <translation id="9056839673611986238">डिव्हाइस रोल बॅक केले जाईल</translation> <translation id="9065203028668620118">संपादन</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb index 094687a..a45fa2ad 100644 --- a/ash/strings/ash_strings_ms.xtb +++ b/ash/strings/ash_strings_ms.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Pembantu</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Tetapkan bahasa anda</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Kunci Skrin</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hai, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Togol <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Alihkan kursor</translation> <translation id="3098580329624789136">Dapatkan <ph name="INTENT" /> untuk "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Ambil tangkapan skrin</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Mulakan semula untuk mengemas kini</translation> <translation id="3139942575505304791">Meja 1</translation> -<translation id="3147157020428159854">Rakaman skrin dihentikan</translation> <translation id="315116470104423982">Data mudah alih</translation> <translation id="3151786313568798007">Orientasi</translation> <translation id="3153444934357957346">Anda hanya boleh memiliki sehingga <ph name="MULTI_PROFILE_USER_LIMIT" /> akaun dalam log masuk berbilang.</translation> @@ -367,7 +368,6 @@ <translation id="4296136865091727875">Kosongkan kesemua <ph name="COUNT" /> pemberitahuan</translation> <translation id="4302592941791324970">Tidak tersedia</translation> <translation id="4303223480529385476">Kembangkan area status</translation> -<translation id="4315586716182276649">Perluas sambungan Internet telefon, kawal Jangan Ganggu dan kesan lokasi peranti anda. Lihat tab Chrome yang aktif daripada telefon pada <ph name="DEVICE_TYPE" /> anda.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Anda menekan pintasan papan kekunci untuk kontras tinggi. Adakah anda ingin menghidupkannya?</translation> <translation id="4331809312908958774">OS Chrome</translation> @@ -561,6 +561,7 @@ <translation id="6054305421211936131">Daftar masuk dengan kad pintar</translation> <translation id="6059276912018042191">Tab Chrome baru-baru ini</translation> <translation id="6062360702481658777">Anda akan dilog keluar secara automatik dalam masa <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Hentikan rakaman</translation> <translation id="607652042414456612">Komputer anda boleh ditemui oleh peranti Bluetooth yang berdekatan sebagai "<ph name="NAME" />" dengan alamat <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Assistant tidak tersedia dalam sesi tetamu.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Tekan dan tahan kedua-dua kekunci kelantangan selama lima saat untuk melumpuhkan maklum balas yang dituturkan.</translation> <translation id="7658239707568436148">Batal</translation> <translation id="7662283695561029522">Ketik untuk membuat konfigurasi</translation> -<translation id="7683326293741220026">Nampaknya Bluetooth dimatikan pada telefon anda. Sila hidupkan Bluetooth pada telefon anda untuk menggunakan Hab Telefon.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 pemberitahuan}other{# pemberitahuan}}</translation> <translation id="7724603315864178912">Potong</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Mengira tempoh bateri.</translation> <translation id="8061464966246066292">Kontras tinggi</translation> <translation id="8098591350844501178">Berhenti menghantar skrin ke <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Perluas sambungan Internet telefon, kawal Jangan Ganggu dan kesan lokasi telefon anda. Lihat tab Chrome yang aktif daripada telefon pada <ph name="DEVICE_TYPE" /> anda.</translation> <translation id="8113423164597455979">Hidup, semua</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation> <translation id="8131740175452115882">Sahkan</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> tidak menyokong <ph name="SPECIFIED_RESOLUTION" />. Peleraian telah ditukar kepada <ph name="FALLBACK_RESOLUTION" />. Klik sahkan untuk menyimpan perubahan. Tetapan terdahulu akan dipulihkan dalam masa <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Autoputar</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> anda mungkin tidak akan dicas semasa dihidupkan.</translation> +<translation id="8553395910833293175">Telah pun diuntukkan kepada semua meja.</translation> <translation id="8563862697512465947">Tetapan Pemberitahuan</translation> <translation id="857201607579416096">Menu dialihkan ke sudut bawah sebelah kanan skrin.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590">Menggunakan <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Buka kunci peranti sebagai <ph name="LOGIN_ID" /> untuk melaksanakan tindakan pemberitahuan</translation> <translation id="9017320285115481645">Masukkan kod akses ibu bapa Family Link.</translation> +<translation id="9024331582947483881">skrin penuh</translation> <translation id="9047624247355796468">Buka tetapan untuk <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Peranti akan dibalikkan</translation> <translation id="9065203028668620118">Edit</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb index 733f358..9c1f1c20 100644 --- a/ash/strings/ash_strings_my.xtb +++ b/ash/strings/ash_strings_my.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">၀°</translation> <translation id="1957958912175573503">သင်၏ ဘာသာစကားကို သတ်မှတ်ရန်</translation> +<translation id="1961832440516943645"><ph name="DATE" />၊ <ph name="TIME" /></translation> <translation id="1962969542251276847">လော့ခ်မျက်နှာပြင်</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">မင်္ဂလာပါ <ph name="USERNAME" />၊</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> ပြောင်းရန်။ <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">ကာဆာ ရွှေ့ရန်</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" အတွက် <ph name="INTENT" /> ရယူခြင်း</translation> +<translation id="3105917916468784889">ဖန်သားပြင်ဓာတ်ပုံ ရိုက်ရန်</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (ဘလူးတုသ်)</translation> <translation id="3126069444801937830">အပ်ဒိတ်လုပ်ရန် ပြန်ဖွင့်ပါ</translation> <translation id="3139942575505304791">စာရေးခုံ ၁</translation> -<translation id="3147157020428159854">ဖန်သားပြင်ရိုက်ကူးမှုကို ရပ်လိုက်ပါပြီ</translation> <translation id="315116470104423982">မိုဘိုင်း ဒေတာ</translation> <translation id="3151786313568798007">အနေအထား</translation> <translation id="3153444934357957346">အကောင့်တစ်ခုထက်ပိုဝင်ခြင်းစနစ်တွင် အကောင့် <ph name="MULTI_PROFILE_USER_LIMIT" /> ခု အထိသာ အများဆုံးထားနိုင်ပါသည်။</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">သတိပေးချက် <ph name="COUNT" /> ခုလုံးကို ဖယ်ရှားပါ</translation> <translation id="4302592941791324970">မရနိုင်ပါ</translation> <translation id="4303223480529385476">အခြေအနေပြ နေရာကို ချဲ့ရန်</translation> -<translation id="4315586716182276649">သင့်ဖုန်း၏ အင်တာနက်ချိတ်ဆက်မှုကို တိုးချဲ့ခြင်း၊ 'မနှောင့်ယှက်ရ' ကိုထိန်းချုပ်ခြင်းနှင့် သင့်စက်ကို ရှာဖွေခြင်းတို့ ပြုလုပ်နိုင်သည်။ သင်၏ <ph name="DEVICE_TYPE" /> တွင် သင့်ဖုန်းမှ လက်ရှိ Chrome တဘ်များကို ကြည့်နိုင်သည်။</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">ခြားနားချက်မြင့်သည့် လုပ်ဆောင်ချက်အတွက် ကီးဘုတ်ဖြတ်လမ်းလင့်ခ်ကို သင်နှိပ်လိုက်ပါသည်။ ၎င်းကို ဖွင့်လိုပါသလား။</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">အဆင့်မြင့်ကတ်ဖြင့် လက်မှတ်ထိုးဝင်ရန်</translation> <translation id="6059276912018042191">လတ်တလော Chrome တဘ်များ</translation> <translation id="6062360702481658777">သင်သည် <ph name="LOGOUT_TIME_LEFT" /> အကြာတွင် အလိုအလျောက် ထွက်ခွာမည်။</translation> +<translation id="6073451960410192870">ကူးယူမှု ရပ်ရန်</translation> <translation id="607652042414456612">သင်၏ ကွန်ပျူတာမှာ အနီးအနားရှိ ဘလူးတုသ် ကိရိယာများမှာ ရှာတွေ့နိုင်ကာ "<ph name="NAME" />"အဖြစ် လိပ်စာ <ph name="ADDRESS" />ဖြင့် မြင်ရမည်။</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />။ <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">ဧည့်သည်စက်ရှင်တွင် Google Assistant ကို အသုံးပြု၍ မရပါ။</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">စကားပြော အကြံပြုချက်ကို ပိတ်ရန် အသံအတိုးအလျှော့ခလုတ် နှစ်ခုလုံးကို ၅ စက္ကန့်ကြာ ဖိထားပါ။</translation> <translation id="7658239707568436148">မလုပ်တော့</translation> <translation id="7662283695561029522">စီစဉ်သတ်မှတ်ရန် တို့ပါ</translation> -<translation id="7683326293741220026">သင်၏ဖုန်းတွင် ဘလူးတုသ် ပိတ်ထားပုံရသည်။ 'ဖုန်းစင်တာ' အသုံးပြုရန် သင့်ဖုန်းတွင် ဘလူးတုသ်ဖွင့်ပါ။</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{အကြောင်းကြားချက် ၁ ခု}other{အကြောင်းကြားချက် # ခု}}</translation> <translation id="7724603315864178912">ဖြတ်တောက်</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">ဘက်ထရီ အချိန်တွက်နေ</translation> <translation id="8061464966246066292">ခြားနားမှုမြင့်သော</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" /> သို့ မျက်နှာပြင်အား ကာစ်လုပ်နေခြင်းကို ရပ်ပါ</translation> -<translation id="8108657971283652031">သင့်ဖုန်း၏ အင်တာနက်ချိတ်ဆက်မှုကို တိုးချဲ့ခြင်း၊ 'မနှောင့်ယှက်ရ' ကိုထိန်းချုပ်ခြင်းနှင့် သင့်ဖုန်းကို ရှာဖွေခြင်းတို့ ပြုလုပ်နိုင်သည်။ သင်၏ <ph name="DEVICE_TYPE" /> တွင် သင့်ဖုန်းမှ လက်ရှိ Chrome တဘ်များကို ကြည့်နိုင်သည်။</translation> <translation id="8113423164597455979">ဖွင့်- အားလုံး</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° စင်တီဂရိတ်</translation> <translation id="8131740175452115882">အတည်ပြုရန်</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> က <ph name="SPECIFIED_RESOLUTION" /> ကို မပံ့ပိုးပါ။ ပုံရိပ်ပြတ်သားကိန်းကို <ph name="FALLBACK_RESOLUTION" /> သို့ ပြောင်းထားသည်။ အပြောင်းအလဲများသိမ်းရန် 'အတည်ပြုရန်' ကို နှိပ်ပါ။ ယခင်ဆက်တင်များကို <ph name="TIMEOUT_SECONDS" /> အကြာတွင် ပြန်ထားရှိပါမည်။</translation> <translation id="8513108775083588393">အော်တို-လှည့်</translation> <translation id="8517041960877371778">သင်၏ <ph name="DEVICE_TYPE" /> ကိရိယာမှာ ဖွင့်ထားလျှင် အားသွင်း၍ ရချင်မှရမည်.</translation> +<translation id="8553395910833293175">မျက်နှာပြင်နေရာအားလုံးတွင် သတ်မှတ်ပြီးပါပြီ။</translation> <translation id="8563862697512465947">အကြောင်းကြားချက် ဆက်တင်များ</translation> <translation id="857201607579416096">မီနူးကို ဖန်သားပြင်၏ ညာဘက်အောက်ခြေထောင့်သို့ ရွှေ့လိုက်သည်။</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> ကို အသုံးပြုနေသည်</translation> <translation id="899350903320462459">အကြောင်းကြားခြင်း လုပ်ဆောင်ရန်အတွက် <ph name="LOGIN_ID" /> အဖြစ် စက်ပစ္စည်းကို လော့ခ်ဖွင့်ပါ</translation> <translation id="9017320285115481645">Family Link မိဘသုံးကုဒ် ထည့်ပါ။</translation> +<translation id="9024331582947483881">မျက်နှာပြင်အပြည့်</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> အတွက် ဆက်တင်များကို ဖွင့်ရန်</translation> <translation id="9056839673611986238">စက်ပစ္စည်းကို ယခင်အခြေအနေသို့ ရောက်အောင် ပြန်လည်သွင်းယူသွားပါမည်</translation> <translation id="9065203028668620118">ပြင်ဆင်ရန်</translation>
diff --git a/ash/strings/ash_strings_ne.xtb b/ash/strings/ash_strings_ne.xtb index c7a56e8..11a1b0d 100644 --- a/ash/strings/ash_strings_ne.xtb +++ b/ash/strings/ash_strings_ne.xtb
@@ -232,10 +232,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> अन/अफ गर्नुहोस्। <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">कर्सर सार्नुहोस्</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" को <ph name="INTENT" /> प्राप्त गर्नुहोस्</translation> +<translation id="3105917916468784889">स्क्रिनसट लिनुहोस्</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (ब्लुटूथ)</translation> <translation id="3126069444801937830">अपडेट गर्न पुनः सुरु गर्नुहोस्</translation> <translation id="3139942575505304791">डेस्क १</translation> -<translation id="3147157020428159854">स्क्रिन रेकर्ड गर्ने कार्य रोकियो</translation> <translation id="315116470104423982">मोबाइल डाटा</translation> <translation id="3151786313568798007">अभिमुखीकरण</translation> <translation id="3153444934357957346">तपाईंसँग बहुविध साइन-इनमा <ph name="MULTI_PROFILE_USER_LIMIT" /> सम्म खाताहरू मात्रै हुन सक्छ।</translation> @@ -366,7 +366,6 @@ <translation id="4296136865091727875">सबै <ph name="COUNT" /> सूचनाहरू हटाउनुहोस्</translation> <translation id="4302592941791324970">उपलब्ध छैन</translation> <translation id="4303223480529385476">वस्तुस्थिति देखाउने क्षेत्र विस्तृत गर्नुहोस्</translation> -<translation id="4315586716182276649">आफ्नो फोनको इन्टरनेट कनेक्सन अझ राम्रो बनाउनुहोस्, 'बाधा नपुऱ्याउनुहोस्' सुविधा नियन्त्रण गर्नुहोस् र आफ्नो यन्त्र रहेको स्थान पत्ता लगाउनुहोस्। आफ्नो फोनको Chrome मा खोलिएका ट्याबहरू आफ्नो <ph name="DEVICE_TYPE" /> बाट हेर्नुहोस्।</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">तपाईंले उच्च कन्ट्रास्ट मोडको किबोर्ड सर्टकट थिच्नुभयो। तपाईं यसलाई सक्रिय गर्न चाहनुहुन्छ?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +559,7 @@ <translation id="6054305421211936131">स्मार्ट कार्डमार्फत साइन इन गर्नुहोस्</translation> <translation id="6059276912018042191">Chrome का हालसालै खोलिएका ट्याबहरू</translation> <translation id="6062360702481658777">तपाइँ <ph name="LOGOUT_TIME_LEFT" /> मा स्वचालित रूपमा साइन आउट हुनुहुनेछ।</translation> +<translation id="6073451960410192870">रेकर्ड गर्न छाड्नुहोस्</translation> <translation id="607652042414456612">तपाइँको कम्प्युटर नजिकको ब्लुतुथ यन्त्रहरूको लागि दृश्य-योग्य छ र "<ph name="NAME" />" को रूपमा ठेगाना <ph name="ADDRESS" /> सँग देखा पर्नेछ</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />। <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google सहायक अतिथिको सत्रमा उपलब्ध हुँदैन।</translation> @@ -725,7 +725,6 @@ <translation id="7654687942625752712">बोलीसम्बन्धी प्रतिक्रियाहरू असक्षम पार्न दुवै भोल्युम कुञ्जीहरूलाई पाँच सेकेन्डसम्म थिचिराख्नुहोस्।</translation> <translation id="7658239707568436148">रद्द गर्नुहोस्</translation> <translation id="7662283695561029522">कन्फिगर गर्न ट्याप गर्नुहोस्</translation> -<translation id="7683326293741220026">तपाईंको फोनमा ब्लुटुथ अफ गरिएको छ जस्तो देखिन्छ। फोन हब नामक सुविधा प्रयोग गर्न कृपया फोनको ब्लुटुथ अन गर्नुहोस्।</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{१ सूचना}other{# सूचनाहरू}}</translation> <translation id="7724603315864178912">काट्नुहोस्</translation> @@ -773,7 +772,6 @@ <translation id="8054466585765276473">ब्याटरि समय हिसाब गर्दै।</translation> <translation id="8061464966246066292">उच्च कन्ट्रास्ट</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" /> मा स्क्रिन casting गर्ने काम रोक्नुहोस्</translation> -<translation id="8108657971283652031">आफ्नो फोनको इन्टरनेट कनेक्सन अझ राम्रो बनाउनुहोस्, 'बाधा नपुऱ्याउनुहोस्' सुविधा नियन्त्रण गर्नुहोस् र आफ्नो फोन रहेको स्थान पत्ता लगाउनुहोस्। आफ्नो फोनको Chrome मा खोलिएका ट्याबहरू आफ्नो <ph name="DEVICE_TYPE" /> बाट हेर्नुहोस्।</translation> <translation id="8113423164597455979">सबै यन्त्रमा अन</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° से.</translation> <translation id="8131740175452115882">निश्चित</translation> @@ -880,6 +878,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> प्रयोग गरिँदै</translation> <translation id="899350903320462459">सूचनासम्बन्धी कारबाही गर्न यन्त्रलाई <ph name="LOGIN_ID" /> का रूपमा अनलक गर्नुहोस्</translation> <translation id="9017320285115481645">Family Link को अभिभावकको पहुँचसम्बन्धी कोड प्रविष्टि गर्नुहोस्।</translation> +<translation id="9024331582947483881">फुल स्क्रिन</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> को सेटिङ खोल्नुहोस्</translation> <translation id="9056839673611986238">यन्त्रलाई पहिलेको स्थितिमा फर्काइने छ</translation> <translation id="9065203028668620118">सम्पादन गर्नुहोस</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb index b75d681..d484fd6 100644 --- a/ash/strings/ash_strings_nl.xtb +++ b/ash/strings/ash_strings_nl.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Je taal instellen</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Vergrendelscherm</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hallo, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> in-/uitschakelen. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Cursor verplaatsen</translation> <translation id="3098580329624789136">De <ph name="INTENT" /> voor '<ph name="QUERY" />' ophalen</translation> +<translation id="3105917916468784889">Screenshot maken</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Opnieuw starten om updates uit te voeren</translation> <translation id="3139942575505304791">Bureau 1</translation> -<translation id="3147157020428159854">Schermopname gestopt</translation> <translation id="315116470104423982">Mobiele data</translation> <translation id="3151786313568798007">Stand</translation> <translation id="3153444934357957346">Je kunt maximaal <ph name="MULTI_PROFILE_USER_LIMIT" /> accounts hebben in Toegang tot meerdere accounts.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Alle <ph name="COUNT" /> meldingen wissen</translation> <translation id="4302592941791324970">Niet beschikbaar</translation> <translation id="4303223480529385476">Statusgedeelte uitvouwen</translation> -<translation id="4315586716182276649">Breid de internetverbinding van je telefoon uit, beheer Niet storen en vind je apparaat. Bekijk actieve Chrome-tabbladen van je telefoon op je <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Je hebt op de sneltoets voor hoog contrast gedrukt. Wil je deze functie inschakelen?</translation> <translation id="4331809312908958774">Besturingssysteem Chrome</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Inloggen met smartkaart</translation> <translation id="6059276912018042191">Recente Chrome-tabbladen</translation> <translation id="6062360702481658777">Je wordt automatisch uitgelogd over <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Opname stoppen</translation> <translation id="607652042414456612">Je computer is vindbaar voor Bluetooth-apparaten in de buurt en wordt weergegeven als '<ph name="NAME" />' met adres <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" />.</translation> <translation id="612734058257491180">De Google Assistent is niet beschikbaar in een gastsessie.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Houd beide volumetoetsen gedurende vijf seconden ingedrukt om gesproken feedback uit te schakelen.</translation> <translation id="7658239707568436148">Annuleren</translation> <translation id="7662283695561029522">Tik om te configureren</translation> -<translation id="7683326293741220026">Zo te zien staat bluetooth uit op je telefoon. Zet bluetooth aan op je telefoon om Telefoonhub te gebruiken.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{Eén melding}other{# meldingen}}</translation> <translation id="7724603315864178912">Knip</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Accuduur berekenen.</translation> <translation id="8061464966246066292">Hoog contrast</translation> <translation id="8098591350844501178">Schermcast naar <ph name="RECEIVER_NAME" /> stopzetten</translation> -<translation id="8108657971283652031">Breid de internetverbinding van je telefoon uit, beheer Niet storen en vind je telefoon. Bekijk actieve Chrome-tabbladen van je telefoon op je <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Aan, alle apps</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Bevestigen</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> ondersteunt <ph name="SPECIFIED_RESOLUTION" /> niet. De resolutie is gewijzigd in <ph name="FALLBACK_RESOLUTION" />. Klik op 'Bevestigen' om de wijzigingen te behouden. De vorige instellingen worden over <ph name="TIMEOUT_SECONDS" /> hersteld.</translation> <translation id="8513108775083588393">Autom. draaien</translation> <translation id="8517041960877371778">Je <ph name="DEVICE_TYPE" /> wordt mogelijk niet opgeladen terwijl deze is ingeschakeld.</translation> +<translation id="8553395910833293175">Al toegewezen aan alle bureaus.</translation> <translation id="8563862697512465947">Meldingsinstellingen</translation> <translation id="857201607579416096">Menu verplaatst naar rechtsonder in het scherm.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> gebruiken</translation> <translation id="899350903320462459">Ontgrendel het apparaat als <ph name="LOGIN_ID" /> om de meldingsactie uit te voeren</translation> <translation id="9017320285115481645">Geef de Family Link-toegangscode voor ouders op.</translation> +<translation id="9024331582947483881">volledig scherm</translation> <translation id="9047624247355796468">Instellingen openen voor <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Apparaat wordt teruggezet naar oudere versie</translation> <translation id="9065203028668620118">Bewerken</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb index a521d8b..57f99dc 100644 --- a/ash/strings/ash_strings_no.xtb +++ b/ash/strings/ash_strings_no.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Velg språk</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Skjermlås</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hei, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Slå av/på <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Flytt markøren</translation> <translation id="3098580329624789136">Hent <ph name="INTENT" /> for «<ph name="QUERY" />»</translation> +<translation id="3105917916468784889">Ta skjermdump</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Start på nytt for å oppdatere</translation> <translation id="3139942575505304791">Skrivebord 1</translation> -<translation id="3147157020428159854">Skjermopptaket er stanset</translation> <translation id="315116470104423982">Mobildata</translation> <translation id="3151786313568798007">Retning</translation> <translation id="3153444934357957346">Du kan bare ha opptil <ph name="MULTI_PROFILE_USER_LIMIT" /> kontoer i multipålogging.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Fjern alle <ph name="COUNT" /> varsler</translation> <translation id="4302592941791324970">Ikke tilgjengelig</translation> <translation id="4303223480529385476">Vis statusområdet</translation> -<translation id="4315586716182276649">Utvid telefonens internettilkobling, styr Ikke forstyrr-modus, og finn enheten. Se aktive Chrome-faner fra telefonen på <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Du trykket på hurtigtasten for høy kontrast. Vil du slå det på?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Logg på med smartkort</translation> <translation id="6059276912018042191">Nylige Chrome-faner</translation> <translation id="6062360702481658777">Du logges automatisk av om <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Stopp opptaket</translation> <translation id="607652042414456612">Datamaskinen din kan registreres av Bluetooth-enheter i nærheten, og vises med navnet «<ph name="NAME" />» og adressen <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google-assistenten er ikke tilgjengelig i gjesteøkter.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Trykk og hold på begge volumknappene i fem sekunder for å slå av taletilbakemelding.</translation> <translation id="7658239707568436148">Avbryt</translation> <translation id="7662283695561029522">Trykk for å konfigurere</translation> -<translation id="7683326293741220026">Det ser ut til at Bluetooth er slått av på telefonen. Slå på Bluetooth på telefonen for å bruke Telefonstyring.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 varsel}other{# varsler}}</translation> <translation id="7724603315864178912">Klipp ut</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Beregner batteritid.</translation> <translation id="8061464966246066292">Høy kontrast</translation> <translation id="8098591350844501178">Slutt å caste skjermen til <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Utvid telefonens internettilkobling, styr Ikke forstyrr-modus, og finn telefonen. Se aktive Chrome-faner fra telefonen på <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">På, alle apper</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Bekreft</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> støtter ikke <ph name="SPECIFIED_RESOLUTION" />. Oppløsningen ble endret til <ph name="FALLBACK_RESOLUTION" />. Klikk på bekreft for å beholde endringene. De forrige innstillingene blir gjenopprettet om <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Autorotasjon</translation> <translation id="8517041960877371778">Det kan hende at din <ph name="DEVICE_TYPE" /> ikke lader når den er slått på.</translation> +<translation id="8553395910833293175">Allerede tilordnet til alle skrivebord.</translation> <translation id="8563862697512465947">Varslingsinnstillinger</translation> <translation id="857201607579416096">Menyen ble flyttet til nedre høyre hjørne av skjermen.</translation> <translation id="8594115950068821369">–<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Bruker <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Lås opp enheten som <ph name="LOGIN_ID" /> for å utføre varselhandlingen</translation> <translation id="9017320285115481645">Skriv inn koden for foreldretilgang til Family Link.</translation> +<translation id="9024331582947483881">full skjerm</translation> <translation id="9047624247355796468">Åpne innstillinger for <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Enheten blir tilbakestilt til forrige versjon</translation> <translation id="9065203028668620118">Endre</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb index abf705c..509d27ef 100644 --- a/ash/strings/ash_strings_or.xtb +++ b/ash/strings/ash_strings_or.xtb
@@ -232,10 +232,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> ଟୋଗଲ୍ କରନ୍ତୁ। <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">କର୍ସର୍ ଘୁଞ୍ଚାନ୍ତୁ</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" ପାଇଁ <ph name="INTENT" /> ପାଆନ୍ତୁ</translation> +<translation id="3105917916468784889">ସ୍କ୍ରିନ୍ସଟ୍ ନିଅନ୍ତୁ</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (ବ୍ଲୁଟୁଥ୍)</translation> <translation id="3126069444801937830">ଅପ୍ଡେଟ୍ କରିବା ପାଇଁ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ</translation> <translation id="3139942575505304791">ଡେସ୍କ 1</translation> -<translation id="3147157020428159854">ସ୍କ୍ରିନ୍ ରେକର୍ଡିଂ ବନ୍ଦ ହୋଇଯାଇଛି</translation> <translation id="315116470104423982">ମୋବାଇଲ୍ ଡାଟା</translation> <translation id="3151786313568798007">ଓରିଏଣ୍ଟେସନ୍</translation> <translation id="3153444934357957346">ଏକାଧିକ ସାଇନ୍-ଇନ୍ରେ ଆପଣଙ୍କ ପାଖରେ ଅଧିକରୁ ଅଧିକତର <ph name="MULTI_PROFILE_USER_LIMIT" /> ପର୍ଯ୍ୟନ୍ତ ଆକାଉଣ୍ଟ ହୋଇପାରେ।</translation> @@ -366,7 +366,6 @@ <translation id="4296136865091727875">ସମସ୍ତ <ph name="COUNT" />ବିଜ୍ଞପ୍ତି ଖାଲି କରନ୍ତୁ</translation> <translation id="4302592941791324970">ଉପଲବ୍ଧ ନାହିଁ</translation> <translation id="4303223480529385476">ସ୍ଥିତି କ୍ଷେତ୍ର ବିସ୍ତାର କରନ୍ତୁ</translation> -<translation id="4315586716182276649">ଆପଣଙ୍କ ଫୋନର ଇଣ୍ଟରନେଟ୍ ସଂଯୋଗର ବିସ୍ତାର କରନ୍ତୁ, 'ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ'କୁ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ ଏବଂ ଆପଣଙ୍କ ଡିଭାଇସର ଅବସ୍ଥାନ ନିରୂପଣ କରନ୍ତୁ। ଆପଣଙ୍କ <ph name="DEVICE_TYPE" />ରେ ଆପଣଙ୍କ ଫୋନରୁ ସକ୍ରିୟ ଥିବା Chrome ଟାବଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ।</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">ଉଚ୍ଚ କଣ୍ଟ୍ରାଷ୍ଟ ପାଇଁ ଆପଣ କୀବୋର୍ଡ ସର୍ଟକଟ୍ ଦବାଇଛନ୍ତି। ଆପଣ ଏହାକୁ ଚାଲୁ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +559,7 @@ <translation id="6054305421211936131">ସ୍ମାର୍ଟ କାର୍ଡ ସହିତ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation> <translation id="6059276912018042191">ବର୍ତ୍ତମାନର Chrome ଟାବଗୁଡ଼ିକ</translation> <translation id="6062360702481658777">ଆପଣ ସ୍ଵଚାଳିତ ଭାବେ <ph name="LOGOUT_TIME_LEFT" />ରେ ସାଇନ୍ ଆଉଟ୍ କରିବେ।</translation> +<translation id="6073451960410192870">ରେକର୍ଡିଂ ବନ୍ଦ କରନ୍ତୁ</translation> <translation id="607652042414456612">ଆପଣଙ୍କର କମ୍ପ୍ୟୁଟର୍ ନିକଟସ୍ଥ ବ୍ଲୁଟୁଥ୍ ଡିଭାଇସ୍ଗୁଡ଼ିକରେ ଖୋଜିପାଇବାଯୋଗ୍ୟ ଅଟେ ଏବଂ ଠିକଣା <ph name="ADDRESS" /> ସହିତ " <ph name="NAME" />" ରୂପେ ଦେଖାଯିବ</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />। <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">ଏକ ଅତିଥି ସମୟ ଅବଧିରେ Google Assistant ଉପଲବ୍ଧ ନାହିଁ।</translation> @@ -725,7 +725,6 @@ <translation id="7654687942625752712">କୁହାଯାଇଥିବା ମତାମତ ଅକ୍ଷମ କରିବାକୁ ଉଭୟ ଭଲ୍ୟୁମ୍ କୀ ଦବାଇ ରଖନ୍ତୁ।</translation> <translation id="7658239707568436148">ବାତିଲ୍</translation> <translation id="7662283695561029522">କନ୍ଫିଗର୍ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ</translation> -<translation id="7683326293741220026">ଆପଣଙ୍କ ଫୋନରେ ବ୍ଲୁଟୁଥ୍ ବନ୍ଦ କରାଯାଇଥିବା ପରି ଜଣାପଡ଼ୁଛି। ଦୟାକରି ଫୋନ୍ ହବ୍ ବ୍ୟବହାର କରିବା ପାଇଁ ଆପଣଙ୍କ ଫୋନରେ ବ୍ଲୁଟୁଥକୁ ଚାଲୁ କରନ୍ତୁ।</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1ଟି ବିଜ୍ଞପ୍ତି}other{#ଟି ବିଜ୍ଞପ୍ତି}}</translation> <translation id="7724603315864178912">Cut</translation> @@ -773,7 +772,6 @@ <translation id="8054466585765276473">ବ୍ୟାଟେରୀ ସମୟ ହିସାବ କରାଯାଉଛି।</translation> <translation id="8061464966246066292">ଉଚ୍ଚ କଣ୍ଟ୍ରାଷ୍ଟ</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" />ରେ ସ୍କ୍ରିନ୍ କାଷ୍ଟ କରିବା ବନ୍ଦ କରନ୍ତୁ</translation> -<translation id="8108657971283652031">ଆପଣଙ୍କ ଫୋନର ଇଣ୍ଟରନେଟ୍ ସଂଯୋଗର ବିସ୍ତାର କରନ୍ତୁ, 'ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ'କୁ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ ଏବଂ ଆପଣଙ୍କ ଫୋନର ଅବସ୍ଥାନ ନିରୂପଣ କରନ୍ତୁ। ଆପଣଙ୍କ <ph name="DEVICE_TYPE" />ରେ ଆପଣଙ୍କ ଫୋନରୁ ସକ୍ରିୟ ଥିବା Chrome ଟାବଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ।</translation> <translation id="8113423164597455979">ଚାଲୁ, ସବୁ ଆପ୍</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">ନିଶ୍ଚିତ କରନ୍ତୁ</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb index 156e2d9..91ff691 100644 --- a/ash/strings/ash_strings_pa.xtb +++ b/ash/strings/ash_strings_pa.xtb
@@ -230,10 +230,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> ਨੂੰ ਟੌਗਲ ਕਰੋ। <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">ਕਰਸਰ ਹਿਲਾਓ</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" ਲਈ <ph name="INTENT" /> ਪ੍ਰਾਪਤ ਕਰੋ</translation> +<translation id="3105917916468784889">ਸਕ੍ਰੀਨਸ਼ਾਟ ਲਵੋ</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (ਬਲੂਟੁੱਥ)</translation> <translation id="3126069444801937830">ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ</translation> <translation id="3139942575505304791">ਡੈਸਕ 1</translation> -<translation id="3147157020428159854">ਸਕ੍ਰੀਨ ਰਿਕਾਰਡਿੰਗ ਬੰਦ ਹੋ ਗਈ</translation> <translation id="315116470104423982">ਮੋਬਾਈਲ ਡਾਟਾ</translation> <translation id="3151786313568798007">ਦਿਸ਼ਾਮਾਨ</translation> <translation id="3153444934357957346">ਤੁਸੀਂ ਬਹੁ-ਗਿਣਤੀ ਸਾਈਨ-ਇਨ ਵਿੱਚ ਸਿਰਫ਼ <ph name="MULTI_PROFILE_USER_LIMIT" /> ਤੱਕ ਖਾਤੇ ਰੱਖ ਸਕਦੇ ਹੋ।</translation> @@ -364,7 +364,6 @@ <translation id="4296136865091727875">ਸਾਰੀਆਂ <ph name="COUNT" /> ਸੂਚਨਾਵਾਂ ਕਲੀਅਰ ਕਰੋ</translation> <translation id="4302592941791324970">ਉਪਲਬਧ ਨਹੀਂ</translation> <translation id="4303223480529385476">ਸਥਿਤੀ ਖੇਤਰ ਦਾ ਵਿਸਤਾਰ ਕਰੋ</translation> -<translation id="4315586716182276649">ਆਪਣੇ ਫ਼ੋਨ ਦੇ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਦਾ ਵਿਸਤਾਰ ਕਰੋ, ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ ਨੂੰ ਕੰਟਰੋਲ ਕਰੋ ਅਤੇ ਆਪਣੇ ਡੀਵਾਈਸ ਦਾ ਪਤਾ ਲਗਾਓ। ਆਪਣੇ <ph name="DEVICE_TYPE" /> 'ਤੇ ਆਪਣੇ ਫ਼ੋਨ ਤੋਂ ਕਿਰਿਆਸ਼ੀਲ Chrome ਟੈਬਾਂ ਦੇਖੋ।</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">ਤੁਸੀਂ ਉੱਚ ਕੰਟ੍ਰਾਸਟ ਲਈ ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਦਬਾਇਆ ਹੈ। ਕੀ ਤੁਸੀਂ ਇਸਨੂੰ ਚਾਲੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -558,6 +557,7 @@ <translation id="6054305421211936131">ਸਮਾਰਟ ਕਾਰਡ ਨਾਲ ਸਾਈਨ-ਇਨ ਕਰੋ</translation> <translation id="6059276912018042191">ਹਾਲੀਆ Chrome ਟੈਬਾਂ</translation> <translation id="6062360702481658777">ਤੁਹਾਨੂੰ <ph name="LOGOUT_TIME_LEFT" /> ਆਟੋਮੈਟਿਕਲੀ ਸਾਈਨ ਆਉਟ ਕੀਤਾ ਜਾਏਗਾ।</translation> +<translation id="6073451960410192870">ਰਿਕਾਰਡਿੰਗ ਬੰਦ ਕਰੋ</translation> <translation id="607652042414456612">ਨੇੜਲੇ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਨੂੰ ਖੋਜ ਸਕਦੇ ਹਨ ਅਤੇ ਇਹ ਪਤੇ <ph name="ADDRESS" /> ਨਾਲ "<ph name="NAME" />" ਦੇ ਤੌਰ 'ਤੇ ਦਿਖਾਈ ਦੇਵੇਗਾ।</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />। <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">'Google ਅਸਿਸਟੈਂਟ' ਮਹਿਮਾਨ ਸੈਸ਼ਨ ਵਿੱਚ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।</translation> @@ -723,7 +723,6 @@ <translation id="7654687942625752712">ਬੋਲੀ ਪ੍ਰਤੀਕਰਮ ਬੰਦ ਕਰਨ ਲਈ ਦੋਵੇਂ ਅਵਾਜ਼ ਕੁੰਜੀਆਂ ਨੂੰ 5 ਸਕਿੰਟ ਤੱਕ ਦਬਾਈ ਰੱਖੋ।</translation> <translation id="7658239707568436148">ਰੱਦ ਕਰੋ</translation> <translation id="7662283695561029522">ਸੰਰੂਪਣ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ</translation> -<translation id="7683326293741220026">ਇੰਝ ਲੱਗਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਫ਼ੋਨ 'ਤੇ ਬਲੂਟੁੱਥ ਬੰਦ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਫ਼ੋਨ ਹੱਬ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਆਪਣੇ ਫ਼ੋਨ 'ਤੇ ਬਲੂਟੁੱਥ ਨੂੰ ਚਾਲੂ ਕਰੋ।</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ਸੂਚਨਾ}one{# ਸੂਚਨਾ}other{# ਸੂਚਨਾਵਾਂ}}</translation> <translation id="7724603315864178912">ਕੱਟੋ</translation> @@ -771,7 +770,6 @@ <translation id="8054466585765276473">ਬੈਟਰੀ ਸਮੇਂ ਦਾ ਅਨੁਮਾਨ ਲਗਾ ਰਿਹਾ ਹੈ।</translation> <translation id="8061464966246066292">ਉੱਚ ਕੰਟ੍ਰਾਸਟ</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" /> 'ਤੇ ਸਕ੍ਰੀਨ ਕਾਸਟ ਕਰਨੀ ਬੰਦ ਕਰੋ</translation> -<translation id="8108657971283652031">ਆਪਣੇ ਫ਼ੋਨ ਦੇ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਦਾ ਵਿਸਤਾਰ ਕਰੋ, ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ ਨੂੰ ਕੰਟਰੋਲ ਕਰੋ ਅਤੇ ਆਪਣੇ ਫ਼ੋਨ ਦਾ ਪਤਾ ਲਗਾਓ। ਆਪਣੇ <ph name="DEVICE_TYPE" /> 'ਤੇ ਆਪਣੇ ਫ਼ੋਨ ਤੋਂ ਕਿਰਿਆਸ਼ੀਲ Chrome ਟੈਬਾਂ ਦੇਖੋ।</translation> <translation id="8113423164597455979">ਚਾਲੂ, ਸਭ ਐਪਾਂ</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">ਪੁਸ਼ਟੀ ਕਰੋ</translation> @@ -878,6 +876,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> ਦੀ ਵਰਤੋਂ ਹੋ ਰਹੀ ਹੈ</translation> <translation id="899350903320462459">ਸੂਚਨਾ 'ਤੇ ਕਾਰਵਾਈ ਕਰਨ ਲਈ <ph name="LOGIN_ID" /> ਵਜੋਂ ਡੀਵਾਈਸ ਨੂੰ ਅਣਲਾਕ ਕਰੋ</translation> <translation id="9017320285115481645">Family Link ਦਾ ਮਾਂ-ਪਿਓ ਪਹੁੰਚ ਕੋਡ ਦਾਖਲ ਕਰੋ।</translation> +<translation id="9024331582947483881">ਫੁਲ ਸਕ੍ਰੀਨ</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> ਲਈ ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ</translation> <translation id="9056839673611986238">ਡੀਵਾਈਸ ਨੂੰ ਪਿਛਲੇ ਵਰਜਨ 'ਤੇ ਵਾਪਸ ਲਿਆਇਆ ਜਾਵੇਗਾ</translation> <translation id="9065203028668620118">ਸੰਪਾਦਿਤ ਕਰੋ</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb index ff8ba36..6e9bded0 100644 --- a/ash/strings/ash_strings_pl.xtb +++ b/ash/strings/ash_strings_pl.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asystent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Ustaw język</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Zablokuj ekran</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Cześć <ph name="USERNAME" />,</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Przełącz funkcję <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Przesuwanie kursora</translation> <translation id="3098580329624789136">Zobacz: <ph name="INTENT" /> dla zapytania „<ph name="QUERY" />”</translation> +<translation id="3105917916468784889">Zapisz zrzut ekranu</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Uruchom ponownie i zaktualizuj</translation> <translation id="3139942575505304791">Biurko 1</translation> -<translation id="3147157020428159854">Nagrywanie ekranu zostało zatrzymane</translation> <translation id="315116470104423982">Mobilna transmisja danych</translation> <translation id="3151786313568798007">Orientacja</translation> <translation id="3153444934357957346">W wielokrotnym logowaniu nie możesz mieć więcej kont niż <ph name="MULTI_PROFILE_USER_LIMIT" />.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Wyczyść wszystkie powiadomienia (<ph name="COUNT" />)</translation> <translation id="4302592941791324970">Brak dostępu</translation> <translation id="4303223480529385476">Rozwiń pasek stanu</translation> -<translation id="4315586716182276649">Udostępniaj połączenie telefonu z internetem, steruj funkcją Nie przeszkadzać i lokalizuj swoje urządzenie. Przeglądaj na urządzeniu <ph name="DEVICE_TYPE" /> karty Chrome otwarte na telefonie.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Naciśnięto skrót klawiszowy wysokiego kontrastu. Czy chcesz go włączyć?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Zaloguj się, używając karty elektronicznej</translation> <translation id="6059276912018042191">Ostatnio przeglądane karty Chrome</translation> <translation id="6062360702481658777">Zostaniesz automatycznie wylogowany za <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Zatrzymaj nagrywanie</translation> <translation id="607652042414456612">Twój komputer jest wykrywalny na urządzenia Bluetooth znajdujących się w pobliżu. Będzie prezentowany jako „<ph name="NAME" />” z adresem <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Asystent Google jest niedostępny w sesji gościa.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Naciśnij i przytrzymaj przez pięć sekund oba klawisze głośności, by wyłączyć komunikaty głosowe.</translation> <translation id="7658239707568436148">Anuluj</translation> <translation id="7662283695561029522">Kliknij, by skonfigurować</translation> -<translation id="7683326293741220026">Wygląda na to, że Bluetooth na Twoim telefonie jest wyłączony. Włącz go, by korzystać ze sterowania telefonem.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 powiadomienie}few{# powiadomienia}many{# powiadomień}other{# powiadomienia}}</translation> <translation id="7724603315864178912">Wytnij</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Obliczanie czasu pracy na baterii.</translation> <translation id="8061464966246066292">Wysoki kontrast</translation> <translation id="8098591350844501178">Zakończ przesyłanie ekranu do: <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Udostępniaj połączenie telefonu z internetem, steruj funkcją Nie przeszkadzać i lokalizuj swój telefon. Przeglądaj na urządzeniu <ph name="DEVICE_TYPE" /> karty Chrome otwarte na telefonie.</translation> <translation id="8113423164597455979">Włączono (wszystkie aplikacje)</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation> <translation id="8131740175452115882">Potwierdź</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> nie obsługuje ustawienia <ph name="SPECIFIED_RESOLUTION" />. Rozdzielczość została zmieniona na <ph name="FALLBACK_RESOLUTION" />. Kliknij „Potwierdź”, by zachować zmiany. Poprzednie ustawienia zostaną przywrócone za <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Autoobracanie</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> nie może się ładować, gdy jest włączony.</translation> +<translation id="8553395910833293175">Już przypisano do wszystkich biurek.</translation> <translation id="8563862697512465947">Ustawienia powiadomień</translation> <translation id="857201607579416096">Menu zostało przeniesione w prawy dolny róg ekranu.</translation> <translation id="8594115950068821369">–<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">W użyciu jest <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Odblokuj urządzenie jako <ph name="LOGIN_ID" />, by zareagować na powiadomienie</translation> <translation id="9017320285115481645">Wpisz kod dostępu rodzica w Family Link.</translation> +<translation id="9024331582947483881">pełny ekran</translation> <translation id="9047624247355796468">Otwórz ustawienia sieci <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Na urządzeniu zostanie przywrócona wcześniejsza wersja oprogramowania</translation> <translation id="9065203028668620118">Edytuj</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb index 878b187..0dbc827 100644 --- a/ash/strings/ash_strings_pt-BR.xtb +++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistente</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Configurar idioma</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Tela de bloqueio</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Olá, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Alternar o recurso <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Mover cursor</translation> <translation id="3098580329624789136">Veja a <ph name="INTENT" /> de "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Faça uma captura de tela</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Reiniciar para atualizar</translation> <translation id="3139942575505304791">Espaço de trabalho 1</translation> -<translation id="3147157020428159854">Gravação de tela interrompida</translation> <translation id="315116470104423982">Dados do celular</translation> <translation id="3151786313568798007">Orientação</translation> <translation id="3153444934357957346">Só é possível ter até <ph name="MULTI_PROFILE_USER_LIMIT" /> contas em login múltiplo.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Limpar todas as <ph name="COUNT" /> notificações</translation> <translation id="4302592941791324970">Indisponível</translation> <translation id="4303223480529385476">Expandir área de status</translation> -<translation id="4315586716182276649">Amplie a conexão de Internet do smartphone, controle o recurso Não perturbe e localize seu dispositivo. Veja as guias do Chrome ativas no smartphone pelo seu <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Você pressionou o atalho de teclado para o alto contraste. Gostaria de ativá-lo?</translation> <translation id="4331809312908958774">Sistema operacional Chrome</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Fazer login com cartão inteligente</translation> <translation id="6059276912018042191">Guias recentes do Chrome</translation> <translation id="6062360702481658777">Você sairá automaticamente em <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Parar de gravar</translation> <translation id="607652042414456612">Seu computador pode ser detectado por dispositivos Bluetooth próximos e aparecerá como "<ph name="NAME" />", com o endereço <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">O Google Assistente não está disponível em uma sessão de visitante.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Pressione as duas teclas de volumes e as mantenha pressionadas por cinco segundos para desativar o feedback falado.</translation> <translation id="7658239707568436148">Cancelar</translation> <translation id="7662283695561029522">Toque para configurar</translation> -<translation id="7683326293741220026">Parece que o Bluetooth está desativado no seu smartphone. Ative-o para usar o recurso Seu smartphone.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificação}one{# notificação}other{# notificações}}</translation> <translation id="7724603315864178912">Recortar</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Calculando duração da bateria.</translation> <translation id="8061464966246066292">Alto contraste</translation> <translation id="8098591350844501178">Parar de transmitir tela para <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Amplie a conexão de Internet do smartphone, controle o recurso Não perturbe e localize seu dispositivo. Veja as guias do Chrome ativas no smartphone pelo seu <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Ativ. nos apps</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Confirmar</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> não é compatível com <ph name="SPECIFIED_RESOLUTION" />. A resolução foi modificada para <ph name="FALLBACK_RESOLUTION" />. Clique em "Confirmar" para manter as mudanças. As configurações anteriores serão restauradas em <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Girar automat.</translation> <translation id="8517041960877371778">Seu <ph name="DEVICE_TYPE" /> pode não ser carregado enquanto estiver ligado.</translation> +<translation id="8553395910833293175">Já atribuído a todos os espaços de trabalho.</translation> <translation id="8563862697512465947">Configurações de notificação</translation> <translation id="857201607579416096">O menu foi movido para o canto inferior direito da tela.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590">Usando <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Desbloqueie o dispositivo com a conta <ph name="LOGIN_ID" /> para executar a ação de notificação</translation> <translation id="9017320285115481645">Insira o código de acesso de pai/mãe do Family Link.</translation> +<translation id="9024331582947483881">tela cheia</translation> <translation id="9047624247355796468">Abrir configurações de <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">O dispositivo será revertido</translation> <translation id="9065203028668620118">Editar</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb index 83b3a1f..0f3c42f 100644 --- a/ash/strings/ash_strings_pt-PT.xtb +++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistente</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Definir o idioma</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Bloqueio de Ecrã</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Olá, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Ative/desative a funcionalidade <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Mover o cursor</translation> <translation id="3098580329624789136">Obtenha a intenção <ph name="INTENT" /> de "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Tirar captura de ecrã</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Reiniciar para atualizar</translation> <translation id="3139942575505304791">Secretária 1</translation> -<translation id="3147157020428159854">Gravação de ecrã parada</translation> <translation id="315116470104423982">Dados móveis</translation> <translation id="3151786313568798007">Orientação</translation> <translation id="3153444934357957346">Apenas pode ter, no máximo, <ph name="MULTI_PROFILE_USER_LIMIT" /> contas no início de sessão integrado.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Limpar todas as <ph name="COUNT" /> notificações</translation> <translation id="4302592941791324970">Não disponível</translation> <translation id="4303223480529385476">Expandir área de estado</translation> -<translation id="4315586716182276649">Expanda a ligação à Internet do telemóvel, controle a funcionalidade Não incomodar e localize o dispositivo. Veja os separadores do Chrome ativos a partir do telemóvel no <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Premiu o atalho de teclado de alto contraste. Pretende ativá-lo?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Iniciar sessão com cartão inteligente</translation> <translation id="6059276912018042191">Separadores do Chrome recentes</translation> <translation id="6062360702481658777">A sessão será terminada automaticamente dentro de <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Parar gravação</translation> <translation id="607652042414456612">O seu computador é detetável para os dispositivos Bluetooth nas proximidades e aparecerá como "<ph name="NAME" />" com o endereço <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">O Assistente Google não está disponível em sessões de convidado.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Prima sem soltar ambas as teclas de volume durante cinco segundos para desativar os feedback de voz.</translation> <translation id="7658239707568436148">Cancelar</translation> <translation id="7662283695561029522">Toque para configurar</translation> -<translation id="7683326293741220026">O Bluetooth está desativado no seu telemóvel. Ative o Bluetooth no seu telemóvel para utilizar o Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificação}other{# notificações}}</translation> <translation id="7724603315864178912">Cortar</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">A calcular tempo da bateria.</translation> <translation id="8061464966246066292">Alto contraste</translation> <translation id="8098591350844501178">Parar a transmissão do ecrã para <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Expanda a ligação à Internet do telemóvel, controle a funcionalidade Não incomodar e localize o telemóvel. Veja os separadores do Chrome ativos a partir do telemóvel no <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Ativado, todas as aplicações</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Confirmar</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069">O <ph name="DISPLAY_NAME" /> não suporta a resolução <ph name="SPECIFIED_RESOLUTION" />. A resolução foi alterada para <ph name="FALLBACK_RESOLUTION" />. Clique em confirmar para manter as alterações. As definições anteriores serão restauradas dentro de <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Rotação auto.</translation> <translation id="8517041960877371778">O <ph name="DEVICE_TYPE" /> pode não carregar enquanto estiver ligado.</translation> +<translation id="8553395910833293175">Já atribuído a todos os espaços de trabalho.</translation> <translation id="8563862697512465947">Definições de notificação</translation> <translation id="857201607579416096">O menu foi movido para o canto inferior direito do ecrã.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">A utilizar <ph name="IME_NAME" />…</translation> <translation id="899350903320462459">Desbloqueie o dispositivo como <ph name="LOGIN_ID" /> para realizar a ação de notificação.</translation> <translation id="9017320285115481645">Introduza o código de acesso parental do Family Link.</translation> +<translation id="9024331582947483881">ecrã inteiro</translation> <translation id="9047624247355796468">Abrir as definições de <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">O dispositivo voltará à versão anterior</translation> <translation id="9065203028668620118">Editar</translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb index eb5f0e1..f224f76b 100644 --- a/ash/strings/ash_strings_ro.xtb +++ b/ash/strings/ash_strings_ro.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Setează limba</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Ecran de blocare</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Bună ziua, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Activează/dezactivează <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Mută cursorul</translation> <translation id="3098580329624789136">Solicită <ph name="INTENT" /> pentru „<ph name="QUERY" />”</translation> +<translation id="3105917916468784889">Realizează o captură de ecran</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Reporniți pentru a actualiza</translation> <translation id="3139942575505304791">Desktop 1</translation> -<translation id="3147157020428159854">Înregistrarea ecranului a fost oprită</translation> <translation id="315116470104423982">Date mobile</translation> <translation id="3151786313568798007">Orientare</translation> <translation id="3153444934357957346">Conectarea multiplă acceptă maximum <ph name="MULTI_PROFILE_USER_LIMIT" /> conturi.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Șterge toate cele <ph name="COUNT" /> notificări</translation> <translation id="4302592941791324970">Indisponibilă</translation> <translation id="4303223480529385476">Extinde zona de stare</translation> -<translation id="4315586716182276649">Extinde conexiunea la internet a telefonului, gestionează funcția Nu deranja și localizează dispozitivul. Vezi filele Chrome active de pe telefon pe <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Ai accesat comanda rapidă de la tastatură pentru contrast ridicat. Vrei să-l activezi?</translation> <translation id="4331809312908958774">Sistemul de operare Chrome</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Conectează-te cu cardul inteligent</translation> <translation id="6059276912018042191">File Chrome recente</translation> <translation id="6062360702481658777">Veți fi deconectat(ă) automat peste <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Oprește înregistrarea</translation> <translation id="607652042414456612">Computerul poate fi detectat de dispozitivele Bluetooth din apropiere și va apărea ca „<ph name="NAME" />” cu adresa <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Asistentul Google nu este disponibil într-o sesiune pentru invitați.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Apasă lung ambele taste de volum timp de cinci secunde ca să dezactivezi feedbackul rostit.</translation> <translation id="7658239707568436148">Anulează</translation> <translation id="7662283695561029522">Atinge pentru a configura</translation> -<translation id="7683326293741220026">Se pare că funcția Bluetooth este dezactivată pe telefon. Activează Bluetooth pe telefon pentru a folosi Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{O notificare}few{# notificări}other{# de notificări}}</translation> <translation id="7724603315864178912">Decupează</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Se calculează durata bateriei.</translation> <translation id="8061464966246066292">Contrast ridicat</translation> <translation id="8098591350844501178">Nu mai proiecta ecranul pe dispozitivul <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Extinde conexiunea la internet a telefonului, gestionează funcția Nu deranja și localizează telefonul. Vezi filele Chrome active de pe telefon pe <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Activat, toate</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Confirmați</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> nu acceptă <ph name="SPECIFIED_RESOLUTION" />. Rezoluția a fost modificată la <ph name="FALLBACK_RESOLUTION" />. Dă clic pe Confirmă pentru a păstra modificările. Setările anterioare vor fi restabilite în <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Rotire autom.</translation> <translation id="8517041960877371778">Este posibil ca <ph name="DEVICE_TYPE" /> să nu se încarce cât timp este pornit.</translation> +<translation id="8553395910833293175">A fost deja atribuită tuturor desktopurilor.</translation> <translation id="8563862697512465947">Setări de notificare</translation> <translation id="857201607579416096">Meniul a fost mutat în colțul din dreapta jos al ecranului.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Se folosește <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Deblochează dispozitivul ca <ph name="LOGIN_ID" /> pentru efectuarea acțiunii de notificare</translation> <translation id="9017320285115481645">Introdu codul de acces parental pentru Family Link.</translation> +<translation id="9024331582947483881">ecran complet</translation> <translation id="9047624247355796468">Deschide setările pentru <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">SO de pe dispozitiv va fi adus la o versiune anterioară</translation> <translation id="9065203028668620118">Editează</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb index e11365d6..6a11c13 100644 --- a/ash/strings/ash_strings_ru.xtb +++ b/ash/strings/ash_strings_ru.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Ассистент</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Выберите язык</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Блокировать экран</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Здравствуйте, <ph name="USERNAME" />!</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Включить или отключить функцию "<ph name="FEATURE_NAME" />". <ph name="STATE_TEXT" />.</translation> <translation id="309749186376891736">Перемещение курсора</translation> <translation id="3098580329624789136">Как <ph name="INTENT" /> "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Скриншот</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Перезагрузите, чтобы обновить</translation> <translation id="3139942575505304791">Рабочий стол 1</translation> -<translation id="3147157020428159854">Запись видео с экрана остановлена</translation> <translation id="315116470104423982">Мобильное подключение</translation> <translation id="3151786313568798007">Ориентация</translation> <translation id="3153444934357957346">Для множественного входа можно использовать не более <ph name="MULTI_PROFILE_USER_LIMIT" /> аккаунтов.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Удалить все уведомления: <ph name="COUNT" /></translation> <translation id="4302592941791324970">Недоступно</translation> <translation id="4303223480529385476">Развернуть панель состояния</translation> -<translation id="4315586716182276649">Подключайтесь к мобильному Интернету, управляйте функцией "Не беспокоить" и определяйте местоположение устройства. Просматривайте на устройстве <ph name="DEVICE_TYPE" /> вкладки, открытые в браузере Chrome на телефоне.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Вы нажали сочетание клавиш для включения режима высокой контрастности. Выполнить это действие?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Войти с помощью смарт-карты</translation> <translation id="6059276912018042191">Недавние вкладки в Chrome</translation> <translation id="6062360702481658777">Выход из системы будет выполнен автоматически через <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Остановить запись</translation> <translation id="607652042414456612">Расположенные поблизости устройства Bluetooth видят ваш компьютер под именем <ph name="NAME" /> с адресом <ph name="ADDRESS" />.</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" />.</translation> <translation id="612734058257491180">В рамках гостевого сеанса Google Ассистент недоступен.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Чтобы отключить озвучивание текста на экране, удерживайте обе кнопки громкости в течение пяти секунд.</translation> <translation id="7658239707568436148">Отмена</translation> <translation id="7662283695561029522">Нажмите, чтобы настроить.</translation> -<translation id="7683326293741220026">Включите Bluetooth на телефоне, чтобы использовать функцию "Управление телефоном".</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 уведомление}one{# уведомление}few{# уведомления}many{# уведомлений}other{# уведомления}}</translation> <translation id="7724603315864178912">Вырезать</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Подсчет оставшегося времени работы от батареи…</translation> <translation id="8061464966246066292">Высокая контрастность</translation> <translation id="8098591350844501178">Остановить трансляцию содержимого экрана на устройство "<ph name="RECEIVER_NAME" />"</translation> -<translation id="8108657971283652031">Подключайтесь к мобильному Интернету, управляйте функцией "Не беспокоить" и определяйте местоположение телефона. Просматривайте на устройстве <ph name="DEVICE_TYPE" /> вкладки, открытые в браузере Chrome на телефоне.</translation> <translation id="8113423164597455979">Вкл. для всех</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Подтвердить</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> не поддерживает разрешение <ph name="SPECIFIED_RESOLUTION" />. Установлено разрешение <ph name="FALLBACK_RESOLUTION" />. Чтобы сохранить изменения, нажмите "Подтвердить". Предыдущие настройки восстановятся через <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Автоповорот</translation> <translation id="8517041960877371778">Не удается зарядить устройство <ph name="DEVICE_TYPE" />, пока оно включено.</translation> +<translation id="8553395910833293175">Уже доступно на всех рабочих столах.</translation> <translation id="8563862697512465947">Настройки оповещений</translation> <translation id="857201607579416096">Меню перемещено в правый нижний угол экрана.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Используется <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Чтобы выполнить действие, предложенное в уведомлении, разблокируйте устройство с помощью аккаунта <ph name="LOGIN_ID" />.</translation> <translation id="9017320285115481645">Введите родительский код доступа Family Link.</translation> +<translation id="9024331582947483881">полноэкранный режим</translation> <translation id="9047624247355796468">Открыть настройки сети "<ph name="NETWORK_NAME" />"</translation> <translation id="9056839673611986238">Система на устройстве будет возвращена к предыдущей версии</translation> <translation id="9065203028668620118">Изменить</translation>
diff --git a/ash/strings/ash_strings_si.xtb b/ash/strings/ash_strings_si.xtb index af25beb..4b11421 100644 --- a/ash/strings/ash_strings_si.xtb +++ b/ash/strings/ash_strings_si.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">සහායක</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">ඔබේ භාෂාව සකසන්න</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">අගුලු තිරය</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">ආයුබෝවන්, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> ටොගල් කරන්න. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">කර්සරය එහා මෙහා කරන්න</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" සඳහා <ph name="INTENT" /> ලබා ගන්න</translation> +<translation id="3105917916468784889">තිරපිටපත් ගන්න</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">යාවත්කාලීන කිරීමට නැවත් පණගන්වන්න</translation> <translation id="3139942575505304791">1 වෙනි මේසය</translation> -<translation id="3147157020428159854">තිර පටිගත කිරීම නතර විය</translation> <translation id="315116470104423982">ජංගම දත්ත</translation> <translation id="3151786313568798007">දිශානතිය</translation> <translation id="3153444934357957346">ඔබට බහුවිධ පිරීමෙහි ගිණුම් <ph name="MULTI_PROFILE_USER_LIMIT" />ක් දක්වා පමණක් තිබිය හැකිය.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">සියලුම <ph name="COUNT" /> දැනුම්දීම් හිස් කරන්න</translation> <translation id="4302592941791324970">නොමැත</translation> <translation id="4303223480529385476">තත්ත්ව ප්රදේශය දිග හරින්න</translation> -<translation id="4315586716182276649">ඔබගේ දුරකථනයේ අන්තර්ජාල සබැඳුම පුළුල් කරන්න, බාධා නොකරන්න සහ ඔබගේ උපාංගය තිබෙන තැන සොයා ගන්න පාලනය කරන්න. ඔබගේ <ph name="DEVICE_TYPE" /> හි ඔබගේ දුරකථනය වෙතින් සක්රිය Chrome ටැබ බලන්න.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">ඔබ අධිවිභේදනය සඳහා යතුරුපුවරු කෙටිමඟ ඔබා ඇත. ඔබට එය සක්රීය කළ යුතුද?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">ස්මාර්ට් කාඩ්පත සමඟ පුරන්න</translation> <translation id="6059276912018042191">මෑත Chrome ටැබ</translation> <translation id="6062360702481658777"><ph name="LOGOUT_TIME_LEFT" /> තුළ ඔබව ස්වයංක්රියව වරනු ඇත.</translation> +<translation id="6073451960410192870">පටිගත කිරීම නැවැත්වීම</translation> <translation id="607652042414456612">අවට ඇති Bluetooth උපාංග සඳහා ඔබේ පරිගණකය "<ph name="NAME" />" ලෙස <ph name="ADDRESS" /> ලිපිනය භාවිතයෙන් දිස්වනු ඇත</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">ආගන්තුක සැසියකදී Google සහකරු නොලැබේ.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">කථන ප්රතිපෝෂණය අබල කිරීම සඳහා ශබ්ද යතුරු දෙකම තත්පර 5 කට ඔබා සිටින්න.</translation> <translation id="7658239707568436148">අවලංගු කරන්න</translation> <translation id="7662283695561029522">වින්යාස කිරීමට තට්ටු කරන්න</translation> -<translation id="7683326293741220026">ඔබගේ දුරකථනයේ බ්ලූටූත් ක්රියාවිරහිත කර ඇති බව පෙනේ. Phone Hub භාවිත කිරීමට කරුණාකර ඔබගේ දුරකථනයේ බ්ලූටූත් ක්රියාත්මක කරන්න.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{දැනුම්දීම් 1ක්}one{දැනුම්දීම් #ක්}other{දැනුම්දීම් #ක්}}</translation> <translation id="7724603315864178912">කැපීම</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">බැටරි කාලය ගණනය කරමින්.</translation> <translation id="8061464966246066292">අධිවිභේදනය</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" /> වෙත තිරය විකාශය නවතන්න</translation> -<translation id="8108657971283652031">ඔබගේ දුරකථනයේ අන්තර්ජාල සබැඳුම පුළුල් කරන්න, බාධා නොකරන්න සහ ඔබගේ දුරකථනය තිබෙන තැන සොයා ගන්න පාලනය කරන්න. ඔබගේ <ph name="DEVICE_TYPE" /> හි ඔබගේ දුරකථනය වෙතින් සක්රිය Chrome ටැබ බලන්න.</translation> <translation id="8113423164597455979">සියලු යෙදුම් සක්රිය.</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">තහවුරු කරන්න</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> <ph name="SPECIFIED_RESOLUTION" /> හට සහය නොදක්වයි. විභේදනය <ph name="FALLBACK_RESOLUTION" /> ට වෙනස් විය. වෙනස්කම් තබා ගැනීමට තහවුරු කිරීම ක්ලික් කරන්න. පෙර සැකසුම් <ph name="TIMEOUT_SECONDS" /> තුළ ප්රතිසාධන කෙරේ.</translation> <translation id="8513108775083588393">ස්වයංක්රීය කරකැවීම</translation> <translation id="8517041960877371778">ඔබගේ <ph name="DEVICE_TYPE" /> සක්රියව පවතින විට එය ආරෝපණය නොවනු ඇත.</translation> +<translation id="8553395910833293175">සියලු මේස වෙත දැනටමත් පවරා ඇත.</translation> <translation id="8563862697512465947">දැනුම්දීම් සැකසීම්</translation> <translation id="857201607579416096">මෙනුව තිරයේ පහළ දකුණු කොණට ගෙන ගියා.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> භාවිත කිරීම</translation> <translation id="899350903320462459">ක්රියාකාරකම් දැනුම්දීම ඉටු කිරීමට, <ph name="LOGIN_ID" /> ලෙස උපාංගය අගුළු අරින්න</translation> <translation id="9017320285115481645">Family Link මාපිය ප්රවේශ්ය කේතය ඇතුළත් කරන්න.</translation> +<translation id="9024331582947483881">පූර්ණ තිරය</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> සඳහ සැකසීම් විවෘත කරන්න</translation> <translation id="9056839673611986238">උපාංගය ආපසු පෙරළෙනු ඇත</translation> <translation id="9065203028668620118">සංස්කරණය කරන්න</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb index 37c479e..107f48e 100644 --- a/ash/strings/ash_strings_sk.xtb +++ b/ash/strings/ash_strings_sk.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Nastavenie jazyka</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Uzamknúť obrazovku</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Dobrý deň, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Prepnúť funkciu <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Presunúť kurzor</translation> <translation id="3098580329624789136">Získajte <ph name="INTENT" /> pre dopyt <ph name="QUERY" /></translation> +<translation id="3105917916468784889">Nasnímať obrazovku</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Reštartovaním vykonáte aktualizáciu</translation> <translation id="3139942575505304791">1. plocha</translation> -<translation id="3147157020428159854">Nahrávanie obrazovky bolo zastavené</translation> <translation id="315116470104423982">Mobilné dátové prenosy</translation> <translation id="3151786313568798007">Orientácia</translation> <translation id="3153444934357957346">V rámci viacnásobného prihlásenia môžete mať maximálne nasledujúci počet účtov: <ph name="MULTI_PROFILE_USER_LIMIT" />.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Vymazať všetky upozornenia (počet: <ph name="COUNT" />)</translation> <translation id="4302592941791324970">Nie je k dispozícii</translation> <translation id="4303223480529385476">Rozbaliť stavovú oblasť</translation> -<translation id="4315586716182276649">Rozšírte internetové pripojenie telefónu, ovládajte režim bez vyrušení a lokalizujte svoje zariadenie. Zobrazte si v zariadení <ph name="DEVICE_TYPE" /> aktívne karty Chromu z telefónu.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Stlačili ste klávesovú skratku pre vysoký kontrast. Chcete ho zapnúť?</translation> <translation id="4331809312908958774">OS Chrome</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Prihlásiť sa pomocou inteligentnej karty</translation> <translation id="6059276912018042191">Nedávne karty Chromu</translation> <translation id="6062360702481658777">Odhlásenie prebehne automaticky o <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Zastaviť zaznamenávanie</translation> <translation id="607652042414456612">Váš počítač je viditeľný pre zariadenia Bluetooth v blízkosti a zobrazí sa ako <ph name="NAME" /> s adresou <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Asistent Google nie je k dispozícii v relácii hosťa.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Ak chcete deaktivovať hovorenú spätnú väzbu, pridržte päť sekúnd obidva klávesy hlasitosti.</translation> <translation id="7658239707568436148">Zrušiť</translation> <translation id="7662283695561029522">Klepnutím spustíte konfiguráciu</translation> -<translation id="7683326293741220026">Rozhranie Bluetooth je v telefóne zrejme vypnuté. Ak chcete používať Telefónne centrum, zapnite ho.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 upozornenie}few{# upozornenia}many{# notifications}other{# upozornení}}</translation> <translation id="7724603315864178912">Vystrihnúť</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Výpočet času výdrže batérie.</translation> <translation id="8061464966246066292">Vysoký kontrast</translation> <translation id="8098591350844501178">Zastaviť prenos obrazovky do zariadenia <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Predĺžte internetové pripojenie telefónu, ovládajte režim bez vyrušení a lokalizujte svoj telefón. Zobrazte si v zariadení <ph name="DEVICE_TYPE" /> aktívne karty Chromu z telefónu.</translation> <translation id="8113423164597455979">Zap., vš. apl.</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Potvrdiť</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> nepodporuje rozlíšenie <ph name="SPECIFIED_RESOLUTION" />. Preto bolo zmenené na <ph name="FALLBACK_RESOLUTION" />. Zmeny ponecháte kliknutím na Potvrdiť. Predchádzajúce nastavenia budú obnovené o <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Aut. otáčanie</translation> <translation id="8517041960877371778">Vaše zariadenie <ph name="DEVICE_TYPE" /> sa nemusí nabíjať, keď je zapnuté.</translation> +<translation id="8553395910833293175">Už bolo pridelené všetkým plochám.</translation> <translation id="8563862697512465947">Nastavenia upozornení</translation> <translation id="857201607579416096">Ponuka bola presunutá do pravého dolného rohu obrazovky.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Práve sa používa <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Ak chcete vykonať akciu s upozornením, odomknite zariadenie ako <ph name="LOGIN_ID" /></translation> <translation id="9017320285115481645">Zadajte prístupový kód rodiča Family Link.</translation> +<translation id="9024331582947483881">celá obrazovka</translation> <translation id="9047624247355796468">Otvoriť nastavenia siete <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Zariadenie sa obnoví</translation> <translation id="9065203028668620118">Upraviť</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb index 2661c95..73f4cc1e 100644 --- a/ash/strings/ash_strings_sl.xtb +++ b/ash/strings/ash_strings_sl.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Pomočnik</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Nastavitev jezika</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Zakleni zaslon</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Pozdravljeni, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Preklop funkcije <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Premik kazalca</translation> <translation id="3098580329624789136">Pridobivanje namena <ph name="INTENT" /> za »<ph name="QUERY" />«</translation> +<translation id="3105917916468784889">Izdelava posnetka zaslona</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Znova zaženite za posodobitev</translation> <translation id="3139942575505304791">Namizje 1</translation> -<translation id="3147157020428159854">Snemanje zaslona je ustavljeno</translation> <translation id="315116470104423982">Prenos podatkov v mobilnih omrežjih</translation> <translation id="3151786313568798007">Usmerjenost</translation> <translation id="3153444934357957346">S prijavo z več računi lahko uporabljate največ toliko računov: <ph name="MULTI_PROFILE_USER_LIMIT" />.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Izbris vseh <ph name="COUNT" /> obvestil</translation> <translation id="4302592941791324970">Ni na voljo</translation> <translation id="4303223480529385476">Razširitev območja stanja</translation> -<translation id="4315586716182276649">Razširite internetno povezavo telefona, upravljajte način Ne moti in poiščite napravo. Aktivne Chromove zavihke iz telefona si lahko ogledate v napravi <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Pritisnili ste bližnjično tipko za visoki kontrast. Ali ga želite vklopiti?</translation> <translation id="4331809312908958774">OS Chrome</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Prijava s pametno kartico</translation> <translation id="6059276912018042191">Nedavni Chromovi zavihki</translation> <translation id="6062360702481658777">Samodejno boste odjavljeni čez <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Ustavi snemanje</translation> <translation id="607652042414456612">Vaš računalnik je viden bližnjim napravam Bluetooth in bo videti kot »<ph name="NAME" />« z naslovom <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" />.</translation> <translation id="612734058257491180">Pomočnik Google ni na voljo v gostujoči seji.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Če želite onemogočiti glasovni odziv, pridržite obe tipki za glasnost za pet sekund.</translation> <translation id="7658239707568436148">Prekliči</translation> <translation id="7662283695561029522">Dotaknite se, če želite konfigurirati</translation> -<translation id="7683326293741220026">Videti je, da je v telefonu izklopljen Bluetooth. Če želite uporabljati telefonsko središče, v telefonu vklopite Bluetooth.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 obvestilo}one{# obvestilo}two{# obvestili}few{# obvestila}other{# obvestil}}</translation> <translation id="7724603315864178912">Izreži</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Izračunavanje časa trajanja akumulatorja.</translation> <translation id="8061464966246066292">Visok kontrast</translation> <translation id="8098591350844501178">Ustavi predvajanje zaslona v napravi <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Razširite internetno povezavo telefona, upravljajte način Ne moti in poiščite telefon. Aktivne Chromove zavihke iz telefona si lahko ogledate v napravi <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Vklop. za vse</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Potrdi</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069">Zaslon <ph name="DISPLAY_NAME" /> ne podpira te ločljivosti: <ph name="SPECIFIED_RESOLUTION" />. Ločljivost je bila spremenjena na: <ph name="FALLBACK_RESOLUTION" />. Kliknite »Potrdi«, če želite ohraniti spremembe. Prejšnja nastavitev bo obnovljena čez <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Samodej. zasuk</translation> <translation id="8517041960877371778">Akumulator naprave <ph name="DEVICE_TYPE" /> se morda ne bo polnil, medtem ko je naprava vklopljena.</translation> +<translation id="8553395910833293175">Že dodeljeno vsem namizjem.</translation> <translation id="8563862697512465947">Nastavitve obvestil</translation> <translation id="857201607579416096">Meni je bil premaknjen v spodnji desni kot zaslona.</translation> <translation id="8594115950068821369">–<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Uporaba tega: <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Odklenite napravo kot <ph name="LOGIN_ID" />, da izvedete dejanje v obvestilu</translation> <translation id="9017320285115481645">Vnesite kodo za dostop starša za Family Link.</translation> +<translation id="9024331582947483881">celozaslonski način</translation> <translation id="9047624247355796468">Odpri nastavitve za <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Naprava bo povrnjena na prejšnjo različico</translation> <translation id="9065203028668620118">Uredi</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb index f38db102..41e06dd9 100644 --- a/ash/strings/ash_strings_sq.xtb +++ b/ash/strings/ash_strings_sq.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asistenti</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Vendos gjuhën</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Ekrani i kyçjes</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Përshëndetje, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Aktivizo/çaktivizo <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Zhvendos kursorin</translation> <translation id="3098580329624789136">Merr <ph name="INTENT" /> për "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Nxirr një pamje të ekranit</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Rifillo për të përditësuar</translation> <translation id="3139942575505304791">Tavolina e punës 1</translation> -<translation id="3147157020428159854">Regjistrimi i ekranit ka ndaluar</translation> <translation id="315116470104423982">Të dhëna celulare</translation> <translation id="3151786313568798007">Orientimi</translation> <translation id="3153444934357957346">Mund të kesh vetëm deri në <ph name="MULTI_PROFILE_USER_LIMIT" /> llogari në identifikimin e shumëfishtë.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Pastro të <ph name="COUNT" /> njoftimet</translation> <translation id="4302592941791324970">Nuk ofrohet</translation> <translation id="4303223480529385476">Zgjero zonën e statusit</translation> -<translation id="4315586716182276649">Zgjero lidhjen e internetit të telefonit tënd, kontrollo "Mos shqetëso" dhe gjej pajisjen tënde. Shiko skedat aktive të Chrome nga telefoni yt në pajisjen tënde <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Ke shtypur shkurtoren e tastierës për kontrastin e lartë. Dëshiron ta aktivizosh?</translation> <translation id="4331809312908958774">Sistemi operativ Chrome</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Identifikohu me kartën smart</translation> <translation id="6059276912018042191">Skedat e fundit të Chrome</translation> <translation id="6062360702481658777">Do të dalësh automatikisht për <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Ndalo regjistrimin</translation> <translation id="607652042414456612">Kompjuteri është i zbulueshëm për pajisjet me Bluetooth në afërsi dhe do të shfaqet si "<ph name="NAME" />" me adresën <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">"Asistenti i Google" nuk ofrohet në një sesion për vizitorët.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Shtyp dhe mbaj të dy butonat e volumit për pesë sekonda për të çaktivizuar komentet me zë.</translation> <translation id="7658239707568436148">Anulo</translation> <translation id="7662283695561029522">Trokit për të konfiguruar</translation> -<translation id="7683326293741220026">Me sa duket Bluetooth-i është çaktivizuar në telefonin tënd. Aktivizo Bluetooth-in në telefon për të përdorur Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 njoftim}other{# njoftime}}</translation> <translation id="7724603315864178912">Prite</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Po llogarit kohën e baterisë.</translation> <translation id="8061464966246066292">Kontrast i lartë</translation> <translation id="8098591350844501178">Ndalo transmetimin e ekranit te <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Zgjero lidhjen e internetit të telefonit tënd, kontrollo "Mos shqetëso" dhe gjej telefonin tënd. Shiko skedat aktive të Chrome nga telefoni yt në pajisjen tënde <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Aktiv, të gjitha aplikacionet</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Konfirmo</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> nuk e mbështet <ph name="SPECIFIED_RESOLUTION" />. Rezolucioni është ndryshuar në <ph name="FALLBACK_RESOLUTION" />. Kliko te "Konfirmo" për t'i mbajtur ndryshimet. Cilësimet e mëparshme do të restaurohen për <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Autorrotullim</translation> <translation id="8517041960877371778">Pajisja jote <ph name="DEVICE_TYPE" /> mund të mos ngarkohet kur është e ndezur.</translation> +<translation id="8553395910833293175">Është caktuar tashmë te të gjitha tavolinat e punës.</translation> <translation id="8563862697512465947">Cilësimet e njoftimeve</translation> <translation id="857201607579416096">Menyja u zhvendos në këndin poshtë djathtas të ekranit.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Po përdor <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Shkyç pajisjen si <ph name="LOGIN_ID" /> për të kryer veprimin e njoftimit</translation> <translation id="9017320285115481645">Fut kodin e qasjes së prindit për Family Link</translation> +<translation id="9024331582947483881">ekrani i plotë</translation> <translation id="9047624247355796468">Hap cilësimet për <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Pajisja do të kthehet prapa</translation> <translation id="9065203028668620118">Redakto</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb index 072fbd8..bef9a407 100644 --- a/ash/strings/ash_strings_sr-Latn.xtb +++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Pomoćnik</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Podesite jezik</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Zaključaj ekran</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Zdravo, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Uključite/isključite funkciju <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Pomerite kursor</translation> <translation id="3098580329624789136">Potražite <ph name="INTENT" /> za „<ph name="QUERY" />“</translation> +<translation id="3105917916468784889">Snimi ekran</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Pokrenite ponovo da biste ažurirali</translation> <translation id="3139942575505304791">Radna površina 1</translation> -<translation id="3147157020428159854">Snimanje ekrana je zaustavljeno</translation> <translation id="315116470104423982">Mobilni podaci</translation> <translation id="3151786313568798007">Položaj</translation> <translation id="3153444934357957346">Možete da imate najviše <ph name="MULTI_PROFILE_USER_LIMIT" /> naloga za višestruko prijavljivanje.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Obrišite sva obaveštenja (<ph name="COUNT" />)</translation> <translation id="4302592941791324970">Nije dostupno</translation> <translation id="4303223480529385476">Proširite oblast statusa</translation> -<translation id="4315586716182276649">Proširite internet vezu telefona, kontrolišite režim Ne uznemiravaj i pronađite uređaj. Pregledajte aktivne Chrome kartice sa telefona na uređaju <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Pritisnuli ste tastersku prečicu za visoki kontrast. Želite li da je uključite?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Prijavite se pomoću pametne kartice</translation> <translation id="6059276912018042191">Nedavne Chrome kartice</translation> <translation id="6062360702481658777">Automatski ćete biti odjavljeni za <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Zaustavi snimanje</translation> <translation id="607652042414456612">Obližnji Bluetooth uređaji mogu da otkriju računar i on će se prikazivati kao „<ph name="NAME" />“ sa adresom <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google pomoćnik nije dostupan u sesiji gosta.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Pritisnite oba tastera za jačinu zvuka i zadržite ih pet sekundi da biste onemogućili povratni govor.</translation> <translation id="7658239707568436148">Otkaži</translation> <translation id="7662283695561029522">Dodirnite da biste konfigurisali</translation> -<translation id="7683326293741220026">Izgleda da je isključen Bluetooth na telefonu. Uključite Bluetooth na telefonu da biste koristili Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 obaveštenje}one{# obaveštenje}few{# obaveštenja}other{# obaveštenja}}</translation> <translation id="7724603315864178912">Iseci</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Izračunavanje vremena trajanja baterije.</translation> <translation id="8061464966246066292">Visoki kontrast</translation> <translation id="8098591350844501178">Zaustavi prebacivanje ekrana na <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Proširite internet vezu telefona, kontrolišite režim Ne uznemiravaj i pronađite telefon. Pregledajte aktivne Chrome kartice sa telefona na uređaju <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Uključeno, sve</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Potvrdi</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> ne podržava rezoluciju <ph name="SPECIFIED_RESOLUTION" />. Rezolucija je promenjena u <ph name="FALLBACK_RESOLUTION" />. Kliknite na Potvrdi da biste zadržali promene. Prethodna podešavanja će biti vraćena za <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Autom. rotir.</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> se možda neće puniti dok je uključen.</translation> +<translation id="8553395910833293175">Već je dodeljeno svim radnim površinama.</translation> <translation id="8563862697512465947">Podešavanja obaveštenja</translation> <translation id="857201607579416096">Meni je premešten u donji desni ugao ekrana.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Koristi se <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Otključajte uređaj pomoću ID-a prijavljivanja <ph name="LOGIN_ID" /> da biste dobili obaveštenje</translation> <translation id="9017320285115481645">Unesite pristupni kôd roditelja za Family Link.</translation> +<translation id="9024331582947483881">ceo ekran</translation> <translation id="9047624247355796468">Otvorite podešavanja za <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Uređaj će biti vraćen na raniju verziju</translation> <translation id="9065203028668620118">Izmeni</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb index f49f77e..1671111 100644 --- a/ash/strings/ash_strings_sr.xtb +++ b/ash/strings/ash_strings_sr.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Помоћник</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Подесите језик</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Закључај екран</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Здраво, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Укључите/искључите функцију <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Померите курсор</translation> <translation id="3098580329624789136">Потражите <ph name="INTENT" /> за „<ph name="QUERY" />“</translation> +<translation id="3105917916468784889">Сними екран</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Покрените поново да бисте ажурирали</translation> <translation id="3139942575505304791">Радна површина 1</translation> -<translation id="3147157020428159854">Снимање екрана је заустављено</translation> <translation id="315116470104423982">Мобилни подаци</translation> <translation id="3151786313568798007">Положај</translation> <translation id="3153444934357957346">Можете да имате највише <ph name="MULTI_PROFILE_USER_LIMIT" /> налога за вишеструко пријављивање.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Обришите сва обавештења (<ph name="COUNT" />)</translation> <translation id="4302592941791324970">Није доступно</translation> <translation id="4303223480529385476">Проширите област статуса</translation> -<translation id="4315586716182276649">Проширите интернет везу телефона, контролишите режим Не узнемиравај и пронађите уређај. Прегледајте активне Chrome картице са телефона на уређају <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Притиснули сте тастерску пречицу за високи контраст. Желите ли да је укључите?</translation> <translation id="4331809312908958774">Chrome ОС</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Пријавите се помоћу паметне картице</translation> <translation id="6059276912018042191">Недавне Chrome картице</translation> <translation id="6062360702481658777">Аутоматски ћете бити одјављени за <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Заустави снимање</translation> <translation id="607652042414456612">Оближњи Bluetooth уређаји могу да открију рачунар и он ће се приказивати као „<ph name="NAME" />“ са адресом <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google помоћник није доступан у сесији госта.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Притисните оба тастера за јачину звука и задржите их пет секунди да бисте онемогућили повратни говор.</translation> <translation id="7658239707568436148">Откажи</translation> <translation id="7662283695561029522">Додирните да бисте конфигурисали</translation> -<translation id="7683326293741220026">Изгледа да је искључен Bluetooth на телефону. Укључите Bluetooth на телефону да бисте користили Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 обавештење}one{# обавештење}few{# обавештења}other{# обавештења}}</translation> <translation id="7724603315864178912">Исеци</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Израчунавање времена трајања батерије.</translation> <translation id="8061464966246066292">Високи контраст</translation> <translation id="8098591350844501178">Заустави пребацивање екрана на <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Проширите интернет везу телефона, контролишите режим Не узнемиравај и пронађите телефон. Прегледајте активне Chrome картице са телефона на уређају <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Укључено, све</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Потврди</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> не подржава резолуцију <ph name="SPECIFIED_RESOLUTION" />. Резолуција је промењена у <ph name="FALLBACK_RESOLUTION" />. Кликните на Потврди да бисте задржали промене. Претходна подешавања ће бити враћена за <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Аутом. ротир.</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> се можда неће пунити док је укључен.</translation> +<translation id="8553395910833293175">Већ је додељено свим радним површинама.</translation> <translation id="8563862697512465947">Подешавања обавештења</translation> <translation id="857201607579416096">Мени је премештен у доњи десни угао екрана.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Користи се <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Откључајте уређај помоћу ИД-а пријављивања <ph name="LOGIN_ID" /> да бисте добили обавештење</translation> <translation id="9017320285115481645">Унесите приступни кôд родитеља за Family Link.</translation> +<translation id="9024331582947483881">цео екран</translation> <translation id="9047624247355796468">Отворите подешавања за <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Уређај ће бити враћен на ранију верзију</translation> <translation id="9065203028668620118">Измени</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb index fcad6fd..30ca7e7 100644 --- a/ash/strings/ash_strings_sv.xtb +++ b/ash/strings/ash_strings_sv.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Ställ in språk</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Lås skärmen</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hej <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Aktivera och inaktivera <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Flytta muspekaren</translation> <translation id="3098580329624789136"><ph name="INTENT" /> <ph name="QUERY" /></translation> +<translation id="3105917916468784889">Ta en skärmdump</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Starta om för att uppdatera</translation> <translation id="3139942575505304791">Skrivbord 1</translation> -<translation id="3147157020428159854">Skärminspelningen har stoppats</translation> <translation id="315116470104423982">Mobildata</translation> <translation id="3151786313568798007">Orientering</translation> <translation id="3153444934357957346">Du kan högst använda <ph name="MULTI_PROFILE_USER_LIMIT" /> konton för multiinloggning.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Rensa alla <ph name="COUNT" /> aviseringar</translation> <translation id="4302592941791324970">Inte tillgängligt</translation> <translation id="4303223480529385476">Utöka statusfält</translation> -<translation id="4315586716182276649">Förläng telefonens internetanslutning, styr Stör ej och hitta din enhet. Aktiva flikar i Chrome på telefonen visas på din <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Du tryckte på kortkommandot för högkontrastläge. Vill du aktivera funktionen?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Logga in med smartkort</translation> <translation id="6059276912018042191">Senaste flikarna i Chrome</translation> <translation id="6062360702481658777">Du loggas ut automatiskt om <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Sluta spela in</translation> <translation id="607652042414456612">Din dator kan upptäckas av Bluetooth-enheter som finns i närheten och den visas som <ph name="NAME" /> med adressen <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google-assistenten är inte tillgänglig i en gästsession.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Inaktivera talad feedback genom att hålla båda volymknapparna nedtryckta i fem sekunder.</translation> <translation id="7658239707568436148">Avbryt</translation> <translation id="7662283695561029522">Tryck om du vill konfigurera</translation> -<translation id="7683326293741220026">Det verkar som om Bluetooth har inaktiverats på telefonen. Aktivera Bluetooth på telefonen om du vill använda Phone Hub.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 avisering}other{# aviseringar}}</translation> <translation id="7724603315864178912">Klipp ut</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Batteritiden beräknas.</translation> <translation id="8061464966246066292">Hög kontrast</translation> <translation id="8098591350844501178">Sluta casta skärmen till <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Förläng telefonens internetanslutning, styr Stör ej och hitta din telefon. Aktiva flikar i Chrome på telefonen visas på din <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Alla appar på</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8131740175452115882">Bekräfta</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> har inte stöd för <ph name="SPECIFIED_RESOLUTION" />. Upplösningen ändrades till <ph name="FALLBACK_RESOLUTION" />. Klicka på bekräfta om du vill behålla ändringarna. De gamla inställningarna återställs om <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Rotera automatiskt</translation> <translation id="8517041960877371778">Din <ph name="DEVICE_TYPE" /> laddas eventuellt inte så länge den är på.</translation> +<translation id="8553395910833293175">Detta har redan tilldelats alla skrivbord.</translation> <translation id="8563862697512465947">Aviseringsinställningar</translation> <translation id="857201607579416096">Menyn har flyttats till skärmens nedre högra hörn.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Använder <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Lås upp enheten som <ph name="LOGIN_ID" /> så att aviseringen kan göras</translation> <translation id="9017320285115481645">Ange föräldraåtkomstkoden för Family Link.</translation> +<translation id="9024331582947483881">helskärm</translation> <translation id="9047624247355796468">Öppnar inställningarna för <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Enheten återställs</translation> <translation id="9065203028668620118">Redigera</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb index 008f068c..2f0655f 100644 --- a/ash/strings/ash_strings_sw.xtb +++ b/ash/strings/ash_strings_sw.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Mratibu</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Weka lugha yako</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Skrini Iliyofungwa</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Hujambo, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Zima au uwashe <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Sogeza kiteuzi</translation> <translation id="3098580329624789136">Pata <ph name="INTENT" /> ya "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Piga picha ya skrini</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Anzisha upya ili kusasisha</translation> <translation id="3139942575505304791">Eneokazi la 1</translation> -<translation id="3147157020428159854">Imeacha kurekodi skrini</translation> <translation id="315116470104423982">Data ya mtandao wa simu</translation> <translation id="3151786313568798007">Mkao</translation> <translation id="3153444934357957346">Unaweza kuingia katika akaunti <ph name="MULTI_PROFILE_USER_LIMIT" /> pekee ukitumia kipengele cha uwezo wa kuingia katika akaunti nyingi kwa wakati mmoja.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Futa arifa zote <ph name="COUNT" /></translation> <translation id="4302592941791324970">Haipatikani</translation> <translation id="4303223480529385476">Panua eneo la hali</translation> -<translation id="4315586716182276649">Panua muunganisho wa intaneti wa simu yako, dhibiti kipengele cha Usinisumbue na upate mahali kifaa chako kilipo. Angalia vichupo vya Chrome vinavyotumika kwenye simu yako kupitia <ph name="DEVICE_TYPE" /> yako.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Umebofya mikato ya kibodi ya utofautishaji wa juu. Ungependa kuuwasha?</translation> <translation id="4331809312908958774">Mfumo wa Uendeshaji wa Chrome</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Ingia katika akaunti ukitumia kadi yako mahiri</translation> <translation id="6059276912018042191">Vichupo vya Chrome vilivyofunguliwa hivi majuzi</translation> <translation id="6062360702481658777">Utaondolewa kwenye akaunti kiotomatiki baada ya <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Acha kurekodi</translation> <translation id="607652042414456612">Kompyuta yako inaweza kutambuliwa na vifaa vyenye Bluetooth vilivyo karibu na itaonekana kama "<ph name="NAME" />" ikiwa na anwani ya <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Programu ya Mratibu wa Google haipatikani katika kipindi cha mgeni.</translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Bonyeza na ushikilie vitufe vyote viwili vya sauti kwa sekunde tano ili uzime maelezo yanayotamkwa.</translation> <translation id="7658239707568436148">Ghairi</translation> <translation id="7662283695561029522">Gusa ili uweke mipangilio</translation> -<translation id="7683326293741220026">Inaonekana Bluetooth imezimwa kwenye simu yako. Tafadhali washa Bluetooth kwenye simu yako ili uweze kutumia Kituo cha Kudhibiti Simu.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{Arifa 1}other{Arifa #}}</translation> <translation id="7724603315864178912">Kata</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Inakokotoa muda wa betri.</translation> <translation id="8061464966246066292">Kilinganushi kikubwa</translation> <translation id="8098591350844501178">Acha kutuma skrini kwenye <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Panua muunganisho wa intaneti wa simu yako, dhibiti kipengele cha Usinisumbue na upate mahali simu yako ilipo. Angalia vichupo vya Chrome vinavyotumika kwenye simu yako kupitia <ph name="DEVICE_TYPE" /> yako.</translation> <translation id="8113423164597455979">Imewashwa: zote</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Thibitisha</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> haitumii <ph name="SPECIFIED_RESOLUTION" />. Ubora umebadilishwa kuwa <ph name="FALLBACK_RESOLUTION" />. Bofya thibitisha ili uhifadhi mabadiliko. Mipangilio ya awali itarejeshwa baada ya <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Zungusha kiotomatiki</translation> <translation id="8517041960877371778">Huenda kifaa chako cha <ph name="DEVICE_TYPE" /> kisichaji kikiwa kimewashwa.</translation> +<translation id="8553395910833293175">Tayari limewekwa kwenye maeneokazi yote.</translation> <translation id="8563862697512465947">Mipangilio ya Arifa</translation> <translation id="857201607579416096">Menyu imehamishiwa kwenye kona ya chini kulia mwa skrini.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590">Unatumia <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Fungua kifaa kwa kuingia katika akaunti ukitumia <ph name="LOGIN_ID" /> ili utekeleze kitendo cha arifa</translation> <translation id="9017320285115481645">Weka msimbo wa kufikia wa mzazi katika Family Link.</translation> +<translation id="9024331582947483881">skrini nzima</translation> <translation id="9047624247355796468">Fungua mipangilio ya <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Mipangilio ya awali itarejeshwa kwenye kifaa</translation> <translation id="9065203028668620118">Badilisha</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb index 4fed5e6f..fa69261 100644 --- a/ash/strings/ash_strings_ta.xtb +++ b/ash/strings/ash_strings_ta.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">எனது மொழியை அமை</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">லாக் ஸ்கிரீன்</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">ஹாய் <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> அம்சத்தை நிலைமாற்றும். <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">கர்சரை நகர்த்து</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" என்பதற்கான <ph name="INTENT" /> பெறுங்கள்</translation> +<translation id="3105917916468784889">ஸ்கிரீன் ஷாட்டை எடுக்கும்</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (புளூடூத்)</translation> <translation id="3126069444801937830">புதுப்பிக்க மீண்டும் தொடங்குக</translation> <translation id="3139942575505304791">மேசை 1</translation> -<translation id="3147157020428159854">ஸ்கிரீன் ரெக்கார்டிங் நிறுத்தப்பட்டது</translation> <translation id="315116470104423982">மொபைல் டேட்டா</translation> <translation id="3151786313568798007">திசையமைப்பு</translation> <translation id="3153444934357957346">பல உள்நுழைவில் <ph name="MULTI_PROFILE_USER_LIMIT" /> கணக்குகள் வரை மட்டுமே வைத்திருக்கலாம்.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875"><ph name="COUNT" /> அறிவிப்புகளையும் அழிக்கும்</translation> <translation id="4302592941791324970">இல்லை</translation> <translation id="4303223480529385476">நிலைப் பகுதியை விரிவாக்கும்</translation> -<translation id="4315586716182276649">மொபைலின் இணைய இணைப்பை விரிவாக்கலாம், தொந்தரவு செய்ய வேண்டாம் அம்சத்தைக் கட்டுப்படுத்தலாம், உங்கள் சாதனம் இருக்குமிடத்தைக் கண்டறியலாம். மொபைலில் செயலில் இருக்கும் Chrome தாவல்களை உங்கள் <ph name="DEVICE_TYPE" /> இல் பார்க்கலாம்.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">உயர் ஒளி மாறுபாட்டின் கீபோர்ட் ஷார்ட்கட்டை அழுத்தியுள்ளீர்கள். அதை இயக்க விரும்புகிறீர்களா?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">ஸ்மார்ட் கார்டு மூலம் உள்நுழைக</translation> <translation id="6059276912018042191">சமீபத்திய Chrome தாவல்கள்</translation> <translation id="6062360702481658777"><ph name="LOGOUT_TIME_LEFT" /> இல் தானாகவே வெளியேற்றப்படுவீர்கள்.</translation> +<translation id="6073451960410192870">பதிவுசெய்வதை நிறுத்து</translation> <translation id="607652042414456612">உங்கள் கம்ப்யூட்டர் அருகிலுள்ள Bluetooth சாதனங்களால் கண்டறியப்படும், மேலும் <ph name="ADDRESS" /> என்ற முகவரியுடன் "<ph name="NAME" />" என்ற பெயரில் தோன்றும்</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">கெஸ்ட் அமர்வில் Google அசிஸ்டண்ட்டைப் பயன்படுத்த இயலாது.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">பேச்சுவடிவ கருத்தை முடக்க, ஐந்து வினாடிகளுக்கு இரண்டு ஒலியளவு விசைகளையும் அழுத்திப் பிடித்திருக்கவும்.</translation> <translation id="7658239707568436148">ரத்து செய்</translation> <translation id="7662283695561029522">உள்ளமைக்க, தட்டவும்</translation> -<translation id="7683326293741220026">உங்கள் ஃபோனில் புளூடூத் முடக்கப்பட்டுள்ளதாகத் தெரிகிறது. ஃபோன் ஹப்பைப் பயன்படுத்த புளூடூத்தை இயக்கவும்.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 அறிவிப்பு}other{# அறிவிப்புகள்}}</translation> <translation id="7724603315864178912">வெட்டு</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">பேட்டரி நேரத்தைக் கணக்கிடுகிறது.</translation> <translation id="8061464966246066292">உயர் மாறுபாடு</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" />க்குத் திரையை அனுப்புவதை நிறுத்து</translation> -<translation id="8108657971283652031">மொபைலின் இணைய இணைப்பை விரிவாக்கலாம், தொந்தரவு செய்ய வேண்டாம் அம்சத்தைக் கட்டுப்படுத்தலாம், உங்கள் மொபைல் இருக்குமிடத்தைக் கண்டறியலாம். மொபைலில் செயலில் இருக்கும் Chrome தாவல்களை உங்கள் <ph name="DEVICE_TYPE" /> இல் பார்க்கலாம்.</translation> <translation id="8113423164597455979">எல்லா ஆப்ஸுக்கும் இயக்கு</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">உறுதிப்படுத்து</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="SPECIFIED_RESOLUTION" /> தெளிவுத்திறனை <ph name="DISPLAY_NAME" /> ஆதரிக்கவில்லை. தெளிவுத்திறன் <ph name="FALLBACK_RESOLUTION" />க்கு மாற்றப்பட்டது. மாற்றங்களை உறுதிசெய்ய 'உறுதிப்படுத்து' என்பதைக் கிளிக் செய்யவும். இன்னும் <ph name="TIMEOUT_SECONDS" /> இல் முந்தைய அமைப்புகளுக்கு மீட்டமைக்கப்படும்.</translation> <translation id="8513108775083588393">தானாகச் சுழற்று</translation> <translation id="8517041960877371778">இயக்கப்பட்டிருக்கும் போது உங்கள் <ph name="DEVICE_TYPE" /> இல் சார்ஜ் ஏறாது.</translation> +<translation id="8553395910833293175">எல்லா டெஸ்க்குகளுக்கும் ஏற்கெனவே ஒதுக்கப்பட்டுள்ளது.</translation> <translation id="8563862697512465947">அறிவிப்பு அமைப்புகள்</translation> <translation id="857201607579416096">திரையின் கீழ் வலது மூலைக்கு மெனு நகர்த்தப்பட்டது.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> பயன்படுத்தப்படுகிறது</translation> <translation id="899350903320462459">அறிவிப்பில் வந்த செயலைச் செய்வதற்கு, சாதனத்தை <ph name="LOGIN_ID" /> ஆகத் திறக்கவும்</translation> <translation id="9017320285115481645">Family Link பெற்றோர் அணுகல் குறியீட்டை உள்ளிடவும்.</translation> +<translation id="9024331582947483881">முழுத்திரை</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" />க்கான அமைப்புகளைத் திறக்கும்</translation> <translation id="9056839673611986238">சாதனம் மீட்டமைக்கப்படும்</translation> <translation id="9065203028668620118">திருத்து</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb index 5b31fed..93101e7d 100644 --- a/ash/strings/ash_strings_te.xtb +++ b/ash/strings/ash_strings_te.xtb
@@ -232,10 +232,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" />ను టోగుల్ చేయండి. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">కర్సర్ను జరపండి</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" <ph name="INTENT" /> పొందండి</translation> +<translation id="3105917916468784889">స్క్రీన్షాట్ తీయండి</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (బ్లూటూత్)</translation> <translation id="3126069444801937830">అప్డేట్ చేయడానికి పునఃప్రారంభించండి</translation> <translation id="3139942575505304791">డెస్క్ 1</translation> -<translation id="3147157020428159854">స్క్రీన్ రికార్డింగ్ ఆపివేయబడింది</translation> <translation id="315116470104423982">మొబైల్ డేటా</translation> <translation id="3151786313568798007">దృగ్విన్యాసం</translation> <translation id="3153444934357957346">బహుళ సైన్-ఇన్లో గరిష్టంగా <ph name="MULTI_PROFILE_USER_LIMIT" /> ఖాతాలు మాత్రమే ఉండవచ్చు.</translation> @@ -367,7 +367,6 @@ <translation id="4296136865091727875">మొత్తం <ph name="COUNT" /> నోటిఫికేషన్లను క్లియర్ చేస్తుంది</translation> <translation id="4302592941791324970">అందుబాటులో లేదు</translation> <translation id="4303223480529385476">స్టేటస్ ప్రాంతాన్ని విస్తరించండి</translation> -<translation id="4315586716182276649">మీ ఫోన్ ఇంటర్నెట్ కనెక్షన్ను పొడిగించండి, 'అంతరాయం కలిగించవద్దు'ను కంట్రోల్ చేయండి, అలాగే మీ పరికరాన్ని గుర్తించండి. మీ <ph name="DEVICE_TYPE" />లో మీ ఫోన్ నుండి యాక్టివ్ Chrome ట్యాబ్లను వీక్షించండి.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">మీరు అధిక కాంట్రాస్ట్ కోసం కీబోర్డ్ షార్ట్కట్ను నొక్కారు. మీరు దీన్ని ఆన్ చేయాలనుకుంటున్నారా?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -561,6 +560,7 @@ <translation id="6054305421211936131">స్మార్ట్ కార్డ్తో సైన్ ఇన్ చేయండి</translation> <translation id="6059276912018042191">ఇటీవలి Chrome ట్యాబ్లు</translation> <translation id="6062360702481658777">మీరు <ph name="LOGOUT_TIME_LEFT" />లో స్వయంచాలకంగా సైన్ అవుట్ చేయబడతారు.</translation> +<translation id="6073451960410192870">రికార్డ్ చేయడం ఆపివేయి</translation> <translation id="607652042414456612">మీ కంప్యూటర్ సమీప బ్లూటూత్ పరికరాల్లో కనుగొనబడుతుంది మరియు చిరునామా <ph name="ADDRESS" />తో "<ph name="NAME" />" లాగా కనిపిస్తుంది</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">అతిథి సెషన్లో Google అసిస్టెంట్ పని చేయదు.</translation> @@ -726,7 +726,6 @@ <translation id="7654687942625752712">ప్రసంగ రూప ప్రతిస్పందనను నిలిపివేయడానికి ఒకేసారి రెండు వాల్యూమ్ కీలను ఐదు సెకన్ల పాటు నొక్కి, పట్టుకోండి.</translation> <translation id="7658239707568436148">రద్దు చేయి</translation> <translation id="7662283695561029522">కాన్ఫిగర్ చేయడానికి నొక్కండి</translation> -<translation id="7683326293741220026">మీ ఫోన్లో బ్లూటూత్ ఆఫ్ చేయబడి ఉన్నట్లుగా అనిపిస్తోంది. ఫోన్ హబ్ను ఉపయోగించడానికి దయచేసి మీ ఫోన్లో బ్లూటూత్ను ఆన్ చేయండి.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 నోటిఫికేషన్}other{# నోటిఫికేషన్లు}}</translation> <translation id="7724603315864178912">కత్తిరించు</translation> @@ -774,7 +773,6 @@ <translation id="8054466585765276473">బ్యాటరీ సమయాన్ని లెక్కిస్తోంది.</translation> <translation id="8061464966246066292">అధిక కాంట్రాస్ట్</translation> <translation id="8098591350844501178"><ph name="RECEIVER_NAME" />కి స్క్రీన్ను ప్రసారం చేయడాన్ని ఆపివేయి</translation> -<translation id="8108657971283652031">మీ ఫోన్ ఇంటర్నెట్ కనెక్షన్ను పొడిగించండి, 'అంతరాయం కలిగించవద్దు'ను కంట్రోల్ చేయండి, అలాగే మీ ఫోన్ను గుర్తించండి. మీ <ph name="DEVICE_TYPE" />లో మీ ఫోన్ నుండి యాక్టివ్ Chrome ట్యాబ్లను వీక్షించండి.</translation> <translation id="8113423164597455979">యాప్లన్నీ ఆన్</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">నిర్ధారించు</translation> @@ -881,6 +879,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> ఉపయోగిస్తోంది</translation> <translation id="899350903320462459">నోటిఫికేషన్ చర్యను నిర్వహించడానికి <ph name="LOGIN_ID" />గా పరికరాన్ని అన్లాక్ చేయండి</translation> <translation id="9017320285115481645">Family Link తల్లిదండ్రుల యాక్సెస్ కోడ్ను నమోదు చేయండి.</translation> +<translation id="9024331582947483881">పూర్తి స్క్రీన్</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> సెట్టింగ్లను తెరవండి</translation> <translation id="9056839673611986238">పరికరం ఉపసంహరించబడుతుంది</translation> <translation id="9065203028668620118">సవరించు</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb index 24c3db3..805e0b5 100644 --- a/ash/strings/ash_strings_th.xtb +++ b/ash/strings/ash_strings_th.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">ผู้ช่วย</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">ตั้งค่าภาษา</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">ล็อกหน้าจอ</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">สวัสดี คุณ <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">เปิด/ปิด <ph name="FEATURE_NAME" /> <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">เลื่อนเคอร์เซอร์</translation> <translation id="3098580329624789136">ดู<ph name="INTENT" />สำหรับ "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">จับภาพหน้าจอ</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (บลูทูธ)</translation> <translation id="3126069444801937830">รีสตาร์ทเพื่ออัปเดต</translation> <translation id="3139942575505304791">โต๊ะที่ 1</translation> -<translation id="3147157020428159854">หยุดบันทึกหน้าจอแล้ว</translation> <translation id="315116470104423982">เน็ตมือถือ</translation> <translation id="3151786313568798007">การวางแนว</translation> <translation id="3153444934357957346">คุณมีบัญชีได้สูงสุด <ph name="MULTI_PROFILE_USER_LIMIT" /> บัญชีในการลงชื่อเข้าสู่ระบบพร้อมกันหลายบัญชี</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">ล้างการแจ้งเตือนทั้งหมด <ph name="COUNT" /> รายการ</translation> <translation id="4302592941791324970">ไม่พร้อมใช้งาน</translation> <translation id="4303223480529385476">ขยายพื้นที่แสดงสถานะ</translation> -<translation id="4315586716182276649">ปรับปรุงการเชื่อมต่ออินเทอร์เน็ตของโทรศัพท์ ควบคุมโหมดห้ามรบกวน และระบุตำแหน่งของอุปกรณ์ ดูแท็บ Chrome ที่ใช้งานอยู่จากโทรศัพท์ของคุณใน <ph name="DEVICE_TYPE" /></translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">คุณกดแป้นพิมพ์ลัดสำหรับคอนทราสต์สูง จะเปิดคอนทราสต์สูงไหม</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">ลงชื่อเข้าใช้ด้วยสมาร์ทการ์ด</translation> <translation id="6059276912018042191">แท็บ Chrome ล่าสุด</translation> <translation id="6062360702481658777">คุณจะออกจากระบบโดยอัตโนมัติใน <ph name="LOGOUT_TIME_LEFT" /></translation> +<translation id="6073451960410192870">หยุดบันทึก</translation> <translation id="607652042414456612">ค้นพบคอมพิวเตอร์ของคุณอยู่ใกล้กับอุปกรณ์บลูทูธและจะปรากฏเป็น "<ph name="NAME" />" พร้อมด้วยที่อยู่ <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" /> <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">ใช้ Google Assistant ในเซสชันผู้เยี่ยมชมไม่ได้</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">กดแป้นปรับระดับเสียงค้างไว้ 5 วินาทีเพื่อปิดใช้การอธิบายและอ่านออกเสียง</translation> <translation id="7658239707568436148">ยกเลิก</translation> <translation id="7662283695561029522">แตะเพื่อกำหนดค่า</translation> -<translation id="7683326293741220026">ดูเหมือนว่าบลูทูธของโทรศัพท์จะปิดอยู่ โปรดเปิดบลูทูธของโทรศัพท์เพื่อใช้ฮับโทรศัพท์</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{การแจ้งเตือน 1 รายการ}other{การแจ้งเตือน # รายการ}}</translation> <translation id="7724603315864178912">ตัด</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">กำลังคำนวณเวลาใช้งานแบตเตอรี่</translation> <translation id="8061464966246066292">ความคมชัดสูง</translation> <translation id="8098591350844501178">หยุดแคสต์หน้าจอไปยัง <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">เพิ่มการเชื่อมต่ออินเทอร์เน็ตของโทรศัพท์ ควบคุมโหมดห้ามรบกวน และระบุตำแหน่งของโทรศัพท์ ดูแท็บ Chrome ที่ใช้งานอยู่จากโทรศัพท์ของคุณใน <ph name="DEVICE_TYPE" /></translation> <translation id="8113423164597455979">เปิดไว้ทุกแอป</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation> <translation id="8131740175452115882">ยืนยัน</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> ไม่รองรับ <ph name="SPECIFIED_RESOLUTION" /> ระบบเปลี่ยนความละเอียดเป็น <ph name="FALLBACK_RESOLUTION" /> คลิก "ยืนยัน" เพื่อเก็บการเปลี่ยนแปลงไว้ ระบบจะคืนการตั้งค่าก่อนหน้าใน <ph name="TIMEOUT_SECONDS" /></translation> <translation id="8513108775083588393">หมุนอัตโนมัติ</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> ของคุณอาจไม่ชาร์จเมื่อเครื่องเปิดอยู่</translation> +<translation id="8553395910833293175">มอบหมายให้ทุกเดสก์แล้ว</translation> <translation id="8563862697512465947">การตั้งค่าการแจ้งเตือน</translation> <translation id="857201607579416096">เมนูได้ย้ายไปอยู่ที่มุมขวาล่างของหน้าจอ</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">กำลังใช้<ph name="IME_NAME" /></translation> <translation id="899350903320462459">ปลดล็อกอุปกรณ์โดยใช้ <ph name="LOGIN_ID" /> เพื่อดำเนินการแจ้งเตือน</translation> <translation id="9017320285115481645">ป้อนรหัสการเข้าถึง Family Link ของผู้ปกครอง</translation> +<translation id="9024331582947483881">เต็มหน้าจอ</translation> <translation id="9047624247355796468">เปิดการตั้งค่าสำหรับ <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">อุปกรณ์จะได้รับการคืนค่าสถานะ</translation> <translation id="9065203028668620118">แก้ไข</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb index 0b85940a..bf448778 100644 --- a/ash/strings/ash_strings_tr.xtb +++ b/ash/strings/ash_strings_tr.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Asistan</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Dilinizi ayarlayın</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Kilit Ekranı</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Merhaba <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> özelliğini aç/kapat. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">İmleci taşı</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" için <ph name="INTENT" /> al</translation> +<translation id="3105917916468784889">Ekran görüntüsü al</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Güncellemek için yeniden başlat</translation> <translation id="3139942575505304791">Çalışma Masası 1</translation> -<translation id="3147157020428159854">Ekran kaydı durduruldu</translation> <translation id="315116470104423982">Mobil veriler</translation> <translation id="3151786313568798007">Yön</translation> <translation id="3153444934357957346">Çoklu oturum açmada en fazla <ph name="MULTI_PROFILE_USER_LIMIT" /> hesabınız olabilir.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875"><ph name="COUNT" /> bildirimin tümünü temizle</translation> <translation id="4302592941791324970">Kullanılamıyor</translation> <translation id="4303223480529385476">Durum alanını genişlet</translation> -<translation id="4315586716182276649">Telefonunuzun internet bağlantısının kapsamını genişletin, Rahatsız Etmeyin özelliğini kontrol edin ve cihazınızın yerini bulun. Telefonunuzdaki etkin Chrome sekmelerini <ph name="DEVICE_TYPE" /> cihazınızda görüntüleyin.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Yüksek kontrast kısayoluna bastınız. Bu özelliği açmak istiyor musunuz?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Akıllı kartla oturum aç</translation> <translation id="6059276912018042191">Son Chrome sekmeleri</translation> <translation id="6062360702481658777"><ph name="LOGOUT_TIME_LEFT" /> içinde otomatik olarak çıkış yapacaksınız.</translation> +<translation id="6073451960410192870">Kaydı durdur</translation> <translation id="607652042414456612">Bilgisayarınız yakındaki Bluetooth cihazlar tarafından keşfedilebilir durumdadır. Ayrıca, <ph name="ADDRESS" /> adresine sahip "<ph name="NAME" />" olarak görünecek</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> @@ -726,7 +727,6 @@ <translation id="7654687942625752712">Sesli geri bildirimi beş saniyeliğine devre dışı bırakmak için her iki ses ayarı tuşunu basılı tutun.</translation> <translation id="7658239707568436148">İptal</translation> <translation id="7662283695561029522">Yapılandırmak için dokunun</translation> -<translation id="7683326293741220026">Telefonunuzda Bluetooth kapalı görünüyor. Telefon Merkezini kullanmak için telefonunuzda Bluetooth'u açın.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 bildirim}other{# bildirim}}</translation> <translation id="7724603315864178912">Kes</translation> @@ -774,7 +774,6 @@ <translation id="8054466585765276473">Pilin süresi hesaplanıyor.</translation> <translation id="8061464966246066292">Yüksek kontrast</translation> <translation id="8098591350844501178">Ekranın <ph name="RECEIVER_NAME" /> cihazına yayınını durdur</translation> -<translation id="8108657971283652031">Telefonunuzun internet bağlantısının kapsamını genişletin, Rahatsız Etmeyin özelliğini kontrol edin ve telefonunuzun yerini bulun. Telefonunuzdaki etkin Chrome sekmelerini <ph name="DEVICE_TYPE" /> cihazınızda görüntüleyin.</translation> <translation id="8113423164597455979">Açık, tümü</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Onayla</translation> @@ -823,6 +822,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" />, <ph name="SPECIFIED_RESOLUTION" /> çözünürlüğü desteklemiyor. Çözünürlük <ph name="FALLBACK_RESOLUTION" /> olarak değiştirildi. Değişiklikleri korumak için Onayla'yı tıklayın. Önceki ayarlar <ph name="TIMEOUT_SECONDS" /> saniye içinde geri yüklenecek.</translation> <translation id="8513108775083588393">Oto. döndür</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> cihazınız açıkken şarj olmayabilir.</translation> +<translation id="8553395910833293175">Zaten tüm masalara atandı.</translation> <translation id="8563862697512465947">Bildirim Ayarları</translation> <translation id="857201607579416096">Menü, ekranın sağ alt köşesine taşındı.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -881,6 +881,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> kullanılıyor</translation> <translation id="899350903320462459">Bildirim işlemi gerçekleştirmek için <ph name="LOGIN_ID" /> olarak cihazın kilidini açın</translation> <translation id="9017320285115481645">Family Link ebeveyn erişim kodunu girin.</translation> +<translation id="9024331582947483881">tam ekran</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> ayarlarını aç</translation> <translation id="9056839673611986238">Cihaz ilk haline döndürülecek</translation> <translation id="9065203028668620118">Düzenle</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb index 4211728..e6bba00 100644 --- a/ash/strings/ash_strings_uk.xtb +++ b/ash/strings/ash_strings_uk.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Асистент</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Вибрати мову</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Блокування екрана</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Вітаємо, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Перемкнути функцію "<ph name="FEATURE_NAME" />". <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Курсор переміщення</translation> <translation id="3098580329624789136">Дізнайтеся <ph name="INTENT" /> запиту "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Зробити знімок екрана</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Перезапустіть, щоб оновити</translation> <translation id="3139942575505304791">Робочий стіл 1</translation> -<translation id="3147157020428159854">Запис відео з екрана зупинено</translation> <translation id="315116470104423982">Мобільне передавання даних</translation> <translation id="3151786313568798007">Орієнтація</translation> <translation id="3153444934357957346">Максимальна кількість паралельних входів в обліковий запис: <ph name="MULTI_PROFILE_USER_LIMIT" />.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Видаліть усі сповіщення (<ph name="COUNT" />)</translation> <translation id="4302592941791324970">Недоступно</translation> <translation id="4303223480529385476">Розгорнути панель стану</translation> -<translation id="4315586716182276649">Розширюйте інтернет-з'єднання телефона, керуйте функцією "Не турбувати" та знаходьте свій пристрій. Переглядайте активні вкладки Chrome із телефона на пристрої <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Ви натиснули комбінацію клавіш для високого контрасту. Увімкнути?</translation> <translation id="4331809312908958774">ОС Chrome</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Увійти за допомогою розумної картки</translation> <translation id="6059276912018042191">Останні вкладки Chrome</translation> <translation id="6062360702481658777">Ви автоматично вийдете за <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Припинити запис</translation> <translation id="607652042414456612">Ваш комп’ютер видимий для пристроїв Bluetooth поблизу та відображатиметься з назвою "<ph name="NAME" />" та адресою <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Асистент недоступний під час сеансу в режимі "Гість".</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Утримуйте обидві клавіші гучності впродовж п’яти секунд, щоб вимкнути голосові підказки.</translation> <translation id="7658239707568436148">Скасувати</translation> <translation id="7662283695561029522">Торкніться, щоб налаштувати</translation> -<translation id="7683326293741220026">Схоже, на телефоні вимкнено Bluetooth. Увімкніть його, щоб скористатися функцією "Керування телефоном".</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 cповіщення}one{# сповіщення}few{# сповіщення}many{# сповіщень}other{# сповіщення}}</translation> <translation id="7724603315864178912">Вирізати</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Обчислення часу роботи акумулятора.</translation> <translation id="8061464966246066292">Високий контраст</translation> <translation id="8098591350844501178">Зупинити трансляцію екрана на пристрій "<ph name="RECEIVER_NAME" />"</translation> -<translation id="8108657971283652031">Розширюйте інтернет-з'єднання телефона, керуйте функцією "Не турбувати" й знаходьте свій телефон. Переглядайте активні вкладки Chrome із телефона на пристрої <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Увімкнено всі</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Підтвердити</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> не підтримує роздільну здатність <ph name="SPECIFIED_RESOLUTION" />. Роздільну здатність змінено на <ph name="FALLBACK_RESOLUTION" />. Щоб зберегти зміни, натисніть "Підтвердити". Попередні налаштування відновляться через <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Автообертання</translation> <translation id="8517041960877371778">Пристрій <ph name="DEVICE_TYPE" /> може не заряджатися, коли він увімкнений.</translation> +<translation id="8553395910833293175">Уже призначено для всіх робочих столів.</translation> <translation id="8563862697512465947">Налаштування сповіщення</translation> <translation id="857201607579416096">Меню переміщено в нижній правий кут екрана.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Використовується: <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Щоб виконати дію зі сповіщенням, розблокуйте пристрій як <ph name="LOGIN_ID" /></translation> <translation id="9017320285115481645">Введіть батьківський код доступу Family Link.</translation> +<translation id="9024331582947483881">повноекранний режим</translation> <translation id="9047624247355796468">Відкрити налаштування <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Пристрій буде відновлено до попереднього стану</translation> <translation id="9065203028668620118">Редагувати</translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb index 3f2da09e..cfafc75 100644 --- a/ash/strings/ash_strings_ur.xtb +++ b/ash/strings/ash_strings_ur.xtb
@@ -232,10 +232,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> کو ٹوگل کریں۔ <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">کرسر منتقل کریں</translation> <translation id="3098580329624789136">"<ph name="QUERY" />" کیلئے <ph name="INTENT" /> حاصل کریں</translation> +<translation id="3105917916468784889">اسکرین شاٹ لیں</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (بلوٹوتھ)</translation> <translation id="3126069444801937830">اپ ڈیٹ کرنے کیلئے دوبارہ شروع کریں</translation> <translation id="3139942575505304791">ڈیسک 1</translation> -<translation id="3147157020428159854">اسکرین ریکارڈنگ بند ہو گئی</translation> <translation id="315116470104423982">موبائل ڈیٹا</translation> <translation id="3151786313568798007">سمت بندی</translation> <translation id="3153444934357957346">آپ متعدد سائن ان میں صرف <ph name="MULTI_PROFILE_USER_LIMIT" /> اکاؤنٹس تک رکھ سکتے ہیں۔</translation> @@ -366,7 +366,6 @@ <translation id="4296136865091727875">تمام <ph name="COUNT" /> اطلاعات صاف کریں</translation> <translation id="4302592941791324970">دستیاب نہیں ہے</translation> <translation id="4303223480529385476">اسٹیٹس ایریا کو پھیلائیں</translation> -<translation id="4315586716182276649">اپنے فون کے انٹرنیٹ کنکشن کو بڑھائیں، 'ڈسٹرب نہ کریں' کو کنٹرول کریں اور اپنے آلے کا پتہ لگائیں۔ اپنے <ph name="DEVICE_TYPE" /> پر اپنے فون سے فعال Chrome ٹیبز دیکھیں۔</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">آپ نے اعلی تناسب امتزاج کیلئے کی بورڈ شارٹ کٹ دبایا ہے۔ کیا آپ اسے آن کرنا چاہتے ہیں؟</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +559,7 @@ <translation id="6054305421211936131">اپنے اسمارٹ کارڈ سے سائن ان کریں</translation> <translation id="6059276912018042191">حالیہ Chrome ٹیبز</translation> <translation id="6062360702481658777">آپ <ph name="LOGOUT_TIME_LEFT" /> میں خود بخود سائن آؤٹ ہو جائیں گے۔</translation> +<translation id="6073451960410192870">ریکارڈنگ روکیں</translation> <translation id="607652042414456612">آپ کا کمپیوٹر قریبی بلوٹوتھ آلات کے ذریعہ قابل دریافت ہے اور "<ph name="NAME" />" کے بطور پتہ <ph name="ADDRESS" /> کے ساتھ ظاہر ہوگا</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />۔ <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google اسسٹنٹ مہمان سیشن میں دستیاب نہیں ہے۔</translation> @@ -725,7 +725,6 @@ <translation id="7654687942625752712">صوتی تاثرات کو غیر فعال کرنے کیلئے پانچ منٹ تک والیوم کی دونوں کلیدوں کو دبائے رکھیں۔</translation> <translation id="7658239707568436148">منسوخ کریں</translation> <translation id="7662283695561029522">کنفیگر کرنے کیلئے تھپتھپائیں</translation> -<translation id="7683326293741220026">ایسا لگتا ہے کہ آپ کے فون پر بلوٹوتھ آف ہے۔ فون ہب کا استعمال کرنے کیلئے براہ کرم اپنے فون پر بلوٹوتھ آن کریں۔</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 اطلاع}other{# اطلاعات}}</translation> <translation id="7724603315864178912">کٹ کریں</translation> @@ -773,7 +772,6 @@ <translation id="8054466585765276473">بیٹری کے وقت کا حساب لگایا جا رہا ہے۔</translation> <translation id="8061464966246066292">اعلی تناسب امتزاج</translation> <translation id="8098591350844501178">اسکرین کو <ph name="RECEIVER_NAME" /> پر کاسٹ کرنا بند کریں</translation> -<translation id="8108657971283652031">اپنے فون کے انٹرنیٹ کنکشن کو بڑھائیں، 'ڈسٹرب نہ کریں' کو کنٹرول کریں اور اپنے فون کا پتہ لگائیں۔ اپنے <ph name="DEVICE_TYPE" /> پر اپنے فون سے فعال Chrome ٹیبز دیکھیں۔</translation> <translation id="8113423164597455979">آن، سبھی ایپس</translation> <translation id="8129620843620772246">C °<ph name="TEMPERATURE_C" /></translation> <translation id="8131740175452115882">تصدیق کریں</translation> @@ -880,6 +878,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> کے ذریعے</translation> <translation id="899350903320462459">اطلاع کی کارروائی کرنے کیلئے، آلے کو بطور <ph name="LOGIN_ID" /> غیر مقفل کریں</translation> <translation id="9017320285115481645">Family Link کا والدین کا رسائی کا کوڈ درج کریں۔</translation> +<translation id="9024331582947483881">پوری اسکرین</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> کے لیے ترتیبات کھولیں</translation> <translation id="9056839673611986238">آلہ کو رول بیک کیا جائے گا</translation> <translation id="9065203028668620118">تبدیل کریں</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb index 98a8870..c30606a 100644 --- a/ash/strings/ash_strings_uz.xtb +++ b/ash/strings/ash_strings_uz.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Assistent</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Tilni tanlash</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Ekran qulfi</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Salom <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936"><ph name="FEATURE_NAME" /> tugmasi. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Kursorni surish</translation> <translation id="3098580329624789136">“<ph name="QUERY" />” uchun <ph name="INTENT" /> olish</translation> +<translation id="3105917916468784889">Skrinshot olish</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Yangilash uchun qayta ishga tushiring</translation> <translation id="3139942575505304791">Desk 1</translation> -<translation id="3147157020428159854">Ekranni yozib olish toʻxtatildi</translation> <translation id="315116470104423982">Mobil internet</translation> <translation id="3151786313568798007">Joylashuv</translation> <translation id="3153444934357957346">Tizimga bir nechta hisobdan kirish imkoniyati faqat <ph name="MULTI_PROFILE_USER_LIMIT" /> tagacha hisob bilan ishlaydi.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Barcha bildirishnomalarni tozalash (<ph name="COUNT" />)</translation> <translation id="4302592941791324970">Mavjud emas</translation> <translation id="4303223480529385476">Holat panelini yoyish</translation> -<translation id="4315586716182276649">Telefondagi internet aloqasi qamrovini uzaytirish, Bezovta qilinmasin rejimi boshqaruvi va qurilmangizni topish. Telefonda ochiq Chrome varaqlarini <ph name="DEVICE_TYPE" /> qurilmasida koʻrish.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Yuqori kontrastli rejim tezkor havolasini bosdingiz. Ishga tushirilsinmi?</translation> <translation id="4331809312908958774">Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Smart karta orqali kirish</translation> <translation id="6059276912018042191">Chromedagi oxirgi varaqlar</translation> <translation id="6062360702481658777"><ph name="LOGOUT_TIME_LEFT" />dan keyin tizimdan avtomatik ravishda chiqiladi.</translation> +<translation id="6073451960410192870">Yozuvni toʻxtatish</translation> <translation id="607652042414456612">Kompyuteringiz yaqin-atrofdagi Bluetooth qurilmalariga <ph name="NAME" /> nomida <ph name="ADDRESS" /> manzilida ko‘rinadi</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google Assistent mehmon seansida ishlamaydi.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Ekrandagi matn talaffuz qilinishi funksiyasini faolsizlantirish uchun 5 soniya har ikki tovush tugmasini bosib turing.</translation> <translation id="7658239707568436148">Bekor qilish</translation> <translation id="7662283695561029522">Sozlash uchun bosing</translation> -<translation id="7683326293741220026">Telefoningizda Bluetooth yoniqligini tekshiring. Telefonda Phone Hub xizmatidan foydalanish uchun Bluetooth aloqasini yoqing.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ta bildirishnoma}other{# ta bildirishnoma}}</translation> <translation id="7724603315864178912">Qirqish</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Batareyadan ishlash mumkin bo‘lgan vaqt hisoblanmoqda.</translation> <translation id="8061464966246066292">Yuqori kontrast</translation> <translation id="8098591350844501178">Ekranni “<ph name="RECEIVER_NAME" />” qurilmasiga translatsiya qilishni to‘xtatish</translation> -<translation id="8108657971283652031">Telefondagi internet aloqasi qamrovini uzaytirish, Bezovta qilinmasin rejimi boshqaruvi va telefoningizni topish. Telefonda ochiq Chrome varaqlarini <ph name="DEVICE_TYPE" /> qurilmasida koʻrish.</translation> <translation id="8113423164597455979">Yoniq, hammasi</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Tasdiqlash</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> <ph name="SPECIFIED_RESOLUTION" /> aniqlik darajasida ishlamaydi. Aniqlik darajasi <ph name="FALLBACK_RESOLUTION" /> ga qaytarildi. Tasdiqlash uchun bosing. Eski sozlamalar <ph name="TIMEOUT_SECONDS" /> dan keyin tiklanadi.</translation> <translation id="8513108775083588393">Avto-burilish</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> qurilmasi yoniqligida uni quvvatlab bo‘lmaydi.</translation> +<translation id="8553395910833293175">Allaqachon barcha ish stollarida mavjud</translation> <translation id="8563862697512465947">Bildirishnoma sozlamalari</translation> <translation id="857201607579416096">Menyu ekranning quyi oʻng burchagiga surildi.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590"><ph name="IME_NAME" /> ishlatilmoqda</translation> <translation id="899350903320462459">Bildirishnomani amalga oshirish uchun <ph name="LOGIN_ID" /> sifatida qurilmani qulfdan chiqaring</translation> <translation id="9017320285115481645">Family Link ota-ona kodini kiriting.</translation> +<translation id="9024331582947483881">butun ekran</translation> <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> sozlamalarini ochish</translation> <translation id="9056839673611986238">Qurilma rejadagi versiyaga qaytariladi</translation> <translation id="9065203028668620118">O‘zgartirish</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb index 869d5c0..6611e12 100644 --- a/ash/strings/ash_strings_vi.xtb +++ b/ash/strings/ash_strings_vi.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Trợ lý</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Đặt ngôn ngữ</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Khóa màn hình</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558">Chào <ph name="USERNAME" />!</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Bật/tắt <ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Di con trỏ</translation> <translation id="3098580329624789136">Xem <ph name="INTENT" /> của "<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Chụp ảnh màn hình</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation> <translation id="3126069444801937830">Khởi động lại để cập nhật</translation> <translation id="3139942575505304791">Không gian làm việc 1</translation> -<translation id="3147157020428159854">Đã dừng ghi màn hình</translation> <translation id="315116470104423982">Dữ liệu di động</translation> <translation id="3151786313568798007">Hướng</translation> <translation id="3153444934357957346">Bạn chỉ có thể có tối đa <ph name="MULTI_PROFILE_USER_LIMIT" /> tài khoản khi sử dụng tính năng đăng nhập nhiều tài khoản.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Xóa tất cả <ph name="COUNT" /> thông báo</translation> <translation id="4302592941791324970">Không dùng được</translation> <translation id="4303223480529385476">Mở rộng khu vực trạng thái</translation> -<translation id="4315586716182276649">Mở rộng kết nối Internet của điện thoại, kiểm soát tính năng Không làm phiền và tìm thiết bị. Xem các thẻ Chrome đang hoạt động của điện thoại trên <ph name="DEVICE_TYPE" />.</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">Bạn đã nhấn phím tắt của chế độ tương phản cao. Bạn có muốn bật chế độ này không?</translation> <translation id="4331809312908958774">Hệ điều hành Chrome</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Đăng nhập bằng thẻ thông minh</translation> <translation id="6059276912018042191">Các thẻ Chrome mở gần đây</translation> <translation id="6062360702481658777">Bạn sẽ tự động được đăng xuất sau <ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Dừng ghi</translation> <translation id="607652042414456612">Máy tính của bạn có thể phát hiện thiết bị Bluetooth gần đó và hiện thị dưới tên "<ph name="NAME" />" với địa chỉ là <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Bạn không thể dùng Trợ lý Google trong phiên khách.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Nhấn và giữ cả hai phím âm lượng trong 5 giây để tắt tính năng phản hồi bằng giọng nói.</translation> <translation id="7658239707568436148">Hủy</translation> <translation id="7662283695561029522">Nhấn để định cấu hình</translation> -<translation id="7683326293741220026">Có vẻ như bạn đã tắt Bluetooth trên điện thoại. Vui lòng bật Bluetooth để sử dụng Trung tâm điều khiển điện thoại.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 thông báo}other{# thông báo}}</translation> <translation id="7724603315864178912">Cắt</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Đang tính toán thời lượng pin.</translation> <translation id="8061464966246066292">Độ tương phản cao</translation> <translation id="8098591350844501178">Dừng truyền màn hình tới <ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Mở rộng kết nối Internet của điện thoại, kiểm soát tính năng Không làm phiền và tìm điện thoại. Xem các thẻ Chrome đang hoạt động của điện thoại trên <ph name="DEVICE_TYPE" />.</translation> <translation id="8113423164597455979">Bật, tất cả</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation> <translation id="8131740175452115882">Xác nhận</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> không hỗ trợ <ph name="SPECIFIED_RESOLUTION" />. Độ phân giải đã được thay đổi thành <ph name="FALLBACK_RESOLUTION" />. Hãy nhấp vào xác nhận để lưu các thay đổi. Các tùy chọn cài đặt trước sẽ được khôi phục sau <ph name="TIMEOUT_SECONDS" /> nữa.</translation> <translation id="8513108775083588393">Tự động xoay</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> của bạn có thể không sạc khi được bật.</translation> +<translation id="8553395910833293175">Đã được gán cho tất cả không gian làm việc.</translation> <translation id="8563862697512465947">Cài đặt Thông báo</translation> <translation id="857201607579416096">Đã di chuyển trình đơn vào góc dưới cùng bên phải màn hình.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Đang dùng <ph name="IME_NAME" /></translation> <translation id="899350903320462459">Mở khóa thiết bị bằng <ph name="LOGIN_ID" /> để thực hiện hành động thông báo</translation> <translation id="9017320285115481645">Nhập mã truy cập dành cho cha mẹ của Family Link.</translation> +<translation id="9024331582947483881">toàn màn hình</translation> <translation id="9047624247355796468">Mở tùy chọn cài đặt cho <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Thiết bị sẽ được hạ cấp hệ điều hành</translation> <translation id="9065203028668620118">Chỉnh sửa</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb index 060f8996..f29231c4 100644 --- a/ash/strings/ash_strings_zh-CN.xtb +++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -232,10 +232,10 @@ <translation id="3090989381251959936">开启/关闭“<ph name="FEATURE_NAME" />”功能。<ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">移动光标</translation> <translation id="3098580329624789136">获取“<ph name="QUERY" />”的<ph name="INTENT" /></translation> +<translation id="3105917916468784889">生成屏幕截图</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" />(蓝牙)</translation> <translation id="3126069444801937830">重新启动以进行更新</translation> <translation id="3139942575505304791">桌面 1</translation> -<translation id="3147157020428159854">已停止录制屏幕</translation> <translation id="315116470104423982">移动数据</translation> <translation id="3151786313568798007">方向</translation> <translation id="3153444934357957346">使用多帐号登录时,一次最多只能登入 <ph name="MULTI_PROFILE_USER_LIMIT" /> 个帐号。</translation> @@ -366,7 +366,6 @@ <translation id="4296136865091727875">清除所有 <ph name="COUNT" /> 条通知</translation> <translation id="4302592941791324970">不可用</translation> <translation id="4303223480529385476">展开状态区</translation> -<translation id="4315586716182276649">扩展您手机的互联网连接,控制勿扰模式并定位您的设备。在 <ph name="DEVICE_TYPE" /> 上查看您手机中处于打开状态的 Chrome 标签页。</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">您按下了高对比度的键盘快捷键。要开启这项功能吗?</translation> <translation id="4331809312908958774">Chrome 操作系统</translation> @@ -560,6 +559,7 @@ <translation id="6054305421211936131">使用智能卡登录</translation> <translation id="6059276912018042191">最近打开的 Chrome 标签页</translation> <translation id="6062360702481658777">您将在<ph name="LOGOUT_TIME_LEFT" />后自动退出。</translation> +<translation id="6073451960410192870">停止录制</translation> <translation id="607652042414456612">附近的蓝牙设备可检测到您的计算机(名称将显示为“<ph name="NAME" />”,地址为<ph name="ADDRESS" />)</translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />。<ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">无法在访客会话中使用 Google 助理。</translation> @@ -725,7 +725,6 @@ <translation id="7654687942625752712">同时按住两个音量键 5 秒钟,即可停用语音反馈。</translation> <translation id="7658239707568436148">取消</translation> <translation id="7662283695561029522">点按即可配置</translation> -<translation id="7683326293741220026">您手机上的蓝牙似乎未开启。请开启蓝牙以便使用 Phone Hub。</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 条通知}other{# 条通知}}</translation> <translation id="7724603315864178912">剪切</translation> @@ -773,7 +772,6 @@ <translation id="8054466585765276473">正在计算续航时间。</translation> <translation id="8061464966246066292">高对比度</translation> <translation id="8098591350844501178">停止将屏幕投射到“<ph name="RECEIVER_NAME" />”</translation> -<translation id="8108657971283652031">扩展您手机的互联网连接,控制勿扰模式并定位您的手机。在 <ph name="DEVICE_TYPE" /> 上查看您手机中处于打开状态的 Chrome 标签页。</translation> <translation id="8113423164597455979">开启,所有应用</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">确认</translation> @@ -880,6 +878,7 @@ <translation id="8990809378771970590">目前使用的是“<ph name="IME_NAME" />”</translation> <translation id="899350903320462459">以 <ph name="LOGIN_ID" /> 身份解锁设备即可执行通知操作</translation> <translation id="9017320285115481645">输入 Family Link 家长访问码。</translation> +<translation id="9024331582947483881">全屏</translation> <translation id="9047624247355796468">打开“<ph name="NETWORK_NAME" />”的设置。</translation> <translation id="9056839673611986238">设备将被回滚</translation> <translation id="9065203028668620118">编辑</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb index 2d39b4d..e327080 100644 --- a/ash/strings/ash_strings_zh-HK.xtb +++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">助理</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">設定語言</translation> +<translation id="1961832440516943645"><ph name="DATE" /> <ph name="TIME" /></translation> <translation id="1962969542251276847">鎖定螢幕</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558"><ph name="USERNAME" />,您好:</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">切換<ph name="FEATURE_NAME" />功能。<ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">移動游標</translation> <translation id="3098580329624789136">取得「<ph name="QUERY" />」的<ph name="INTENT" /></translation> +<translation id="3105917916468784889">擷取螢幕擷圖</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (藍牙)</translation> <translation id="3126069444801937830">重新啟動即可更新</translation> <translation id="3139942575505304791">桌面 1</translation> -<translation id="3147157020428159854">已停止錄影螢幕畫面</translation> <translation id="315116470104423982">流動數據</translation> <translation id="3151786313568798007">方向</translation> <translation id="3153444934357957346">使用多重登入功能時,最多只能有 <ph name="MULTI_PROFILE_USER_LIMIT" /> 個帳戶。</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">清除全部 <ph name="COUNT" /> 個通知</translation> <translation id="4302592941791324970">無法使用</translation> <translation id="4303223480529385476">展開狀態區</translation> -<translation id="4315586716182276649">延伸手機的互聯網連線、控制「請勿騷擾」功能,以及尋找裝置位置。在 <ph name="DEVICE_TYPE" /> 上查看正透過手機瀏覽的 Chrome 分頁。</translation> <translation id="4321179778687042513">ctrl</translation> <translation id="4321776623976362024">您已按下高對比度的鍵盤快速鍵。確定要旋轉螢幕嗎?</translation> <translation id="4331809312908958774">Chrome 作業系統</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">使用智能卡登入</translation> <translation id="6059276912018042191">最近開啟的 Chrome 分頁</translation> <translation id="6062360702481658777">您將於 <ph name="LOGOUT_TIME_LEFT" />後自動登出。</translation> +<translation id="6073451960410192870">停止錄影</translation> <translation id="607652042414456612">您的電腦已開放讓附近的藍牙裝置搜尋,顯示名稱為「<ph name="NAME" />」,地址則是 <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />。<ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">「Google 助理」不適用於訪客工作階段。</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">同時按住兩個音量鍵五秒,即可停用朗讀功能。</translation> <translation id="7658239707568436148">取消</translation> <translation id="7662283695561029522">輕觸即可設定</translation> -<translation id="7683326293741220026">手機上的藍牙似乎已關閉。請開啟手機的藍牙,才能使用 Phone Hub。</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 則通知}other{# 則通知}}</translation> <translation id="7724603315864178912">剪下</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">正在計算電池使用時間。</translation> <translation id="8061464966246066292">高對比模式</translation> <translation id="8098591350844501178">停止將畫面投放到「<ph name="RECEIVER_NAME" />」</translation> -<translation id="8108657971283652031">延伸手機的互聯網連線、控制「請勿騷擾」功能,以及尋找手機位置。在 <ph name="DEVICE_TYPE" /> 上查看正透過手機瀏覽的 Chrome 分頁。</translation> <translation id="8113423164597455979">已在所有應用程式上啟用通知</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation> <translation id="8131740175452115882">確定</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> 不支援 <ph name="SPECIFIED_RESOLUTION" />,解像度已變更為 <ph name="FALLBACK_RESOLUTION" />。請按一下 [確認] 以保留變更。系統會在 <ph name="TIMEOUT_SECONDS" />後還原先前的設定。</translation> <translation id="8513108775083588393">自動旋轉</translation> <translation id="8517041960877371778">您的 <ph name="DEVICE_TYPE" /> 在開啟時可能無法充電。</translation> +<translation id="8553395910833293175">已指派給所有桌面。</translation> <translation id="8563862697512465947">通知設定</translation> <translation id="857201607579416096">已經將選單移去螢幕右下角。</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">正在使用<ph name="IME_NAME" /></translation> <translation id="899350903320462459">以 <ph name="LOGIN_ID" /> 身份解鎖裝置即可執行有關通知的動作</translation> <translation id="9017320285115481645">請輸入 Family Link 家長存取碼。</translation> +<translation id="9024331582947483881">全螢幕</translation> <translation id="9047624247355796468">打開<ph name="NETWORK_NAME" />設定</translation> <translation id="9056839673611986238">系統將回復裝置</translation> <translation id="9065203028668620118">編輯</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb index 3a58a7cb..a88cf01 100644 --- a/ash/strings/ash_strings_zh-TW.xtb +++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">小幫手</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">設定語言</translation> +<translation id="1961832440516943645"><ph name="DATE" /> <ph name="TIME" /></translation> <translation id="1962969542251276847">鎖定螢幕</translation> <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation> <translation id="1972950159383891558"><ph name="USERNAME" />,你好:</translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">切換<ph name="FEATURE_NAME" />功能。<ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">移動游標</translation> <translation id="3098580329624789136">取得「<ph name="QUERY" />」的<ph name="INTENT" /></translation> +<translation id="3105917916468784889">擷取螢幕畫面</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (藍牙)</translation> <translation id="3126069444801937830">重新啟動即可更新</translation> <translation id="3139942575505304791">桌面 1</translation> -<translation id="3147157020428159854">已停止錄製螢幕畫面</translation> <translation id="315116470104423982">行動數據</translation> <translation id="3151786313568798007">方向</translation> <translation id="3153444934357957346">使用多帳戶登入功能時,一次最多只能登入 <ph name="MULTI_PROFILE_USER_LIMIT" /> 個帳戶。</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">清除全部 <ph name="COUNT" /> 則通知</translation> <translation id="4302592941791324970">無法使用</translation> <translation id="4303223480529385476">展開狀態區</translation> -<translation id="4315586716182276649">延伸手機的網際網路連線、控管「零打擾」功能,以及尋找裝置所在的位置。在 <ph name="DEVICE_TYPE" /> 上查看正透過手機瀏覽的 Chrome 分頁。</translation> <translation id="4321179778687042513">Ctrl</translation> <translation id="4321776623976362024">你按下了高對比的鍵盤快速鍵。確定要啟用這項功能嗎?</translation> <translation id="4331809312908958774">Chrome 作業系統</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">使用智慧型卡片登入</translation> <translation id="6059276912018042191">最近開啟的 Chrome 分頁</translation> <translation id="6062360702481658777">你將於 <ph name="LOGOUT_TIME_LEFT" />後自動登出。</translation> +<translation id="6073451960410192870">停止錄影</translation> <translation id="607652042414456612">你的電腦已開放附近的藍牙裝置搜尋,顯示名稱為「<ph name="NAME" />」,位址則是 <ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />。<ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Google 助理不支援訪客工作階段。</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">同時按住音量調高和調低鍵五秒,即可停用互動朗讀。</translation> <translation id="7658239707568436148">取消</translation> <translation id="7662283695561029522">輕觸即可進行設定</translation> -<translation id="7683326293741220026">手機的藍牙功能似乎已關閉。請開啟手機的藍牙功能,才能使用 Phone Hub。</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 則通知}other{# 則通知}}</translation> <translation id="7724603315864178912">剪下</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">正在計算電池使用時間。</translation> <translation id="8061464966246066292">高對比模式</translation> <translation id="8098591350844501178">停止將畫面投放到「<ph name="RECEIVER_NAME" />」</translation> -<translation id="8108657971283652031">延伸手機的網際網路連線、控管「零打擾」功能,以及尋找手機所在的位置。在 <ph name="DEVICE_TYPE" /> 上查看正透過手機瀏覽的 Chrome 分頁。</translation> <translation id="8113423164597455979">開啟,所有應用程式</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">確認</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> 不支援 <ph name="SPECIFIED_RESOLUTION" />,解析度已變更為 <ph name="FALLBACK_RESOLUTION" />。請按一下 [確認] 以保留變更。系統會在 <ph name="TIMEOUT_SECONDS" />後還原先前的設定。</translation> <translation id="8513108775083588393">自動旋轉</translation> <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> 在開啟時可能無法充電。</translation> +<translation id="8553395910833293175">已指派給所有桌面。</translation> <translation id="8563862697512465947">通知設定</translation> <translation id="857201607579416096">已將選單移至畫面右下角。</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">目前使用<ph name="IME_NAME" /></translation> <translation id="899350903320462459">以 <ph name="LOGIN_ID" /> 帳戶解鎖裝置,即可執行通知動作</translation> <translation id="9017320285115481645">請輸入 Family Link 家長存取碼。</translation> +<translation id="9024331582947483881">全螢幕鍵</translation> <translation id="9047624247355796468">開啟「<ph name="NETWORK_NAME" />」設定</translation> <translation id="9056839673611986238">裝置將復原</translation> <translation id="9065203028668620118">編輯</translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb index 3282869b..f2c2be4 100644 --- a/ash/strings/ash_strings_zu.xtb +++ b/ash/strings/ash_strings_zu.xtb
@@ -112,6 +112,7 @@ <translation id="1951012854035635156">Umsizi</translation> <translation id="1957803754585243749">0°</translation> <translation id="1957958912175573503">Setha ulwimi lwakho</translation> +<translation id="1961832440516943645"><ph name="DATE" />, <ph name="TIME" /></translation> <translation id="1962969542251276847">Khiya isikrini</translation> <translation id="1969011864782743497">I-<ph name="DEVICE_NAME" /> (i-USB)</translation> <translation id="1972950159383891558">Sawubona, <ph name="USERNAME" /></translation> @@ -232,10 +233,10 @@ <translation id="3090989381251959936">Guqula i-<ph name="FEATURE_NAME" />. <ph name="STATE_TEXT" /></translation> <translation id="309749186376891736">Hambisa ikhesa</translation> <translation id="3098580329624789136">Thola i-<ph name="INTENT" /> ye-"<ph name="QUERY" />"</translation> +<translation id="3105917916468784889">Thatha isithombe-sikrini</translation> <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (I-Bluetooth)</translation> <translation id="3126069444801937830">Phinda uqalise ukuze ubuyekeze</translation> <translation id="3139942575505304791">Itafula 1</translation> -<translation id="3147157020428159854">Okokuqopha iskrini kumisiwe</translation> <translation id="315116470104423982">Idatha yeselula</translation> <translation id="3151786313568798007">Umumo</translation> <translation id="3153444934357957346">Ungaba nama-akhawunti angafika kwangu-<ph name="MULTI_PROFILE_USER_LIMIT" /> kuphela ekungeneni ngemvume okuningi.</translation> @@ -366,7 +367,6 @@ <translation id="4296136865091727875">Susa zonke izaziso ezingu-<ph name="COUNT" /></translation> <translation id="4302592941791324970">Ayitholakali</translation> <translation id="4303223480529385476">Nweba indawo yesimo</translation> -<translation id="4315586716182276649">Nweba ukuxhumekwa kwe-inthanethi yefoni yakho, lawula okuthi Ungaphazamisi bese uthola idivayisi yakho. Buka amathebhu we-Chrome asebenzayo kusuka kufoni yakho ku-<ph name="DEVICE_TYPE" /> yakho.</translation> <translation id="4321179778687042513">i-ctrl</translation> <translation id="4321776623976362024">Ucindezele isinqamuleli sekhibhodi sokugqamisa okuphezulu. Uyafuna ukusivula?</translation> <translation id="4331809312908958774">I-Chrome OS</translation> @@ -560,6 +560,7 @@ <translation id="6054305421211936131">Ngena ngekhadi elisebenza ngobuchwepheshe besimanje</translation> <translation id="6059276912018042191">Amathebhu we-Chrome wakamuva</translation> <translation id="6062360702481658777">Uzokhishwa ngemvume ngokuzenzakalela ku-<ph name="LOGOUT_TIME_LEFT" />.</translation> +<translation id="6073451960410192870">Misa ukurekhoda</translation> <translation id="607652042414456612">Ikhompyutha yakho iyatholakala kumadivayisi aseduze we-Bluetooth futhi izovela njenge-"<ph name="NAME" />" ngekheli elingu-<ph name="ADDRESS" /></translation> <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation> <translation id="612734058257491180">Umsizi we-Google awutholakali kuseshini yesihambeli.</translation> @@ -725,7 +726,6 @@ <translation id="7654687942625752712">Cindezela uphinde ubambe bobabili okhiye bevolumu amasekhondi amahlanu ukuze ukhubaze inkulumo ekhulunyiwe.</translation> <translation id="7658239707568436148">Khansela</translation> <translation id="7662283695561029522">Thepha ukuze ulungiselele</translation> -<translation id="7683326293741220026">Kubonakala sengathi i-Bluetooth ivaliwe kufoni yakho. Sicela uvule i-Bluetooth kufoni yakho ukuze usebenzise Ihabhu yefoni.</translation> <translation id="7705524343798198388">I-VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 isaziso}one{# izaziso}other{# izaziso}}</translation> <translation id="7724603315864178912">Sika</translation> @@ -773,7 +773,6 @@ <translation id="8054466585765276473">Ibala isikhathi sebhethri</translation> <translation id="8061464966246066292">Ukugqama okuphezulu</translation> <translation id="8098591350844501178">Misa ukusakaza isikrini ku-<ph name="RECEIVER_NAME" /></translation> -<translation id="8108657971283652031">Nweba ukuxhumekwa kwe-inthanethi yefoni yakho, lawula okuthi Ungaphazamisi bese uthola ifoni yakho. Buka amathebhu we-Chrome asebenzayo kusuka kufoni yakho ku-<ph name="DEVICE_TYPE" /> yakho.</translation> <translation id="8113423164597455979">Uvule ama-app</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8131740175452115882">Qinisekisa</translation> @@ -822,6 +821,7 @@ <translation id="8492573885090281069">I-<ph name="DISPLAY_NAME" /> ayisekeli i-<ph name="SPECIFIED_RESOLUTION" />. Ukulungiswa kuguqulelwe ku-<ph name="FALLBACK_RESOLUTION" />. Chofoza okuthi qinisekisa ukuze ugcine izinguquko. Izilungiselelo zangaphambilini zizobuyiselwa nge-<ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">I-auto-rotate</translation> <translation id="8517041960877371778">I-<ph name="DEVICE_TYPE" /> yakho ingahle ingashaji ngenkathi ivulekile.</translation> +<translation id="8553395910833293175">Sewusayinde kuwo wonke amatafula.</translation> <translation id="8563862697512465947">Izilungiselelo Zesaziso</translation> <translation id="857201607579416096">Imenyu iyiswe phansi ekhoneni elingakwesokudla sesikrini.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> @@ -880,6 +880,7 @@ <translation id="8990809378771970590">Usebenzisa i-<ph name="IME_NAME" /></translation> <translation id="899350903320462459">Vula amadivayisi njenge-<ph name="LOGIN_ID" /> ukuze wenze isenzo sesaziso</translation> <translation id="9017320285115481645">Faka ikhodi yokufinyelela yomzali ye-Family Link.</translation> +<translation id="9024331582947483881">isikrini esigcwele</translation> <translation id="9047624247355796468">Vula izilungiselelo ze-<ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">Idivayisi izobuyiselwa emuva</translation> <translation id="9065203028668620118">Hlela</translation>
diff --git a/ash/system/holding_space/holding_space_item_view_delegate.cc b/ash/system/holding_space/holding_space_item_view_delegate.cc index 90c376f5..e08a27f 100644 --- a/ash/system/holding_space/holding_space_item_view_delegate.cc +++ b/ash/system/holding_space/holding_space_item_view_delegate.cc
@@ -227,7 +227,7 @@ OpenItems(GetSelection()); } -bool HoldingSpaceItemViewDelegate::OnHoldingSpaceTrayKeyPressed( +bool HoldingSpaceItemViewDelegate::OnHoldingSpaceTrayBubbleKeyPressed( const ui::KeyEvent& event) { // The ENTER key should open all selected holding space items. if (event.key_code() == ui::KeyboardCode::VKEY_RETURN) { @@ -239,16 +239,14 @@ return false; } -void HoldingSpaceItemViewDelegate::OnHoldingSpaceItemViewsSectionMousePressed( - const ui::MouseEvent& event) { - SetSelection({}); +void HoldingSpaceItemViewDelegate::OnHoldingSpaceTrayChildBubbleGestureEvent( + const ui::GestureEvent& event) { + if (event.type() == ui::ET_GESTURE_TAP) + SetSelection({}); } -void HoldingSpaceItemViewDelegate::OnHoldingSpaceItemViewsSectionGestureEvent( - const ui::GestureEvent& event) { - if (event.type() != ui::ET_GESTURE_TAP) - return; - +void HoldingSpaceItemViewDelegate::OnHoldingSpaceTrayChildBubbleMousePressed( + const ui::MouseEvent& event) { SetSelection({}); }
diff --git a/ash/system/holding_space/holding_space_item_view_delegate.h b/ash/system/holding_space/holding_space_item_view_delegate.h index 37437ed..62374c8 100644 --- a/ash/system/holding_space/holding_space_item_view_delegate.h +++ b/ash/system/holding_space/holding_space_item_view_delegate.h
@@ -86,16 +86,14 @@ void OnHoldingSpaceItemViewMouseReleased(HoldingSpaceItemView* view, const ui::MouseEvent& event); - // Invoked when the tray receives the specified key pressed `event`. - bool OnHoldingSpaceTrayKeyPressed(const ui::KeyEvent& event); + // Invoked when the tray bubble receives the specified key pressed `event`. + bool OnHoldingSpaceTrayBubbleKeyPressed(const ui::KeyEvent& event); - // Invoked when the item views section receives the specified mouse pressed - // `event`. - void OnHoldingSpaceItemViewsSectionMousePressed(const ui::MouseEvent& event); + // Invoked when a tray child bubble receives the specified gesture `event`. + void OnHoldingSpaceTrayChildBubbleGestureEvent(const ui::GestureEvent& event); - // Invoked when the item views section receives the specified gesture `event`. - void OnHoldingSpaceItemViewsSectionGestureEvent( - const ui::GestureEvent& event); + // Invoked when a tray child bubble receives the given mouse pressed `event`. + void OnHoldingSpaceTrayChildBubbleMousePressed(const ui::MouseEvent& event); private: // views::ContextMenuController:
diff --git a/ash/system/holding_space/holding_space_item_views_section.cc b/ash/system/holding_space/holding_space_item_views_section.cc index c8eeab2..fe337b2 100644 --- a/ash/system/holding_space/holding_space_item_views_section.cc +++ b/ash/system/holding_space/holding_space_item_views_section.cc
@@ -252,16 +252,6 @@ PreferredSizeChanged(); } -bool HoldingSpaceItemViewsSection::OnMousePressed(const ui::MouseEvent& event) { - delegate_->OnHoldingSpaceItemViewsSectionMousePressed(event); - return true; -} - -void HoldingSpaceItemViewsSection::OnGestureEvent(ui::GestureEvent* event) { - delegate_->OnHoldingSpaceItemViewsSectionGestureEvent(*event); - views::View::OnGestureEvent(event); -} - void HoldingSpaceItemViewsSection::OnHoldingSpaceItemsAdded( const std::vector<const HoldingSpaceItem*>& items) { const bool needs_update = std::any_of(
diff --git a/ash/system/holding_space/holding_space_item_views_section.h b/ash/system/holding_space/holding_space_item_views_section.h index 4cc6ceb..9a5f1d6 100644 --- a/ash/system/holding_space/holding_space_item_views_section.h +++ b/ash/system/holding_space/holding_space_item_views_section.h
@@ -53,8 +53,6 @@ void ChildVisibilityChanged(views::View* child) override; void PreferredSizeChanged() override; void ViewHierarchyChanged(const views::ViewHierarchyChangedDetails&) override; - void OnGestureEvent(ui::GestureEvent* event) override; - bool OnMousePressed(const ui::MouseEvent& event) override; // `HoldingSpaceModelObserver` events forwarded from the parent // `HoldingSpaceTrayChildBubble`. Note that events may be withheld from this
diff --git a/ash/system/holding_space/holding_space_tray_bubble.cc b/ash/system/holding_space/holding_space_tray_bubble.cc index 66a7b6dd..3df0a2b 100644 --- a/ash/system/holding_space/holding_space_tray_bubble.cc +++ b/ash/system/holding_space/holding_space_tray_bubble.cc
@@ -62,34 +62,39 @@ time_of_first_entry - time_of_first_availability); } -// HoldingSpaceEventFilter ----------------------------------------------------- -class HoldingSpaceEventFilter : public ui::EventHandler { +// HoldingSpaceTrayBubbleEventHandler ------------------------------------------ +class HoldingSpaceTrayBubbleEventHandler : public ui::EventHandler { public: - HoldingSpaceEventFilter(HoldingSpaceItemViewDelegate* delegate) + explicit HoldingSpaceTrayBubbleEventHandler( + HoldingSpaceItemViewDelegate* delegate) : delegate_(delegate) { aura::Env::GetInstance()->AddPreTargetHandler( this, ui::EventTarget::Priority::kSystem); } - ~HoldingSpaceEventFilter() override { + + HoldingSpaceTrayBubbleEventHandler( + const HoldingSpaceTrayBubbleEventHandler&) = delete; + HoldingSpaceTrayBubbleEventHandler& operator=( + const HoldingSpaceTrayBubbleEventHandler&) = delete; + + ~HoldingSpaceTrayBubbleEventHandler() override { aura::Env::GetInstance()->RemovePreTargetHandler(this); } - HoldingSpaceEventFilter(const HoldingSpaceEventFilter&) = delete; - HoldingSpaceEventFilter& operator=(const HoldingSpaceEventFilter&) = delete; private: // ui::EventHandler: void OnKeyEvent(ui::KeyEvent* event) override { if (event->type() == ui::ET_KEY_PRESSED && - delegate_->OnHoldingSpaceTrayKeyPressed(*event)) { + delegate_->OnHoldingSpaceTrayBubbleKeyPressed(*event)) { event->StopPropagation(); } - return; } - HoldingSpaceItemViewDelegate* delegate_; + HoldingSpaceItemViewDelegate* const delegate_; }; // ChildBubbleContainerLayout -------------------------------------------------- + // A class similar to a `views::LayoutManager` which supports calculating and // applying `views::ProposedLayout`s. Views are laid out similar to a vertical // `views::BoxLayout` with the first child flexing to cede layout space if the @@ -320,7 +325,8 @@ ->frame_view() ->SetVisible(false); - event_filter_ = std::make_unique<HoldingSpaceEventFilter>(&delegate_); + event_handler_ = + std::make_unique<HoldingSpaceTrayBubbleEventHandler>(&delegate_); PrefService* const prefs = Shell::Get()->session_controller()->GetLastActiveUserPrefService(); @@ -341,7 +347,6 @@ } HoldingSpaceTrayBubble::~HoldingSpaceTrayBubble() { - event_filter_.reset(); bubble_wrapper_->bubble_view()->ResetDelegate(); // Explicitly reset child bubbles so that they will stop observing the holding
diff --git a/ash/system/holding_space/holding_space_tray_bubble.h b/ash/system/holding_space/holding_space_tray_bubble.h index 1302a86..132dcac7 100644 --- a/ash/system/holding_space/holding_space_tray_bubble.h +++ b/ash/system/holding_space/holding_space_tray_bubble.h
@@ -66,9 +66,9 @@ // Views owned by view hierarchy. ChildBubbleContainer* child_bubble_container_; std::vector<HoldingSpaceTrayChildBubble*> child_bubbles_; - std::unique_ptr<ui::EventHandler> event_filter_; std::unique_ptr<TrayBubbleWrapper> bubble_wrapper_; + std::unique_ptr<ui::EventHandler> event_handler_; ScopedObserver<Shelf, ShelfObserver> shelf_observer_{this}; ScopedObserver<TabletModeController, TabletModeObserver>
diff --git a/ash/system/holding_space/holding_space_tray_child_bubble.cc b/ash/system/holding_space/holding_space_tray_child_bubble.cc index ebade24..0e2424b 100644 --- a/ash/system/holding_space/holding_space_tray_child_bubble.cc +++ b/ash/system/holding_space/holding_space_tray_child_bubble.cc
@@ -8,6 +8,7 @@ #include "ash/public/cpp/holding_space/holding_space_constants.h" #include "ash/style/ash_color_provider.h" +#include "ash/system/holding_space/holding_space_item_view_delegate.h" #include "ash/system/holding_space/holding_space_item_views_section.h" #include "ash/system/holding_space/holding_space_util.h" #include "ash/system/tray/tray_constants.h" @@ -252,6 +253,16 @@ PreferredSizeChanged(); } +void HoldingSpaceTrayChildBubble::OnGestureEvent(ui::GestureEvent* event) { + delegate_->OnHoldingSpaceTrayChildBubbleGestureEvent(*event); + views::View::OnGestureEvent(event); +} + +bool HoldingSpaceTrayChildBubble::OnMousePressed(const ui::MouseEvent& event) { + delegate_->OnHoldingSpaceTrayChildBubbleMousePressed(event); + return true; +} + void HoldingSpaceTrayChildBubble::MaybeAnimateIn() { // Don't preempt an out animation as new content will populate and be animated // in, if any exists, once the out animation completes.
diff --git a/ash/system/holding_space/holding_space_tray_child_bubble.h b/ash/system/holding_space/holding_space_tray_child_bubble.h index d7e0362b..76af9c8e 100644 --- a/ash/system/holding_space/holding_space_tray_child_bubble.h +++ b/ash/system/holding_space/holding_space_tray_child_bubble.h
@@ -67,6 +67,8 @@ const char* GetClassName() const override; void ChildPreferredSizeChanged(views::View* child) override; void ChildVisibilityChanged(views::View* child) override; + void OnGestureEvent(ui::GestureEvent* event) override; + bool OnMousePressed(const ui::MouseEvent& event) override; // Invoked to animate in/out this view if necessary. void MaybeAnimateIn();
diff --git a/ash/system/holding_space/holding_space_tray_unittest.cc b/ash/system/holding_space/holding_space_tray_unittest.cc index 807bd71..c6f6bb1e 100644 --- a/ash/system/holding_space/holding_space_tray_unittest.cc +++ b/ash/system/holding_space/holding_space_tray_unittest.cc
@@ -4,6 +4,7 @@ #include "ash/system/holding_space/holding_space_tray.h" +#include <array> #include <deque> #include <vector> @@ -1678,35 +1679,34 @@ AddItem(HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/fake2")); EXPECT_TRUE(test_api()->IsShowingInShelf()); - // Show the bubble. + // Show the bubble and cache holding space item views. test_api()->Show(); std::vector<views::View*> download_chips = test_api()->GetDownloadChips(); - HoldingSpaceItemView* holding_space_item = - HoldingSpaceItemView::Cast(download_chips[0]); + ASSERT_EQ(2u, download_chips.size()); + std::array<HoldingSpaceItemView*, 2> item_views = { + HoldingSpaceItemView::Cast(download_chips[0]), + HoldingSpaceItemView::Cast(download_chips[1])}; // Click an item chip. The view should be selected. Click(download_chips[0], 0); - ASSERT_TRUE(holding_space_item->selected()); + ASSERT_TRUE(item_views[0]->selected()); + ASSERT_FALSE(item_views[1]->selected()); + // Clicking on the parent view should deselect item. Click(download_chips[0]->parent(), 0); - ASSERT_FALSE(holding_space_item->selected()); - - test_api()->Show(); - - download_chips = test_api()->GetDownloadChips(); - holding_space_item = HoldingSpaceItemView::Cast(download_chips[0]); - HoldingSpaceItemView* holding_space_item_2 = - HoldingSpaceItemView::Cast(download_chips[1]); + ASSERT_FALSE(item_views[0]->selected()); + ASSERT_FALSE(item_views[1]->selected()); // Click on both items to select them both. Click(download_chips[0], ui::EF_SHIFT_DOWN); Click(download_chips[1], ui::EF_SHIFT_DOWN); - ASSERT_TRUE(holding_space_item->selected()); - ASSERT_TRUE(holding_space_item_2->selected()); + ASSERT_TRUE(item_views[0]->selected()); + ASSERT_TRUE(item_views[1]->selected()); + // Clicking on the parent view should deselect both items. Click(download_chips[0]->parent(), 0); - ASSERT_FALSE(holding_space_item->selected()); - ASSERT_FALSE(holding_space_item_2->selected()); + ASSERT_FALSE(item_views[0]->selected()); + ASSERT_FALSE(item_views[1]->selected()); } INSTANTIATE_TEST_SUITE_P(All, HoldingSpaceTrayTest, testing::Bool());
diff --git a/ash/system/palette/tools/metalayer_unittest.cc b/ash/system/palette/tools/metalayer_unittest.cc index 57cce029b..edadd0622 100644 --- a/ash/system/palette/tools/metalayer_unittest.cc +++ b/ash/system/palette/tools/metalayer_unittest.cc
@@ -78,7 +78,6 @@ chromeos::assistant::AssistantAllowedState::DISALLOWED_BY_POLICY, chromeos::assistant::AssistantAllowedState::DISALLOWED_BY_LOCALE, chromeos::assistant::AssistantAllowedState::DISALLOWED_BY_NONPRIMARY_USER, - chromeos::assistant::AssistantAllowedState::DISALLOWED_BY_SUPERVISED_USER, chromeos::assistant::AssistantAllowedState::DISALLOWED_BY_INCOGNITO, }; const base::string16 kLoading(base::ASCIIToUTF16("loading"));
diff --git a/ash/system/unified/notification_icons_controller.cc b/ash/system/unified/notification_icons_controller.cc new file mode 100644 index 0000000..11908450 --- /dev/null +++ b/ash/system/unified/notification_icons_controller.cc
@@ -0,0 +1,82 @@ +// 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 "ash/system/unified/notification_icons_controller.h" + +#include "ash/resources/vector_icons/vector_icons.h" +#include "ash/system/tray/tray_container.h" +#include "ash/system/tray/tray_item_view.h" +#include "ash/system/unified/unified_system_tray.h" +#include "ash/system/unified/unified_system_tray_model.h" +#include "ui/gfx/paint_vector_icon.h" +#include "ui/views/controls/image_view.h" + +namespace ash { + +namespace { + +// Maximum number of notification icons shown in the system tray button. +constexpr int kMaxNotificationIconsShown = 2; + +} // namespace + +class NotificationIconTrayItemView : public TrayItemView { + public: + explicit NotificationIconTrayItemView(Shelf* shelf) : TrayItemView(shelf) { + CreateImageView(); + // TODO(crbug.com/1161557): Update icon to be the icon of the shown + // notification. + image_view()->SetImage(CreateVectorIcon( + kSystemTrayCapsLockIcon, + AshColorProvider::Get()->GetContentLayerColor( + AshColorProvider::ContentLayerType::kIconColorPrimary))); + } + ~NotificationIconTrayItemView() override = default; + NotificationIconTrayItemView(const NotificationIconTrayItemView&) = delete; + NotificationIconTrayItemView& operator=(const NotificationIconTrayItemView&) = + delete; + + // TrayItemView: + void HandleLocaleChange() override { + // TODO(crbug.com/1161557) : Finish this function. + } + + const char* GetClassName() const override { + return "NotificationIconTrayItemView"; + } +}; + +NotificationIconsController::NotificationIconsController( + UnifiedSystemTray* tray) + : tray_(tray) { + system_tray_model_observation_.Observe(tray_->model()); +} + +NotificationIconsController::~NotificationIconsController() = default; + +void NotificationIconsController::AddNotificationTrayItems( + TrayContainer* tray_container) { + for (int i = 0; i < kMaxNotificationIconsShown; ++i) { + tray_items_.push_back(tray_container->AddChildView( + std::make_unique<NotificationIconTrayItemView>(tray_->shelf()))); + } + + OnSystemTrayButtonSizeChanged(tray_->model()->GetSystemTrayButtonSize()); + + // TODO(crbug.com/1161557): Handle only showing important notification icons. +} + +void NotificationIconsController::SetVisible(bool visible) { + for (TrayItemView* tray_item : tray_items_) { + tray_item->SetVisible(visible); + } +} + +void NotificationIconsController::OnSystemTrayButtonSizeChanged( + UnifiedSystemTrayModel::SystemTrayButtonSize system_tray_size) { + SetVisible(system_tray_size != + UnifiedSystemTrayModel::SystemTrayButtonSize::kSmall); +} + +} // namespace ash
diff --git a/ash/system/unified/notification_icons_controller.h b/ash/system/unified/notification_icons_controller.h new file mode 100644 index 0000000..c61d461 --- /dev/null +++ b/ash/system/unified/notification_icons_controller.h
@@ -0,0 +1,55 @@ +// 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 ASH_SYSTEM_UNIFIED_NOTIFICATION_ICONS_CONTROLLER_H_ +#define ASH_SYSTEM_UNIFIED_NOTIFICATION_ICONS_CONTROLLER_H_ + +#include "ash/ash_export.h" +#include "ash/system/unified/unified_system_tray_model.h" +#include "base/scoped_observation.h" + +namespace ash { + +class UnifiedSystemTray; +class TrayContainer; +class TrayItemView; + +// Controller for notification icons in UnifiedSystemTray button. The icons will +// be displayed in medium or large screen size and only for important +// notifications. +class ASH_EXPORT NotificationIconsController + : public UnifiedSystemTrayModel::Observer { + public: + explicit NotificationIconsController(UnifiedSystemTray* tray); + ~NotificationIconsController() override; + NotificationIconsController(const NotificationIconsController&) = delete; + NotificationIconsController& operator=(const NotificationIconsController&) = + delete; + + // Initialize the view by adding items to the container of the tray. + void AddNotificationTrayItems(TrayContainer* tray_container); + + // Modify visibility of all the items in the view. + void SetVisible(bool visible); + + // UnifiedSystemTrayModel::Observer: + void OnSystemTrayButtonSizeChanged( + UnifiedSystemTrayModel::SystemTrayButtonSize system_tray_size) override; + + std::list<TrayItemView*> tray_items() { return tray_items_; } + + private: + // Contains tray items related to notification icons (icons and counter) that + // are added to tray container. All items are owned by views hierarchy. + std::list<TrayItemView*> tray_items_; + + UnifiedSystemTray* tray_; + base::ScopedObservation<UnifiedSystemTrayModel, + UnifiedSystemTrayModel::Observer> + system_tray_model_observation_{this}; +}; + +} // namespace ash + +#endif // ASH_SYSTEM_UNIFIED_NOTIFICATION_ICONS_CONTROLLER_H_
diff --git a/ash/system/unified/notification_icons_controller_unittest.cc b/ash/system/unified/notification_icons_controller_unittest.cc new file mode 100644 index 0000000..edc393b --- /dev/null +++ b/ash/system/unified/notification_icons_controller_unittest.cc
@@ -0,0 +1,55 @@ +// 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 "ash/system/unified/notification_icons_controller.h" + +#include "ash/system/tray/tray_item_view.h" +#include "ash/system/unified/unified_system_tray.h" +#include "ash/test/ash_test_base.h" + +namespace ash { + +class NotificationIconsControllerTest : public AshTestBase { + public: + NotificationIconsControllerTest() = default; + ~NotificationIconsControllerTest() override = default; + + // AshTestBase: + void SetUp() override { + AshTestBase::SetUp(); + tray_ = std::make_unique<UnifiedSystemTray>(GetPrimaryShelf()); + notification_icons_controller_ = + std::make_unique<NotificationIconsController>(tray_.get()); + notification_icons_controller_->AddNotificationTrayItems( + tray_->tray_container()); + } + + void TearDown() override { + notification_icons_controller_.reset(); + tray_.reset(); + AshTestBase::TearDown(); + } + + protected: + std::unique_ptr<UnifiedSystemTray> tray_; + std::unique_ptr<NotificationIconsController> notification_icons_controller_; +}; + +TEST_F(NotificationIconsControllerTest, DisplayChanged) { + // Notification icons should not be shown in small screen size. + UpdateDisplay("600x600"); + EXPECT_FALSE( + notification_icons_controller_->tray_items().front()->GetVisible()); + + // Notification icons should be shown in medium and large screen size. + UpdateDisplay("800x800"); + EXPECT_TRUE( + notification_icons_controller_->tray_items().front()->GetVisible()); + + UpdateDisplay("1680x800"); + EXPECT_TRUE( + notification_icons_controller_->tray_items().front()->GetVisible()); +} + +} // namespace ash
diff --git a/ash/system/unified/unified_system_tray.cc b/ash/system/unified/unified_system_tray.cc index edf3808..28aefab 100644 --- a/ash/system/unified/unified_system_tray.cc +++ b/ash/system/unified/unified_system_tray.cc
@@ -29,6 +29,7 @@ #include "ash/system/unified/ime_mode_view.h" #include "ash/system/unified/managed_device_tray_item_view.h" #include "ash/system/unified/notification_counter_view.h" +#include "ash/system/unified/notification_icons_controller.h" #include "ash/system/unified/unified_slider_bubble_controller.h" #include "ash/system/unified/unified_system_tray_bubble.h" #include "ash/system/unified/unified_system_tray_model.h" @@ -124,6 +125,8 @@ std::make_unique<UnifiedSliderBubbleController>(this)), privacy_screen_toast_controller_( std::make_unique<PrivacyScreenToastController>(this)), + notification_icons_controller_( + std::make_unique<NotificationIconsController>(this)), current_locale_view_(new CurrentLocaleView(shelf)), ime_mode_view_(new ImeModeView(shelf)), managed_device_view_(new ManagedDeviceTrayItemView(shelf)), @@ -139,6 +142,12 @@ kUnifiedTrayContentPadding - ShelfConfig::Get()->status_area_hit_region_padding(), 0); + + if (features::IsScalableStatusAreaEnabled()) { + notification_icons_controller_->AddNotificationTrayItems(tray_container()); + for (TrayItemView* tray_item : notification_icons_controller_->tray_items()) + tray_items_.push_back(tray_item); + } AddTrayItemToContainer(current_locale_view_); AddTrayItemToContainer(ime_mode_view_); AddTrayItemToContainer(managed_device_view_); @@ -494,4 +503,5 @@ tray_items_.push_back(tray_item); tray_container()->AddChildView(tray_item); } + } // namespace ash
diff --git a/ash/system/unified/unified_system_tray.h b/ash/system/unified/unified_system_tray.h index 05622fef..3cab8fa 100644 --- a/ash/system/unified/unified_system_tray.h +++ b/ash/system/unified/unified_system_tray.h
@@ -29,6 +29,7 @@ class ImeModeView; class ManagedDeviceTrayItemView; class NotificationCounterView; +class NotificationIconsController; class QuietModeView; class PrivacyScreenToastController; class TrayItemView; @@ -204,6 +205,10 @@ const std::unique_ptr<PrivacyScreenToastController> privacy_screen_toast_controller_; + // Manages showing notification icons in the tray. + const std::unique_ptr<NotificationIconsController> + notification_icons_controller_; + CurrentLocaleView* const current_locale_view_; ImeModeView* const ime_mode_view_; ManagedDeviceTrayItemView* const managed_device_view_;
diff --git a/ash/system/unified/unified_system_tray_controller.cc b/ash/system/unified/unified_system_tray_controller.cc index 02f93d2..e2220263 100644 --- a/ash/system/unified/unified_system_tray_controller.cc +++ b/ash/system/unified/unified_system_tray_controller.cc
@@ -441,6 +441,7 @@ AddFeaturePodItem(std::make_unique<PrivacyScreenFeaturePodController>()); if (features::IsCaptureModeEnabled()) AddFeaturePodItem(std::make_unique<CaptureModeFeaturePodController>(this)); + AddFeaturePodItem(std::make_unique<NearbyShareFeaturePodController>(this)); AddFeaturePodItem(std::make_unique<NightLightFeaturePodController>(this)); AddFeaturePodItem(std::make_unique<CastFeaturePodController>(this)); AddFeaturePodItem(std::make_unique<VPNFeaturePodController>(this)); @@ -448,7 +449,6 @@ AddFeaturePodItem(std::make_unique<LocaleFeaturePodController>(this)); if (features::IsDarkLightModeEnabled()) AddFeaturePodItem(std::make_unique<DarkModeFeaturePodController>(this)); - AddFeaturePodItem(std::make_unique<NearbyShareFeaturePodController>(this)); // If you want to add a new feature pod item, add here.
diff --git a/ash/wm/desks/desk_animation_base.cc b/ash/wm/desks/desk_animation_base.cc index 6e30aff..7d0411b 100644 --- a/ash/wm/desks/desk_animation_base.cc +++ b/ash/wm/desks/desk_animation_base.cc
@@ -27,7 +27,10 @@ DCHECK_GE(ending_desk_index_, 0); } -DeskAnimationBase::~DeskAnimationBase() = default; +DeskAnimationBase::~DeskAnimationBase() { + for (auto& observer : controller_->observers_) + observer.OnDeskSwitchAnimationFinished(); +} void DeskAnimationBase::Launch() { for (auto& observer : controller_->observers_) @@ -128,9 +131,6 @@ throughput_tracker_.Stop(); - for (auto& observer : controller_->observers_) - observer.OnDeskSwitchAnimationFinished(); - if (skip_notify_controller_on_animation_finished_for_testing_) return;
diff --git a/ash/wm/desks/desks_controller.cc b/ash/wm/desks/desks_controller.cc index 663e5c4..efd42a8 100644 --- a/ash/wm/desks/desks_controller.cc +++ b/ash/wm/desks/desks_controller.cc
@@ -292,15 +292,18 @@ return desks_.size() < desks_util::GetMaxNumberOfDesks(); } -Desk* DesksController::GetNextDesk() const { - int next_index = GetDeskIndex(GetTargetActiveDesk()); +Desk* DesksController::GetNextDesk(bool use_target_active_desk) const { + int next_index = use_target_active_desk ? GetDeskIndex(GetTargetActiveDesk()) + : GetActiveDeskIndex(); if (++next_index >= static_cast<int>(desks_.size())) return nullptr; return desks_[next_index].get(); } -Desk* DesksController::GetPreviousDesk() const { - int previous_index = GetDeskIndex(GetTargetActiveDesk()); +Desk* DesksController::GetPreviousDesk(bool use_target_active_desk) const { + int previous_index = use_target_active_desk + ? GetDeskIndex(GetTargetActiveDesk()) + : GetActiveDeskIndex(); if (--previous_index < 0) return nullptr; return desks_[previous_index].get();
diff --git a/ash/wm/desks/desks_controller.h b/ash/wm/desks/desks_controller.h index 09aafe9..6c1d04e 100644 --- a/ash/wm/desks/desks_controller.h +++ b/ash/wm/desks/desks_controller.h
@@ -111,11 +111,11 @@ // there is at least one single desk at any time. bool CanRemoveDesks() const; - // Returns the next / previous desks to the currently active desk. Returns - // nullptr if the active desk is the first on the left or the last on the - // right, and previous and next desks are requested respectively. - Desk* GetNextDesk() const; - Desk* GetPreviousDesk() const; + // Returns the next / previous desks to the target / currently active desk. + // Returns nullptr if the active desk is the first on the left or the last on + // the right, and previous and next desks are requested respectively. + Desk* GetNextDesk(bool use_target_active_desk = true) const; + Desk* GetPreviousDesk(bool use_target_active_desk = true) const; // Creates a new desk. CanCreateDesks() must be checked before calling this. void NewDesk(DesksCreationRemovalSource source);
diff --git a/ash/wm/gestures/wm_gesture_handler.cc b/ash/wm/gestures/wm_gesture_handler.cc index bd5cb12..af854a0 100644 --- a/ash/wm/gestures/wm_gesture_handler.cc +++ b/ash/wm/gestures/wm_gesture_handler.cc
@@ -181,9 +181,10 @@ auto* desks_controller = DesksController::Get(); const bool move_left = GetOffset(scroll_x) < 0; - MaybeHandleWrongHorizontalGesture(move_left, - desks_controller->GetPreviousDesk(), - desks_controller->GetNextDesk()); + MaybeHandleWrongHorizontalGesture( + move_left, + desks_controller->GetPreviousDesk(/*use_target_active_desk=*/false), + desks_controller->GetNextDesk(/*use_target_active_desk=*/false)); // If touchpad reverse scroll is on, the swipe direction will invert. return desks_controller->ActivateAdjacentDesk( @@ -263,9 +264,12 @@ scroll_data_.reset(); return false; } - MaybeHandleWrongHorizontalGesture(/*move_left=*/scroll_x < 0, - desks_controller->GetPreviousDesk(), - desks_controller->GetNextDesk()); + + MaybeHandleWrongHorizontalGesture( + /*move_left=*/scroll_x < 0, + desks_controller->GetPreviousDesk(/*use_target_active_desk=*/false), + desks_controller->GetNextDesk(/*use_target_active_desk=*/false)); + scroll_data_->continuous_gesture_started = true; } }
diff --git a/base/cpu_unittest.cc b/base/cpu_unittest.cc index 988135d..6a74914 100644 --- a/base/cpu_unittest.cc +++ b/base/cpu_unittest.cc
@@ -199,10 +199,8 @@ const std::string& cpu_brand = cpu.cpu_brand(); - // Some CrOS CQ bots do not report a cpu_brand https://crbug.com/1166533. -#if !defined(OS_CHROMEOS) - EXPECT_FALSE(cpu_brand.empty()); -#endif + // Some devices, including on the CQ, do not report a cpu_brand + // https://crbug.com/1166533 and https://crbug.com/1167123. EXPECT_EQ(cpu_brand, base::TrimWhitespaceASCII(cpu_brand, base::TRIM_ALL)); EXPECT_GT(cpu.implementer(), 0u); EXPECT_GT(cpu.part_number(), 0u);
diff --git a/build/android/gyp/dex.py b/build/android/gyp/dex.py index 87cf983..8cdf642 100755 --- a/build/android/gyp/dex.py +++ b/build/android/gyp/dex.py
@@ -70,6 +70,11 @@ action='store_true', help='Allow numerous dex files within output.') parser.add_argument('--r8-jar-path', required=True, help='Path to R8 jar.') + parser.add_argument('--custom-d8-jar-path', + required=True, + help='Path to our customized d8 jar.') + parser.add_argument('--desugar-dependencies', + help='Path to store desugar dependencies.') parser.add_argument('--desugar', action='store_true') parser.add_argument( '--bootclasspath', @@ -371,6 +376,7 @@ tmp_dex_dir = os.path.join(tmp_dir, 'tmp_dex_dir') os.mkdir(tmp_dex_dir) + _RunD8(dex_cmd, d8_inputs, tmp_dex_dir, (not options or options.warnings_as_errors), (options and options.show_desugar_default_interface_warnings)) @@ -498,6 +504,7 @@ if options.multi_dex and options.main_dex_list_path: input_paths.append(options.main_dex_list_path) input_paths.append(options.r8_jar_path) + input_paths.append(options.custom_d8_jar_path) depfile_deps = options.class_inputs_filearg + options.dex_inputs_filearg @@ -515,8 +522,8 @@ dex_cmd = build_utils.JavaCmd(options.warnings_as_errors) + [ '-cp', - options.r8_jar_path, - 'com.android.tools.r8.D8', + '{}:{}'.format(options.r8_jar_path, options.custom_d8_jar_path), + 'org.chromium.build.CustomD8', ] if options.release: dex_cmd += ['--release'] @@ -526,17 +533,30 @@ if not options.desugar: dex_cmd += ['--no-desugaring'] elif options.classpath: - # Don't pass classpath when Desugar.jar is doing interface desugaring. + # The classpath is used by D8 to for interface desugaring. + classpath_paths = options.classpath + if options.desugar_dependencies: + dex_cmd += ['--desugar-dependencies', options.desugar_dependencies] + if os.path.exists(options.desugar_dependencies): + with open(options.desugar_dependencies, 'r') as f: + lines = [line.strip() for line in f.readlines()] + # Use a set to deduplicate entries. + desugar_dependencies = set(dep for dep in lines if dep) + # Desugar dependencies are a subset of classpath. + classpath_paths = list(desugar_dependencies) + depfile_deps += classpath_paths + input_paths += classpath_paths dex_cmd += ['--lib', build_utils.JAVA_HOME] for path in options.bootclasspath: dex_cmd += ['--lib', path] + # Still pass the entire classpath in case a new dependency is needed by + # desugar, so that desugar_dependencies will be updated for the next build. for path in options.classpath: dex_cmd += ['--classpath', path] - depfile_deps += options.classpath depfile_deps += options.bootclasspath - input_paths += options.classpath input_paths += options.bootclasspath + if options.desugar_jdk_libs_json: dex_cmd += ['--desugared-lib', options.desugar_jdk_libs_json] if options.force_enable_assertions:
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni index b833e11..8847e77a 100644 --- a/build/config/android/internal_rules.gni +++ b/build/config/android/internal_rules.gni
@@ -82,6 +82,7 @@ java_target_patterns = _java_library_patterns + _java_resource_patterns _r8_path = "//third_party/r8/lib/r8.jar" +_custom_d8_path = "//third_party/r8/custom_d8.jar" _desugar_jdk_libs_json = "//third_party/r8/desugar_jdk_libs.json" _desugar_jdk_libs_jar = "//third_party/android_deps/libs/com_android_tools_desugar_jdk_libs/desugar_jdk_libs-1.0.10.jar" _desugar_jdk_libs_configuration_jar = "//third_party/android_deps/libs/com_android_tools_desugar_jdk_libs_configuration/desugar_jdk_libs_configuration-1.0.10.jar" @@ -1666,7 +1667,10 @@ deps = _deps depfile = "$target_gen_dir/$target_name.d" outputs = [ invoker.output ] - inputs = [ _r8_path ] + inputs = [ + _r8_path, + _custom_d8_path, + ] if (!_is_library) { # http://crbug.com/725224. Fix for bots running out of memory. @@ -1685,6 +1689,8 @@ "--min-api=$_min_sdk_version", "--r8-jar-path", rebase_path(_r8_path, root_build_dir), + "--custom-d8-jar-path", + rebase_path(_custom_d8_path, root_build_dir), ] if (treat_warnings_as_errors) { args += [ "--warnings-as-errors" ] @@ -1773,8 +1779,15 @@ } } if (_desugar_needs_classpath) { + _desugar_dependencies_path = + "$target_gen_dir/$target_name.desugardeps" args += [ + "--desugar-dependencies", + rebase_path(_desugar_dependencies_path, root_build_dir), "--bootclasspath=@FileArg($_rebased_build_config:android:sdk_jars)", + + # Pass the full classpath to find new dependencies that are not in + # the .desugardeps file. "--classpath=@FileArg($_rebased_build_config:deps_info:javac_full_interface_classpath)", ] if (defined(invoker.desugar_jars_paths)) {
diff --git a/build/config/chromeos/rules.gni b/build/config/chromeos/rules.gni index d8d5025..9e61743 100644 --- a/build/config/chromeos/rules.gni +++ b/build/config/chromeos/rules.gni
@@ -8,90 +8,56 @@ import("//build/config/gclient_args.gni") import("//build/config/python.gni") -assert(is_chromeos_ash || is_chromeos_lacros) +assert(is_chromeos_ash) # Determine the real paths for various items in the SDK, which may be used # in the 'generate_runner_script' template below. We do so outside the template # to confine exec_script to a single invocation. +cros_is_vm = false if (is_chromeos_device && cros_sdk_version != "") { - # Ideally these should be maps, however, gn doesn't support map, so using a - # list of list to simulate a map: - # [key1, [value1, value2, ...]], [key2, [value1, value2, ...]], where - # the keys are boards and values are symlinks or symlink targets, and the - # mapping shouldn't be used for anything else. - # - # A sample usage is: - # foreach(m, _symlink_targets_map) { - # if(m[0] == target_key) { - # target_value = m[1] - # } - # } - # - _symlink_map = [] - _symlink_targets_map = [] - _boards = [] + _cache_path_prefix = + "//build/cros_cache/chrome-sdk/symlinks/${cros_board}+${cros_sdk_version}" - if (cros_boards != "") { - _boards += string_split(cros_boards, ":") - } - if (cros_boards_with_qemu_images != "") { - _boards += string_split(cros_boards_with_qemu_images, ":") - } - - foreach(b, _boards) { - _cache_path_prefix = - "//build/cros_cache/chrome-sdk/symlinks/${b}+${cros_sdk_version}" - - cros_is_vm = false - foreach(b1, string_split(cros_boards_with_qemu_images, ":")) { - if (b == b1) { - cros_is_vm = true - } + foreach(b, string_split(cros_boards_with_qemu_images, ":")) { + if (cros_board == b) { + cros_is_vm = true } + } - _symlinks = [] - _symlinks = [ - # Tast harness & test data. - rebase_path("${_cache_path_prefix}+chromeos-base/tast-cmd"), - rebase_path("${_cache_path_prefix}+chromeos-base/tast-remote-tests-cros"), + _symlinks = [ + # Tast harness & test data. + rebase_path("${_cache_path_prefix}+chromeos-base/tast-cmd"), + rebase_path("${_cache_path_prefix}+chromeos-base/tast-remote-tests-cros"), - # Binutils (and other toolchain tools) used to deploy Chrome to the device. - rebase_path( - "${_cache_path_prefix}+environment_chromeos-base_chromeos-chrome.tar.xz"), - rebase_path("${_cache_path_prefix}+target_toolchain"), + # Binutils (and other toolchain tools) used to deploy Chrome to the device. + rebase_path( + "${_cache_path_prefix}+environment_chromeos-base_chromeos-chrome.tar.xz"), + rebase_path("${_cache_path_prefix}+target_toolchain"), + ] + if (cros_is_vm) { + # VM-related tools. + _symlinks += [ + rebase_path("${_cache_path_prefix}+sys-firmware/seabios"), + rebase_path("${_cache_path_prefix}+chromiumos_qemu_image.tar.xz"), + rebase_path("${_cache_path_prefix}+app-emulation/qemu"), ] - if (cros_is_vm) { - # VM-related tools. - _symlinks += [ - rebase_path("${_cache_path_prefix}+sys-firmware/seabios"), - rebase_path("${_cache_path_prefix}+chromiumos_qemu_image.tar.xz"), - rebase_path("${_cache_path_prefix}+app-emulation/qemu"), - ] - } - _symlink_map += [ [ - b, - _symlinks, - ] ] } - - _all_symlinks = [] - foreach(m, _symlink_map) { - _all_symlinks += m[1] - } - _all_symlink_targets = - exec_script("//build/get_symlink_targets.py", _all_symlinks, "list lines") - _index = 0 - foreach(m, _symlink_map) { - _symlink_targets = [] - foreach(_, m[1]) { - _symlink_targets += [ _all_symlink_targets[_index] ] - _index += 1 - } - - _symlink_targets_map += [ [ - m[0], - _symlink_targets, - ] ] + _symlink_targets = + exec_script("//build/get_symlink_targets.py", _symlinks, "list lines") + tast_sdk_items = [ + _symlink_targets[0], + _symlink_targets[1], + ] + toolchain_sdk_items = [ + _symlink_targets[2], + _symlink_targets[3], + ] + if (cros_is_vm) { + vm_sdk_items = [ + _symlink_targets[4], + _symlink_targets[5], + _symlink_targets[6], + ] } } @@ -110,86 +76,28 @@ # build dir to the VM after launching it. # runtime_deps_file: Path to file listing runtime deps for the test. If set, # all files listed will be copied to the VM before testing. -# override_board: "cros_board" variable was used to decide both the toolchain -# to build Chrome and the DUTs to test the binary, however, with the -# introduction of Lacros, this is not true anymore: a Lacros chrome can be -# built by an amd64-generic toolchain, but tested on eve devices, and to -# accommondate the use case, this variable is introduced to allow -# overriding the board to test the built binary. -# tast_vars: A list of "key=value" runtime variable pairs to pass to invoke -# the Tast tests. For more details, please see: -# https://chromium.googlesource.com/chromiumos/platform/tast/+/HEAD/docs/writing_tests.md#Runtime-variables template("generate_runner_script") { forward_variables_from(invoker, [ - "override_board", "deploy_chrome", "generated_script", "runtime_deps_file", "tast_attr_expr", "tast_tests", - "tast_vars", "testonly", "test_exe", ]) - - if (defined(override_board)) { - cros_board = override_board + if (!defined(deploy_chrome)) { + deploy_chrome = false } - if (is_chromeos_device && cros_sdk_version != "") { - assert(defined(generated_script), - "Must specify where to place generated test launcher script via " + - "'generated_script'") - is_tast = defined(tast_attr_expr) || defined(tast_tests) - assert(!(is_tast && defined(test_exe)), - "Tast tests are invoked from binaries shipped with the VM image. " + - "There should be no locally built binary needed.") - assert(is_tast || !defined(tast_vars), - "tast_vars is only support for Tast tests") - - # Determine the real paths for various items in the SDK, which may be used - # in the 'generate_runner_script' template below. - cros_is_vm = false - foreach(b, string_split(cros_boards_with_qemu_images, ":")) { - if (cros_board == b) { - cros_is_vm = true - } - } - - if (!defined(deploy_chrome)) { - deploy_chrome = false - } - - if (is_tast || cros_is_vm || deploy_chrome) { - foreach(m, _symlink_targets_map) { - if (cros_board == m[0]) { - _symlink_targets = [] - _symlink_targets = m[1] - } - } - - if (is_tast) { - _tast_sdk_items = [ - _symlink_targets[0], - _symlink_targets[1], - ] - } - if (deploy_chrome) { - _toolchain_sdk_items = [ - _symlink_targets[2], - _symlink_targets[3], - ] - } - if (cros_is_vm) { - _vm_sdk_items = [ - _symlink_targets[4], - _symlink_targets[5], - _symlink_targets[6], - ] - } - } - } + assert(defined(generated_script), + "Must specify where to place generated test launcher script via " + + "'generated_script'") + is_tast = defined(tast_attr_expr) || defined(tast_tests) + assert(!(is_tast && defined(test_exe)), + "Tast tests are invoked from binaries shipped with the VM image. " + + "There should be no locally built binary needed.") # TODO(crbug.com/1112471): Get this to run cleanly under Python 3. python2_action(target_name) { @@ -263,25 +171,21 @@ args += [ "--deploy-chrome" ] } - if (is_chromeos_lacros) { - args += [ "--deploy-lacros" ] - } - # If we're in the cros chrome-sdk (and not the raw ebuild), the test will # need some additional runtime data located in the SDK cache. if (cros_sdk_version != "") { # Add the VM/QEMU-launching bits if needed. if (cros_is_vm) { - data += _vm_sdk_items + data += vm_sdk_items } if (is_tast) { - data += _tast_sdk_items + data += tast_sdk_items } if (deploy_chrome) { # To deploy chrome to the VM, it needs to be stripped down to fit into # the VM. This is done by using binutils in the toolchain. So add the # toolchain to the data. - data += _toolchain_sdk_items + data += toolchain_sdk_items } } @@ -319,14 +223,6 @@ ] } } - if (defined(tast_vars)) { - foreach(var, tast_vars) { - args += [ - "--tast-var", - var, - ] - } - } } } } @@ -382,39 +278,6 @@ "//third_party/breakpad:minidump_dump", "//third_party/breakpad:minidump_stackwalk", ] - - data = [ "//components/crash/content/tools/generate_breakpad_symbols.py" ] - } -} - -template("lacros_tast_test") { - forward_variables_from(invoker, - [ - "override_board", - "tast_tests", - ]) - generate_runner_script(target_name) { - testonly = true - generated_script = "$root_build_dir/bin/run_${target_name}" - runtime_deps_file = "$root_out_dir/${target_name}.runtime_deps" - - # By default, tast tests download a lacros-chrome from a gcs location and - # use it for testing. To support running lacros tast tests from Chromium CI, - # a Var is added to support pointing the tast tests to use a specified - # pre-deployed lacros-chrome. The location is decided by: - # https://source.chromium.org/chromium/chromium/src/+/master:third_party/chromite/scripts/deploy_chrome.py;l=80;drc=86f1234a4be8e9574442e076cdc835897f7bea61 - tast_vars = [ "lacrosDeployedBinary=/usr/local/lacros-chrome" ] - data_deps = [ - "//chrome", # Builds the browser. - - # Tools used to symbolize Chrome crash dumps. - # TODO(crbug.com/1156772): Remove these if/when all tests pick them up by - # default. - "//third_party/breakpad:dump_syms", - "//third_party/breakpad:minidump_dump", - "//third_party/breakpad:minidump_stackwalk", - ] - data = [ "//components/crash/content/tools/generate_breakpad_symbols.py" ] } }
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index 5928c56..a65708d 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn
@@ -2339,8 +2339,9 @@ asmflags = cflags ldflags = [] - # TODO(agrieve): Not sure why this is Android-specific. - if (use_debug_fission && use_thin_lto && is_android) { + # Split debug info with all thinlto builds except nacl and apple. + # thinlto requires -gsplit-dwarf in ldflags. + if (use_debug_fission && use_thin_lto && !is_nacl && !is_apple) { ldflags += [ "-gsplit-dwarf" ] } @@ -2415,7 +2416,9 @@ cflags += [ "-fdebug-info-for-profiling" ] } - # Note: -gsplit-dwarf implicitly turns on -g2 with clang, so don't pass it. + # Note: debug_fission is no-op with symbol_level=1 since all -g1 debug_info + # will stay in the executable. + asmflags = cflags } }
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index 55b0b0b..3aaadda6 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -0.20210115.0.1 +0.20210115.2.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index 55b0b0b..3aaadda6 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -0.20210115.0.1 +0.20210115.2.1
diff --git a/build/lacros/test_runner.py b/build/lacros/test_runner.py index 875d320..a0afa0f 100755 --- a/build/lacros/test_runner.py +++ b/build/lacros/test_runner.py
@@ -91,11 +91,20 @@ 'views_unittests', 'wm_unittests', - # regex patters. + # regex patterns. '.*_browsertests', '.*interactive_ui_tests' ] +# List of targets that require ash-chrome to support crosapi mojo APIs. +_TARGETS_REQUIRE_MOJO_CROSAPI = [ + # TODO(jamescook): Add 'browser_tests' after multiple crosapi connections + # are allowed. For now we only enable crosapi in targets that run tests + # serially. + 'interactive_ui_tests', + 'lacros_chrome_browsertests' +] + def _GetAshChromeDirPath(version): """Returns a path to the dir storing the downloaded version of ash-chrome.""" @@ -218,40 +227,41 @@ def _WaitForAshChromeToStart(tmp_xdg_dir, lacros_mojo_socket_file, - is_lacros_chrome_browsertests): + enable_mojo_crosapi): """Waits for Ash-Chrome to be up and running and returns a boolean indicator. Determine whether ash-chrome is up and running by checking whether two files (lock file + socket) have been created in the |XDG_RUNTIME_DIR| and the lacros - mojo socket file has been created if running lacros_chrome_browsertests. + mojo socket file has been created if enabling the mojo "crosapi" interface. TODO(crbug.com/1107966): Figure out a more reliable hook to determine the status of ash-chrome, likely through mojo connection. Args: tmp_xdg_dir (str): Path to the XDG_RUNTIME_DIR. lacros_mojo_socket_file (str): Path to the lacros mojo socket file. - is_lacros_chrome_browsertests (bool): is running lacros_chrome_browsertests. + enable_mojo_crosapi (bool): Whether to bootstrap the crosapi mojo interface + between ash and the lacros test binary. Returns: A boolean indicating whether Ash-chrome is up and running. """ def IsAshChromeReady(tmp_xdg_dir, lacros_mojo_socket_file, - is_lacros_chrome_browsertests): + enable_mojo_crosapi): return (len(os.listdir(tmp_xdg_dir)) >= 2 - and (not is_lacros_chrome_browsertests + and (not enable_mojo_crosapi or os.path.exists(lacros_mojo_socket_file))) time_counter = 0 while not IsAshChromeReady(tmp_xdg_dir, lacros_mojo_socket_file, - is_lacros_chrome_browsertests): + enable_mojo_crosapi): time.sleep(0.5) time_counter += 0.5 if time_counter > ASH_CHROME_TIMEOUT_SECONDS: break return IsAshChromeReady(tmp_xdg_dir, lacros_mojo_socket_file, - is_lacros_chrome_browsertests) + enable_mojo_crosapi) def _RunTestWithAshChrome(args, forward_args): @@ -281,8 +291,8 @@ lacros_mojo_socket_file = '%s/lacros.sock' % tmp_ash_data_dir_name lacros_mojo_socket_arg = ('--lacros-mojo-socket-for-testing=%s' % lacros_mojo_socket_file) - is_lacros_chrome_browsertests = (os.path.basename( - args.command) == 'lacros_chrome_browsertests') + enable_mojo_crosapi = any(t == os.path.basename(args.command) + for t in _TARGETS_REQUIRE_MOJO_CROSAPI) ash_process = None ash_env = os.environ.copy() @@ -293,7 +303,7 @@ '--enable-wayland-server', '--no-startup-window', ] - if is_lacros_chrome_browsertests: + if enable_mojo_crosapi: ash_cmd.append(lacros_mojo_socket_arg) ash_process_has_started = False @@ -303,8 +313,7 @@ num_tries += 1 ash_process = subprocess.Popen(ash_cmd, env=ash_env) ash_process_has_started = _WaitForAshChromeToStart( - tmp_xdg_dir_name, lacros_mojo_socket_file, - is_lacros_chrome_browsertests) + tmp_xdg_dir_name, lacros_mojo_socket_file, enable_mojo_crosapi) if ash_process_has_started: break @@ -319,7 +328,7 @@ raise RuntimeError('Timed out waiting for ash-chrome to start') # Starts tests. - if is_lacros_chrome_browsertests: + if enable_mojo_crosapi: forward_args.append(lacros_mojo_socket_arg) reason_of_jobs_1 = (
diff --git a/buildtools/DEPS b/buildtools/DEPS index 2dd38b6..09383995 100644 --- a/buildtools/DEPS +++ b/buildtools/DEPS
@@ -14,7 +14,7 @@ # # GN CIPD package version. - 'gn_version': 'git_revision:595e3be7c8381d4eeefce62a63ec12bae9ce5140', + 'gn_version': 'git_revision:d62642c920e6a0d1756316d225a90fd6faa9e21e', # By default, do not checkout the re-client binaries. 'checkout_reclient': False,
diff --git a/cc/metrics/compositor_timing_history.cc b/cc/metrics/compositor_timing_history.cc index 9a427c7..9dd8e1aa 100644 --- a/cc/metrics/compositor_timing_history.cc +++ b/cc/metrics/compositor_timing_history.cc
@@ -34,9 +34,7 @@ virtual void AddInvalidationToReadyToActivateDuration( base::TimeDelta duration, TreePriority priority) = 0; - virtual void AddPrepareTilesDuration(base::TimeDelta duration) = 0; virtual void AddDrawDuration(base::TimeDelta duration) = 0; - virtual void AddSubmitToAckLatency(base::TimeDelta duration) = 0; // crbug.com/758439: the following functions are used to report timing in // certain conditions targeting blink / compositor animations. @@ -323,20 +321,10 @@ priority); } - void AddPrepareTilesDuration(base::TimeDelta duration) override { - UMA_HISTOGRAM_CUSTOM_TIMES_DURATION( - "Scheduling.Renderer.PrepareTilesDuration", duration); - } - void AddDrawDuration(base::TimeDelta duration) override { UMA_HISTOGRAM_CUSTOM_TIMES_DURATION("Scheduling.Renderer.DrawDuration", duration); } - - void AddSubmitToAckLatency(base::TimeDelta duration) override { - UMA_HISTOGRAM_CUSTOM_TIMES_DURATION("Scheduling.Renderer.SwapToAckLatency", - duration); - } }; class BrowserUMAReporter : public CompositorTimingHistory::UMAReporter { @@ -370,20 +358,10 @@ priority); } - void AddPrepareTilesDuration(base::TimeDelta duration) override { - UMA_HISTOGRAM_CUSTOM_TIMES_DURATION( - "Scheduling.Browser.PrepareTilesDuration", duration); - } - void AddDrawDuration(base::TimeDelta duration) override { UMA_HISTOGRAM_CUSTOM_TIMES_DURATION("Scheduling.Browser.DrawDuration", duration); } - - void AddSubmitToAckLatency(base::TimeDelta duration) override { - UMA_HISTOGRAM_CUSTOM_TIMES_DURATION("Scheduling.Browser.SwapToAckLatency", - duration); - } }; class NullUMAReporter : public CompositorTimingHistory::UMAReporter { @@ -398,9 +376,7 @@ void AddInvalidationToReadyToActivateDuration( base::TimeDelta duration, TreePriority priority) override {} - void AddPrepareTilesDuration(base::TimeDelta duration) override {} void AddDrawDuration(base::TimeDelta duration) override {} - void AddSubmitToAckLatency(base::TimeDelta duration) override {} }; } // namespace @@ -535,12 +511,6 @@ return draw_duration_history_.Percentile(kDrawEstimationPercentile); } -void CompositorTimingHistory::DidCreateAndInitializeLayerTreeFrameSink() { - // After we get a new output surface, we won't get a spurious - // CompositorFrameAck from the old output surface. - submit_start_time_ = base::TimeTicks(); -} - void CompositorTimingHistory::WillBeginImplFrame( const viz::BeginFrameArgs& args, base::TimeTicks now) { @@ -690,7 +660,6 @@ DCHECK_NE(base::TimeTicks(), prepare_tiles_start_time_); base::TimeDelta prepare_tiles_duration = Now() - prepare_tiles_start_time_; - uma_reporter_->AddPrepareTilesDuration(prepare_tiles_duration); if (enabled_) prepare_tiles_duration_history_.InsertSample(prepare_tiles_duration); @@ -808,11 +777,9 @@ const viz::BeginFrameId& current_frame_id, const viz::BeginFrameId& last_activated_frame_id, EventMetricsSet events_metrics) { - DCHECK_EQ(base::TimeTicks(), submit_start_time_); compositor_frame_reporting_controller_->DidSubmitCompositorFrame( frame_token, current_frame_id, last_activated_frame_id, std::move(events_metrics)); - submit_start_time_ = Now(); } void CompositorTimingHistory::DidNotProduceFrame( @@ -821,13 +788,6 @@ compositor_frame_reporting_controller_->DidNotProduceFrame(id, skip_reason); } -void CompositorTimingHistory::DidReceiveCompositorFrameAck() { - DCHECK_NE(base::TimeTicks(), submit_start_time_); - base::TimeDelta submit_to_ack_duration = Now() - submit_start_time_; - uma_reporter_->AddSubmitToAckLatency(submit_to_ack_duration); - submit_start_time_ = base::TimeTicks(); -} - void CompositorTimingHistory::DidPresentCompositorFrame( uint32_t frame_token, const viz::FrameTimingDetails& details) {
diff --git a/cc/metrics/compositor_timing_history.h b/cc/metrics/compositor_timing_history.h index 93a0691..15b1ff0 100644 --- a/cc/metrics/compositor_timing_history.h +++ b/cc/metrics/compositor_timing_history.h
@@ -70,7 +70,6 @@ // State that affects when events should be expected/recorded/reported. void SetRecordingEnabled(bool enabled); - void DidCreateAndInitializeLayerTreeFrameSink(); // Events to be timed. void WillBeginImplFrame(const viz::BeginFrameArgs& args, @@ -99,7 +98,6 @@ EventMetricsSet events_metrics); void DidNotProduceFrame(const viz::BeginFrameId& id, FrameSkippedReason skip_reason); - void DidReceiveCompositorFrameAck(); void DidPresentCompositorFrame(uint32_t frame_token, const viz::FrameTimingDetails& details); void WillInvalidateOnImplSide(); @@ -157,7 +155,6 @@ base::TimeTicks prepare_tiles_start_time_; base::TimeTicks activate_start_time_; base::TimeTicks draw_start_time_; - base::TimeTicks submit_start_time_; bool pending_tree_is_impl_side_;
diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc index 7a73f48e..36fb46a 100644 --- a/cc/scheduler/scheduler.cc +++ b/cc/scheduler/scheduler.cc
@@ -163,7 +163,6 @@ void Scheduler::DidReceiveCompositorFrameAck() { DCHECK_GT(state_machine_.pending_submit_frames(), 0); - compositor_timing_history_->DidReceiveCompositorFrameAck(); state_machine_.DidReceiveCompositorFrameAck(); ProcessScheduledActions(); } @@ -225,7 +224,6 @@ DCHECK(!observing_begin_frame_source_); DCHECK(begin_impl_frame_deadline_task_.IsCancelled()); state_machine_.DidCreateAndInitializeLayerTreeFrameSink(); - compositor_timing_history_->DidCreateAndInitializeLayerTreeFrameSink(); UpdateCompositorTimingHistoryRecordingEnabled(); ProcessScheduledActions(); }
diff --git a/chrome/VERSION b/chrome/VERSION index a2fae36b..4b72267 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=90 MINOR=0 -BUILD=4390 +BUILD=4391 PATCH=0
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni index 4029085..1353bc5 100644 --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni
@@ -960,6 +960,7 @@ "java/src/org/chromium/chrome/browser/omnibox/AutocompleteEditTextModel.java", "java/src/org/chromium/chrome/browser/omnibox/AutocompleteEditTextModelBase.java", "java/src/org/chromium/chrome/browser/omnibox/AutocompleteState.java", + "java/src/org/chromium/chrome/browser/omnibox/BackKeyBehaviorDelegate.java", "java/src/org/chromium/chrome/browser/omnibox/ChromeAutocompleteSchemeClassifier.java", "java/src/org/chromium/chrome/browser/omnibox/KeyboardHideHelper.java", "java/src/org/chromium/chrome/browser/omnibox/LocationBar.java",
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java index bb4a8b6..d71a20e 100644 --- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java +++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
@@ -1091,10 +1091,12 @@ return; } mActivityTestRule.loadUrl("about:blank"); - CriteriaHelper.pollUiThread( - () - -> cta.getTabModelSelector().getCurrentTab().getOriginalUrl().equals( - "about:blank")); + CriteriaHelper.pollUiThread(() + -> cta.getTabModelSelector() + .getCurrentTab() + .getOriginalUrl() + .getSpec() + .equals("about:blank")); // Click the home button should navigate to NTP instead of showing start surface. onView(withId(R.id.home_button)).perform(click());
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContext.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContext.java index 18dbfb25..26889bc7 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContext.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContext.java
@@ -109,7 +109,7 @@ public static TabInfo createFromTab(Tab tab) { String referrerUrl = getReferrerUrlFromTab(tab); return new TabInfo(tab.getId(), tab.getTitle(), tab.getUrlString(), - tab.getOriginalUrl(), referrerUrl != null ? referrerUrl : "", + tab.getOriginalUrl().getSpec(), referrerUrl != null ? referrerUrl : "", CriticalPersistedTabData.from(tab).getTimestampMillis(), tab.getUrlString(), tab.isIncognito()); }
diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUnitTestUtils.java b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUnitTestUtils.java index 03787219..5cfe9fd 100644 --- a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUnitTestUtils.java +++ b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUnitTestUtils.java
@@ -59,6 +59,10 @@ doReturn(id).when(criticalPersistedTabData).getRootId(); doReturn(urlString).when(tab).getUrlString(); doReturn(title).when(tab).getTitle(); + + GURL gurl = mock(GURL.class); + doReturn(urlString).when(gurl).getSpec(); + doReturn(gurl).when(tab).getOriginalUrl(); return tab; } @@ -94,6 +98,7 @@ doReturn(visibleUrl).when(gurl).getSpec(); doReturn(gurl).when(webContents).getVisibleUrl(); doReturn(webContents).when(tab).getWebContents(); + doReturn(GURL.emptyGURL()).when(tab).getOriginalUrl(); return tab; } }
diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContextTest.java b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContextTest.java index a778e040..04d817e 100644 --- a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContextTest.java +++ b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContextTest.java
@@ -77,12 +77,13 @@ private TabModelFilter mTabModelFilter; private Tab mTab0 = mockTab(TAB_0_ID, 6, "mock_title_tab_0", "mock_url_tab_0", - "mock_original_url_tab_0", JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL), 100); + JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_1), + JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL), 100); private Tab mRelatedTab0 = mockTab(RELATED_TAB_0_ID, 6, "mock_title_related_tab_0", - "mock_url_related_tab_0", "mock_original_url_related_tab_0", + "mock_url_related_tab_0", JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_1), JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL), 200); private Tab mRelatedTab1 = mockTab(RELATED_TAB_1_ID, 6, "mock_title_related_tab_1", - "mock_url_related_tab_1", "mock_original_url_related_tab_1", + "mock_url_related_tab_1", JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_1), JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL), 300); @Before @@ -94,7 +95,7 @@ } // TODO(yfriedman): All of these should be GURLs. - private static TabImpl mockTab(int id, int rootId, String title, String url, String originalUrl, + private static TabImpl mockTab(int id, int rootId, String title, String url, GURL originalUrl, GURL referrerUrl, long timestampMillis) { TabImpl tab = mock(TabImpl.class); doReturn(id).when(tab).getId(); @@ -161,8 +162,10 @@ @Test public void testExcludeClosingTabs() { - Tab newTab1 = mockTab(NEW_TAB_1_ID, NEW_TAB_1_ID, "", "", "", GURL.emptyGURL(), 0); - Tab newTab2 = mockTab(NEW_TAB_2_ID, NEW_TAB_2_ID, "", "", "", GURL.emptyGURL(), 0); + Tab newTab1 = + mockTab(NEW_TAB_1_ID, NEW_TAB_1_ID, "", "", GURL.emptyGURL(), GURL.emptyGURL(), 0); + Tab newTab2 = + mockTab(NEW_TAB_2_ID, NEW_TAB_2_ID, "", "", GURL.emptyGURL(), GURL.emptyGURL(), 0); doReturn(mTab0).when(mTabModelFilter).getTabAt(eq(TAB_0_ID)); doReturn(newTab1).when(mTabModelFilter).getTabAt(eq(TAB_0_ID + 1)); doReturn(newTab2).when(mTabModelFilter).getTabAt(eq(TAB_0_ID + 2));
diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsOrchestratorTest.java b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsOrchestratorTest.java index 9823b6d..31c5e9c 100644 --- a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsOrchestratorTest.java +++ b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsOrchestratorTest.java
@@ -87,6 +87,7 @@ doReturn("").when(gurl).getSpec(); doReturn(gurl).when(webContents).getVisibleUrl(); doReturn(webContents).when(tab).getWebContents(); + doReturn(GURL.emptyGURL()).when(tab).getOriginalUrl(); return tab; }
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml index 57480786..e9f6207 100644 --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml
@@ -251,6 +251,7 @@ <dimen name="omnibox_suggestion_compact_padding">6dp</dimen> <dimen name="omnibox_suggestion_list_padding_bottom">8dp</dimen> <dimen name="omnibox_suggestion_start_offset_without_icon">18dp</dimen> + <dimen name="omnibox_carousel_suggestion_padding">12dp</dimen> <dimen name="omnibox_suggestion_36dp_icon_size">36dp</dimen> <dimen name="omnibox_suggestion_24dp_icon_size">24dp</dimen>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/DEPS b/chrome/android/java/src/org/chromium/chrome/browser/DEPS index 6bee3b8..6944907 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/DEPS +++ b/chrome/android/java/src/org/chromium/chrome/browser/DEPS
@@ -112,9 +112,6 @@ "CustomTabActivityLifecycleUmaTracker\.java": [ "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java", ], - "CustomTabBottomBarDelegate\.java": [ - "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java", - ], "CustomTabDelegateFactory\.java": [ "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java", ],
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java index 706fc1f..f48aeb3 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -1551,7 +1551,7 @@ BookmarkItem currentBookmarkItem = null; if (ChromeFeatureList.isEnabled(ChromeFeatureList.READ_LATER)) { currentBookmarkItem = - bookmarkModel.getReadingListItem(tabToBookmark.getOriginalUrl()); + bookmarkModel.getReadingListItem(tabToBookmark.getOriginalUrl().getSpec()); } if (currentBookmarkItem == null) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java index 04c22be..08b0dd1 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
@@ -843,7 +843,7 @@ * @return The bookmark ID created after saving the article to the reading list, or null on * error. */ - public @Nullable BookmarkId addToReadingList(String title, String url) { + public @Nullable BookmarkId addToReadingList(String title, GURL url) { ThreadUtils.assertOnUiThread(); assert title != null; assert url != null; @@ -1109,7 +1109,7 @@ BookmarkId addBookmark(long nativeBookmarkBridge, BookmarkBridge caller, BookmarkId parent, int index, String title, String url); BookmarkId addToReadingList( - long nativeBookmarkBridge, BookmarkBridge caller, String title, String url); + long nativeBookmarkBridge, BookmarkBridge caller, String title, GURL url); BookmarkItem getReadingListItem( long nativeBookmarkBridge, BookmarkBridge caller, String url); void setReadStatus(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java index 108dcbe..252ca26 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
@@ -53,6 +53,7 @@ import org.chromium.ui.UiUtils; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.PageTransition; +import org.chromium.url.GURL; import java.util.ArrayList; import java.util.List; @@ -189,7 +190,7 @@ * @param context The associated context. * @return The bookmark ID created after saving the article to the reading list. */ - public static BookmarkId addToReadingList(String url, String title, + public static BookmarkId addToReadingList(GURL url, String title, SnackbarManager snackbarManager, BookmarkBridge bookmarkBridge, Context context) { assert bookmarkBridge.isBookmarkModelLoaded(); BookmarkId bookmarkId = bookmarkBridge.addToReadingList(title, url); @@ -211,7 +212,7 @@ * Will reset last used parent if it fails to add a bookmark */ private static BookmarkId addBookmarkInternal( - Context context, BookmarkModel bookmarkModel, String title, String url) { + Context context, BookmarkModel bookmarkModel, String title, GURL url) { BookmarkId parent = getLastUsedParent(context); BookmarkItem parentItem = null; if (parent != null) { @@ -221,8 +222,9 @@ || !parentItem.isFolder()) { parent = bookmarkModel.getDefaultFolder(); } - BookmarkId bookmarkId = - bookmarkModel.addBookmark(parent, bookmarkModel.getChildCount(parent), title, url); + // TODO(crbug/783819): Migrate BookmarkModel to GURL. + BookmarkId bookmarkId = bookmarkModel.addBookmark( + parent, bookmarkModel.getChildCount(parent), title, url.getSpec()); // TODO(lazzzis): remove log after bookmark sync is fixed, crbug.com/986978 if (bookmarkId == null) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/QualityEnforcer.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/QualityEnforcer.java index 93b764b..4cd7bf6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/QualityEnforcer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/QualityEnforcer.java
@@ -30,6 +30,7 @@ import org.chromium.content_public.browser.RenderFrameHost; import org.chromium.net.NetError; import org.chromium.ui.widget.Toast; +import org.chromium.url.GURL; import javax.inject.Inject; @@ -81,18 +82,18 @@ }); } - String newUrl = tab.getOriginalUrl(); + GURL newUrl = tab.getOriginalUrl(); if (isNavigationInScope(newUrl)) { if (navigation.httpStatusCode() == 404) { - trigger(tab, QualityEnforcementViolationType.HTTP_ERROR404, newUrl, + trigger(tab, QualityEnforcementViolationType.HTTP_ERROR404, newUrl.getSpec(), navigation.httpStatusCode()); } else if (navigation.httpStatusCode() >= 500 && navigation.httpStatusCode() <= 599) { - trigger(tab, QualityEnforcementViolationType.HTTP_ERROR5XX, newUrl, + trigger(tab, QualityEnforcementViolationType.HTTP_ERROR5XX, newUrl.getSpec(), navigation.httpStatusCode()); } else if (navigation.errorCode() == NetError.ERR_INTERNET_DISCONNECTED) { - trigger(tab, QualityEnforcementViolationType.UNAVAILABLE_OFFLINE, newUrl, - navigation.httpStatusCode()); + trigger(tab, QualityEnforcementViolationType.UNAVAILABLE_OFFLINE, + newUrl.getSpec(), navigation.httpStatusCode()); } } } @@ -174,10 +175,11 @@ * Updates whether the current url is verified and returns whether the source and destination * are both on the verified origin. */ - private boolean isNavigationInScope(String newUrl) { - if (newUrl.equals("")) return false; + private boolean isNavigationInScope(GURL newUrl) { + if (newUrl.isEmpty()) return false; boolean wasVerified = mOriginVerified; - Promise<Boolean> result = mVerifier.verify(newUrl); + // TODO(crbug/783819): Migrate Verifier to GURL. + Promise<Boolean> result = mVerifier.verify(newUrl.getSpec()); mOriginVerified = !result.isFulfilled() || result.getResult(); return wasVerified && mOriginVerified; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java index 3b9f67a..991cd03 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
@@ -77,7 +77,9 @@ private boolean mPreloadedResources; private List<Runnable> mDrawingFinishedCallbacks; - private boolean mIsInVr; + // True while the compositor view is in VR Browser mode (obsolescent), or in a WebXR + // "immersive-ar" session with DOM Overlay enabled. This disables SurfaceControl while active. + private boolean mIsInXr; private boolean mIsSurfaceControlEnabled; private boolean mSelectionHandlesActive; @@ -98,7 +100,7 @@ @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF) - && mCompositorSurfaceManager != null && !mIsInVr + && mCompositorSurfaceManager != null && !mIsInXr && mNativeCompositorView != 0) { mCompositorSurfaceManager.shutDown(); createCompositorSurfaceManager(); @@ -208,7 +210,7 @@ public void onSelectionHandlesStateChanged(boolean active) { // If the feature is disabled or we're in Vr mode, we are already rendering directly to the // SurfaceView. - if (!mIsSurfaceControlEnabled || mIsInVr) return; + if (!mIsSurfaceControlEnabled || mIsInXr) return; if (mSelectionHandlesActive == active) return; mSelectionHandlesActive = active; @@ -340,20 +342,20 @@ * @param enabled Whether to enter or leave overlay immersive ar mode. */ public void setOverlayImmersiveArMode(boolean enabled) { - // In SurfaceControl mode, we don't need to switch surfaces for the compositor, we can - // continue using its already-translucent surface. (The ArImmersiveOverlay has its own - // separate opaque surface which is used for displaying the camera image and WebGL drawn - // content. The compositor surface appears on top of that as an overlay.) - // TODO(https://crbug.com/1122103): revisit once the stale-ChromeChildSurface issue is - // fixed. - if (!canUseSurfaceControl() - || mCompositorSurfaceManager.getFormatOfOwnedSurface() != PixelFormat.TRANSLUCENT) { - // If SurfaceControl is off, or if we haven't started using it yet, switch the - // compositor to a translucent surface, same as overlay video mode. - setOverlayVideoMode(enabled); - } + // Disable SurfaceControl for the duration of the session. This works around a black + // screen after activating the screen keyboard (IME), see https://crbug.com/1166248. + mIsInXr = enabled; + + setOverlayVideoMode(enabled); CompositorViewJni.get().setOverlayImmersiveArMode( mNativeCompositorView, CompositorView.this, enabled); + if (!enabled) { + // Exiting AR mode leaves SurfaceControl in a confused state if the screen keyboard + // (IME) was activated, see https://crbug.com/1166248. Reset the surface manager + // at session exit to work around this. + mCompositorSurfaceManager.shutDown(); + createCompositorSurfaceManager(); + } } private int getSurfacePixelFormat() { @@ -376,7 +378,7 @@ } private boolean canUseSurfaceControl() { - return !mIsInVr && !mSelectionHandlesActive; + return !mIsInXr && !mSelectionHandlesActive; } @Override @@ -601,7 +603,7 @@ */ public void replaceSurfaceManagerForVr( CompositorSurfaceManager vrCompositorSurfaceManager, WindowAndroid window) { - mIsInVr = true; + mIsInXr = true; mCompositorSurfaceManager.shutDown(); CompositorViewJni.get().setCompositorWindow( @@ -619,7 +621,7 @@ * @param windowToRestore The non-VR WindowAndroid to restore. */ public void onExitVr(WindowAndroid windowToRestore) { - mIsInVr = false; + mIsInXr = false; if (mNativeCompositorView == 0) return; setWindowAndroid(windowToRestore);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabBottomBarDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabBottomBarDelegate.java index 4803adb..905434dd 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabBottomBarDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabBottomBarDelegate.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.customtabs; +import android.app.Activity; import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; import android.content.Intent; @@ -23,18 +24,19 @@ import org.chromium.base.Log; import org.chromium.base.metrics.RecordUserAction; import org.chromium.chrome.R; -import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.browser_controls.BrowserControlsSizer; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider; import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelManager.OverlayPanelManagerObserver; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerImpl; +import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabProvider; import org.chromium.chrome.browser.dependency_injection.ActivityScope; import org.chromium.chrome.browser.flags.CachedFeatureFlags; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.night_mode.RemoteViewsWithNightModeInflater; import org.chromium.chrome.browser.night_mode.SystemNightModeMonitor; import org.chromium.chrome.browser.tab.Tab; +import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.interpolators.BakedBezierInterpolator; import java.util.List; @@ -49,9 +51,11 @@ private static final String TAG = "CustomTab"; private static final int SLIDE_ANIMATION_DURATION_MS = 400; - private final ChromeActivity<?> mActivity; + private final Activity mActivity; + private final WindowAndroid mWindowAndroid; private final BrowserControlsSizer mBrowserControlsSizer; private final BrowserServicesIntentDataProvider mDataProvider; + private final CustomTabActivityTabProvider mTabProvider; private final CustomTabNightModeStateController mNightModeStateController; private final SystemNightModeMonitor mSystemNightModeMonitor; @@ -77,27 +81,29 @@ originalId = (Integer) v.getTag(R.id.view_id_tag_key); } extraIntent.putExtra(CustomTabsIntent.EXTRA_REMOTEVIEWS_CLICKED_ID, originalId); - sendPendingIntentWithUrl(mClickPendingIntent, extraIntent, mActivity); + sendPendingIntentWithUrl(mClickPendingIntent, extraIntent, mActivity, mTabProvider); } }; @Inject - public CustomTabBottomBarDelegate(ChromeActivity<?> activity, + public CustomTabBottomBarDelegate(Activity activity, WindowAndroid windowAndroid, BrowserServicesIntentDataProvider dataProvider, BrowserControlsSizer browserControlsSizer, CustomTabNightModeStateController nightModeStateController, - SystemNightModeMonitor systemNightModeMonitor, + SystemNightModeMonitor systemNightModeMonitor, CustomTabActivityTabProvider tabProvider, CustomTabCompositorContentInitializer compositorContentInitializer) { mActivity = activity; + mWindowAndroid = windowAndroid; mDataProvider = dataProvider; mBrowserControlsSizer = browserControlsSizer; mNightModeStateController = nightModeStateController; mSystemNightModeMonitor = systemNightModeMonitor; + mTabProvider = tabProvider; browserControlsSizer.addObserver(this); compositorContentInitializer.addCallback(this::addOverlayPanelManagerObserver); - mActivity.getWindowAndroid().getApplicationBottomInsetProvider().addObserver((inset) -> { + mWindowAndroid.getApplicationBottomInsetProvider().addObserver((inset) -> { if (mBottomBarView == null) return; hideBottomBar(inset > 0); }); @@ -145,7 +151,8 @@ final PendingIntent pendingIntent = params.getPendingIntent(); OnClickListener clickListener = null; if (pendingIntent != null) { - clickListener = v -> sendPendingIntentWithUrl(pendingIntent, null, mActivity); + clickListener = + v -> sendPendingIntentWithUrl(pendingIntent, null, mActivity, mTabProvider); } layout.addView( params.buildBottomBarButton(mActivity, getBottomBarView(), clickListener)); @@ -329,9 +336,9 @@ } private static void sendPendingIntentWithUrl(PendingIntent pendingIntent, Intent extraIntent, - ChromeActivity activity) { + Activity activity, CustomTabActivityTabProvider tabProvider) { Intent addedIntent = extraIntent == null ? new Intent() : new Intent(extraIntent); - Tab tab = activity.getActivityTab(); + Tab tab = tabProvider.getTab(); if (tab != null) addedIntent.setData(Uri.parse(tab.getUrlString())); try { pendingIntent.send(activity, 0, addedIntent, null, null);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/display_cutout/OWNERS b/chrome/android/java/src/org/chromium/chrome/browser/display_cutout/OWNERS index 70313512..2d28246 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/display_cutout/OWNERS +++ b/chrome/android/java/src/org/chromium/chrome/browser/display_cutout/OWNERS
@@ -1,2 +1 @@ -beccahughes@chromium.org mlamouri@chromium.org
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerTabUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerTabUtils.java index 1edcbcd..bf60927 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerTabUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerTabUtils.java
@@ -15,6 +15,7 @@ import org.chromium.components.navigation_interception.InterceptNavigationDelegate; import org.chromium.components.user_prefs.UserPrefs; import org.chromium.content_public.browser.WebContents; +import org.chromium.url.GURL; /** * A helper class for using the DOM Distiller. @@ -70,7 +71,7 @@ * @param url The original URL. * @return the formatted URL of the original page. */ - public static String getFormattedUrlFromOriginalDistillerUrl(String url) { + public static String getFormattedUrlFromOriginalDistillerUrl(GURL url) { return DomDistillerTabUtilsJni.get().getFormattedUrlFromOriginalDistillerUrl(url); } @@ -148,7 +149,7 @@ void distillCurrentPageAndView(WebContents webContents); void distillCurrentPage(WebContents webContents); void distillAndView(WebContents sourceWebContents, WebContents destinationWebContents); - String getFormattedUrlFromOriginalDistillerUrl(String url); + String getFormattedUrlFromOriginalDistillerUrl(GURL url); int getDistillerHeuristics(); void setInterceptNavigationDelegate( InterceptNavigationDelegate delegate, WebContents webContents);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadActivity.java index c921675..abb43e4 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadActivity.java
@@ -5,11 +5,8 @@ package org.chromium.chrome.browser.download; import android.app.Activity; -import android.content.ComponentName; import android.os.Bundle; -import org.chromium.base.IntentUtils; -import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.SnackbarActivity; import org.chromium.chrome.browser.download.home.DownloadManagerCoordinator; import org.chromium.chrome.browser.download.home.DownloadManagerCoordinatorFactoryHelper; @@ -63,8 +60,6 @@ OfflineContentAggregatorNotificationBridgeUiFactory.instance(); boolean isOffTheRecord = DownloadUtils.shouldShowOffTheRecordDownloads(getIntent()); boolean showPrefetchContent = DownloadUtils.shouldShowPrefetchContent(getIntent()); - ComponentName parentComponent = IntentUtils.safeGetParcelableExtra( - getIntent(), IntentHandler.EXTRA_PARENT_COMPONENT); mPermissionDelegate = new ActivityAndroidPermissionDelegate(new WeakReference<Activity>(this)); mOtrProfileID = DownloadUtils.getOTRProfileIDFromIntent(getIntent());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java index b9f0330..93943f7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java
@@ -157,7 +157,6 @@ // Sits on top of another Activity. intent.addFlags( Intent.FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); - intent.putExtra(IntentHandler.EXTRA_PARENT_COMPONENT, activity.getComponentName()); activity.startActivity(intent); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/OWNERS b/chrome/android/java/src/org/chromium/chrome/browser/infobar/OWNERS index 4f0cf29..d60be52 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/OWNERS +++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/OWNERS
@@ -1,6 +1,4 @@ mdjones@chromium.org -per-file AppBannerInfoBar*=dominickn@chromium.org per-file DataReductionPromoInfoBar*=file://components/data_reduction_proxy/OWNERS per-file GeneratedPasswordSavedInfoBar*=rouslan@chromium.org -per-file InstallableAmbientBadgeInfoBar*=dominickn@chromium.org
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java index b9ef737..e5ccd34 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
@@ -243,7 +243,13 @@ mTileGroup = new TileGroup(tileRenderer, mManager, contextMenuManager, tileGroupDelegate, /* observer = */ this, offlinePageBridge); - mSiteSectionViewHolder = SiteSection.createViewHolder(getSiteSectionView(), mUiConfig); + int maxRows = 2; + if (searchProviderIsGoogle && QueryTileUtils.isQueryTilesEnabledOnNTP()) { + maxRows = QueryTileSection.getMaxRowsForMostVisitedTiles(getContext()); + } + + mSiteSectionViewHolder = + SiteSection.createViewHolder(getSiteSectionView(), mUiConfig, maxRows); mSiteSectionViewHolder.bindDataSource(mTileGroup, tileRenderer); int variation = ExploreSitesBridge.getVariation(); @@ -275,8 +281,7 @@ mSearchBoxCoordinator, profile, mManager::performSearchQuery); } - mTileGroup.startObserving( - getMaxRowsForMostVisitedTiles() * getMaxColumnsForMostVisitedTiles()); + mTileGroup.startObserving(maxRows * getMaxColumnsForMostVisitedTiles()); VrModuleProvider.registerVrModeObserver(this); if (VrModuleProvider.getDelegate().isInVr()) onEnterVr(); @@ -801,13 +806,6 @@ } } - private int getMaxRowsForMostVisitedTiles() { - Integer maxRows = mQueryTileSection == null - ? null - : mQueryTileSection.getMaxRowsForMostVisitedTiles(); - return maxRows == null ? 2 : maxRows.intValue(); - } - /** * Determines The maximum number of tiles to try and fit in a row. On smaller screens, there * may not be enough space to fit all of them.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java index c2cb480..32dc8e0 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java
@@ -772,8 +772,9 @@ if (OfflinePageUtils.isShowingTrustedOfflinePage(webContents) || offlinePage == null) { // TODO(crbug.com/1033178): dedupe the // DomDistillerUrlUtils#getOriginalUrlFromDistillerUrl() calls. - String distilledUrl = DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl( - webContents.getVisibleUrl()); + String distilledUrl = + DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(webContents.getVisibleUrl()) + .getSpec(); // If current page is an offline page, reload it with custom behavior defined in extra // header respected. LoadUrlParams params = new LoadUrlParams(distilledUrl, transitionTypeForReload);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/BackKeyBehaviorDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/BackKeyBehaviorDelegate.java new file mode 100644 index 0000000..96dab4ab --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/BackKeyBehaviorDelegate.java
@@ -0,0 +1,16 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.omnibox; + +/** + * Delegate interface that allows implementers to override the default back key behavior of the + * LocationBar. + */ +public interface BackKeyBehaviorDelegate { + /** Returns true if the delegate will handle the back key event. */ + default boolean handleBackKeyPressed() { + return false; + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java index d807aeb9..bc9f285f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
@@ -29,7 +29,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteDelegate; import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsDropdownEmbedder; -import org.chromium.chrome.browser.omnibox.voice.AssistantVoiceSearchService; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; import org.chromium.chrome.browser.profiles.Profile; @@ -99,6 +98,8 @@ * @param incognitoStateProvider An {@link IncognitoStateProvider} to access the current * incognito state. * @param activityLifecycleDispatcher Allows observation of the activity state. + * @param overrideUrlLoadingDelegate Delegate that allows customization of url loading behavior. + * @param backKeyBehavior Delegate that allows customization of back key behavior. */ public LocationBarCoordinator(View locationBarLayout, View autocompleteAnchorView, ObservableSupplier<Profile> profileObservableSupplier, @@ -109,7 +110,8 @@ Supplier<ShareDelegate> shareDelegateSupplier, IncognitoStateProvider incognitoStateProvider, ActivityLifecycleDispatcher activityLifecycleDispatcher, - OverrideUrlLoadingDelegate overrideUrlLoadingDelegate) { + OverrideUrlLoadingDelegate overrideUrlLoadingDelegate, + BackKeyBehaviorDelegate backKeyBehavior) { mLocationBarLayout = (LocationBarLayout) locationBarLayout; mWindowDelegate = windowDelegate; mActivityLifecycleDispatcher = activityLifecycleDispatcher; @@ -117,15 +119,12 @@ mAutocompleteAnchorView = autocompleteAnchorView; mUrlBar = mLocationBarLayout.findViewById(R.id.url_bar); - OneshotSupplierImpl<AssistantVoiceSearchService> assistantVoiceSearchSupplier = - new OneshotSupplierImpl(); // TODO(crbug.com/1151513): Inject LocaleManager instance to LocationBarCoordinator instead // of using the singleton. - mLocationBarMediator = new LocationBarMediator(mLocationBarLayout, locationBarDataProvider, - assistantVoiceSearchSupplier, profileObservableSupplier, + mLocationBarMediator = new LocationBarMediator(mLocationBarLayout.getContext(), + mLocationBarLayout, locationBarDataProvider, profileObservableSupplier, PrivacyPreferencesManagerImpl.getInstance(), overrideUrlLoadingDelegate, - LocaleManager.getInstance(), mTemplateUrlServiceSupplier); - + LocaleManager.getInstance(), mTemplateUrlServiceSupplier, backKeyBehavior); mUrlCoordinator = new UrlBarCoordinator((UrlBar) mUrlBar, windowDelegate, actionModeCallback, mCallbackController.makeCancelable(mLocationBarMediator::onUrlFocusChange), @@ -155,7 +154,7 @@ mLocationBarLayout.addUrlFocusChangeListener(mUrlCoordinator); mLocationBarLayout.initialize(mAutocompleteCoordinator, mUrlCoordinator, mStatusCoordinator, locationBarDataProvider, windowDelegate, windowAndroid, - mLocationBarMediator.getVoiceRecognitionHandler(), assistantVoiceSearchSupplier); + mLocationBarMediator.getVoiceRecognitionHandler()); if (locationBarLayout instanceof LocationBarPhone) { mSubCoordinator = new LocationBarCoordinatorPhone( @@ -418,7 +417,15 @@ mLocationBarMediator.setVoiceRecognitionHandlerForTesting(voiceRecognitionHandler); } + public void onUrlChangedForTesting() { + mLocationBarMediator.onUrlChanged(); + } + /* package */ LocationBarMediator getMediatorForTesting() { return mLocationBarMediator; } + + /* package */ StatusCoordinator getStatusCoordinatorForTesting() { + return mStatusCoordinator; + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java index 8c5b659..1030203 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
@@ -5,6 +5,8 @@ package org.chromium.chrome.browser.omnibox; import android.content.Context; +import android.content.res.ColorStateList; +import android.graphics.drawable.Drawable; import android.os.Parcelable; import android.text.TextUtils; import android.util.AttributeSet; @@ -28,7 +30,6 @@ import org.chromium.base.ObserverList; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordUserAction; -import org.chromium.base.supplier.OneshotSupplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.WindowDelegate; import org.chromium.chrome.browser.omnibox.UrlBar.ScrollType; @@ -37,15 +38,11 @@ import org.chromium.chrome.browser.omnibox.status.StatusCoordinator; import org.chromium.chrome.browser.omnibox.status.StatusView; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; -import org.chromium.chrome.browser.omnibox.voice.AssistantVoiceSearchService; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; -import org.chromium.components.browser_ui.styles.ChromeColors; import org.chromium.components.browser_ui.widget.CompositeTouchDelegate; -import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.ui.base.WindowAndroid; -import org.chromium.ui.util.ColorUtils; import java.util.ArrayList; import java.util.List; @@ -74,8 +71,6 @@ private WindowAndroid mWindowAndroid; - private String mOriginalUrl = ""; - private boolean mUrlFocusChangeInProgress; protected boolean mNativeInitialized; private boolean mUrlHasFocus; @@ -91,8 +86,6 @@ protected CompositeTouchDelegate mCompositeTouchDelegate; - private OneshotSupplier<AssistantVoiceSearchService> mAssistantVoiceSearchServiceSupplier; - public LocationBarLayout(Context context, AttributeSet attrs) { this(context, attrs, R.layout.location_bar); @@ -158,17 +151,13 @@ @NonNull UrlBarCoordinator urlCoordinator, @NonNull StatusCoordinator statusCoordinator, @NonNull LocationBarDataProvider locationBarDataProvider, @NonNull WindowDelegate windowDelegate, @NonNull WindowAndroid windowAndroid, - @NonNull VoiceRecognitionHandler voiceRecognitionHandler, - @NonNull OneshotSupplier<AssistantVoiceSearchService> assistantVoiceSearchSupplier) { + @NonNull VoiceRecognitionHandler voiceRecognitionHandler) { mAutocompleteCoordinator = autocompleteCoordinator; mUrlCoordinator = urlCoordinator; mStatusCoordinator = statusCoordinator; mWindowAndroid = windowAndroid; mLocationBarDataProvider = locationBarDataProvider; mVoiceRecognitionHandler = voiceRecognitionHandler; - mAssistantVoiceSearchServiceSupplier = assistantVoiceSearchSupplier; - mAssistantVoiceSearchServiceSupplier.onAvailable( - (assistantVoiceSearchService) -> onAssistantVoiceSearchServiceChanged()); updateButtonVisibility(); updateShouldAnimateIconChanges(); @@ -194,8 +183,6 @@ } mDeferredNativeRunnables.clear(); - onPrimaryColorChanged(); - updateMicButtonVisibility(); } @@ -211,6 +198,18 @@ mUrlFocusedWithoutAnimations = isUrlFocusedWithoutAnimations; } + /* package */ void setMicButtonDrawable(Drawable drawable) { + mMicButton.setImageDrawable(drawable); + } + + /* package */ void setMicButtonTint(ColorStateList colorStateList) { + ApiCompatibilityUtils.setImageTintList(mMicButton, colorStateList); + } + + /* package */ void setDeleteButtonTint(ColorStateList colorStateList) { + ApiCompatibilityUtils.setImageTintList(mDeleteButton, colorStateList); + } + /** * Override the default LocationBarDataProvider in tests. Production code should use the * {@link #initialize} method instead. @@ -246,12 +245,6 @@ } } - public void backKeyPressed() { - setUrlBarFocus(false, null, OmniboxFocusReason.UNFOCUS); - // Revert the URL to match the current page. - setUrl(mLocationBarDataProvider.getCurrentUrl()); - } - /* package */ void setUrlBarFocus( boolean shouldBeFocused, @Nullable String pastedText, @OmniboxFocusReason int reason) { if (shouldBeFocused) { @@ -312,48 +305,6 @@ if (visibility == View.VISIBLE) updateMicButtonState(); } - /** Updates visuals after the primary color has changed. */ - @CallSuper - public void onPrimaryColorChanged() { - updateAssistantVoiceSearchDrawableAndColors(); - updateUseDarkColors(); - } - - /** - * Update visuals to use a correct light or dark color scheme depending on the primary color. - */ - private void updateUseDarkColors() { - // TODO(crbug.com/1114183): Unify light and dark color logic in chrome and make it clear - // whether the foreground or background color is dark. - final boolean useDarkColors = - !ColorUtils.shouldUseLightForegroundOnBackground(getPrimaryBackgroundColor()); - - ApiCompatibilityUtils.setImageTintList( - mDeleteButton, ChromeColors.getPrimaryIconTint(getContext(), !useDarkColors)); - // If the URL changed colors and is not focused, update the URL to account for the new - // color scheme. - if (mUrlCoordinator.setUseDarkTextColors(useDarkColors) && !mUrlBar.hasFocus()) { - setUrl(mLocationBarDataProvider.getCurrentUrl()); - } - mStatusCoordinator.setUseDarkColors(useDarkColors); - if (mAutocompleteCoordinator != null) { - mAutocompleteCoordinator.updateVisualsForState( - useDarkColors, mLocationBarDataProvider.isIncognito()); - } - } - - /** Returns the primary color based on the url focus, and incognito state. */ - private int getPrimaryBackgroundColor() { - // If the url bar is focused, the toolbar background color is the default color regardless - // of whether it is branded or not. - if (mUrlHasFocus) { - return ChromeColors.getDefaultThemeColor( - getResources(), mLocationBarDataProvider.isIncognito()); - } else { - return mLocationBarDataProvider.getPrimaryColor(); - } - } - protected void onNtpStartedLoading() {} public View getContainerView() { @@ -368,21 +319,6 @@ return mWindowAndroid; } - /* package */ void onAssistantVoiceSearchServiceChanged() { - updateAssistantVoiceSearchDrawableAndColors(); - } - - private void updateAssistantVoiceSearchDrawableAndColors() { - AssistantVoiceSearchService assistantVoiceSearchService = - mAssistantVoiceSearchServiceSupplier.get(); - if (assistantVoiceSearchService == null) return; - - ApiCompatibilityUtils.setImageTintList(mMicButton, - assistantVoiceSearchService.getMicButtonColorStateList( - getPrimaryBackgroundColor(), getContext())); - mMicButton.setImageDrawable(assistantVoiceSearchService.getCurrentMicDrawable()); - } - /** * Call to notify the location bar that the state of the voice search microphone button may * need to be updated. @@ -393,33 +329,6 @@ updateButtonVisibility(); } - /** - * Sets the displayed URL to be the URL of the page currently showing. - * - * <p>The URL is converted to the most user friendly format (removing HTTP:// for example). - * - * <p>If the current tab is null, the URL text will be cleared. - */ - protected void setUrl(String currentUrl) { - // If the URL is currently focused, do not replace the text they have entered with the URL. - // Once they stop editing the URL, the current tab's URL will automatically be filled in. - if (mUrlBar.hasFocus()) { - if (mUrlFocusedWithoutAnimations && !UrlUtilities.isNTPUrl(currentUrl)) { - // If we did not run the focus animations, then the user has not typed any text. - // So, clear the focus and accept whatever URL the page is currently attempting to - // display. If the NTP is showing, the current page's URL should not be displayed. - setUrlBarFocus(false, null, OmniboxFocusReason.UNFOCUS); - } else { - return; - } - } - - mOriginalUrl = currentUrl; - setUrlBarText(mLocationBarDataProvider.getUrlBarData(), UrlBar.ScrollType.SCROLL_TO_TLD, - SelectionState.SELECT_ALL); - if (!mLocationBarDataProvider.hasTab()) return; - } - @CallSuper protected void setUrlFocusChangeFraction(float fraction) { mUrlFocusChangeFraction = fraction; @@ -498,7 +407,6 @@ mUrlHasFocus = hasFocus; updateButtonVisibility(); updateShouldAnimateIconChanges(); - onPrimaryColorChanged(); if (mUrlHasFocus) { if (mNativeInitialized) RecordUserAction.record("FocusLocation"); @@ -519,11 +427,6 @@ mUrlFocusedFromQueryTiles = false; mUrlFocusedWithoutAnimations = false; - // Focus change caused by a close-tab may result in an invalid current tab. - if (mLocationBarDataProvider.hasTab()) { - setUrl(mLocationBarDataProvider.getCurrentUrl()); - } - // Moving focus away from UrlBar(EditText) to a non-editable focus holder, such as // ToolbarPhone, won't automatically hide keyboard app, but restart it with TYPE_NULL, // which will result in a visual glitch. Also, currently, we do not allow moving focus @@ -683,15 +586,9 @@ } /** - * @return Returns the original url of the page. - */ - public String getOriginalUrl() { - return mOriginalUrl; - } - - /** * Changes the text on the url bar. The text update will be applied regardless of the current - * focus state (comparing to {@link #setUrl} which only applies text updates when not focused). + * focus state (comparing to {@link LocationBarMediator#setUrl} which only applies text updates + * when not focused). * * @param urlBarData The contents of the URL bar, both for editing and displaying. * @param scrollType Specifies how the text should be scrolled in the unfocused state. @@ -781,6 +678,9 @@ updateShouldAnimateIconChanges(); } + /** Update the status visibility according to the current state held in LocationBar. */ + /* package */ void updateStatusVisibility() {} + public void setVoiceRecognitionHandlerForTesting( VoiceRecognitionHandler voiceRecognitionHandler) { mVoiceRecognitionHandler = voiceRecognitionHandler;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java index 6fa98f7..d8302d9c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
@@ -41,6 +41,7 @@ import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.util.KeyNavigationUtil; +import org.chromium.components.browser_ui.styles.ChromeColors; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.externalauth.ExternalAuthUtils; import org.chromium.components.search_engines.TemplateUrl; @@ -50,6 +51,7 @@ import org.chromium.content_public.common.ResourceRequestBody; import org.chromium.ui.base.PageTransition; import org.chromium.ui.base.WindowAndroid; +import org.chromium.ui.util.ColorUtils; import java.util.ArrayList; import java.util.HashMap; @@ -66,8 +68,8 @@ private final LocationBarLayout mLocationBarLayout; private VoiceRecognitionHandler mVoiceRecognitionHandler; private final LocationBarDataProvider mLocationBarDataProvider; - private AssistantVoiceSearchService mAssistantVoiceSearchService; - private final OneshotSupplierImpl<AssistantVoiceSearchService> mAssistantVoiceSearchSupplier; + private final OneshotSupplierImpl<AssistantVoiceSearchService> + mAssistantVoiceSearchServiceSupplier = new OneshotSupplierImpl<>(); private StatusCoordinator mStatusCoordinator; private AutocompleteCoordinator mAutocompleteCoordinator; private OmniboxPrerender mOmniboxPrerender; @@ -80,28 +82,34 @@ private final List<Runnable> mDeferredNativeRunnables = new ArrayList<>(); private final OneshotSupplier<TemplateUrlService> mTemplateUrlServiceSupplier; private TemplateUrl mSearchEngine; + private final Context mContext; + private final BackKeyBehaviorDelegate mBackKeyBehavior; + private String mOriginalUrl = ""; private boolean mNativeInitialized; - /*package */ LocationBarMediator(@NonNull LocationBarLayout locationBarLayout, + /*package */ LocationBarMediator(@NonNull Context context, + @NonNull LocationBarLayout locationBarLayout, @NonNull LocationBarDataProvider locationBarDataProvider, - @NonNull OneshotSupplierImpl<AssistantVoiceSearchService> assistantVoiceSearchSupplier, @NonNull ObservableSupplier<Profile> profileSupplier, @NonNull PrivacyPreferencesManagerImpl privacyPreferencesManager, @NonNull OverrideUrlLoadingDelegate overrideUrlLoadingDelegate, @NonNull LocaleManager localeManager, - @NonNull OneshotSupplier<TemplateUrlService> templateUrlServiceSupplier) { + @NonNull OneshotSupplier<TemplateUrlService> templateUrlServiceSupplier, + @NonNull BackKeyBehaviorDelegate backKeyBehavior) { + mContext = context; mLocationBarLayout = locationBarLayout; mLocationBarDataProvider = locationBarDataProvider; mLocationBarDataProvider.addObserver(this); - mAssistantVoiceSearchSupplier = assistantVoiceSearchSupplier; mOverrideUrlLoadingDelegate = overrideUrlLoadingDelegate; mLocaleManager = localeManager; - mVoiceRecognitionHandler = new VoiceRecognitionHandler(this, mAssistantVoiceSearchSupplier); + mVoiceRecognitionHandler = + new VoiceRecognitionHandler(this, mAssistantVoiceSearchServiceSupplier); mProfileSupplier = profileSupplier; mProfileSupplier.addObserver(mCallbackController.makeCancelable(this::setProfile)); mPrivacyPreferencesManager = privacyPreferencesManager; mTemplateUrlServiceSupplier = templateUrlServiceSupplier; + mBackKeyBehavior = backKeyBehavior; } /** @@ -120,14 +128,14 @@ } /*package */ void destroy() { - if (mAssistantVoiceSearchService != null) { - mAssistantVoiceSearchService.destroy(); - mAssistantVoiceSearchService = null; + if (mAssistantVoiceSearchServiceSupplier.get() != null) { + mAssistantVoiceSearchServiceSupplier.get().destroy(); } mStatusCoordinator = null; mAutocompleteCoordinator = null; mUrlCoordinator = null; mPrivacyPreferencesManager = null; + mVoiceRecognitionHandler.destroy(); mVoiceRecognitionHandler = null; mLocationBarDataProvider.removeObserver(this); mDeferredNativeRunnables.clear(); @@ -139,19 +147,27 @@ /*package */ void onUrlFocusChange(boolean hasFocus) { mLocationBarLayout.onUrlFocusChange(hasFocus); + onPrimaryColorChanged(); + mLocationBarLayout.updateStatusVisibility(); + // Focus change caused by a closed tab may result in there not being an active tab. + if (!hasFocus && mLocationBarDataProvider.hasTab()) { + setUrl(mLocationBarDataProvider.getCurrentUrl(), + mLocationBarDataProvider.getUrlBarData()); + } } /*package */ void onFinishNativeInitialization() { mNativeInitialized = true; mTemplateUrlServiceSupplier.get().runWhenLoaded(this::registerTemplateUrlObserver); mOmniboxPrerender = new OmniboxPrerender(); - Context context = mLocationBarLayout.getContext(); - mAssistantVoiceSearchService = new AssistantVoiceSearchService(context, + mAssistantVoiceSearchServiceSupplier.set(new AssistantVoiceSearchService(mContext, ExternalAuthUtils.getInstance(), mTemplateUrlServiceSupplier.get(), - GSAState.getInstance(context), this, SharedPreferencesManager.getInstance()); - mAssistantVoiceSearchSupplier.set(mAssistantVoiceSearchService); + GSAState.getInstance(mContext), this, SharedPreferencesManager.getInstance())); + onAssistantVoiceSearchServiceChanged(); mLocationBarLayout.onFinishNativeInitialization(); setProfile(mProfileSupplier.get()); + onPrimaryColorChanged(); + mLocationBarLayout.updateStatusVisibility(); for (Runnable deferredRunnable : mDeferredNativeRunnables) { mLocationBarLayout.post(deferredRunnable); @@ -173,8 +189,19 @@ mLocationBarLayout.setVoiceRecognitionHandlerForTesting(voiceRecognitionHandler); } + /* package */ void setAssistantVoiceSearchServiceForTesting( + AssistantVoiceSearchService assistantVoiceSearchService) { + mAssistantVoiceSearchServiceSupplier.set(assistantVoiceSearchService); + onAssistantVoiceSearchServiceChanged(); + } + + /* package */ OneshotSupplier<AssistantVoiceSearchService> + getAssistantVoiceSearchServiceSupplierForTesting() { + return mAssistantVoiceSearchServiceSupplier; + } + /*package */ void updateVisualsForState() { - mLocationBarLayout.onPrimaryColorChanged(); + onPrimaryColorChanged(); } /*package */ void setShowTitle(boolean showTitle) { @@ -205,7 +232,8 @@ } mUrlCoordinator.setKeyboardVisibility(false, false); } else { - mLocationBarLayout.setUrl(mLocationBarDataProvider.getCurrentUrl()); + setUrl(mLocationBarDataProvider.getCurrentUrl(), + mLocationBarDataProvider.getUrlBarData()); } } @@ -233,7 +261,7 @@ && !CommandLine.getInstance().hasSwitch(ChromeSwitches.DISABLE_INSTANT) && mPrivacyPreferencesManager.shouldPrerender() && mLocationBarDataProvider.hasTab()) { - mOmniboxPrerender.prerenderMaybe(userText, mLocationBarLayout.getOriginalUrl(), + mOmniboxPrerender.prerenderMaybe(userText, mOriginalUrl, mAutocompleteCoordinator.getCurrentNativeAutocompleteResult(), mProfileSupplier.get(), mLocationBarDataProvider.getTab()); } @@ -317,10 +345,6 @@ mLocationBarLayout.updateButtonVisibility(); } - /* package */ StatusCoordinator getStatusCoordinatorForTesting() { - return mStatusCoordinator; - } - @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) /* package */ void registerTemplateUrlObserver() { final TemplateUrlService templateUrlService = mTemplateUrlServiceSupplier.get(); @@ -330,6 +354,33 @@ onTemplateURLServiceChanged(); } + /** + * Sets the displayed URL according to the provided url string and UrlBarData. + * + * <p>The URL is converted to the most user friendly format (removing HTTP:// for example). + * + * <p>If the current tab is null, the URL text will be cleared. + */ + /* package */ void setUrl(String currentUrlString, UrlBarData urlBarData) { + // If the URL is currently focused, do not replace the text they have entered with the URL. + // Once they stop editing the URL, the current tab's URL will automatically be filled in. + if (mUrlCoordinator.hasFocus()) { + if (mLocationBarLayout.isUrlBarFocusedWithoutAnimations() + && !UrlUtilities.isNTPUrl(currentUrlString)) { + // If we did not run the focus animations, then the user has not typed any text. + // So, clear the focus and accept whatever URL the page is currently attempting to + // display. If the NTP is showing, the current page's URL should not be displayed. + setUrlBarFocus(false, null, OmniboxFocusReason.UNFOCUS); + } else { + return; + } + } + + mOriginalUrl = currentUrlString; + mLocationBarLayout.setUrlBarText( + urlBarData, UrlBar.ScrollType.SCROLL_TO_TLD, SelectionState.SELECT_ALL); + } + // Private methods private void setProfile(Profile profile) { @@ -349,6 +400,54 @@ } } + @VisibleForTesting + /* package */ void updateAssistantVoiceSearchDrawableAndColors() { + AssistantVoiceSearchService assistantVoiceSearchService = + mAssistantVoiceSearchServiceSupplier.get(); + if (assistantVoiceSearchService == null) return; + + mLocationBarLayout.setMicButtonTint(assistantVoiceSearchService.getMicButtonColorStateList( + getPrimaryBackgroundColor(), mContext)); + mLocationBarLayout.setMicButtonDrawable( + assistantVoiceSearchService.getCurrentMicDrawable()); + } + + /** + * Update visuals to use a correct light or dark color scheme depending on the primary color. + */ + @VisibleForTesting + /* package */ void updateUseDarkColors() { + // TODO(crbug.com/1114183): Unify light and dark color logic in chrome and make it clear + // whether the foreground or background color is dark. + final boolean useDarkColors = + !ColorUtils.shouldUseLightForegroundOnBackground(getPrimaryBackgroundColor()); + + mLocationBarLayout.setDeleteButtonTint( + ChromeColors.getPrimaryIconTint(mContext, !useDarkColors)); + // If the URL changed colors and is not focused, update the URL to account for the new + // color scheme. + if (mUrlCoordinator.setUseDarkTextColors(useDarkColors) && !isUrlBarFocused()) { + updateUrl(); + } + mStatusCoordinator.setUseDarkColors(useDarkColors); + if (mAutocompleteCoordinator != null) { + mAutocompleteCoordinator.updateVisualsForState( + useDarkColors, mLocationBarDataProvider.isIncognito()); + } + } + + /** Returns the primary color based on the url focus, and incognito state. */ + private int getPrimaryBackgroundColor() { + // If the url bar is focused, the toolbar background color is the default color regardless + // of whether it is branded or not. + if (isUrlBarFocused()) { + return ChromeColors.getDefaultThemeColor( + mContext.getResources(), mLocationBarDataProvider.isIncognito()); + } else { + return mLocationBarDataProvider.getPrimaryColor(); + } + } + // LocationBarData.Observer implementation // Using the default empty onSecurityStateChanged. // Using the default empty onTitleChanged. @@ -365,7 +464,9 @@ @Override public void onPrimaryColorChanged() { - mLocationBarLayout.onPrimaryColorChanged(); + updateAssistantVoiceSearchDrawableAndColors(); + updateUseDarkColors(); + mLocationBarLayout.updateStatusVisibility(); } @Override @@ -376,7 +477,7 @@ } private void updateUrl() { - mLocationBarLayout.setUrl(mLocationBarDataProvider.getCurrentUrl()); + setUrl(mLocationBarDataProvider.getCurrentUrl(), mLocationBarDataProvider.getUrlBarData()); } private void updateOmniboxPrerender() { @@ -442,7 +543,7 @@ @Override public void onAssistantVoiceSearchServiceChanged() { - mLocationBarLayout.onAssistantVoiceSearchServiceChanged(); + updateAssistantVoiceSearchDrawableAndColors(); } // VoiceRecognitionHandler.Delegate implementation. @@ -508,7 +609,13 @@ @Override public void backKeyPressed() { - mLocationBarLayout.backKeyPressed(); + if (mBackKeyBehavior.handleBackKeyPressed()) { + return; + } + + setUrlBarFocus(false, null, OmniboxFocusReason.UNFOCUS); + // Revert the URL to match the current page. + setUrl(mLocationBarDataProvider.getCurrentUrl(), mLocationBarDataProvider.getUrlBarData()); focusCurrentTab(); } @@ -546,7 +653,7 @@ } else if (KeyNavigationUtil.isActionUp(event)) { mLocationBarLayout.getKeyDispatcherState().handleUpEvent(event); if (event.isTracking() && !event.isCanceled()) { - mLocationBarLayout.backKeyPressed(); + backKeyPressed(); return true; } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java index 4c76425..f0ed49a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java
@@ -172,14 +172,6 @@ } @Override - public void onPrimaryColorChanged() { - super.onPrimaryColorChanged(); - boolean isIncognito = mLocationBarDataProvider.isIncognito(); - setShowIconsWhenUrlFocused(SearchEngineLogoUtils.shouldShowSearchEngineLogo(isIncognito)); - updateStatusVisibility(); - } - - @Override protected void onNtpStartedLoading() { super.onNtpStartedLoading(); updateStatusVisibility(); @@ -219,8 +211,11 @@ } /** Update the status visibility according to the current state held in LocationBar. */ - private void updateStatusVisibility() { + @Override + /* package */ void updateStatusVisibility() { boolean incognito = mLocationBarDataProvider.isIncognito(); + setShowIconsWhenUrlFocused(SearchEngineLogoUtils.shouldShowSearchEngineLogo(incognito)); + if (!SearchEngineLogoUtils.shouldShowSearchEngineLogo(incognito)) { return; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarTablet.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarTablet.java index 2bac5c6..4ea25b3c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarTablet.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarTablet.java
@@ -16,13 +16,11 @@ import androidx.annotation.NonNull; -import org.chromium.base.supplier.OneshotSupplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.WindowDelegate; import org.chromium.chrome.browser.download.DownloadUtils; import org.chromium.chrome.browser.omnibox.status.StatusCoordinator; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; -import org.chromium.chrome.browser.omnibox.voice.AssistantVoiceSearchService; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.toolbar.top.ToolbarTablet; @@ -119,11 +117,9 @@ @NonNull UrlBarCoordinator urlCoordinator, @NonNull StatusCoordinator statusCoordinator, @NonNull LocationBarDataProvider locationBarDataProvider, @NonNull WindowDelegate windowDelegate, @NonNull WindowAndroid windowAndroid, - @NonNull VoiceRecognitionHandler voiceRecognitionHandler, - @NonNull OneshotSupplier<AssistantVoiceSearchService> assistantVoiceSearchSupplier) { + @NonNull VoiceRecognitionHandler voiceRecognitionHandler) { super.initialize(autocompleteCoordinator, urlCoordinator, statusCoordinator, - locationBarDataProvider, windowDelegate, windowAndroid, voiceRecognitionHandler, - assistantVoiceSearchSupplier); + locationBarDataProvider, windowDelegate, windowAndroid, voiceRecognitionHandler); mStatusCoordinator.setShowIconsWhenUrlFocused(true); if (SearchEngineLogoUtils.shouldShowSearchEngineLogo( mLocationBarDataProvider.isIncognito())) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBarCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBarCoordinator.java index beccfc54..af58f75c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBarCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBarCoordinator.java
@@ -169,6 +169,10 @@ mUrlBar.removeCallbacks(mKeyboardResizeModeTask); } + /* package */ boolean hasFocus() { + return mUrlBar.hasFocus(); + } + /** * Controls keyboard visibility. *
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionView.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionView.java index c2dfb2d..467dd37 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionView.java
@@ -38,9 +38,9 @@ setClickable(false); setFocusable(false); setOrientation(VERTICAL); - final int verticalPad = getResources().getDimensionPixelSize( - R.dimen.omnibox_suggestion_semicompact_padding); - setPaddingRelative(0, 0, 0, verticalPad); + final int verticalPad = + getResources().getDimensionPixelSize(R.dimen.omnibox_carousel_suggestion_padding); + setPaddingRelative(0, verticalPad, 0, verticalPad); mHeader = new HeaderView(context); mHeader.setLayoutParams( @@ -48,6 +48,7 @@ mHeader.getIconView().setVisibility(GONE); mHeader.setClickable(false); mHeader.setFocusable(false); + mHeader.setVisibility(View.GONE); addView(mHeader); mRecyclerView = new RecyclerView(context); @@ -108,6 +109,11 @@ return mHeader.getTextView(); } + /** @return Header element. */ + View getHeaderView() { + return mHeader; + } + /** @return Adapter used with the embedded RecyclerView. */ SimpleRecyclerViewAdapter getAdapter() { return (SimpleRecyclerViewAdapter) mRecyclerView.getAdapter();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewBinder.java index 4899d954..b1fc6900 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewBinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewBinder.java
@@ -4,6 +4,9 @@ package org.chromium.chrome.browser.omnibox.suggestions.carousel; +import android.view.View; + +import org.chromium.chrome.R; import org.chromium.ui.modelutil.MVCListAdapter.ListItem; import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyModel; @@ -28,6 +31,18 @@ } } else if (key == BaseCarouselSuggestionViewProperties.TITLE) { view.getHeaderTextView().setText(model.get(BaseCarouselSuggestionViewProperties.TITLE)); + } else if (key == BaseCarouselSuggestionViewProperties.SHOW_TITLE) { + final boolean showTitle = model.get(BaseCarouselSuggestionViewProperties.SHOW_TITLE); + final View headerView = view.getHeaderView(); + final int verticalPad = view.getResources().getDimensionPixelSize( + R.dimen.omnibox_carousel_suggestion_padding); + if (showTitle) { + headerView.setVisibility(View.VISIBLE); + view.setPaddingRelative(0, 0, 0, verticalPad); + } else { + headerView.setVisibility(View.GONE); + view.setPaddingRelative(0, verticalPad, 0, verticalPad); + } } } -} \ No newline at end of file +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewProperties.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewProperties.java index cd0b855..8c889c5 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewProperties.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewProperties.java
@@ -8,6 +8,7 @@ import org.chromium.ui.modelutil.MVCListAdapter.ListItem; import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.ui.modelutil.PropertyModel.WritableBooleanPropertyKey; import org.chromium.ui.modelutil.PropertyModel.WritableObjectPropertyKey; import java.util.Collection; @@ -22,7 +23,11 @@ public static final WritableObjectPropertyKey<CharSequence> TITLE = new WritableObjectPropertyKey<>(); - public static final PropertyKey[] ALL_UNIQUE_KEYS = new PropertyKey[] {TITLE, TILES}; + /** Controls whether the Header should be shown. */ + public static final WritableBooleanPropertyKey SHOW_TITLE = new WritableBooleanPropertyKey(); + + public static final PropertyKey[] ALL_UNIQUE_KEYS = + new PropertyKey[] {TITLE, SHOW_TITLE, TILES}; public static final PropertyKey[] ALL_KEYS = PropertyModel.concatKeys(ALL_UNIQUE_KEYS, SuggestionCommonProperties.ALL_KEYS);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProcessor.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProcessor.java index 33b2edc..86a7b6b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProcessor.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProcessor.java
@@ -191,7 +191,7 @@ /** Invoked when user interacts with Copy action button. */ private void onCopyLink() { RecordUserAction.record("Omnibox.EditUrlSuggestion.Copy"); - Clipboard.getInstance().copyUrlToClipboard(mLastProcessedSuggestionURL.getSpec()); + Clipboard.getInstance().copyUrlToClipboard(mLastProcessedSuggestionURL); } /** Invoked when user interacts with Edit action button. */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/mostvisited/MostVisitedTilesProcessor.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/mostvisited/MostVisitedTilesProcessor.java index a20382de..91359682 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/mostvisited/MostVisitedTilesProcessor.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/mostvisited/MostVisitedTilesProcessor.java
@@ -142,8 +142,7 @@ } model.set(BaseCarouselSuggestionViewProperties.TILES, tileList); - model.set(BaseCarouselSuggestionViewProperties.TITLE, - mContext.getResources().getString(R.string.most_visited_tiles_header)); + model.set(BaseCarouselSuggestionViewProperties.SHOW_TITLE, false); } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler.java index 709c10a..920abe5c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler.java
@@ -33,6 +33,7 @@ import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.settings.SettingsLauncherImpl; import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.translate.TranslateBridge; import org.chromium.chrome.browser.util.VoiceRecognitionUtil; import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerProvider; import org.chromium.components.embedder_support.util.UrlUtilities; @@ -52,7 +53,7 @@ /** * Class containing functionality related to voice search. */ -public class VoiceRecognitionHandler { +public class VoiceRecognitionHandler implements ProfileManager.Observer { private static final String TAG = "VoiceRecognition"; // The minimum confidence threshold that will result in navigating directly to a voice search @@ -67,6 +68,21 @@ // via the toolbar button, and is not populated for internal Chrome URLs. @VisibleForTesting static final String EXTRA_PAGE_URL = "com.android.chrome.voice.PAGE_URL"; + // Extra containing the original language code of the current page. This is only populated for + // pages that are translatable and only for intents initiated via the toolbar button. + @VisibleForTesting + static final String EXTRA_TRANSLATE_ORIGINAL_LANGUAGE = + "com.android.chrome.voice.TRANSLATE_ORIGINAL_LANGUAGE"; + // Extra containing the current language code of the current page. This is only populated for + // pages that are translatable and only for intents initiated via the toolbar button. + @VisibleForTesting + static final String EXTRA_TRANSLATE_CURRENT_LANGUAGE = + "com.android.chrome.voice.TRANSLATE_CURRENT_LANGUAGE"; + // Extra containing the user's default target language code. This is only populated for pages + // that are translatable and only for intents initiated via the toolbar button. + @VisibleForTesting + static final String EXTRA_TRANSLATE_TARGET_LANGUAGE = + "com.android.chrome.voice.TRANSLATE_TARGET_LANGUAGE"; // Extra containing a string that represents the action taken by Assistant after being opened // for voice transcription. See AssistantActionPerformed, below. @VisibleForTesting @@ -76,6 +92,7 @@ private Long mQueryStartTimeMs; private WebContentsObserver mVoiceSearchWebContentsObserver; private Supplier<AssistantVoiceSearchService> mAssistantVoiceSearchServiceSupplier; + private TranslateBridgeWrapper mTranslateBridgeWrapper; // VoiceInteractionEventSource defined in tools/metrics/histograms/enums.xml. // Do not reorder or remove items, only add new items before HISTOGRAM_BOUNDARY. @@ -157,6 +174,45 @@ } /** + * Wraps our usage of the static methods in the {@link TranslateBridge} into a class that can be + * mocked for testing. + */ + public static class TranslateBridgeWrapper { + /** + * Returns true iff the current tab can be manually translated. + * Logging should only be performed when this method is called to show the translate menu + * item. + */ + public boolean canManuallyTranslate(Tab tab) { + return TranslateBridge.canManuallyTranslate(tab, /*menuLogging=*/false); + } + + /** + * Returns the original language code of the given tab. Empty string if no language was + * detected yet. + */ + public String getOriginalLanguage(Tab tab) { + return TranslateBridge.getOriginalLanguage(tab); + } + + /** + * Returns the current language code of the given tab. Empty string if no language was + * detected yet. + */ + public String getCurrentLanguage(Tab tab) { + return TranslateBridge.getCurrentLanguage(tab); + } + + /** + * Returns the best target language based on what the Translate Service knows about the + * user. + */ + public String getTargetLanguage() { + return TranslateBridge.getTargetLanguage(); + } + } + + /** * A storage class that holds voice recognition string matches and confidence scores. */ public static class VoiceResult { @@ -207,9 +263,23 @@ Supplier<AssistantVoiceSearchService> assistantVoiceSearchServiceSupplier) { mDelegate = delegate; mAssistantVoiceSearchServiceSupplier = assistantVoiceSearchServiceSupplier; + mTranslateBridgeWrapper = new TranslateBridgeWrapper(); + ProfileManager.addObserver(this); } /** + * After profile is created and prefs loaded ensure that UI is updated and the mic shown/hidden + * as needed. + */ + @Override + public void onProfileAdded(Profile profile) { + mDelegate.updateMicButtonState(); + } + + @Override + public void onProfileDestroyed(Profile profile) {} + + /** * Instantiated when a voice search is performed to monitor the web contents for a navigation * to be started so we can notify the render frame that a user gesture has been performed. This * allows autoplay of the voice response for search results. @@ -621,6 +691,12 @@ } } + if (source == VoiceInteractionSource.TOOLBAR && FeatureList.isInitialized() + && ChromeFeatureList.isEnabled(ChromeFeatureList.ASSISTANT_INTENT_TRANSLATE_INFO)) { + boolean attached = attachTranslateExtras(intent); + recordTranslateExtrasAttachResult(attached); + } + if (!showSpeechRecognitionIntent(windowAndroid, intent, source)) { mDelegate.updateMicButtonState(); recordVoiceSearchFailureEventSource(source); @@ -664,6 +740,48 @@ } /** + * Includes translate information, if available, as Extras in the given Assistant intent. + * + * @return True if the Extras were attached successfully (page was translatable, languages + * detected, etc), false otherwise. + */ + private boolean attachTranslateExtras(Intent intent) { + LocationBarDataProvider locationBarDataProvider = mDelegate.getLocationBarDataProvider(); + Tab currentTab = locationBarDataProvider != null ? locationBarDataProvider.getTab() : null; + if (currentTab == null || currentTab.isIncognito() + || !mTranslateBridgeWrapper.canManuallyTranslate(currentTab)) { + return false; + } + + // The page's URL is used to ensure the Translate intent doesn't translate the wrong page. + String url = getUrl(); + // The presence of original and current language fields are used to indicate whether the + // page is translated and/or is translatable. Only include them if they are both available. + String originalLanguageCode = mTranslateBridgeWrapper.getOriginalLanguage(currentTab); + String currentLanguageCode = mTranslateBridgeWrapper.getCurrentLanguage(currentTab); + if (TextUtils.isEmpty(url) || TextUtils.isEmpty(originalLanguageCode) + || TextUtils.isEmpty(currentLanguageCode)) { + return false; + } + + intent.putExtra(EXTRA_TRANSLATE_ORIGINAL_LANGUAGE, originalLanguageCode); + intent.putExtra(EXTRA_TRANSLATE_CURRENT_LANGUAGE, currentLanguageCode); + + // If ASSISTANT_INTENT_PAGE_URL is enabled, the URL may have already been added. + if (!intent.hasExtra(EXTRA_PAGE_URL)) { + intent.putExtra(EXTRA_PAGE_URL, url); + } + + // The target language is not necessary for Assistant to decide whether to show the + // translate UI. + String targetLanguageCode = mTranslateBridgeWrapper.getTargetLanguage(); + if (!TextUtils.isEmpty(targetLanguageCode)) { + intent.putExtra(EXTRA_TRANSLATE_TARGET_LANGUAGE, targetLanguageCode); + } + return true; + } + + /** * Shows a cancelable speech recognition intent, returning a boolean that indicates if it was * successfully shown. * @@ -847,6 +965,19 @@ "VoiceInteraction.QueryDuration.Android." + actionSuffix, openDurationMs); } + /** Records whether translate information was successfully attached to an Assistant intent. */ + @VisibleForTesting + protected void recordTranslateExtrasAttachResult(boolean result) { + RecordHistogram.recordBooleanHistogram( + "VoiceInteraction.AssistantIntent.TranslateExtrasAttached", result); + } + + /** Allows for overriding the TranslateBridgeWrapper for test purposes. */ + @VisibleForTesting + protected void setTranslateBridgeWrapper(TranslateBridgeWrapper wrapper) { + mTranslateBridgeWrapper = wrapper; + } + /** * Calls into {@link VoiceRecognitionUtil} to determine whether or not the * {@link RecognizerIntent#ACTION_RECOGNIZE_SPEECH} {@link Intent} is handled by any @@ -864,4 +995,9 @@ void setQueryStartTimeForTesting(Long queryStartTimeMs) { mQueryStartTimeMs = queryStartTimeMs; } + + /** Clean up. Creators must call this when the object is no longer needed. */ + public void destroy() { + ProfileManager.removeObserver(this); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/page_info/SiteSettingsHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/page_info/SiteSettingsHelper.java index e79e553..1a4bc6d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/page_info/SiteSettingsHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/page_info/SiteSettingsHelper.java
@@ -18,9 +18,9 @@ import org.chromium.components.browser_ui.site_settings.SingleWebsiteSettings; import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; -import org.chromium.components.embedder_support.util.UrlConstants; +import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.content_public.browser.WebContents; -import org.chromium.net.GURLUtils; +import org.chromium.url.GURL; /** * This class contains helper methods for determining site settings availability and showing the @@ -37,12 +37,8 @@ PreviewsAndroidBridge.getInstance().shouldShowPreviewUI(webContents); // TODO(crbug.com/1033178): dedupe the DomDistillerUrlUtils#getOriginalUrlFromDistillerUrl() // calls. - String url = - DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(webContents.getVisibleUrl()); - String scheme = GURLUtils.getScheme(url); - return !isOfflinePage && !isPreviewPage - && (UrlConstants.HTTP_SCHEME.equals(scheme) - || UrlConstants.HTTPS_SCHEME.equals(scheme)); + GURL url = DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(webContents.getVisibleUrl()); + return !isOfflinePage && !isPreviewPage && url != null && UrlUtilities.isHttpOrHttps(url); } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/query_tiles/QueryTileSection.java b/chrome/android/java/src/org/chromium/chrome/browser/query_tiles/QueryTileSection.java index 62543cfa2..8e598a2 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/query_tiles/QueryTileSection.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/query_tiles/QueryTileSection.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.query_tiles; +import android.content.Context; import android.graphics.Bitmap; import android.view.View; import android.view.ViewGroup; @@ -42,6 +43,7 @@ * section. */ public class QueryTileSection { + private static final String UMA_PREFIX = "QueryTiles.NTP"; private static final String MOST_VISITED_MAX_ROWS_SMALL_SCREEN = "most_visited_max_rows_small_screen"; private static final String MOST_VISITED_MAX_ROWS_NORMAL_SCREEN = @@ -49,7 +51,6 @@ private static final String VARIATION_SMALL_SCREEN_HEIGHT_THRESHOLD_DP = "small_screen_height_threshold_dp"; private static final int DEFAULT_SMALL_SCREEN_HEIGHT_THRESHOLD_DP = 700; - private static final String UMA_PREFIX = "QueryTiles.NTP"; private final ViewGroup mQueryTileSectionView; private final SearchBoxCoordinator mSearchBoxCoordinator; @@ -204,12 +205,12 @@ } /** + * @param context Context for display calculation. * @return Max number of rows for most visited tiles. For smaller screens, the most visited * tiles section on NTP is shortened so that feed is still visible above the fold. */ - public Integer getMaxRowsForMostVisitedTiles() { - DisplayAndroid display = - DisplayAndroid.getNonMultiDisplay(mQueryTileSectionView.getContext()); + public static int getMaxRowsForMostVisitedTiles(Context context) { + DisplayAndroid display = DisplayAndroid.getNonMultiDisplay(context); int screenHeightDp = DisplayUtil.pxToDp(display, display.getDisplayHeight()); int smallScreenHeightThresholdDp = ChromeFeatureList.getFieldTrialParamByFeatureAsInt( ChromeFeatureList.QUERY_TILES, VARIATION_SMALL_SCREEN_HEIGHT_THRESHOLD_DP,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java index 418ff4c2..0fe2729 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java
@@ -33,6 +33,7 @@ import org.chromium.chrome.browser.init.AsyncInitializationActivity; import org.chromium.chrome.browser.init.SingleWindowKeyboardVisibilityDelegate; import org.chromium.chrome.browser.locale.LocaleManager; +import org.chromium.chrome.browser.omnibox.BackKeyBehaviorDelegate; import org.chromium.chrome.browser.omnibox.LocationBarCoordinator; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tab.Tab; @@ -58,8 +59,8 @@ import org.chromium.url.GURL; /** Queries the user's default search engine and shows autocomplete suggestions. */ -public class SearchActivity extends AsyncInitializationActivity - implements SnackbarManageable, SearchActivityLocationBarLayout.Delegate { +public class SearchActivity + extends AsyncInitializationActivity implements SnackbarManageable, BackKeyBehaviorDelegate { // Shared with other org.chromium.chrome.browser.searchwidget classes. protected static final String TAG = "searchwidget"; @@ -113,7 +114,7 @@ /** The View that represents the search box. */ private SearchActivityLocationBarLayout mSearchBox; - private LocationBarCoordinator mLocationBarCoordinator; + LocationBarCoordinator mLocationBarCoordinator; private SnackbarManager mSnackbarManager; private SearchBoxDataProvider mSearchBoxDataProvider; @@ -127,11 +128,6 @@ } @Override - public void backKeyPressed() { - cancelSearch(); - } - - @Override protected boolean shouldDelayBrowserStartup() { return true; } @@ -167,7 +163,6 @@ // Build the search box. mSearchBox = (SearchActivityLocationBarLayout) mContentView.findViewById( R.id.search_location_bar); - mSearchBox.setDelegate(this); View anchorView = mContentView.findViewById(R.id.toolbar); mLocationBarCoordinator = new LocationBarCoordinator(mSearchBox, anchorView, mProfileSupplier, mSearchBoxDataProvider, null, new WindowDelegate(getWindow()), @@ -177,10 +172,12 @@ /*shareDelegateSupplier=*/null, /*incognitoStateProvider=*/null, getLifecycleDispatcher(), /*overrideUrlLoadingDelegate=*/ (String url, @PageTransition int transition, String postDataType, byte[] postData, - boolean incognito) -> { + boolean incognito) + -> { loadUrl(url, transition, postDataType, postData); return true; - }); + }, + /*backKeyBehavior=*/this); mLocationBarCoordinator.setUrlBarFocusable(true); // Kick off everything needed for the user to type into the box. @@ -293,6 +290,13 @@ SearchActivity.this, onSearchEngineFinalizedCallback); } + // OverrideBackKeyBehaviorDelegate implementation. + @Override + public boolean handleBackKeyPressed() { + cancelSearch(); + return true; + } + private void finishDeferredInitialization() { assert !mIsActivityUsable : "finishDeferredInitialization() incorrectly called multiple times"; @@ -441,4 +445,8 @@ static void setDelegateForTests(SearchActivityDelegate delegate) { sDelegate = delegate; } + + LocationBarCoordinator getLocationBarCoordinatorForTesting() { + return mLocationBarCoordinator; + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivityLocationBarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivityLocationBarLayout.java index dee5a7b..65b64b33 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivityLocationBarLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivityLocationBarLayout.java
@@ -12,7 +12,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; -import org.chromium.base.supplier.OneshotSupplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.WindowDelegate; import org.chromium.chrome.browser.locale.LocaleManager; @@ -24,20 +23,12 @@ import org.chromium.chrome.browser.omnibox.UrlBarData; import org.chromium.chrome.browser.omnibox.status.StatusCoordinator; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; -import org.chromium.chrome.browser.omnibox.voice.AssistantVoiceSearchService; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.toolbar.top.ToolbarPhone; import org.chromium.ui.base.WindowAndroid; /** Implementation of the {@link LocationBarLayout} that is displayed for widget searches. */ public class SearchActivityLocationBarLayout extends LocationBarLayout { - /** Delegates calls out to the containing Activity. */ - public static interface Delegate { - /** The user hit the back button. */ - void backKeyPressed(); - } - - private Delegate mDelegate; private boolean mPendingSearchPromoDecision; private boolean mPendingBeginQuery; private boolean mHasWindowFocus; @@ -50,38 +41,20 @@ } - /** Set the {@link Delegate}. */ - void setDelegate(Delegate delegate) { - mDelegate = delegate; - } - @Override public void initialize(@NonNull AutocompleteCoordinator autocompleteCoordinator, @NonNull UrlBarCoordinator urlCoordinator, @NonNull StatusCoordinator statusCoordinator, @NonNull LocationBarDataProvider locationBarDataProvider, @NonNull WindowDelegate windowDelegate, @NonNull WindowAndroid windowAndroid, - @NonNull VoiceRecognitionHandler voiceRecognitionHandler, - @NonNull OneshotSupplier<AssistantVoiceSearchService> - assistantVoiceSearchServiceSupplier) { + @NonNull VoiceRecognitionHandler voiceRecognitionHandler) { super.initialize(autocompleteCoordinator, urlCoordinator, statusCoordinator, - locationBarDataProvider, windowDelegate, windowAndroid, voiceRecognitionHandler, - assistantVoiceSearchServiceSupplier); + locationBarDataProvider, windowDelegate, windowAndroid, voiceRecognitionHandler); mPendingSearchPromoDecision = LocaleManager.getInstance().needToCheckForSearchEnginePromo(); getAutocompleteCoordinator().setShouldPreventOmniboxAutocomplete( mPendingSearchPromoDecision); } @Override - public void backKeyPressed() { - mDelegate.backKeyPressed(); - } - - @Override - protected void setUrl(String url) { - // Explicitly do nothing. The tab is invisible, so showing its URL would be confusing. - } - - @Override public void onFinishNativeInitialization() { super.onFinishNativeInitialization();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/SiteSection.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/SiteSection.java index 4632f48c..1cb2f106 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/SiteSection.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/SiteSection.java
@@ -43,19 +43,20 @@ .inflate(getLayout(), parent, false); } - public static SiteSectionViewHolder createViewHolder(ViewGroup view, UiConfig uiConfig) { - return new TileGridViewHolder(view, getMaxTileRows(), MAX_TILE_COLUMNS); + public static SiteSectionViewHolder createViewHolder( + ViewGroup view, UiConfig uiConfig, int maxRows) { + return new TileGridViewHolder(view, maxRows, MAX_TILE_COLUMNS); } public SiteSection(SuggestionsUiDelegate uiDelegate, ContextMenuManager contextMenuManager, TileGroup.Delegate tileGroupDelegate, OfflinePageBridge offlinePageBridge, - UiConfig uiConfig) { + UiConfig uiConfig, int maxRows) { mTileRenderer = new TileRenderer(ContextUtils.getApplicationContext(), SuggestionsConfig.getTileStyle(uiConfig), TILE_TITLE_LINES, uiDelegate.getImageFetcher()); mTileGroup = new TileGroup(mTileRenderer, uiDelegate, contextMenuManager, tileGroupDelegate, /* observer = */ this, offlinePageBridge); - mTileGroup.startObserving(MAX_TILE_COLUMNS * getMaxTileRows()); + mTileGroup.startObserving(MAX_TILE_COLUMNS * maxRows); } @Override @@ -108,10 +109,6 @@ return mTileGroup; } - private static int getMaxTileRows() { - return 2; - } - @LayoutRes private static int getLayout() { return R.layout.suggestions_site_tile_grid_modern;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java index ee21a0d..3a62a1d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
@@ -264,9 +264,8 @@ public void onReadLater(GURL url, String title) { BookmarkModel bookmarkModel = new BookmarkModel(); bookmarkModel.finishLoadingBookmarkModel(() -> { - // TODO(https://crbug.com/783819): Convert BookmarkUtils#addToReadingList to GURL. - BookmarkUtils.addToReadingList(url.getSpec(), title, mSnackbarManagerSupplier.get(), - bookmarkModel, mTab.getContext()); + BookmarkUtils.addToReadingList( + url, title, mSnackbarManagerSupplier.get(), bookmarkModel, mTab.getContext()); TrackerFactory.getTrackerForProfile(Profile.getLastUsedRegularProfile()) .notifyEvent(EventConstants.READ_LATER_CONTEXT_MENU_TAPPED); bookmarkModel.destroy();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java index ca903299..4cd3e9e9 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
@@ -375,7 +375,7 @@ } @Override - public String getOriginalUrl() { + public GURL getOriginalUrl() { return DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(getUrl()); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabStateFileManager.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabStateFileManager.java index 9e24bfc..cc4bd5d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabStateFileManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabStateFileManager.java
@@ -4,12 +4,14 @@ package org.chromium.chrome.browser.tab; +import android.os.SystemClock; import android.util.Pair; import androidx.annotation.VisibleForTesting; import org.chromium.base.Log; import org.chromium.base.StreamUtil; +import org.chromium.base.metrics.RecordHistogram; import org.chromium.chrome.browser.crypto.CipherFactory; import org.chromium.chrome.browser.version.ChromeVersionInfo; @@ -64,7 +66,13 @@ if (!file.exists()) return null; // If one of them passed, open the file input stream and read the state contents. - return restoreTabState(file, encrypted); + long startTime = SystemClock.elapsedRealtime(); + TabState tabState = restoreTabState(file, encrypted); + if (tabState != null) { + RecordHistogram.recordTimesHistogram( + "Tabs.TabState.LoadTime", SystemClock.elapsedRealtime() - startTime); + } + return tabState; } /** @@ -216,6 +224,7 @@ */ public static void saveState(File file, TabState state, boolean encrypted) { if (state == null || state.contentsState == null) return; + long startTime = SystemClock.elapsedRealtime(); // Create the byte array from contentsState before opening the FileOutputStream, in case // contentsState.buffer is an instance of MappedByteBuffer that is mapped to @@ -255,6 +264,8 @@ dataOutputStream.writeInt( state.tabLaunchTypeAtCreation != null ? state.tabLaunchTypeAtCreation : -1); dataOutputStream.writeInt(state.rootId); + RecordHistogram.recordTimesHistogram( + "Tabs.TabState.SaveTime", SystemClock.elapsedRealtime() - startTime); } catch (FileNotFoundException e) { Log.w(TAG, "FileNotFoundException while attempting to save TabState."); } catch (IOException e) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/DEPS b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/DEPS index e5928e92..fe589e45 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/DEPS +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/DEPS
@@ -7,6 +7,7 @@ "+chrome/android/java/src/org/chromium/chrome/browser/omnibox", "+ui/android/java/src/org/chromium/ui", "+ui/android/java/src/org/chromium/ui/base", + "+url/android", ] specific_include_rules = {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java index cd9f459..c422bb64 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java
@@ -44,6 +44,7 @@ import org.chromium.content_public.browser.WebContents; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.util.ColorUtils; +import org.chromium.url.GURL; import org.chromium.url.URI; import java.net.URISyntaxException; @@ -57,7 +58,7 @@ */ @FunctionalInterface public interface UrlFormatter { - String format(String url); + String format(GURL url); } /** @@ -239,11 +240,8 @@ if (mTab.isFrozen()) return buildUrlBarData(url, formattedUrl); if (DomDistillerUrlUtils.isDistilledPage(url)) { - String originalUrl = DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(url); - if (originalUrl != null) { - return buildUrlBarData(mUrlFormatter.format(originalUrl)); - } - return buildUrlBarData(url, formattedUrl); + GURL originalUrl = DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(new GURL(url)); + return buildUrlBarData(mUrlFormatter.format(originalUrl)); } // Strip the scheme from committed preview pages only. @@ -252,7 +250,7 @@ } if (isOfflinePage()) { - String originalUrl = mTab.getOriginalUrl(); + GURL originalUrl = mTab.getOriginalUrl(); formattedUrl = UrlUtilities.stripScheme(mUrlFormatter.format(originalUrl)); // Clear the editing text for untrusted offline pages.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java index 11267850..3dd3309b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
@@ -70,6 +70,7 @@ import org.chromium.chrome.browser.ntp.IncognitoNewTabPage; import org.chromium.chrome.browser.ntp.NewTabPage; import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; +import org.chromium.chrome.browser.omnibox.BackKeyBehaviorDelegate; import org.chromium.chrome.browser.omnibox.LocationBar; import org.chromium.chrome.browser.omnibox.LocationBarCoordinator; import org.chromium.chrome.browser.omnibox.OmniboxFocusReason; @@ -476,7 +477,8 @@ mLocationBarModel, mActionModeController.getActionModeCallback(), new WindowDelegate(mActivity.getWindow()), windowAndroid, mActivityTabProvider, modalDialogManagerSupplier, shareDelegateSupplier, mIncognitoStateProvider, - activityLifecycleDispatcher, overrideUrlLoadingDelegate); + activityLifecycleDispatcher, overrideUrlLoadingDelegate, + new BackKeyBehaviorDelegate() {}); toolbarLayout.setLocationBarCoordinator(locationBarCoordinator); mLocationBar = locationBarCoordinator; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java index 1b6665a..6e96b64 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -96,7 +96,6 @@ import org.chromium.components.feature_engagement.EventConstants; import org.chromium.components.messages.ManagedMessageDispatcher; import org.chromium.components.messages.MessageContainer; -import org.chromium.components.messages.MessageUtils; import org.chromium.components.messages.MessagesFactory; import org.chromium.content_public.browser.ActionModeCallbackHelper; import org.chromium.content_public.browser.LoadUrlParams; @@ -290,8 +289,6 @@ mActivity.getLayoutManagerSupplier().removeObserver(mLayoutManagerSupplierCallback); - MessageUtils.setAccessibilityUtil(null); - if (mMessageDispatcher != null) { MessagesFactory.detachMessageDispatcher(mMessageDispatcher); mMessageDispatcher = null; @@ -434,12 +431,12 @@ @CallSuper public void onFinishNativeInitialization() { if (ChromeFeatureList.isEnabled(ChromeFeatureList.MESSAGES_FOR_ANDROID_INFRASTRUCTURE)) { - MessageUtils.setAccessibilityUtil(ChromeAccessibilityUtil.get()); MessageContainer container = mActivity.findViewById(R.id.message_container); mMessageContainerCoordinator = new MessageContainerCoordinator(container, getBrowserControlsManager()); - mMessageDispatcher = MessagesFactory.createMessageDispatcher( - container, mMessageContainerCoordinator::getMessageMaxTranslation); + mMessageDispatcher = MessagesFactory.createMessageDispatcher(container, + mMessageContainerCoordinator::getMessageMaxTranslation, + ChromeAccessibilityUtil.get()); mMessageQueueMediator = new ChromeMessageQueueMediator( mActivity.getBrowserControlsManager(), mMessageContainerCoordinator, mActivity.getFullscreenManager(), mLayoutStateProviderOneShotSupplier,
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java index af6a5539..ffc3a5d 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java
@@ -99,6 +99,7 @@ import org.chromium.net.test.EmbeddedTestServer; import org.chromium.ui.test.util.NightModeTestUtils; import org.chromium.ui.test.util.UiRestriction; +import org.chromium.url.GURL; import java.util.ArrayList; import java.util.List; @@ -1026,7 +1027,7 @@ @SmallTest @Features.EnableFeatures({ChromeFeatureList.READ_LATER}) public void testReadingListItemsInSelectionMode() throws Exception { - addReadingListBookmark(TEST_PAGE_TITLE_GOOGLE, TEST_URL_A); + addReadingListBookmark(TEST_PAGE_TITLE_GOOGLE, new GURL(TEST_URL_A)); BookmarkPromoHeader.forcePromoStateForTests(PromoState.PROMO_NONE); openBookmarkManager(); TestThreadUtils.runOnUiThreadBlocking( @@ -1055,7 +1056,7 @@ @SmallTest @Features.EnableFeatures({ChromeFeatureList.READ_LATER}) public void testReadingListItemMenuItems() throws Exception { - addReadingListBookmark(TEST_PAGE_TITLE_GOOGLE, TEST_URL_A); + addReadingListBookmark(TEST_PAGE_TITLE_GOOGLE, new GURL(TEST_URL_A)); BookmarkPromoHeader.forcePromoStateForTests(PromoState.PROMO_NONE); openBookmarkManager(); TestThreadUtils.runOnUiThreadBlocking( @@ -1096,7 +1097,7 @@ @SmallTest @Features.EnableFeatures({ChromeFeatureList.READ_LATER}) public void testReadingListDeletion() throws Exception { - addReadingListBookmark(TEST_PAGE_TITLE_GOOGLE, TEST_URL_A); + addReadingListBookmark(TEST_PAGE_TITLE_GOOGLE, new GURL(TEST_URL_A)); BookmarkPromoHeader.forcePromoStateForTests(PromoState.PROMO_NONE); openBookmarkManager(); CriteriaHelper.pollUiThread(() -> mBookmarkModel.getReadingListItem(TEST_URL_A) != null); @@ -1140,7 +1141,7 @@ @SmallTest @Features.EnableFeatures({ChromeFeatureList.READ_LATER}) public void testReadingListOpenInCCT() throws Exception { - addReadingListBookmark(TEST_PAGE_TITLE_GOOGLE, TEST_URL_A); + addReadingListBookmark(TEST_PAGE_TITLE_GOOGLE, new GURL(TEST_URL_A)); BookmarkPromoHeader.forcePromoStateForTests(PromoState.PROMO_NONE); openBookmarkManager(); CriteriaHelper.pollUiThread(() -> mBookmarkModel.getReadingListItem(TEST_URL_A) != null); @@ -1673,7 +1674,7 @@ BookmarkPromoHeader.forcePromoStateForTests(PromoState.PROMO_NONE); openBookmarkManager(); TestThreadUtils.runOnUiThreadBlocking(() -> { - mBookmarkModel.addToReadingList("a", "https://a.com/reading_list_0"); + mBookmarkModel.addToReadingList("a", new GURL("https://a.com/reading_list_0")); mManager.openFolder(mBookmarkModel.getRootFolderId()); }); onView(withText("Reading list")).check(matches(isDisplayed())); @@ -1687,8 +1688,8 @@ BookmarkPromoHeader.forcePromoStateForTests(PromoState.PROMO_NONE); openBookmarkManager(); TestThreadUtils.runOnUiThreadBlocking(() -> { - mBookmarkModel.addToReadingList("a", "https://a.com/reading_list_0"); - mBookmarkModel.addToReadingList("b", "https://a.com/reading_list_1"); + mBookmarkModel.addToReadingList("a", new GURL("https://a.com/reading_list_0")); + mBookmarkModel.addToReadingList("b", new GURL("https://a.com/reading_list_1")); mManager.openFolder(mBookmarkModel.getRootFolderId()); }); onView(withText("Reading list")).check(matches(isDisplayed())); @@ -1914,7 +1915,7 @@ () -> mBookmarkModel.addBookmark(mBookmarkModel.getDefaultFolder(), 0, title, url)); } - private BookmarkId addReadingListBookmark(final String title, final String url) + private BookmarkId addReadingListBookmark(final String title, final GURL url) throws ExecutionException { readPartnerBookmarks(); return TestThreadUtils.runOnUiThreadBlocking(
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/bottomsheet/BookmarkBottomSheetTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/bottomsheet/BookmarkBottomSheetTest.java index 7fc769fa..abd45a5 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/bottomsheet/BookmarkBottomSheetTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/bottomsheet/BookmarkBottomSheetTest.java
@@ -49,6 +49,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetController.SheetState; import org.chromium.components.feature_engagement.Tracker; import org.chromium.content_public.browser.test.util.TestThreadUtils; +import org.chromium.url.GURL; import java.util.ArrayList; @@ -187,7 +188,7 @@ // Add 1 bookmark and 1 unread page. TestThreadUtils.runOnUiThreadBlocking(() -> { mBookmarkModel.addBookmark(mBookmarkModel.getMobileFolderId(), 0, TITLE, TEST_URL_A); - mBookmarkModel.addToReadingList(TITLE, TEST_URL_A); + mBookmarkModel.addToReadingList(TITLE, new GURL(TEST_URL_A)); }); showBottomSheet(); @@ -205,8 +206,8 @@ TestThreadUtils.runOnUiThreadBlocking(() -> { mBookmarkModel.addBookmark(mBookmarkModel.getMobileFolderId(), 0, TITLE, TEST_URL_A); mBookmarkModel.addBookmark(mBookmarkModel.getMobileFolderId(), 0, TITLE, TEST_URL_B); - mBookmarkModel.addToReadingList(TITLE, TEST_URL_A); - mBookmarkModel.addToReadingList(TITLE, TEST_URL_B); + mBookmarkModel.addToReadingList(TITLE, new GURL(TEST_URL_A)); + mBookmarkModel.addToReadingList(TITLE, new GURL(TEST_URL_B)); }); showBottomSheet();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java index 96652d3..b2fdda9 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java
@@ -77,9 +77,6 @@ private static final String SEARCH_TERMS_URL = "testing.com"; private static final String GOOGLE_SRP_URL = "https://www.google.com/search?q=machine+learning"; - private static final String VERBOSE_URL = "https://www.suchwowveryyes.edu"; - private static final String TRIMMED_URL = "suchwowveryyes.edu"; - private static final String GOOGLE_URL = "https://www.google.com"; private static final String YAHOO_URL = "https://www.yahoo.com"; @@ -256,29 +253,6 @@ Assert.assertEquals("", getUrlText(getUrlBar())); } - @Test - @SmallTest - public void testEditingTextShownOnFocus() { - final UrlBar urlBar = getUrlBar(); - - mTestLocationBarModel.setCurrentUrl(VERBOSE_URL); - mTestLocationBarModel.setSecurityLevel(ConnectionSecurityLevel.SECURE); - mTestLocationBarModel.mDisplayText = TRIMMED_URL; - mTestLocationBarModel.mEditingText = VERBOSE_URL; - updateLocationBar(); - - Assert.assertEquals(TRIMMED_URL, getUrlText(urlBar)); - - TestThreadUtils.runOnUiThreadBlocking(() -> { urlBar.requestFocus(); }); - - Assert.assertEquals(VERBOSE_URL, getUrlText(urlBar)); - - TestThreadUtils.runOnUiThreadBlocking(() -> { - Assert.assertEquals(0, urlBar.getSelectionStart()); - Assert.assertEquals(VERBOSE_URL.length(), urlBar.getSelectionEnd()); - }); - } - /* * Search engine logo tests. */ @@ -341,14 +315,10 @@ final View statusIconView = getStatusIconView(); updateSearchEngineLogoWithGoogle(locationBar); loadUrlInNewTabAndUpdateModels(UrlConstants.NTP_URL, /* incognito= */ false); + onView(withId(R.id.location_bar_status)).check(matches(not(isDisplayed()))); - onView(withId(R.id.location_bar_status)) - .check((view, e) -> Assert.assertEquals(GONE, statusIconView.getVisibility())); - - // Focus the UrlBar and check that the status view is VISIBLE. setUrlBarTextAndFocus(""); - onView(withId(R.id.location_bar_status)) - .check((view, e) -> Assert.assertEquals(VISIBLE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); } @Test @@ -360,18 +330,10 @@ final View statusIconView = getStatusIconView(); updateSearchEngineLogoWithGoogle(locationBar); loadUrlInNewTabAndUpdateModels(UrlConstants.NTP_URL, /* incognito= */ true); - - // The status view should be hidden in both focused/unfocused while incognito. - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) - -> Assert.assertEquals("Should be gone when unfocused", GONE, - statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status_icon)).check(matches(not(isDisplayed()))); setUrlBarTextAndFocus(""); - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) - -> Assert.assertEquals("Should be gone when focused", GONE, - statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status_icon)).check(matches(not(isDisplayed()))); } @Test @@ -385,13 +347,10 @@ Tab tab = loadUrlInNewTabAndUpdateModels(UrlConstants.NTP_URL, /* incognito= */ false); TestThreadUtils.runOnUiThreadBlocking( () -> tab.loadUrl(new LoadUrlParams(UrlConstants.ABOUT_URL))); - - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(VISIBLE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); setUrlBarTextAndFocus(""); - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(VISIBLE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); } @Test @@ -402,20 +361,10 @@ final View statusIconView = getStatusIconView(); updateSearchEngineLogoWithGoogle(locationBar); loadUrlInNewTabAndUpdateModels(UrlConstants.ABOUT_URL, /* incognito= */ false); - - // The status view should be hidden in both focused/unfocused while incognito. - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) - -> Assert.assertEquals( - "Status should be visible when unfocused on a site.", - VISIBLE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); setUrlBarTextAndFocus(""); - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) - -> Assert.assertEquals( - "Status should be visible when focused on a site.", VISIBLE, - statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); } @Test @@ -427,14 +376,10 @@ final View statusIconView = getStatusIconView(); updateSearchEngineLogoWithGoogle(locationBar); loadUrlInNewTabAndUpdateModels(UrlConstants.ABOUT_URL, /* incognito= */ true); - - // The status view should be hidden in both focused/unfocused while incognito. - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(GONE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); setUrlBarTextAndFocus(""); - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(GONE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); } @Test @@ -448,32 +393,25 @@ UrlConstants.CHROME_BLANK_URL, /* incognito= */ false); TestThreadUtils.runOnUiThreadBlocking( () -> tab.loadUrl(new LoadUrlParams(UrlConstants.ABOUT_URL))); - - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(VISIBLE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); setUrlBarTextAndFocus(""); - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(VISIBLE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); } @Test @SmallTest @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) @EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) - public void testOmniboxSearchEngineLogo_ntp_nonGoogle() { + public void testOmniboxSearchEngineLogo_ntp_nonGoogleg() { final LocationBarLayout locationBar = getLocationBar(); final View statusIconView = getStatusIconView(); updateSearchEngineLogoWithYahoo(locationBar); loadUrlInNewTabAndUpdateModels(UrlConstants.NTP_URL, /* incognito= */ false); + onView(withId(R.id.location_bar_status)).check(matches(not(isDisplayed()))); - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(GONE, statusIconView.getVisibility())); - - // Focus the UrlBar and check that the status view is VISIBLE. setUrlBarTextAndFocus(""); - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(VISIBLE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); } @Test @@ -485,18 +423,10 @@ final View statusIconView = getStatusIconView(); updateSearchEngineLogoWithYahoo(locationBar); loadUrlInNewTabAndUpdateModels(UrlConstants.NTP_URL, /* incognito= */ true); - - // The status view should be hidden in both focused/unfocused while incognito. - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) - -> Assert.assertEquals("Should be gone when unfocused", GONE, - statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status_icon)).check(matches(not(isDisplayed()))); setUrlBarTextAndFocus(""); - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) - -> Assert.assertEquals("Should be gone when focused", GONE, - statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status_icon)).check(matches(not(isDisplayed()))); } @Test @@ -510,13 +440,10 @@ Tab tab = loadUrlInNewTabAndUpdateModels(UrlConstants.NTP_URL, /* incognito= */ false); TestThreadUtils.runOnUiThreadBlocking( () -> tab.loadUrl(new LoadUrlParams(UrlConstants.ABOUT_URL))); - - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(VISIBLE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); setUrlBarTextAndFocus(""); - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(VISIBLE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); } @Test @@ -527,20 +454,10 @@ final View statusIconView = getStatusIconView(); updateSearchEngineLogoWithYahoo(locationBar); loadUrlInNewTabAndUpdateModels(UrlConstants.ABOUT_URL, /* incognito= */ false); - - // The status view should be hidden in both focused/unfocused while incognito. - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) - -> Assert.assertEquals( - "Status should be visible when unfocused on a site.", - VISIBLE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); setUrlBarTextAndFocus(""); - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) - -> Assert.assertEquals( - "Status should be visible when focused on a site.", VISIBLE, - statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); } @Test @@ -552,14 +469,10 @@ final View statusIconView = getStatusIconView(); updateSearchEngineLogoWithYahoo(locationBar); loadUrlInNewTabAndUpdateModels(UrlConstants.ABOUT_URL, /* incognito= */ true); - - // The status view should be hidden in both focused/unfocused while incognito. - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(GONE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status_icon)).check(matches(not(isDisplayed()))); setUrlBarTextAndFocus(""); - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(GONE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status_icon)).check(matches(not(isDisplayed()))); } @Test @@ -573,13 +486,10 @@ UrlConstants.CHROME_BLANK_URL, /* incognito= */ false); TestThreadUtils.runOnUiThreadBlocking( () -> tab.loadUrl(new LoadUrlParams(UrlConstants.ABOUT_URL))); - - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(VISIBLE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); setUrlBarTextAndFocus(""); - onView(withId(R.id.location_bar_status_icon)) - .check((view, e) -> Assert.assertEquals(VISIBLE, statusIconView.getVisibility())); + onView(withId(R.id.location_bar_status)).check(matches(isDisplayed())); } @Test
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarTest.java index 7db03ae8..9dc26e0 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarTest.java
@@ -40,6 +40,7 @@ import org.chromium.components.search_engines.TemplateUrl; import org.chromium.components.search_engines.TemplateUrlService; import org.chromium.content_public.browser.test.util.TestThreadUtils; +import org.chromium.content_public.common.ContentSwitches; import java.util.Arrays; import java.util.List; @@ -49,10 +50,12 @@ * Instrumentation tests for the LocationBar component. */ @RunWith(ChromeJUnit4ClassRunner.class) -@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) +@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, + ContentSwitches.HOST_RESOLVER_RULES + "=MAP * 127.0.0.1", "ignore-certificate-errors"}) public class LocationBarTest { private static final String TEST_QUERY = "testing query"; private static final List<String> TEST_PARAMS = Arrays.asList("foo=bar"); + private static final String HOSTNAME = "suchwowveryyes.edu"; @Rule public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); @@ -70,6 +73,7 @@ ChromeTabbedActivity mActivity; UrlBar mUrlBar; + LocationBarCoordinator mLocationBarCoordinator; LocationBarMediator mLocationBarMediator; String mSearchUrl; @@ -124,12 +128,10 @@ private void doPostActivitySetup(ChromeActivity activity) { mUrlBar = activity.findViewById(org.chromium.chrome.R.id.url_bar); - // clang-format off - mLocationBarMediator = ((LocationBarCoordinator) activity.getToolbarManager() - .getToolbarLayoutForTesting() - .getLocationBar()) - .getMediatorForTesting(); - // clang-format on + mLocationBarCoordinator = ((LocationBarCoordinator) activity.getToolbarManager() + .getToolbarLayoutForTesting() + .getLocationBar()); + mLocationBarMediator = mLocationBarCoordinator.getMediatorForTesting(); mSearchUrl = mActivityTestRule.getEmbeddedTestServerRule().getServer().getURL("/search"); } @@ -232,7 +234,7 @@ mActivityTestRule.typeInOmnibox("", true); Assert.assertEquals(R.drawable.ic_logo_googleg_20dp, - mLocationBarMediator.getStatusCoordinatorForTesting() + mLocationBarCoordinator.getStatusCoordinatorForTesting() .getSecurityIconResourceIdForTesting()); doReturn(mNonGoogleSearchEngine) @@ -244,7 +246,7 @@ mActivityTestRule.typeInOmnibox("", true); Assert.assertEquals(R.drawable.ic_search, - mLocationBarMediator.getStatusCoordinatorForTesting() + mLocationBarCoordinator.getStatusCoordinatorForTesting() .getSecurityIconResourceIdForTesting()); } @@ -260,4 +262,23 @@ locationBarLayout.setUrlFocusChangeInProgress(false); }); } + + @Test + @MediumTest + public void testEditingText() { + startActivityNormally(); + String url = mActivityTestRule.getEmbeddedTestServerRule().getServer().getURLWithHostName( + HOSTNAME, "/"); + mActivityTestRule.loadUrl(url); + + TestThreadUtils.runOnUiThreadBlocking(() -> { + Assert.assertTrue(mUrlBar.getText().toString().startsWith(HOSTNAME)); + mUrlBar.requestFocus(); + Assert.assertEquals("", mUrlBar.getText().toString()); + mLocationBarCoordinator.setOmniboxEditingText(url); + Assert.assertEquals(url, mUrlBar.getText().toString()); + Assert.assertEquals(url.length(), mUrlBar.getSelectionStart()); + Assert.assertEquals(url.length(), mUrlBar.getSelectionEnd()); + }); + } }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewRenderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewRenderTest.java index 338593d23..7f6fa27 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewRenderTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewRenderTest.java
@@ -75,7 +75,7 @@ mStatusView.setCompositeTouchDelegate(new CompositeTouchDelegate(view)); mStatusView.setLocationBarDataProvider( new LocationBarModel(mStatusView.getContext(), NewTabPageDelegate.EMPTY, - url -> url, window -> null, ToolbarTestUtils.OFFLINE_STATUS)); + url -> url.getSpec(), window -> null, ToolbarTestUtils.OFFLINE_STATUS)); mStatusModel = new PropertyModel.Builder(StatusProperties.ALL_KEYS).build(); PropertyModelChangeProcessor.create(mStatusModel, mStatusView, new StatusViewBinder()); });
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewTest.java index 296cfcc6..5042571 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewTest.java
@@ -79,7 +79,7 @@ mStatusView.setCompositeTouchDelegate(new CompositeTouchDelegate(view)); mStatusView.setLocationBarDataProvider( new LocationBarModel(mStatusView.getContext(), NewTabPageDelegate.EMPTY, - url -> url, window -> null, ToolbarTestUtils.OFFLINE_STATUS)); + url -> url.getSpec(), window -> null, ToolbarTestUtils.OFFLINE_STATUS)); mStatusModel = new PropertyModel.Builder(StatusProperties.ALL_KEYS).build(); mStatusMCP = PropertyModelChangeProcessor.create( mStatusModel, mStatusView, new StatusViewBinder());
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandlerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandlerTest.java index f6773a8..bc0b40c 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandlerTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandlerTest.java
@@ -6,6 +6,7 @@ import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.notNull; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; @@ -46,6 +47,7 @@ import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteDelegate; import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsDropdownEmbedder; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler.AssistantActionPerformed; +import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler.TranslateBridgeWrapper; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler.VoiceInteractionSource; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler.VoiceResult; import org.chromium.chrome.browser.preferences.Pref; @@ -91,6 +93,8 @@ @Mock ModalDialogManager mModalDialogManager; @Mock + TranslateBridgeWrapper mTranslateBridgeWrapper; + @Mock Tab mTab; private TestDataProvider mDataProvider; @@ -108,6 +112,9 @@ AutocompleteResult autocompleteResult, String inlineAutocompleteText) {} }; + // The default Tab URL. + private static final String DEFAULT_URL = "https://example.com/"; + /** * An implementation of the real {@link VoiceRecognitionHandler} except instead of * recording histograms we just flag whether we would have or not. @@ -549,9 +556,17 @@ mWindowAndroid.setAndroidPermissionDelegate(mPermissionDelegate); }); + doReturn(new GURL(DEFAULT_URL)).when(mTab).getUrl(); + doReturn(false).when(mAssistantVoiceSearchService).shouldRequestAssistantVoiceSearch(); doReturn(false).when(mAssistantVoiceSearchService).needsEnabledCheck(); doReturn(mIntent).when(mAssistantVoiceSearchService).getAssistantVoiceSearchIntent(); + + doReturn(true).when(mTranslateBridgeWrapper).canManuallyTranslate(notNull()); + doReturn("fr").when(mTranslateBridgeWrapper).getOriginalLanguage(notNull()); + doReturn("de").when(mTranslateBridgeWrapper).getCurrentLanguage(notNull()); + doReturn("ja").when(mTranslateBridgeWrapper).getTargetLanguage(); + mHandler.setTranslateBridgeWrapper(mTranslateBridgeWrapper); } @After @@ -642,6 +657,24 @@ Assert.assertTrue(isVoiceSearchEnabled()); } + @Test + @SmallTest + @Feature("VoiceSearchAudioCapturePolicy") + @EnableFeatures({ChromeFeatureList.VOICE_SEARCH_AUDIO_CAPTURE_POLICY}) + public void testIsVoiceSearchEnabled_UpdateAfterProfileLoads() { + setAudioCapturePref(true); + mPermissionDelegate.setCanRequestPermission(true); + mPermissionDelegate.setHasPermission(true); + Assert.assertFalse(mDelegate.updatedMicButtonState()); + Assert.assertTrue(isVoiceSearchEnabled()); + + setAudioCapturePref(false); + TestThreadUtils.runOnUiThreadBlocking( + () -> { mHandler.onProfileAdded(Profile.getLastUsedRegularProfile()); }); + Assert.assertFalse(isVoiceSearchEnabled()); + Assert.assertTrue(mDelegate.updatedMicButtonState()); + } + /** Calls isVoiceSearchEnabled(), ensuring it is run on the UI thread. */ private boolean isVoiceSearchEnabled() { return TestThreadUtils.runOnUiThreadBlockingNoException( @@ -692,15 +725,11 @@ @EnableFeatures(ChromeFeatureList.ASSISTANT_INTENT_PAGE_URL) public void testStartVoiceRecognition_ToolbarButtonIncludesPageUrl() { doReturn(true).when(mAssistantVoiceSearchService).shouldRequestAssistantVoiceSearch(); - GURL url = new GURL("https://example.com"); - doReturn(url).when(mTab).getUrl(); - startVoiceRecognition(VoiceInteractionSource.TOOLBAR); Assert.assertTrue(mWindowAndroid.wasCancelableIntentShown()); Assert.assertEquals(mIntent, mWindowAndroid.getCancelableIntent()); - verify(mAssistantVoiceSearchService).reportUserEligibility(); - verify(mIntent).putExtra(eq(VoiceRecognitionHandler.EXTRA_PAGE_URL), eq(url.getSpec())); + verify(mIntent).putExtra(VoiceRecognitionHandler.EXTRA_PAGE_URL, DEFAULT_URL); } @Test @@ -709,14 +738,11 @@ @EnableFeatures(ChromeFeatureList.ASSISTANT_INTENT_PAGE_URL) public void testStartVoiceRecognition_OmitPageUrlWhenAssistantVoiceSearchDisabled() { doReturn(false).when(mAssistantVoiceSearchService).shouldRequestAssistantVoiceSearch(); - GURL url = new GURL("https://example.com"); - doReturn(url).when(mTab).getUrl(); startVoiceRecognition(VoiceInteractionSource.TOOLBAR); Assert.assertTrue(mWindowAndroid.wasCancelableIntentShown()); - Assert.assertFalse(mWindowAndroid.getCancelableIntent().hasExtra( - VoiceRecognitionHandler.EXTRA_PAGE_URL)); + verify(mIntent, never()).putExtra(eq(VoiceRecognitionHandler.EXTRA_PAGE_URL), anyString()); } @Test @@ -725,8 +751,6 @@ @EnableFeatures(ChromeFeatureList.ASSISTANT_INTENT_PAGE_URL) public void testStartVoiceRecognition_OmitPageUrlForNonToolbar() { doReturn(true).when(mAssistantVoiceSearchService).shouldRequestAssistantVoiceSearch(); - GURL url = new GURL("https://example.com"); - doReturn(url).when(mTab).getUrl(); startVoiceRecognition(VoiceInteractionSource.NTP); @@ -739,8 +763,6 @@ @EnableFeatures(ChromeFeatureList.ASSISTANT_INTENT_PAGE_URL) public void testStartVoiceRecognition_OmitPageUrlForIncognito() { doReturn(true).when(mAssistantVoiceSearchService).shouldRequestAssistantVoiceSearch(); - GURL url = new GURL("https://example.com"); - doReturn(url).when(mTab).getUrl(); doReturn(true).when(mTab).isIncognito(); startVoiceRecognition(VoiceInteractionSource.TOOLBAR); @@ -768,7 +790,7 @@ @EnableFeatures(ChromeFeatureList.ASSISTANT_INTENT_PAGE_URL) public void testStartVoiceRecognition_OmitPageUrlForNonHttp() { doReturn(true).when(mAssistantVoiceSearchService).shouldRequestAssistantVoiceSearch(); - GURL url = new GURL("ftp://example.org"); + GURL url = new GURL("ftp://example.org/"); doReturn(url).when(mTab).getUrl(); startVoiceRecognition(VoiceInteractionSource.TOOLBAR); @@ -778,6 +800,131 @@ @Test @SmallTest + @Feature("AssistantIntentTranslateInfo") + @EnableFeatures({ChromeFeatureList.OMNIBOX_ASSISTANT_VOICE_SEARCH, + ChromeFeatureList.ASSISTANT_INTENT_TRANSLATE_INFO}) + public void + testStartVoiceRecognition_ToolbarButtonIncludesTranslateInfo() { + doReturn(true).when(mAssistantVoiceSearchService).shouldRequestAssistantVoiceSearch(); + startVoiceRecognition(VoiceInteractionSource.TOOLBAR); + + Assert.assertTrue(mWindowAndroid.wasCancelableIntentShown()); + Assert.assertEquals(mIntent, mWindowAndroid.getCancelableIntent()); + verify(mIntent).putExtra(VoiceRecognitionHandler.EXTRA_TRANSLATE_ORIGINAL_LANGUAGE, "fr"); + verify(mIntent).putExtra(VoiceRecognitionHandler.EXTRA_TRANSLATE_CURRENT_LANGUAGE, "de"); + verify(mIntent).putExtra(VoiceRecognitionHandler.EXTRA_TRANSLATE_TARGET_LANGUAGE, "ja"); + verify(mIntent).putExtra(VoiceRecognitionHandler.EXTRA_PAGE_URL, DEFAULT_URL); + } + + @Test + @SmallTest + @Feature("AssistantIntentTranslateInfo") + @EnableFeatures({ChromeFeatureList.OMNIBOX_ASSISTANT_VOICE_SEARCH}) + @DisableFeatures({ChromeFeatureList.ASSISTANT_INTENT_TRANSLATE_INFO}) + public void testStartVoiceRecognition_TranslateExtrasDisabled() { + doReturn(true).when(mAssistantVoiceSearchService).shouldRequestAssistantVoiceSearch(); + startVoiceRecognition(VoiceInteractionSource.TOOLBAR); + + Assert.assertTrue(mWindowAndroid.wasCancelableIntentShown()); + verify(mIntent, never()) + .putExtra( + eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_ORIGINAL_LANGUAGE), anyString()); + verify(mIntent, never()) + .putExtra( + eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_CURRENT_LANGUAGE), anyString()); + verify(mIntent, never()) + .putExtra(eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_TARGET_LANGUAGE), anyString()); + } + + @Test + @SmallTest + @Feature("AssistantIntentTranslateInfo") + @EnableFeatures({ChromeFeatureList.OMNIBOX_ASSISTANT_VOICE_SEARCH, + ChromeFeatureList.ASSISTANT_INTENT_TRANSLATE_INFO}) + public void + testStartVoiceRecognition_NoTranslateExtrasForNonToolbar() { + doReturn(true).when(mAssistantVoiceSearchService).shouldRequestAssistantVoiceSearch(); + startVoiceRecognition(VoiceInteractionSource.OMNIBOX); + + Assert.assertTrue(mWindowAndroid.wasCancelableIntentShown()); + verify(mIntent, never()) + .putExtra( + eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_ORIGINAL_LANGUAGE), anyString()); + verify(mIntent, never()) + .putExtra( + eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_CURRENT_LANGUAGE), anyString()); + verify(mIntent, never()) + .putExtra(eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_TARGET_LANGUAGE), anyString()); + verify(mIntent, never()).putExtra(eq(VoiceRecognitionHandler.EXTRA_PAGE_URL), anyString()); + } + + @Test + @SmallTest + @Feature("AssistantIntentTranslateInfo") + @EnableFeatures({ChromeFeatureList.OMNIBOX_ASSISTANT_VOICE_SEARCH, + ChromeFeatureList.ASSISTANT_INTENT_TRANSLATE_INFO}) + public void + testStartVoiceRecognition_NoTranslateExtrasForNonTranslatePage() { + doReturn(true).when(mAssistantVoiceSearchService).shouldRequestAssistantVoiceSearch(); + doReturn(false).when(mTranslateBridgeWrapper).canManuallyTranslate(notNull()); + startVoiceRecognition(VoiceInteractionSource.TOOLBAR); + + Assert.assertTrue(mWindowAndroid.wasCancelableIntentShown()); + verify(mIntent, never()) + .putExtra( + eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_ORIGINAL_LANGUAGE), anyString()); + verify(mIntent, never()) + .putExtra( + eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_CURRENT_LANGUAGE), anyString()); + verify(mIntent, never()) + .putExtra(eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_TARGET_LANGUAGE), anyString()); + verify(mIntent, never()).putExtra(eq(VoiceRecognitionHandler.EXTRA_PAGE_URL), anyString()); + } + + @Test + @SmallTest + @Feature("AssistantIntentTranslateInfo") + @EnableFeatures({ChromeFeatureList.OMNIBOX_ASSISTANT_VOICE_SEARCH, + ChromeFeatureList.ASSISTANT_INTENT_TRANSLATE_INFO}) + public void + testStartVoiceRecognition_NoTranslateExtrasWhenLanguagesUndetected() { + doReturn(true).when(mAssistantVoiceSearchService).shouldRequestAssistantVoiceSearch(); + doReturn(null).when(mTranslateBridgeWrapper).getOriginalLanguage(notNull()); + startVoiceRecognition(VoiceInteractionSource.TOOLBAR); + + Assert.assertTrue(mWindowAndroid.wasCancelableIntentShown()); + verify(mIntent, never()) + .putExtra( + eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_ORIGINAL_LANGUAGE), anyString()); + verify(mIntent, never()) + .putExtra( + eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_CURRENT_LANGUAGE), anyString()); + verify(mIntent, never()) + .putExtra(eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_TARGET_LANGUAGE), anyString()); + verify(mIntent, never()).putExtra(eq(VoiceRecognitionHandler.EXTRA_PAGE_URL), anyString()); + } + + @Test + @SmallTest + @Feature("AssistantIntentTranslateInfo") + @EnableFeatures({ChromeFeatureList.OMNIBOX_ASSISTANT_VOICE_SEARCH, + ChromeFeatureList.ASSISTANT_INTENT_TRANSLATE_INFO}) + public void + testStartVoiceRecognition_TranslateInfoTargetLanguageOptional() { + doReturn(true).when(mAssistantVoiceSearchService).shouldRequestAssistantVoiceSearch(); + doReturn(null).when(mTranslateBridgeWrapper).getTargetLanguage(); + startVoiceRecognition(VoiceInteractionSource.TOOLBAR); + + Assert.assertTrue(mWindowAndroid.wasCancelableIntentShown()); + verify(mIntent).putExtra(VoiceRecognitionHandler.EXTRA_TRANSLATE_ORIGINAL_LANGUAGE, "fr"); + verify(mIntent).putExtra(VoiceRecognitionHandler.EXTRA_TRANSLATE_CURRENT_LANGUAGE, "de"); + verify(mIntent, never()) + .putExtra(eq(VoiceRecognitionHandler.EXTRA_TRANSLATE_TARGET_LANGUAGE), anyString()); + verify(mIntent).putExtra(VoiceRecognitionHandler.EXTRA_PAGE_URL, DEFAULT_URL); + } + + @Test + @SmallTest public void testStartVoiceRecognition_StartsVoiceSearchWithFailedIntent() { mWindowAndroid.setCancelableIntentSuccess(false); startVoiceRecognition(VoiceInteractionSource.OMNIBOX);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/searchwidget/SearchActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/searchwidget/SearchActivityTest.java index 7fbf2cdd..b2371a6 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/searchwidget/SearchActivityTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/searchwidget/SearchActivityTest.java
@@ -19,6 +19,7 @@ import android.view.KeyEvent; import android.view.ViewGroup; +import androidx.test.filters.MediumTest; import androidx.test.filters.SmallTest; import org.hamcrest.Matchers; @@ -53,6 +54,7 @@ import org.chromium.chrome.browser.locale.DefaultSearchEnginePromoDialog; import org.chromium.chrome.browser.locale.DefaultSearchEnginePromoDialog.DefaultSearchEnginePromoDialogObserver; import org.chromium.chrome.browser.locale.LocaleManager; +import org.chromium.chrome.browser.omnibox.LocationBarCoordinator; import org.chromium.chrome.browser.omnibox.OmniboxSuggestionType; import org.chromium.chrome.browser.omnibox.UrlBar; import org.chromium.chrome.browser.omnibox.suggestions.CachedZeroSuggestionsManager; @@ -668,6 +670,29 @@ }); } + @Test + @MediumTest + public void testSetUrl_urlBarTextEmpty() throws Exception { + final SearchActivity searchActivity = startSearchActivity(); + mTestDelegate.shouldDelayNativeInitializationCallback.waitForCallback(0); + mTestDelegate.showSearchEngineDialogIfNeededCallback.waitForCallback(0); + mTestDelegate.onFinishDeferredInitializationCallback.waitForCallback(0); + + LocationBarCoordinator locationBarCoordinator = + searchActivity.getLocationBarCoordinatorForTesting(); + UrlBar urlBar = (UrlBar) searchActivity.findViewById(R.id.url_bar); + TestThreadUtils.runOnUiThreadBlocking(() -> { + locationBarCoordinator.onUrlChangedForTesting(); + Assert.assertTrue(urlBar.getText().toString().isEmpty()); + }); + + TestThreadUtils.runOnUiThreadBlocking(() -> { + locationBarCoordinator.clearOmniboxFocus(); + locationBarCoordinator.onUrlChangedForTesting(); + Assert.assertTrue(urlBar.getText().toString().isEmpty()); + }); + } + private void putAnImageIntoClipboard() { mActivityTestRule.startMainActivityFromLauncher(); ContentUriUtils.setFileProviderUtil(new FileProviderHelper());
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/tile/TileGridLayoutTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/tile/TileGridLayoutTest.java index 1c6cd3e..76149c53 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/tile/TileGridLayoutTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/tile/TileGridLayoutTest.java
@@ -132,7 +132,7 @@ @Feature({"NewTabPage", "RenderTest"}) @ParameterAnnotations.UseMethodParameter(NightModeTestUtils.NightModeParams.class) // TODO(https://crbug.com/906151): Add new goldens and enable ExploreSites. - @DisableFeatures(ChromeFeatureList.EXPLORE_SITES) + @DisableFeatures({ChromeFeatureList.EXPLORE_SITES, ChromeFeatureList.QUERY_TILES}) public void testTileGridAppearance(boolean nightModeEnabled) throws Exception { NewTabPage ntp = setUpFakeDataToShowOnNtp(FAKE_MOST_VISITED_URLS.length); mRenderTestRule.render(getTileGridLayout(ntp), "ntp_tile_grid_layout"); @@ -296,7 +296,7 @@ activity.setContentView(contentView); SiteSectionViewHolder viewHolder = SiteSection.createViewHolder( - SiteSection.inflateSiteSection(contentView), uiConfig); + SiteSection.inflateSiteSection(contentView), uiConfig, 2); uiConfig.updateDisplayStyle(); @@ -345,7 +345,7 @@ }; SiteSection siteSection = - new SiteSection(uiDelegate, null, delegate, offlinePageBridge, uiConfig); + new SiteSection(uiDelegate, null, delegate, offlinePageBridge, uiConfig, 2); siteSection.addObserver(new ListObservable.ListObserver<PartialBindCallback>() { @Override
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java index 31055bd..7a4d9ff 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java
@@ -65,7 +65,7 @@ mocker.mock(SecurityStateModelJni.TEST_HOOKS, mSecurityStateMocks); mLocationBarModel = spy( new LocationBarModel(ContextUtils.getApplicationContext(), NewTabPageDelegate.EMPTY, - url -> url, window -> null, ToolbarTestUtils.OFFLINE_STATUS)); + url -> url.getSpec(), window -> null, ToolbarTestUtils.OFFLINE_STATUS)); mLocationBarModel.initializeWithNative(); }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/QualityEnforcerUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/QualityEnforcerUnitTest.java index 216a70e3..8ef88d2 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/QualityEnforcerUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/QualityEnforcerUnitTest.java
@@ -252,7 +252,7 @@ } private void navigateToUrl(GURL url, int httpStatusCode, @NetError int errorCode) { - when(mTab.getOriginalUrl()).thenReturn(url.getSpec()); + when(mTab.getOriginalUrl()).thenReturn(url); NavigationHandle navigation = new NavigationHandle(0 /* navigationHandleProxy */, url, true /* isMainFrame */,
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/dom_distiller/ReaderModeManagerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/dom_distiller/ReaderModeManagerTest.java index c3461b5a..24b3af3 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/dom_distiller/ReaderModeManagerTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/dom_distiller/ReaderModeManagerTest.java
@@ -111,8 +111,8 @@ when(DomDistillerUrlUtils.isDistilledPage(MOCK_DISTILLER_URL)).thenReturn(true); when(DomDistillerUrlUtils.isDistilledPage(MOCK_URL)).thenReturn(false); - when(DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(MOCK_DISTILLER_URL.getSpec())) - .thenReturn(MOCK_URL.getSpec()); + when(DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(MOCK_DISTILLER_URL)) + .thenReturn(MOCK_URL); mManager = new ReaderModeManager(mTab);
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/LocationBarMediatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/LocationBarMediatorTest.java index aa3486e..67893e98 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/LocationBarMediatorTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/LocationBarMediatorTest.java
@@ -6,6 +6,7 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; @@ -13,17 +14,17 @@ import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.anyObject; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.ArgumentMatchers.notNull; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import android.content.Context; +import android.content.res.ColorStateList; import android.content.res.Configuration; import android.text.TextUtils; import android.view.KeyEvent; @@ -39,9 +40,13 @@ import org.mockito.ArgumentMatcher; import org.mockito.Captor; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; +import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; import org.chromium.base.BuildConfig; import org.chromium.base.supplier.ObservableSupplierImpl; @@ -61,6 +66,7 @@ import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.test.util.browser.Features; import org.chromium.components.embedder_support.util.UrlConstants; +import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.search_engines.TemplateUrl; import org.chromium.components.search_engines.TemplateUrlService; import org.chromium.content_public.browser.LoadUrlParams; @@ -72,9 +78,17 @@ /** Unit tests for LocationBarMediator. */ @RunWith(BaseRobolectricTestRunner.class) -@Config(manifest = Config.NONE) +@Config(shadows = {LocationBarMediatorTest.ShadowUrlUtilities.class}) @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_ASSISTANT_VOICE_SEARCH) public class LocationBarMediatorTest { + @Implements(UrlUtilities.class) + static class ShadowUrlUtilities { + @Implementation + public static boolean isNTPUrl(String url) { + return false; + } + } + private static final String TEST_URL = "http://www.example.org"; @Rule @@ -85,9 +99,7 @@ public JniMocker mJniMocker = new JniMocker(); @Mock - LocationBarLayout mLocationBarLayout; - @Mock - Context mContext; + private LocationBarLayout mLocationBarLayout; @Mock private TemplateUrlService mTemplateUrlService; @Mock @@ -126,6 +138,8 @@ private TemplateUrl mGoogleSearchEngine; @Mock private TemplateUrl mNonGoogleSearchEngine; + @Mock + private BackKeyBehaviorDelegate mOverrideBackKeyBehaviorDelegate; @Captor private ArgumentCaptor<Runnable> mRunnableCaptor; @@ -137,14 +151,15 @@ @Before public void setUp() { - doReturn(mContext).when(mLocationBarLayout).getContext(); doReturn(mTemplateUrlService).when(mTemplateUrlServiceSupplier).get(); mJniMocker.mock(ProfileJni.TEST_HOOKS, mProfileNativesJniMock); mJniMocker.mock(OmniboxPrerenderJni.TEST_HOOKS, mPrerenderJni); SearchEngineLogoUtils.setDelegateForTesting(mSearchEngineDelegate); - mMediator = new LocationBarMediator(mLocationBarLayout, mLocationBarDataProvider, - mAssistantVoiceSearchSupplier, mProfileSupplier, mPrivacyPreferencesManager, - mOverrideUrlLoadingDelegate, mLocaleManager, mTemplateUrlServiceSupplier); + + mMediator = new LocationBarMediator(/* context= */ RuntimeEnvironment.application, + mLocationBarLayout, mLocationBarDataProvider, mProfileSupplier, + mPrivacyPreferencesManager, mOverrideUrlLoadingDelegate, mLocaleManager, + mTemplateUrlServiceSupplier, mOverrideBackKeyBehaviorDelegate); mMediator.setCoordinators(mUrlCoordinator, mAutocompleteCoordinator, mStatusCoordinator); SearchEngineLogoUtils.setDelegateForTesting(mSearchEngineDelegate); } @@ -152,14 +167,14 @@ @Test public void testVoiceSearchService_initializedWithNative() { mMediator.onFinishNativeInitialization(); - verify(mAssistantVoiceSearchSupplier).set(notNull()); + assertNotNull(mMediator.getAssistantVoiceSearchServiceSupplierForTesting().get()); } @Test @Features.DisableFeatures(ChromeFeatureList.OMNIBOX_ASSISTANT_VOICE_SEARCH) public void testVoiceSearchService_initializedWithNative_featureDisabled() { mMediator.onFinishNativeInitialization(); - verify(mAssistantVoiceSearchSupplier).set(notNull()); + assertNotNull(mMediator.getAssistantVoiceSearchServiceSupplierForTesting().get()); } @Test @@ -197,7 +212,9 @@ public void testRevertChanges_unFocused() { doReturn("http://url.com").when(mLocationBarDataProvider).getCurrentUrl(); mMediator.revertChanges(); - verify(mLocationBarLayout).setUrl("http://url.com"); + verify(mLocationBarLayout) + .setUrlBarText(mLocationBarDataProvider.getUrlBarData(), + UrlBar.ScrollType.SCROLL_TO_TLD, SelectionState.SELECT_ALL); } @Test @@ -217,10 +234,10 @@ .prerenderMaybe( anyLong(), any(), anyString(), anyString(), anyLong(), any(), any()); + mMediator.setUrl("originalUrl", null); doReturn(true).when(mPrivacyPreferencesManager).shouldPrerender(); doReturn(true).when(mLocationBarDataProvider).hasTab(); doReturn(mTab).when(mLocationBarDataProvider).getTab(); - doReturn("originalUrl").when(mLocationBarLayout).getOriginalUrl(); doReturn(456L).when(mAutocompleteCoordinator).getCurrentNativeAutocompleteResult(); doReturn("text").when(mUrlCoordinator).getTextWithoutAutocomplete(); doReturn(true).when(mUrlCoordinator).shouldAutocomplete(); @@ -441,14 +458,16 @@ assertTrue(mMediator.onKey(mView, KeyEvent.KEYCODE_BACK, mKeyEvent)); verify(mKeyDispatcherState).handleUpEvent(mKeyEvent); - verify(mLocationBarLayout).backKeyPressed(); + verify(mOverrideBackKeyBehaviorDelegate).handleBackKeyPressed(); } @Test public void testOnKey_escape() { doReturn(KeyEvent.ACTION_DOWN).when(mKeyEvent).getAction(); assertTrue(mMediator.onKey(mView, KeyEvent.KEYCODE_ESCAPE, mKeyEvent)); - verify(mLocationBarLayout).setUrl(mLocationBarDataProvider.getCurrentUrl()); + verify(mLocationBarLayout) + .setUrlBarText(mLocationBarDataProvider.getUrlBarData(), + UrlBar.ScrollType.SCROLL_TO_TLD, SelectionState.SELECT_ALL); } @Test @@ -542,6 +561,67 @@ false, SearchEngineLogoUtils.getSearchLogoUrl(mTemplateUrlService)); } + @Test + public void testUpdateAssistantVoiceSearchDrawablesAndColors() { + AssistantVoiceSearchService avs = Mockito.mock(AssistantVoiceSearchService.class); + ColorStateList csl = Mockito.mock(ColorStateList.class); + doReturn(csl).when(avs).getMicButtonColorStateList(anyInt(), anyObject()); + mMediator.setAssistantVoiceSearchServiceForTesting(avs); + + verify(mLocationBarLayout).setMicButtonTint(csl); + } + + @Test + public void testUpdateAssistantVoiceSearchDrawablesAndColors_serviceNull() { + mMediator.updateAssistantVoiceSearchDrawableAndColors(); + // If the service is null, the update method bails out. + verify(mLocationBarLayout, Mockito.times(0)).setMicButtonTint(/* arbitrary value */ null); + } + + @Test + public void testUpdateUseDarkColors() { + mMediator.updateUseDarkColors(); + verify(mLocationBarLayout).setDeleteButtonTint(anyObject()); + verify(mStatusCoordinator).setUseDarkColors(false); + verify(mAutocompleteCoordinator) + .updateVisualsForState(/* useDarkColors= */ false, /* incognito= */ false); + } + + @Test + public void testUpdateUseDarkColors_setUseDarkTextColors() { + String url = "https://www.google.com"; + UrlBarData urlBarData = UrlBarData.forUrl(url); + doReturn(urlBarData).when(mLocationBarDataProvider).getUrlBarData(); + doReturn(url).when(mLocationBarDataProvider).getCurrentUrl(); + doReturn(true).when(mUrlCoordinator).setUseDarkTextColors(false); + + mMediator.updateUseDarkColors(); + verify(mLocationBarLayout).setDeleteButtonTint(anyObject()); + verify(mLocationBarLayout) + .setUrlBarText( + urlBarData, UrlBar.ScrollType.SCROLL_TO_TLD, SelectionState.SELECT_ALL); + verify(mStatusCoordinator).setUseDarkColors(false); + verify(mAutocompleteCoordinator) + .updateVisualsForState(/* useDarkColors= */ false, /* incognito= */ false); + } + + @Test + public void testSetUrl() { + String url = "http://url.com"; + UrlBarData urlBarData = UrlBarData.forUrl(url); + mMediator.setUrl(url, urlBarData); + + verify(mLocationBarLayout) + .setUrlBarText( + urlBarData, UrlBar.ScrollType.SCROLL_TO_TLD, SelectionState.SELECT_ALL); + + doReturn(true).when(mUrlCoordinator).hasFocus(); + doReturn(true).when(mLocationBarLayout).isUrlBarFocusedWithoutAnimations(); + mMediator.setUrl(url, urlBarData); + + verify(mLocationBarLayout).setUrlBarFocus(false, null, OmniboxFocusReason.UNFOCUS); + } + private ArgumentMatcher<UrlBarData> matchesUrlBarDataForQuery(String query) { return actual -> { UrlBarData expected = UrlBarData.forNonUrlText(query);
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewBinderUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewBinderUnitTest.java index 4135d6bb..f90b936 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewBinderUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewBinderUnitTest.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.omnibox.suggestions.carousel; +import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; @@ -11,6 +12,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; +import android.content.res.Resources; import android.view.View; import android.widget.TextView; @@ -22,6 +24,7 @@ import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; +import org.chromium.chrome.R; import org.chromium.testing.local.LocalRobolectricTestRunner; import org.chromium.ui.modelutil.MVCListAdapter.ListItem; import org.chromium.ui.modelutil.MVCListAdapter.ModelList; @@ -38,6 +41,8 @@ @RunWith(LocalRobolectricTestRunner.class) @Config(manifest = Config.NONE) public class BaseCarouselSuggestionViewBinderUnitTest { + static final int SUGGESTION_VERTICAL_PADDING = 123; + @Mock BaseCarouselSuggestionView mView; @@ -45,11 +50,17 @@ TextView mHeaderTextView; @Mock + View mHeaderView; + + @Mock View mItemView; @Mock SimpleRecyclerViewAdapter mAdapter; + @Mock + Resources mResources; + ModelList mTiles; PropertyModel mModel; @@ -63,8 +74,13 @@ mTiles = new ModelList(); when(mView.getHeaderTextView()).thenReturn(mHeaderTextView); + when(mView.getHeaderView()).thenReturn(mHeaderView); when(mView.getAdapter()).thenReturn(mAdapter); when(mAdapter.getModelList()).thenReturn(mTiles); + when(mView.getResources()).thenReturn(mResources); + + when(mResources.getDimensionPixelSize(eq(R.dimen.omnibox_carousel_suggestion_padding))) + .thenReturn(SUGGESTION_VERTICAL_PADDING); } @Test @@ -110,4 +126,22 @@ mModel.set(BaseCarouselSuggestionViewProperties.TILES, null); Assert.assertEquals(0, mTiles.size()); } + + @Test + public void headerTitle_visibilityChangeAltersTopPadding() { + mModel.set(BaseCarouselSuggestionViewProperties.SHOW_TITLE, true); + verify(mHeaderView, times(1)).setVisibility(eq(View.VISIBLE)); + verify(mHeaderView, times(1)).setVisibility(anyInt()); + verify(mView, times(1)) + .setPaddingRelative(eq(0), eq(0), eq(0), eq(SUGGESTION_VERTICAL_PADDING)); + verify(mView, times(1)).setPaddingRelative(anyInt(), anyInt(), anyInt(), anyInt()); + + mModel.set(BaseCarouselSuggestionViewProperties.SHOW_TITLE, false); + verify(mHeaderView, times(1)).setVisibility(eq(View.GONE)); + verify(mHeaderView, times(2)).setVisibility(anyInt()); + verify(mView, times(1)) + .setPaddingRelative(eq(0), eq(SUGGESTION_VERTICAL_PADDING), eq(0), + eq(SUGGESTION_VERTICAL_PADDING)); + verify(mView, times(2)).setPaddingRelative(anyInt(), anyInt(), anyInt(), anyInt()); + } }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/LocationBarModelUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/LocationBarModelUnitTest.java index 4caad0e..9fb51055 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/LocationBarModelUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/LocationBarModelUnitTest.java
@@ -93,16 +93,18 @@ // clang-format off private static class TestIncognitoLocationBarModel extends LocationBarModel { public TestIncognitoLocationBarModel(Tab tab) { - super(ContextUtils.getApplicationContext(), NewTabPageDelegate.EMPTY, url -> url, - IncognitoUtils::getNonPrimaryOTRProfileFromWindowAndroid, OFFLINE_STATUS); + super(ContextUtils.getApplicationContext(), NewTabPageDelegate.EMPTY, + url -> url.getSpec(), + IncognitoUtils::getNonPrimaryOTRProfileFromWindowAndroid, OFFLINE_STATUS); setTab(tab, /*incognito=*/true); } } private static class TestRegularLocationBarModel extends LocationBarModel { public TestRegularLocationBarModel(Tab tab) { - super(ContextUtils.getApplicationContext(), NewTabPageDelegate.EMPTY, url -> url, - IncognitoUtils::getNonPrimaryOTRProfileFromWindowAndroid, OFFLINE_STATUS); + super(ContextUtils.getApplicationContext(), NewTabPageDelegate.EMPTY, + url -> url.getSpec(), + IncognitoUtils::getNonPrimaryOTRProfileFromWindowAndroid, OFFLINE_STATUS); setTab(tab, /*incognito=*/false); } }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/OWNERS b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/OWNERS index 664bb1d..bb57885e 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/OWNERS +++ b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/OWNERS
@@ -1,3 +1,3 @@ -dominickn@chromium.org hanxi@chromium.org -pkotwicz@chromium.org + +file://chrome/android/java/src/org/chromium/chrome/browser/webapps/OWNERS
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt index bb5c7dc..14bc79c 100644 --- a/chrome/android/profiles/newest.txt +++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-89.0.4387.0_rc-r1-merged.afdo.bz2 +chromeos-chrome-amd64-89.0.4389.2_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/DIR_METADATA b/chrome/app/DIR_METADATA index 87a0c4f8..d00c923 100644 --- a/chrome/app/DIR_METADATA +++ b/chrome/app/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>PlatformIntegration" +monorail: { + component: "Internals>PlatformIntegration" }
diff --git a/chrome/app/chrome_command_ids.h b/chrome/app/chrome_command_ids.h index 0a636d2..fa0009a 100644 --- a/chrome/app/chrome_command_ids.h +++ b/chrome/app/chrome_command_ids.h
@@ -91,16 +91,16 @@ #define IDC_VISIT_DESKTOP_OF_LRU_USER_NEXT IDC_VISIT_DESKTOP_OF_LRU_USER_2 #define IDC_VISIT_DESKTOP_OF_LRU_USER_LAST IDC_VISIT_DESKTOP_OF_LRU_USER_5 -// Assign to desk commands -#define IDC_ASSIGN_TO_DESKS_MENU 34090 -#define IDC_SEND_TO_DESK_1 34091 -#define IDC_SEND_TO_DESK_2 34092 -#define IDC_SEND_TO_DESK_3 34093 -#define IDC_SEND_TO_DESK_4 34094 -#define IDC_SEND_TO_DESK_5 34095 -#define IDC_SEND_TO_DESK_6 34096 -#define IDC_SEND_TO_DESK_7 34097 -#define IDC_SEND_TO_DESK_8 34098 +// Move to desk commands +#define IDC_MOVE_TO_DESKS_MENU 34090 +#define IDC_MOVE_TO_DESK_1 34091 +#define IDC_MOVE_TO_DESK_2 34092 +#define IDC_MOVE_TO_DESK_3 34093 +#define IDC_MOVE_TO_DESK_4 34094 +#define IDC_MOVE_TO_DESK_5 34095 +#define IDC_MOVE_TO_DESK_6 34096 +#define IDC_MOVE_TO_DESK_7 34097 +#define IDC_MOVE_TO_DESK_8 34098 #define IDC_TOGGLE_ASSIGN_TO_ALL_DESKS 34099 #endif
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp index b848581..05133e92 100644 --- a/chrome/app/chromeos_strings.grdp +++ b/chrome/app/chromeos_strings.grdp
@@ -267,6 +267,9 @@ <message name="IDS_CELLULAR_SETUP_SKIP_DISCOVERY_LABEL" desc="Label for button that skips the multiple profile selection step and sets up a new profile during eSIM cellular setup"> Skip & Set up new profile </message> + <message name="IDS_CELLULAR_SETUP_CONFIRM_LABEL" desc="Label for button that verifies the confirmation code entered during cellular setup"> + Confirm + </message> <message name="IDS_CELLULAR_SETUP_ESIM_PAGE_ACTIVATION_CODE" desc="Label for activation code input box"> Activation code </message> @@ -1356,22 +1359,6 @@ <message name="IDS_SUPERVISED_USER_EXPIRED_TOKEN_WARNING" desc="Warning text that is shown on login screen trying to sign in as a supervised user that has expired token"> This supervised user may have been deleted or disabled by the manager. Please contact the manager if you would like to continue signing in as this user. </message> - <!-- Supervised users deprecation notifications --> - <message name="IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_TITLE" desc="Title of notification displayed on supervised user login indicating that the feature is expiring soon."> - This supervised account will be removed soon - </message> - <message name="IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_BODY" desc="Body of notification displayed on supervised user login indicating that the feature is expiring soon."> - Please save your files and create a new account now. - </message> - <message name="IDS_MANAGER_SUPERVISED_USER_EXPIRING_NOTIFICATION_TITLE" desc="Title of notification displayed on manager login indicating that the supervised user feature is expiring soon."> - The account you manage will be removed soon - </message> - <message name="IDS_MANAGER_SUPERVISED_USER_EXPIRING_NOTIFICATION_BODY" desc="Body of notification displayed on manager user login indicating that the supervised user feature is expiring soon."> - Please create a new account for your supervised user now. - </message> - <message name="IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_LEARN_MORE" desc="Learn more text for button on Supervised User expiration notification."> - Learn more - </message> <message name="IDS_WILCO_NOTIFICATION_BATTERY_AUTH_TITLE" desc="The title of the notification shown to inform the user that an unauthorized battery is connected to a Chromebook."> Battery isn't charging </message>
diff --git a/chrome/app/chromeos_strings_grdp/IDS_CELLULAR_SETUP_CONFIRM_LABEL.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_CELLULAR_SETUP_CONFIRM_LABEL.png.sha1 new file mode 100644 index 0000000..30c423d1 --- /dev/null +++ b/chrome/app/chromeos_strings_grdp/IDS_CELLULAR_SETUP_CONFIRM_LABEL.png.sha1
@@ -0,0 +1 @@ +e233dccc6953231ac3359a0af5186962e5913311 \ No newline at end of file
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 3a1f50c..83bb13c 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -1158,8 +1158,8 @@ <message name="IDS_VISIT_DESKTOP_OF_LRU_USER" desc="The text label of the menu item which allows the user to move a window from one users desktop to another."> Move window to <ph name="USER_NAME">$1<ex>User name</ex></ph> (<ph name="USER_EMAIL">$2<ex>john@google.com</ex></ph>) </message> - <message name="IDS_ASSIGN_TO_DESKS_MENU" desc="The text label of the Assign to Desks submenu"> - Assign to desk + <message name="IDS_MOVE_TO_DESKS_MENU" desc="The text label of the Move to Desks submenu"> + Move window to desk </message> <message name="IDS_ASSIGN_TO_ALL_DESKS" desc="The text label of the Assign to All Desks menu item"> All desks @@ -10828,6 +10828,12 @@ <message name="IDS_WEBAUTHN_REQUEST_ATTESTATION_PERMISSION_DESC" desc="The description on a dialog informing the user that the website wants to see information that identifies the user's Security Key, such as make and model number. The 'make' of a device is the brand name of the manufacturer, e.g. Yubikey is a make of Security Key. The 'model' of a device is the specific product, e.g. Yubikey Neo is a model of Security Key."> <ph name="WEBSITE"><ex>accounts.google.com</ex>$1</ph> wants to see the make and model of your security key </message> + <message name="IDS_WEBAUTHN_REQUEST_ENTERPRISE_ATTESTATION_PERMISSION_TITLE" desc="Title of a dialog informing the user that the website wants to read the serial number of the user's security key. A security key is a physical device used for authentication."> + Allow this site to identify your security key? + </message> + <message name="IDS_WEBAUTHN_REQUEST_ENTERPRISE_ATTESTATION_PERMISSION_DESC" desc="The description on a dialog informing the user that the website wants to wants to read the serial number of the user's security key. A security key is a physical device used for authentication. The word 'issued' here means that the company linked to the website had the security key specially manufactured and, typically, the user is an employee of that company who received the security key as part of their employment."> + <ph name="WEBSITE"><ex>accounts.google.com</ex>$1</ph> issued your security key and wants to learn its ID number. The site will know exactly which security key you're using. + </message> <message name="IDS_WEBAUTHN_ALLOW_ATTESTATION" desc="Label on button to allow a website to see information that identifies the user's Security Key, such as make and model number. The 'make' of a device is the brand name of the manufacturer, e.g. Yubikey is a make of Security Key. The 'model' of a device is the specific product, e.g. Yubikey Neo is a model of Security Key."> Allow </message>
diff --git a/chrome/app/generated_resources_grd/DIR_METADATA b/chrome/app/generated_resources_grd/DIR_METADATA index 87a0c4f8..d00c923 100644 --- a/chrome/app/generated_resources_grd/DIR_METADATA +++ b/chrome/app/generated_resources_grd/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>PlatformIntegration" +monorail: { + component: "Internals>PlatformIntegration" }
diff --git a/chrome/app/generated_resources_grd/IDS_ASSIGN_TO_DESKS_MENU.png.sha1 b/chrome/app/generated_resources_grd/IDS_ASSIGN_TO_DESKS_MENU.png.sha1 deleted file mode 100644 index 0c2d223..0000000 --- a/chrome/app/generated_resources_grd/IDS_ASSIGN_TO_DESKS_MENU.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -7c38bb4baa7fdc796988b34bae739b78000a9416 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_MOVE_TO_DESKS_MENU.png.sha1 b/chrome/app/generated_resources_grd/IDS_MOVE_TO_DESKS_MENU.png.sha1 new file mode 100644 index 0000000..d2c5f88 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_MOVE_TO_DESKS_MENU.png.sha1
@@ -0,0 +1 @@ +1d09dd4bafe8dbe030fa6f7f7c1c23d69c3b4e1d \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_WEBAUTHN_REQUEST_ENTERPRISE_ATTESTATION_PERMISSION_DESC.png.sha1 b/chrome/app/generated_resources_grd/IDS_WEBAUTHN_REQUEST_ENTERPRISE_ATTESTATION_PERMISSION_DESC.png.sha1 new file mode 100644 index 0000000..f6e00ad --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_WEBAUTHN_REQUEST_ENTERPRISE_ATTESTATION_PERMISSION_DESC.png.sha1
@@ -0,0 +1 @@ +d3cec2d7fb8a4275108f6fdc0aca759c59a46513 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_WEBAUTHN_REQUEST_ENTERPRISE_ATTESTATION_PERMISSION_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_WEBAUTHN_REQUEST_ENTERPRISE_ATTESTATION_PERMISSION_TITLE.png.sha1 new file mode 100644 index 0000000..f6e00ad --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_WEBAUTHN_REQUEST_ENTERPRISE_ATTESTATION_PERMISSION_TITLE.png.sha1
@@ -0,0 +1 @@ +d3cec2d7fb8a4275108f6fdc0aca759c59a46513 \ No newline at end of file
diff --git a/chrome/app/media_router_strings_grdp/DIR_METADATA b/chrome/app/media_router_strings_grdp/DIR_METADATA index aa4ac5f..829eb64 100644 --- a/chrome/app/media_router_strings_grdp/DIR_METADATA +++ b/chrome/app/media_router_strings_grdp/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Cast>UI" +monorail: { + component: "Internals>Cast>UI" }
diff --git a/chrome/app/nearby_share_strings_grdp/DIR_METADATA b/chrome/app/nearby_share_strings_grdp/DIR_METADATA index ac713319..135a13c 100644 --- a/chrome/app/nearby_share_strings_grdp/DIR_METADATA +++ b/chrome/app/nearby_share_strings_grdp/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Sharing>Nearby" +monorail: { + component: "UI>Browser>Sharing>Nearby" }
diff --git a/chrome/app/printing_strings_grdp/DIR_METADATA b/chrome/app/printing_strings_grdp/DIR_METADATA index d446a59..ee7161a6 100644 --- a/chrome/app/printing_strings_grdp/DIR_METADATA +++ b/chrome/app/printing_strings_grdp/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Printing" +monorail: { + component: "Internals>Printing" }
diff --git a/chrome/app/resources/chromium_strings_af.xtb b/chrome/app/resources/chromium_strings_af.xtb index ecffce25..b1e1227 100644 --- a/chrome/app/resources/chromium_strings_af.xtb +++ b/chrome/app/resources/chromium_strings_af.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API-sleutels ontbreek. Sommige funksies van Chromium sal gedeaktiveer word.</translation> <translation id="3296368748942286671">Hou aan om agtergrondprogramme te laat loop wanneer Chromium toe is</translation> <translation id="331951419404882060">Chromium-bedryfstelsel kon nie jou data sinkroniseer nie weens 'n fout met aanmelding.</translation> +<translation id="3430503420100763906">Met Chromium-profiele kan jy al jou Chromium-goed skei. Skep profiele vir vriende en familielede, of verdeel tussen werk en pret.</translation> <translation id="347328004046849135">Chromium sal jou in kennis stel wanneer jy met 'n gekompromitteerde wagwoord aanmeld</translation> <translation id="3474745554856756813">Dit sal <ph name="ITEMS_COUNT" /> items op hierdie toestel uitvee. Meld as <ph name="USER_EMAIL" /> by Chromium aan om jou data later op te haal.</translation> <translation id="3509308970982693815">Maak asseblief alle Chromium-vensters toe en probeer weer.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Is jy seker jy wil Chromium deïnstalleer?</translation> <translation id="6403826409255603130">Chromium is 'n webblaaier wat webbladsye en programme blitsvinning laat loop. Dis vinnig, stabiel en maklik om te gebruik. Blaai veiliger deur die web met beskerming teen wanware en uitvissing wat by Chromium ingebou is.</translation> <translation id="6434250628340475518">Chromium-bedryfstelsel</translation> +<translation id="6455857529632101747">Welkom by Chromium-profiele</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium sal oor 1 sekonde herbegin}other{Chromium sal oor # sekondes herbegin}}</translation> <translation id="6475912303565314141">Dit beheer ook watter bladsy gewys word wanneer jy Chromium begin.</translation> <translation id="6510925080656968729">Deïnstalleer Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_am.xtb b/chrome/app/resources/chromium_strings_am.xtb index e1a6951..f863842f 100644 --- a/chrome/app/resources/chromium_strings_am.xtb +++ b/chrome/app/resources/chromium_strings_am.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">የGoogle ኤ ፒ አይ ቁልፎች ይጎድላሉ። አንዳንድ የChromium ተግባራት ይሰናከላሉ።</translation> <translation id="3296368748942286671">Chromium ሲዘጋ የጀርባ መተግበሪያዎች ማሂዱን ይቀጥሉ</translation> <translation id="331951419404882060">በመለያ ሲገባ በነበረ ስህተት ምክንያት Chromium OS ውሂብዎን ማመሳሰል አልቻለም።</translation> +<translation id="3430503420100763906">በ Chromium መገለጫዎች ሁሉንም የ Chromium ነገሮችዎን መለየት ይችላሉ። ለጓደኞች እና ለቤተሰብ መገለጫዎችን ይፍጠሩ፣ ወይም በሥራ እና በመዝናኛ መካከል ይከፋፈሉ።</translation> <translation id="347328004046849135">እርስዎ በተጠለፈ የይለፍ ቃል ሲገቡ Chromium ያሳውቀዎታል</translation> <translation id="3474745554856756813">ይሄ <ph name="ITEMS_COUNT" /> ንጥሎችን ከዚህ መሣሪያ ይሰርዛል። ውሂብዎን በኋላ ላይ ሰርስረው ለማውጣት እንደ <ph name="USER_EMAIL" /> ሆነው ወደ Chromium ይግቡ።</translation> <translation id="3509308970982693815">እባክዎ ሁሉንም የChromium መስኮቶችን ይዝጉና እንደገና ይሞክሩ።</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">እርግጠኛ ነዎት Chromiumን ማራገፍ ይፈልጋሉ?</translation> <translation id="6403826409255603130">Chromium ድረ-ገጾችን እና መተግበሪያዎችን እጅግ በጣም ፈጣን በሆነ ፍጥነት የሚያሄድ ድር አሳሽ ነው። ፈጣን፣ የረጋ እና ለመጠቀም ቀላል ነው። Chromium ውስጥ አብሮ በተሰራላቸው የተንኮል-አዘል ሶፍትዌር እና የማስገሪያ መከላከያዎች አማካኝነት ደህንነትዎ ይበልጥ በተጠበቀ ሁኔታ ድሩን ያስሱ።</translation> <translation id="6434250628340475518">Chromium OS ሥርዓት</translation> +<translation id="6455857529632101747">ወደ Chromium መገለጫዎች እንኳን በደህና መጡ</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium በ1 ሰከንድ ውስጥ ዳግም ይጀምራል}one{Chromium በ# ሰከንዶች ውስጥ ዳግም ይጀምራል}other{Chromium በ# ሰከንዶች ውስጥ ዳግም ይጀምራል}}</translation> <translation id="6475912303565314141">እንዲሁም Chromiumን ሲጀምሩት የሚታየውን ገጽ ይቆጣጠራል።</translation> <translation id="6510925080656968729">Chromiumን ያራግፉ</translation>
diff --git a/chrome/app/resources/chromium_strings_ar.xtb b/chrome/app/resources/chromium_strings_ar.xtb index fc0b399..2891ce4 100644 --- a/chrome/app/resources/chromium_strings_ar.xtb +++ b/chrome/app/resources/chromium_strings_ar.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">مفاتيح واجهة برمجة تطبيقات Google مفقودة. وسيترتب على ذلك توقف بعض وظائف Chromium عن العمل.</translation> <translation id="3296368748942286671">استمرار تشغيل تطبيقات الخلفية عند إغلاق Chromium</translation> <translation id="331951419404882060">تعذر على نظام التشغيل Chromium مزامنة البيانات نظرًا لحدوث خطأ أثناء تسجيل الدخول.</translation> +<translation id="3430503420100763906">باستخدام الملفات الشخصية على Chromium، يمكنك الفصل بين جميع بيانات Chromium. ويمكنك إنشاء ملفات شخصية للأصدقاء والعائلة أو تقسيمها للعمل وأغراض الترفيه.</translation> <translation id="347328004046849135">في حال تسجيل الدخول باستخدام كلمة مرور محتمَل تعرّضها للاختراق، سيرسل Chromium إشعارًا إليك.</translation> <translation id="3474745554856756813">سيعمل هذا على حذف <ph name="ITEMS_COUNT" /> من العناصر من هذا الجهاز. لاسترداد بياناتك لاحقًا، سجّل الدخول إلى Chromium كـ <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">يُرجى إغلاق جميع نوافذ Chromium وإعادة المحاولة.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">هل تريد فعلًا إزالة Chromium؟</translation> <translation id="6403826409255603130"> إن Chromium هو متصفح ويب يشغّل صفحات الويب والتطبيقات بسرعة مذهلة. إنه سريع وثابت وسهل الاستخدام. يمكنك تصفح الويب بشكل أكثر أمانًا من خلال ميزات الحماية من البرامج الضارة والتصيّد الاحتيالي المدمجة في Chromium.</translation> <translation id="6434250628340475518">نظام التشغيل Chromium</translation> +<translation id="6455857529632101747">مرحبًا بك في الملفات الشخصية على Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{ستتم إعادة تشغيل Chromium خلال ثانية واحدة}zero{ستتم إعادة تشغيل Chromium خلال # ثانية}two{ستتم إعادة تشغيل Chromium خلال ثانيتين (#)}few{ستتم إعادة تشغيل Chromium خلال # ثوانٍ}many{ستتم إعادة تشغيل Chromium خلال # ثانيةً}other{ستتم إعادة تشغيل Chromium خلال # ثانية}}</translation> <translation id="6475912303565314141">كما أنها تتحكم في الصفحة التي تظهر عند تشغيل Chromium.</translation> <translation id="6510925080656968729">إزالة Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_as.xtb b/chrome/app/resources/chromium_strings_as.xtb index b646563..edc8353 100644 --- a/chrome/app/resources/chromium_strings_as.xtb +++ b/chrome/app/resources/chromium_strings_as.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API চাবিসমূহ নাই। Chromiumৰ কিছুমান কাৰ্যক্ষতা অক্ষম কৰা হ’ব।</translation> <translation id="3296368748942286671">Chromium বন্ধ কৰাৰ পিছতো নেপথ্যত এপ্সমূহ চলি থাকিবলৈ দিয়ক</translation> <translation id="331951419404882060">ছাইন ইন কৰোঁতে আসোঁৱাহ হোৱাৰ কাৰণে Chromium OSএ আপোনাৰ ডেটা ছিংক কৰিব নোৱাৰিলে।</translation> +<translation id="3430503420100763906">Chromiumৰ প্ৰ’ফাইলৰ জৰিয়তে আপুনি নিজৰ আটাইবোৰ Chromiumৰ বস্তু পৃথক কৰিব পাৰে। বন্ধুবৰ্গ আৰু পৰিয়ালৰ বাবে প্ৰ’ফাইল সৃষ্টি কৰক অথবা কৰ্মস্থান আৰু মনোৰঞ্জনৰ মাজত বিভাজন কৰক।</translation> <translation id="347328004046849135">আপুনি কোনো হেক কৰা পাছৱৰ্ডৰ জৰিয়তে ছাইন ইন কৰিলে Chromiumএ আপোনাক জাননী দিব</translation> <translation id="3474745554856756813">ইয়ে এই ডিভাইচটোৰ পৰা <ph name="ITEMS_COUNT" />টা বস্তু মচিব। আপোনাৰ ডেটা পাছত পুনৰুদ্ধাৰ কৰিবলৈ Chromiumত <ph name="USER_EMAIL" /> হিচাপে ছাইন ইন কৰক।</translation> <translation id="3509308970982693815">অনুগ্ৰহ কৰি Chromiumৰ সকলো ৱিণ্ড’ বন্ধ কৰি পুনৰ চেষ্টা কৰক।</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">আপুনি Chromium আনইনষ্টল কৰিবলৈ বিচৰাটো নিশ্চিতনে?</translation> <translation id="6403826409255603130">Chromium হৈছে ৱেবপৃষ্ঠা আৰু এপ্লিকেশ্বনসমূহক বিজুলী বেগেৰে চলোৱা এক ৱেব ব্ৰাউজাৰ। এইটো ক্ষিপ্ৰ, স্থিৰ আৰু ব্যৱহাৰৰ বাবে সুবিধাজনক। মালৱেৰ আৰু ফিশ্বিঙৰ পৰা বিশেষভাৱে সুৰক্ষা পোৱা সুবিধাৰে নির্মিত Chromium ৰ জৰিয়তে অতি সুৰক্ষিতভাৱে ৱেব ব্ৰাউজিং কৰক।</translation> <translation id="6434250628340475518">Chromium OS ছিষ্টেম</translation> +<translation id="6455857529632101747">Chromiumৰ প্ৰ’ফাইললৈ স্বাগতম</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ১ ছেকেণ্ডত ৰিষ্টাৰ্ট হ’ব}one{Chromium # ছেকেণ্ডত ৰিষ্টাৰ্ট হ’ব}other{Chromium # ছেকেণ্ডত ৰিষ্টাৰ্ট হ’ব}}</translation> <translation id="6475912303565314141">আপুনি Chromium আৰম্ভ কৰিলে কি পৃষ্ঠা দেখুওৱা হ'ব সেয়াও ই নিয়ন্ত্ৰণ কৰে।</translation> <translation id="6510925080656968729">Chromium আনইনষ্টল কৰক</translation>
diff --git a/chrome/app/resources/chromium_strings_az.xtb b/chrome/app/resources/chromium_strings_az.xtb index f50dc7c6..9545e674 100644 --- a/chrome/app/resources/chromium_strings_az.xtb +++ b/chrome/app/resources/chromium_strings_az.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Google API açarları çatışmır. Chromium'un bəzi funksionallığı deaktiv ediləcək.</translation> <translation id="3296368748942286671">Chromium bağlı olduqda arxa fon tətbiqləri işləsin?</translation> <translation id="331951419404882060">Giriş xətası səbəbindən Chromium OS datanızı sinxronizasiya edə bilmədi.</translation> +<translation id="3430503420100763906">Chromium profilləri ilə bütün Chromium elementlərinizi ayıra bilərsiniz. Dostlarınız və ailəniz üçün profillər yaradın və ya iş və əyləncə arasında bölün.</translation> <translation id="347328004046849135">Oğurlanmış parol ilə daxil olduqda Chromium sizə bildiriş göndərəcək</translation> <translation id="3474745554856756813"><ph name="ITEMS_COUNT" /> element bu cihazdan silinəcək. Sonradan datanızı bərpa etmək üçün Chromiuma <ph name="USER_EMAIL" /> kimi daxil olun.</translation> <translation id="3509308970982693815">Bütün Chromium pəncərələrini bağlayın və yenidən cəhd edin.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Chromium'u silmək istəyirsiniz?</translation> <translation id="6403826409255603130">Chromium veb səhifələri və tətbiqləri ildırım sürəti ilə işlədən veb brauzerdir. Chromium sürətlidir, stabildir və istifadəyə rahatdır. Chromium ilə internetdən fırıldaqlardan və viruslardan uzaq şəkildə istifadə edin.</translation> <translation id="6434250628340475518">Chromium OS Sistemi</translation> +<translation id="6455857529632101747">Chromium profillərinə xoş gəlmisiniz</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 saniyəyə yenidən başlayacaq}other{Chromium # saniyəyə yenidən başlayacaq}}</translation> <translation id="6475912303565314141">Həmçinin, Chromium açılanda hansı səhifənin göstərildiyini idarə edir.</translation> <translation id="6510925080656968729">Chromium'u sistemdən silin</translation>
diff --git a/chrome/app/resources/chromium_strings_be.xtb b/chrome/app/resources/chromium_strings_be.xtb index 6a78415..fba0fe9 100644 --- a/chrome/app/resources/chromium_strings_be.xtb +++ b/chrome/app/resources/chromium_strings_be.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Адсутнічаюць ключы Google API. Некаторыя функцыі Chromium будуць выключаны.</translation> <translation id="3296368748942286671">Працягваць выконваць фонавыя праграмы, калі Chromium закрыты</translation> <translation id="331951419404882060">Chromium OS не змог сінхранізаваць даныя з-за памылкі ўваходу.</translation> +<translation id="3430503420100763906">Профілі Chromium патрэбны для раздзельнага выкарыстання браўзера рознымі людзьмі і ў розных мэтах. Стварайце профілі для сяброў і родных, або раздзяляйце работу і забавы.</translation> <translation id="347328004046849135">Chromium адправіць вам апавяшчэнне, калі вы ўвойдзеце ва ўліковы запіс, выкарыстаўшы раскрыты пароль</translation> <translation id="3474745554856756813">З гэтай прылады будзе выдалена наступная колькасць элементаў: <ph name="ITEMS_COUNT" />. Каб потым атрымаць свае даныя, увайдзіце ў Chromium як <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Закрыйце ўсе вокны Chromium і паўтарыце спробу.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Сапраўды выдаліць Chromium?</translation> <translation id="6403826409255603130">Chromium – гэта вэб-браўзер, які апрацоўвае вэб-старонкі і запускае праграмы з неймавернай хуткасцю: хуткі, стабільны і просты ў выкарыстанні. Павышаная бяспека прагляду вэб-старонак забяспечваецца ўбудаванай у Chromium аховай ад шкодных праграм і фішынгу.</translation> <translation id="6434250628340475518">Сістэма Chromium OS</translation> +<translation id="6455857529632101747">Вітаем у профілях Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Перазапуск Chromium адбудзецца праз 1 секунду}one{Перазапуск Chromium адбудзецца праз # секунду}few{Перазапуск Chromium адбудзецца праз # секунды}many{Перазапуск Chromium адбудзецца праз # секунд}other{Перазапуск Chromium адбудзецца праз # секунды}}</translation> <translation id="6475912303565314141">Таксама вызначае, якая старонка паказваецца пра запуску Chromium.</translation> <translation id="6510925080656968729">Выдаліць Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_bg.xtb b/chrome/app/resources/chromium_strings_bg.xtb index 69b3619..557b0ae 100644 --- a/chrome/app/resources/chromium_strings_bg.xtb +++ b/chrome/app/resources/chromium_strings_bg.xtb
@@ -67,6 +67,7 @@ <translation id="328888136576916638">Ключовете на приложния програмен интерфейс (API) на Google липсват. Някои функции на Chromium ще бъдат деактивирани.</translation> <translation id="3296368748942286671">Да продължават да се изпълняват приложения на заден план, когато Chromium е затворен</translation> <translation id="331951419404882060">Chromium OS не можа да синхронизира данните ви поради грешка при влизане в профила.</translation> +<translation id="3430503420100763906">С помощта на потребителските профили в Chromium можете да разделите данните си в браузъра. Създайте потребителски профили за близки и приятели или за разделяне на работата от забавленията.</translation> <translation id="347328004046849135">Chromium ще ви уведоми, когато влизате в профил с компрометирана парола</translation> <translation id="3474745554856756813"><ph name="ITEMS_COUNT" /> елемента ще се изтрият от това устройство. За да извлечете данните си по-късно, влезте в Chromium като <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Моля, затворете всички прозорци на Chromium и опитайте отново.</translation> @@ -161,6 +162,7 @@ <translation id="6373523479360886564">Наистина ли искате да деинсталирате Chromium?</translation> <translation id="6403826409255603130">Chromium е уеб браузър, който зарежда уеб страници и изпълнява приложения със светкавична скорост. Той е бърз, стабилен и лесен за употреба. Сърфирайте в мрежата по-безопасно с вградената защита на Chromium срещу злонамерен софтуер и фишинг.</translation> <translation id="6434250628340475518">Система Chromium OS</translation> +<translation id="6455857529632101747">Добре дошли в потребителските профили в Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ще се рестартира след 1 секунда}other{Chromium ще се рестартира след # секунди}}</translation> <translation id="6475912303565314141">То също контролира коя страница се показва при стартиране на Chromium.</translation> <translation id="6510925080656968729">Деинсталиране на Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_bs.xtb b/chrome/app/resources/chromium_strings_bs.xtb index 9565e61..7306d651 100644 --- a/chrome/app/resources/chromium_strings_bs.xtb +++ b/chrome/app/resources/chromium_strings_bs.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Nedostaju ključevi za Google API. Neke funkcionalnosti Google Chromea će se onemogućiti.</translation> <translation id="3296368748942286671">Ostavi aplikacije da rade u pozadini kada se zatvori Chromium</translation> <translation id="331951419404882060">Chromium OS nije sinhronizirao vaše podatke zbog greške prilikom prijave.</translation> +<translation id="3430503420100763906">S Chromium profilima možete odvojiti sve svoje Chromium stvari. Kreirajte profile za prijatelje i porodicu ili razdvojite posao i zabavu.</translation> <translation id="347328004046849135">Chromium će vas obavijestiti kada se prijavite s ugroženom lozinkom</translation> <translation id="3474745554856756813">Time će se izbrisati sljedeći broj stavki s uređaja: <ph name="ITEMS_COUNT" />. TDa biste kasnije dohvatili svoje podatke, prijavite se na Chromium kao <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Zatvorite sve prozore Chromiuma i pokušajte ponovo.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Jeste li sigurni da želite deinstalirati Chromium?</translation> <translation id="6403826409255603130">Chromium je novi preglednik koji pokreće web stranice i aplikacije brzinom svjetlosti. On je brz, stabilan i jednostavan za upotrebu. Krećite se internetom u sigurnijem okruženju, zaštićeni od zlonamjernih softvera i krađe identiteta zahvaljujući elementima koji su ugrađeni u Chromium.</translation> <translation id="6434250628340475518">Sistem Chromium OS</translation> +<translation id="6455857529632101747">Dobro došli u Chromium profile</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium će se ponovo pokrenuti za 1 sekundu}one{Chromium će se ponovo pokrenuti za # sekundu}few{Chromium će se ponovo pokrenuti za # sekunde}other{Chromium će se ponovo pokrenuti za # sekundi}}</translation> <translation id="6475912303565314141">Također kontrolira koja stranica se prikazuje kada pokrenete Chromium.</translation> <translation id="6510925080656968729">Deinstaliraj Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ca.xtb b/chrome/app/resources/chromium_strings_ca.xtb index 5a8337b..adcac746 100644 --- a/chrome/app/resources/chromium_strings_ca.xtb +++ b/chrome/app/resources/chromium_strings_ca.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Falten les claus de l'API de Google. Es desactivaran algunes de les funcions de Chromium.</translation> <translation id="3296368748942286671">Continua executant les aplicacions en segon pla quan es tanqui Chromium</translation> <translation id="331951419404882060">Chromium OS no ha pogut sincronitzar les vostres dades a causa d'un error amb l'inici de sessió.</translation> +<translation id="3430503420100763906">Els perfils de Chromium et permeten separar tot el contingut de Chromium. Crea perfils per a amics i familiars, o separa la feina de la diversió.</translation> <translation id="347328004046849135">Chromium t'enviarà una notificació quan iniciïs la sessió amb una contrasenya en perill</translation> <translation id="3474745554856756813">Amb aquesta acció, se suprimiran <ph name="ITEMS_COUNT" /> elements d'aquest dispositiu. Per recuperar les teves dades més endavant, inicia la sessió a Chromium com a <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Tanqueu totes les finestres de Chromium i torneu-ho a provar.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Confirmeu que voleu desinstal·lar Chromium?</translation> <translation id="6403826409255603130">Chromium és un navegador web que executa les pàgines web i les aplicacions a gran velocitat. És ràpid, estable i fàcil d'utilitzar. Navegueu per Internet amb més seguretat amb protecció inserida a Chromium contra el programari maliciós i contra la pesca de credencials.</translation> <translation id="6434250628340475518">Sistema Chromium OS</translation> +<translation id="6455857529632101747">Et donem la benvinguda als perfils de Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium es reiniciarà d'aquí a 1 segon}other{Chromium es reiniciarà d'aquí a # segons}}</translation> <translation id="6475912303565314141">També controla la pàgina que es mostra quan inicieu Chromium.</translation> <translation id="6510925080656968729">Desinstal·la Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_cs.xtb b/chrome/app/resources/chromium_strings_cs.xtb index 65ead9f0..995cced 100644 --- a/chrome/app/resources/chromium_strings_cs.xtb +++ b/chrome/app/resources/chromium_strings_cs.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Chybí klíče rozhraní Google API. Některé funkce Chromium nebudou k dispozici.</translation> <translation id="3296368748942286671">Po ukončení prohlížeče Chromium nechat aplikace na pozadí spuštěné</translation> <translation id="331951419404882060">Chromium OS vaše data nemohl synchronizovat, protože při přihlašování došlo k chybě.</translation> +<translation id="3430503420100763906">Pomocí profilů Chromium můžete všechny své údaje v prohlížeči Chromium uchovávat odděleně. Vytvořte profily pro přátele a rodinu nebo rozdělte činnosti mezi práci a zábavu.</translation> <translation id="347328004046849135">Pokud se přihlásíte pomocí prolomeného hesla, Chromium vám to oznámí</translation> <translation id="3474745554856756813">Z tohoto zařízení bude smazán následující počet položek: <ph name="ITEMS_COUNT" />. Budete-li chtít své údaje později načíst, přihlaste se do prohlížeče Chromium jako <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Zavřete prosím všechna okna prohlížeče Chromium a zkuste to znovu.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Jste si jisti, že chcete Chromium odinstalovat?</translation> <translation id="6403826409255603130">Chromium je webový prohlížeč, který spouští webové stránky a aplikace rychlostí blesku. Je rychlý a snadno se používá. Prohlížejte web bezpečněji díky ochraně proti malwaru a phishingu integrované v prohlížeči Chromium.</translation> <translation id="6434250628340475518">Systém Chromium OS</translation> +<translation id="6455857529632101747">Vítejte v profilech Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium se za 1 sekundu restartuje}few{Chromium se za # sekundy restartuje}many{Chromium se za # sekundy restartuje}other{Chromium se za # sekund restartuje}}</translation> <translation id="6475912303565314141">Také řídí, která stránka se zobrazí při spuštění prohlížeče Chromium.</translation> <translation id="6510925080656968729">Odinstalovat Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_da.xtb b/chrome/app/resources/chromium_strings_da.xtb index 3d4932f..d64be72 100644 --- a/chrome/app/resources/chromium_strings_da.xtb +++ b/chrome/app/resources/chromium_strings_da.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Der mangler Google API-nøgler. Nogle funktioner i Chromium deaktiveres.</translation> <translation id="3296368748942286671">Fortsæt med at køre baggrundsapps, når Chromium er lukket</translation> <translation id="331951419404882060">Chromium OS kunne ikke synkronisere dine data på grund af en loginfejl.</translation> +<translation id="3430503420100763906">Du kan organisere alle dine ting i Chromium ved hjælp af Chromium-profiler. Opret profiler til dine venner og din familie, eller brug dem til at holde arbejde og fornøjelse adskilt.</translation> <translation id="347328004046849135">Chromium giver dig besked, når du logger ind med en kompromitteret adgangskode</translation> <translation id="3474745554856756813">Denne handling sletter <ph name="ITEMS_COUNT" /> elementer på denne enhed. Hvis du senere vil hente dine data igen, skal du logge ind på Chromium som <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Luk alle Chromium-vinduer, og prøv igen.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Er du sikker på, at du vil afinstallere Chromium?</translation> <translation id="6403826409255603130">Chromium er en webbrowser, der kører websider og apps med lynets hast. Den er hurtig, stabil og brugervenlig. Beskyttelse mod malware og phishing er indbygget i Chromium, så du kan søge mere sikkert på internettet.</translation> <translation id="6434250628340475518">Chromium OS-system</translation> +<translation id="6455857529632101747">Velkommen til Chromium-profiler</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium genstarter om 1 sekund}one{Chromium genstarter om # sekund}other{Chromium genstarter om # sekunder}}</translation> <translation id="6475912303565314141">Den styrer også, hvilken side der vises, når du åbner Chromium.</translation> <translation id="6510925080656968729">Afinstaller Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_el.xtb b/chrome/app/resources/chromium_strings_el.xtb index 14dcec0..29eacd73 100644 --- a/chrome/app/resources/chromium_strings_el.xtb +++ b/chrome/app/resources/chromium_strings_el.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Λείπουν κλειδιά του Google API. Ορισμένες λειτουργίες του Google Chromium θα απενεργοποιηθούν.</translation> <translation id="3296368748942286671">Να συνεχίζεται η εκτέλεση εφαρμογών παρασκηνίου όταν το Chromium είναι κλειστό</translation> <translation id="331951419404882060">Το Chromium OS δεν μπόρεσε να συγχρονίσει τα δεδομένα σας λόγω σφάλματος κατά τη σύνδεση.</translation> +<translation id="3430503420100763906">Με τα προφίλ του Chromium μπορείτε να διαχωρίσετε όλη τη δραστηριότητα και το περιεχόμενό σας στο Chromium. Δημιουργήστε προφίλ για φίλους και μέλη της οικογένειας ή διαχωρίστε την εργασία και τη διασκέδαση.</translation> <translation id="347328004046849135">Το Chromium θα σας ειδοποιήσει όταν συνδεθείτε με έναν παραβιασμένο κωδικό πρόσβασης.</translation> <translation id="3474745554856756813">Με αυτήν την ενέργεια θα διαγραφούν <ph name="ITEMS_COUNT" /> στοιχεία από αυτήν τη συσκευή. Για να ανακτήσετε τα δεδομένα σας αργότερα, συνδεθείτε στο Chromium ως <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Κλείστε όλα τα παράθυρα του Chromium και δοκιμάστε ξανά.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Είστε βέβαιοι ότι θέλετε να απεγκαταστήσετε του Chromium;</translation> <translation id="6403826409255603130">Το Chromium είναι ένα πρόγραμμα περιήγησης ιστού που εκτελεί εφαρμογές και ιστοσελίδες με απίστευτη ταχύτητα. Είναι γρήγορο, σταθερό και εύχρηστο. Περιηγηθείτε στον ιστό με μεγαλύτερη ασφάλεια με την ενσωματωμένη προστασία από κακόβουλα προγράμματα και ηλεκτρονικό "ψάρεμα" (phishing).</translation> <translation id="6434250628340475518">Σύστημα Chromium OS</translation> +<translation id="6455857529632101747">Καλώς ήρθατε στα προφίλ του Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Θα γίνει επανεκκίνηση του Chromium σε 1 δευτερόλεπτο}other{Θα γίνει επανεκκίνηση του Chromium σε # δευτερόλεπτα}}</translation> <translation id="6475912303565314141">Επίσης, ελέγχει τη σελίδα που εμφανίζεται κατά την εκκίνηση του Chromium.</translation> <translation id="6510925080656968729">Απεγκατάσταση Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb index c7dbd68..7b01e2e 100644 --- a/chrome/app/resources/chromium_strings_en-GB.xtb +++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API keys are missing. Some functionality of Chromium will be disabled.</translation> <translation id="3296368748942286671">Continue running background apps when Chromium is closed</translation> <translation id="331951419404882060">Chromium OS could not sync your data due to an error signing in.</translation> +<translation id="3430503420100763906">With Chromium profiles you can separate all of your Chromium stuff. Create profiles for friends and family, or split between work and fun.</translation> <translation id="347328004046849135">Chromium will notify you when you sign in with a compromised password</translation> <translation id="3474745554856756813">This will delete <ph name="ITEMS_COUNT" /> items from this device. To retrieve your data later, sign in to Chromium as <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Please close all Chromium windows and try again.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Are you sure you want to uninstall Chromium?</translation> <translation id="6403826409255603130">Chromium is a web browser that runs webpages and applications with lightning speed. It's fast, stable, and easy to use. Browse the web more safely with malware and phishing protection built into Chromium.</translation> <translation id="6434250628340475518">Chromium OS System</translation> +<translation id="6455857529632101747">Welcome to Chromium profiles</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium will restart in 1 second}other{Chromium will restart in # seconds}}</translation> <translation id="6475912303565314141">It also controls what page is shown when you start Chromium.</translation> <translation id="6510925080656968729">Uninstall Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_es-419.xtb b/chrome/app/resources/chromium_strings_es-419.xtb index 948d0af..264354d3 100644 --- a/chrome/app/resources/chromium_strings_es-419.xtb +++ b/chrome/app/resources/chromium_strings_es-419.xtb
@@ -67,6 +67,7 @@ <translation id="328888136576916638">Faltan las claves de la API de Google. Se inhabilitarán algunas funciones de Chromium.</translation> <translation id="3296368748942286671">Continuar ejecutando aplicaciones en segundo plano cuando Chromium esté cerrado.</translation> <translation id="331951419404882060">El Sistema operativo Chromium no pudo sincronizar los datos porque se produjo un error de acceso.</translation> +<translation id="3430503420100763906">Con los perfiles de Chromium, puedes separar todo lo que tienes en Chromium. Crea perfiles para amigos y familiares o diferencia el trabajo de la diversión.</translation> <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> @@ -161,6 +162,7 @@ <translation id="6373523479360886564">¿Estás seguro de que deseas desinstalar Chromium?</translation> <translation id="6403826409255603130">Chromium es un navegador web que ejecuta páginas web y aplicaciones con la velocidad de la luz. Es rápido, estable y fácil de usar. Navega por la Web con seguridad y protección integrada contra software mailicioso y suplantación de identidad.</translation> <translation id="6434250628340475518">Sistema operativo Chromium</translation> +<translation id="6455857529632101747">Te damos la bienvenida a los perfiles de Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium se reiniciará en 1 segundo}other{Chromium se reiniciará en # segundos}}</translation> <translation id="6475912303565314141">También controla qué página se muestra al iniciar Chromium.</translation> <translation id="6510925080656968729">Desinstalar Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_es.xtb b/chrome/app/resources/chromium_strings_es.xtb index 87a382e..c36f1d1 100644 --- a/chrome/app/resources/chromium_strings_es.xtb +++ b/chrome/app/resources/chromium_strings_es.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Faltan las claves de la API de Google. Se inhabilitarán algunas funciones de Chromium.</translation> <translation id="3296368748942286671">Seguir ejecutando aplicaciones en segundo plano al cerrar Chromium</translation> <translation id="331951419404882060">Chromium OS no ha podido sincronizar los datos debido a un error de inicio de sesión.</translation> +<translation id="3430503420100763906">Con los perfiles de Chromium, puedes separar todos tus elementos de Chromium. Crea perfiles para amigos y familiares, o un perfil de trabajo y otro de ocio.</translation> <translation id="347328004046849135">Chromium te avisará cuando inicies sesión con una contraseña vulnerada</translation> <translation id="3474745554856756813">Se eliminarán <ph name="ITEMS_COUNT" /> elementos de este dispositivo. Para recuperar tus datos en otro momento, inicia sesión en Chromium como <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Cierra todas las ventanas de Chromium e inténtalo de nuevo.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">¿Seguro que quieres desinstalar Chromium?</translation> <translation id="6403826409255603130">Chromium es un navegador web que ejecuta páginas web y aplicaciones a gran velocidad. Es rápido, estable y fácil de utilizar. Chromium te permite navegar en la Web de forma más segura, ya que incluye protección contra software malicioso y phishing.</translation> <translation id="6434250628340475518">Sistema Chromium OS</translation> +<translation id="6455857529632101747">Te damos la bienvenida a los perfiles de Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium se reiniciará en 1 segundo}other{Chromium se reiniciará en # segundos}}</translation> <translation id="6475912303565314141">También controla qué página se muestra al iniciar Chromium.</translation> <translation id="6510925080656968729">Desinstalar Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_et.xtb b/chrome/app/resources/chromium_strings_et.xtb index 4a707a0..0432c4b 100644 --- a/chrome/app/resources/chromium_strings_et.xtb +++ b/chrome/app/resources/chromium_strings_et.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Google API võtmed on puudu. Teatud Chromiumi funktsioonid keelatakse.</translation> <translation id="3296368748942286671">Jätka taustarakenduste käitamist pärast Chromiumi sulgemist</translation> <translation id="331951419404882060">Chromium OS ei saanud sisselogimisvea tõttu teie andmeid sünkroonida.</translation> +<translation id="3430503420100763906">Chromiumi profiilidega saate eraldada kogu oma Chromiumi sisu. Looge profiile sõprade või pereliikmete jaoks või eraldage nende abil töö ja lõbu.</translation> <translation id="347328004046849135">Chromium teavitab teid, kui logite sisse ohustatud parooliga</translation> <translation id="3474745554856756813">See kustutab seadmest <ph name="ITEMS_COUNT" /> üksust. Hiljem oma andmete toomiseks logige Chromiumi sisse kasutajana <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Sulgege kõik Chromiumi aknad ja proovige uuesti.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Kas soovite kindlasti Chromiumi desinstallida?</translation> <translation id="6403826409255603130">Chromium on veebibrauser, mis avab veebilehti ja rakendusi välgukiirusel. See on kiire, stabiilne ja hõlpsasti kasutatav. Sirvige veebi turvalisemalt tänu Chromiumi sisseehitatud pahavara- ja andmepüügikaitsele.</translation> <translation id="6434250628340475518">Chromium OS-i süsteem</translation> +<translation id="6455857529632101747">Tere tulemast kasutama Chromiumi profiile</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium taaskäivitub 1 sekundi pärast}other{Chromium taaskäivitub # sekundi pärast}}</translation> <translation id="6475912303565314141">Lisaks juhib see seda, mis leht kuvatakse Chromiumi käivitamisel.</translation> <translation id="6510925080656968729">Desinstalli Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_eu.xtb b/chrome/app/resources/chromium_strings_eu.xtb index 0404910..dd26216 100644 --- a/chrome/app/resources/chromium_strings_eu.xtb +++ b/chrome/app/resources/chromium_strings_eu.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API gakoak falta dira. Chromium-en funtzionalitate batzuk desgaituko dira.</translation> <translation id="3296368748942286671">Mantendu atzeko planoko aplikazioak abian Chromium ixten denean</translation> <translation id="331951419404882060">Saioa hastean gertatu den errore bat dela-eta, Chromium OS sistemak ezin izan ditu sinkronizatu zure datuak.</translation> +<translation id="3430503420100763906">Chromium-eko profilak erabilita, Chromium-en dituzun gauza guztiak bereiz ditzakezu. Sortu profilak lagunentzat eta familiako kideentzat, edo banandu gauza pertsonalak eta lanekoak.</translation> <translation id="347328004046849135">Arriskuan dagoen pasahitz batekin hasten baduzu saioa, jakinarazi egingo dizu Chromium-ek</translation> <translation id="3474745554856756813">Gailuko <ph name="ITEMS_COUNT" /> elementu ezabatuko dira. Geroago datuak eskuratu nahi izanez gero, hasi saioa Chromium-en <ph name="USER_EMAIL" /> gisa.</translation> <translation id="3509308970982693815">Itxi Chromium leiho guztiak eta saiatu berriro.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Ziur Chromium desinstalatu nahi duzula?</translation> <translation id="6403826409255603130">Web-orriak eta aplikazioak tximista bezain azkar abiarazten dituen web-arakatzailea da Chromium. Bizkorra, egonkorra eta erabiltzeko erraza da. Chromium-ek malwarearen eta phishingaren aurka dituen babes inkorporatuei esker, seguruago ibiliko zara Interneten.</translation> <translation id="6434250628340475518">Chromium OS sistema</translation> +<translation id="6455857529632101747">Ongi etorri Chromium-eko profiletara</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{1 segundo barru berrabiaraziko da Chromium}other{# segundo barru berrabiaraziko da Chromium}}</translation> <translation id="6475912303565314141">Chromium abiarazten duzunean erakusten den orria ere kontrolatzen du.</translation> <translation id="6510925080656968729">Desinstalatu Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_fa.xtb b/chrome/app/resources/chromium_strings_fa.xtb index 466e289..d7a765f 100644 --- a/chrome/app/resources/chromium_strings_fa.xtb +++ b/chrome/app/resources/chromium_strings_fa.xtb
@@ -68,6 +68,7 @@ <translation id="328888136576916638">کلیدهای Google API وجود ندارند. برخی از عملکردهای Chromium از کار خواهند افتاد.</translation> <translation id="3296368748942286671">ادامه اجرای برنامهها در پسزمینه هنگامیکه Chromium بسته میشود</translation> <translation id="331951419404882060">به دلیل وجود خطا در ورود به سیستم، سیستمعامل Chromium قادر به همگامسازی دادههای شما نبود.</translation> +<translation id="3430503420100763906">با نمایههای Chromium میتوانید همه چیزتان را در Chromium جدا کنید. برای دوستان و اعضای خانوادهتان نمایه ایجاد کنید، یا کار و سرگرمی را ازهم جدا کنید.</translation> <translation id="347328004046849135">وقتی با گذرواژهای لورفته به سیستم وارد میشوید، Chromium شما را مطلع میکند</translation> <translation id="3474745554856756813">این کار <ph name="ITEMS_COUNT" /> مورد را از این دستگاه حذف میکند. برای بازیابی دادههایتان در فرصتی دیگر، با <ph name="USER_EMAIL" /> به سیستم Chromium وارد شوید.</translation> <translation id="3509308970982693815">لطفاً همه پنجرههای Chromium را ببندید و دوباره سعی کنید.</translation> @@ -162,6 +163,7 @@ <translation id="6373523479360886564">آیا مطمئن هستید که میخواهید Chromium را حذف نصب کنید؟</translation> <translation id="6403826409255603130">Chromium یک مرورگر وب است که صفحات وب و برنامهها را با سرعت بسیار زیاد اجرا میکند. این مرورگر خیلی سریع، پایدار و دارای کاربرد آسان است. با محافظت در مقابل بدافزار و رمزگیری طراحی شده در داخل Chromium، با امنیت بیشتری وب را مرور کنید.</translation> <translation id="6434250628340475518">سیستم سیستمعامل Chromium</translation> +<translation id="6455857529632101747">به نمایههای Chromium خوشآمدید</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium بعد از ۱ ثانیه بازراهاندازی میشود}one{Chromium بعد از # ثانیه بازراهاندازی میشود}other{Chromium بعد از # ثانیه بازراهاندازی میشود}}</translation> <translation id="6475912303565314141">این برنامه همچنین صفحهای را که هنگام راهاندازی Chromium نشان داده میشود، کنترل میکند.</translation> <translation id="6510925080656968729">حذف نصب Chromium </translation>
diff --git a/chrome/app/resources/chromium_strings_fi.xtb b/chrome/app/resources/chromium_strings_fi.xtb index fd63c5bc..4871450 100644 --- a/chrome/app/resources/chromium_strings_fi.xtb +++ b/chrome/app/resources/chromium_strings_fi.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Googlen sovellusliittymän avaimet puuttuvat. Jotkin Chromiumin toiminnoista poistetaan käytöstä.</translation> <translation id="3296368748942286671">Jätä taustasovellukset käyntiin, kun Chromium suljetaan</translation> <translation id="331951419404882060">Chromium-käyttöjärjestelmä ei voi synkronoida tietoja kirjautumisvirheen vuoksi.</translation> +<translation id="3430503420100763906">Kun käytät Chromium-profiileja, voit pitää kaiken Chromium-sisällön erillään. Luo profiileja kavereita ja perhettä varten tai tee ero työn ja hauskanpidon välille.</translation> <translation id="347328004046849135">Chromium ilmoittaa, kun kirjaudut sisään vaarantuneella salasanalla</translation> <translation id="3474745554856756813">Tämä poistaa <ph name="ITEMS_COUNT" /> kohdetta pysyvästi laitteelta. Jos haluat palauttaa tiedot myöhemmin, kirjaudu Chromiumiin käyttäjänä <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Sulje kaikki Chromium-ikkunat ja yritä uudelleen.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Haluatko varmasti poistaa Chromiumin asennuksen?</translation> <translation id="6403826409255603130">Chromium on selain, jolla verkkosivut ja sovellukset toimivat salamannopeasti. Se on nopea, vakaa ja helppokäyttöinen. Chromiumin sisäänrakennettu haittaohjelma- ja tietojenkalastelusuojaus tekevät verkkoselauksesta turvallisempaa.</translation> <translation id="6434250628340475518">Chromium-käyttöjärjestelmä</translation> +<translation id="6455857529632101747">Tervetuloa Chromium-profiileihin</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium käynnistyy uudelleen 1 sekunnin kuluttua}other{Chromium käynnistyy uudelleen # sekunnin kuluttua}}</translation> <translation id="6475912303565314141">Määrittää myös Chromiumin aloitussivun.</translation> <translation id="6510925080656968729">Poista Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_fil.xtb b/chrome/app/resources/chromium_strings_fil.xtb index 6bbd7df..6c743ca 100644 --- a/chrome/app/resources/chromium_strings_fil.xtb +++ b/chrome/app/resources/chromium_strings_fil.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Nawawala ang mga Google API key. Madi-disable ang ilang pagpapagana ng Chromium.</translation> <translation id="3296368748942286671">Patuloy na magpatakbo ng background na apps kapag nakasara ang Chromium</translation> <translation id="331951419404882060">Hindi ma-sync ng Chromium OS ang iyong data dahil sa isang error sa pagsa-sign in.</translation> +<translation id="3430503420100763906">Gamit ang mga profile sa Chromium, magagawa mong paghiwalayin ang lahat ng iyong bagay-bagay sa Chromium. Gumawa ng mga profile para sa mga kaibigan at kapamilya, o gumawa ng magkahiwalay na profile para sa trabaho at kasiyahan.</translation> <translation id="347328004046849135">Aabisuhan ka ng Chromium kapag nag-sign in ka gamit ang isang nakompromisong password</translation> <translation id="3474745554856756813">Magde-delete ito ng <ph name="ITEMS_COUNT" /> (na) item sa device na ito. Upang makuha ang iyong data sa ibang pagkakataon, mag-sign in sa Chromium bilang <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Pakisara ang lahat ng window sa Chromium at subukang muli.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Sigurado ka bang nais mong i-uninstall ang Chromium?</translation> <translation id="6403826409255603130">Ang Chromium ay isang web browser na nagpapatakbo ng mga webpage at application sa bilis ng kidlat. Ito ay mabilis, maaasahan, at madaling gamitin. Mas maingat na mag-browse sa web gamit ang proteksyon ng Chromium laban sa malware at phishing.</translation> <translation id="6434250628340475518">Chromium OS System</translation> +<translation id="6455857529632101747">Welcome sa mga profile sa Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Magre-restart ang Chromium pagkalipas ng 1 segundo}one{Magre-restart ang Chromium pagkalipas ng # segundo}other{Magre-restart ang Chromium pagkalipas ng # na segundo}}</translation> <translation id="6475912303565314141">Kinokontrol din nito kung anong pahina ang ipinapakita kapag sinimulan mo ang Chromium.</translation> <translation id="6510925080656968729">I-uninstall ang Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_fr.xtb b/chrome/app/resources/chromium_strings_fr.xtb index 48b44f7..435abc8c 100644 --- a/chrome/app/resources/chromium_strings_fr.xtb +++ b/chrome/app/resources/chromium_strings_fr.xtb
@@ -70,6 +70,7 @@ <translation id="328888136576916638">Les clés API Google sont manquantes. Certaines fonctionnalités de Chromium vont être désactivées.</translation> <translation id="3296368748942286671">Poursuivre l'exécution des applications en arrière-plan après la fermeture de Chromium</translation> <translation id="331951419404882060">Impossible de synchroniser vos données dans Chromium OS, car une erreur s'est produite lors de la connexion.</translation> +<translation id="3430503420100763906">Utilisez les profils Chromium pour dissocier toutes vos données Chromium. Créez des profils pour vos amis et votre famille, ou créez un profil pour travailler et un autre pour vous divertir.</translation> <translation id="347328004046849135">Chromium vous avertira si vous vous connectez avec un mot de passe compromis</translation> <translation id="3474745554856756813">Cette action aura pour effet de supprimer <ph name="ITEMS_COUNT" /> éléments de cet appareil. Pour récupérer vos données ultérieurement, connectez-vous à Chromium en tant que <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Veuillez fermer toutes les fenêtres de Chromium, puis réessayer.</translation> @@ -164,6 +165,7 @@ <translation id="6373523479360886564">Voulez-vous vraiment désinstaller Chromium ?</translation> <translation id="6403826409255603130">Chromium est un navigateur Web qui exécute les pages Web et les applications à une vitesse fulgurante. Il est rapide, stable et simple d'utilisation. Naviguez sur le Web en toute sécurité tout en bénéficiant de la protection offerte par Chromium contre les logiciels malveillants et de phishing.</translation> <translation id="6434250628340475518">Système Chromium OS</translation> +<translation id="6455857529632101747">Bienvenue sur la page de profils Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium va redémarrer dans 1 seconde}one{Chromium va redémarrer dans # seconde}other{Chromium va redémarrer dans # secondes}}</translation> <translation id="6475912303565314141">Elle contrôle également la page qui s'affiche au démarrage de Chromium.</translation> <translation id="6510925080656968729">Désinstaller Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_gl.xtb b/chrome/app/resources/chromium_strings_gl.xtb index 0244c36c..9bf609b 100644 --- a/chrome/app/resources/chromium_strings_gl.xtb +++ b/chrome/app/resources/chromium_strings_gl.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Non se atopan as claves da API de Google. Desactivaranse algunhas funcións de Chromium.</translation> <translation id="3296368748942286671">Continuar executando aplicacións en segundo plano cando se peche Chromium</translation> <translation id="331951419404882060">Chromium OS non puido sincronizar os teus datos debido a un erro ao iniciar sesión.</translation> +<translation id="3430503420100763906">Cos perfís de Chromium podes separar todo o contido que teñas neste navegador. Crea perfís para os amigos e a familia ou ben crea un para o traballo e outro para o lecer.</translation> <translation id="347328004046849135">Chromium enviarache unha notificación cando inicies sesión cun contrasinal vulnerado</translation> <translation id="3474745554856756813">Esta acción eliminará <ph name="ITEMS_COUNT" /> elementos deste dispositivo. Para recuperar os teus datos máis tarde, inicia sesión en Chromium como <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Pecha todas as ventás de Chromium e téntao de novo.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Estás seguro de que queres desinstalar Chromium?</translation> <translation id="6403826409255603130">Chromium é un navegador web que executa páxinas web e aplicacións a gran velocidade. É rápido, estable e fácil de utilizar. Chromium permíteche navegar na web de forma máis segura, xa que inclúe protección contra malware e phishing.</translation> <translation id="6434250628340475518">Sistema Chromium OS</translation> +<translation id="6455857529632101747">Dámosche a benvida aos perfís de Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium reiniciarase en 1 segundo}other{Chromium reiniciarase en # segundos}}</translation> <translation id="6475912303565314141">Tamén controla a páxina que se mostra ao iniciar Chromium.</translation> <translation id="6510925080656968729">Desinstalar Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_gu.xtb b/chrome/app/resources/chromium_strings_gu.xtb index 3e3d273..4d0cea3 100644 --- a/chrome/app/resources/chromium_strings_gu.xtb +++ b/chrome/app/resources/chromium_strings_gu.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API કીઝ ખૂટે છે. Chromium ની કેટલીક કાર્યક્ષમતા અક્ષમ થશે.</translation> <translation id="3296368748942286671">જ્યારે Chromium બંધ થાય ત્યારે પૃષ્ઠભૂમિ ઍપ્લિકેશનો ચલાવવાનું ચાલુ રાખો</translation> <translation id="331951419404882060">સાઇન ઇનમાં ભૂલ આવવાને કારણે Chromium તમારા ડેટાને સિંક કરી શક્યું નથી.</translation> +<translation id="3430503420100763906">Chromium પ્રોફાઇલ વડે તમે તમારી બધી વસ્તુઓ Chromium પર અલગ-અલગ રાખી શકો છો. મિત્રો અને કુટુંબ માટે પ્રોફાઇલ બનાવો અથવા તેને ઑફિસ અને મનોરંજન વચ્ચે વિભાજિત કરો.</translation> <translation id="347328004046849135">જ્યારે તમે ચેડાં કરવામાં આવેલા પાસવર્ડ વડે સાઇન ઇન કરશો ત્યારે Chromium તમને સૂચિત કરશે</translation> <translation id="3474745554856756813">આ, <ph name="ITEMS_COUNT" /> આઇટમને આ ડિવાઇસમાંથી ડિલીટ કરશે. પછીથી તમારો ડેટા ફરીથી મેળવવા માટે, Chromium માં <ph name="USER_EMAIL" /> તરીકે સાઇન ઇન કરો.</translation> <translation id="3509308970982693815">કૃપા કરીને બધી Chromium વિંડોઝ બંધ કરો અને ફરીથી પ્રયાસ કરો.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">શું તમે ખરેખર તમે Chromium ને અનઇન્સ્ટૉલ કરવા માંગો છો?</translation> <translation id="6403826409255603130">Chromium એ એક એવું વેબ બ્રાઉઝર છે જે પ્રકાશની ગતિએ વેબપૃષ્ઠો અને એપ્લિકેશંસને ચલાવે છે. તે ઝડપી, સ્થિર અને ઉપયોગમાં સરળ છે. Google Chromium માં નિર્મિત મૉલવેર અને ફિશીંગ સુરક્ષા સાથે વેબને વધુ સુરક્ષિત રૂપે બ્રાઉઝ કરો.</translation> <translation id="6434250628340475518">Chromium OS સિસ્ટમ</translation> +<translation id="6455857529632101747">Chromium પ્રોફાઇલમાં આપનું સ્વાગત છે</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 સેકન્ડમાં ફરી શરૂ થશે}one{Chromium # સેકન્ડમાં ફરી શરૂ થશે}other{Chromium # સેકન્ડમાં ફરી શરૂ થશે}}</translation> <translation id="6475912303565314141">જ્યારે તમે Chromium શરૂ કરો ત્યારે કયું પૃષ્ઠ બતાવવામાં આવે તે તેનું પણ નિયંત્રણ કરે છે.</translation> <translation id="6510925080656968729">Chromium ને અનઇન્સ્ટૉલ કરો</translation>
diff --git a/chrome/app/resources/chromium_strings_hi.xtb b/chrome/app/resources/chromium_strings_hi.xtb index 7c5c1ff..72d1036 100644 --- a/chrome/app/resources/chromium_strings_hi.xtb +++ b/chrome/app/resources/chromium_strings_hi.xtb
@@ -40,7 +40,7 @@ <translation id="2535480412977113886">क्रोमियम OS आपका डेटा सिंक नहीं कर सका क्योंकि आपका खाता साइन इन विवरण की समय सीमा पूरी हो चुकी है.</translation> <translation id="2560420686485554789">फ़ाइलें डाउनलोड करने के लिए क्रोमियम को मेमोरी एक्सेस की ज़रूरत होगी</translation> <translation id="2572494885440352020">क्रोमियम सहायक</translation> -<translation id="2583187216237139145">इस प्रोफ़ाइल का इस्तेमाल करने के दौरान Chromium में जनरेट किए गए किसी भी तरह के डेटा (जैसे कि बुकमार्क बनाना, इतिहास, पासवर्ड, और दूसरी सेटिंग) को वर्क प्रोफ़ाइल का एडमिन हटा सकता है. <ph name="LEARN_MORE" /></translation> +<translation id="2583187216237139145">इस प्रोफ़ाइल का इस्तेमाल करने के दौरान Chromium में जनरेट हुए किसी भी तरह के डेटा को वर्क प्रोफ़ाइल का एडमिन हटा सकता है. डेटा में, बुकमार्क, इतिहास, पासवर्ड, और दूसरी सेटिंग शामिल हैं. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">अपडेट को लागू करने के लिए क्रोमियम OS को रीस्टार्ट करने की ज़रूरत होती है.</translation> <translation id="2615699638672665509">यह कंप्यूटर जल्दी ही क्रोमियम अपडेट पाना बंद कर देगा क्योंकि अब इसका हार्डवेयर समर्थित नहीं है.</translation> <translation id="2648074677641340862">इंस्टॉलेशन के दौरान ऑपरेटिंग सिस्टम गड़बड़ी हुई. कृपया क्रोमियम फिर से डाउनलोड करें.</translation> @@ -69,6 +69,7 @@ <translation id="328888136576916638">Google API (एपीआई) कुंजियां मौजूद नहीं हैं. क्रोमियम के कुछ फ़ंक्शन बंद कर दिए जाएंगे.</translation> <translation id="3296368748942286671">जब क्रोमियम बंद हो तब पृष्ठभूमि ऐप्लिकेशन चलाना जारी रखें</translation> <translation id="331951419404882060">प्रवेश करने संबंधी गड़बड़ी के कारण क्रोमियम OS आपका डेटा समन्वयित नहीं कर सका.</translation> +<translation id="3430503420100763906">Chromium प्रोफ़ाइलों का इस्तेमाल करके, आप Chromium पर अपनी सभी चीज़ों को अलग-अलग रख सकते हैं. अपने दोस्तों और परिवार के लिए प्रोफ़ाइलें बनाएं या अपने काम और मनोरंजन की चीज़ों को अलग-अलग रखने के लिए.</translation> <translation id="347328004046849135">जब आप किसी हैक या चोरी हो चुके पासवर्ड से साइन इन करेंगे, तब क्रोमियम आपको इसकी सूचना देगा</translation> <translation id="3474745554856756813">ऐसा करने से इस डिवाइस से <ph name="ITEMS_COUNT" /> आइटम मिट जाएंगे. बाद में अपना डेटा पाने के लिए, Chromium में <ph name="USER_EMAIL" /> के रूप में साइन इन करें.</translation> <translation id="3509308970982693815">कृपया सभी क्रोमियम विंडो बंद करें और फिर से प्रयास करें.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">क्या आप वाकई क्रोमियम को अनइंस्टाल करना चाहते हैं?</translation> <translation id="6403826409255603130">क्रोमियम वेब ब्राउज़र है जो बहुत तेज़ी से वेबपेज और ऐप्लिकेशन चलाता है. यह तेज़, स्थिर, और उपयोग में आसान है. क्रोमियम में अंतर्निहित मैलवेयर और फ़ीशिंग सुरक्षा के साथ ज़्यादा आसानी से वेब ब्राउज़ करें.</translation> <translation id="6434250628340475518">क्रोमियम OS सिस्टम</translation> +<translation id="6455857529632101747">Chromium प्रोफ़ाइलों में आपका स्वागत है</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{क्रोमियम 1 सेकंड में रीस्टार्ट होगा}one{क्रोमियम # सेकंड में रीस्टार्ट होगा}other{क्रोमियम # सेकंड में रीस्टार्ट होगा}}</translation> <translation id="6475912303565314141">इससे यह भी नियंत्रित होता है कि जब आप क्रोमियम प्रारंभ करते हैं तब कौन सा पृष्ठ दिखाया जाए.</translation> <translation id="6510925080656968729">क्रोमियम को अनइंस्टाल करें</translation>
diff --git a/chrome/app/resources/chromium_strings_hr.xtb b/chrome/app/resources/chromium_strings_hr.xtb index 4ace1bd1..5f3a848 100644 --- a/chrome/app/resources/chromium_strings_hr.xtb +++ b/chrome/app/resources/chromium_strings_hr.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Nedostaju ključevi Google API-ja. Neke funkcije Chromiuma bit će onemogućene.</translation> <translation id="3296368748942286671">Nastavi izvršavati pozadinske aplikacije po zatvaranju preglednika Chromium</translation> <translation id="331951419404882060">OS Chromium nije mogao sinkronizirati vaše podatke zbog pogreške prilikom prijave.</translation> +<translation id="3430503420100763906">Pomoću Chromiumovih profila možete razdvojiti sve svoje sadržaje u Chromiumu. Izradite profile za prijatelje i obitelj ili odvojite posao i zabavu.</translation> <translation id="347328004046849135">Chrome će vas obavijestiti kada se prijavite ugroženom zaporkom</translation> <translation id="3474745554856756813">Time će se izbrisati sljedeći broj stavki s uređaja: <ph name="ITEMS_COUNT" />. TDa biste kasnije dohvatili svoje podatke, prijavite se na Chromium kao <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Zatvorite sve prozore preglednika Chromium i pokušajte ponovo.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Jeste li sigurni da želite deinstalirati Chromium?</translation> <translation id="6403826409255603130">Chromium je web-preglednik koji munjevitom brzinom prikazuje web-stranice i aplikacije. Brz je, stabilan i jednostavan za upotrebu. Pregledavajte web sigurnije jer je zaštita od zlonamjernog softvera i krađe identiteta ugrađena u Chromium.</translation> <translation id="6434250628340475518">OS Chromium</translation> +<translation id="6455857529632101747">Dobro došli u Chromiumove profile</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium će se ponovo pokrenuti za 1 sekundu}one{Chromium će se ponovo pokrenuti za # sekundu}few{Chromium će se ponovo pokrenuti za # sekunde}other{Chromium će se ponovo pokrenuti za # sekundi}}</translation> <translation id="6475912303565314141">Upravlja i time koja se stranica prikazuje prilikom pokretanja Chromiuma.</translation> <translation id="6510925080656968729">Deinstaliranje Chromiuma</translation>
diff --git a/chrome/app/resources/chromium_strings_hu.xtb b/chrome/app/resources/chromium_strings_hu.xtb index 57ca64e9..e8b2b58 100644 --- a/chrome/app/resources/chromium_strings_hu.xtb +++ b/chrome/app/resources/chromium_strings_hu.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Hiányoznak Google API-kulcsok. A Chromium egyes funkciói kikapcsolnak.</translation> <translation id="3296368748942286671">A háttéralkalmazások továbbfuttatása, ha a Chromiumot bezárják</translation> <translation id="331951419404882060">A Chromium OS egy bejelentkezési hiba miatt nem tudta szinkronizálni az adatokat.</translation> +<translation id="3430503420100763906">A Chromium-profilokkal különválaszthatja minden Chromium-anyagát. Létrehozhat profilokat ismerőseinek és családtagjainak, vagy elkülönítheti egymástól a munkát és a szórakozást.</translation> <translation id="347328004046849135">A Chromium figyelmezteti Önt, amikor olyan jelszóval jelentkezik be, amelyhez illetéktelenül hozzáfértek</translation> <translation id="3474745554856756813">Ezzel <ph name="ITEMS_COUNT" /> elemet töröl erről az eszközről. Az adatok későbbi lekéréséhez jelentkezzen be a Chromiumba a következő e-mail-címmel: <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Zárjon be minden Chromium-ablakot, és próbálkozzon újra.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Biztos, hogy el szeretné távolítani a Chromiumot?</translation> <translation id="6403826409255603130">A Chromium olyan böngésző, amely villámgyorsan futtatja a weboldalakat és az alkalmazásokat. Gyors, stabil és könnyen használható. A beépített, adathalászat és kártékony programok elleni védelemmel biztonságosabban böngészhet az interneten.</translation> <translation id="6434250628340475518">Chromium OS rendszer</translation> +<translation id="6455857529632101747">Üdvözöljük a Chromium-profilokban!</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{A Chromium 1 másodpercen belül újraindul}other{A Chromium # másodpercen belül újraindul}}</translation> <translation id="6475912303565314141">Továbbá azt is szabályozza, hogy melyik oldal jelenik meg a Chromium indításakor.</translation> <translation id="6510925080656968729">Chromium eltávolítása</translation>
diff --git a/chrome/app/resources/chromium_strings_hy.xtb b/chrome/app/resources/chromium_strings_hy.xtb index 8e0eb68..915a942 100644 --- a/chrome/app/resources/chromium_strings_hy.xtb +++ b/chrome/app/resources/chromium_strings_hy.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API-ի բանալիները չկան: Chromium-ի որոշ գործառույթներ կանջատվեն:</translation> <translation id="3296368748942286671">Շարունակել հետնաշերտի հավելվածների աշխատանքը, երբ Chromium-ը փակված է</translation> <translation id="331951419404882060">Chromium OS-ը չկարողացավ համաժամացնել ձեր տվյալները՝ մուտքի սխալի պատճառով:</translation> +<translation id="3430503420100763906">Chromium պրոֆիլների միջոցով դուք կարող եք օգտագործել դիտարկիչն առանձին այլ օտատերերից։ Ստեղծեք պրոֆիլներ ձեր ընկերների և ընտանիքի անդամների, կամ գործնական և անձնական նպատակների համար։</translation> <translation id="347328004046849135">Chromium-ը կտեղեկացնի ձեզ, երբ կոտրված գաղտնաբառ օգտագործեք։</translation> <translation id="3474745554856756813"><ph name="ITEMS_COUNT" /> տարր կջնջվի այս սարքից: Հետագայում ձեր տվյալներն առբերելու համար մուտք գործեք Chromium <ph name="USER_EMAIL" /> հաշվով:</translation> <translation id="3509308970982693815">Փակեք Chromium-ի բոլոր պատուհանները և կրկին փորձեք:</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Հեռացնե՞լ Chromium-ը:</translation> <translation id="6403826409255603130">Chromium-ը վեբ դիտարկիչ է, որը կայծակի արագությամբ է բացում վեբէջերն ու հավելվածները: Այն արագ է, կայուն և պարզ՝ օգտագործման մեջ: Ավելի ապահով աշխատեք համացանցում՝ վնասագրերի և խաբկայքերի դեմ ներկառուցված պաշտպանության շնորհիվ:</translation> <translation id="6434250628340475518">Chromium OS համակարգ</translation> +<translation id="6455857529632101747">Բարի գալուստ Chromium պրոֆիլներ</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium-ը կվերագործարկվի 1 վայրկյանից}one{Chromium-ը կվերագործարկվի # վայրկյանից}other{Chromium-ը կվերագործարկվի # վայրկյանից}}</translation> <translation id="6475912303565314141">Այն նաև վերահսկում է, թե որ էջը ցուցադրվի Chromium-ը մեկնարկելիս:</translation> <translation id="6510925080656968729">Ապատեղադրել Chromium-ը</translation>
diff --git a/chrome/app/resources/chromium_strings_id.xtb b/chrome/app/resources/chromium_strings_id.xtb index 6f1385d..c85bdbb 100644 --- a/chrome/app/resources/chromium_strings_id.xtb +++ b/chrome/app/resources/chromium_strings_id.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Kunci API Google tidak ada. Beberapa fungsi Chromium tidak akan berfungsi.</translation> <translation id="3296368748942286671">Lanjutkan aplikasi yang berjalan di latar belakang jika Chromium ditutup</translation> <translation id="331951419404882060">Chromium OS tidak dapat menyinkronkan data Anda karena kesalahan saat masuk.</translation> +<translation id="3430503420100763906">Dengan profil Chromium, Anda dapat memisahkan semua aktivitas Chromium Anda. Buat profil untuk teman dan keluarga, atau pisahkan antara aktivitas kerja dan hiburan.</translation> <translation id="347328004046849135">Chromium akan memberi tahu Anda saat Anda login dengan sandi yang telah dibobol</translation> <translation id="3474745554856756813">Tindakan ini akan menghapus <ph name="ITEMS_COUNT" /> item dari perangkat. Untuk mengambil data nanti, login ke Chromium sebagai <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Tutup semua jendela Chromium dan coba lagi.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Anda yakin ingin meng-uninstal Chromium?</translation> <translation id="6403826409255603130">Chromium adalah browser web yang menjalankan halaman web dan aplikasi dengan kecepatan kilat. Browser ini cepat, stabil, dan mudah digunakan. Jelajahi web lebih aman dengan perlindungan dari software perusak dan phishing yang tertanam di dalam Chromium.</translation> <translation id="6434250628340475518">Sistem Chromium OS</translation> +<translation id="6455857529632101747">Selamat datang di profil Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium akan dimulai ulang dalam 1 detik}other{Chromium akan dimulai ulang dalam # detik}}</translation> <translation id="6475912303565314141">Juga mengontrol halaman apa yang ditampilkan saat Anda memulai Chromium.</translation> <translation id="6510925080656968729">Uninstal Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_is.xtb b/chrome/app/resources/chromium_strings_is.xtb index d3d833e..52a1794d 100644 --- a/chrome/app/resources/chromium_strings_is.xtb +++ b/chrome/app/resources/chromium_strings_is.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Lykla vantar fyrir forritaskil Google. Sumir eiginleikar Chromium verða óvirkir.</translation> <translation id="3296368748942286671">Halda áfram að keyra bakgrunnsforrit þegar Chromium er lokað</translation> <translation id="331951419404882060">Chromium OS gat ekki samstillt gögnin þín vegna innskráningarvillu.</translation> +<translation id="3430503420100763906">Þú getur aðskilið allt efnið þitt á Chromium með Chromium prófílum. Stofnaðu prófíla fyrir vini og fjölskyldu eða skiptu á milli vinnu og afþreyingar.</translation> <translation id="347328004046849135">Chromium lætur þig vita þegar þú skráir þig inn með aðgangsorði sem er í hættu</translation> <translation id="3474745554856756813">Þetta mun eyða <ph name="ITEMS_COUNT" /> atriðum úr þessu tæki. Skráðu þig inn í Chromium sem <ph name="USER_EMAIL" /> til að endurheimta gögnin síðar.</translation> <translation id="3509308970982693815">Lokaðu öllum gluggum Chromium og reyndu aftur.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Viltu örugglega fjarlægja Chromium?</translation> <translation id="6403826409255603130">Chromium er vafri sem keyrir vefsíður og forrit með ótrúlegum hraða. Hann er hraðvirkur, stöðugur og einfaldur í notkun. Notaðu vefinn á öruggari hátt með innbyggðri vernd Chromium gegn spilliforritum og vefveiðum.</translation> <translation id="6434250628340475518">Chromium OS kerfi</translation> +<translation id="6455857529632101747">Velkomin(n) í Chromium prófíla</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium verður endurræst eftir eina sekúndu}one{Chromium verður endurræst eftir # sekúndu}other{Chromium verður endurræst eftir # sekúndur}}</translation> <translation id="6475912303565314141">Stýrir því einnig hvaða síða birtist þegar þú ræsir Chromium.</translation> <translation id="6510925080656968729">Fjarlægja Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_it.xtb b/chrome/app/resources/chromium_strings_it.xtb index bc4e13b6..4712cf7 100644 --- a/chrome/app/resources/chromium_strings_it.xtb +++ b/chrome/app/resources/chromium_strings_it.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Mancano le chiavi dell'API di Google. Alcune funzionalità di Chromium verranno disattivate.</translation> <translation id="3296368748942286671">Continua a eseguire applicazioni in background dopo la chiusura di Chromium</translation> <translation id="331951419404882060">Impossibile sincronizzare i dati in Chromium OS a causa di un errore durante l'accesso.</translation> +<translation id="3430503420100763906">Con i profili Chromium puoi separare tutti i tuoi contenuti di Chromium. Crea profili per amici e familiari oppure dividi i dati di lavoro e i contenuti di svago.</translation> <translation id="347328004046849135">Chromium ti invierà una notifica quando accederai con una password compromessa</translation> <translation id="3474745554856756813">Verranno eliminati <ph name="ITEMS_COUNT" /> elementi da questo dispositivo. Per recuperare i dati in un secondo momento, accedi a Chromium come <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Chiudi tutte le finestre di Chromium e riprova.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Vuoi disinstallare Chromium?</translation> <translation id="6403826409255603130">Chromium è un browser web che esegue le pagine web e le applicazioni alla velocità della luce. È veloce, stabile e facile da utilizzare. Naviga su Internet in modo più sicuro grazie alla protezione da malware e phishing integrata in Chromium.</translation> <translation id="6434250628340475518">Sistema Chromium OS</translation> +<translation id="6455857529632101747">Ti diamo il benvenuto nei profili Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium si riavvierà tra 1 secondo}other{Chromium si riavvierà tra # secondi}}</translation> <translation id="6475912303565314141">Controlla anche la pagina visualizzata all'avvio di Chromium.</translation> <translation id="6510925080656968729">Disinstalla Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ja.xtb b/chrome/app/resources/chromium_strings_ja.xtb index 8115cf0..58fe03d4 100644 --- a/chrome/app/resources/chromium_strings_ja.xtb +++ b/chrome/app/resources/chromium_strings_ja.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Google API キーが欠落しています。Chromium の一部の機能は無効になります。</translation> <translation id="3296368748942286671">Chromium を閉じた際にバックグラウンド アプリの処理を続行する</translation> <translation id="331951419404882060">ログイン時にエラーが発生したため、Chromium OS はデータを同期できませんでした。</translation> +<translation id="3430503420100763906">Chromium プロフィールを使うと、Chromium のあらゆる項目や設定を個別に管理できます。友達や家族のプロフィールを作成したり、仕事とプライベートでプロフィールを使い分けたりできます。</translation> <translation id="347328004046849135">不正使用されたパスワードでログインした場合、Chromium で通知します</translation> <translation id="3474745554856756813">このデバイスから <ph name="ITEMS_COUNT" /> 件の項目を削除します。後でデータを取得するには、<ph name="USER_EMAIL" /> として Chromium にログインしてください。</translation> <translation id="3509308970982693815">すべての Chromium ウィンドウを閉じてからもう一度お試しください。</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Chromium をアンインストールしてもよろしいですか?</translation> <translation id="6403826409255603130">Chromium は、ウェブページやアプリケーションを高速に実行できるスピードと、高い安定性を兼ね備えた非常に使いやすいウェブブラウザです。不正なソフトウェアやフィッシングに対する保護機能が組み込まれており、ウェブを安全にブラウジングできます。</translation> <translation id="6434250628340475518">Chromium OS システム</translation> +<translation id="6455857529632101747">Chromium プロフィールへようこそ</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium は 1 秒後に再起動します}other{Chromium は # 秒後に再起動します}}</translation> <translation id="6475912303565314141">この拡張機能では、Chromium の起動時に表示されるページも制御されます。</translation> <translation id="6510925080656968729">Chromium をアンインストール</translation>
diff --git a/chrome/app/resources/chromium_strings_ka.xtb b/chrome/app/resources/chromium_strings_ka.xtb index 6ad342d8..145f329 100644 --- a/chrome/app/resources/chromium_strings_ka.xtb +++ b/chrome/app/resources/chromium_strings_ka.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API გასაღები გამოტოვებულია. Chromium-ის ზოგიერთი ფუნქცია გამორთული იქნება.</translation> <translation id="3296368748942286671">ფონური პროგრამების გაშვების გაგრძელება, როდესაც Chromium იხურება</translation> <translation id="331951419404882060">Chromium OS-მა ვერ დაასინქრონა თქვენი მონაცემები შესვლის შეცდომის გამო.</translation> +<translation id="3430503420100763906">Chromium პროფილები Chromium-ში არსებული თქვენი კონტენტის განცალკევების საშუალებას გაძლევთ. შექმენით პროფილები ოჯახის წევრებისა და მეგობრებისთვის, ან განაცალკევეთ სამსახურებრივი და პირადი მონაცემები.</translation> <translation id="347328004046849135">Chromium შეგატყობინებთ, როცა სისტემაში გატეხილი პაროლით შეხვალთ</translation> <translation id="3474745554856756813">ეს მოქმედება წაშლის <ph name="ITEMS_COUNT" /> ერთეულს ამ მოწყობილობიდან. თქვენი მონაცემების მოგვიანებით მისაღებად, შედით Chromium-ში, როგორც <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">დახურეთ Chromium-ის ყველა ფანჯარა და ხელახლა სცადეთ.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">ნამდვილად გსურთ მოახდინოთ Chromium-ის დეინსტალაცია?</translation> <translation id="6403826409255603130">Chromium არის ვებ ბრაუზერი, რომელიც ვებგვერდებს და აპლიკაციებს ელვისებური სისწრაფით ხსნის. ის არის სწრაფი, სტაბილური და გამოსაყენებლად მარტივი. დაათვალიერეთ ვები უფრო უსაფრთხოდ Chromium-ში ჩაშენებული საზიანო პროგრამული უზრუნველყოფისა და თაღლითობისგან დაცვის საშუალებით.</translation> <translation id="6434250628340475518">Chromium OS სისტემა</translation> +<translation id="6455857529632101747">მოგესალმებათ Chromium პროფილები</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium გადაიტვირთება 1 წამში}other{Chromium გადაიტვირთება # წამში}}</translation> <translation id="6475912303565314141">იგი ასევე აკონტროლებს, თუ რომელი გვერდი გამოჩნდება Chromium-ის გაშვებისას.</translation> <translation id="6510925080656968729">Chromium-ის დეინსტალაცია</translation>
diff --git a/chrome/app/resources/chromium_strings_kk.xtb b/chrome/app/resources/chromium_strings_kk.xtb index 354721e..8beb8fe 100644 --- a/chrome/app/resources/chromium_strings_kk.xtb +++ b/chrome/app/resources/chromium_strings_kk.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API пернелері жоқ. Кейбір Chromium функциялары өшіріледі.</translation> <translation id="3296368748942286671">Chromium жабылғанда, фондық қолданбаларды пайдалануды жалғастыру</translation> <translation id="331951419404882060">Кіру кезіндегі қате себебінен Chromium OS деректеріңізді синхрондай алмайды.</translation> +<translation id="3430503420100763906">Chromium профильдері арқылы Chromium-дегі материалдарыңызды бөліп қоя аласыз. Достарға және отбасыңызға арнап немесе жұмысқа не көңіл көтеруге бөлек профиль жасаңыз.</translation> <translation id="347328004046849135">Ұрланған құпия сөзбен кірген кезде, Chromium сізге хабарлайды.</translation> <translation id="3474745554856756813">Құрылғыдан <ph name="ITEMS_COUNT" /> элемент жойылады. Деректерді кейінірек алу үшін Chromium браузеріне <ph name="USER_EMAIL" /> болып кіріңіз.</translation> <translation id="3509308970982693815">Барлық Chromium терезелерін жауып, әрекетті қайталап көріңіз.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Chromium жою қажет пе?</translation> <translation id="6403826409255603130">Chromium — веб-беттер мен қолданбаларды өте жылдам ашатын веб-браузер. Ол жылдам, тұрақты және пайдалануға оңай. Chromium жүйесіне ендірілген зиянды бағдарлама және фишинг қорғанысымен интернетті уайымсыз пайдалана беруіңізге болады.</translation> <translation id="6434250628340475518">Chromium OS жүйесі</translation> +<translation id="6455857529632101747">Chromium профильдеріне қош келдіңіз!</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 секундтан кейін қайта іске қосылады}other{Chromium # секундтан кейін қайта іске қосылады}}</translation> <translation id="6475912303565314141">Сонымен қатар Chromium іске қосылғанда қайсы бет көрсетілуін бақылайды.</translation> <translation id="6510925080656968729">Chromium жою</translation>
diff --git a/chrome/app/resources/chromium_strings_km.xtb b/chrome/app/resources/chromium_strings_km.xtb index ea31599..d30c161 100644 --- a/chrome/app/resources/chromium_strings_km.xtb +++ b/chrome/app/resources/chromium_strings_km.xtb
@@ -72,6 +72,7 @@ <translation id="328888136576916638">សោ Google API បានបាត់។ មុខងារមួយចំនួននៃ Chromium នឹងត្រូវបានបិទដំណើរការ។</translation> <translation id="3296368748942286671">បន្តដំណើរការកម្មវិធីផ្ទៃខាងក្រោយ នៅពេល Chromium ត្រូវបានបិទ</translation> <translation id="331951419404882060">Chromium OS មិនអាចធ្វើសមកម្មទិន្នន័យរបស់អ្នកទេដោយសារកំហុសឆ្គងការចូល។</translation> +<translation id="3430503420100763906">អ្នកអាចបែងចែកព័ត៌មាននៅលើ Chromium ទាំងអស់របស់អ្នកបាន ដោយប្រើកម្រងព័ត៌មាន Chromium។ បង្កើតកម្រងព័ត៌មានសម្រាប់មិត្តភ័ក្តិ និងគ្រួសារ ឬបែងចែករវាងការងារ និងការកម្សាន្ត។</translation> <translation id="347328004046849135">Chromium នឹងជូនដំណឹងទៅអ្នក នៅពេលអ្នកចូលគណនីដោយប្រើពាក្យសម្ងាត់ដែលរងការលុកលុយ</translation> <translation id="3474745554856756813">វានឹងលុបធាតុ <ph name="ITEMS_COUNT" /> ចេញពីឧបករណ៍នេះ។ ដើម្បីទាញយកទិន្នន័យរបស់អ្នកមកវិញនៅពេលក្រោយ សូមចូលទៅកាន់ Chromium ជា <ph name="USER_EMAIL" /> ។</translation> <translation id="3509308970982693815">សូមបិទផ្ទាំង Chromium ទាំងអស់ ហើយព្យាយាមម្តងទៀត។</translation> @@ -166,6 +167,7 @@ <translation id="6373523479360886564">តើអ្នកប្រាកដថាចង់លុបការតំឡើង Chromium ទេ?</translation> <translation id="6403826409255603130">Chromium គឺជាកម្មវិធីរុករកអ៊ីនធឺណិត ដែលដំណើរការគេហទំព័រ និងកម្មវិធីបានយ៉ាងរហ័សបំផុត។ វាលឿន មានស្ថេរភាព និងងាយស្រួលប្រើ។ រុករកគេហទំព័រប្រកបដោយសុវត្ថិភាពជាមួយការពារពីមេរោគ និងការលួចឆ្មក់យកទិន្នន័យដែលភ្ជាប់នៅក្នុង Chromium។</translation> <translation id="6434250628340475518">ប្រព័ន្ធ Chromium OS</translation> +<translation id="6455857529632101747">សូមស្វាគមន៍មកកាន់កម្រងព័ត៌មាន Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium នឹងចាប់ផ្តើមឡើងវិញក្នុងរយៈពេល 1 វិនាទីទៀត}other{Chromium នឹងចាប់ផ្តើមឡើងវិញក្នុងរយៈពេល # វិនាទីទៀត}}</translation> <translation id="6475912303565314141">វាក៏គ្រប់គ្រងអ្វីដែលត្រូវបានបង្ហាញនៅលើទំព័រដែរ នៅពេលអ្នកចាប់ផ្តើម Chromium។</translation> <translation id="6510925080656968729">លុបការតំឡើង Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ko.xtb b/chrome/app/resources/chromium_strings_ko.xtb index ada6185..e31e0d7 100644 --- a/chrome/app/resources/chromium_strings_ko.xtb +++ b/chrome/app/resources/chromium_strings_ko.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API 키가 누락되었습니다. Chromium의 일부 기능이 사용 중지됩니다.</translation> <translation id="3296368748942286671">Chromium 종료 후에도 백그라운드 앱을 계속 실행</translation> <translation id="331951419404882060">로그인 중 오류가 발생하여 Chromium OS에서 데이터를 동기화하지 못했습니다.</translation> +<translation id="3430503420100763906">Chromium 프로필을 사용하면 모든 Chromium 데이터를 분리할 수 있습니다. 친구와 가족을 위한 프로필을 만들거나 업무용과 개인용 프로필을 구분하세요.</translation> <translation id="347328004046849135">유출된 비밀번호로 로그인하면 Chromium에서 알림을 표시합니다.</translation> <translation id="3474745554856756813">항목 <ph name="ITEMS_COUNT" />개가 기기에서 삭제됩니다. 나중에 데이터를 가져오려면 Chromium에 <ph name="USER_EMAIL" />(으)로 로그인하세요.</translation> <translation id="3509308970982693815">Chromium 창을 모두 닫고 다시 시도해 보세요.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Chromium을 제거하시겠습니까?</translation> <translation id="6403826409255603130">Chromium은 빠른 속도로 웹페이지와 애플리케이션을 실행하는 웹 브라우저입니다. 빠르고 안정적이며 사용하기에 편리합니다. Chromium에 내장된 멀웨어 및 악성 코드 방지 기능을 사용하여 더욱 안전하게 웹을 검색하세요.</translation> <translation id="6434250628340475518">Chromium OS 시스템</translation> +<translation id="6455857529632101747">Chromium 프로필에 오신 것을 환영합니다</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{1초 후에 Chromium이 다시 시작됩니다}other{#초 후에 Chromium이 다시 시작됩니다}}</translation> <translation id="6475912303565314141">또한 Chromium을 시작할 때 표시되는 페이지를 설정합니다.</translation> <translation id="6510925080656968729">Chromium 설치 제거</translation>
diff --git a/chrome/app/resources/chromium_strings_ky.xtb b/chrome/app/resources/chromium_strings_ky.xtb index 132e7fe2..bc6603c3 100644 --- a/chrome/app/resources/chromium_strings_ky.xtb +++ b/chrome/app/resources/chromium_strings_ky.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API ачкычтары жок болуп жатат. Chromium'дун айрым функциялары өчүрүлөт.</translation> <translation id="3296368748942286671">Chromium жабылганда фондук колдонмолор иштей берсин</translation> <translation id="331951419404882060">Chromium OS кирүү катасынан улам дайын-даректериңизди шайкештештире албай койду.</translation> +<translation id="3430503420100763906">Chromium профилдери менен Chromium'дагы маалыматты өзүнчө сактай аласыз. Досторуңуз менен үй-бүлөңүз үчүн профилдерди түзүңүз же жумуш менен эс алууну бири-бири менен аралаштырбаңыз.</translation> <translation id="347328004046849135">Chromium уурдалган сырсөз менен киргениңизде эскертет</translation> <translation id="3474745554856756813">Ушуну менен түзмөктөгү <ph name="ITEMS_COUNT" /> нерсе өчүрүлөт. Дайын-даректериңизди кийинчерээк чыгарып алуу үчүн Chromium'га <ph name="USER_EMAIL" /> аккаунту менен кириңиз.</translation> <translation id="3509308970982693815">Бардык Chromium терезелерин жаап, дагы аракет кылып көрүңүз.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Chromium'ду чын эле орнотуудан чыгарасызбы?</translation> <translation id="6403826409255603130">Chromium – веб-баракчалар жана колдонмолорду чагылгандай тездик менен иштеткен желе серепчиси. Ал оңой, тез жана туруктуу иштеген курал. Chromium кесепеттүү программалар менен фишингден коргоп тургандыктан, желени эч нерседен коркпостон серептей берсеңиз болот.</translation> <translation id="6434250628340475518">Chromium OS тутуму</translation> +<translation id="6455857529632101747">Chromium профилдерине кош келиңиз</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 секунддан кийин өчүрүлүп-күйгүзүлөт}other{Chromium # секунддан кийин өчүрүлүп-күйгүзүлөт}}</translation> <translation id="6475912303565314141">Chromium иштеп баштаганда кайсы бет көрүнө тургандыгын белгилейт.</translation> <translation id="6510925080656968729">Chromium'ду орнотуудан чыгарып салуу</translation>
diff --git a/chrome/app/resources/chromium_strings_lo.xtb b/chrome/app/resources/chromium_strings_lo.xtb index 76325a8..d78df41 100644 --- a/chrome/app/resources/chromium_strings_lo.xtb +++ b/chrome/app/resources/chromium_strings_lo.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">ລະຫັດ Google API ຫາຍໄປ. ການເຮັດໜ້າທີ່ບາງອັນຂອງ Chromium ຈະປິດໃຊ້ງານ.</translation> <translation id="3296368748942286671">ສືບຕໍ່ແລ່ນແອັບພື້ນຫຼັງ ເມື່ອ Chromium ປິດ</translation> <translation id="331951419404882060">Chromium OS ບໍ່ສາມາດຊິງຄ໌ຂໍ້ມູນຂອງທ່ານໄດ້ ເນື່ອງຈາກການລົງຊື່ເຂົ້າໃຊ້ຜິດພາດ.</translation> +<translation id="3430503420100763906">ດ້ວຍໂປຣໄຟລ໌ Chromium ທ່ານສາມາດແຍກເນື້ອຫາ Chromium ຂອງທ່ານທັງໝົດໄດ້. ສ້າງໂປຣໄຟລ໌ສຳລັບໝູ່ ແລະ ຄອບຄົວ ຫຼື ແຍກຈາກກັນລະຫວ່າງວຽກ ແລະ ຄວາມມ່ວນ.</translation> <translation id="347328004046849135">Chromium ຈະແຈ້ງບອກທ່ານເມື່ອທ່ານເຂົ້າສູ່ລະບົບດ້ວຍລະຫັດຜ່ານທີ່ຖືກລະເມີດ</translation> <translation id="3474745554856756813">ນີ້ຈະລຶບ <ph name="ITEMS_COUNT" /> ລາຍການອອກຈາກອຸປະກອນນີ້. ເພື່ອກູ້ຂໍ້ມູນຂອງທ່ານຄືນໃນພາຍຫຼັງ, ກະລຸນາເຂົ້າສູ່ລະບົບ Chromium ເປັນ <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">ກະລຸນາປິດທຸກໜ້າຕ່າງ Chromium ແລະລອງໃໝ່ອີກ.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">ທ່ານແນ່ໃຈບໍວ່າ ທ່ານຕ້ອງການຖອນຕິດຕັ້ງ Chromium?</translation> <translation id="6403826409255603130">Chromium ແມ່ນບຣາວເຊີເວັບທີ່ແລ່ນໜ້າເວັບ ແລະແອັບພລິເຄຊັນດ້ວຍຄວາມໄວແບບສາຍຟ້າແມັບ. ມັນໄວ, ໝັ້ນຄົງ, ແລະໃຊ້ງ່າຍ. ທ່ອງເວັບໄດ້ປອດໄພກ່ວາດ້ວຍການປົກປ້ອງມາລແວ ແລະພິຊຊິງທີ່ສ້າງຢູ່ໃນຕົວ Chromium.</translation> <translation id="6434250628340475518">ລະບົບປະຕິບັດການຂອງ Chromium</translation> +<translation id="6455857529632101747">ຍິນດີຕ້ອນຮັບສູ່ໂປຣໄຟລ໌ Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ຈະປິດແລ້ວເປີດໃໝ່ໃນ 1 ວິນາທີ}other{Chromium ຈະປິດແລ້ວເປີດໃໝ່ໃນ # ວິນາທີ}}</translation> <translation id="6475912303565314141">ມັນຍັງຄວບຄຸມວ່າຈະໃຫ້ສະແດງໜ້າໃດຂຶ້ນ ເມື່ອທ່ານເລີ່ມຕົ້ນເປີດ Chromium.</translation> <translation id="6510925080656968729">ຖອນຕິດຕັ້ງ Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_lt.xtb b/chrome/app/resources/chromium_strings_lt.xtb index 109d547..343f71c 100644 --- a/chrome/app/resources/chromium_strings_lt.xtb +++ b/chrome/app/resources/chromium_strings_lt.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Trūksta „Google“ API raktų. Bus išjungtos kai kurios „Chromium“ funkcijos.</translation> <translation id="3296368748942286671">Toliau vykdyti fonines programas, kai „Chromium“ uždaroma</translation> <translation id="331951419404882060">„Chromium“ OS negali sinchronizuoti duomenų, nes prisijungiant įvyko klaida.</translation> +<translation id="3430503420100763906">Naudodami „Chromium“ profilius galite atskirti visus savo „Chromium“ duomenis. Sukurkite profilius draugams ir šeimos nariams arba atskirkite darbą ir pramogas</translation> <translation id="347328004046849135">„Chromium“ praneš jums, kai prisijungsite naudodami pažeistą slaptažodį</translation> <translation id="3474745554856756813">Atlikus šį veiksmą iš šio įrenginio bus ištrinti elementai (<ph name="ITEMS_COUNT" />). Jei vėliau norėsite gauti duomenis, prisijunkite prie „Chromium“ kaip <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Uždarykite visus „Chromium“ langus ir bandykite dar kartą.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Ar tikrai norite pašalinti „Chromium"?</translation> <translation id="6403826409255603130">„Chromium“ – tai žiniatinklio naršyklė, kurią naudojant akimirksniu paleidžiami tinklalapiai ir programos. Ji greita, stabili ir lengvai naudojama. Saugiau naršykite žiniatinklį naudodami į „Chromium“ integruotą apsaugą nuo kenkėjiškų programų ir sukčiavimo.</translation> <translation id="6434250628340475518">„Chromium“ OS sistema</translation> +<translation id="6455857529632101747">Sveiki, tai – „Chromium“ profiliai</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{„Chromium“ bus paleista iš naujo po 1 sekundės}one{„Chromium“ bus paleista iš naujo po # sekundės}few{„Chromium“ bus paleista iš naujo po # sekundžių}many{„Chromium“ bus paleista iš naujo po # sekundės}other{„Chromium“ bus paleista iš naujo po # sekundžių}}</translation> <translation id="6475912303565314141">Ji taip pat kontroliuoja, koks puslapis rodomas, kai paleidžiate „Chromium“.</translation> <translation id="6510925080656968729">Pašalinti „Chromium“</translation>
diff --git a/chrome/app/resources/chromium_strings_lv.xtb b/chrome/app/resources/chromium_strings_lv.xtb index a043efb..0e39d6b 100644 --- a/chrome/app/resources/chromium_strings_lv.xtb +++ b/chrome/app/resources/chromium_strings_lv.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Trūkst Google API atslēgu. Tiks atspējotas dažas Chromium funkcijas.</translation> <translation id="3296368748942286671">Turpināt lietotņu izpildi fonā, kad Chromium ir aizvērts</translation> <translation id="331951419404882060">Chromium OS nevarēja sinhronizēt jūsu datus pierakstīšanās kļūdas dēļ.</translation> +<translation id="3430503420100763906">Izmantojot Chromium profilus, varat nodalīt visu savu Chromium saturu. Izveidojiet profilus draugiem un ģimenes locekļiem vai nodaliet darba un izklaides saturu.</translation> <translation id="347328004046849135">Ja pierakstīsieties ar uzlauztu paroli, pārlūkprogrammā Chromium tiks parādīts paziņojums</translation> <translation id="3474745554856756813">Veicot šo darbību, no šīs ierīces tiks dzēsts(-i) <ph name="ITEMS_COUNT" /> vienums(-i). Lai vēlāk izgūtu datus, pierakstieties pārlūkā Chromium kā <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Aizveriet visus Chromium logus un mēģiniet vēlreiz.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Vai tiešām vēlaties atinstalēt pārlūku Chromium?</translation> <translation id="6403826409255603130">Chromium ir tīmekļa pārlūks, kas darbina tīmekļa lapas un lietojumprogrammas zibenīgā ātrumā. Tas ir ātrs, stabils un ērti lietojams. Pārlūkojiet tīmekli vēl drošāk ar aizsardzību pret ļaunprātīgu programmatūru un pikšķerēšanu, kas iebūvēta pārlūkā Chromium.</translation> <translation id="6434250628340475518">Chromium OS sistēma</translation> +<translation id="6455857529632101747">Laipni lūdzam Chromium profilos!</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Pārlūks Chromium tiks restartēts pēc 1 sekundes.}zero{Pārlūks Chromium tiks restartēts pēc # sekundēm.}one{Pārlūks Chromium tiks restartēts pēc # sekundes.}other{Pārlūks Chromium tiks restartēts pēc # sekundēm.}}</translation> <translation id="6475912303565314141">Tas nosaka arī to, kāda lapa tiks rādīta, kad atvērsiet pārlūku Chromium.</translation> <translation id="6510925080656968729">Atinstalēt Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_mk.xtb b/chrome/app/resources/chromium_strings_mk.xtb index 310e365..d5e105d 100644 --- a/chrome/app/resources/chromium_strings_mk.xtb +++ b/chrome/app/resources/chromium_strings_mk.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Клучевите Google API недостасуваат. Некои функции на Chromium ќе бидат оневозможени.</translation> <translation id="3296368748942286671">Продолжи со извршување на заднинските апликации кога Chromium е затворен</translation> <translation id="331951419404882060">Chromium OS не може да ги синхронизира вашите податоци поради грешка при најавување.</translation> +<translation id="3430503420100763906">Со профилите на Chromium може да ги одделите сите ваши работи на Chromium. Создајте профили за пријателите и семејството или поделете ги помеѓу работа и забава.</translation> <translation id="347328004046849135">Chromium ќе ве извести ако се најавите со компромитирана лозинка</translation> <translation id="3474745554856756813">Ова ќе избрише <ph name="ITEMS_COUNT" /> ставки од уредов. За да ги вратите вашите податоци подоцна, најавете се на Chromium како <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Затворете ги сите прозорци на Chromium и обидете се повторно.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Дали сте сигурни дека сакате да го деинсталирате Chromium?</translation> <translation id="6403826409255603130">Chromium е веб-прелистувач што активира веб-страници и апликации со неверојатна брзина. Тој е брз, стабилен и лесно се користи. Побезбедно прелистувајте на веб со вградената заштита на Chromium од кражба на идентитет и злонамерен софтвер.</translation> <translation id="6434250628340475518">Систем Chromium OS</translation> +<translation id="6455857529632101747">Добре дојдовте во профили на Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ќе се рестартира за 1 секунда}one{Chromium ќе се рестартира за # секунда}other{Chromium ќе се рестартира за # секунди}}</translation> <translation id="6475912303565314141">Тоа исто така контролира која страница ќе се прикаже кога го стартувате Chromium.</translation> <translation id="6510925080656968729">Деинсталирај Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ml.xtb b/chrome/app/resources/chromium_strings_ml.xtb index fc8d0506..2792192 100644 --- a/chrome/app/resources/chromium_strings_ml.xtb +++ b/chrome/app/resources/chromium_strings_ml.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API കീകൾ നഷ്ടമായി. Chromium-ന്റെ ചില പ്രവർത്തനങ്ങൾ പ്രവർത്തനരഹിതമാകും.</translation> <translation id="3296368748942286671">Chromium അടയ്ക്കുമ്പോൾ അപ്ലിക്കേഷനുകൾ പശ്ചാത്തലത്തിൽ പ്രവർത്തിക്കുന്നത് തുടരുക</translation> <translation id="331951419404882060">സൈൻ ഇൻ ചെയ്യുന്നതിലെ പിശക് കാരണം Chromium OS-ന് നിങ്ങളുടെ ഡാറ്റ സമന്വയിപ്പിക്കാനായില്ല.</translation> +<translation id="3430503420100763906">Chromium പ്രൊഫൈലുകൾ ഉപയോഗിച്ച് നിങ്ങളുടെ എല്ലാ Chromium ഉള്ളടക്കവും വേർതിരിക്കാം. സുഹൃത്തുക്കൾക്കും കുടുംബത്തിനും വ്യത്യസ്ത പ്രൊഫൈലുകൾ സൃഷ്ടിക്കൂ അല്ലെങ്കിൽ ജോലികാര്യങ്ങളും വിനോദവും പ്രത്യേകമായി തരംതിരിക്കൂ.</translation> <translation id="347328004046849135">അപഹരിക്കപ്പെട്ട പാസ്വേഡ് ഉപയോഗിച്ച് നിങ്ങൾ സൈൻ ഇൻ ചെയ്യുമ്പോൾ Chromium നിങ്ങളെ അറിയിക്കും</translation> <translation id="3474745554856756813">ഇത് ഈ ഉപകരണത്തിൽ നിന്നും <ph name="ITEMS_COUNT" /> ഇനങ്ങൾ ഇല്ലാതാക്കും. പിന്നീട് നിങ്ങളുടെ വിവരങ്ങൾ വീണ്ടെടുക്കാൻ, <ph name="USER_EMAIL" /> എന്നയാളായി Chromium-ത്തിൽ സൈൻ ഇൻ ചെയ്യുക.</translation> <translation id="3509308970982693815">എല്ലാ Chromium വിൻഡോകളും അടച്ചതിനുശേഷം വീണ്ടും ശ്രമിക്കുക.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Chromium അൺഇൻസ്റ്റാൾ ചെയ്യാൻ നിങ്ങൾ താൽപ്പര്യപ്പെടുന്നുവെന്ന് തീർച്ചയാണോ?</translation> <translation id="6403826409255603130">മിന്നൽ വേഗത്തിൽ വെബ്പേജുകളും അപ്ലിക്കേഷനുകളും പ്രവർത്തിപ്പിക്കുന്ന ഒരു വെബ് ബ്രൗസറാണ് Chromium. ഇത് വേഗതയുള്ളതും സ്ഥിരതയാർന്നതും ഉപയോഗിക്കാൻ എളുപ്പമുള്ളതുമാണ്. Chromium-ൽ അന്തർനിർമ്മിതമായ മാൽവേർ, ഫിഷിംഗ് എന്നിവയ്ക്കെതിരായുള്ള പരിരക്ഷയോടൊപ്പം കൂടുതൽ സുരക്ഷിതമായി വെബ് ബ്രൗസ് ചെയ്യുക.</translation> <translation id="6434250628340475518">Chromium OS സിസ്റ്റം</translation> +<translation id="6455857529632101747">Chromium പ്രൊഫൈലുകളിലേക്ക് സ്വാഗതം</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ഒരു സെക്കൻഡിൽ പുനഃരാരംഭിക്കും}other{Chromium # സെക്കൻഡിൽ പുനഃരാരംഭിക്കും}}</translation> <translation id="6475912303565314141">നിങ്ങൾ Chromium ആരംഭിക്കുമ്പോൾ ദൃശ്യമാകുന്ന പേജും അത് നിയന്ത്രിയ്ക്കും.</translation> <translation id="6510925080656968729">Chromium അൺഇൻസ്റ്റാൾ ചെയ്യുക</translation>
diff --git a/chrome/app/resources/chromium_strings_mn.xtb b/chrome/app/resources/chromium_strings_mn.xtb index 579e4d52..d16100d 100644 --- a/chrome/app/resources/chromium_strings_mn.xtb +++ b/chrome/app/resources/chromium_strings_mn.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Google-ийн API түлхүүр байхгүй байна. Chromium-ийн зарим функц идэвхгүй болно.</translation> <translation id="3296368748942286671">Chromium-ийг хаахад ард байгаа програмуудыг ажиллуулсан хэвээр бай.</translation> <translation id="331951419404882060">Нэвтэрэхэд алдаа гарсны улмаас Chromium OS таны датаг синхрончилж чадсангүй.</translation> +<translation id="3430503420100763906">Та Chromium профайлаар Chromium-н бүх зүйлээ тусгаарлах боломжтой. Найзууд, гэр бүлдээ профайл үүсгэх эсвэл ажил болон дуртай зүйлээ хооронд нь хуваагаарай.</translation> <translation id="347328004046849135">Таныг алдагдсан нууц үгээр нэвтрэх үед Chromium танд мэдэгдэнэ</translation> <translation id="3474745554856756813">Энэ нь төхөөрөмжөөс <ph name="ITEMS_COUNT" /> зүйл устгана. Өгөгдлөө дараа сэргээхийн тулд Chromium-д <ph name="USER_EMAIL" />-р нэвтэрнэ үү.</translation> <translation id="3509308970982693815">Chromium-н бүх цонхыг хаасны дараагаар дахин хандана уу.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Та Chromium-ыг устгахыг хүсэж байгаадаа итгэлтэй байна уу?</translation> <translation id="6403826409255603130">Chromium бол веб хуудсууд болон аппликейшнуудыг цахилгааны хурдаар ажиллуулдаг веб хөтөч юм. Энэ нь хурдан, найдвартай мөн хэрэглэхэд хялбар. Chromium-д бий болгосон хорт вирус болон фишингийн хамгаалалтыг ашиглан вебээр илүү аюулгүй хайлт хийгээрэй.</translation> <translation id="6434250628340475518">Chromium OS Систем</translation> +<translation id="6455857529632101747">Chromium профайлд тавтай морилно уу</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 секундийн дараа дахин эхэлнэ}other{Chromium # секундийн дараа дахин эхэлнэ}}</translation> <translation id="6475912303565314141">Энэ нь мөн таныг Chromium-ыг эхлүүлж байх үед гарч ирсэн хуудсыг хянадаг.</translation> <translation id="6510925080656968729">Chromium-ийг устгах</translation>
diff --git a/chrome/app/resources/chromium_strings_ms.xtb b/chrome/app/resources/chromium_strings_ms.xtb index 7e4d270..80bf1b5 100644 --- a/chrome/app/resources/chromium_strings_ms.xtb +++ b/chrome/app/resources/chromium_strings_ms.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Kunci API Google tiada. Sesetengah fungsi Chromium akan dilumpuhkan.</translation> <translation id="3296368748942286671">Terus menjalankan apl latar belakang apabila Chromium ditutup</translation> <translation id="331951419404882060">OS Chromium tidak dapat menyegerakkan data anda disebabkan oleh ralat melog masuk.</translation> +<translation id="3430503420100763906">Dengan profil Chromium anda dapat mengasingkan semua bahan Chromium anda. Buat profil untuk rakan dan keluarga atau asingkan antara bahan kerja dengan bahan untuk keseronokan.</translation> <translation id="347328004046849135">Chromium akan memberitahu anda apabila anda log masuk menggunakan kata laluan yang terjejas</translation> <translation id="3474745554856756813">Tindakan ini akan memadamkan <ph name="ITEMS_COUNT" /> item daripada peranti ini. Untuk mendapatkan kembali data anda kemudian, log masuk ke Chromium sebagai <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Sila tutup semua tetingkap Chromium dan cuba lagi.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Adakah anda pasti mahu menyahpasang Chromium?</translation> <translation id="6403826409255603130">Chromium merupakan penyemak imbas yang mengendalikan laman web dan aplikasi dengan kelajuan sepantas kilat. Chromium cepat, stabil dan mudah digunakan. Semak imbas web lebih selamat dengan perlindungan perisian hasad dan pancingan data terbina dalam Chromium.</translation> <translation id="6434250628340475518">Sistem OS Chromium</translation> +<translation id="6455857529632101747">Selamat datang ke profil Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium akan dimulakan semula dalam 1 saat}other{Chromium akan dimulakan semula dalam # saat}}</translation> <translation id="6475912303565314141">Sambungan turut mengawal halaman yang ditunjukkan apabila anda memulakan Chromium.</translation> <translation id="6510925080656968729">Nyahpasang Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_my.xtb b/chrome/app/resources/chromium_strings_my.xtb index 5a0ab672..518deff7c 100644 --- a/chrome/app/resources/chromium_strings_my.xtb +++ b/chrome/app/resources/chromium_strings_my.xtb
@@ -72,6 +72,7 @@ <translation id="328888136576916638">Google API သော့များ ရှာမရပါ။ Chromium ၏ အချို့ လုပ်ကိုင်နိုင်စွမ်းများ ပိတ်ခံကြရမည်။</translation> <translation id="3296368748942286671">Chromium ကို ပိတ်လိုက်သည့်အခါ နောက်ခံအက်ပ်များကို ဆက်လက် ဖွင့်ထားပါ။</translation> <translation id="331951419404882060">လက်မှတ်ထိုး ဝင်စဉ် အမှား တစ်ခုကြောင့် Chromium OS သည် သင်၏ ဒေတာကို စင့်က် လုပ်မပေးနိုင်ပါ။</translation> +<translation id="3430503420100763906">သင်၏ Chromium လုပ်ဆောင်ချက်အားလုံးကို Chromium ပရိုဖိုင်များဖြင့် သီးသန့်ခွဲခြားနိုင်သည်။ မိတ်ဆွေများနှင့် မိသားစုတို့အတွက် ပရိုဖိုင်များပြုလုပ်ပါ (သို့) အလုပ်နှင့် ပျော်စရာအကြား ခွဲခြားအသုံးပြုပါ။</translation> <translation id="347328004046849135">ကျိုးပေါက်ထားသည့် စကားဝှက်ဖြင့် လက်မှတ်ထိုးဝင်သည့်အခါ Chromium က သင့်ကို အကြောင်းကြားပါမည်</translation> <translation id="3474745554856756813">၎င်းသည် ဤစက်ပစ္စည်းမှ အကြောင်းအရာ <ph name="ITEMS_COUNT" /> ခုကို ဖျက်လိုက်ပါမည်။ သင့်ဒေတာကို နောက်မှ ပြန်ယူရန် Chromium သို့ <ph name="USER_EMAIL" /> အဖြစ် လက်မှတ်ထိုးဝင်ပါ။</translation> <translation id="3509308970982693815">ကျေးဇူးပြု၍ Chromium ၐင်းဒိုးများကို ပိတ်ပြီး ထပ်စမ်းပါ။</translation> @@ -167,6 +168,7 @@ <translation id="6373523479360886564">သင်သည် Google Chromium ကို ဖြုတ်ချင်တာ သေချာလား?</translation> <translation id="6403826409255603130">Chromium သည် ဝဘ်စာမျက်နှာများနှင့် အပလီကေးရှင်းများကို မိုးကြိုးအမြန်နှုန်းဖြင့် ဖွင့်ပေးသည့် ဘရောင်ဇာဖြစ်ပါသည်။ ၎င်းသည် မြန်သည်၊ ငြိမ်သည်၊ ပြီးလျှင် အသုံးပြုရ လွယ်ကူပါသည်။ မူရင်းပါဝင်သည့် မဲလ်ဝဲ နှင့် ဖြားယောင်းခြင်း ပါဝင်သည့် Chromium ဖြင့် ဝဘ်ကို လုံခြုံစွာ အသုံးပြုပါ။</translation> <translation id="6434250628340475518">Chromium OS စနစ်</translation> +<translation id="6455857529632101747">Chromium ပရိုဖိုင်များမှ ကြိုဆိုပါသည်</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium သည် ၁ စက္ကန့်အတွင်း ပြန်လည်စတင်ပါမည်}other{Chromium သည် # စက္ကန့်အတွင်း ပြန်လည်စတင်ပါမည်}}</translation> <translation id="6475912303565314141">၎င်းသည် Chromium စချိန်မှာ ဘယ် စာမျက်နှာ ပြရမည်ကိုပါ ထိန်းချုပ်သည်။</translation> <translation id="6510925080656968729">Chromium ဖြုတ်ရန်</translation>
diff --git a/chrome/app/resources/chromium_strings_nl.xtb b/chrome/app/resources/chromium_strings_nl.xtb index fd30bc2..150c2c2 100644 --- a/chrome/app/resources/chromium_strings_nl.xtb +++ b/chrome/app/resources/chromium_strings_nl.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API-sleutels ontbreken. Sommige functies van Chromium worden uitgeschakeld.</translation> <translation id="3296368748942286671">Achtergrondapps ingeschakeld houden als Chromium is gesloten</translation> <translation id="331951419404882060">Chromium OS kan je gegevens niet synchroniseren door een fout tijdens het inloggen.</translation> +<translation id="3430503420100763906">Met Chromium-profielen kun je alle Chromium-gegevens gescheiden houden. Maak profielen voor vrienden en familie of maak onderscheid tussen werk en privé.</translation> <translation id="347328004046849135">Chromium laat het je weten als je inlogt met een gehackt wachtwoord</translation> <translation id="3474745554856756813">Hiermee worden <ph name="ITEMS_COUNT" /> items verwijderd van dit apparaat. Als je je gegevens later wilt terughalen, log je in bij Chromium als <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Sluit alle Chromium-vensters en probeer het opnieuw.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Weet je zeker dat je Chromium wilt verwijderen?</translation> <translation id="6403826409255603130">Chromium is een webbrowser die webpagina's en applicaties bliksemsnel uitvoert. Chromium is snel, stabiel en eenvoudig in gebruik. Surf veiliger op internet met de in Chromium ingebouwde beveiliging tegen malware en phishing.</translation> <translation id="6434250628340475518">Chromium OS-systeem</translation> +<translation id="6455857529632101747">Welkom bij Chromium-profielen</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium wordt over één seconde opnieuw gestart}other{Chromium wordt over # seconden opnieuw gestart}}</translation> <translation id="6475912303565314141">Hiermee wordt ook gecontroleerd welke pagina wordt weergegeven wanneer je Chromium start.</translation> <translation id="6510925080656968729">Chromium verwijderen</translation>
diff --git a/chrome/app/resources/chromium_strings_no.xtb b/chrome/app/resources/chromium_strings_no.xtb index 0adb1bc..c9210af 100644 --- a/chrome/app/resources/chromium_strings_no.xtb +++ b/chrome/app/resources/chromium_strings_no.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">API-nøkler for Google mangler. Noe funksjonalitet i Chromium blir deaktivert.</translation> <translation id="3296368748942286671">Fortsett å kjøre bakgrunnsprogrammer når Chromium er lukket</translation> <translation id="331951419404882060">Chromium OS kunne ikke synkronisere dataene dine på grunn av en feil under pålogging.</translation> +<translation id="3430503420100763906">Med Chromium-profiler kan du holde alle Chromium-tingene dine atskilt. Opprett profiler for venner og familie, eller skill mellom arbeid og fritid.</translation> <translation id="347328004046849135">Chromium varsler deg når du logger på med passord som er utsatt for sikkerhetsbrudd</translation> <translation id="3474745554856756813">Dette sletter <ph name="ITEMS_COUNT" /> elementer fra denne enheten. For å hente dataene dine igjen senere må du logge på Chromium som <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Lukk alle Chromium-vinduer og prøv på nytt.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Er du sikker på at du vil avinstallere Chromium?</translation> <translation id="6403826409255603130">Chromium er en nettleser som kjører nettsider og programmer i lynets hastighet. Den er rask, stabil og enkel å bruke. Surf på nettet på en tryggere måte med Chromium, som har innebygd beskyttelse mot skadelig programvare og nettfisking.</translation> <translation id="6434250628340475518">Chromium OS</translation> +<translation id="6455857529632101747">Velkommen til Chromium-profiler</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium startes på nytt om 1 sekund}other{Chromium startes på nytt om # sekunder}}</translation> <translation id="6475912303565314141">Den styrer også hvilken side som vises når du starter Chromium.</translation> <translation id="6510925080656968729">Avinstaller Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_pl.xtb b/chrome/app/resources/chromium_strings_pl.xtb index c9f6923..ea48695 100644 --- a/chrome/app/resources/chromium_strings_pl.xtb +++ b/chrome/app/resources/chromium_strings_pl.xtb
@@ -67,6 +67,7 @@ <translation id="328888136576916638">Brakuje kluczy interfejsu Google API. Niektóre funkcje Chromium będą wyłączone.</translation> <translation id="3296368748942286671">Kontynuuj działanie aplikacji w tle po zamknięciu Chromium</translation> <translation id="331951419404882060">System operacyjny Chromium nie może zsynchronizować danych z powodu błędu logowania.</translation> +<translation id="3430503420100763906">Dzięki profilom Chromium wszystkie swoje rzeczy z tej przeglądarki możesz przechowywać osobno. Utwórz profile dla znajomych i rodziny albo oddziel pracę od rozrywki.</translation> <translation id="347328004046849135">Chromium powiadomi Cię w razie logowania za pomocą przejętego hasła</translation> <translation id="3474745554856756813">Spowoduje to usunięcie <ph name="ITEMS_COUNT" /> elementów z tego urządzenia. Aby później odzyskać dane, zaloguj się w Chromium jako <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Zamknij wszystkie okna Chromium i spróbuj ponownie.</translation> @@ -161,6 +162,7 @@ <translation id="6373523479360886564">Czy na pewno chcesz odinstalować Chromium?</translation> <translation id="6403826409255603130">Chromium to przeglądarka obsługująca strony i aplikacje z szybkością błyskawicy. Jest szybka, stabilna i łatwa w użyciu. Bezpiecznie przeglądaj internet dzięki wbudowanej w Chromium ochronie przed złośliwym oprogramowaniem i phishingiem.</translation> <translation id="6434250628340475518">System operacyjny Chromium</translation> +<translation id="6455857529632101747">Witamy w profilach Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium uruchomi się ponownie za sekundę}few{Chromium uruchomi się ponownie za # sekundy}many{Chromium uruchomi się ponownie za # sekund}other{Chromium uruchomi się ponownie za # sekundy}}</translation> <translation id="6475912303565314141">Kontroluje także to, jaka strona wyświetla się po uruchomieniu Chromium.</translation> <translation id="6510925080656968729">Odinstaluj Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-BR.xtb b/chrome/app/resources/chromium_strings_pt-BR.xtb index 2277954..2aa648ba 100644 --- a/chrome/app/resources/chromium_strings_pt-BR.xtb +++ b/chrome/app/resources/chromium_strings_pt-BR.xtb
@@ -67,6 +67,7 @@ <translation id="328888136576916638">As chaves da API do Google não foram encontradas. Algumas funcionalidades do Chromium serão desativadas.</translation> <translation id="3296368748942286671">Continuar executando os aplicativos em segundo plano quando o Chromium for fechado</translation> <translation id="331951419404882060">O Chromium OS não pôde sincronizar seus dados devido a um erro durante o login.</translation> +<translation id="3430503420100763906">Você pode usar os perfis do Chromium para separar todos seus dados nele. Crie perfis para amigos e familiares ou separe trabalho e lazer.</translation> <translation id="347328004046849135">O Chromium enviará uma notificação quando você fizer login com uma senha comprometida</translation> <translation id="3474745554856756813">Essa ação excluirá <ph name="ITEMS_COUNT" /> itens deste dispositivo. Para recuperar seus dados mais tarde, faça login no Chromium como <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Feche todas as janelas do Chromium e tente novamente.</translation> @@ -161,6 +162,7 @@ <translation id="6373523479360886564">Você quer mesmo desinstalar o Chromium?</translation> <translation id="6403826409255603130">O Chromium é um navegador que executa páginas e aplicativos da web com alta velocidade. É rápido, estável e fácil de usar. Navegue na web com mais segurança com a proteção contra malware e phishing incorporada ao Chromium.</translation> <translation id="6434250628340475518">Sistema Chromium OS</translation> +<translation id="6455857529632101747">Conheça os perfis do Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{O Chromium será reiniciado em 1 segundo}one{O Chromium será reiniciado em # segundo}other{O Chromium será reiniciado em # segundos}}</translation> <translation id="6475912303565314141">Controla também qual página deve ser exibida quando você inicia o Chromium.</translation> <translation id="6510925080656968729">Desinstalar Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-PT.xtb b/chrome/app/resources/chromium_strings_pt-PT.xtb index 60699ca..98ba3235 100644 --- a/chrome/app/resources/chromium_strings_pt-PT.xtb +++ b/chrome/app/resources/chromium_strings_pt-PT.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">As chaves da API do Google estão em falta. Algumas funcionalidades do Chromium serão desativadas.</translation> <translation id="3296368748942286671">Continuar a executar aplicações em segundo plano quando o Chromium está fechado</translation> <translation id="331951419404882060">O Chromium não conseguiu sincronizar os dados devido a um erro no início de sessão.</translation> +<translation id="3430503420100763906">Com os perfis do Chromium, pode separar todos os seus itens do Chromium. Crie perfis para amigos e familiares ou separe o trabalho da diversão.</translation> <translation id="347328004046849135">O Chromium envia-lhe uma notificação quando iniciar sessão com uma palavra-passe comprometida.</translation> <translation id="3474745554856756813">Esta ação elimina <ph name="ITEMS_COUNT" /> itens deste dispositivo. Para recuperar os dados mais tarde, inicie sessão no Chromium como <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Feche todas as janelas do Chromium e tente novamente.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Tem a certeza de que pretende desinstalar o Chromium?</translation> <translation id="6403826409255603130">O Chromium é um navegador de internet que executa páginas Web e aplicações à velocidade da luz. É rápido, estável e fácil de utilizar. Navegue na Web com mais segurança, com proteção contra programas maliciosos e phishing integrada no Chromium.</translation> <translation id="6434250628340475518">Sistema Chromium OS</translation> +<translation id="6455857529632101747">Damos-lhe as boas-vindas aos perfis do Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{O Chromium será reiniciado dentro de 1 segundo}other{O Chromium será reiniciado dentro de # segundos}}</translation> <translation id="6475912303565314141">Também controla a página apresentada quando inicia o Chromium.</translation> <translation id="6510925080656968729">Desinstalar o Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ro.xtb b/chrome/app/resources/chromium_strings_ro.xtb index 29cabb71..c2dd56af 100644 --- a/chrome/app/resources/chromium_strings_ro.xtb +++ b/chrome/app/resources/chromium_strings_ro.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Lipsesc chei pentru API-ul Google. Unele funcționalități Chromium vor fi dezactivate.</translation> <translation id="3296368748942286671">Rulați în continuare aplicații de fundal când Chromium este închis</translation> <translation id="331951419404882060">Sistemul de operare Chromium nu a putut sincroniza datele din cauza unei erori la conectare.</translation> +<translation id="3430503420100763906">Cu ajutorul profilurilor Chromium, poți păstra separat toate informațiile din Chromium. Creează profiluri pentru prieteni și familie sau pentru muncă și timp liber.</translation> <translation id="347328004046849135">Chromium te va anunța dacă te conectezi folosind o parolă compromisă</translation> <translation id="3474745554856756813">Astfel, se vor șterge <ph name="ITEMS_COUNT" /> elemente de pe acest dispozitiv. Pentru a recupera datele mai târziu, conectează-te la Chromium ca <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Închideți toate ferestrele Chromium și încercați din nou.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Sigur doriți să dezinstalați Chromium?</translation> <translation id="6403826409255603130">Chromium este un browser web care rulează pagini web și aplicații cu viteza fulgerului. Este rapid, stabil și ușor de utilizat. Navigați pe web în condiții de mai multă siguranță, beneficiind de o protecție sporită, încorporată în Chromium, împotriva programelor malware și a tentativelor de phishing.</translation> <translation id="6434250628340475518">Sistemul de operare Chromium</translation> +<translation id="6455857529632101747">Bun venit la profilurile Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium va reporni într-o secundă}few{Chromium va reporni în # secunde}other{Chromium va reporni în # de secunde}}</translation> <translation id="6475912303565314141">Stabilește și ce pagină se afișează când porniți Chromium.</translation> <translation id="6510925080656968729">Dezinstalați Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ru.xtb b/chrome/app/resources/chromium_strings_ru.xtb index 20f79e7..8fd0d26 100644 --- a/chrome/app/resources/chromium_strings_ru.xtb +++ b/chrome/app/resources/chromium_strings_ru.xtb
@@ -67,6 +67,7 @@ <translation id="328888136576916638">Отсутствуют ключи API Google. Некоторые функции Chromium могут не работать.</translation> <translation id="3296368748942286671">Продолжить выполнение фоновых приложений после закрытия Chromium</translation> <translation id="331951419404882060">Не удалось синхронизировать данные из-за ошибки входа в аккаунт.</translation> +<translation id="3430503420100763906">Профили Chromium нужны для раздельного использования браузера, например разными людьми или в разных целях.</translation> <translation id="347328004046849135">Вы получите уведомление от Chromium, если войдете в аккаунт с паролем, который был раскрыт.</translation> <translation id="3474745554856756813">С устройства будут удалены объекты (<ph name="ITEMS_COUNT" />). Чтобы восстановить данные позже, войдите в Chromium как <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Закройте все окна Chromium и повторите попытку снова.</translation> @@ -161,6 +162,7 @@ <translation id="6373523479360886564">Вы действительно хотите удалить Chromium?</translation> <translation id="6403826409255603130">Chromium – браузер, который открывает веб-страницы и приложения за секунды. Он быстр, стабилен в работе и прост в использовании. Встроенная в Chromium защита от мошенничества и вредоносного ПО обеспечивает максимально безопасную работу в Интернете.</translation> <translation id="6434250628340475518">Chromium OS</translation> +<translation id="6455857529632101747">Представляем профили Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium перезапустится через 1 секунду}one{Chromium перезапустится через # секунду}few{Chromium перезапустится через # секунды}many{Chromium перезапустится через # секунд}other{Chromium перезапустится через # секунды}}</translation> <translation id="6475912303565314141">Кроме того, расширение изменило стартовую страницу Chromium.</translation> <translation id="6510925080656968729">Удаление Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_si.xtb b/chrome/app/resources/chromium_strings_si.xtb index 5116557..d7b426f2 100644 --- a/chrome/app/resources/chromium_strings_si.xtb +++ b/chrome/app/resources/chromium_strings_si.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Google API යතුරු අහිමිව ඇත. Chromium හි ඇතැම් ක්රියාකාරීත්ව අක්රීය වනු ඇත.</translation> <translation id="3296368748942286671">Chromium වසා ඇති විට පසුබිම් යෙදුම් ධාවනය අඛණ්ඩව කරන්න</translation> <translation id="331951419404882060">Chromium OSට සයින් ඉන් වීම නිසා ඔබේ දත්ත සමමු කළ නොහැකි විය.</translation> +<translation id="3430503420100763906">Chromium පැතිකඩවල් සමඟ ඔබට ඔබගේ සියලු Chromium දේවල් වෙන් කළ හැකිය. මිතුරන් සහ පවුලේ අය සඳහා පැතිකඩ තනන්න, නැතහොත් රැකියාව සහ විනෝදය අතර බෙදන්න.</translation> <translation id="347328004046849135">ඔබ සමථයට පත් වූ මුරපදයක් සමඟ පුරන විට Chromium ඔබට දැනුම් දෙයි</translation> <translation id="3474745554856756813">මෙය මෙම උපාංගයෙන් අයිතම <ph name="ITEMS_COUNT" />ක් මකනු ඇත. ඔබගේ දත්ත පසුව ලබා ගැනීමට, <ph name="USER_EMAIL" /> ලෙස Chromium වෙත පුරන්න.</translation> <translation id="3509308970982693815">කරුණාකර සියලු Chromium කවුළු වසා නැවත උත්සාහ කරන්න.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">ඔබට Chromium ඉවත්කිරීමට අවශ්ය බව විශ්වාසද?</translation> <translation id="6403826409255603130">Chromium යනු විදුලි වේගයෙන් යෙදුම් හා වෙබ් පිටු ක්රියාකරවන ජාල බ්රව්සරයකි. එය වේගවත්, ස්ථාවර හා භාවිතයට පහසුයි. Chromium තුළ තිළැලි දූශිත මෘදුකාංග හා දත්ත සොරකම් ආරක්ෂාව සමඟ ජාලය වඩා ආරක්ෂිතව ගවේශනය කරන්න.</translation> <translation id="6434250628340475518">Chromium OS පද්ධතිය</translation> +<translation id="6455857529632101747">Chromium පැතිකඩවල් වෙත සාදරයෙන් පිළිගනිමු</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium තත්පර 1කින් යළි ඇරඹෙනු ඇත}one{Chromium තත්පර #කින් යළි ඇරඹෙනු ඇත}other{Chromium තත්පර #කින් යළි ඇරඹෙනු ඇත}}</translation> <translation id="6475912303565314141">ඔබ Chromium ආරම්භ කරන විට කුමන පිටුව පෙන්වන්නේද යන්නද එමගින් පාලනය කෙරේ.</translation> <translation id="6510925080656968729">Chromium අස්ථාපනය කරන්න</translation>
diff --git a/chrome/app/resources/chromium_strings_sk.xtb b/chrome/app/resources/chromium_strings_sk.xtb index 6fe9e93..7592989a 100644 --- a/chrome/app/resources/chromium_strings_sk.xtb +++ b/chrome/app/resources/chromium_strings_sk.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Chýbajú kľúče rozhrania Google API. Niektoré funkcie prehliadača Google Chromium budú zakázané.</translation> <translation id="3296368748942286671">Po zatvorení prehliadača Chromium ponechať spustené aplikácie na pozadí</translation> <translation id="331951419404882060">Systému OS Chromium sa nepodarilo synchronizovať vaše údaje, pretože sa pri prihlasovaní vyskytla chyba.</translation> +<translation id="3430503420100763906">Profilmi prehliadača Chromium môžete oddeliť všetok svoj obsah v prehliadači Chromium. Vytvorte profily pre rodinu aj priateľov alebo si rozdeľte obsah na prácu a zábavu.</translation> <translation id="347328004046849135">Chromium vás upozorní, keď sa prihlásite pomocou prelomeného hesla</translation> <translation id="3474745554856756813">Táto akcia odstráni zo zariadenia niekoľko položiek (počet: <ph name="ITEMS_COUNT" />). Ak budete chcieť svoje údaje neskôr opäť načítať, prihláste sa do prehliadača Chromium ako <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Zatvorte všetky okná prehliadača Chromium a skúste to znova.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Naozaj chcete Chromium odinštalovať?</translation> <translation id="6403826409255603130">Chromium je webový prehliadač, ktorý spúšťa webové stránky a aplikácie rýchlosťou svetla. Je rýchly, stabilný a ľahko sa používa. S ochranou proti škodlivému softvéru a phishingu, ktorá je zabudovaná do prehliadača Chromium, môžete prehliadať web bezpečnejšie.</translation> <translation id="6434250628340475518">Systém Chromium OS</translation> +<translation id="6455857529632101747">Vitajte v profiloch prehliadača Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium sa reštartuje o 1 sekundu}few{Chromium sa reštartujte o # sekundy}many{Chromium sa reštartujte o # sekundy}other{Chromium sa reštartujte o # sekúnd}}</translation> <translation id="6475912303565314141">Tiež určuje, ktorá stránka sa zobrazí pri spustení prehliadača Chromium.</translation> <translation id="6510925080656968729">Odinštalovať Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb index 557c0665..e2edff0f 100644 --- a/chrome/app/resources/chromium_strings_sl.xtb +++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Manjkajo ključi za Google API. Nekatere funkcije Chromiuma bodo onemogočene.</translation> <translation id="3296368748942286671">Nadaljuj izvajanje aplikacij v ozadju, ko je Chromium zaprt</translation> <translation id="331951419404882060">Chromium OS ni mogel sinhronizirati podatkov zaradi napake pri prijavi.</translation> +<translation id="3430503420100763906">S profili v Chromiumu lahko ločite vse stvari v Chromiumu. Ustvarite profile za prijatelje in svojce ali ustvarite ločene za delo in zabavo.</translation> <translation id="347328004046849135">Chromium vas bo obvestil, če se prijavite z ogroženim geslom</translation> <translation id="3474745554856756813">S tem bo iz te naprave izbrisanih več elementov (<ph name="ITEMS_COUNT" />). Če želite pozneje prenesti podatke, se v Chromium prijavite kot <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Zaprite vsa okna Chromiuma in poskusite znova.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Ali ste prepričani, da želite odstraniti Chromiuma?</translation> <translation id="6403826409255603130">Chromium je spletni brskalnik, ki bliskovito odpira spletne strani in izvaja aplikacije. Je hiter, stabilen in preprost za uporabo. Z vgrajeno zaščito pred zlonamerno programsko opremo in lažnim predstavljanjem je brskanje po spletu varno.</translation> <translation id="6434250628340475518">Sistem OS Chromium</translation> +<translation id="6455857529632101747">Pozdravljeni v profilih za Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium se bo znova zagnal čez 1 sekundo}one{Chromium se bo znova zagnal čez # sekundo}two{Chromium se bo znova zagnal čez # sekundi}few{Chromium se bo znova zagnal čez # sekunde}other{Chromium se bo znova zagnal čez # sekund}}</translation> <translation id="6475912303565314141">Določa tudi, katera stran je prikazana, ko zaženete Chromium.</translation> <translation id="6510925080656968729">Odstranitev Chromiuma</translation>
diff --git a/chrome/app/resources/chromium_strings_sq.xtb b/chrome/app/resources/chromium_strings_sq.xtb index 64d237f..584d2bef 100644 --- a/chrome/app/resources/chromium_strings_sq.xtb +++ b/chrome/app/resources/chromium_strings_sq.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Çelësat API të Google mungojnë. Disa funksione të Chromium do të çaktivizohen.</translation> <translation id="3296368748942286671">Vazhdo funksionimin e aplikacioneve në sfond kur Chromium është i mbyllur</translation> <translation id="331951419404882060">Sistemi operativ i Chromium nuk mundi të sinkronizonte të dhënat e tua për shkak të një gabimi në identifikim.</translation> +<translation id="3430503420100763906">Me profilet e Chromium mund t'i mbash të ndara të gjitha gjërat e tua të Chromium. Krijo profile për miqtë dhe familjen ose ndaje punën nga argëtimi.</translation> <translation id="347328004046849135">Chromium do të të njoftojë kur të identifikohesh me një fjalëkalim të komprometuar</translation> <translation id="3474745554856756813">Kjo do të fshijë <ph name="ITEMS_COUNT" /> artikuj nga kjo pajisje. Për t'i marrë më vonë të dhënat, identifikohu te Chromium si <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Mbyll të gjitha dritaret e Chromium dhe provo sërish.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Je i sigurt që dëshiron ta çinstalosh Chromium?</translation> <translation id="6403826409255603130">Chromium është një shfletues uebi që ekzekuton faqe uebi dhe aplikacione me një shpejtësi jashtëzakonisht të lartë. Është i shpejtë, i qëndrueshëm dhe i lehtë në përdorim. Shfleto në ueb në mënyrë më të sigurt, me mbrojtje të integruar në Chromium kundër mashtrimeve dhe softuerëve keqdashës.</translation> <translation id="6434250628340475518">Sistemi i Chromium OS</translation> +<translation id="6455857529632101747">Mirë se vjen në profilet e Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium do të riniset për 1 sekondë}other{Chromium do të riniset për # sekonda}}</translation> <translation id="6475912303565314141">Gjithashtu kontrollon se cila faqe shfaqet kur fillon Chromium</translation> <translation id="6510925080656968729">Çinstaloje Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_sr-Latn.xtb b/chrome/app/resources/chromium_strings_sr-Latn.xtb index 50669e0..653b14c 100644 --- a/chrome/app/resources/chromium_strings_sr-Latn.xtb +++ b/chrome/app/resources/chromium_strings_sr-Latn.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Nedostaju šifre za Google API. Neke funkcije Chromium-a će biti onemogućene.</translation> <translation id="3296368748942286671">Nastavi sa pokretanjem aplikacija u pozadini kada se Chromium zatvori</translation> <translation id="331951419404882060">Chromium OS ne može da sinhronizuje podatke zbog greške pri prijavljivanju.</translation> +<translation id="3430503420100763906">Pomoću Chromium profila možete da razdvojite sve Chromium sadržaje. Napravite profile za prijatelje i porodicu ili razdvojite posao i zabavu.</translation> <translation id="347328004046849135">Chromium će vas obavestiti kada se prijavite pomoću ugrožene lozinke</translation> <translation id="3474745554856756813">Ovim ćete izbrisati <ph name="ITEMS_COUNT" /> stavke(i) sa ovog uređaja. Da biste kasnije vratili podatke, prijavite se u Chromium kao <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Zatvorite sve Chromium prozore i pokušajte ponovo.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Jeste li sigurni da želite da deinstalirate Chromium?</translation> <translation id="6403826409255603130">Chromium je veb pregledač koji pokreće veb-stranice i aplikacije munjevitom brzinom. Brz je, stabilan i jednostavan za korišćenje. Pregledajte Veb bezbednije sa zaštitom od malvera i „pecanja“ koja je ugrađena u Chromium.</translation> <translation id="6434250628340475518">Sistem Chromium OS</translation> +<translation id="6455857529632101747">Dobro došli u Chromium profile</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium će se restartovati za 1 sekundu}one{Chromium će se restartovati za # sekundu}few{Chromium će se restartovati za # sekunde}other{Chromium će se restartovati za # sekundi}}</translation> <translation id="6475912303565314141">Kontroliše i stranicu koja se prikazuje kada pokrenete Chromium.</translation> <translation id="6510925080656968729">Deinstaliraj Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_sr.xtb b/chrome/app/resources/chromium_strings_sr.xtb index cbadd4ae..6831dd1 100644 --- a/chrome/app/resources/chromium_strings_sr.xtb +++ b/chrome/app/resources/chromium_strings_sr.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Недостају шифре за Google API. Неке функције Chromium-а ће бити онемогућене.</translation> <translation id="3296368748942286671">Настави са покретањем апликација у позадини када се Chromium затвори</translation> <translation id="331951419404882060">Chromium ОС не може да синхронизује податке због грешке при пријављивању.</translation> +<translation id="3430503420100763906">Помоћу Chromium профила можете да раздвојите све Chromium садржаје. Направите профиле за пријатеље и породицу или раздвојите посао и забаву.</translation> <translation id="347328004046849135">Chromium ће вас обавестити када се пријавите помоћу угрожене лозинке</translation> <translation id="3474745554856756813">Овим ћете избрисати <ph name="ITEMS_COUNT" /> ставке(и) са овог уређаја. Да бисте касније вратили податке, пријавите се у Chromium као <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Затворите све Chromium прозоре и покушајте поново.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Јесте ли сигурни да желите да деинсталирате Chromium?</translation> <translation id="6403826409255603130">Chromium је веб прегледач који покреће веб-странице и апликације муњевитом брзином. Брз је, стабилан и једноставан за коришћење. Прегледајте Веб безбедније са заштитом од малвера и „пецања“ која је уграђена у Chromium.</translation> <translation id="6434250628340475518">Систем Chromium ОС</translation> +<translation id="6455857529632101747">Добро дошли у Chromium профиле</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ће се рестартовати за 1 секунду}one{Chromium ће се рестартовати за # секунду}few{Chromium ће се рестартовати за # секунде}other{Chromium ће се рестартовати за # секунди}}</translation> <translation id="6475912303565314141">Контролише и страницу која се приказује када покренете Chromium.</translation> <translation id="6510925080656968729">Деинсталирај Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_sv.xtb b/chrome/app/resources/chromium_strings_sv.xtb index 9d91ca6..9c9ad6f 100644 --- a/chrome/app/resources/chromium_strings_sv.xtb +++ b/chrome/app/resources/chromium_strings_sv.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Googles API-nycklar saknas. Vissa funktioner i Google Chromium kommer att vara inaktiverade.</translation> <translation id="3296368748942286671">Fortsätt köra bakgrundsappar när Chromium avslutas</translation> <translation id="331951419404882060">Det gick inte att synkronisera data med Chromium OS på grund av ett inloggningsfel.</translation> +<translation id="3430503420100763906">Du kan hålla dina saker i Chromium åtskilda med hjälp av Chromium-profiler. Skapa profiler för vänner och familjemedlemmar eller dela upp jobb och nöje.</translation> <translation id="347328004046849135">Chromium aviserar dig om du loggar in med ett utsatt lösenord</translation> <translation id="3474745554856756813"><ph name="ITEMS_COUNT" /> objekt tas bort från enheten. Logga in i Chromium som <ph name="USER_EMAIL" /> om du vill kunna återställa datan senare.</translation> <translation id="3509308970982693815">Stäng alla Chromium-fönster och försök igen.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Vill du avinstallera Chromium?</translation> <translation id="6403826409255603130">Chromium är en webbläsare som kör webbsidor och appar blixtsnabbt. Den är snabb, stabil och lätt att använda. Surfa säkrare med Chromiums skydd mot skadliga program och lösenordsfiske.</translation> <translation id="6434250628340475518">Chromium OS-system</translation> +<translation id="6455857529632101747">Välkommen till Chromium-profiler</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium startas om om en sekund}other{Chromium startas om om # sekunder}}</translation> <translation id="6475912303565314141">Det styr också vilken sida som visas när du startar Chromium.</translation> <translation id="6510925080656968729">Avinstallera Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_sw.xtb b/chrome/app/resources/chromium_strings_sw.xtb index 214d56d..168e1e1 100644 --- a/chrome/app/resources/chromium_strings_sw.xtb +++ b/chrome/app/resources/chromium_strings_sw.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Funguo za Google API zinakosekana. Utendaji fulani wa Chromium utazimwa.</translation> <translation id="3296368748942286671">Endelea kuendesha programu za mandharinyuma wakati Chromium imefungwa</translation> <translation id="331951419404882060">Mfumo wa Uendeshaji wa Chromium haukuweza kusawazisha data yako kutokana na hitilafu wakati wa kuingia katika akaunti.</translation> +<translation id="3430503420100763906">Ukitumia kipengele cha wasifu kwenye Chromium unaweza kutenganisha vitu vyako vyote vya Chromium. Tengeneza wasifu wa marafiki na familia au utenganishe kazi na burudani.</translation> <translation id="347328004046849135">Chromium itakuarifu ukiingia katika akaunti ukitumia nenosiri lililoathiriwa</translation> <translation id="3474745554856756813">Hatua hii itafuta vipengee <ph name="ITEMS_COUNT" /> kwenye kifaa hiki. Ili urejeshe data yako baadaye, ingia katika Chromium ukitumia <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Tafadhali funga madirisha yote ya Chromium na ujaribu tena.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Je, una hakika unataka kusanidua Chromium?</translation> <translation id="6403826409255603130">Chromium ni kivinjari cha wavuti kinachoendesha kurasa za wavuti na programu kwa kasi ya umeme. Ni ya haraka, imara, na rahisi kutumia. Vinjari wavuti kwa usalama zaidi dhidi ya hadaa na programu hasidi ukiwa na ulinzi uliojengwa ndani ya Chromium.</translation> <translation id="6434250628340475518">Mfumo wa Uendeshaji wa Chromium</translation> +<translation id="6455857529632101747">Karibu kwenye kipengele cha wasifu kwenye Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium itazimika na kuwaka tena baada ya sekunde 1}other{Chromium itazimika na kuwaka tena baada ya sekunde #}}</translation> <translation id="6475912303565314141">Pia inadhibiti ukurasa unaoonyeshwa unapoanzisha Chromium.</translation> <translation id="6510925080656968729">Ondoa Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ta.xtb b/chrome/app/resources/chromium_strings_ta.xtb index 5c60674..e0849db 100644 --- a/chrome/app/resources/chromium_strings_ta.xtb +++ b/chrome/app/resources/chromium_strings_ta.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Google API விசைகள் காணப்படவில்லை. Chromium இன் சில செயல்பாடுகள் முடக்கப்படும்.</translation> <translation id="3296368748942286671">Chromium ஐ மூடியபிறகு, பின்புலப் பயன்பாடுகளைத் தொடர்ந்து இயக்கு</translation> <translation id="331951419404882060">உள்நுழைவதில் ஏற்பட்ட பிழை காரணமாக உங்கள் தரவை Chromium OS ஆல் ஒத்திசைக்க முடியவில்லை.</translation> +<translation id="3430503420100763906">Chromium சுயவிவரங்களைப் பயன்படுத்தி உங்கள் Chromium தொடர்பான அனைத்தையும் தனித்தனியாக வைத்துக்கொள்ளலாம். நண்பர்களுக்காகவும் குடும்பத்திற்காகவும் சுயவிவரங்களை உருவாக்கலாம் அல்லது பணி மற்றும் பொழுதுபோக்கிற்காக அவற்றைத் தனித்தனியாக வைத்துக்கொள்ளலாம்.</translation> <translation id="347328004046849135">களவாடப்பட்ட கடவுச்சொல்லைக் கொண்டு நீங்கள் உள்நுழையும்போது Chromium அது குறித்து உங்களுக்குத் தெரியப்படுத்தும்</translation> <translation id="3474745554856756813">வெளியேறினால், இந்தச் சாதனத்திலிருந்து <ph name="ITEMS_COUNT" /> உருப்படிகள் நீக்கப்படும். பின்னர் தரவை மீட்டமைக்க, Chromium இல் <ph name="USER_EMAIL" /> எனும் முகவரியின் மூலம் உள்நுழையவும்.</translation> <translation id="3509308970982693815">அனைத்து Chromium சாளரங்களையும் மூடி, பின்னர் முயலவும்.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Chromium ஐ நிச்சயமாக நிறுவல் நீக்கவா?</translation> <translation id="6403826409255603130">Chromium ஆனது வலைப்பக்கங்கள் மற்றும் ஆப்ஸில் குறைவான வேகத்துடன் இயங்கும் வலை உலாவியாகும். இது விரைவானது, நிலையானது மற்றும் பயன்படுத்துவதற்கு எளிமையானது. Chromiumமில் உருவாக்கப்பட்ட மால்வேர் மற்றும் ஃபிஷிங் பாதுகாப்பு மூலம் வலையை மிகவும் பாதுகாப்பாக உலாவலாம்.</translation> <translation id="6434250628340475518">Chromium OS சிஸ்டம்</translation> +<translation id="6455857529632101747">Chromium சுயவிவரங்களுக்கு வரவேற்கிறோம்</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 வினாடியில் மீண்டும் தொடங்கும்}other{Chromium # வினாடிகளில் மீண்டும் தொடங்கும்}}</translation> <translation id="6475912303565314141">Chromium ஐத் தொடங்கும்போது காண்பிக்கப்படும் பக்கத்தையும் இது கட்டுப்படுத்துகிறது.</translation> <translation id="6510925080656968729">Chromium ஐ நிறுவல் நீக்கு</translation>
diff --git a/chrome/app/resources/chromium_strings_th.xtb b/chrome/app/resources/chromium_strings_th.xtb index f0c98b1..6b4dae4bc 100644 --- a/chrome/app/resources/chromium_strings_th.xtb +++ b/chrome/app/resources/chromium_strings_th.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">คีย์ API ของ Google หายไป การทำงานบางอย่างของ Chromium จะถูกปิดใช้งาน</translation> <translation id="3296368748942286671">เรียกใช้แอปพลิเคชันพื้นหลังต่อไปเมื่อปิด Chromium</translation> <translation id="331951419404882060">Chromium OS ไม่สามารถซิงค์ข้อมูลของคุณเนื่องจากเกิดข้อผิดพลาดในการลงชื่อเข้าใช้</translation> +<translation id="3430503420100763906">โปรไฟล์ Chromium ช่วยให้คุณแยกข้อมูลต่างๆ ใน Chromium ออกจากกัน สร้างโปรไฟล์สำหรับเพื่อนและครอบครัว หรือแยกการทำงานออกจากความบันเทิง</translation> <translation id="347328004046849135">Chromium จะแจ้งให้ทราบเมื่อคุณลงชื่อเข้าใช้ด้วยรหัสผ่านที่ไม่รัดกุม</translation> <translation id="3474745554856756813">การดำเนินการนี้จะลบ <ph name="ITEMS_COUNT" /> รายการออกจากอุปกรณ์นี้ หากต้องการดึงข้อมูลภายหลัง ให้ลงชื่อเข้าใช้ Chromium ด้วย <ph name="USER_EMAIL" /></translation> <translation id="3509308970982693815">โปรดปิดหน้าต่าง Chromium ทั้งหมดแล้วลองอีกครั้ง</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">คุณแน่ใจหรือไม่ว่าต้องการถอนการติดตั้ง Chromium</translation> <translation id="6403826409255603130">Chromium เป็นเว็บเบราว์เซอร์ที่เรียกใช้หน้าเว็บและแอปพลิเคชันด้วยความเร็วสูง มีความรวดเร็ว เสถียร และง่ายในการใช้งาน เรียกดูเว็บได้อย่างปลอดภัยมากขึ้นด้วยการป้องกันมัลแวร์และฟิชชิงที่สร้างอยู่ภายใน Chromium</translation> <translation id="6434250628340475518">ระบบ Chromium OS</translation> +<translation id="6455857529632101747">ยินดีต้อนรับสู่โปรไฟล์ Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium จะรีสตาร์ทใน 1 วินาที}other{Chromium จะรีสตาร์ทใน # วินาที}}</translation> <translation id="6475912303565314141">อีกทั้งยังควบคุมหน้าที่จะแสดงเมื่อคุณเปิด Chromium ด้วย</translation> <translation id="6510925080656968729">ถอนการติดตั้ง Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_tr.xtb b/chrome/app/resources/chromium_strings_tr.xtb index f240b803..dab99f2 100644 --- a/chrome/app/resources/chromium_strings_tr.xtb +++ b/chrome/app/resources/chromium_strings_tr.xtb
@@ -67,6 +67,7 @@ <translation id="328888136576916638">Google API anahtarları eksik. Chromium'un bazı işlevleri devre dışı bırakılacak.</translation> <translation id="3296368748942286671">Chromium kapandığında arka plan uygulamaları çalıştırmaya devam et</translation> <translation id="331951419404882060">Oturum açma sırasındaki bir hata nedeniyle Chromium OS, verilerinizi senkronize edemedi.</translation> +<translation id="3430503420100763906">Chromium profilleri ile tüm Chromium öğelerinizi ayırabilirsiniz. Arkadaşlar ve aile için profil oluşturun veya iş ile eğlenceyi ayırın.</translation> <translation id="347328004046849135">Chromium, güvenliği ihlal edilmiş bir şifreyle oturum açtığınızda size haber verir</translation> <translation id="3474745554856756813">Bu işlem, <ph name="ITEMS_COUNT" /> öğeyi bu cihazdan silecektir. Verilerinizi daha sonra geri almak için Chromium'da <ph name="USER_EMAIL" /> hesabıyla oturum açın.</translation> <translation id="3509308970982693815">Lütfen tüm Chromium pencerelerini kapatıp tekrar deneyin.</translation> @@ -161,6 +162,7 @@ <translation id="6373523479360886564">Chromium'u kaldırmak istediğinizden emin misiniz?</translation> <translation id="6403826409255603130">Chromium, Web sayfalarını ve uygulamaları yıldırım hızıyla çalıştıran bir Web tarayıcısıdır. Hızlı ve kararlı çalışır, kolay kullanılır. Chromium'da dahili olarak bulunan zararlı yazılım ve kimlik avı koruması sayesinde Web'de daha güvenli gezinin.</translation> <translation id="6434250628340475518">Chromium OS Sistemi</translation> +<translation id="6455857529632101747">Chromium profillerine hoş geldiniz</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 saniye içinde yeniden başlatılacak}other{Chromium # saniye içinde yeniden başlatılacak}}</translation> <translation id="6475912303565314141">Ayrıca, Chromium'u başlattığınızda gösterilecek sayfayı da denetler.</translation> <translation id="6510925080656968729">Chromium'u Kaldır</translation>
diff --git a/chrome/app/resources/chromium_strings_uk.xtb b/chrome/app/resources/chromium_strings_uk.xtb index 4c1831e..42f1bcfb 100644 --- a/chrome/app/resources/chromium_strings_uk.xtb +++ b/chrome/app/resources/chromium_strings_uk.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Ключі API Google відсутні. Деякі функції Chromium буде вимкнено.</translation> <translation id="3296368748942286671">Продовжувати роботу фонових програм, коли Chromium закрито</translation> <translation id="331951419404882060">ОС Chromium не вдалося синхронізувати ваші дані через помилку входу.</translation> +<translation id="3430503420100763906">Створюйте різні профілі Chromium для різних цілей (наприклад, робочий і особистий) і для різних людей (як-от друзів і членів сім'ї).</translation> <translation id="347328004046849135">Chromium сповістить, коли ви ввійдете в обліковий запис, ввівши зламаний пароль</translation> <translation id="3474745554856756813">З цього пристрою буде видалено стільки елементів: <ph name="ITEMS_COUNT" />. Щоб відновити дані пізніше, увійдіть в обліковий запис Chromium як <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Закрийте всі вікна Chromium і повторіть спробу.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Дійсно видалити Chromium?</translation> <translation id="6403826409255603130">Chromium – це веб-переглядач, який запускає веб-сторінки та програми з блискавичною швидкістю. Він швидкий, надійний і зручний у користуванні. Вбудований у Chromium захист від шкідливих програм і фішингу гарантує ще більшу безпеку під час перегляду веб-сторінок.</translation> <translation id="6434250628340475518">ОС Chromium</translation> +<translation id="6455857529632101747">Представляємо профілі Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium перезапуститься через 1 секунду}one{Chromium перезапуститься через # секунду}few{Chromium перезапуститься через # секунди}many{Chromium перезапуститься через # секунд}other{Chromium перезапуститься через # секунди}}</translation> <translation id="6475912303565314141">Також указує сторінку, яка відкривається під час запуску Chromium.</translation> <translation id="6510925080656968729">Видалити Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_uz.xtb b/chrome/app/resources/chromium_strings_uz.xtb index 104d2654..92c1f5a 100644 --- a/chrome/app/resources/chromium_strings_uz.xtb +++ b/chrome/app/resources/chromium_strings_uz.xtb
@@ -67,6 +67,7 @@ <translation id="328888136576916638">Google API kalitlari yetishmayapti. Chromium’ning ba’zi funksiyalari ishlamasligi mumkin.</translation> <translation id="3296368748942286671">Chromium yopilishida orqa fon rejimida ishlayotgan ilovalar to‘xtatilmasin</translation> <translation id="331951419404882060">Hisobga kirishdagi xatolik sababli Chromium OS ma’lumotlarni sinxronlay olmadi.</translation> +<translation id="3430503420100763906">Chromium profillari brauzerdan alohida foydalanish uchun kerak. Doʻstlar va oila uchun profillar yarating yoki ish va kulgiga ajrating</translation> <translation id="347328004046849135">Google hisobingizga kirsangiz, Chromium oshkor qilingan parollar haqida xabar qiladi</translation> <translation id="3474745554856756813">Ushbu qurilmadagi <ph name="ITEMS_COUNT" /> ta element butunlay o‘chiriladi. Ma’lumotlaringizni keyinroq olish uchun Chromium brauzeriga <ph name="USER_EMAIL" /> sifatida kiring.</translation> <translation id="3509308970982693815">Barcha Chromium oynalarini yoping va qaytadan urinib ko‘ring.</translation> @@ -161,6 +162,7 @@ <translation id="6373523479360886564">Siz haqiqatdan ham Chromium brauzerini o‘chirib tashlamoqchimisiz?</translation> <translation id="6403826409255603130">Chromium - veb sahifalarni va ilovalarni bir necha soniyada ochadigan brauzer. U tez, barqaror va undan foydalanish oson. Chromium brauzerining firibgarlik va zararli dasturlardan saqlovchi ichki o‘rnatilgan himoya vositasi Internetdagi faoliyatni maksimal havfsizlik bilan ta’minlaydi.</translation> <translation id="6434250628340475518">Chromium OS tizimi</translation> +<translation id="6455857529632101747">Chromium profillariga xush kelibsiz</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 soniyada qayta ishga tushiriladi}other{Chromium # soniyada qayta ishga tushiriladi}}</translation> <translation id="6475912303565314141">Bundan tashqari, kengaytma Chromium bosh sahifasini o‘zgarib qo‘ydi.</translation> <translation id="6510925080656968729">Chromium’ni o‘chirib tashlash</translation>
diff --git a/chrome/app/resources/chromium_strings_vi.xtb b/chrome/app/resources/chromium_strings_vi.xtb index 5b9f01ce..c22284ad 100644 --- a/chrome/app/resources/chromium_strings_vi.xtb +++ b/chrome/app/resources/chromium_strings_vi.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">Khóa API của Google bị thiếu. Một số chức năng của Chromium sẽ bị tắt.</translation> <translation id="3296368748942286671">Tiếp tục chạy các ứng dụng dưới nền khi Chromium bị đóng</translation> <translation id="331951419404882060">Chromium OS không thể đồng bộ hóa dữ liệu của bạn do lỗi khi đăng nhập.</translation> +<translation id="3430503420100763906">Với các hồ sơ trên Chromium, bạn có thể tách biệt mọi nội dung của mình khi dùng trình duyệt này. Tạo hồ sơ cho bạn bè và gia đình hoặc phân tách nội dung công việc với nội dung giải trí.</translation> <translation id="347328004046849135">Chromium sẽ thông báo cho bạn khi bạn đăng nhập bằng mật khẩu bị lộ</translation> <translation id="3474745554856756813">Thao tác này sẽ xóa <ph name="ITEMS_COUNT" /> mục khỏi thiết bị này. Để truy xuất dữ liệu của bạn sau, hãy đăng nhập vào Chromium dưới dạng <ph name="USER_EMAIL" />.</translation> <translation id="3509308970982693815">Hãy đóng tất cả cửa sổ Chromium và thử lại.</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">Bạn có chắc chắn muốn gỡ cài đặt Chromium không?</translation> <translation id="6403826409255603130">Chromium là trình duyệt web chạy các trang web và ứng dụng với tốc độ cực nhanh. Đây là một trình duyệt web nhanh, ổn định và dễ sử dụng. Duyệt web trở nên an toàn hơn với tính năng bảo vệ chống lại phần mềm độc hại và lừa đảo được tích hợp sẵn vào Chromium.</translation> <translation id="6434250628340475518">Hệ thống Chromium OS</translation> +<translation id="6455857529632101747">Chào mừng bạn đến với hồ sơ trên Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium sẽ khởi động lại sau 1 giây}other{Chromium sẽ khởi động lại sau # giây}}</translation> <translation id="6475912303565314141">Tiện ích này cũng điều khiển trang nào được hiển thị khi bạn khởi động Chromium.</translation> <translation id="6510925080656968729">Gỡ cài đặt Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-HK.xtb b/chrome/app/resources/chromium_strings_zh-HK.xtb index 7f5859a6..a38c761 100644 --- a/chrome/app/resources/chromium_strings_zh-HK.xtb +++ b/chrome/app/resources/chromium_strings_zh-HK.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">缺少 Google API 金鑰,系統將停用 Chromium 的部分功能。</translation> <translation id="3296368748942286671">在 Chromium 關閉時繼續執行背景應用程式</translation> <translation id="331951419404882060">登入時發生錯誤,因此 Chromium 作業系統無法同步處理您的數據。</translation> +<translation id="3430503420100763906">透過 Chromium 設定檔,您可將所有 Chromium 內容分門別類,例如建立親朋好友專屬的設定檔,或劃分工作和娛樂內容。</translation> <translation id="347328004046849135">如果您使用被盜用的密碼登入帳戶,Chromium 會通知您</translation> <translation id="3474745554856756813">這會刪除此裝置上的 <ph name="ITEMS_COUNT" /> 個項目。如果日後想擷取資料,請以 <ph name="USER_EMAIL" /> 的身分登入 Chromium。</translation> <translation id="3509308970982693815">請關閉所有 Chromium 視窗,然後再試一次。</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">您確定要解除安裝 Chromium 嗎?</translation> <translation id="6403826409255603130">Chromium 網絡瀏覽器可快速開啟網頁和執行應用程式。除了迅速、穩定和易於使用外,Chromium 的內置惡意軟件與網絡釣魚防護功能,可讓您安心瀏覽網絡。</translation> <translation id="6434250628340475518">Chromium 作業系統</translation> +<translation id="6455857529632101747">歡迎使用 Chromium 設定檔</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 將於 1 秒後重新啟動}other{Chromium 將於 # 秒後重新啟動}}</translation> <translation id="6475912303565314141">這個擴充功能也會管制您啟動 Chromium 時所顯示的網頁。</translation> <translation id="6510925080656968729">解除安裝 Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb index 4979d3e..64149f5 100644 --- a/chrome/app/resources/chromium_strings_zh-TW.xtb +++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -69,6 +69,7 @@ <translation id="328888136576916638">缺少 Google API 金鑰,系統將停用 Chromium 的部分功能。</translation> <translation id="3296368748942286671">在 Chromium 關閉時繼續執行背景應用程式</translation> <translation id="331951419404882060">登入時發生錯誤,因此 Chromium 作業系統無法同步處理你的資料。</translation> +<translation id="3430503420100763906">你可以運用 Chromium 設定檔區隔各種 Chromium 資料,例如建立親朋好友的專屬設定檔,或是依工作和娛樂需要建立不同設定檔。</translation> <translation id="347328004046849135">如果你使用遭外洩的密碼登入帳戶,Chromium 會通知你</translation> <translation id="3474745554856756813">登出後,系統會將 <ph name="ITEMS_COUNT" /> 個項目從這個裝置上刪除。日後如要重新取得你的資料,請以 <ph name="USER_EMAIL" /> 身分登入 Chromium。</translation> <translation id="3509308970982693815">請關閉所有 Chromium 視窗,然後再試一次。</translation> @@ -163,6 +164,7 @@ <translation id="6373523479360886564">你確定要解除安裝 Chromium 嗎?</translation> <translation id="6403826409255603130">Chromium 網路瀏覽器開啟網頁和執行應用程式的速度十分迅速。除了迅速、穩定且易於使用之外,Chromium 的內建惡意軟體與網路釣魚防護功能,可讓你安心悠遊網路。</translation> <translation id="6434250628340475518">Chromium 作業系統</translation> +<translation id="6455857529632101747">歡迎使用 Chromium 設定檔</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 將於 1 秒後重新啟動}other{Chromium 將於 # 秒後重新啟動}}</translation> <translation id="6475912303565314141">這個擴充功能也會控管你啟動 Chromium 時所顯示的網頁。</translation> <translation id="6510925080656968729">解除安裝 Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_zu.xtb b/chrome/app/resources/chromium_strings_zu.xtb index cadfd3c..d3984f94 100644 --- a/chrome/app/resources/chromium_strings_zu.xtb +++ b/chrome/app/resources/chromium_strings_zu.xtb
@@ -71,6 +71,7 @@ <translation id="328888136576916638">Okhiye be-Google API abekho. Okunye ukusebenza kwe-Chromium kuzokhutshazwa.</translation> <translation id="3296368748942286671">Qhubeka usebenzise izinhlelo zokusebenza ezingemuva uma i-Chromium ivaliwe</translation> <translation id="331951419404882060">I-Chromium OS ayikwazanga ukuvumelanisa idatha yakho yenxa yephutha lokungena ngemvume.</translation> +<translation id="3430503420100763906">Ngamaphrofayela we-Chromium ungahlukanisa zonke izinto zakho ze-Chromium. Dala amaphrofayela wabangane nomndeni, noma uhlukanise phakathi komsebenzi nobumnandi.</translation> <translation id="347328004046849135">I-Chromium izokwazisa uma ungena ngemvume ngephasiwedi eyonakalisiwe</translation> <translation id="3474745554856756813">Lokhu kuzobuyekeza izinto ezingu-<ph name="ITEMS_COUNT" /> kusuka kule divayisi. Ukuze ubuyise idatha yakho, ngena ngemvume ku-<ph name="USER_EMAIL" /> njengo.</translation> <translation id="3509308970982693815">Sicela uvale wonke amawindi we-Chromium uphinde uzame futhi.</translation> @@ -165,6 +166,7 @@ <translation id="6373523479360886564">Ingabe uqinisekile ukuthi ufuna ukukhipha i-Chromium?</translation> <translation id="6403826409255603130">I-Chromium yisiphequluli sewebhu esiqalisa amakhasi wewebhu nezinhlelo zokusebenza ngesivinini sombani. Iyashesha, izinzile, futhi isebenziseka kalula. Dlulisa amehlo kuwebhu ngokuvikeleke kakhulu ngokuvikelwa kuhlelo olungayilungele ikhompyutha nobugebengu bokweba imininingwane ebucayi eyakhelwe ku-Chromium.</translation> <translation id="6434250628340475518">Isistimu ye-Chromium OS</translation> +<translation id="6455857529632101747">Siyakwamukela kumaphrofayela we-Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{I-Chromium izoqala kabusha kusekhondi elingu-1}one{I-Chromium izoqala kabusha kumasekhondi angu-#}other{I-Chromium izoqala kabusha kumasekhondi angu-#}}</translation> <translation id="6475912303565314141">Iphinde ilawule ukuthi iliphi ikhasi eliboniswa lapho uqala i-Chromium.</translation> <translation id="6510925080656968729">Khipha i-Chromium</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb index 30a81ec..68a039e2 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Geen gekompromitteerde wagwoorde nie}=1{1 gekompromitteerde wagwoord}other{{NUM_COMPROMISED} gekompromitteerde wagwoorde}}</translation> <translation id="1380028686461971526">Koppel outomaties aan netwerk</translation> <translation id="1380436189840894976">Verlaat incognitomodus in elk geval?</translation> +<translation id="1383597849754832576">Kan nie spraaklêers aflaai nie Probeer later weer.</translation> <translation id="1383861834909034572">Sal oopmaak wanneer dit voltooi is</translation> <translation id="1383876407941801731">Soek</translation> <translation id="1386791642444521222">Aktiveer fisiese SIM</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Kon nie deling monteer nie. Gaan asseblief jou eiebewyse na en probeer weer.</translation> <translation id="1956050014111002555">Die lêer bevat veelvuldige sertifikate, waarvan nie een ingevoer is nie:</translation> <translation id="1956390763342388273">Dit sal alle lêers van "<ph name="FOLDER_PATH" />" af oplaai. Doen dit net as jy die werf vertrou.</translation> -<translation id="1960158217849594135">Stoor gebruikernaam in jou Google-rekening?</translation> <translation id="196040970347962278">Vestig eers 'n internetverbinding</translation> <translation id="1962233722219655970">Hierdie bladsy gebruik 'n plaaslike kliëntprogram wat nie op jou rekenaar werk nie.</translation> <translation id="1963227389609234879">Verwyder almal</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Geen beskerming nie (nie aanbeveel nie)</translation> <translation id="1987317783729300807">Rekeninge</translation> <translation id="1989112275319619282">Blaai deur</translation> +<translation id="1990046457226896323">Spraaklêers is afgelaai</translation> <translation id="1990512225220753005">Moenie kortpaaie op hierdie bladsy wys nie</translation> <translation id="1992397118740194946">Nie gestel nie</translation> <translation id="1992924914582925289">Verwyder van toestel</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Gebruik 'n Dell-dokstasie wat ontwerp is om saam met hierdie Chromebook te gebruik om bykomende kenmerke te kry.</translation> <translation id="215753907730220065">Gaan by Volskerm uit</translation> <translation id="2157875535253991059">Hierdie bladsy is nou volskerm.</translation> -<translation id="2160589599612868242">Ontvang kennisgewings van jou foon af op jou <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Voeg Wi-Fi by …</translation> <translation id="2162155940152307086">Sinkronisering sal begin sodra jy sinkroniseringinstellings verlaat</translation> <translation id="2162838847352058695">Keer dat werwe outomaties veelvuldige lêers aflaai</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Kennisgewings is aangeskakel</translation> <translation id="2399939490305346086">Sekuriteitsleutel se aanmelddata</translation> <translation id="2400664245143453337">Onmiddellike opdatering word vereis</translation> +<translation id="2406153734066939945">Vee hierdie profiel en sy data uit?</translation> <translation id="2408018932941436077">Stoor tans kaart</translation> <translation id="2408955596600435184">Voer jou PIN in</translation> <translation id="241082044617551207">Onbekende inprop</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Rekenaar</translation> <translation id="2526619973349913024">Gaan na vir opdatering</translation> <translation id="2527167509808613699">Enige tipe verbinding</translation> +<translation id="2530166226437958497">Foutsporing</translation> <translation id="2532589005999780174">Hoëkontrasmodus</translation> <translation id="253434972992662860">Laat wag</translation> <translation id="2534460670861217804">Beveiligde HTTP-instaanbediener</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Kon nie bedienerantwoord dekodeer nie.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Maak skakel oop met …</translation> -<translation id="2889481634493693121">Skakel kennisgewings op jou foon aan</translation> <translation id="2889925978073739256">Hou aan om inproppe wat nie gesandput is nie, te blokkeer</translation> <translation id="2893168226686371498">Verstekblaaier</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 SMS}other{# SMS'e}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Lig en raak dan weer</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Sinkronisering is onderbreek</translation> <translation id="3861638017150647085">Gebruikernaam "<ph name="USERNAME" />" is nie beskikbaar nie</translation> +<translation id="3861977424605124250">Wys met afskop</translation> <translation id="3862693525629180217">Verifieer deur ingeboude sensor</translation> <translation id="3862788408946266506">Program met "net_kiosk"-manifeseienskap moet in Chrome-bedryfstelsel se kioskmodus geïnstalleer word</translation> <translation id="3865414814144988605">Resolusie</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Toestelloglêer</translation> <translation id="4130207949184424187">Hierdie uitbreiding het verander watter bladsy gewys word wanneer jy van die omniboks af soek.</translation> -<translation id="4130344535649650885">Stoor wagwoord in jou Google-rekening?</translation> <translation id="4130750466177569591">Ek stem in</translation> <translation id="413121957363593859">Komponente</translation> <translation id="4131410914670010031">Swart en wit</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Gaan vanaf 'n ander toestel voort</translation> <translation id="4628757576491864469">Toestelle</translation> <translation id="4628762811416793313">Die opstelling van die Linux-houer is nie voltooi nie. Probeer weer.</translation> +<translation id="4629521233550547305">Maak <ph name="PROFILE_NAME" />-profiel oop</translation> <translation id="4633003931260532286">Uitbreiding vereis "<ph name="IMPORT_NAME" />" met minstens weergawe "<ph name="IMPORT_VERSION" />", maar net weergawe "<ph name="INSTALLED_VERSION" />" is geïnstalleer</translation> <translation id="4633757335284074492">Rugsteun in Google Drive. Laai data maklik terug of wissel enige tyd jou toestel. Hierdie rugsteun sluit programdata in. Rugsteune word na Google toe opgelaai en met jou kind se Google-rekeningwagwoord geënkripteer.</translation> <translation id="4634575639321169635">Stel hierdie toestel op vir werk- of persoonlike gebruik</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Kon nie <ph name="ATTACHMENTS" /> van <ph name="DEVICE_NAME" /> af ontvang nie}other{Kon nie <ph name="ATTACHMENTS" /> van <ph name="DEVICE_NAME" /> af ontvang nie}}</translation> <translation id="5502500733115278303">Van Firefox af ingevoer</translation> <translation id="5502915260472117187">'n Kind</translation> -<translation id="5503858713116291452">Maak seker dat jou foon in die omtrek is en ontsluit is en dat Bluetooth en wi-fi aangeskakel is. Volg stappe op jou foon om die opstelling te voltooi.</translation> <translation id="5503982651688210506">Hou aan om <ph name="HOST" /> toe te laat om jou kamera te gebruik en te beweeg, en om jou mikrofoon te gebruik</translation> <translation id="5505264765875738116">Werwe kan nie vra om kennisgewings te stuur nie</translation> <translation id="5505307013568720083">Ink is op</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Aktief</translation> <translation id="5567989639534621706">Programkaste</translation> <translation id="5568069709869097550">Kan nie aanmeld nie</translation> +<translation id="5571832155627049070">Pasmaak jou profiel</translation> <translation id="5572851009514199876">Begin asseblief deur by Chrome aan te meld sodat Chrome kan kyk of jy toegelaat word om na hierdie werf te gaan.</translation> <translation id="5575473780076478375">Incognito-uitbreiding: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Iets was fout met demonstrasieregistrasieversoek.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Teks-na-spraak-steminstellings</translation> <translation id="7280877790564589615">Toestemming versoek</translation> <translation id="7282992757463864530">Inligtingbalk</translation> +<translation id="7283555985781738399">Besoekermodus</translation> <translation id="7284411326658527427">Elke persoon kan hul rekening personaliseer en data privaat hou.</translation> <translation id="7287143125007575591">Toegang geweier.</translation> <translation id="7287411021188441799">Laai verstekagtergrond terug</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">Netscape-sertifikaatoutoriteit se beleid-URL</translation> <translation id="7717014941119698257">Laai tans af: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Werwe kan vir jou ligging vra (aanbeveel)</translation> +<translation id="771721654176725387">Dit sal jou blaaierdata permanent van hierdie toestel af uitvee. Om data te herwin, moet jy "sinkroniseer as" aanskakel</translation> <translation id="7717845620320228976">Kyk vir opdaterings</translation> <translation id="7719367874908701697">Bladsyzoem:</translation> <translation id="7719588063158526969">Toestelnaam is te lank</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Skuif</translation> <translation id="7765507180157272835">Bluetooth en wi-fi word vereis</translation> <translation id="7766082757934713382">Help om netwerkdatagebruik te verminder deur outomatiese program- en stelopdaterings te onderbreek</translation> +<translation id="7766807826975222231">Gaan op 'n toer</translation> <translation id="7766838926148951335">Aanvaar toestemmings</translation> <translation id="7768507955883790804">Werwe volg outomaties hierdie instelling wanneer jy hulle besoek</translation> <translation id="7768770796815395237">Verander</translation> @@ -6117,6 +6122,7 @@ <translation id="8016266267177410919">Tydelike berging</translation> <translation id="8017176852978888182">Gedeelde gidse in Linux</translation> <translation id="8017679124341497925">Kortpad is gewysig</translation> +<translation id="8018298733481692628">Vee hierdie profiel uit?</translation> <translation id="8018313076035239964">Beheer watter inligting webwerwe kan gebruik en watter inhoud hulle vir jou kan wys</translation> <translation id="8023801379949507775">Dateer uitbreidings nou op</translation> <translation id="8026334261755873520">Vee blaaidata uit</translation> @@ -6287,7 +6293,6 @@ <translation id="8211551284753798479">Ongeldige PUK. Jy het <ph name="RETRIES" /> pogings oor.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Aflaai is aan die gang}other{Aflaaie is aan die gang}}</translation> <translation id="8213449224684199188">Het fotomodus ingevoer</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> wil jou toestel identifiseer sodat dit beskermde video en oudio van die hoogste gehalte kan speel.</translation> <translation id="8214489666383623925">Maak lêer oop …</translation> <translation id="8214962590150211830">Verwyder hierdie persoon</translation> <translation id="8216351761227087153">Kyk</translation> @@ -6766,7 +6771,6 @@ <translation id="8774379074441005279">Bevestig terugstelling</translation> <translation id="8774934320277480003">Boonste kantlyn</translation> <translation id="8775144690796719618">Ongeldige URL</translation> -<translation id="8775163630211761057">Brei die beste van jou Android-foon uit na jou <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Jou <ph name="DEVICE_TYPE" /> sal oor # sekonde outomaties gesluit word. <ph name="DOMAIN" /> vereis dat jy jou slimkaart ingesteek hou.}other{Jou <ph name="DEVICE_TYPE" /> sal oor # sekondes outomaties gesluit word. <ph name="DOMAIN" /> vereis dat jy jou slimkaart ingesteek hou.}}</translation> @@ -6955,6 +6959,7 @@ <translation id="8973596347849323817">Jy kan hierdie toestel pasmaak om by jou behoeftes te pas. Hierdie toeganklikheidkenmerke kan later in Instellings verander word.</translation> <translation id="897414447285476047">Bestemminglêer was onvolledig weens 'n verbindingkwessie.</translation> <translation id="897525204902889653">Kwarantyndiens</translation> +<translation id="8975396729541388937">Teken enige tyd uit deur die skakel te klik in die e-posse wat jy ontvang.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" en 1 ander oortjie}other{"<ph name="TAB_TITLE" />" en # ander oortjies}}</translation> <translation id="8977811652087512276">Verkeerde wagwoord of korrupte lêer</translation> <translation id="8978154919215542464">Aan – sinkroniseer alles</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index 42730a7..78f5d85 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{ምንም የተጠለፈ የይለፍ ቃል የለም}=1{1 የተጠለፈ የይለፍ ቃል}one{{NUM_COMPROMISED} የተጠለፉ የይለፍ ቃላት}other{{NUM_COMPROMISED} የተጠለፉ የይለፍ ቃላት}}</translation> <translation id="1380028686461971526">ከአውታረ መረብ ጋር በራስ-ሰር አገናኝ</translation> <translation id="1380436189840894976">ለማንኛውም ማንነት ከማያሳውቅ ሁነታ ይውጡ?</translation> +<translation id="1383597849754832576">የንግግር ፋይሎችን ማውረድ አልተቻለም። ቆይተው እንደገና ይሞክሩ።</translation> <translation id="1383861834909034572">ሲጠናቀቅ መክፈት</translation> <translation id="1383876407941801731">ፍለጋ </translation> <translation id="1386791642444521222">አካላዊ ሲም አንቃ</translation> @@ -877,7 +878,6 @@ <translation id="1954813140452229842">ማጋራትን ማፈናጠጥ ላይ ስህተት። እባክዎ ምስክርነቶችዎን ይፈትሹና እንደገና ይሞክሩ።</translation> <translation id="1956050014111002555">ፋይሉ እንዲገቡ ያልተደረጉ በርካታ የእውቅና ማረጋገጫዎችን ይዞ ነበር፦</translation> <translation id="1956390763342388273">ይህ ሁሉንም ፋይሎች ከ«<ph name="FOLDER_PATH" />» ይሰቅላል። ጣቢያውን የሚያምኑት ከሆነ ብቻ ይህን ያድርጉ።</translation> -<translation id="1960158217849594135">የተጠቃሚ ስም ወደ የGoogle መለያዎ ይቀመጥ?</translation> <translation id="196040970347962278">መጀመሪያ የበይነመረብ ግንኙነትን ይመስርቱ</translation> <translation id="1962233722219655970">ይህ ገጽ በኮምፒውተርዎ ላይ የማይሰራ የቤተኛ ደንበኛ መተግበሪያ ይጠቀማል።</translation> <translation id="1963227389609234879">ሁሉንም አስወግድ</translation> @@ -903,6 +903,7 @@ <translation id="1984417487208496350">ምንም ጥበቃ የለም (አይመከርም)</translation> <translation id="1987317783729300807">መለያዎች</translation> <translation id="1989112275319619282">አስስ</translation> +<translation id="1990046457226896323">የንግግር ፋይሎች ወርደዋል</translation> <translation id="1990512225220753005">በዚህ ገጽ ላይ አቋራጮችን አታሳይ</translation> <translation id="1992397118740194946">ያልተዘጋጀ</translation> <translation id="1992924914582925289">ከመሣሪያ አስወግድ</translation> @@ -1048,7 +1049,6 @@ <translation id="2157474325782140681">ተጨማሪ ባሕሪያትን ለማግኘት፣ ከዚህ Chromebook ጋር እንዲሠራ የተዘጋጀውን የ Dell ተከላ ጣቢያ ይጠቀሙ።</translation> <translation id="215753907730220065">ከሙሉ ገጽ ዕይታ ውጣ</translation> <translation id="2157875535253991059">ይህ ገጽ አሁን ሙሉ ማያ ገጽ ነው።</translation> -<translation id="2160589599612868242">በእርስዎ <ph name="DEVICE_TYPE" /> ላይ ከእርስዎ ስልክ ማሳወቂያዎችን ይቀበሉ</translation> <translation id="216169395504480358">Wi-Fi ያክሉ...</translation> <translation id="2162155940152307086">አንዴ ከስምረት ቅንብሮች ከወጡ በኋላ ስምረት ይጀምራል</translation> <translation id="2162838847352058695">ጣቢያዎች ብዙ ፋይሎችን በራስ-ሰር እንዳያወረዱ አግድ</translation> @@ -1266,6 +1266,7 @@ <translation id="2399699884460174994">ማሳወቂያዎች በርተዋል</translation> <translation id="2399939490305346086">የደህንነት ቁልፍ በመለያ መግቢያ ውሂብ</translation> <translation id="2400664245143453337">አስቸኳይ ዝማኔ ያስፈልጋል</translation> +<translation id="2406153734066939945">ይህ መገለጫ እና ውሂቡ ይሰረዝ?</translation> <translation id="2408018932941436077">ካርድን በማስቀመጥ ላይ</translation> <translation id="2408955596600435184">የእርስዎን ፒን ያስገቡ</translation> <translation id="241082044617551207">ያልታወቀ ተሰኪ</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">ዴስክቶፕ</translation> <translation id="2526619973349913024">ዝማኔን ፈልግ</translation> <translation id="2527167509808613699">ማንኛውም አይነት ግንኙነት</translation> +<translation id="2530166226437958497">መላ መፈለግ</translation> <translation id="2532589005999780174">ባለከፍተኛ ንፅፅር ሁነታ</translation> <translation id="253434972992662860">&ላፍታ አቁም</translation> <translation id="2534460670861217804">ደህንነቱ የተጠበቀ የኤችቲቲፒ ተኪ</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">የአገልጋይ ምላሽን ምሥጠራ በመፍታት ጊዜ ችግር አጋጥሟል።</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">አገናኝ ክፈት በ...</translation> -<translation id="2889481634493693121">ማሳወቂያዎችን በስልክዎ ላይ ያብሩ</translation> <translation id="2889925978073739256">በማጠሪያ ያልተቀመጡ ተሰኪዎችን ማገዱን ቀጥል</translation> <translation id="2893168226686371498">ነባሪ አሳሽ</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 ጽሑፍ}one{# ጽሑፎች}other{# ጽሑፎች}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">ያንሱ፣ ከዚያ እንደገና ይንኩ</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />፦ ማሳመር ባለበት ቆሟል</translation> <translation id="3861638017150647085">የተጠቃሚ ስም «<ph name="USERNAME" />» አይገኝም</translation> +<translation id="3861977424605124250">ጅምር ላይ አሳይ</translation> <translation id="3862693525629180217">በአብሮገነብ ዳሳሽ በኩል አረጋግጥ</translation> <translation id="3862788408946266506">የ«kiosk_only» ዝርዝር ሰነድ አይነታ ያለው መተግበሪያ በChrome OS ኪዮስክ ሁኔታ ላይ መጫን አለበት።</translation> <translation id="3865414814144988605">የምስል ጥራት</translation> @@ -2800,7 +2802,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">የመሣሪያ ምዝግብ ማስታወሻ</translation> <translation id="4130207949184424187">አንድ ቅጥያ ከኦምኒቦክሱ ሆነው ሲፈልጉ የሚታየውን ገጽ ቀይሮታል።</translation> -<translation id="4130344535649650885">በGoogle መለያዎ ላይ የይለፍ ቃል ይቀመጥ?</translation> <translation id="4130750466177569591">እስማማለሁ</translation> <translation id="413121957363593859">አካላት</translation> <translation id="4131410914670010031">ጥቁር እና ነጭ</translation> @@ -3199,6 +3200,7 @@ <translation id="4627442949885028695">ከሌላ መሣሪያ ላይ ቀጥል</translation> <translation id="4628757576491864469">መሣሪያዎች</translation> <translation id="4628762811416793313">የLinux መያዣው ውቅረት አልተጠናቀቀም። እባክዎ እንደገና ይሞክሩ።</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> መገለጫን ክፈት</translation> <translation id="4633003931260532286">ቅጥያው ቢያንስ የ«<ph name="IMPORT_VERSION" />» ስሪት የሆነ «<ph name="IMPORT_NAME" />» ያስፈልገዋል፣ ነገር ግን «<ph name="INSTALLED_VERSION" />» ስሪት ብቻ ነው የተጫነው</translation> <translation id="4633757335284074492">ምትኬ ወደ Google Drive ያስቀምጡ። በማንኛውም ጊዜ ውሂብ በቀላሉ ወደነበሩበት ይመልሱ ወይም መሣሪያን ይቀይሩ። ይህ ምትኬ የመተግበሪያ ውሂብን ያካትታል። ምትኬዎች ወደ Google ተሰቅለዋል እና የልጅዎን የGoogle መለያ የይለፍ ቃል በመጠቀም ተመስጥረዋል።</translation> <translation id="4634575639321169635">ይህንን መሣሪያ ለስራ ወይም ለግል ጥቅም ያዋቅሩ</translation> @@ -3927,7 +3929,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="ATTACHMENTS" />ን ከ<ph name="DEVICE_NAME" /> መቀበል አልተሳካም}one{<ph name="ATTACHMENTS" />ን ከ<ph name="DEVICE_NAME" /> መቀበል አልተሳካም}other{<ph name="ATTACHMENTS" />ን ከ<ph name="DEVICE_NAME" /> መቀበል አልተሳካም}}</translation> <translation id="5502500733115278303">ከFirefox የመጣ</translation> <translation id="5502915260472117187">ልጅ</translation> -<translation id="5503858713116291452">ስልክዎ በአቅራቢያ እንዳለ፣ የተከፈተ መሆኑን እና ብሉቱዝ እና Wi-Fi እንደበራ ያረጋግጡ። ማዋቀርን ለማጠናቀቅ በእርስዎ ስልክ ላይ እርምጃዎችን ይከተሉ።</translation> <translation id="5503982651688210506"><ph name="HOST" /> የእርስዎን ካሜራ እንዲጠቀም እና እንዲያንቀሳቅስ መፍቀዱን ይቀጥሉ እና የእርስዎን ማይክሮፎን ይጠቀሙ</translation> <translation id="5505264765875738116">ጣቢያዎች ማሳወቂያዎችን ለመላክ መጠየቅ አይችሉም</translation> <translation id="5505307013568720083">ቀለም ጨርሷል</translation> @@ -3988,6 +3989,7 @@ <translation id="5565735124758917034">ገባሪ</translation> <translation id="5567989639534621706">የመተግበሪያ መሸጎጫዎች</translation> <translation id="5568069709869097550">መግባት አልተቻለም</translation> +<translation id="5571832155627049070">መገለጫዎን አብጅ</translation> <translation id="5572851009514199876">Chrome እርስዎ ይህን ጣቢያ እንዲደርሱ የተፈቀደልዎ መሆኑን ወይም አለመሆኑን እንዲያረጋግጥ እባክዎ ይጀምሩና ወደ Chrome ይግቡ።</translation> <translation id="5575473780076478375">የማንነትን የማያሳውቅ ቅጥያ፦ <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">በቅንጭብ ማሳያ ሁነታ ምዝገባ ጥያቄ ላይ ችግር አጋጥሟል።</translation> @@ -5457,6 +5459,7 @@ <translation id="7280649757394340890">የጽሑፍ-ወደ-ንግግር ድምጽ ቅንብሮች</translation> <translation id="7280877790564589615">ፈቃድ ተጠይቋል</translation> <translation id="7282992757463864530">የመረጃ አሞሌ</translation> +<translation id="7283555985781738399">የእንግዳ ሁነታ</translation> <translation id="7284411326658527427">እያንዳንዱ ሰው መለያቸውን የግል ማድረግ እና ውሂብን የግል አድርገው ማቆየት ይችላሉ።</translation> <translation id="7287143125007575591">መዳረሻ ተክልክሏል።</translation> <translation id="7287411021188441799">ወደነበረበት ነባሪ ዳራ መልስ</translation> @@ -5836,6 +5839,7 @@ <translation id="7716781361494605745">የNetscape እውቅና ማረጋገጫ ባለስልጣን መመሪያ ዩአርኤል</translation> <translation id="7717014941119698257">በማውረድ ላይ፦ <ph name="STATUS" /></translation> <translation id="7717134585801378441">ጣቢያዎች አካባቢዎን ሊጠይቁ ይችላሉ (ይመከራል)</translation> +<translation id="771721654176725387">ይሄ የአሰሳ ውሂብዎን ለዘለዓለም ከዚህ መሣሪያ ይሰርዘዋል። ውሂቡን መልሶ ለማግኘት፣ አስምርን ያብሩ እንደ</translation> <translation id="7717845620320228976">ዝማኔዎች ካለ ተመልከት</translation> <translation id="7719367874908701697">ገጽ አጉላ</translation> <translation id="7719588063158526969">የመሣሪያ ስም በጣም ረጅም ነው</translation> @@ -5872,6 +5876,7 @@ <translation id="7765158879357617694">ውሰድ</translation> <translation id="7765507180157272835">ብሉቱዝ እና Wi-Fi ያስፈልጋሉ</translation> <translation id="7766082757934713382">ራስ-ሰር መተግበሪያን እና የስርዓት ዝማኔዎችን ባሉበት በማቆም የአውታረ መረብ የውሂብ አጠቃቀም ለመቀነስ ይረዳል</translation> +<translation id="7766807826975222231">ጉብኝት ያድርጉ</translation> <translation id="7766838926148951335">ፈቃዶችን ተቀበል</translation> <translation id="7768507955883790804">እርስዎ ሲጎበኟቸው ጣቢያዎች ይህን ቅንብር በራስ-ሰር ይከተሉታል</translation> <translation id="7768770796815395237">ለውጥ</translation> @@ -6121,6 +6126,7 @@ <translation id="8017176852978888182">Linuxን የተጋሩ ማውጫዎች</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">አቋራጭ አርትዖት ተደርጎበታል</translation> +<translation id="8018298733481692628">ይህ መገለጫ ይሰረዝ?</translation> <translation id="8018313076035239964">ድር ጣቢያዎች ምን መረጃ መጠቀም እና ምን ይዘት ለእርስዎ ማሳየት እንደሚችሉ ይቆጣጠሩ</translation> <translation id="8023801379949507775">ቅጥያዎችን አሁን አዘምን</translation> <translation id="8026334261755873520">የአሰሳ ውሂብ አጽዳ</translation> @@ -6290,7 +6296,6 @@ <translation id="8211551284753798479">ልክ ያልኾነ PUK። እርስዎ <ph name="RETRIES" /> ቀሪ ሙከራዎች አሉዎት።</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ማውረድ በሂደት ላይ ነው}one{ውርዶች በሂደት ላይ ናቸው}other{ውርዶች በሂደት ላይ ናቸው}}</translation> <translation id="8213449224684199188">ወደ የፎቶ ሁነታ ተገብቷል</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> በጣም ከፍተኛ ጥራት ያለው የተጠበቀ ቪዲዮ እና ድምጽ ማጫወት እንዲችል መሣሪያዎን ለመለየት ይፈልጋል።</translation> <translation id="8214489666383623925">ፋይል ክፈት…</translation> <translation id="8214962590150211830">ይህን ሰው አስወግድ</translation> <translation id="8216351761227087153">ይመልከቱ</translation> @@ -6769,7 +6774,6 @@ <translation id="8774379074441005279">ወደነበረበት መመለስን ያረጋግጡ</translation> <translation id="8774934320277480003">የላይኛው ህዳግ</translation> <translation id="8775144690796719618">ልክ ያልሆነ ዩአርኤል</translation> -<translation id="8775163630211761057">የእርስዎን የAndroid ስልክ ምርጥ ነገሮች ወደ የእርስዎ <ph name="DEVICE_TYPE" /> ያስተላልፉ</translation> <translation id="8775653927968399786">{0,plural, =1{የእርስዎ <ph name="DEVICE_TYPE" /> በ# ሰከንድ ውስጥ በራስ-ሰር ይቆለፋል። <ph name="DOMAIN" /> የእርስዎን ዘመናዊ ካርድ እንደገባ እንዲቆይ ይፈልግብዎታል።}one{የእርስዎ <ph name="DEVICE_TYPE" /> በ# ሰከንዶች ውስጥ በራስ-ሰር ይቆለፋል። <ph name="DOMAIN" /> የእርስዎን ዘመናዊ ካርድ እንደገባ እንዲቆይ ይፈልግብዎታል።}other{የእርስዎ <ph name="DEVICE_TYPE" /> በ# ሰከንዶች ውስጥ በራስ-ሰር ይቆለፋል። @@ -6959,6 +6963,7 @@ <translation id="8973596347849323817">ይህ መሣሪያ ከእርስዎ ፍላጎቶች ጋር እንዲጣጣም ማበጀት ይችላሉ። እነዚህ የተደራሽነት ባህሪያት በኋላ ላይ በቅንብሮች ውስጥ ሊቀየሩ ይችላሉ።</translation> <translation id="897414447285476047">በግንኙነት ችግር ምክንያት መድረሻ ፋይል አልተጠናቀቀም።</translation> <translation id="897525204902889653">የማግለያ አገልግሎት</translation> +<translation id="8975396729541388937">በተቀበሏቸው ኢሜሎች ውስጥ ያለውን አገናኝ ጠቅ በማድረግ በማንኛውም ጊዜ ከደንበኝነት ምዝገባ ይውጡ።</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{«<ph name="TAB_TITLE" />»}=1{«<ph name="TAB_TITLE" />» እና 1 ሌላ ትር}one{«<ph name="TAB_TITLE" />» እና # ሌሎች ትሮች}other{«<ph name="TAB_TITLE" />» እና # ሌሎች ትሮች}}</translation> <translation id="8977811652087512276">ትክክል ያልሆነ የይለፍ ቃል ወይም የተበላሸ ፋይል</translation> <translation id="8978154919215542464">በርቷል - ሁሉንም ነገር አስምር</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index 88be12c..302cc8fd 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -342,6 +342,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{ما مِن كلمات مرور محتمَل تعرّضها للاختراق.}=1{كلمة مرور واحدة محتمَل تعرّضها للاختراق}two{كلمتا مرور ({NUM_COMPROMISED}) محتمَل تعرّضهما للاختراق}few{{NUM_COMPROMISED} كلمات مرور محتمَل تعرّضها للاختراق}many{{NUM_COMPROMISED} كلمة مرور محتمَل تعرّضها للاختراق}other{{NUM_COMPROMISED} كلمة مرور محتمَل تعرّضها للاختراق}}</translation> <translation id="1380028686461971526">الاتصال التلقائي بالشبكة</translation> <translation id="1380436189840894976">هل تريد الخروج من وضع التصفح المتخفي على أي حال؟</translation> +<translation id="1383597849754832576">يتعذّر تنزيل ملفات ميزة "النسخ النصي التلقائي". يُرجى إعادة المحاولة لاحقًا.</translation> <translation id="1383861834909034572">فتح الملفّ عند انتهاء التحميل.</translation> <translation id="1383876407941801731">البحث</translation> <translation id="1386791642444521222">تفعيل بطاقة SIM</translation> @@ -880,7 +881,6 @@ <translation id="1954813140452229842">حدث خطأ في تحميل المشاركة. يُرجى التحقُّق من بيانات الاعتماد وإعادة المحاولة.</translation> <translation id="1956050014111002555">احتوى الملف على شهادات متعددة، لم يتم استيراد أي منها:</translation> <translation id="1956390763342388273">سيؤدي ذلك إلى تحميل جميع الملفات من "<ph name="FOLDER_PATH" />"، يُرجى تجنُّب ذلك إذا لم تكن واثقًا من الموقع.</translation> -<translation id="1960158217849594135">هل تريد حفظ اسم المستخدم في حسابك على Google؟</translation> <translation id="196040970347962278">يُرجى الاتصال بالإنترنت أولاً.</translation> <translation id="1962233722219655970">هذه الصفحة تستخدم تطبيق Native Client وهو لا يعمل على جهاز الكمبيوتر التابع لك.</translation> <translation id="1963227389609234879">إزالة كلمات المرور كلّها</translation> @@ -906,6 +906,7 @@ <translation id="1984417487208496350">بلا حماية (غير مُستحسَن)</translation> <translation id="1987317783729300807">حسابات</translation> <translation id="1989112275319619282">تصفّح</translation> +<translation id="1990046457226896323">تم تنزيل ملفات ميزة "النسخ النصي التلقائي".</translation> <translation id="1990512225220753005">عدم إظهار الاختصارات في هذه الصفحة</translation> <translation id="1992397118740194946">لم يتم تعيينه</translation> <translation id="1992924914582925289">إزالة من الجهاز</translation> @@ -1051,7 +1052,6 @@ <translation id="2157474325782140681">للحصول على ميزات إضافية، يُرجى استخدام محطة إرساء Dell المصمّمة للعمل مع جهاز Chromebook هذا.</translation> <translation id="215753907730220065">إنهاء وضع ملء الشاشة</translation> <translation id="2157875535253991059">هذه الصفحة في وضع ملء الشاشة الآن.</translation> -<translation id="2160589599612868242">تلقّي الإشعارات من هاتفك على الجهاز <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">إضافة Wi-Fi...</translation> <translation id="2162155940152307086">ستبدأ المزامنة بعد مغادرتك إعدادات المزامنة</translation> <translation id="2162838847352058695">منع المواقع الإلكترونية من تنزيل الملفات المتعدّدة تلقائيًا</translation> @@ -1269,6 +1269,7 @@ <translation id="2399699884460174994">تم تفعيل الإشعارات</translation> <translation id="2399939490305346086">بيانات تسجيل الدخول على مفتاح الأمان</translation> <translation id="2400664245143453337">مطلوب التحديث فورًا</translation> +<translation id="2406153734066939945">هل تريد حذف هذا الملف الشخصي وكل بياناته؟</translation> <translation id="2408018932941436077">جارٍ حفظ البطاقة</translation> <translation id="2408955596600435184">إدخال رقم التعريف الشخصي</translation> <translation id="241082044617551207">مكوّن إضافي غير محدّد</translation> @@ -1387,6 +1388,7 @@ <translation id="2526590354069164005">سطح المكتب</translation> <translation id="2526619973349913024">التحقق من وجود تحديث</translation> <translation id="2527167509808613699">جميع أنواع الاتصالات</translation> +<translation id="2530166226437958497">تحديد المشاكل وحلّها</translation> <translation id="2532589005999780174">وضع التباين العالي</translation> <translation id="253434972992662860">إي&قاف مؤقت</translation> <translation id="2534460670861217804">خادم وكيل HTTP الآمن</translation> @@ -1705,7 +1707,6 @@ <translation id="2885729872133513017">حدثت مشكلة في فك رمز استجابة الخادم.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">فتح الرابط باستخدام...</translation> -<translation id="2889481634493693121">تفعيل الإشعارات على هاتفك</translation> <translation id="2889925978073739256">متابعة حظر المكونات الإضافية غير المحمية</translation> <translation id="2893168226686371498">المتصفح التلقائي</translation> <translation id="2893917546370257247">{COUNT,plural, =1{نص واحد}zero{# نص}two{نصّان}few{# نصوص}many{# نصًّا}other{# نص}}</translation> @@ -2566,6 +2567,7 @@ <translation id="3857807444929313943">رفع الإصبع، ثم اللمس مرة أخرى</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: تم إيقاف المزامنة مؤقتًا</translation> <translation id="3861638017150647085">اسم المستخدم "<ph name="USERNAME" />" غير متوفر.</translation> +<translation id="3861977424605124250">إظهار عند بدء التشغيل</translation> <translation id="3862693525629180217">التحقُّق عبر جهاز الاستشعار المضمَّن</translation> <translation id="3862788408946266506">يجب تثبيت التطبيق الذي يحمل سمة البيان "kiosk_only" في وضع الكشك على نظام تشغيل Chrome.</translation> <translation id="3865414814144988605">درجة الدقة</translation> @@ -2805,7 +2807,6 @@ <translation id="412730574613779332">إسباندكس</translation> <translation id="4130199216115862831">سجل الجهاز</translation> <translation id="4130207949184424187">غيّرت هذه الإضافة الصفحة التي تظهر عند البحث في المربع متعدد الاستخدامات.</translation> -<translation id="4130344535649650885">هل تريد حفظ كلمة المرور في حسابك على Google؟</translation> <translation id="4130750466177569591">أوافق</translation> <translation id="413121957363593859">المكونات</translation> <translation id="4131410914670010031">أبيض وأسود</translation> @@ -3204,6 +3205,7 @@ <translation id="4627442949885028695">متابعة من جهاز آخر</translation> <translation id="4628757576491864469">الأجهزة</translation> <translation id="4628762811416793313">لم يكتمل إعداد حاوية نظام التشغيل Linux. يُرجى إعادة المحاولة.</translation> +<translation id="4629521233550547305">فتح ملف <ph name="PROFILE_NAME" /> الشخصي</translation> <translation id="4633003931260532286">تتطلب الإضافة "<ph name="IMPORT_NAME" />" بإصدار لا يقل عن "<ph name="IMPORT_VERSION" />" لكن يتم تثبيت "<ph name="INSTALLED_VERSION" />" فقط.</translation> <translation id="4633757335284074492">يمكنك الاحتفاظ بنسخة احتياطية في Google Drive. ويمكنك استعادة البيانات أو تبديل الجهاز بسهولة وفي أي وقت. تتضمّن هذه النسخة الاحتياطية بيانات التطبيق. ويتم تحميل النسخ الاحتياطية إلى Google وترميزها باستخدام كلمة مرور حسابك الفرعي على Google.</translation> <translation id="4634575639321169635">يمكنك إعداد هذا الجهاز لاستخدامه في العمل أو للاستخدام الشخصي.</translation> @@ -3933,7 +3935,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{تعذّر استلام <ph name="ATTACHMENTS" /> من جهاز <ph name="DEVICE_NAME" />}zero{تعذّر استلام <ph name="ATTACHMENTS" /> من جهاز <ph name="DEVICE_NAME" />}two{تعذّر استلام <ph name="ATTACHMENTS" /> من جهاز <ph name="DEVICE_NAME" />}few{تعذّر استلام <ph name="ATTACHMENTS" /> من جهاز <ph name="DEVICE_NAME" />}many{تعذّر استلام <ph name="ATTACHMENTS" /> من جهاز <ph name="DEVICE_NAME" />}other{تعذّر استلام <ph name="ATTACHMENTS" /> من جهاز <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">تمّ الاستيراد من متصفّح فايرفوكس</translation> <translation id="5502915260472117187">طفل</translation> -<translation id="5503858713116291452">يُرجى التأكُّد من أن هاتفك قريب وغير مُقفل وتم تفعيل بلوتوث وWi-Fi فيه. ويُرجى اتّباع الخطوات الموضَّحة على هاتفك لإكمال الإعداد.</translation> <translation id="5503982651688210506">مواصلة السماح للمضيف <ph name="HOST" /> باستخدام الكاميرا وتحريكها واستخدام الميكروفون</translation> <translation id="5505264765875738116">منع المواقع الإلكترونية من طلب إرسال إشعارات</translation> <translation id="5505307013568720083">نفد الحبر</translation> @@ -3994,6 +3995,7 @@ <translation id="5565735124758917034">نشط</translation> <translation id="5567989639534621706">ذاكرة التخزين المؤقت للتطبيقات</translation> <translation id="5568069709869097550">تعذّر الدخول</translation> +<translation id="5571832155627049070">تخصيص ملفك الشخصي</translation> <translation id="5572851009514199876">يُرجى البدء وتسجيل الدخول إلى Chrome لكي يتأكد Chrome مما إذا كان مسموحًا لك الوصول إلى الموقع الإلكتروني هذا أم لا.</translation> <translation id="5575473780076478375">إضافة وضع التصفح المتخفي: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">حدثت مشكلة في طلب التسجيل التجريبي.</translation> @@ -5464,6 +5466,7 @@ <translation id="7280649757394340890">إعدادات الصوت في ميزة تحويل النص إلى كلام</translation> <translation id="7280877790564589615">تمّ طلب إذن</translation> <translation id="7282992757463864530">شريط المعلومات</translation> +<translation id="7283555985781738399">وضع الضيف</translation> <translation id="7284411326658527427">يمكن لكل شخص تخصيص حسابه والحفاظ على خصوصية بياناته.</translation> <translation id="7287143125007575591">تم رفض الدخول</translation> <translation id="7287411021188441799">استعادة الخلفية التلقائية</translation> @@ -5843,6 +5846,7 @@ <translation id="7716781361494605745">عنوان URL لسياسة المرجع المصدق لـ Netscape</translation> <translation id="7717014941119698257">تنزيل: <ph name="STATUS" /></translation> <translation id="7717134585801378441">السماح للمواقع الإلكترونية بطلب موقعك الجغرافي (مُستحسَن)</translation> +<translation id="771721654176725387">سيؤدي هذا الإجراء إلى حذف بيانات التصفُّح من هذا الجهاز نهائيًا. لاسترداد البيانات، يُرجى تفعيل المزامنة كـ</translation> <translation id="7717845620320228976">البحث عن تحديثات</translation> <translation id="7719367874908701697">تكبير/تصغير الصفحة</translation> <translation id="7719588063158526969">اسم الجهاز طويل جدًا.</translation> @@ -5879,6 +5883,7 @@ <translation id="7765158879357617694">نقل</translation> <translation id="7765507180157272835">يجب تفعيل البلوتوث وشبكة Wi-Fi</translation> <translation id="7766082757934713382">تساعدك الشبكة التي تفرض تكلفة استخدام في تخفيض استخدام بيانات الشبكة من خلال إيقاف التحديثات التلقائية للنظام والتطبيقات بشكل مؤقت.</translation> +<translation id="7766807826975222231">إجراء جولة</translation> <translation id="7766838926148951335">قبول الأذونات</translation> <translation id="7768507955883790804">ستتبع المواقع الإلكترونية هذا الإعداد تلقائيًا عند زيارتك لها.</translation> <translation id="7768770796815395237">تغيير</translation> @@ -6123,6 +6128,7 @@ <translation id="8017176852978888182">مجلدات Linux التي تمت مشاركتها</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">تمّ تعديل الاختصار</translation> +<translation id="8018298733481692628">هل تريد حذف هذا الملف الشخصي؟</translation> <translation id="8018313076035239964">تتحكّم هذه الإعدادات في المعلومات التي يمكن أن تستخدمها المواقع الإلكترونية والمحتوى الذي يمكن أن تعرضه لك</translation> <translation id="8023801379949507775">تحديث الإضافات الآن</translation> <translation id="8026334261755873520">محو بيانات التصفُّح</translation> @@ -6293,7 +6299,6 @@ <translation id="8211551284753798479">رمز PUK غير صحيح. يتبقى لديك <ph name="RETRIES" /> محاولة.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{جارٍ تنزيل عنصر واحد}zero{جارٍ تنزيل عدّة عناصر}two{جارِ تنزيل عنصرين}few{جارٍ تنزيل عدّة عناصر}many{جارٍ تنزيل عدّة عناصر}other{جارٍ تنزيل عدّة عناصر}}</translation> <translation id="8213449224684199188">تم الدخول إلى وضع الصور</translation> -<translation id="8213866992824776555">يريد <ph name="DOMAIN" /> تحديد هوية جهازك ليتمكّن من تشغيل الفيديوهات والملفات الصوتية المحمية بأعلى جودة ممكنة.</translation> <translation id="8214489666383623925">فتح ملف...</translation> <translation id="8214962590150211830">إزالة هذا الشخص</translation> <translation id="8216351761227087153">مشاهدة</translation> @@ -6772,7 +6777,6 @@ <translation id="8774379074441005279">تأكيد الاستعادة</translation> <translation id="8774934320277480003">الهامش العلوي</translation> <translation id="8775144690796719618">عنوان URL غير صالح</translation> -<translation id="8775163630211761057">يمكنك الحصول على أفضل ما في هاتفك الذي يعمل بنظام التشغيل Android على الجهاز <ph name="DEVICE_TYPE" />.</translation> <translation id="8775653927968399786">{0,plural, =1{سيتم قفل الجهاز <ph name="DEVICE_TYPE" /> تلقائيًا بعد ثانية واحدة. يتطلَّب <ph name="DOMAIN" /> منك الإبقاء على بطاقتك الذكية مُدخَلة.}zero{سيتم قفل الجهاز <ph name="DEVICE_TYPE" /> تلقائيًا بعد # ثانية. يتطلَّب <ph name="DOMAIN" /> منك الإبقاء على بطاقتك الذكية مُدخَلة.}two{سيتم قفل الجهاز <ph name="DEVICE_TYPE" /> تلقائيًا بعد ثانيتَين. @@ -6965,6 +6969,7 @@ <translation id="8973596347849323817">يمكنك تخصيص هذا الجهاز للتوافق مع احتياجاتك. ويمكن تغيير ميزات إمكانية الوصول هذه لاحقًا من خلال الإعدادات.</translation> <translation id="897414447285476047">ملف الوجهة غير مكتمل بسبب حدوث مشكلة في الاتصال.</translation> <translation id="897525204902889653">خدمة وحدة العزل</translation> +<translation id="8975396729541388937">يمكنك إلغاء الاشتراك في أي وقت من خلال النقر على الرابط المتوفّر في الرسائل الإلكترونية التي تتلقّاها.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" وعلامة تبويب واحدة أخرى}two{"<ph name="TAB_TITLE" />" وعلامتا تبويب أخريان}few{"<ph name="TAB_TITLE" />" و# علامات تبويب أخرى}many{"<ph name="TAB_TITLE" />" و# علامة تبويب أخرى}other{"<ph name="TAB_TITLE" />" و# علامة تبويب أخرى}}</translation> <translation id="8977811652087512276">كلمة مرور غير صالحة أو ملف تالف</translation> <translation id="8978154919215542464">تشغيل - مزامنة كل شيء</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index 099a5e1..e4e20e80 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{কোনো হেক হোৱা পাছৱৰ্ড নাই}=1{১ টা হেক হোৱা পাছৱৰ্ড}one{{NUM_COMPROMISED} টা হেক হোৱা পাছৱৰ্ড}other{{NUM_COMPROMISED} টা হেক হোৱা পাছৱৰ্ড}}</translation> <translation id="1380028686461971526">নেটৱৰ্কৰ সৈতে স্বয়ংক্ৰিয়ভাৱে সংযোগ কৰক</translation> <translation id="1380436189840894976">যিয়েই কি নহ’লেও ইনক’গনিট’ ম’ডৰ বন্ধ কৰিবনে?</translation> +<translation id="1383597849754832576">কথন ফাইল ডাউনল’ড কৰিব নোৱাৰি। পাছত পুনৰ চেষ্টা কৰক।</translation> <translation id="1383861834909034572">সম্পূৰ্ণ হ'লে খোলা যাব</translation> <translation id="1383876407941801731">Search</translation> <translation id="1386791642444521222">কায়িক ছিম সক্ৰিয় কৰক</translation> @@ -874,7 +875,6 @@ <translation id="1954813140452229842">শ্বেয়াৰ মাউণ্ট কৰোঁতে আসোঁৱাহ হ’ল। অনুগ্ৰহ কৰি আপোনাৰ ক্ৰেডেনশ্বিয়েলসমূহ পৰীক্ষা কৰি পুনৰ চেষ্টা কৰক।</translation> <translation id="1956050014111002555">ফাইলটোত একাধিক প্ৰমাণপত্ৰ আছে আৰু তাৰে কোনো প্ৰমাণপত্ৰ আমদানি কৰা হোৱা নাই:</translation> <translation id="1956390763342388273">এই কাৰ্যই "<ph name="FOLDER_PATH" />"ৰ পৰা সকলো ফাইল আপল’ড কৰিব৷ আপুনি ছাইটটোক বিশ্বাস কৰিলেহে কেৱল এই কাৰ্যটো কৰক৷</translation> -<translation id="1960158217849594135">আপোনাৰ Google একাউণ্টত ব্যৱহাৰকাৰীৰ নাম ছেভ কৰিবনে?</translation> <translation id="196040970347962278">প্ৰথমে এটা ইণ্টাৰনেট সংযোগ স্থাপন কৰক</translation> <translation id="1962233722219655970">এই পৃষ্ঠাটোৱে এটা স্থানীয় ক্লায়েণ্ট এপ্ ব্যৱহাৰ কৰে যিটোৱে আপোনাৰ কম্পিউটাৰত কাম নকৰে।</translation> <translation id="1963227389609234879">সকলো আঁতৰাওক</translation> @@ -900,6 +900,7 @@ <translation id="1984417487208496350">কোনো সুৰক্ষা নাই (চুপাৰিছ কৰা নহয়)</translation> <translation id="1987317783729300807">একাউণ্টসমূহ</translation> <translation id="1989112275319619282">ব্ৰাউজ কৰক</translation> +<translation id="1990046457226896323">কথনৰ ফাইল ডাউনল’ড কৰা হৈছে</translation> <translation id="1990512225220753005">এই পৃষ্ঠাটোত শ্বৰ্টকাটসমূহ নেদেখুৱাব</translation> <translation id="1992397118740194946">ছেট কৰা হোৱা নাই</translation> <translation id="1992924914582925289">ডিভাইচটোৰ পৰা আঁতৰাওক</translation> @@ -1045,7 +1046,6 @@ <translation id="2157474325782140681">অতিৰিক্ত সুবিধাসমূহ পাবলৈ এই Chromebookৰ সৈতে কাম কৰিবলৈ ডিজাইন কৰা এটা Dell ড’কিং ষ্টেচন ব্যৱহাৰ কৰক।</translation> <translation id="215753907730220065">পূৰ্ণ স্ক্ৰীণৰ পৰা বাহিৰ হওক</translation> <translation id="2157875535253991059">এই পৃষ্ঠাটো এতিয়া সম্পূর্ণ স্ক্ৰীণত আছে।</translation> -<translation id="2160589599612868242">আপোনাৰ <ph name="DEVICE_TYPE" />ত আপোনাৰ ফ’নৰ পৰা জাননী লাভ কৰক</translation> <translation id="216169395504480358">ৱাই-ফাই যোগ কৰক…</translation> <translation id="2162155940152307086">আপুনি ছিংকৰ ছেটিংসমূহৰ পৰা আঁতৰি যোৱাৰ লগে লগে ছিংক আৰম্ভ হ‘ব</translation> <translation id="2162838847352058695">ছাইটসমূহক স্বয়ংক্ৰিয়ভাৱে একাধিক ফাইল ডাউনল'ড কৰাৰ পৰা অৱৰোধ কৰক</translation> @@ -1263,6 +1263,7 @@ <translation id="2399699884460174994">জাননী সক্ৰিয় কৰা হ’ল</translation> <translation id="2399939490305346086">সুৰক্ষা চাবিৰ ছাইন-ইন ডেটা</translation> <translation id="2400664245143453337">তাৎক্ষণিকভাৱে আপডে’ট কৰাৰ প্ৰয়োজন</translation> +<translation id="2406153734066939945">এই প্ৰ’ফাইলটো আৰু ইয়াৰ ডেটা মচিবনে?</translation> <translation id="2408018932941436077">কাৰ্ডখন ছেভ কৰি থকা হৈছে</translation> <translation id="2408955596600435184">আপোনাৰ পিন দিয়ক</translation> <translation id="241082044617551207">অজ্ঞাত প্লাগইন</translation> @@ -1381,6 +1382,7 @@ <translation id="2526590354069164005">ডেস্কটপ</translation> <translation id="2526619973349913024">আপডে’ট আছে নেকি চাওক</translation> <translation id="2527167509808613699">যিকোনো প্ৰকাৰৰ সংযোগ</translation> +<translation id="2530166226437958497">সমস্যা নিবাৰণ</translation> <translation id="2532589005999780174">হাই কনট্ৰাষ্ট ম’ড</translation> <translation id="253434972992662860">&পজ কৰক</translation> <translation id="2534460670861217804">HTTP প্ৰক্সি সুৰক্ষিত কৰক</translation> @@ -1698,7 +1700,6 @@ <translation id="2885729872133513017">ছার্ভাৰৰ সঁহাৰি ডিক'ড কৰোঁতে সমস্যাৰ সৃষ্টি হৈছিল।</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">ইয়াৰ এটাৰ জৰিয়তে লিংকটো খোলক...</translation> -<translation id="2889481634493693121">আপোনাৰ ফ’নত জাননী অন কৰক</translation> <translation id="2889925978073739256">আনছেণ্ডবক্স কৰা প্লাগইন অৱৰোধ কৰি থাকক</translation> <translation id="2893168226686371498">ডিফ’ল্ট ব্ৰাউজাৰ</translation> <translation id="2893917546370257247">{COUNT,plural, =1{১ টা পাঠ}one{# টা পাঠ}other{# টা পাঠ}}</translation> @@ -2558,6 +2559,7 @@ <translation id="3857807444929313943">ওপৰলৈ উঠাওক, তাৰ পিছত পুনৰ স্পৰ্শ কৰক</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: ছিংক পজ হ'ল</translation> <translation id="3861638017150647085">"<ph name="USERNAME" />" ব্যৱহাৰকাৰীৰ নামটো উপলব্ধ নহয়</translation> +<translation id="3861977424605124250">আৰম্ভ হওঁতে দেখুৱাওক</translation> <translation id="3862693525629180217">অন্তনির্মিত ছেন্সৰৰ দ্বাৰা সত্যাপন কৰক</translation> <translation id="3862788408946266506">’kiosk_only’ মেনিফেষ্ট বৈশিষ্ট থকা এপক Chrome OS কিঅ’স্ক ম’ডতেই ইনষ্টল কৰিব লাগিব</translation> <translation id="3865414814144988605">ৰিজ'লিউশ্বন</translation> @@ -2797,7 +2799,6 @@ <translation id="412730574613779332">স্পানডেক্স</translation> <translation id="4130199216115862831">ডিভাইচ ল’গ</translation> <translation id="4130207949184424187">এই এক্সটেনশ্বনে আপুনি Omniboxৰ পৰা সন্ধান কৰিলে দেখুওৱা পৃষ্ঠাটো সলনি কৰিছে।</translation> -<translation id="4130344535649650885">আপোনাৰ Google একাউণ্টত পাছৱৰ্ড ছেভ কৰিবনে?</translation> <translation id="4130750466177569591">মই সন্মত</translation> <translation id="413121957363593859">উপাদানসমূহ</translation> <translation id="4131410914670010031">ক’লা আৰু বগা</translation> @@ -3195,6 +3196,7 @@ <translation id="4627442949885028695">অন্য ডিভাইচৰ পৰা অব্যাহত ৰাখক</translation> <translation id="4628757576491864469">ডিভাইচ</translation> <translation id="4628762811416793313">Linux কণ্টেনাৰৰ ছেট আপ সম্পূর্ণ হোৱা নাছিল। অনুগ্ৰহ কৰি পুনৰ চেষ্টা কৰক।</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> প্ৰ’ফাইলটো খোলক</translation> <translation id="4633003931260532286">এক্সটেনশ্বনৰ বাবে অতিকমেও "<ph name="IMPORT_VERSION" />" সংস্কৰণৰ সৈতে "<ph name="IMPORT_NAME" />"ৰ প্ৰয়োজন কিন্তু কেৱল "<ph name="INSTALLED_VERSION" />" সংস্কৰণটো ইনষ্টল কৰা হৈছে</translation> <translation id="4633757335284074492">Google Driveত বেক আপ লওক। ডেটা সহজে পুনঃস্থাপন কৰক অথবা যিকোনো সময়তে ডিভাইচ সলনি কৰক। এই বেকআপত এপ্ ডেটা আছে। বেকআপসমূহ Googleত আপল’ড কৰা হয় আৰু আপোনাৰ Google একাউণ্টৰ পাছৱৰ্ড ব্যৱহাৰ কৰি এনক্ৰিপ্ট কৰা হয়।</translation> <translation id="4634575639321169635">কৰ্মস্থানৰ কামৰ বাবে অথবা ব্যক্তিগত ব্যৱহাৰৰ বাবে এই ডিভাইচটো ছেট আপ কৰক</translation> @@ -3922,7 +3924,6 @@ <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="5503858713116291452">নিশ্চিত হৈ লওক যে আপোনাৰ ফ’নটো ওচৰত আছে, আনলক কৰা আছে আৰু ব্লুটুথ আৰু ৱাই-ফাই অন কৰা আছে। ছেটআপ সম্পূৰ্ণ কৰিবলৈ আপোনাৰ ফ’নত পদক্ষেপসমূহ অনুসৰণ কৰক।</translation> <translation id="5503982651688210506"><ph name="HOST" />ক আপোনাৰ কেমেৰা ব্যৱহাৰ আৰু লৰচৰ কৰিবলৈ আৰু আপোনাৰ মাইক্ৰ’ফ’ন ব্যৱহাৰ কৰিবলৈ দিয়াটো অব্যাহত ৰাখক</translation> <translation id="5505264765875738116">ছাইটসমূহে জাননী পঠিয়াবলৈ ক’ব নোৱাৰে</translation> <translation id="5505307013568720083">চিয়াহী শেষ হৈছে</translation> @@ -3983,6 +3984,7 @@ <translation id="5565735124758917034">সক্ৰিয়</translation> <translation id="5567989639534621706">এপ্লিকেশ্বন কেশ্বসমূহ</translation> <translation id="5568069709869097550">ছাইন ইন কৰিব নোৱাৰি</translation> +<translation id="5571832155627049070">আপোনাৰ প্ৰ’ফাইলটো কাষ্টমাইজ কৰক</translation> <translation id="5572851009514199876">অনুগ্ৰহ কৰি আৰম্ভ কৰি Chromeত ছাইন ইন কৰক যাতে Chromeএ আপুনি এই ছাইটটো এক্সেছ কৰিব পাৰেনে নোৱাৰে চাব পাৰে।</translation> <translation id="5575473780076478375">ইনক’গনিট’ এক্সটেনশ্বন: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">ডেম’ পঞ্জীয়নৰ অনুৰোধৰ ক্ষেত্ৰত এটা সমস্যা হৈছে।</translation> @@ -5446,6 +5448,7 @@ <translation id="7280649757394340890">পাঠৰ পৰা কথন-ৰ কণ্ঠস্বৰৰ ছেটিংসমূহ</translation> <translation id="7280877790564589615">অনুমতি বিচাৰি অনুৰোধ কৰা হৈছে</translation> <translation id="7282992757463864530">ইনফ’বাৰ</translation> +<translation id="7283555985781738399">অতিথি ম’ড</translation> <translation id="7284411326658527427">প্ৰতিগৰাকী ব্যক্তিয়ে তেওঁৰ একাউণ্ট ব্যক্তিগতকৰণ কৰিব পাৰে আৰু ডেটাখিনি ব্যক্তিগত কৰি ৰাখিব পাৰে।</translation> <translation id="7287143125007575591">এক্সেছ অস্বীকাৰ কৰা হৈছে।</translation> <translation id="7287411021188441799">ডিফ'ল্ট নেপথ্য পুনঃস্থাপন কৰক</translation> @@ -5823,6 +5826,7 @@ <translation id="7716781361494605745">Netscape প্ৰমাণীকৰণ কৰ্তৃপক্ষ নীতিৰ URL</translation> <translation id="7717014941119698257">ডাউনল’ড কৰি থকা হৈছে: <ph name="STATUS" /></translation> <translation id="7717134585801378441">ছাইটসমূহে আপোনাৰ অৱস্থান বিচাৰিব পাৰে (চুপাৰিছ কৰা)</translation> +<translation id="771721654176725387">এই কাৰ্যই এই ডিভাইচটোৰ পৰা আপোনাৰ ব্ৰাউজিঙৰ ডেটা স্থায়ীভাৱে মচি পেলাব। ডেটা পুনৰুদ্ধাৰ কৰিবলৈ এই হিচাপে ছিংক অন কৰক</translation> <translation id="7717845620320228976">আপডে’ট আছে নেকি চাওক</translation> <translation id="7719367874908701697">পৃষ্ঠাৰ জুম</translation> <translation id="7719588063158526969">ডিভাইচৰ নাম বহুত দীঘল</translation> @@ -5859,6 +5863,7 @@ <translation id="7765158879357617694">আঁতৰাওক</translation> <translation id="7765507180157272835">ব্লুটুথ আৰু ৱাই-ফাইৰ প্ৰয়োজন</translation> <translation id="7766082757934713382">স্বয়ংক্ৰিয় এপ্ আৰু ছিষ্টেম আপডে’টসমূহ পজ কৰি নেটৱৰ্ক ডেটাৰ ব্যৱহাৰ হ্ৰাস কৰাত সহায় কৰে</translation> +<translation id="7766807826975222231">ভ্ৰমণৰ অভিজ্ঞতা লওক</translation> <translation id="7766838926148951335">অনুমতিসমূহ গ্ৰহণ কৰক</translation> <translation id="7768507955883790804">আপুনি ছাইটসমূহ খুলিলে সেইবোৰে এই ছেটিংটো স্বয়ংক্ৰিয়ভাৱে মানি চলে</translation> <translation id="7768770796815395237">সলনি কৰক</translation> @@ -6102,6 +6107,7 @@ <translation id="8016266267177410919">অস্থায়ী ষ্ট’ৰেজ</translation> <translation id="8017176852978888182">Linuxৰ শ্বেয়াৰ কৰা ডাইৰেক্টৰীসমূহ</translation> <translation id="8017679124341497925">শ্বৰ্টকাটত সাল-সলনি কৰা হ’ল</translation> +<translation id="8018298733481692628">এই প্ৰ’ফাইলটো মচিবনে?</translation> <translation id="8018313076035239964">ৱেবছাইটবোৰে কেনে ধৰণৰ তথ্য ব্যৱহাৰ কৰিব পাৰে বা আপোনাক কেনে সমল দেখুৱাব পাৰে সেইয়া নিয়ন্ত্ৰণ কৰক</translation> <translation id="8023801379949507775">এতিয়াই এক্সটেনশ্বন আপডে'ট কৰক</translation> <translation id="8026334261755873520">ব্ৰাউজিং ডেটা মচক</translation> @@ -6272,7 +6278,6 @@ <translation id="8211551284753798479">অমান্য PUK। আপোনাৰ <ph name="RETRIES" /> টা প্ৰয়াস বাকী আছে।</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ডাউনল’ড হৈ আছে}one{ডাউনল’ড হৈ আছে}other{ডাউনল’ড হৈ আছে}}</translation> <translation id="8213449224684199188">ফট’ ম’ডত ৰখা হৈছে</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" />এ আপোনাৰ ডিভাইচটো চিনাক্ত কৰিব বিচাৰিছে যাতে ই উচ্চতম গুণগত মানৰ সুৰক্ষিত ভিডিঅ’ আৰু অডিঅ’ প্লে’ কৰিব পাৰে।</translation> <translation id="8214489666383623925">ফাইল খোলক...</translation> <translation id="8214962590150211830">এই ব্যৱহাৰকাৰীজনক আঁতৰাওক</translation> <translation id="8216351761227087153">চাওক</translation> @@ -6750,7 +6755,6 @@ <translation id="8774379074441005279">পুনঃস্থাপন নিশ্চিত কৰক</translation> <translation id="8774934320277480003">শীৰ্ষ মাৰ্জিন</translation> <translation id="8775144690796719618">অমান্য URL</translation> -<translation id="8775163630211761057">আপোনাৰ <ph name="DEVICE_TYPE" />লৈ আপোনাৰ Android ফ’নৰ সৰ্বশ্ৰেষ্ঠ সুবিধা প্ৰদান কৰক</translation> <translation id="8775653927968399786">{0,plural, =1{আপোনাৰ <ph name="DEVICE_TYPE" /> # ছেকেণ্ডত স্বয়ংক্ৰিয়ভাৱে অৱৰোধ কৰা হ'ব। <ph name="DOMAIN" />ৰ বাবে আপুনি নিজৰ স্মাৰ্ট কাৰ্ডখন ভৰাই ৰখাৰ আৱশ্যক।}one{আপোনাৰ <ph name="DEVICE_TYPE" /> # ছেকেণ্ডত স্বয়ংক্ৰিয়ভাৱে অৱৰোধ কৰা হ'ব। <ph name="DOMAIN" />ৰ বাবে আপুনি নিজৰ স্মাৰ্ট কাৰ্ডখন ভৰাই ৰখাৰ আৱশ্যক।}other{আপোনাৰ <ph name="DEVICE_TYPE" /> # ছেকেণ্ডত স্বয়ংক্ৰিয়ভাৱে অৱৰোধ কৰা হ'ব। @@ -6940,6 +6944,7 @@ <translation id="8973596347849323817">আপুনি এই ডিভাইচটো আপোনাৰ প্ৰয়োজনীতাসমূহৰ সৈতে মিলাকৈ কাষ্ট'মাইজ কৰিব পাৰে। এই সাধ্য সুবিধাসমূহ পিছত ছেটিংসমূহ-লৈ গৈ সলনি কৰিব পাৰি।</translation> <translation id="897414447285476047">সংযোগজনিত বিজুতিৰ বাবে লক্ষ্যস্থানৰ ফাইলটো অসম্পূৰ্ণ হৈছে।</translation> <translation id="897525204902889653">পৃথক কৰি ৰখা সেৱা</translation> +<translation id="8975396729541388937">আপুনি পোৱা ইমেইলত থকা লিংকটোত ক্লিক কৰি যিকোনো সময়তে আনছাবস্ক্ৰাইব কৰক।</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" আৰু অন্য ১টা টেব}one{"<ph name="TAB_TITLE" />" আৰু অন্য #টা টেব}other{"<ph name="TAB_TITLE" />" আৰু অন্য #টা টেব}}</translation> <translation id="8977811652087512276">অশুদ্ধ পাছৱৰ্ড বা ব্যৱহাৰৰ অযোগ্য ফাইল</translation> <translation id="8978154919215542464">সকলো ডেটা ছিংক কৰি থকা হৈছে</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index d3683c1..7f97258 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -336,6 +336,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Oğurlanmış parol yoxdur}=1{1 oğurlanmış parol}other{{NUM_COMPROMISED} oğurlanmış parol}}</translation> <translation id="1380028686461971526">Şəbəkəyə avtomatik olaraq qoşulun</translation> <translation id="1380436189840894976">İstənilən halda gizli rejimdən çıxılsın?</translation> +<translation id="1383597849754832576">Nitq fayllarını endirmək olmur. Sonra yenidən cəhd edin.</translation> <translation id="1383861834909034572">Tamamlanandan sonra açın</translation> <translation id="1383876407941801731">Axtar</translation> <translation id="1386791642444521222">Fiziki SIM'i aktiv edin</translation> @@ -872,7 +873,6 @@ <translation id="1954813140452229842">Paylaşım xətası. Kredensiallarınızı yoxlayaraq yenidən cəhd edin.</translation> <translation id="1956050014111002555">Fayl heç biri import olunmayan çoxsaylı sertifikatlardan ibarətdir:</translation> <translation id="1956390763342388273">Bu "<ph name="FOLDER_PATH" />" ünvanındakı bütün faylları yükləyəcək. Bunu yalnız sayta inandığınız təqdirdə edin.</translation> -<translation id="1960158217849594135">İstifadəçi adı Google Hesabınızda saxlansın?</translation> <translation id="196040970347962278">Əvvəlcə internet bağlantısı yaradın</translation> <translation id="1962233722219655970">Bu səhifə Native Client istifadə edir ki, kompüterinizdə işləmir.</translation> <translation id="1963227389609234879">Hamısını Silin</translation> @@ -898,6 +898,7 @@ <translation id="1984417487208496350">Qoruma yoxdur (tövsiyə edilmir)</translation> <translation id="1987317783729300807">Hesablar</translation> <translation id="1989112275319619282">Baxın</translation> +<translation id="1990046457226896323">Nitq faylları endirilib</translation> <translation id="1990512225220753005">Bu səhifədə qısayollar göstərməyin</translation> <translation id="1992397118740194946">Ayarlanmayıb</translation> <translation id="1992924914582925289">Cihazdan silin</translation> @@ -1043,7 +1044,6 @@ <translation id="2157474325782140681">Əlavə funksiyalar əldə etmək məqsədilə bu Chromebook üçün hazırlanmış Dell dok stansiyasını işlədin.</translation> <translation id="215753907730220065">Tam Ekrandan Çıxın</translation> <translation id="2157875535253991059">Bu səhifə indi tam ekrandadır.</translation> -<translation id="2160589599612868242"><ph name="DEVICE_TYPE" /> cihazında telefonunuzdan bildirişlər alın</translation> <translation id="216169395504480358">Wi-Fi əlavə edin...</translation> <translation id="2162155940152307086">Sinxronizasiya ayarlarından çıxdıqdan sonra sinxronizasiya başlayacaq</translation> <translation id="2162838847352058695">Saytların çoxsaylı faylları avtomatik endirməsini bloklayın</translation> @@ -1261,6 +1261,7 @@ <translation id="2399699884460174994">Bildirişlər aktiv edildi</translation> <translation id="2399939490305346086">Təhlükəsizlik açarının giriş datası</translation> <translation id="2400664245143453337">Dərhal güncəlləmə tələb edilir</translation> +<translation id="2406153734066939945">Bu profil və datası silinsin?</translation> <translation id="2408018932941436077">Kart yadda saxlanılır</translation> <translation id="2408955596600435184">PİN kodunuzu daxil edin</translation> <translation id="241082044617551207">Naməlum plaqin</translation> @@ -1378,6 +1379,7 @@ <translation id="2526590354069164005">Masaüstü</translation> <translation id="2526619973349913024">Güncəlləşmə üçün yoxlayın</translation> <translation id="2527167509808613699">Əlaqənin hər hansı növü</translation> +<translation id="2530166226437958497">Nasazlıqların aradan qaldırılması</translation> <translation id="2532589005999780174">Yüksək kontrast rejimi</translation> <translation id="253434972992662860">Durdurun</translation> <translation id="2534460670861217804">Güvənli HTTP proksisi</translation> @@ -1695,7 +1697,6 @@ <translation id="2885729872133513017">Server cavabının şifrəsi açılarkən xəta baş verdi.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Linki bununla açın:</translation> -<translation id="2889481634493693121">Telefonunuzda bildirişləri aktiv edin</translation> <translation id="2889925978073739256">Səndboksdan çıxarılmış plaginlər</translation> <translation id="2893168226686371498">Defolt brauzer</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 mətn}other{# mətn}}</translation> @@ -2555,6 +2556,7 @@ <translation id="3857807444929313943">Qaldırın və təkrar toxunun</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Sinxronizasiya dayandırıldı</translation> <translation id="3861638017150647085">"<ph name="USERNAME" />" istifadəçi adı əlçatan deyil</translation> +<translation id="3861977424605124250">Başlanğıcda göstərin</translation> <translation id="3862693525629180217">Daxili sensorla doğrulayın</translation> <translation id="3862788408946266506">"Yalnız_kiosk" funksiyası olan tətbiqlər Chrome OS kiosk rejimində quraşdırılmalıdır</translation> <translation id="3865414814144988605">Dəqiqlik</translation> @@ -2795,7 +2797,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Cihaz Qeydiyyatı</translation> <translation id="4130207949184424187">Bu artırma Omnibox ilə axtardığınız zaman hansı səhifənin göstərildiyini dəyişdi.</translation> -<translation id="4130344535649650885">Parol Google Hesabınızda saxlansın?</translation> <translation id="4130750466177569591">Razıyam</translation> <translation id="413121957363593859">Komponentlər</translation> <translation id="4131410914670010031">Ağ və qara</translation> @@ -3194,6 +3195,7 @@ <translation id="4627442949885028695">Başqa cihazdan davam edin</translation> <translation id="4628757576491864469">Cihazlar</translation> <translation id="4628762811416793313">Linux konteynerinin quraşdırılması tamamlanmadı. Yenidən cəhd edin.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> profilini açın</translation> <translation id="4633003931260532286">Artırma minimum "<ph name="IMPORT_VERSION" />" versiyalı <ph name="IMPORT_NAME" /> tələb edir, lakin yalnız "<ph name="INSTALLED_VERSION" />" versiyası quraşdırılıb</translation> <translation id="4633757335284074492">Google Diskə yedəkləyin. İstənilən vaxt datanı asanlıqla bərpa edin və ya cihazı dəyişin. Bu yedəkləməyə tətbiq datası daxildir. Yedəkləmələr Google'a yüklənir və uşağınızın Google Hesabı parolundan istifadə etməklə şifrlənir.</translation> <translation id="4634575639321169635">İş və ya şəxsi istifadə üçün bu cihazı ayarlayın</translation> @@ -3923,7 +3925,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="DEVICE_NAME" /> cihazından <ph name="ATTACHMENTS" /> almaq alınmadı}other{<ph name="DEVICE_NAME" /> cihazından <ph name="ATTACHMENTS" /> almaq alınmadı}}</translation> <translation id="5502500733115278303">Firefox'dan import edilib</translation> <translation id="5502915260472117187">Uşaq</translation> -<translation id="5503858713116291452">Telefonunuzun yaxınlıqda olduğuna, kiliddən çıxarılmış olduğuna, Bluetooth və Wi-Fi'ın aktiv olduğuna əmin olun. Ayarlamanı tamamlamaq üçün telefonunuzdakı addımları izləyin.</translation> <translation id="5503982651688210506"><ph name="HOST" /> hostuna kameranızı istifadə etmək və hərəkət etdirmək və mikrofonunuzu istifadə etmək icazəsi verməyə davam edin</translation> <translation id="5505264765875738116">Saytlar bildiriş göndərilməsini tələb edə bilməz</translation> <translation id="5505307013568720083">Mürəkkəb bitdi</translation> @@ -3984,6 +3985,7 @@ <translation id="5565735124758917034">Aktiv</translation> <translation id="5567989639534621706">Tətbiq keşləri</translation> <translation id="5568069709869097550">Daxil ola bilməz</translation> +<translation id="5571832155627049070">Profilinizi fərdiləşdirin</translation> <translation id="5572851009514199876">Başlayın və Chrome'a daxil olun, beləliklə, Chrome bu sayta girişə icazə olub olmadığını yoxlaya bilər.</translation> <translation id="5575473780076478375">İnkoqnito rejimi Artırması: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Demo qeydiyyat sorğusunda problem yarandı.</translation> @@ -5450,6 +5452,7 @@ <translation id="7280649757394340890">Mətndən-Nitqə səs ayarları</translation> <translation id="7280877790564589615">İcazə sorğusu göndərildi</translation> <translation id="7282992757463864530">Məlumat paneli</translation> +<translation id="7283555985781738399">Qonaq rejimi</translation> <translation id="7284411326658527427">Hər bir şəxs öz hesabını fərdiləşdirə və datanı məxfi saxlaya bilər.</translation> <translation id="7287143125007575591">Giriş rədd edildi.</translation> <translation id="7287411021188441799">Defolt arxa fonu bərpa edin</translation> @@ -5829,6 +5832,7 @@ <translation id="7716781361494605745">Netscape Certification Authority Policy URL</translation> <translation id="7717014941119698257">Endirmə: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Saytlar məkanınız üçün icazə istəyə bilər (tövsiyə olunur)</translation> +<translation id="771721654176725387">Bununla baxış datanız bu cihazdan həmişəlik siləcək. Datanı bərpa etmək üçün sinxronlaşdırmanı aşağıdakı kimi aktiv edin:</translation> <translation id="7717845620320228976">Güncəlləmələri yoxlayın</translation> <translation id="7719367874908701697">Səhifə yaxınlaşdırması</translation> <translation id="7719588063158526969">Cihazın adı çox uzundur</translation> @@ -5865,6 +5869,7 @@ <translation id="7765158879357617694">Daşıyın</translation> <translation id="7765507180157272835">Bluetooth və Wi-Fi tələb olunur</translation> <translation id="7766082757934713382">Avtomatik tətbiq və sistem güncəlləmələrini durduraraq şəbəkə datası istifadəsini azaltmağa yardım edir</translation> +<translation id="7766807826975222231">Tanış olun</translation> <translation id="7766838926148951335">İcazələri qəbul edin</translation> <translation id="7768507955883790804">Saytları ziyarət etdikdə onlar avtomatik bu ayarı izləyir</translation> <translation id="7768770796815395237">Dəyişin</translation> @@ -6108,6 +6113,7 @@ <translation id="8016266267177410919">Müvəqqəti saxlama yeri</translation> <translation id="8017176852978888182">Linux'un paylaşılan kataloqları</translation> <translation id="8017679124341497925">Qısayol redaktə edildi</translation> +<translation id="8018298733481692628">Bu profil silinsin?</translation> <translation id="8018313076035239964">Veb saytların istifadə etdiyi məlumatlara və sizə hansı kontenti göstərə biləcəklərinə nəzarət edin</translation> <translation id="8023801379949507775">Artırmaları indi güncəlləşdirin</translation> <translation id="8026334261755873520">Brauzinq datasını təmizləyin</translation> @@ -6277,7 +6283,6 @@ <translation id="8211551284753798479">Yanlış PUK. <ph name="RETRIES" /> cəhdiniz qalıb.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Endirmə gözlənilir}other{Endirmə gözlənilir}}</translation> <translation id="8213449224684199188">Foto rejimi daxil edildi</translation> -<translation id="8213866992824776555">Yüksək keyfiyyətli qorunan video və audio oxuda bilməsi üçün <ph name="DOMAIN" /> cihazınızı müəyyənləşdirmək istəyir.</translation> <translation id="8214489666383623925">Fayl Açın...</translation> <translation id="8214962590150211830">Bu Şəxsi Silin</translation> <translation id="8216351761227087153">Baxın</translation> @@ -6754,7 +6759,6 @@ <translation id="8774379074441005279">Bərpanı təsdiq edin</translation> <translation id="8774934320277480003">Yuxarı sahə</translation> <translation id="8775144690796719618">Yanlış URL</translation> -<translation id="8775163630211761057">Android telefonunuzdakı ən yaxşı elementləri <ph name="DEVICE_TYPE" /> cihazınıza köçürün</translation> <translation id="8775653927968399786">{0,plural, =1{# saniyədən sonra <ph name="DEVICE_TYPE" /> avtomatik kilidlənəcək. <ph name="DOMAIN" /> smart kartınızın taxılı qalmasını tələb edir.}other{# saniyədən sonra <ph name="DEVICE_TYPE" /> avtomatik kilidlənəcək. <ph name="DOMAIN" /> smart kartınızın taxılı qalmasını tələb edir.}}</translation> @@ -6943,6 +6947,7 @@ <translation id="8973596347849323817">Bu cihazı ehtiyacınıza uyğun fərdiləşdirə bilərsiniz. Bu əlçatımlıq xüsusiyyətləri daha sonra Ayarlardan dəyişdirilə bilər.</translation> <translation id="897414447285476047">Bağlantı problemi səbəbi ilə təyinat faylı tamamlanmadı.</translation> <translation id="897525204902889653">Karantin Xidməti</translation> +<translation id="8975396729541388937">Aldığınız e-məktublardakı keçidə toxunaraq istənilən vaxt abunəlikdən çıxa bilərsiniz.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" və digər 1 tab}other{"<ph name="TAB_TITLE" />" və digər # tab}}</translation> <translation id="8977811652087512276">Yanlış parol və ya zədələnmiş fayl</translation> <translation id="8978154919215542464">Aktiv - hərşeyi sinxronizasiya edin</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb index ae816d8..39ac931 100644 --- a/chrome/app/resources/generated_resources_be.xtb +++ b/chrome/app/resources/generated_resources_be.xtb
@@ -341,6 +341,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Раскрытых пароляў няма}=1{1 раскрыты пароль}one{{NUM_COMPROMISED} раскрыты пароль}few{{NUM_COMPROMISED} раскрытыя паролі}many{{NUM_COMPROMISED} раскрытых пароляў}other{{NUM_COMPROMISED} раскрытага пароля}}</translation> <translation id="1380028686461971526">Падключацца да сеткі аўтаматычна</translation> <translation id="1380436189840894976">Усё роўна выйсці з рэжыму інкогніта?</translation> +<translation id="1383597849754832576">Не ўдалося спампаваць файлы для ператварэння маўлення ў тэкст. Паўтарыце спробу пазней.</translation> <translation id="1383861834909034572">Адкрыццё пры завяршэнні</translation> <translation id="1383876407941801731">Пошук</translation> <translation id="1386791642444521222">Актываваць фізічную SIM-карту</translation> @@ -879,7 +880,6 @@ <translation id="1954813140452229842">Не ўдалося падключыць абагулены рэсурс. Праверце ўліковыя даныя і паўтарыце спробу.</translation> <translation id="1956050014111002555">У файле было некалькі сертыфікатаў, ні адзін з іх не быў імпартаваны:</translation> <translation id="1956390763342388273">Ваша дзеянне запампуе ўсе файлы з размяшчэння "<ph name="FOLDER_PATH" />". Рабіце гэта, толькі калі вы давяраеце сайту.</translation> -<translation id="1960158217849594135">Захаваць імя карыстальніка ва Уліковым запісе Google?</translation> <translation id="196040970347962278">Спачатку падключыцеся да інтэрнэту</translation> <translation id="1962233722219655970">Гэта старонка выкарыстоўвае праграму Native Client, якая не працуе на вашым камп'ютары.</translation> <translation id="1963227389609234879">Выдаліць усе</translation> @@ -905,6 +905,7 @@ <translation id="1984417487208496350">Без абароны (не рэкамендуецца)</translation> <translation id="1987317783729300807">Уліковыя запісы</translation> <translation id="1989112275319619282">Агляд</translation> +<translation id="1990046457226896323">Файлы для ператварэння маўлення ў тэкст спампаваны</translation> <translation id="1990512225220753005">Не паказваць ярлыкі на гэтай старонцы</translation> <translation id="1992397118740194946">Не зададзена</translation> <translation id="1992924914582925289">Выдаліць з прылады</translation> @@ -1050,7 +1051,6 @@ <translation id="2157474325782140681">Каб карыстацца дадатковымі функцыямі, знайдзіце док-станцыю Dell, сумяшчальную з гэтым Chromebook.</translation> <translation id="215753907730220065">Выключыць поўнаэкранны рэжым</translation> <translation id="2157875535253991059">Старонка ў поўнаэкранным рэжыме.</translation> -<translation id="2160589599612868242">Атрымлівайце апавяшчэнні з тэлефона на прыладзе <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Дадаць сетку Wi-Fi...</translation> <translation id="2162155940152307086">Сінхранізацыя пачнецца, як толькі вы закрыеце старонку налад сінхранізацыі</translation> <translation id="2162838847352058695">Забараніць сайтам аўтаматычна спампоўваць некалькі файлаў</translation> @@ -1268,6 +1268,7 @@ <translation id="2399699884460174994">Апавяшчэнні ўключаны</translation> <translation id="2399939490305346086">Уліковыя даныя ключа бяспекі</translation> <translation id="2400664245143453337">Патрабуецца неадкладнае абнаўленне</translation> +<translation id="2406153734066939945">Выдаліць профіль і ўсе яго даныя?</translation> <translation id="2408018932941436077">Ідзе захаванне даных карткі</translation> <translation id="2408955596600435184">Увядзіце PIN-код</translation> <translation id="241082044617551207">Невядомая ўбудова</translation> @@ -1386,6 +1387,7 @@ <translation id="2526590354069164005">Працоўны стол</translation> <translation id="2526619973349913024">Праверыць на наяўнасць абнаўленняў</translation> <translation id="2527167509808613699">Падключэнне любога тыпу</translation> +<translation id="2530166226437958497">Пошук і выпраўленне непаладак</translation> <translation id="2532589005999780174">Рэжым высокай кантраснасці</translation> <translation id="253434972992662860">&Прыпыніць</translation> <translation id="2534460670861217804">Бяспечны проксі-сервер HTTP</translation> @@ -1703,7 +1705,6 @@ <translation id="2885729872133513017">Узнікла праблема пры расшыфроўцы адказу сервера.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" />.</translation> <translation id="2889064240420137087">Адкрыць спасылку з дапамогай...</translation> -<translation id="2889481634493693121">Уключыце апавяшчэнні на тэлефоне</translation> <translation id="2889925978073739256">Працягваць блакіраваць не змешчаныя ў пясочніцу ўбудовы</translation> <translation id="2893168226686371498">Стандартны браўзер</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 тэксту}one{# тэксту}few{# тэкстаў}many{# тэкстаў}other{# тэксту}}</translation> @@ -2563,6 +2564,7 @@ <translation id="3857807444929313943">Адніміце палец і дакраніцеся зноў</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: сінхранізацыя прыпынена</translation> <translation id="3861638017150647085">Імя карыстальніка "<ph name="USERNAME" />" недаступнае</translation> +<translation id="3861977424605124250">Паказваць пры запуску</translation> <translation id="3862693525629180217">Прайсці спраўджанне з дапамогай убудаванага датчыка</translation> <translation id="3862788408946266506">Праграма з атрыбутам маніфеста "kiosk_only" павінна ўсталёўвацца ў рэжыме кіёска Chrome OS</translation> <translation id="3865414814144988605">Раздзяляльнасць</translation> @@ -2805,7 +2807,6 @@ <translation id="412730574613779332">Супергерой</translation> <translation id="4130199216115862831">Журнал прылады</translation> <translation id="4130207949184424187">Гэта пашырэнне вызначыла новую старонку, якая будзе паказвацца пры ажыццяўленні вамі пошуку праз амнібокс.</translation> -<translation id="4130344535649650885">Захаваць пароль ва Уліковым запісе Google?</translation> <translation id="4130750466177569591">Згаджаюся</translation> <translation id="413121957363593859">Кампаненты</translation> <translation id="4131410914670010031">Чорна-белы друк</translation> @@ -3204,6 +3205,7 @@ <translation id="4627442949885028695">Працягніце з іншай прылады</translation> <translation id="4628757576491864469">Прылады</translation> <translation id="4628762811416793313">Наладжванне кантэйнера Linux не завершана. Паўтарыце спробу.</translation> +<translation id="4629521233550547305">Адкрыць профіль "<ph name="PROFILE_NAME" />"</translation> <translation id="4633003931260532286">Для пашырэння патрабуецца <ph name="IMPORT_NAME" /> версіі <ph name="IMPORT_VERSION" /> і вышэй, але ўсталявана толькі версія <ph name="INSTALLED_VERSION" /></translation> <translation id="4633757335284074492">Рэзервовае капіраванне на Google Дыск. Лёгка аднаўляйце даныя і пераносьце іх на іншыя прылады. У рэзервовую копію ўваходзяць даныя праграм. Рэзервовыя копіі запампоўваюцца ў Google і шыфруюцца пад паролем ад Уліковага запісу Google дзіцяці.</translation> <translation id="4634575639321169635">Наладзіць прыладу для работы або асабістага карыстання</translation> @@ -3931,7 +3933,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Не ўдалося атрымаць даныя (<ph name="ATTACHMENTS" />) з прылады "<ph name="DEVICE_NAME" />"}one{Не ўдалося атрымаць даныя (<ph name="ATTACHMENTS" />) з прылады "<ph name="DEVICE_NAME" />"}few{Не ўдалося атрымаць даныя (<ph name="ATTACHMENTS" />) з прылады "<ph name="DEVICE_NAME" />"}many{Не ўдалося атрымаць даныя (<ph name="ATTACHMENTS" />) з прылады "<ph name="DEVICE_NAME" />"}other{Не ўдалося атрымаць даныя (<ph name="ATTACHMENTS" />) з прылады "<ph name="DEVICE_NAME" />"}}</translation> <translation id="5502500733115278303">Імпартаваныя з браўзера Firefox</translation> <translation id="5502915260472117187">Дзіця</translation> -<translation id="5503858713116291452">Упэўніцеся, што ён разблакіраваны, знаходзіцца паблізу і на ім уключаны Bluetooth і Wi-Fi. Каб завяршыць наладжванне, кіруйцеся інструкцыямі на тэлефоне.</translation> <translation id="5503982651688210506">І далей дазваляць сайту <ph name="HOST" /> выкарыстоўваць і перамяшчаць вашу камеру і выкарыстоўваць ваш мікрафон</translation> <translation id="5505264765875738116">Сайтам забаронена запытваць дазвол на паказ апавяшчэнняў</translation> <translation id="5505307013568720083">Чарніла скончылася</translation> @@ -3992,6 +3993,7 @@ <translation id="5565735124758917034">Актыўны</translation> <translation id="5567989639534621706">Кэшы праграм</translation> <translation id="5568069709869097550">Не ўдалося ўвайсці ў сістэму</translation> +<translation id="5571832155627049070">Наладзьце свой профіль</translation> <translation id="5572851009514199876">Каб Chrome змог праверыць, ці дазволена вам мець доступ да гэтага сайта, запусціце Chrome і ўвайдзіце ў свой уліковы запіс.</translation> <translation id="5575473780076478375">Пашырэнне інкогніта: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Узнікла праблема з запытам рэгістрацыі ў дэманстрацыйным рэжыме.</translation> @@ -5461,6 +5463,7 @@ <translation id="7280649757394340890">Налады голасу для сінтэзу маўлення</translation> <translation id="7280877790564589615">Дазвол запытаны</translation> <translation id="7282992757463864530">Панэль інфармацыі</translation> +<translation id="7283555985781738399">Гасцявы рэжым</translation> <translation id="7284411326658527427">Любы дададзены карыстальнік зможа персаналізаваць свой уліковы запіс і захоўваць прыватнасць даных.</translation> <translation id="7287143125007575591">Доступ забаронены.</translation> <translation id="7287411021188441799">Аднавіць стандартны фон</translation> @@ -5840,6 +5843,7 @@ <translation id="7716781361494605745">URL-адрас палітыкі для цэнтра сертыфікацыі Netscape</translation> <translation id="7717014941119698257">Ідзе спампоўка: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Сайты могуць запытваць ваша месцазнаходжанне (рэкамендуецца)</translation> +<translation id="771721654176725387">Гэта дзеянне незваротна выдаліць з прылады даныя прагляду старонак у інтэрнэце. Каб аднавіць даныя, уключыце сінхранізацыю як</translation> <translation id="7717845620320228976">Праверыць наяўнасць абнаўленняў</translation> <translation id="7719367874908701697">Маштаб старонкі</translation> <translation id="7719588063158526969">Назва прылады занадта доўгая</translation> @@ -5876,6 +5880,7 @@ <translation id="7765158879357617694">Перамясціць</translation> <translation id="7765507180157272835">Патрабуецца падключэнне да Bluetooth і Wi-Fi</translation> <translation id="7766082757934713382">Дапамагае знізіць выкарыстанне трафіка ў сетцы, прыпыняючы аўтаматычныя абнаўленні сістэмы і праграм</translation> +<translation id="7766807826975222231">Азнаёміцца</translation> <translation id="7766838926148951335">Прыняць дазволы</translation> <translation id="7768507955883790804">Пры наведванні сайтаў яны будуць аўтаматычна ўлічваць гэту наладу</translation> <translation id="7768770796815395237">Змяніць</translation> @@ -6119,6 +6124,7 @@ <translation id="8016266267177410919">Часовае сховішча</translation> <translation id="8017176852978888182">Абагуленыя каталогі Linux</translation> <translation id="8017679124341497925">Ярлык зменены</translation> +<translation id="8018298733481692628">Выдаліць гэты профіль?</translation> <translation id="8018313076035239964">Кантралююць, якую інфармацыю могуць выкарыстоўваць вэб-сайты і якое змесціва яны могуць паказваць</translation> <translation id="8023801379949507775">Абнавіць пашырэнні</translation> <translation id="8026334261755873520">Выдаленне гісторыі праглядаў</translation> @@ -6289,7 +6295,6 @@ <translation id="8211551284753798479">Няправільны PUK-код. Засталося спроб: <ph name="RETRIES" />.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Ажыццяўляецца спампоўка}one{Ажыццяўляюцца спампоўкі}few{Ажыццяўляюцца спампоўкі}many{Ажыццяўляюцца спампоўкі}other{Ажыццяўляюцца спампоўкі}}</translation> <translation id="8213449224684199188">Уключаны рэжым фота</translation> -<translation id="8213866992824776555">Для прайгравання абароненага відэа і аўдыя ў найлепшай якасці <ph name="DOMAIN" /> запытвае дазвол на ідэнтыфікацыю вашай прылады.</translation> <translation id="8214489666383623925">Адкрыць файл...</translation> <translation id="8214962590150211830">Выдаліць гэтага карыстальніка</translation> <translation id="8216351761227087153">Глядзець</translation> @@ -6768,7 +6773,6 @@ <translation id="8774379074441005279">Пацвярджэнне аднаўлення</translation> <translation id="8774934320277480003">Верхняе поле</translation> <translation id="8775144690796719618">Няправільны URL-адрас</translation> -<translation id="8775163630211761057">Карыстайцеся змесцівам і падключэннем тэлефона Android з прылады <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Ваша прылада <ph name="DEVICE_TYPE" /> будзе аўтаматычна заблакіравана праз # секунду. Па правілах дамена <ph name="DOMAIN" /> разумная картка павінна быць устаўлена.}one{Ваша прылада <ph name="DEVICE_TYPE" /> будзе аўтаматычна заблакіравана праз # секунду. Па правілах дамена <ph name="DOMAIN" /> разумная картка павінна быць устаўлена.}few{Ваша прылада <ph name="DEVICE_TYPE" /> будзе аўтаматычна заблакіравана праз # секунды. @@ -6960,6 +6964,7 @@ <translation id="8973596347849323817">Можна наладзіць прыладу так, каб яна адпавядала вашым патрэбам. Гэтыя спецыяльныя магчымасці можна змяніць у Наладах.</translation> <translation id="897414447285476047">Мэтавы файл няпоўны з-за праблем з падключэннем.</translation> <translation id="897525204902889653">Каранцінны сэрвіс</translation> +<translation id="8975396729541388937">Вы можаце адпісацца ў любы час, націснуўшы на адпаведную спасылку ў адным з электронных лістоў, якія вы атрымліваеце.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" і яшчэ 1 укладка}one{"<ph name="TAB_TITLE" />" і яшчэ # укладка}few{"<ph name="TAB_TITLE" />" і яшчэ # укладкі}many{"<ph name="TAB_TITLE" />" і яшчэ # укладак}other{"<ph name="TAB_TITLE" />" і яшчэ # укладкі}}</translation> <translation id="8977811652087512276">Няправільны пароль, або файл пашкоджаны</translation> <translation id="8978154919215542464">Уключана. Сінхранізуецца ўсё</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index e663cef..8982358 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Няма компрометирани пароли}=1{1 компрометирана парола}other{{NUM_COMPROMISED} компрометирани пароли}}</translation> <translation id="1380028686461971526">Свързване с мрежа автоматично</translation> <translation id="1380436189840894976">Да се излезе ли от режим „инкогнито“ въпреки това?</translation> +<translation id="1383597849754832576">Файловете за говор не могат да бъдат изтеглени. Опитайте отново по-късно.</translation> <translation id="1383861834909034572">Ще се отвори след изтегляне</translation> <translation id="1383876407941801731">Търсене</translation> <translation id="1386791642444521222">Активиране на физическа SIM карта</translation> @@ -873,7 +874,6 @@ <translation id="1954813140452229842">Възникна грешка при свързването на дяла. Моля, проверете идентификационните си данни и опитайте отново.</translation> <translation id="1956050014111002555">Файлът съдържаше няколко сертификата, но нито един от тях не бе импортиран:</translation> <translation id="1956390763342388273">Ще бъдат качени всички файлове от „<ph name="FOLDER_PATH" />“. Продължете само ако смятате сайта за надежден.</translation> -<translation id="1960158217849594135">Искате ли да запазите потребителското име в профила си в Google?</translation> <translation id="196040970347962278">Първо установете връзка с интернет</translation> <translation id="1962233722219655970">Тази страница използва приложение за клиент с директно изпълнение, което не работи на компютъра ви.</translation> <translation id="1963227389609234879">Премахване на всички</translation> @@ -899,6 +899,7 @@ <translation id="1984417487208496350">Без защита (не се препоръчва)</translation> <translation id="1987317783729300807">Профили</translation> <translation id="1989112275319619282">Сърфиране</translation> +<translation id="1990046457226896323">Файловете за говор бяха изтеглени</translation> <translation id="1990512225220753005">Преките пътища да не се показват на тази страница</translation> <translation id="1992397118740194946">Няма зададен</translation> <translation id="1992924914582925289">Премахване от устройството</translation> @@ -1044,7 +1045,6 @@ <translation id="2157474325782140681">За да получите още функции, използвайте докинг станция от Dell, предназначена да работи с този Chromebook.</translation> <translation id="215753907730220065">Изход от цял екран</translation> <translation id="2157875535253991059">Тази страница сега е на цял екран.</translation> -<translation id="2160589599612868242">Получавайте на устройството си <ph name="DEVICE_TYPE" /> известия от телефона си</translation> <translation id="216169395504480358">Добавяне на Wi-Fi...</translation> <translation id="2162155940152307086">Синхронизирането ще започне, след като излезете от страницата с настройките му</translation> <translation id="2162838847352058695">Блокиране на сайтовете, така че да не изтеглят автоматично няколко файла</translation> @@ -1262,6 +1262,7 @@ <translation id="2399699884460174994">Известията са включени</translation> <translation id="2399939490305346086">Данни за вход от ключа за сигурност</translation> <translation id="2400664245143453337">Изисква се незабавна актуализация</translation> +<translation id="2406153734066939945">Този потребителски профил и данните му да се изтрият ли?</translation> <translation id="2408018932941436077">Картата се запазва</translation> <translation id="2408955596600435184">Въведете своя ПИН</translation> <translation id="241082044617551207">Неизвестна приставка</translation> @@ -1380,6 +1381,7 @@ <translation id="2526590354069164005">Работен плот</translation> <translation id="2526619973349913024">Проверка за актуализации</translation> <translation id="2527167509808613699">Каквато и да е връзка</translation> +<translation id="2530166226437958497">Отстраняване на неизправности</translation> <translation id="2532589005999780174">Режим на висок контраст</translation> <translation id="253434972992662860">&Пауза</translation> <translation id="2534460670861217804">Защитен HTTP прокси сървър</translation> @@ -1697,7 +1699,6 @@ <translation id="2885729872133513017">Възникна проблем при декодирането на отговора от сървъра.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Отваряне на връзката със...</translation> -<translation id="2889481634493693121">Включване на известията на телефона ви</translation> <translation id="2889925978073739256">Блокирането на приставки извън тестова среда да продължи</translation> <translation id="2893168226686371498">Браузър по подразбиране</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 SMS съобщение}other{# SMS съобщения}}</translation> @@ -2558,6 +2559,7 @@ <translation id="3857807444929313943">Вдигнете пръст и докоснете отново</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: синхронизирането е на пауза</translation> <translation id="3861638017150647085">Потребителското име „<ph name="USERNAME" />“ е заето</translation> +<translation id="3861977424605124250">Показване при стартиране</translation> <translation id="3862693525629180217">Потвърждаване чрез вградения сензор</translation> <translation id="3862788408946266506">Приложенията с атрибут „kiosk_only“ в манифеста трябва да бъдат инсталирани в павилионния режим на Chrome OS</translation> <translation id="3865414814144988605">Разделителна способност</translation> @@ -2800,7 +2802,6 @@ <translation id="412730574613779332">Супергерой</translation> <translation id="4130199216115862831">Регистрационен файл на устройството</translation> <translation id="4130207949184424187">Това разширение промени страницата, която се показва при търсене от полето за всичко.</translation> -<translation id="4130344535649650885">Искате ли да запазите паролата в профила си в Google?</translation> <translation id="4130750466177569591">Приемам</translation> <translation id="413121957363593859">Компоненти</translation> <translation id="4131410914670010031">Черно-бяло</translation> @@ -3199,6 +3200,7 @@ <translation id="4627442949885028695">Продължаване от друго устройство</translation> <translation id="4628757576491864469">Устройства</translation> <translation id="4628762811416793313">Настройването на контейнера за Linux не завърши. Моля, опитайте отново.</translation> +<translation id="4629521233550547305">Отваряне на потребителския профил <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Разширението изисква <ph name="IMPORT_VERSION" /> или по-нова версия на <ph name="IMPORT_NAME" />, но само <ph name="INSTALLED_VERSION" /> е инсталирана</translation> <translation id="4633757335284074492">Създаване на резервно копие в Google Диск. По всяко време можете лесно да възстановите данните на устройството или да го замените с друго. Резервното копие включва данните на приложенията. Резервните копия се качват в Google и се шифроват посредством паролата за профила на детето ви в Google.</translation> <translation id="4634575639321169635">Настройте това устройство за служебна или лична употреба</translation> @@ -3927,7 +3929,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Получаването на <ph name="ATTACHMENTS" /> от <ph name="DEVICE_NAME" /> не бе успешно}other{Получаването на <ph name="ATTACHMENTS" /> от <ph name="DEVICE_NAME" /> не бе успешно}}</translation> <translation id="5502500733115278303">Импортирани от Firefox</translation> <translation id="5502915260472117187">Дете</translation> -<translation id="5503858713116291452">Телефонът трябва да е наблизо, да е отключен и Bluetooth и функцията за Wi-Fi да са включени. Изпълнете стъпките на телефона си, за да завършите настройването.</translation> <translation id="5503982651688210506">Използването и местенето на камерата ви и използването на микрофона ви от <ph name="HOST" /> продължават да са разрешени</translation> <translation id="5505264765875738116">Сайтовете не могат да извеждат подкани за изпращане на известия</translation> <translation id="5505307013568720083">Няма мастило</translation> @@ -3988,6 +3989,7 @@ <translation id="5565735124758917034">Активно</translation> <translation id="5567989639534621706">Кешове на приложения</translation> <translation id="5568069709869097550">Не може да се влезе</translation> +<translation id="5571832155627049070">Персонализиране на потребителския ви профил</translation> <translation id="5572851009514199876">Моля, стартирайте браузъра Chrome и влезте в него, за да се провери дали имате достъп до този сайт.</translation> <translation id="5575473780076478375">Разширение „Инкогнито“: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Възникна проблем със заявката за регистрация за демонстрационен режим.</translation> @@ -5458,6 +5460,7 @@ <translation id="7280649757394340890">Настройки за гласовете за синтезиран говор</translation> <translation id="7280877790564589615">Изисква се разрешение</translation> <translation id="7282992757463864530">Информационна лента</translation> +<translation id="7283555985781738399">Режим на гост</translation> <translation id="7284411326658527427">Всеки човек има възможност да персонализира профила си и да запази данните си частни.</translation> <translation id="7287143125007575591">Достъпът е отказан.</translation> <translation id="7287411021188441799">Възстановяване на стандартния фон</translation> @@ -5837,6 +5840,7 @@ <translation id="7716781361494605745">URL адрес с правилата на сертифициращия орган на Netscape</translation> <translation id="7717014941119698257">Изтегля се: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Сайтовете могат да извеждат запитвания за достъп до местоположението ви (препоръчително)</translation> +<translation id="771721654176725387">Данните за сърфирането ви ще се изтрият за постоянно от това устройство. За да ги възстановите, включете синхронизирането като</translation> <translation id="7717845620320228976">Проверка за актуализации</translation> <translation id="7719367874908701697">Промяна на мащаба на страницата</translation> <translation id="7719588063158526969">Името на устройството е твърде дълго</translation> @@ -5873,6 +5877,7 @@ <translation id="7765158879357617694">Преместване</translation> <translation id="7765507180157272835">Необходими са Bluetooth и Wi-Fi</translation> <translation id="7766082757934713382">Помага за намаляването на преноса на данни от мрежата, като поставя на пауза автоматичните актуализации на приложенията и системата.</translation> +<translation id="7766807826975222231">Направете обиколка</translation> <translation id="7766838926148951335">Приемам разрешенията</translation> <translation id="7768507955883790804">Сайтовете автоматично следват тази настройка, когато ги посещавате</translation> <translation id="7768770796815395237">Промяна</translation> @@ -6117,6 +6122,7 @@ <translation id="8017176852978888182">Споделяне на директории в Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Прекият път бе редактиран</translation> +<translation id="8018298733481692628">Да се изтрие ли този профил?</translation> <translation id="8018313076035239964">Управлявайте каква информация могат да използват уебсайтовете и какво съдържание могат да ви показват</translation> <translation id="8023801379949507775">Актуализирайте разширенията сега</translation> <translation id="8026334261755873520">Изчистване на данните за сърфирането</translation> @@ -6287,7 +6293,6 @@ <translation id="8211551284753798479">Невалиден PUK код. Остават ви <ph name="RETRIES" /> опита.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Изтегля се файл}other{Изтеглят се файлове}}</translation> <translation id="8213449224684199188">Преминахте в режим за снимки</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> иска да идентифицира устройството ви, за да може да възпроизвежда защитено видео- и аудиосъдържание с най-високо качество.</translation> <translation id="8214489666383623925">Отваряне на файл...</translation> <translation id="8214962590150211830">Премахване на този човек</translation> <translation id="8216351761227087153">Гледане</translation> @@ -6766,7 +6771,6 @@ <translation id="8774379074441005279">Потвърждаване на възстановяването</translation> <translation id="8774934320277480003">Горно поле</translation> <translation id="8775144690796719618">Невалиден URL адрес</translation> -<translation id="8775163630211761057">Направете най-доброто от телефона си с Android достъпно на устройството си <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Вашият <ph name="DEVICE_TYPE" /> ще се заключи автоматично след # секунда. <ph name="DOMAIN" /> изисква да не изваждате смарткартата си.}other{Вашият <ph name="DEVICE_TYPE" /> ще се заключи автоматично след # секунди. <ph name="DOMAIN" /> изисква да не изваждате смарткартата си.}}</translation> @@ -6955,6 +6959,7 @@ <translation id="8973596347849323817">Можете да персонализирате устройството според нуждите си. Тези функции за достъпност могат да бъдат променени по-късно от „Настройки“.</translation> <translation id="897414447285476047">Изтеглянето на целевия файл не завърши поради проблем с връзката.</translation> <translation id="897525204902889653">Услуга за поставяне под карантина</translation> +<translation id="8975396729541388937">Можете да се отпишете по всяко време, като кликнете върху връзката в получените от вас имейли.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />“}=1{„<ph name="TAB_TITLE" />“ и още 1 раздел}other{„<ph name="TAB_TITLE" />“ и още # раздела}}</translation> <translation id="8977811652087512276">Неправилна парола или повреден файл</translation> <translation id="8978154919215542464">Включено (всичко се синхронизира)</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index cd9997d5..2f7f67e3 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -877,7 +877,6 @@ <translation id="1954813140452229842">মাউন্টিং শেয়ারে সমস্যা। অনুগ্রহ করে আপনার ক্রেডেনশিয়াল যাচাই করে আবার চেষ্টা করুন।</translation> <translation id="1956050014111002555">ফাইলটিতে একাধিক শংসাপত্র রয়েছে, এর মধ্যে কোনওটিই আমদানি করা হয়নি:</translation> <translation id="1956390763342388273">এটি ''<ph name="FOLDER_PATH" />'' থেকে সমস্ত ফাইল আপলোড করবে। আপনি এই সাইটটি বিশ্বাস করে থাকলে তবেই এটি করুন।</translation> -<translation id="1960158217849594135">আপনার Google অ্যাকাউন্টে ইউজারনেম সেভ করবেন?</translation> <translation id="196040970347962278">প্রথমে একটি ইন্টারনেট কানেকশন যোগ করুন</translation> <translation id="1962233722219655970">এই পৃষ্ঠাটি একটি নেটিভ ক্লায়েন্ট অ্যাপ্লিকেশন ব্যবহার করে যা আপনার কম্পিউটারে কাজ করে না৷</translation> <translation id="1963227389609234879">সকল সরান</translation> @@ -1048,7 +1047,6 @@ <translation id="2157474325782140681">অতিরিক্ত ফিচার পেতে, এই Chromebook-এর সাথে মানানসই একটি Dell-এর ডকিং স্টেশন ব্যবহার করুন।</translation> <translation id="215753907730220065">পূর্ণ স্ক্রীণ বন্ধ করুন</translation> <translation id="2157875535253991059">পৃষ্ঠাটি এখন পূর্ণ পর্দায় রয়েছে</translation> -<translation id="2160589599612868242">আপনার ফোন থেকে <ph name="DEVICE_TYPE" />-এ বিজ্ঞপ্তি পান</translation> <translation id="216169395504480358">Wi-fi জুড়ুন ...</translation> <translation id="2162155940152307086">আপনি সিঙ্ক সেটিংস পৃষ্ঠাটি ছেড়ে গেলে সিঙ্ক করা শুরু হবে</translation> <translation id="2162838847352058695">একাধিক ফাইল অটোমেটিক ডাউনলোড করা আটকাতে সাইট ব্লক করুন</translation> @@ -1700,7 +1698,6 @@ <translation id="2885729872133513017">সার্ভারের উত্তর ডিকোড করার সময় সমস্যা হয়েছে।</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">এর সাথে লিঙ্ক খুলুন...</translation> -<translation id="2889481634493693121">আপনার ফোনে বিজ্ঞপ্তি চালু করুন</translation> <translation id="2889925978073739256">আনস্যান্ডবক্সড প্লাগ ইনগুলি অবরুদ্ধ করা অবিরত রাখুন</translation> <translation id="2893168226686371498">ডিফল্ট ব্রাউজার</translation> <translation id="2893917546370257247">{COUNT,plural, =1{১টি টেক্সট}one{#টি টেক্সট}other{#টি টেক্সট}}</translation> @@ -2801,7 +2798,6 @@ <translation id="412730574613779332">স্প্যানডেক্স</translation> <translation id="4130199216115862831">ডিভাইস লগ</translation> <translation id="4130207949184424187">আপনি ওমনিবক্স ক্ষেত্র থেকে সার্চ করলে কোন পৃষ্ঠাটি দেখানো হবে তা এই এক্সটেনশনটি পরিবর্তন করেছে।</translation> -<translation id="4130344535649650885">আপনার Google অ্যাকাউন্টে পাসওয়ার্ড সেভ করবেন?</translation> <translation id="4130750466177569591">আমি সম্মত</translation> <translation id="413121957363593859">উপাদানগুলি</translation> <translation id="4131410914670010031">সাদা ও কালো</translation> @@ -3928,7 +3924,6 @@ <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="5503858713116291452">আপনার ফোন কাছাকাছি, আনলক অবস্থায় রয়েছে কিনা এবং তাতে ব্লুটুথ আর ওয়াই-ফাই চালু আছে কিনা দেখে নিন। সেট আপ সম্পূর্ণ করতে, আপনার ফোনে ধাপগুলি অনুসরণ করুন।</translation> <translation id="5503982651688210506">আপনার ক্যামেরা ব্যবহার করতে এবং সরাতে ও আপনার মাইক্রোফোন ব্যবহার করতে <ph name="HOST" />-কে অনুমতি দেওয়ার বিষয়টি চালিয়ে যান</translation> <translation id="5505264765875738116">সাইট আপনাকে বিজ্ঞপ্তি পাঠাতে পারবে না</translation> <translation id="5505307013568720083">কালি ফুরিয়ে গেছে</translation> @@ -3989,6 +3984,7 @@ <translation id="5565735124758917034">সক্রিয়</translation> <translation id="5567989639534621706">অ্যাপ্লিকেশন ক্যাশে</translation> <translation id="5568069709869097550">প্রবেশ করতে পারছেন না</translation> +<translation id="5571832155627049070">আপনার প্রোফাইল কাস্টমাইজ করুন</translation> <translation id="5572851009514199876">আপনার এই সাইটে অ্যাক্সেস আছে কিনা, তা দেখার জন্য Chrome চালু করে সাইন-ইন করুন।</translation> <translation id="5575473780076478375">ছদ্মবেশী এক্সটেনশন: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">ডেমো রেজিস্টার করার অনুরোধ নিয়ে একটি সমস্যা হয়েছে।</translation> @@ -5875,6 +5871,7 @@ <translation id="7765158879357617694">সরান</translation> <translation id="7765507180157272835">ব্লুটুথ এবং ওয়াই-ফাই দরকার</translation> <translation id="7766082757934713382">অ্যাপ ও সিস্টেমের অটোমেটিক আপডেট পজ করে নেটওয়ার্ক ডেটার ব্যবহার কম করতে সাহায্য করে</translation> +<translation id="7766807826975222231">একবার ঘুরে দেখুন</translation> <translation id="7766838926148951335">অনুমতিগুলি স্বীকার করুন</translation> <translation id="7768507955883790804">আপনি কোনও সাইট খুললে সেটি অটোমেটিক এই সেটিং মেনে কাজ করবে</translation> <translation id="7768770796815395237">পরিবর্তন করুন</translation> @@ -6287,7 +6284,6 @@ <translation id="8211551284753798479">ভুল PUK দিয়েছেন। আপনি আর <ph name="RETRIES" /> বার চেষ্টা করতে পারবেন।</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ডাউনলোড করা হচ্ছে}one{ডাউনলোডগুলি করা হচ্ছে}other{ডাউনলোডগুলি করা হচ্ছে}}</translation> <translation id="8213449224684199188">ফটো মোডটি চালু হয়েছে</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> আপনার ডিভাইস শনাক্ত করতে চায় যাতে ভিডিও ও অডিও প্লে করার সময় এটি সর্বোচ্চ কোয়ালিটির সুরক্ষা সুনিশ্চিত করতে পারে।</translation> <translation id="8214489666383623925">ফাইল খুলুন...</translation> <translation id="8214962590150211830">এই ব্যক্তিকে সরান</translation> <translation id="8216351761227087153">দেখুন</translation> @@ -6766,7 +6762,6 @@ <translation id="8774379074441005279">ফিরিয়ে আনতে কনফার্ম করুন</translation> <translation id="8774934320277480003">শীর্ষ মার্জিন</translation> <translation id="8775144690796719618">ভুল ইউআরএল</translation> -<translation id="8775163630211761057">নিজের Android ফোনের সবচেয়ে ভাল অ্যাপ, কন্টেন্ট ও কানেক্টিভিটি <ph name="DEVICE_TYPE" />-এর জন্য ব্যবহার করুন</translation> <translation id="8775653927968399786">{0,plural, =1{# সেকেন্ডে আপনার <ph name="DEVICE_TYPE" /> অটোমেটিক লক হয়ে যাবে। <ph name="DOMAIN" />-এর জন্য আপনার স্মার্ট কার্ড প্রবেশ করিয়ে রাখতে হবে।}one{# সেকেন্ডে আপনার <ph name="DEVICE_TYPE" /> অটোমেটিক লক হয়ে যাবে। <ph name="DOMAIN" />-এর জন্য আপনার স্মার্ট কার্ড প্রবেশ করিয়ে রাখতে হবে।}other{# সেকেন্ডে আপনার <ph name="DEVICE_TYPE" /> অটোমেটিক লক হয়ে যাবে।
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index 549d3945..44c67a0 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -340,6 +340,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Nema ugroženih lozinki}=1{1 ugrožena lozinka}one{{NUM_COMPROMISED} ugrožena lozinka}few{{NUM_COMPROMISED} ugrožene lozinke}other{{NUM_COMPROMISED} ugroženih lozinki}}</translation> <translation id="1380028686461971526">Automatski se poveži s mrežom</translation> <translation id="1380436189840894976">Ipak napustiti anonimni način rada?</translation> +<translation id="1383597849754832576">Nije moguće preuzeti fajlove govora. Pokušajte ponovo kasnije.</translation> <translation id="1383861834909034572">Otvara se nakon završetka</translation> <translation id="1383876407941801731">Traži</translation> <translation id="1386791642444521222">Aktiviraj fizički SIM</translation> @@ -878,7 +879,6 @@ <translation id="1954813140452229842">Greška prilikom aktiviranja dijeljenja. Provjerite akreditive i pokušajte ponovo.</translation> <translation id="1956050014111002555">Fajl je sadržavao nekoliko potvrda i nijedna nije uvezena:</translation> <translation id="1956390763342388273">Ovim ćete otpremiti sve fajlove iz foldera "<ph name="FOLDER_PATH" />". Učinite to samo ako web lokaciju smatrate pouzdanom.</translation> -<translation id="1960158217849594135">Sačuvati korisničko ime na Google račun?</translation> <translation id="196040970347962278">Prvo uspostavite internetsku vezu</translation> <translation id="1962233722219655970">Ova stranica koristi aplikaciju izvornog klijenta koja ne radi na vašem računaru.</translation> <translation id="1963227389609234879">Ukloni sve</translation> @@ -904,6 +904,7 @@ <translation id="1984417487208496350">Bez zaštite (ne preporučuje se)</translation> <translation id="1987317783729300807">Računi</translation> <translation id="1989112275319619282">Pregledaj</translation> +<translation id="1990046457226896323">Fajlovi govora su preuzeti</translation> <translation id="1990512225220753005">Ne prikazuj prečice na ovoj stranici</translation> <translation id="1992397118740194946">Nije postavljeno</translation> <translation id="1992924914582925289">Ukloni s uređaja</translation> @@ -1049,7 +1050,6 @@ <translation id="2157474325782140681">Za dodatne funkcije, koristite Dell priključnu stanicu koja je namijenjena za rad s ovim Chromebookom.</translation> <translation id="215753907730220065">Izađi iz prikaza preko cijelog ekrana</translation> <translation id="2157875535253991059">Ova stranica se sada prikazuje preko cijelog ekrana.</translation> -<translation id="2160589599612868242">Primajte obavještenja s telefona na uređaju <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Dodaj WiFi...</translation> <translation id="2162155940152307086">Sinhronizacija će se pokrenuti kada zatvorite postavke sinhronizacije</translation> <translation id="2162838847352058695">Blokiraj web lokacijama da automatski preuzimaju više fajlova</translation> @@ -1267,6 +1267,7 @@ <translation id="2399699884460174994">Obavještenja su uključena</translation> <translation id="2399939490305346086">Podaci za prijavu sigurnosnog ključa</translation> <translation id="2400664245143453337">Potrebno je odmah ažurirati</translation> +<translation id="2406153734066939945">Izbrisati ovaj profil i njegove podatke?</translation> <translation id="2408018932941436077">Pohranjivanje kartice</translation> <translation id="2408955596600435184">Unesite PIN</translation> <translation id="241082044617551207">Nepoznati dodatak</translation> @@ -1385,6 +1386,7 @@ <translation id="2526590354069164005">Radna površina</translation> <translation id="2526619973349913024">Provjeri je li dostupno ažuriranje</translation> <translation id="2527167509808613699">Bilo koja vrsta veze</translation> +<translation id="2530166226437958497">Rješavanje problema</translation> <translation id="2532589005999780174">Način rada visokog kontrasta</translation> <translation id="253434972992662860">&Pauziraj</translation> <translation id="2534460670861217804">Secure HTTP proksi server</translation> @@ -1702,7 +1704,6 @@ <translation id="2885729872133513017">Došlo je do problema prilikom dekodiranja odgovora servera.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Otvori link koristeći…</translation> -<translation id="2889481634493693121">Uključite obavještenja na telefonu</translation> <translation id="2889925978073739256">Nastavi blokirati dodatke koji nisu u izoliranom okruženju</translation> <translation id="2893168226686371498">Zadani preglednik</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 tekst}one{# tekst}few{# teksta}other{# tekstova}}</translation> @@ -2562,6 +2563,7 @@ <translation id="3857807444929313943">Podignite i ponovo dodirnite</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Sinhroniziranje je pauzirano</translation> <translation id="3861638017150647085">Korisničko ime "<ph name="USERNAME" />" nije dostupno</translation> +<translation id="3861977424605124250">Prikaži prilikom pokretanja</translation> <translation id="3862693525629180217">Potvrdi koristeći ugrađeni senzor</translation> <translation id="3862788408946266506">Aplikacija s atributom deklaracije "kiosk_only" se mora instalirati u načinu rada kioska Chrome OS-a</translation> <translation id="3865414814144988605">Rezolucija</translation> @@ -2804,7 +2806,6 @@ <translation id="412730574613779332">Spandeks</translation> <translation id="4130199216115862831">Zapisnik uređaja</translation> <translation id="4130207949184424187">Ova ekstenzija je promijenila stranicu koja se prikazuje pri pretraživanju iz višenamjenskog okvira.</translation> -<translation id="4130344535649650885">Sačuvati lozinku na Google račun?</translation> <translation id="4130750466177569591">Slažem se</translation> <translation id="413121957363593859">Komponente</translation> <translation id="4131410914670010031">Crno-bijelo</translation> @@ -3203,6 +3204,7 @@ <translation id="4627442949885028695">Nastavite s drugog uređaja</translation> <translation id="4628757576491864469">Uređaji</translation> <translation id="4628762811416793313">Postavljanje Linux spremnika nije završeno. Pokušajte ponovo.</translation> +<translation id="4629521233550547305">Otvorite profil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Minimalna verzija za "<ph name="IMPORT_NAME" />" koju zahtijeva ekstenzija je "<ph name="IMPORT_VERSION" />", ali je instalirana samo verzija "<ph name="INSTALLED_VERSION" />"</translation> <translation id="4633757335284074492">Izradite sigurnosne kopije na Google disku. Jednostavno u svakom trenutku vratite podatke ili promijenite uređaj. Ova sigurnosna kopija obuhvata podatke aplikacija. Sigurnosne kopije se otpremaju na Google i šifriraju pomoću lozinke Google računa vašeg djeteta.</translation> <translation id="4634575639321169635">Postavite ovaj uređaj za rad ili ličnu upotrebu</translation> @@ -3931,7 +3933,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Prijem <ph name="ATTACHMENTS" /> s uređaja <ph name="DEVICE_NAME" /> nije uspio}one{Prijem <ph name="ATTACHMENTS" /> s uređaja <ph name="DEVICE_NAME" /> nije uspio}few{Prijem <ph name="ATTACHMENTS" /> s uređaja <ph name="DEVICE_NAME" /> nije uspio}other{Prijem <ph name="ATTACHMENTS" /> s uređaja <ph name="DEVICE_NAME" /> nije uspio}}</translation> <translation id="5502500733115278303">Uvezeno iz Firefoxa</translation> <translation id="5502915260472117187">Dijete</translation> -<translation id="5503858713116291452">Provjerite nalazi li se telefon u blizini, je li otključan i jesu li Bluetooth i WiFi uključeni. Pratite korake na telefonu da završite postavljanje.</translation> <translation id="5503982651688210506">I dalje dozvoli da <ph name="HOST" /> koristi i pomjera kameru te koristi mikrofon</translation> <translation id="5505264765875738116">Web lokacije ne mogu tražiti da šalju obavještenja</translation> <translation id="5505307013568720083">Nema tinte</translation> @@ -3992,6 +3993,7 @@ <translation id="5565735124758917034">Aktivan</translation> <translation id="5567989639534621706">Keš memorije aplikacije</translation> <translation id="5568069709869097550">Ne možete se prijaviti</translation> +<translation id="5571832155627049070">Prilagodite profil</translation> <translation id="5572851009514199876">Pokrenite Chrome i prijavite se tako da Chrome može provjeriti imate li pristup ovoj web lokaciji.</translation> <translation id="5575473780076478375">Anonimna ekstenzija: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Došlo je do problema sa zahtjevom za registraciju u načinu rada za demonstraciju.</translation> @@ -5461,6 +5463,7 @@ <translation id="7280649757394340890">Postavke glasa za pretvaranje teksta u govor</translation> <translation id="7280877790564589615">Upućen je zahtjev za odobrenje</translation> <translation id="7282992757463864530">Infotraka</translation> +<translation id="7283555985781738399">Način rada za gosta</translation> <translation id="7284411326658527427">Svaka osoba može personalizirati svoj račun i čuvati privatnost podataka.</translation> <translation id="7287143125007575591">Pristup je odbijen.</translation> <translation id="7287411021188441799">Vrati zadanu pozadinu</translation> @@ -5840,6 +5843,7 @@ <translation id="7716781361494605745">URL za pravila tijela za izdavanje Netscape potvrda</translation> <translation id="7717014941119698257">Preuzimanje: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Web lokacije mogu tražiti vašu lokaciju (preporučeno)</translation> +<translation id="771721654176725387">Ovo će trajno izbrisati vaše podatke o pregledanju s ovog uređaja. Da vratite podatke, uključite funkciju Sinhroniziraj kao</translation> <translation id="7717845620320228976">Provjerite ima li ažuriranja</translation> <translation id="7719367874908701697">Zumiranje stranice</translation> <translation id="7719588063158526969">Naziv uređaja je predug</translation> @@ -5876,6 +5880,7 @@ <translation id="7765158879357617694">Pomjeri</translation> <translation id="7765507180157272835">Potrebni su Bluetooth i WiFi</translation> <translation id="7766082757934713382">Pomaže da se smanji prijenos podataka na mreži pauziranjem automatskih ažuriranja aplikacija i sistema</translation> +<translation id="7766807826975222231">Razgledajte</translation> <translation id="7766838926148951335">Prihvati odobrenja</translation> <translation id="7768507955883790804">Kada posjećujete web lokacije, one se automatski pridržavaju ovih postavki</translation> <translation id="7768770796815395237">Izmijeni</translation> @@ -6120,6 +6125,7 @@ <translation id="8017176852978888182">Dijeljeni direktoriji na Linuxu</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Prečica je uređena</translation> +<translation id="8018298733481692628">Izbrisati ovaj profil?</translation> <translation id="8018313076035239964">Kontrolirajte koje informacije web lokacije mogu koristiti i koji sadržaj vam mogu prikazivati</translation> <translation id="8023801379949507775">Ažuriraj ekstenzije sada</translation> <translation id="8026334261755873520">Obrišite podatke pregledanja</translation> @@ -6290,7 +6296,6 @@ <translation id="8211551284753798479">Nevažeći PUK. Broj preostalih pokušaja: <ph name="RETRIES" /></translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Preuzimanje je u toku}one{Preuzimanja su u toku}few{Preuzimanja su u toku}other{Preuzimanja su u toku}}</translation> <translation id="8213449224684199188">Ušli ste u način rada za fotografije</translation> -<translation id="8213866992824776555">Domena <ph name="DOMAIN" /> želi da identificira vaš uređaj kako bi mogla reproducirati zaštićeni video i audio zapis najvišeg kvaliteta.</translation> <translation id="8214489666383623925">Otvori fajl...</translation> <translation id="8214962590150211830">Ukloni ovu osobu</translation> <translation id="8216351761227087153">Pogledajte</translation> @@ -6769,7 +6774,6 @@ <translation id="8774379074441005279">Potvrda vraćanja</translation> <translation id="8774934320277480003">Gornja margina</translation> <translation id="8775144690796719618">Nevažeći URL</translation> -<translation id="8775163630211761057">Koristite najbolje funkcije Android telefona na uređaju <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> će se automatski zaključati za # sekundu. Domena <ph name="DOMAIN" /> zahtijeva da pametna kartica ostane umetnuta.}one{<ph name="DEVICE_TYPE" /> će se automatski zaključati za # sekundu. Domena <ph name="DOMAIN" /> zahtijeva da pametna kartica ostane umetnuta.}few{<ph name="DEVICE_TYPE" /> će se automatski zaključati za # sekunde. @@ -6960,6 +6964,7 @@ <translation id="8973596347849323817">Ovaj uređaj možete prilagoditi svojim potrebama. Ove funkcije pristupačnosti možete kasnije izmijeniti u Postavkama.</translation> <translation id="897414447285476047">Odredišni fajl je bio nepotpun zbog problema s vezom.</translation> <translation id="897525204902889653">Usluga karantina</translation> +<translation id="8975396729541388937">Otkažite pretplatu bilo kada klikom na link u e-porukama koje primite.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" i još jedna kartica}one{"<ph name="TAB_TITLE" />" i još # kartica}few{"<ph name="TAB_TITLE" />" i još # kartice}other{"<ph name="TAB_TITLE" />" i još # kartica}}</translation> <translation id="8977811652087512276">Netačna lozinka ili oštećen fajl</translation> <translation id="8978154919215542464">Uključeno – sinkronizacija svega</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index 6d289c13..f0738c2 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Cap contrasenya en perill}=1{1 contrasenya en perill}other{{NUM_COMPROMISED} contrasenyes en perill}}</translation> <translation id="1380028686461971526">Connecta automàticament a la xarxa</translation> <translation id="1380436189840894976">Vols sortir del mode d'incògnit de totes maneres?</translation> +<translation id="1383597849754832576">No es poden baixar fitxers de veu. Torna-ho a provar més tard.</translation> <translation id="1383861834909034572">S'obre després de finalitzar</translation> <translation id="1383876407941801731">Cerca</translation> <translation id="1386791642444521222">Activa la SIM física</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">S'ha produït un error en activar l'ús compartit. Comprova les credencials i torna-ho a provar.</translation> <translation id="1956050014111002555">El fitxer conté certificats múltiples, però cap d'ells no s'ha importat:</translation> <translation id="1956390763342388273">Es penjaran tots els fitxers que hi ha a <ph name="FOLDER_PATH" />. Fes-ho només si confies en el lloc web.</translation> -<translation id="1960158217849594135">Vols desar el nom d'usuari al teu Compte de Google?</translation> <translation id="196040970347962278">Primer, estableix una connexió a Internet</translation> <translation id="1962233722219655970">Aquesta pàgina fa servir una aplicació de Native Client que no funciona al vostre ordinador.</translation> <translation id="1963227389609234879">Suprimeix-ho tot</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Sense protecció (opció no recomanada)</translation> <translation id="1987317783729300807">Comptes</translation> <translation id="1989112275319619282">Examina</translation> +<translation id="1990046457226896323">S'han baixat els fitxers de veu</translation> <translation id="1990512225220753005">No mostris dreceres en aquesta pàgina</translation> <translation id="1992397118740194946">No establerta</translation> <translation id="1992924914582925289">Suprimeix del dispositiu</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Per obtenir funcions addicionals, fes servir una base de connexió Dell que funcioni amb aquest Chromebook.</translation> <translation id="215753907730220065">Surt de la pantalla completa</translation> <translation id="2157875535253991059">Ara aquesta pàgina es mostra a pantalla completa.</translation> -<translation id="2160589599612868242">Rep les notificacions del telèfon al <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Afegeix una Wi-Fi...</translation> <translation id="2162155940152307086">La sincronització començarà quan surtis de la configuració de la sincronització</translation> <translation id="2162838847352058695">Impedeix que els llocs web baixin automàticament diversos fitxers</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Les notificacions estan activades</translation> <translation id="2399939490305346086">Dades d'inici de sessió de la clau de seguretat</translation> <translation id="2400664245143453337">Cal una actualització immediatament</translation> +<translation id="2406153734066939945">Vols suprimir aquest perfil i les dades associades?</translation> <translation id="2408018932941436077">S'està desant la targeta</translation> <translation id="2408955596600435184">Introdueix el PIN</translation> <translation id="241082044617551207">Connector desconegut</translation> @@ -1382,6 +1383,7 @@ <translation id="2526590354069164005">Escriptori</translation> <translation id="2526619973349913024">Cerca actualitzacions</translation> <translation id="2527167509808613699">Qualsevol tipus de connexió</translation> +<translation id="2530166226437958497">Resolució de problemes</translation> <translation id="2532589005999780174">Mode d'alt contrast</translation> <translation id="253434972992662860">P&ausa</translation> <translation id="2534460670861217804">Servidor intermediari HTTP segur</translation> @@ -1699,7 +1701,6 @@ <translation id="2885729872133513017">S'ha produït un problema en descodificar la resposta del servidor.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Obre l'enllaç amb...</translation> -<translation id="2889481634493693121">Activa les notificacions al telèfon</translation> <translation id="2889925978073739256">Continua bloquejant els connectors de fora de la zona de proves</translation> <translation id="2893168226686371498">Navegador predeterminat</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 fragment de text}other{# fragments de text}}</translation> @@ -2559,6 +2560,7 @@ <translation id="3857807444929313943">Aixeca el dit i toca de nou</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: la sincronització s'ha posat en pausa</translation> <translation id="3861638017150647085">El nom d'usuari "<ph name="USERNAME" />" no està disponible</translation> +<translation id="3861977424605124250">Mostra a l'inici</translation> <translation id="3862693525629180217">Verifica la teva identitat amb un sensor integrat</translation> <translation id="3862788408946266506">L'aplicació amb l'atribut del fitxer de manifest "kiosk_only" s'ha d'instal·lar en mode quiosc a Chrome OS</translation> <translation id="3865414814144988605">Resolució</translation> @@ -2800,7 +2802,6 @@ <translation id="412730574613779332">Superheroi</translation> <translation id="4130199216115862831">Registre del dispositiu</translation> <translation id="4130207949184424187">Aquesta extensió ha canviat la pàgina que es mostra quan feu una cerca des de l'omnibox.</translation> -<translation id="4130344535649650885">Vols desar la contrasenya al teu Compte de Google?</translation> <translation id="4130750466177569591">Accepto</translation> <translation id="413121957363593859">Components</translation> <translation id="4131410914670010031">Blanc i negre</translation> @@ -3199,6 +3200,7 @@ <translation id="4627442949885028695">Continua des d'un altre dispositiu</translation> <translation id="4628757576491864469">Dispositius</translation> <translation id="4628762811416793313">La configuració del contenidor de Linux no s'ha completat. Torna-ho a provar.</translation> +<translation id="4629521233550547305">Obre el perfil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">L'extensió requereix <ph name="IMPORT_NAME" /> amb <ph name="IMPORT_VERSION" /> com a versió mínima, però només hi ha instal·lada la versió <ph name="INSTALLED_VERSION" /></translation> <translation id="4633757335284074492">Crea còpies de seguretat a Google Drive. Canvia de dispositiu o restaura'n les dades fàcilment en qualsevol moment. Aquesta còpia de seguretat inclou dades d'aplicacions. Les còpies de seguretat es pengen a Google i s'encripten amb la contrasenya del Compte de Google del teu fill.</translation> <translation id="4634575639321169635">Configura aquest dispositiu per a la feina o per a ús personal</translation> @@ -3928,7 +3930,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{No s'ha pogut rebre el contingut següent del dispositiu <ph name="DEVICE_NAME" />: <ph name="ATTACHMENTS" />}other{No s'ha pogut rebre el contingut següent del dispositiu <ph name="DEVICE_NAME" />: <ph name="ATTACHMENTS" />}}</translation> <translation id="5502500733115278303">Importat de Firefox</translation> <translation id="5502915260472117187">Un nen</translation> -<translation id="5503858713116291452">Comprova que el telèfon sigui a prop teu, que estigui desbloquejat i que tingui el Bluetooth i la Wi‑Fi activats. Segueix els passos al telèfon per completar la configuració.</translation> <translation id="5503982651688210506">Continua permetent que <ph name="HOST" /> utilitzi i mogui la càmera i utilitzi el micròfon</translation> <translation id="5505264765875738116">Els llocs web no poden demanar-te permís per enviar-te notificacions</translation> <translation id="5505307013568720083">No queda tinta</translation> @@ -3989,6 +3990,7 @@ <translation id="5565735124758917034">Actiu</translation> <translation id="5567989639534621706">Memòries cau de l'aplicació</translation> <translation id="5568069709869097550">No puc accedir</translation> +<translation id="5571832155627049070">Personalitza el perfil</translation> <translation id="5572851009514199876">Obre Chrome i inicia-hi la sessió perquè Chrome pugui comprovar si tens permís per accedir a aquest lloc.</translation> <translation id="5575473780076478375">Extensió d'incògnit: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">S'ha produït un problema amb la sol·licitud per registrar la demostració.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Configuració de la veu de text a parla</translation> <translation id="7280877790564589615">Permís sol·licitat</translation> <translation id="7282992757463864530">Barra d'informació</translation> +<translation id="7283555985781738399">Mode de convidat</translation> <translation id="7284411326658527427">Cada persona pot personalitzar el seu compte i mantenir la privadesa de les dades.</translation> <translation id="7287143125007575591">Accés denegat.</translation> <translation id="7287411021188441799">Restaura el fons predeterminat</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">URL de norma d'entitat emissora de certificats de Netscape</translation> <translation id="7717014941119698257">S'està baixant: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Els llocs web poden demanar permís per veure la teva ubicació (opció recomanada)</translation> +<translation id="771721654176725387">Amb aquesta acció, se suprimiran les teves dades de navegació d'aquest dispositiu permanentment. Per recuperar-les, activa la sincronització com a</translation> <translation id="7717845620320228976">Cerca actualitzacions</translation> <translation id="7719367874908701697">Zoom de la pàgina</translation> <translation id="7719588063158526969">El nom del dispositiu és massa llarg</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Mou</translation> <translation id="7765507180157272835">Es necessita Bluetooth i Wi‑Fi</translation> <translation id="7766082757934713382">Ajuda a reduir l'ús de dades de la xarxa en posar en pausa les actualitzacions automàtiques d'aplicacions i del sistema</translation> +<translation id="7766807826975222231">Visita guiada</translation> <translation id="7766838926148951335">Accepta els permisos</translation> <translation id="7768507955883790804">Aquesta opció de configuració s'aplica automàticament als llocs web quan els visites</translation> <translation id="7768770796815395237">Canvia</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">Directoris compartits de Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">S'ha editat la drecera</translation> +<translation id="8018298733481692628">Vols suprimir aquest perfil?</translation> <translation id="8018313076035239964">Controla quina informació poden utilitzar i quin contingut et poden mostrar els llocs web</translation> <translation id="8023801379949507775">Actualitza les extensions ara </translation> <translation id="8026334261755873520">Esborra les dades de navegació</translation> @@ -6287,7 +6293,6 @@ <translation id="8211551284753798479">El PUK no és vàlid. Et queden <ph name="RETRIES" /> intents.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Baixada en curs}other{Baixades en curs}}</translation> <translation id="8213449224684199188">S'ha entrat al mode de fotos</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> vol identificar el teu dispositiu per poder reproduir els vídeos i àudios protegits amb la màxima qualitat.</translation> <translation id="8214489666383623925">Obre un fitxer...</translation> <translation id="8214962590150211830">Suprimeix aquesta persona</translation> <translation id="8216351761227087153">Mira</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Confirma la restauració</translation> <translation id="8774934320277480003">Marge superior</translation> <translation id="8775144690796719618">URL no vàlid</translation> -<translation id="8775163630211761057">Porta el millor del teu telèfon Android al dispositiu <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{El teu dispositiu <ph name="DEVICE_TYPE" /> es bloquejarà automàticament d'aquí a # segon. <ph name="DOMAIN" /> requereix que mantinguis la targeta intel·ligent inserida.}other{El teu dispositiu <ph name="DEVICE_TYPE" /> es bloquejarà automàticament d'aquí a # segons. <ph name="DOMAIN" /> requereix que mantinguis la targeta intel·ligent inserida.}}</translation> @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">Pots personalitzar el dispositiu perquè s'adapti a les teves necessitats. Aquestes funcions d'accessibilitat es poden canviar més endavant des de Configuració.</translation> <translation id="897414447285476047">El fitxer de destinació no s'ha completat a causa d'un problema de connexió.</translation> <translation id="897525204902889653">Servei de quarantena</translation> +<translation id="8975396729541388937">Pots cancel·lar la subscripció en qualsevol moment fent clic a l'enllaç que trobaràs als correus electrònics que rebis.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" i 1 pestanya més}other{"<ph name="TAB_TITLE" />" i # pestanyes més}}</translation> <translation id="8977811652087512276">Contrasenya incorrecta o fitxer malmès</translation> <translation id="8978154919215542464">Activat: se sincronitza tot</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index 4959fae..6943825 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -340,6 +340,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Nebyla nalezena žádná prolomená hesla}=1{Bylo nalezeno jedno prolomené heslo}few{Byla nalezena {NUM_COMPROMISED} prolomená hesla}many{Bylo nalezeno {NUM_COMPROMISED} prolomeného hesla}other{Bylo nalezeno {NUM_COMPROMISED} prolomených hesel}}</translation> <translation id="1380028686461971526">Automaticky se připojit k síti</translation> <translation id="1380436189840894976">Přesto anonymní režim ukončit?</translation> +<translation id="1383597849754832576">Stažení řečových souborů se nezdařilo. Zkuste to znovu později.</translation> <translation id="1383861834909034572">Otevřít po dokončení</translation> <translation id="1383876407941801731">Vyhledávání</translation> <translation id="1386791642444521222">Aktivovat fyzickou SIM kartu</translation> @@ -878,7 +879,6 @@ <translation id="1954813140452229842">Při připojování sdílené složky došlo k chybě. Zkontrolujte identifikační údaje a zkuste to znovu.</translation> <translation id="1956050014111002555">Soubor obsahoval více certifikátů, ale žádný z nich nebyl importován:</translation> <translation id="1956390763342388273">Touto akcí nahrajete všechny soubory ze složky <ph name="FOLDER_PATH" />. Proveďte ji pouze v případě, že webu důvěřujete.</translation> -<translation id="1960158217849594135">Chcete uživatelské jméno uložit do svého účtu Google?</translation> <translation id="196040970347962278">Nejdřív navažte připojení k internetu</translation> <translation id="1962233722219655970">Tato stránka používá aplikaci nativního klienta, která ve vašem počítači nefunguje.</translation> <translation id="1963227389609234879">Odstranit vše</translation> @@ -904,6 +904,7 @@ <translation id="1984417487208496350">Bez ochrany (nedoporučujeme)</translation> <translation id="1987317783729300807">Účty</translation> <translation id="1989112275319619282">Procházet</translation> +<translation id="1990046457226896323">Stažené řečové soubory</translation> <translation id="1990512225220753005">Nezobrazovat zkratky na této stránce</translation> <translation id="1992397118740194946">Hodnota není nastavena</translation> <translation id="1992924914582925289">Odstranit ze zařízení</translation> @@ -1049,7 +1050,6 @@ <translation id="2157474325782140681">Chcete-li získat další funkce, použijte dokovací stanici Dell kompatibilní s tímto Chromebookem.</translation> <translation id="215753907730220065">Ukončit režim celé obrazovky</translation> <translation id="2157875535253991059">Tato stránka se teď zobrazuje na celou obrazovku</translation> -<translation id="2160589599612868242">Dostávat oznámení z telefonu do zařízení <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Přidat Wi-Fi...</translation> <translation id="2162155940152307086">Synchronizace bude zahájena, až opustíte nastavení</translation> <translation id="2162838847352058695">Bránit webům automaticky stahovat více souborů</translation> @@ -1267,6 +1267,7 @@ <translation id="2399699884460174994">Oznámení jsou zapnutá</translation> <translation id="2399939490305346086">Přihlašovací údaje na bezpečnostním klíči</translation> <translation id="2400664245143453337">Je vyžadována okamžitá aktualizace</translation> +<translation id="2406153734066939945">Smazat tento profil a jeho data?</translation> <translation id="2408018932941436077">Ukládání karty</translation> <translation id="2408955596600435184">Zadejte PIN</translation> <translation id="241082044617551207">Neznámý plugin</translation> @@ -1384,6 +1385,7 @@ <translation id="2526590354069164005">Plocha</translation> <translation id="2526619973349913024">Zkontrolovat aktualizace</translation> <translation id="2527167509808613699">Jakýkoli typ spojení</translation> +<translation id="2530166226437958497">Odstraňování problémů</translation> <translation id="2532589005999780174">Režim vysokého kontrastu</translation> <translation id="253434972992662860">&Pozastavit</translation> <translation id="2534460670861217804">Proxy server protokolu HTTPS</translation> @@ -1701,7 +1703,6 @@ <translation id="2885729872133513017">Při dekódování odpovědi serveru došlo k chybě.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Otevřít odkaz pomocí...</translation> -<translation id="2889481634493693121">Zapnout oznámení na telefonu</translation> <translation id="2889925978073739256">Pokračovat v blokování pluginů mimo izolovaný prostor</translation> <translation id="2893168226686371498">Výchozí prohlížeč</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 text}few{# textů}many{# textu}other{# textů}}</translation> @@ -2561,6 +2562,7 @@ <translation id="3857807444929313943">Zvedněte prst a dotkněte se znovu</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Synchronizace pozastavena</translation> <translation id="3861638017150647085">Uživatelské jméno „<ph name="USERNAME" />“ není dostupné</translation> +<translation id="3861977424605124250">Zobrazit při spuštění</translation> <translation id="3862693525629180217">Ověřit prostřednictvím integrovaného senzoru</translation> <translation id="3862788408946266506">Aplikace s atributem manifestu kiosk_only je třeba nainstalovat v režimu veřejného terminálu systému Chrome OS</translation> <translation id="3865414814144988605">Rozlišení</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Borec</translation> <translation id="4130199216115862831">Protokol zařízení</translation> <translation id="4130207949184424187">Toto rozšíření změnilo stránku, která se zobrazí při vyhledávání z omniboxu.</translation> -<translation id="4130344535649650885">Chcete heslo uložit do svého účtu Google?</translation> <translation id="4130750466177569591">Souhlasím</translation> <translation id="413121957363593859">Komponenty</translation> <translation id="4131410914670010031">Černobíle</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Pokračovat z jiného zařízení</translation> <translation id="4628757576491864469">Zařízení</translation> <translation id="4628762811416793313">Nastavení kontejneru systému Linux nebylo dokončeno. Zkuste to znovu.</translation> +<translation id="4629521233550547305">Otevřít profil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Rozšíření vyžaduje rozhraní <ph name="IMPORT_NAME" /> s minimální verzí <ph name="IMPORT_VERSION" />, máte však nainstalovanou pouze verzi <ph name="INSTALLED_VERSION" /></translation> <translation id="4633757335284074492">Zálohování na Disk Google. Snadno obnovte data nebo kdykoliv přejděte na jiné zařízení. Tato záloha obsahuje data aplikací. Zálohy se nahrávají do Googlu a šifrují pomocí hesla účtu Google dítěte.</translation> <translation id="4634575639321169635">Nastavte si toto zařízení jako pracovní nebo soukromé</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Přijetí dat (<ph name="ATTACHMENTS" />) ze zařízení <ph name="DEVICE_NAME" /> se nezdařilo}few{Přijetí dat (<ph name="ATTACHMENTS" />) ze zařízení <ph name="DEVICE_NAME" /> se nezdařilo}many{Přijetí dat (<ph name="ATTACHMENTS" />) ze zařízení <ph name="DEVICE_NAME" /> se nezdařilo}other{Přijetí dat (<ph name="ATTACHMENTS" />) ze zařízení <ph name="DEVICE_NAME" /> se nezdařilo}}</translation> <translation id="5502500733115278303">Importováno z Firefoxu</translation> <translation id="5502915260472117187">Dítě</translation> -<translation id="5503858713116291452">Zkontrolujte, zda je telefon poblíž, zda je odemknutý a zda na něm je zapnuté Bluetooth a Wi-Fi. Dokončete nastavení podle pokynů na telefonu.</translation> <translation id="5503982651688210506">Povolit webu <ph name="HOST" /> používat a natáčet kameru a používat mikrofon i nadále</translation> <translation id="5505264765875738116">Weby nemohou žádat o oprávnění zasílat vám oznámení</translation> <translation id="5505307013568720083">Došel inkoust</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Aktivní</translation> <translation id="5567989639534621706">Mezipaměti aplikací</translation> <translation id="5568069709869097550">Nepodařilo se přihlásit</translation> +<translation id="5571832155627049070">Upravte si profil</translation> <translation id="5572851009514199876">Přihlaste se do Chromu, aby bylo možné ověřit, zda máte povolení tento web navštívit.</translation> <translation id="5575473780076478375">Anonymní rozšíření: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Došlo k problému s ukázkovou žádostí o registraci.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Nastavení hlasu převodu textu na řeč</translation> <translation id="7280877790564589615">Jsou požadována oprávnění</translation> <translation id="7282992757463864530">Informační panel</translation> +<translation id="7283555985781738399">Režim hosta</translation> <translation id="7284411326658527427">Každý uživatel si může svůj účet přizpůsobit a chránit soukromí svých dat.</translation> <translation id="7287143125007575591">Přístup byl odepřen.</translation> <translation id="7287411021188441799">Obnovit výchozí pozadí</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">Adresa URL zásad certifikační autority Netscape</translation> <translation id="7717014941119698257">Stahování: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Weby mohou žádat o přístup k poloze (doporučeno)</translation> +<translation id="771721654176725387">Tímto z tohoto zařízení trvale smažete své údaje o prohlížení. Chcete-li údaje obnovit, zapněte synchronizaci jako</translation> <translation id="7717845620320228976">Kontrola dostupnosti aktualizací</translation> <translation id="7719367874908701697">Přiblížení/oddálení stránky</translation> <translation id="7719588063158526969">Název zařízení je příliš dlouhý</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Přesunout</translation> <translation id="7765507180157272835">Je potřeba Bluetooth a Wi-Fi</translation> <translation id="7766082757934713382">Pomáhá snižovat využití dat v síti prostřednictvím pozastavení automatických aktualizací aplikací a systému</translation> +<translation id="7766807826975222231">Spustit prohlídku</translation> <translation id="7766838926148951335">Přijmout oprávnění</translation> <translation id="7768507955883790804">Weby, které navštívíte, se automaticky řídí tímto nastavením</translation> <translation id="7768770796815395237">Změnit</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">Sdílené adresáře Linuxu</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Zkratka byla upravena</translation> +<translation id="8018298733481692628">Smazat tento profil?</translation> <translation id="8018313076035239964">Určete, jaký obsah vám webové stránky mohou zobrazovat a jaké údaje mohou využívat, když si je prohlížíte</translation> <translation id="8023801379949507775">Aktualizovat rozšíření</translation> <translation id="8026334261755873520">Vymazat údaje o prohlížení</translation> @@ -6287,7 +6293,6 @@ <translation id="8211551284753798479">Neplatný kód PUK. Počet zbývajících pokusů: <ph name="RETRIES" />.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Probíhá stahování}few{Probíhají stahování}many{Probíhají stahování}other{Probíhají stahování}}</translation> <translation id="8213449224684199188">Přešli jste do režimu fotek</translation> -<translation id="8213866992824776555">Web <ph name="DOMAIN" /> chce identifikovat vaše zařízení, aby mohl přehrát chráněné video a zvuk v nejvyšší kvalitě.</translation> <translation id="8214489666383623925">Otevřít soubor...</translation> <translation id="8214962590150211830">Odebrat tohoto uživatele</translation> <translation id="8216351761227087153">Sledovat</translation> @@ -6766,7 +6771,6 @@ <translation id="8774379074441005279">Potvrzení obnovení</translation> <translation id="8774934320277480003">Horní okraj</translation> <translation id="8775144690796719618">Neplatná adresa URL</translation> -<translation id="8775163630211761057">Zpřístupnit to nejlepší z telefonu Android v zařízení <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Zařízení <ph name="DEVICE_TYPE" /> se za # sekundu automaticky zamkne. <ph name="DOMAIN" /> vyžaduje, abyste čipovou kartu ponechali vloženou.}few{Zařízení <ph name="DEVICE_TYPE" /> se za # sekundy automaticky zamkne. <ph name="DOMAIN" /> vyžaduje, abyste čipovou kartu ponechali vloženou.}many{Zařízení <ph name="DEVICE_TYPE" /> se za # sekundy automaticky zamkne. @@ -6957,6 +6961,7 @@ <translation id="8973596347849323817">Toto zařízení můžete přizpůsobit svým potřebám. Funkce přístupnosti lze později změnit v Nastavení.</translation> <translation id="897414447285476047">Cílový soubor je neúplný kvůli problému s připojením.</translation> <translation id="897525204902889653">Karanténní služba</translation> +<translation id="8975396729541388937">Z odběru se můžete kdykoli odhlásit kliknutím na odkaz v doručených e-mailech.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />“}=1{„<ph name="TAB_TITLE" />“ a 1 další karta}few{„<ph name="TAB_TITLE" />“ a # další karty}many{„<ph name="TAB_TITLE" />“ a # další karty}other{„<ph name="TAB_TITLE" />“ a # dalších karet}}</translation> <translation id="8977811652087512276">Nesprávné heslo nebo poškozený soubor</translation> <translation id="8978154919215542464">Zapnuto – synchronizovat vše</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index f8fafa0..13b1d2e 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Ingen kompromitterede adgangskoder}=1{1 kompromitteret adgangskode}one{{NUM_COMPROMISED} kompromitteret adgangskode}other{{NUM_COMPROMISED} kompromitterede adgangskoder}}</translation> <translation id="1380028686461971526">Opret automatisk forbindelse til netværket</translation> <translation id="1380436189840894976">Vil du afslutte inkognitotilstand alligevel?</translation> +<translation id="1383597849754832576">Talefilerne kan ikke downloades. Prøv igen senere.</translation> <translation id="1383861834909034572">Åbnes, når fuldført</translation> <translation id="1383876407941801731">Søg</translation> <translation id="1386791642444521222">Aktivér fysisk SIM-kort</translation> @@ -877,7 +878,6 @@ <translation id="1954813140452229842">Der opstod en fejl ved anvendelse af deling. Tjek dine loginoplysninger, og prøv igen.</translation> <translation id="1956050014111002555">Filen indeholdt flere certifikater, hvoraf ingen af dem blev importeret:</translation> <translation id="1956390763342388273">Denne handling uploader alle filer fra "<ph name="FOLDER_PATH" />". Gør kun dette, hvis du har tillid til websitet.</translation> -<translation id="1960158217849594135">Vil du gemme brugernavnet på din Google-konto?</translation> <translation id="196040970347962278">Opret først en internetforbindelse</translation> <translation id="1962233722219655970">Denne side bruger en Native Client-app, der ikke virker på din computer.</translation> <translation id="1963227389609234879">Slet alle</translation> @@ -903,6 +903,7 @@ <translation id="1984417487208496350">Ingen beskyttelse (anbefales ikke)</translation> <translation id="1987317783729300807">Konti</translation> <translation id="1989112275319619282">Gennemse</translation> +<translation id="1990046457226896323">Talefilerne blev downloadet</translation> <translation id="1990512225220753005">Vis ikke genveje på denne side</translation> <translation id="1992397118740194946">Ikke angivet</translation> <translation id="1992924914582925289">Fjern fra enhed</translation> @@ -1048,7 +1049,6 @@ <translation id="2157474325782140681">Hvis du vil have yderligere funktioner, skal du bruge en Dell-dockingstation, som er udviklet til at fungere sammen med denne Chromebook.</translation> <translation id="215753907730220065">Afslut fuld skærm</translation> <translation id="2157875535253991059">Denne side er nu i fuld skærm.</translation> -<translation id="2160589599612868242">Få notifikationer fra din telefon på din <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Tilføj Wi-Fi...</translation> <translation id="2162155940152307086">Synkroniseringen starter, når du forlader indstillingerne for synkronisering</translation> <translation id="2162838847352058695">Bloker websites, så de ikke kan downloade flere filer automatisk</translation> @@ -1266,6 +1266,7 @@ <translation id="2399699884460174994">Notifikationer er slået til</translation> <translation id="2399939490305346086">Logindata på sikkerhedsnøglen</translation> <translation id="2400664245143453337">Kræver omgående opdatering</translation> +<translation id="2406153734066939945">Vil du slette denne profil og de tilhørende data?</translation> <translation id="2408018932941436077">Gemmer kort</translation> <translation id="2408955596600435184">Angiv din pinkode</translation> <translation id="241082044617551207">Ukendt plugin</translation> @@ -1384,6 +1385,7 @@ <translation id="2526590354069164005">Skrivebord</translation> <translation id="2526619973349913024">Søg efter opdatering</translation> <translation id="2527167509808613699">Enhver form for forbindelse</translation> +<translation id="2530166226437958497">Fejlfinding</translation> <translation id="2532589005999780174">Tilstanden Høj kontrast</translation> <translation id="253434972992662860">&Pause</translation> <translation id="2534460670861217804">Sikker HTTP-proxy</translation> @@ -1701,7 +1703,6 @@ <translation id="2885729872133513017">Der opstod et problem under afkodningen af serversvaret.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Åbn link med...</translation> -<translation id="2889481634493693121">Aktivér notifikationer på din telefon</translation> <translation id="2889925978073739256">Fortsæt blokering af plugins, der ikke er gemt i sandbox</translation> <translation id="2893168226686371498">Standardbrowser</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 sms}one{# sms}other{# sms}}</translation> @@ -2561,6 +2562,7 @@ <translation id="3857807444929313943">Løft, og tryk igen</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Synkronisering er sat på pause</translation> <translation id="3861638017150647085">Brugernavnet "<ph name="USERNAME" />" er ikke tilgængeligt</translation> +<translation id="3861977424605124250">Vis ved opstart</translation> <translation id="3862693525629180217">Bekræft via indbygget sensor</translation> <translation id="3862788408946266506">Appen med manifestattributten "kiosk_only" skal installeres i ChromeOS-terminaltilstand</translation> <translation id="3865414814144988605">Opløsning</translation> @@ -2803,7 +2805,6 @@ <translation id="412730574613779332">Superhelt</translation> <translation id="4130199216115862831">Logfil for enheden</translation> <translation id="4130207949184424187">Denne udvidelse har ændret, hvilken side der vises, når du søger via omnifeltet.</translation> -<translation id="4130344535649650885">Vil du gemme adgangskoden på din Google-konto?</translation> <translation id="4130750466177569591">Jeg accepterer</translation> <translation id="413121957363593859">Komponenter</translation> <translation id="4131410914670010031">Sort/hvid</translation> @@ -3202,6 +3203,7 @@ <translation id="4627442949885028695">Fortsæt fra en anden enhed</translation> <translation id="4628757576491864469">Enheder</translation> <translation id="4628762811416793313">Konfigurationen af Linux-containeren blev ikke fuldført. Prøv igen.</translation> +<translation id="4629521233550547305">Åbn profilen <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Udvidelsen skal bruge "<ph name="IMPORT_NAME" />" med minimumversionen "<ph name="IMPORT_VERSION" />", men kun versionen "<ph name="INSTALLED_VERSION" />" er installeret</translation> <translation id="4633757335284074492">Sikkerhedskopiér i Google Drev. Gendan nemt data, eller skift enhed når som helst. Denne backup omfatter appdata. Backups uploades til Google og krypteres ved hjælp af adgangskoden til dit barns Google-konto.</translation> <translation id="4634575639321169635">Konfigurer denne enhed til personlig brug eller arbejdsbrug</translation> @@ -3930,7 +3932,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="ATTACHMENTS" /> kunne ikke hentes fra <ph name="DEVICE_NAME" />}one{Failed to receive <ph name="ATTACHMENTS" /> from <ph name="DEVICE_NAME" />}other{<ph name="ATTACHMENTS" /> kunne ikke hentes fra <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Importeret fra Firefox</translation> <translation id="5502915260472117187">Et barn</translation> -<translation id="5503858713116291452">Sørg for, at din telefon er i nærheden, at den er låst op, og at Bluetooth og Wi-Fi er aktiveret. Følg vejledningen på din telefon for at gennemføre konfigurationen.</translation> <translation id="5503982651688210506">Tillad fortsat, at <ph name="HOST" /> kan bruge og flytte dit kamera samt bruge din mikrofon</translation> <translation id="5505264765875738116">Websites kan ikke spørge dig, om de må sende dig notifikationer</translation> <translation id="5505307013568720083">Der mangler blæk</translation> @@ -3991,6 +3992,7 @@ <translation id="5565735124758917034">Aktiv</translation> <translation id="5567989639534621706">Applikationscaches</translation> <translation id="5568069709869097550">Kan ikke logge ind</translation> +<translation id="5571832155627049070">Tilpas din profil</translation> <translation id="5572851009514199876">Start og log ind på Chrome, så Chrome kan kontrollere, om du har adgang til dette website.</translation> <translation id="5575473780076478375">Inkognitoudvidelse: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Der opstod et problem med anmodningen om demoregistrering.</translation> @@ -5461,6 +5463,7 @@ <translation id="7280649757394340890">Taleindstillinger for oplæsning</translation> <translation id="7280877790564589615">Der er anmodet om tilladelse</translation> <translation id="7282992757463864530">Oplysningsbjælke</translation> +<translation id="7283555985781738399">Gæstetilstand</translation> <translation id="7284411326658527427">Hver person kan tilpasse sin konto og holde sine data private.</translation> <translation id="7287143125007575591">Adgang nægtet.</translation> <translation id="7287411021188441799">Gendan standardbaggrund</translation> @@ -5840,6 +5843,7 @@ <translation id="7716781361494605745">Webadresse for Netscapes politik til certifikatautoritet</translation> <translation id="7717014941119698257">Downloader: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Websites kan anmode om din placering (anbefales)</translation> +<translation id="771721654176725387">Denne handling sletter dine browserdata permanent fra denne enhed. Du kan gendanne dataene ved at aktivere synkronisering med</translation> <translation id="7717845620320228976">Søg efter opdateringer</translation> <translation id="7719367874908701697">Sidezoom</translation> <translation id="7719588063158526969">Enhedsnavnet er for langt</translation> @@ -5876,6 +5880,7 @@ <translation id="7765158879357617694">Flyt</translation> <translation id="7765507180157272835">Der kræves Bluetooth eller Wi-Fi</translation> <translation id="7766082757934713382">Du kan reducere brugen af netværksdata ved at sætte automatiske app- og systemopdateringer på pause</translation> +<translation id="7766807826975222231">Få en rundvisning</translation> <translation id="7766838926148951335">Acceptér tilladelser</translation> <translation id="7768507955883790804">Websites følger automatisk denne indstilling, når du besøger dem</translation> <translation id="7768770796815395237">Skift</translation> @@ -6119,6 +6124,7 @@ <translation id="8017176852978888182">Delte indekser i Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Genvejen blev redigeret</translation> +<translation id="8018298733481692628">Vil du slette denne profil?</translation> <translation id="8018313076035239964">Kontrollér, hvilke oplysninger websites kan bruge, og hvilket indhold de kan vise dig</translation> <translation id="8023801379949507775">Opdater udvidelser nu</translation> <translation id="8026334261755873520">Ryd browserdata</translation> @@ -6289,7 +6295,6 @@ <translation id="8211551284753798479">PUK-koden er ugyldig. Du har <ph name="RETRIES" /> forsøg tilbage.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Downloaden er i gang}one{Downloaden er i gang}other{Downloadene er i gang}}</translation> <translation id="8213449224684199188">Fototilstand er aktiveret</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> vil gerne identificere din enhed, så den kan afspille beskyttet video- og lydindhold i højest mulig kvalitet.</translation> <translation id="8214489666383623925">Åbn fil...</translation> <translation id="8214962590150211830">Fjern denne person</translation> <translation id="8216351761227087153">Se</translation> @@ -6769,7 +6774,6 @@ <translation id="8774379074441005279">Bekræft gendannelse</translation> <translation id="8774934320277480003">Topmargen</translation> <translation id="8775144690796719618">Ugyldig webadresse</translation> -<translation id="8775163630211761057">Få det bedste fra din Android-telefon på din <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Din <ph name="DEVICE_TYPE" /> låses automatisk om # sekund. <ph name="DOMAIN" /> kræver, at chipkortet er indsat.}one{Din <ph name="DEVICE_TYPE" /> låses automatisk om # sekund. <ph name="DOMAIN" /> kræver, at chipkortet er indsat.}other{Din <ph name="DEVICE_TYPE" /> låses automatisk om # sekunder. @@ -6959,6 +6963,7 @@ <translation id="8973596347849323817">Du kan tilpasse denne enhed, så den passer til dine behov. Disse hjælpefunktioner kan ændres senere i Indstillinger.</translation> <translation id="897414447285476047">Destinationsfilen var ufuldstændig pga. et forbindelsesproblem.</translation> <translation id="897525204902889653">Karantænetjeneste</translation> +<translation id="8975396729541388937">Du kan til enhver tid afmelde ved at klikke på linket i de mails, du modtager.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" og 1 anden fane}one{"<ph name="TAB_TITLE" />" og # anden fane}other{"<ph name="TAB_TITLE" />" og # andre faner}}</translation> <translation id="8977811652087512276">Forkert adgangskode eller beskadiget fil</translation> <translation id="8978154919215542464">Til – synkroniser alt</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index bd7f3460..354aced 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -873,7 +873,6 @@ <translation id="1954813140452229842">Fehler beim Bereitstellen der Freigabe. Überprüfen Sie Ihre Anmeldedaten und versuchen Sie es noch einmal.</translation> <translation id="1956050014111002555">Die Datei enthielt mehrere Zertifikate, von denen keines importiert wurde:</translation> <translation id="1956390763342388273">Hierdurch werden alle Dateien aus "<ph name="FOLDER_PATH" />" hochgeladen. Tun Sie dies nur, wenn Sie die Website als vertrauenswürdig einstufen.</translation> -<translation id="1960158217849594135">Nutzernamen in Ihrem Google-Konto speichern?</translation> <translation id="196040970347962278">Zuerst eine Verbindung zum Internet herstellen</translation> <translation id="1962233722219655970">Diese Seite verwendet eine Native Client App, die auf Ihrem Computer nicht funktioniert.</translation> <translation id="1963227389609234879">Alle entfernen</translation> @@ -1044,7 +1043,6 @@ <translation id="2157474325782140681">Verwenden Sie eine für dieses Chromebook entwickelte Dockingstation von Dell, um zusätzliche Funktionen nutzen zu können.</translation> <translation id="215753907730220065">Vollbildmodus aus</translation> <translation id="2157875535253991059">Diese Seite wird nun im Vollbildmodus angezeigt.</translation> -<translation id="2160589599612868242">Benachrichtigungen von Ihrem Smartphone auf Ihrem <ph name="DEVICE_TYPE" /> erhalten</translation> <translation id="216169395504480358">WLAN hinzufügen...</translation> <translation id="2162155940152307086">Die Synchronisierung wird gestartet, sobald Sie die Synchronisierungseinstellungen verlassen</translation> <translation id="2162838847352058695">Websites daran hindern, mehrere Dateien automatisch herunterzuladen</translation> @@ -1367,7 +1365,7 @@ <translation id="2510988373360790637">Bluetooth-Gerät entfernen</translation> <translation id="2513396635448525189">Anmeldebild</translation> <translation id="2515586267016047495">Alt</translation> -<translation id="2517472476991765520">Suchen</translation> +<translation id="2517472476991765520">Scannen</translation> <translation id="2518024842978892609">Clientzertifikate verwenden</translation> <translation id="2519517390894391510">Name des Zertifikats</translation> <translation id="2520644704042891903">Warten auf verfügbaren Socket...</translation> @@ -1696,7 +1694,6 @@ <translation id="2885729872133513017">Beim Decodieren der Serverantwort ist ein Problem aufgetreten.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Link öffnen mit...</translation> -<translation id="2889481634493693121">Benachrichtigungen auf Ihrem Smartphone aktivieren</translation> <translation id="2889925978073739256">Plug-ins ohne Sandbox weiterhin blockieren</translation> <translation id="2893168226686371498">Standardbrowser</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 Text}other{# Texte}}</translation> @@ -2798,7 +2795,6 @@ <translation id="412730574613779332">Superheld</translation> <translation id="4130199216115862831">Geräteprotokoll</translation> <translation id="4130207949184424187">Diese Erweiterung hat die Seite geändert, die bei der Suche über die Omnibox angezeigt wird.</translation> -<translation id="4130344535649650885">Passwort in Ihrem Google-Konto speichern?</translation> <translation id="4130750466177569591">Ich stimme zu</translation> <translation id="413121957363593859">Komponenten</translation> <translation id="4131410914670010031">Schwarz-Weiß</translation> @@ -3925,7 +3921,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Fehler beim Empfangen von <ph name="ATTACHMENTS" /> von <ph name="DEVICE_NAME" />}other{Fehler beim Empfangen von <ph name="ATTACHMENTS" /> von <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Aus Firefox importiert</translation> <translation id="5502915260472117187">Ein Kind</translation> -<translation id="5503858713116291452">Dein Smartphone muss sich in der Nähe befinden, entsperrt sein und Bluetooth und WLAN müssen aktiviert sein. Führe die Schritte auf deinem Smartphone aus, um die Einrichtung abzuschließen.</translation> <translation id="5503982651688210506"><ph name="HOST" /> weiterhin erlauben, meine Kamera zu verwenden und zu bewegen sowie mein Mikrofon zu benutzen</translation> <translation id="5505264765875738116">Websites können nicht fragen, ob Sie Benachrichtigungen erhalten möchten</translation> <translation id="5505307013568720083">Patrone leer</translation> @@ -3986,6 +3981,7 @@ <translation id="5565735124758917034">Aktiv</translation> <translation id="5567989639534621706">Caches</translation> <translation id="5568069709869097550">Anmeldung nicht möglich</translation> +<translation id="5571832155627049070">Profil anpassen</translation> <translation id="5572851009514199876">Melden Sie sich zuerst in Chrome an, damit überprüft werden kann, ob Sie auf diese Website zugreifen dürfen.</translation> <translation id="5575473780076478375">Anonyme Erweiterung: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Ein Problem mit der Demoregistrierungsanforderung ist aufgetreten.</translation> @@ -5870,6 +5866,7 @@ <translation id="7765158879357617694">Verschieben</translation> <translation id="7765507180157272835">Bluetooth und WLAN erforderlich</translation> <translation id="7766082757934713382">Trägt dazu bei, die Netzwerkdatennutzung durch Pausieren von automatischen App- und Systemupdates zu reduzieren</translation> +<translation id="7766807826975222231">Tour starten</translation> <translation id="7766838926148951335">Berechtigungen akzeptieren</translation> <translation id="7768507955883790804">Wenn Sie Websites aufrufen, wird diese Einstellung automatisch angewandt</translation> <translation id="7768770796815395237">Ändern</translation> @@ -6283,7 +6280,6 @@ <translation id="8211551284753798479">Ungültiger PUK. Du hast noch <ph name="RETRIES" /> Versuche.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Download wird ausgeführt}other{Downloads werden ausgeführt}}</translation> <translation id="8213449224684199188">Fotomodus aktiviert</translation> -<translation id="8213866992824776555">Für die Wiedergabe von geschützten Video- und Audioinhalten in hoher Qualität muss <ph name="DOMAIN" /> Ihr Gerät eindeutig identifizieren können.</translation> <translation id="8214489666383623925">Datei öffnen...</translation> <translation id="8214962590150211830">Diese Person entfernen</translation> <translation id="8216351761227087153">Ansehen</translation> @@ -6762,7 +6758,6 @@ <translation id="8774379074441005279">Wiederherstellung bestätigen</translation> <translation id="8774934320277480003">Oberer Rand</translation> <translation id="8775144690796719618">Ungültige URL</translation> -<translation id="8775163630211761057">Das Beste von Ihrem Android-Smartphone für Ihr <ph name="DEVICE_TYPE" /> freigeben</translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> wird automatisch in # Sekunde gesperrt. <ph name="DOMAIN" /> erfordert, dass deine Smartcard eingesteckt ist.}other{<ph name="DEVICE_TYPE" /> wird automatisch in # Sekunden gesperrt. <ph name="DOMAIN" /> erfordert, dass deine Smartcard eingesteckt ist.}}</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index 8c820e9..0ac705a 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Δεν υπάρχουν παραβιασμένοι κωδικοί πρόσβασης}=1{1 παραβιασμένος κωδικός πρόσβασης}other{{NUM_COMPROMISED} παραβιασμένοι κωδικοί πρόσβασης}}</translation> <translation id="1380028686461971526">Αυτόματη σύνδεση στο δίκτυο</translation> <translation id="1380436189840894976">Θέλετε να εξέλθετε από την κατάσταση ανώνυμης περιήγησης;</translation> +<translation id="1383597849754832576">Δεν είναι δυνατή η λήψη αρχείων ομιλίας. Δοκιμάστε ξανά αργότερα.</translation> <translation id="1383861834909034572">Άνοιγμα κατά την ολοκλήρωση</translation> <translation id="1383876407941801731">Αναζήτηση</translation> <translation id="1386791642444521222">Ενεργοποίηση φυσικής SIM</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Σφάλμα κατά την προσάρτηση του συστήματος κοινοποίησης. Ελέγξτε τα διαπιστευτήριά σας και προσπαθήστε ξανά.</translation> <translation id="1956050014111002555">Το αρχείο περιείχε πολλαπλά πιστοποιητικά, από τα οποία δεν εισάχθηκε κανένα:</translation> <translation id="1956390763342388273">Αυτή η ενέργεια θα ανεβάσει όλα τα αρχεία από το φάκελο "<ph name="FOLDER_PATH" />". Κάντε την ενέργεια μόνο αν εμπιστεύεστε τον ιστότοπο.</translation> -<translation id="1960158217849594135">Αποθήκευση του ονόματος χρήστη στον Λογαριασμό σας Google;</translation> <translation id="196040970347962278">Δημιουργήστε πρώτα μια σύνδεση στο διαδίκτυο.</translation> <translation id="1962233722219655970">Αυτή η σελίδα χρησιμοποιεί μια εφαρμογή Native Client η οποία δεν λειτουργεί στον υπολογιστή σας.</translation> <translation id="1963227389609234879">Κατάργηση όλων</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Χωρίς προστασία (δεν συνιστάται)</translation> <translation id="1987317783729300807">Λογαριασμοί</translation> <translation id="1989112275319619282">Περιήγηση</translation> +<translation id="1990046457226896323">Έγινε λήψη των αρχείων ομιλίας.</translation> <translation id="1990512225220753005">Να μην εμφανίζονται οι συντομεύσεις σε αυτήν τη σελίδα</translation> <translation id="1992397118740194946">Δεν έχει οριστεί</translation> <translation id="1992924914582925289">Κατάργηση από τη συσκευή</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Για επιπλέον λειτουργίες, χρησιμοποιήστε μια βάση σύνδεσης Dell που έχει σχεδιαστεί για χρήση με αυτό το Chromebook.</translation> <translation id="215753907730220065">Έξοδος από πλήρη οθόνη</translation> <translation id="2157875535253991059">Αυτή η σελίδα εμφανίζεται σε πλήρη οθόνη</translation> -<translation id="2160589599612868242">Λάβετε ειδοποιήσεις από το τηλέφωνό σας στη συσκευή <ph name="DEVICE_TYPE" />.</translation> <translation id="216169395504480358">Προσθήκη Wi-Fi…</translation> <translation id="2162155940152307086">Ο συγχρονισμός θα ξεκινήσει μόλις αποχωρήσετε από τις ρυθμίσεις συγχρονισμού</translation> <translation id="2162838847352058695">Να απαγορεύεται στους ιστοτόπους η αυτόματη λήψη πολλών αρχείων</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Οι ειδοποιήσεις ενεργοποιήθηκαν</translation> <translation id="2399939490305346086">Δεδομένα σύνδεσης κλειδιού ασφαλείας</translation> <translation id="2400664245143453337">Απαιτείται άμεση ενημέρωση</translation> +<translation id="2406153734066939945">Διαγραφή αυτού του προφίλ και των δεδομένων του;</translation> <translation id="2408018932941436077">Γίνεται αποθήκευση της κάρτας</translation> <translation id="2408955596600435184">Εισαγάγετε το PIN</translation> <translation id="241082044617551207">Άγνωστη προσθήκη</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Επιφάνεια εργασίας</translation> <translation id="2526619973349913024">Έλεγχος για ενημερώσεις</translation> <translation id="2527167509808613699">Όλα τα είδη συνδέσεων</translation> +<translation id="2530166226437958497">Αντιμετώπιση προβλημάτων</translation> <translation id="2532589005999780174">Λειτουργία υψηλής αντίθεσης</translation> <translation id="253434972992662860">&Παύση</translation> <translation id="2534460670861217804">Ασφαλής διακομιστής μεσολάβησης HTTP</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Παρουσιάστηκε ένα πρόβλημα κατά την αποκωδικοποίηση απάντησης διακομιστή.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Άνοιγμα συνδέσμου με...</translation> -<translation id="2889481634493693121">Ενεργοποίηση ειδοποιήσεων στο τηλέφωνό σας</translation> <translation id="2889925978073739256">Συνέχιση αποκλεισμού προσθηκών εκτός περιβάλλοντος δοκιμών</translation> <translation id="2893168226686371498">Προεπιλεγμένο πρόγραμμα περιήγησης</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 μήνυμα κειμένου}other{# μηνύματα κειμένου}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Ανασηκώστε και αγγίξτε ξανά</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Ο συγχρονισμός τέθηκε σε παύση</translation> <translation id="3861638017150647085">Δεν είναι διαθέσιμο το όνομα χρήστη "<ph name="USERNAME" />".</translation> +<translation id="3861977424605124250">Εμφάνιση κατά την εκκίνηση</translation> <translation id="3862693525629180217">Επαλήθευση μέσω ενσωματωμένου αισθητήρα</translation> <translation id="3862788408946266506">Θα πρέπει να εγκατασταθεί μια εφαρμογή με χαρακτηριστικό μανιφέστου "kiosk_only" στη λειτουργία kiosk του Chrome OS</translation> <translation id="3865414814144988605">Ανάλυση</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Σπάντεξ</translation> <translation id="4130199216115862831">Αρχείο καταγραφής συσκευής</translation> <translation id="4130207949184424187">Αυτή η επέκταση άλλαξε τη σελίδα που εμφανίζεται όταν κάνετε αναζήτηση από το κύριο πλαίσιο.</translation> -<translation id="4130344535649650885">Αποθήκευση κωδικού πρόσβασης για τον Λογαριασμό σας Google;</translation> <translation id="4130750466177569591">Συμφωνώ</translation> <translation id="413121957363593859">Στοιχεία</translation> <translation id="4131410914670010031">Ασπρόμαυρο</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Συνέχεια από άλλη συσκευή</translation> <translation id="4628757576491864469">Συσκευές</translation> <translation id="4628762811416793313">Η ρύθμιση του κοντέινερ Linux δεν ολοκληρώθηκε. Δοκιμάστε ξανά.</translation> +<translation id="4629521233550547305">Άνοιγμα προφίλ <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Η επέκταση απαιτεί "<ph name="IMPORT_NAME" />" με ελάχιστη έκδοση "<ph name="IMPORT_VERSION" />", αλλά είναι εγκατεστημένη μόνο η έκδοση "<ph name="INSTALLED_VERSION" />"</translation> <translation id="4633757335284074492">Δημιουργία αντιγράφων ασφαλείας στο Google Drive. Επαναφέρετε τα δεδομένα ή αλλάξτε συσκευή ανά πάσα στιγμή με ευκολία. Αυτό το αντίγραφο ασφαλείας περιλαμβάνει δεδομένα εφαρμογών. Τα δεδομένα μεταφορτώνονται στην Google και κρυπτογραφούνται χρησιμοποιώντας τον κωδικό πρόσβασης του Λογαριασμού Google του παιδιού σας.</translation> <translation id="4634575639321169635">Ρυθμίστε αυτήν τη συσκευή για εργασία ή προσωπική χρήση.</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Απέτυχε η λήψη (<ph name="ATTACHMENTS" />) από τη συσκευή <ph name="DEVICE_NAME" />}other{Απέτυχε η λήψη (<ph name="ATTACHMENTS" />) από τη συσκευή <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Εισαγωγή από το Firefox</translation> <translation id="5502915260472117187">Παιδί</translation> -<translation id="5503858713116291452">Βεβαιωθείτε ότι το τηλέφωνο βρίσκεται κοντά σας, είναι ξεκλειδωμένο και έχει ενεργοποιημένες τις λειτουργίες Bluetooth και Wi-Fi. Ακολουθήστε τα βήματα στο τηλέφωνό σας για να ολοκληρώσετε τη ρύθμιση.</translation> <translation id="5503982651688210506">Να συνεχίσει να επιτρέπεται στον ιστότοπο <ph name="HOST" /> να χρησιμοποιεί και να μετακινεί την κάμερά σας, καθώς και να χρησιμοποιεί το μικρόφωνό σας.</translation> <translation id="5505264765875738116">Οι ιστότοποι δεν μπορούν να ζητούν να στέλνουν ειδοποιήσεις.</translation> <translation id="5505307013568720083">Τελείωσε το μελάνι</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Ενεργό</translation> <translation id="5567989639534621706">Προσωρινές μνήμες εφαρμογών</translation> <translation id="5568069709869097550">Δεν είναι δυνατή η σύνδεση</translation> +<translation id="5571832155627049070">Προσαρμογή του προφίλ σας</translation> <translation id="5572851009514199876">Εκκινήστε και συνδεθείτε στο Chrome, έτσι ώστε το Chrome να μπορεί να ελέγξει εάν έχετε δικαίωμα πρόσβασης σε αυτόν τον ιστότοπο.</translation> <translation id="5575473780076478375">Επέκταση ανώνυμης περιήγησης: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Παρουσιάστηκε πρόβλημα με το αίτημα εγγραφής στην επίδειξη.</translation> @@ -5460,6 +5462,7 @@ <translation id="7280649757394340890">Ρυθμίσεις φωνής μετατροπής κειμένου σε ομιλία</translation> <translation id="7280877790564589615">Αίτημα άδειας</translation> <translation id="7282992757463864530">Γραμμή πληροφοριών</translation> +<translation id="7283555985781738399">Κατάσταση επισκέπτη</translation> <translation id="7284411326658527427">Κάθε άτομο μπορεί να εξατομικεύσει τον λογαριασμό του και να διατηρήσει ιδιωτικά τα δεδομένα του.</translation> <translation id="7287143125007575591">Δεν επιτρέπεται η πρόσβαση.</translation> <translation id="7287411021188441799">Επαναφορά προεπιλεγμένου φόντου</translation> @@ -5839,6 +5842,7 @@ <translation id="7716781361494605745">URL πολιτικής αρχής πιστοποίησης του Netscape</translation> <translation id="7717014941119698257">Λήψη: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Οι ιστότοποι μπορούν να ζητούν την τοποθεσία σας (συνιστάται)</translation> +<translation id="771721654176725387">Με αυτήν την ενέργεια θα διαγραφούν οριστικά τα δεδομένα περιήγησής σας από αυτήν τη συσκευή. Για να ανακτήσετε τα δεδομένα, ενεργοποιήστε τον συγχρονισμό ως</translation> <translation id="7717845620320228976">Έλεγχος για ενημερώσεις</translation> <translation id="7719367874908701697">Εστίαση σελίδας</translation> <translation id="7719588063158526969">Το όνομα της συσκευής είναι πολύ μεγάλο</translation> @@ -5875,6 +5879,7 @@ <translation id="7765158879357617694">Μεταφορά</translation> <translation id="7765507180157272835">Απαιτείται Bluetooth και Wi-Fi</translation> <translation id="7766082757934713382">Συμβάλλει στη μείωση της χρήσης δεδομένων δικτύου θέτοντας σε παύση τις αυτόματες ενημερώσεις εφαρμογών και συστήματος.</translation> +<translation id="7766807826975222231">Κάντε μια περιήγηση</translation> <translation id="7766838926148951335">Αποδοχή αδειών</translation> <translation id="7768507955883790804">Οι ιστότοποι που επισκέπτεστε θα ακολουθούν αυτομάτως αυτήν τη ρύθμιση.</translation> <translation id="7768770796815395237">Αλλαγή</translation> @@ -6119,6 +6124,7 @@ <translation id="8017176852978888182">Κοινόχρηστοι κατάλογοι Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Η συντόμευση τροποποιήθηκε</translation> +<translation id="8018298733481692628">Διαγραφή αυτού του προφίλ;</translation> <translation id="8018313076035239964">Ελέγξτε τι πληροφορίες μπορούν να χρησιμοποιήσουν οι ιστότοποι και τι περιεχόμενο μπορούν να προβάλλουν σε εσάς</translation> <translation id="8023801379949507775">Ενημέρωση επεκτάσεων τώρα</translation> <translation id="8026334261755873520">Διαγραφή δεδομένων περιήγησης</translation> @@ -6289,7 +6295,6 @@ <translation id="8211551284753798479">Μη έγκυρος κωδικός PUK. Απομένουν <ph name="RETRIES" /> προσπάθειες.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Λήψη σε εξέλιξη}other{Λήψεις σε εξέλιξη}}</translation> <translation id="8213449224684199188">Έγινε είσοδος στη λειτουργία φωτογραφίας</translation> -<translation id="8213866992824776555">Ο τομέας <ph name="DOMAIN" /> θέλει να προσδιορίσει τη συσκευή σας, ώστε να μπορεί να αναπαράγει προστατευμένα βίντεο και ήχο στην υψηλότερη δυνατή ποιότητα.</translation> <translation id="8214489666383623925">Άνοιγμα Αρχείου...</translation> <translation id="8214962590150211830">Κατάργηση αυτού του ατόμου</translation> <translation id="8216351761227087153">Παρακολούθηση</translation> @@ -6766,7 +6771,6 @@ <translation id="8774379074441005279">Επιβεβαίωση επαναφοράς</translation> <translation id="8774934320277480003">Επάνω περιθώριο</translation> <translation id="8775144690796719618">Μη έγκυρη διεύθ. URL</translation> -<translation id="8775163630211761057">Επεκτείνετε το αγαπημένο περιεχόμενο και τις λειτουργίες του τηλεφώνου σας Android στη συσκευή <ph name="DEVICE_TYPE" />.</translation> <translation id="8775653927968399786">{0,plural, =1{Η συσκευή <ph name="DEVICE_TYPE" /> θα κλειδωθεί αυτόματα σε # δευτερόλεπτο. Ο τομέας <ph name="DOMAIN" /> απαιτεί να μην αφαιρέσετε την έξυπνη κάρτα.}other{Η συσκευή <ph name="DEVICE_TYPE" /> θα κλειδωθεί αυτόματα σε # δευτερόλεπτα. Ο τομέας <ph name="DOMAIN" /> απαιτεί να μην αφαιρέσετε την έξυπνη κάρτα.}}</translation> @@ -6955,6 +6959,7 @@ <translation id="8973596347849323817">Μπορείτε να προσαρμόσετε αυτήν τη συσκευή σύμφωνα με τις ανάγκες σας. Οι λειτουργίες προσβασιμότητας μπορούν να τροποποιηθούν αργότερα από τις Ρυθμίσεις.</translation> <translation id="897414447285476047">Το αρχείο προορισμού ήταν ελλιπές λόγω ενός προβλήματος σύνδεσης.</translation> <translation id="897525204902889653">Υπηρεσία καραντίνας</translation> +<translation id="8975396729541388937">Απεγγραφείτε ανά πάσα στιγμή κάνοντας κλικ στον σύνδεσμο στα μηνύματα ηλεκτρονικού ταχυδρομείου που λαμβάνετε.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" και μία ακόμη καρτέλα}other{"<ph name="TAB_TITLE" />" και # ακόμη καρτέλες}}</translation> <translation id="8977811652087512276">Εσφαλμένος κωδικός πρόσβασης ή κατεστραμμένο αρχείο</translation> <translation id="8978154919215542464">Ενεργό - συγχρονισμός όλων</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index 2ae54ef..bf78934 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{No compromised passwords}=1{1 compromised password}other{{NUM_COMPROMISED} compromised passwords}}</translation> <translation id="1380028686461971526">Auto connect to network</translation> <translation id="1380436189840894976">Quit incognito mode anyway?</translation> +<translation id="1383597849754832576">Can't download speech files. Try again later.</translation> <translation id="1383861834909034572">Opening when complete</translation> <translation id="1383876407941801731">Search</translation> <translation id="1386791642444521222">Activate physical SIM</translation> @@ -864,7 +865,7 @@ <translation id="1936931585862840749">Use a number to indicate how many copies to print (1 to <ph name="MAX_COPIES" />).</translation> <translation id="1937066884443574048">This option is no longer supported. To present a tab, use <ph name="GOOGLE_MEET" />.</translation> <translation id="1937774647013465102">Cannot import container architecture type <ph name="ARCHITECTURE_CONTAINER" /> with this device which is <ph name="ARCHITECTURE_DEVICE" />. You can try restoring this container into a different device, or you can access the files inside this container image by opening in Files app.</translation> -<translation id="1938351510777341717">External Command</translation> +<translation id="1938351510777341717">External command</translation> <translation id="1940546824932169984">Connected devices</translation> <translation id="1942600407708803723">Shut down when cover is closed</translation> <translation id="1944528062465413897">Bluetooth pairing code</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Error mounting share. Please check your credentials and try again.</translation> <translation id="1956050014111002555">The file contained multiple certificates, none of which were imported:</translation> <translation id="1956390763342388273">This will upload all files from '<ph name="FOLDER_PATH" />'. Only do this if you trust the site.</translation> -<translation id="1960158217849594135">Save username to your Google Account?</translation> <translation id="196040970347962278">Establish an Internet connection first</translation> <translation id="1962233722219655970">This page uses a Native Client app that doesn't work on your computer.</translation> <translation id="1963227389609234879">Remove all</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">No protection (not recommended)</translation> <translation id="1987317783729300807">Accounts</translation> <translation id="1989112275319619282">Browse</translation> +<translation id="1990046457226896323">Speech files downloaded</translation> <translation id="1990512225220753005">Don't show shortcuts on this page</translation> <translation id="1992397118740194946">Not set</translation> <translation id="1992924914582925289">Remove from device</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">To get additional features, use a Dell docking station designed to work with this Chromebook.</translation> <translation id="215753907730220065">Exit Full Screen</translation> <translation id="2157875535253991059">This page is now full screen.</translation> -<translation id="2160589599612868242">Receive notifications from your phone on your <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Add Wi-Fi ...</translation> <translation id="2162155940152307086">Sync will start once you leave sync settings</translation> <translation id="2162838847352058695">Block sites from automatically downloading multiple files</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Notifications turned on</translation> <translation id="2399939490305346086">Security key sign-in data</translation> <translation id="2400664245143453337">Immediate update required</translation> +<translation id="2406153734066939945">Delete this profile and its data?</translation> <translation id="2408018932941436077">Saving card</translation> <translation id="2408955596600435184">Enter your PIN</translation> <translation id="241082044617551207">Unknown plug-in</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Desktop</translation> <translation id="2526619973349913024">Check for update</translation> <translation id="2527167509808613699">Any kind of connection</translation> +<translation id="2530166226437958497">Troubleshooting</translation> <translation id="2532589005999780174">High contrast mode</translation> <translation id="253434972992662860">&Pause</translation> <translation id="2534460670861217804">Secure HTTP Proxy</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">A problem occurred when decoding server response.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Open link with...</translation> -<translation id="2889481634493693121">Turn on notifications on your phone</translation> <translation id="2889925978073739256">Continue blocking unsandboxed plug-ins</translation> <translation id="2893168226686371498">Default browser</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 text}other{# texts}}</translation> @@ -1992,7 +1993,7 @@ <translation id="3246107497225150582">{0,plural, =1{Update device within a day}other{Update device within # days}}</translation> <translation id="324849028894344899"><ph name="WINDOW_TITLE" /> – Network error</translation> <translation id="3248902735035392926">Safety matters. Take a moment and <ph name="BEGIN_LINK" />check your extensions now<ph name="END_LINK" /></translation> -<translation id="3251759466064201842"><Not Part Of Certificate></translation> +<translation id="3251759466064201842"><Not part of certificate></translation> <translation id="325238099842880997">Set digital ground rules to help children play, explore and do schoolwork at home</translation> <translation id="3253225298092156258">Not available</translation> <translation id="3253448572569133955">Unknown account</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Lift, then touch again</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Sync paused</translation> <translation id="3861638017150647085">Username '<ph name="USERNAME" />' is not available</translation> +<translation id="3861977424605124250">Show on startup</translation> <translation id="3862693525629180217">Verify via built-in sensor</translation> <translation id="3862788408946266506">App with 'kiosk_only' manifest attribute must be installed in Chrome OS kiosk mode</translation> <translation id="3865414814144988605">Resolution</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Speedy</translation> <translation id="4130199216115862831">Device Log</translation> <translation id="4130207949184424187">This extension has changed the page that is shown when you search from the Omnibox.</translation> -<translation id="4130344535649650885">Save password to your Google Account?</translation> <translation id="4130750466177569591">I agree</translation> <translation id="413121957363593859">Components</translation> <translation id="4131410914670010031">Black and white</translation> @@ -3170,7 +3171,7 @@ <translation id="4585793705637313973">Edit page</translation> <translation id="4586275095964870617"><ph name="URL" /> could not be open in an alternative browser. Please contact your system administrator.</translation> <translation id="4589713469967853491">Logs successfully written to downloads directory.</translation> -<translation id="4590324241397107707">Database Storage</translation> +<translation id="4590324241397107707">Database storage</translation> <translation id="4592891116925567110">Stylus drawing app</translation> <translation id="4593021220803146968">&Go to <ph name="URL" /></translation> <translation id="4595560905247879544">Apps and extensions can only be modified by the manager (<ph name="CUSTODIAN_NAME" />).</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Continue from another device</translation> <translation id="4628757576491864469">Devices</translation> <translation id="4628762811416793313">The Linux container setup did not complete. Please try again.</translation> +<translation id="4629521233550547305">Open <ph name="PROFILE_NAME" /> profile</translation> <translation id="4633003931260532286">Extension requires '<ph name="IMPORT_NAME" />' with a minimum version '<ph name="IMPORT_VERSION" />', but only version '<ph name="INSTALLED_VERSION" />' is installed</translation> <translation id="4633757335284074492">Back up to Google Drive. Easily restore data or switch device at any time. This backup includes app data. Backups are uploaded to Google and encrypted using your child's Google Account password.</translation> <translation id="4634575639321169635">Set up this device for work or personal use</translation> @@ -3497,7 +3499,7 @@ <translation id="49896407730300355">Rotate a&nti-clockwise</translation> <translation id="4989966318180235467">Inspect &background page</translation> <translation id="4991420928586866460">Treat top-row keys as function keys</translation> -<translation id="499165176004408815">Use high contrast mode</translation> +<translation id="499165176004408815">Use high-contrast mode</translation> <translation id="4992458225095111526">Confirm Powerwash</translation> <translation id="4992473555164495036">Your administrator has limited the available input methods.</translation> <translation id="4994474651455208930">Allow sites to ask to become default handlers for protocols</translation> @@ -3527,7 +3529,7 @@ <translation id="5033137252639132982">Not allowed to use motion sensors</translation> <translation id="5033266061063942743">Geometric shapes</translation> <translation id="5036662165765606524">Do not allow any site to download multiple files automatically</translation> -<translation id="5037676449506322593">Select All</translation> +<translation id="5037676449506322593">Select all</translation> <translation id="5038022729081036555">You can use it for <ph name="TIME_LIMIT" /> tomorrow.</translation> <translation id="5038863510258510803">Enabling...</translation> <translation id="5039696241953571917">View and manage saved passwords in your Google Account</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Failed to receive <ph name="ATTACHMENTS" /> from <ph name="DEVICE_NAME" />}other{Failed to receive <ph name="ATTACHMENTS" /> from <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Imported From Firefox</translation> <translation id="5502915260472117187">A child</translation> -<translation id="5503858713116291452">Make sure that your phone is nearby, unlocked, and has Bluetooth and Wi-Fi turned on. Follow the steps on your phone to complete setup.</translation> <translation id="5503982651688210506">Continue allowing <ph name="HOST" /> to use and move your camera, and use your microphone</translation> <translation id="5505264765875738116">Sites can't ask to send notifications</translation> <translation id="5505307013568720083">Out of ink</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Active</translation> <translation id="5567989639534621706">Application Caches</translation> <translation id="5568069709869097550">Can't sign in</translation> +<translation id="5571832155627049070">Customise your profile</translation> <translation id="5572851009514199876">Please start and sign in to Chrome so that Chrome can check whether you are allowed to access this site.</translation> <translation id="5575473780076478375">Incognito Extension: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">A problem with demo registration request occurred.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Text-to-speech voice settings</translation> <translation id="7280877790564589615">Permission requested</translation> <translation id="7282992757463864530">Infobar</translation> +<translation id="7283555985781738399">Guest mode</translation> <translation id="7284411326658527427">Each person can personalise their account and keep data private.</translation> <translation id="7287143125007575591">Access denied</translation> <translation id="7287411021188441799">Restore default background</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">Netscape Certification Authority Policy URL</translation> <translation id="7717014941119698257">Downloading: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Sites can ask for your location (recommended)</translation> +<translation id="771721654176725387">This will permanently delete your browsing data from this device. To recover the data, turn on sync as</translation> <translation id="7717845620320228976">Check for updates</translation> <translation id="7719367874908701697">Page zoom</translation> <translation id="7719588063158526969">Device name too long</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Move</translation> <translation id="7765507180157272835">Bluetooth and Wi-Fi needed</translation> <translation id="7766082757934713382">Helps reduce network data usage by pausing automatic app and system updates</translation> +<translation id="7766807826975222231">Take a tour</translation> <translation id="7766838926148951335">Accept permissions</translation> <translation id="7768507955883790804">Sites automatically follow this setting when you visit them</translation> <translation id="7768770796815395237">Change</translation> @@ -6065,7 +6070,7 @@ <translation id="7963001036288347286">Touchpad acceleration</translation> <translation id="7963608432878156675">This name is visible to other devices for Bluetooth and network connections</translation> <translation id="7963826112438303517">Your Assistant uses these recordings and your spoken requests to create and update your voice model, which is only stored on devices where you've turned on Voice Match. View or retrain voice activity in Assistant Settings.</translation> -<translation id="7966241909927244760">C&opy Image Address</translation> +<translation id="7966241909927244760">C&opy image address</translation> <translation id="7966571622054096916">{COUNT,plural, =1{1 item in bookmark list}other{{COUNT} items in bookmark list}}</translation> <translation id="7968072247663421402">Provider options</translation> <translation id="7968198493605442410">Copy link to text</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">Linux shared directories</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Shortcut edited</translation> +<translation id="8018298733481692628">Delete this profile?</translation> <translation id="8018313076035239964">Control what information websites can use and what content they can show you</translation> <translation id="8023801379949507775">Update extensions now</translation> <translation id="8026334261755873520">Clear browsing data</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">Invalid PUK. You have <ph name="RETRIES" /> remaining attempts.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Download is in progress}other{Downloads are in progress}}</translation> <translation id="8213449224684199188">Photo mode entered</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> wants to identify your device so that it can play the highest-quality protected video and audio.</translation> <translation id="8214489666383623925">Open File...</translation> <translation id="8214962590150211830">Remove This Person</translation> <translation id="8216351761227087153">Watch</translation> @@ -6352,7 +6357,7 @@ <translation id="8275038454117074363">Import</translation> <translation id="8275080796245127762">Call from Your Device</translation> <translation id="8275339871947079271">Move your password to your Google Account to access it securely wherever you're signed in</translation> -<translation id="8276560076771292512">Empty Cache and Hard Reload</translation> +<translation id="8276560076771292512">Empty cache and hard reload</translation> <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> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Confirm Restore</translation> <translation id="8774934320277480003">Top margin</translation> <translation id="8775144690796719618">Invalid URL</translation> -<translation id="8775163630211761057">Extend the best of your Android phone to your <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Your <ph name="DEVICE_TYPE" /> will be locked automatically in # second. <ph name="DOMAIN" /> requires you to keep your smart card inserted.}other{Your <ph name="DEVICE_TYPE" /> will be locked automatically in # seconds. <ph name="DOMAIN" /> requires you to keep your smart card inserted.}}</translation> @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">You can customise this device to fit your needs. These accessibility features can be changed later in Settings.</translation> <translation id="897414447285476047">Destination file was incomplete due to a connection issue.</translation> <translation id="897525204902889653">Quarantine Service</translation> +<translation id="8975396729541388937">Unsubscribe at any time by clicking the link in the emails that you receive.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" and 1 other tab}other{"<ph name="TAB_TITLE" />" and # other tabs}}</translation> <translation id="8977811652087512276">Incorrect password or corrupt file</translation> <translation id="8978154919215542464">On – sync everything</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index f2f6cac..cf739d1 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{No tienes contraseñas hackeadas}=1{1 contraseña hackeada}other{{NUM_COMPROMISED} contraseñas hackeadas}}</translation> <translation id="1380028686461971526">Conectarse automáticamente a una red</translation> <translation id="1380436189840894976">¿Deseas salir del modo de navegación incógnito de todas formas?</translation> +<translation id="1383597849754832576">No se pueden descargar los videos de Subtitulado instantáneo. Vuelve a intentarlo más tarde.</translation> <translation id="1383861834909034572">Abrir cuando haya finalizado</translation> <translation id="1383876407941801731">Buscar</translation> <translation id="1386791642444521222">Activar una SIM física</translation> @@ -873,7 +874,6 @@ <translation id="1954813140452229842">Se produjo un error al activar el recurso compartido. Revisa tus credenciales y vuelve a intentarlo.</translation> <translation id="1956050014111002555">El archivo contenía múltiples certificados. Ninguno fue importado:</translation> <translation id="1956390763342388273">Esta acción cargará todos los archivos de "<ph name="FOLDER_PATH" />". Hazlo únicamente si el sitio es de confianza.</translation> -<translation id="1960158217849594135">¿Deseas guardar el nombre de usuario en tu Cuenta de Google?</translation> <translation id="196040970347962278">Primero establece una conexión a Internet</translation> <translation id="1962233722219655970">Esta página usa una aplicación con tecnología Native Client que no funciona en tu computadora.</translation> <translation id="1963227389609234879">Eliminar todo</translation> @@ -899,6 +899,7 @@ <translation id="1984417487208496350">Sin protección (opción no recomendada)</translation> <translation id="1987317783729300807">Cuentas</translation> <translation id="1989112275319619282">Navegar</translation> +<translation id="1990046457226896323">Se descargaron los archivos de Subtitulado instantáneo</translation> <translation id="1990512225220753005">No se muestran accesos directos en esta página</translation> <translation id="1992397118740194946">No está configurada</translation> <translation id="1992924914582925289">Quitar del dispositivo</translation> @@ -1044,7 +1045,6 @@ <translation id="2157474325782140681">Para obtener más funciones, usa una estación de conexión Dell diseñada para funcionar con esta Chromebook.</translation> <translation id="215753907730220065">Salir de pantalla completa</translation> <translation id="2157875535253991059">Esta página está en modo de pantalla completa.</translation> -<translation id="2160589599612868242">Recibe las notificaciones del teléfono en tu <ph name="DEVICE_TYPE" />.</translation> <translation id="216169395504480358">Agregar Wi-Fi</translation> <translation id="2162155940152307086">La sincronización volverá a comenzar cuando salgas de la configuración</translation> <translation id="2162838847352058695">No permitir que los sitios descarguen múltiples archivos de forma automática</translation> @@ -1262,6 +1262,7 @@ <translation id="2399699884460174994">Se activaron las Notificaciones</translation> <translation id="2399939490305346086">Datos de acceso de la llave de seguridad</translation> <translation id="2400664245143453337">Se requiere una actualización inmediata</translation> +<translation id="2406153734066939945">¿Quieres borrar este perfil y sus datos?</translation> <translation id="2408018932941436077">Guardando la tarjeta</translation> <translation id="2408955596600435184">Ingresa tu PIN</translation> <translation id="241082044617551207">Complemento desconocido</translation> @@ -1380,6 +1381,7 @@ <translation id="2526590354069164005">Escritorio</translation> <translation id="2526619973349913024">Verificar actualización</translation> <translation id="2527167509808613699">Cualquier tipo de conexión</translation> +<translation id="2530166226437958497">Solución de problemas</translation> <translation id="2532589005999780174">Modo de contraste alto</translation> <translation id="253434972992662860">Pausa</translation> <translation id="2534460670861217804">Proxy HTTP seguro</translation> @@ -1697,7 +1699,6 @@ <translation id="2885729872133513017">Hubo un problema cuando se intentó decodificar la respuesta del servidor.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Abrir el vínculo con...</translation> -<translation id="2889481634493693121">Activa las notificaciones en el teléfono</translation> <translation id="2889925978073739256">Seguir bloqueando los complementos no incluidos en la zona de pruebas</translation> <translation id="2893168226686371498">Navegador predeterminado</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 texto}other{# textos}}</translation> @@ -2557,6 +2558,7 @@ <translation id="3857807444929313943">Levanta el dedo y vuelve a tocar</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Se pausó la sincronización</translation> <translation id="3861638017150647085">El nombre de usuario "<ph name="USERNAME" />" no está disponible</translation> +<translation id="3861977424605124250">Mostrar al inicio</translation> <translation id="3862693525629180217">Verificar mediante el sensor incorporado</translation> <translation id="3862788408946266506">Se debe instalar la app con el atributo del manifiesto "kiosk_only" en el modo kiosco del Sistema operativo Chrome</translation> <translation id="3865414814144988605">Resolución</translation> @@ -2799,7 +2801,6 @@ <translation id="412730574613779332">Elástico</translation> <translation id="4130199216115862831">Registro del dispositivo</translation> <translation id="4130207949184424187">Esta extensión cambió la página que se muestra al realizar búsquedas desde el cuadro multifunción.</translation> -<translation id="4130344535649650885">¿Deseas guardar la contraseña en tu Cuenta de Google?</translation> <translation id="4130750466177569591">Acepto</translation> <translation id="413121957363593859">Componentes</translation> <translation id="4131410914670010031">Blanco y negro</translation> @@ -3198,6 +3199,7 @@ <translation id="4627442949885028695">Cómo continuar desde otro dispositivo</translation> <translation id="4628757576491864469">Dispositivos</translation> <translation id="4628762811416793313">No se completó la configuración del contenedor de Linux. Vuelve a intentarlo.</translation> +<translation id="4629521233550547305">Abrir el perfil de <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">La extensión requiere "<ph name="IMPORT_NAME" />" con la versión "<ph name="IMPORT_VERSION" />" como mínimo, pero solo está instalada la versión "<ph name="INSTALLED_VERSION" />"</translation> <translation id="4633757335284074492">Crea una copia de seguridad en Google Drive. Restablece datos o cambia de dispositivo en cualquier momento con facilidad. Se incluyen datos de las apps. Las copias de seguridad se encriptan con la contraseña de la Cuenta de Google de tu hijo y se suben a Google.</translation> <translation id="4634575639321169635">Configura este dispositivo para uso personal o laboral</translation> @@ -3926,7 +3928,6 @@ <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="5503858713116291452">Asegúrate de que el teléfono esté cerca, desbloqueado y tenga las conexiones Bluetooth y Wi-Fi activadas. Para completar la configuración, realiza los pasos que se muestran en el teléfono.</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> @@ -3987,6 +3988,7 @@ <translation id="5565735124758917034">Activo</translation> <translation id="5567989639534621706">Cachés de aplicación</translation> <translation id="5568069709869097550">No puedo acceder</translation> +<translation id="5571832155627049070">Personaliza tu perfil</translation> <translation id="5572851009514199876">Abre Chrome y accede a tu cuenta para que el programa pueda comprobar si puedes acceder a este sitio.</translation> <translation id="5575473780076478375">Extensión de incógnito: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Hubo un problema con la solicitud de registro de demostración.</translation> @@ -5456,6 +5458,7 @@ <translation id="7280649757394340890">Configuración de la voz en la función de texto a voz</translation> <translation id="7280877790564589615">Permiso solicitado</translation> <translation id="7282992757463864530">Barra de información</translation> +<translation id="7283555985781738399">Modo de invitado</translation> <translation id="7284411326658527427">Cada persona podrá personalizar su cuenta y proteger la privacidad de sus datos.</translation> <translation id="7287143125007575591">Acceso denegado</translation> <translation id="7287411021188441799">Restablecer fondo predeterminado</translation> @@ -5835,6 +5838,7 @@ <translation id="7716781361494605745">URL de directivas de la autoridad de certificación de Netscape</translation> <translation id="7717014941119698257">Descargando: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Permitir que los sitios soliciten tu ubicación (recomendado)</translation> +<translation id="771721654176725387">Esta acción borrará permanentemente tus datos de navegación de este dispositivo. Para recuperar los datos, activa la sincronización como</translation> <translation id="7717845620320228976">Comprobar actualizaciones</translation> <translation id="7719367874908701697">Zoom de página</translation> <translation id="7719588063158526969">El nombre del dispositivo es demasiado largo</translation> @@ -5871,6 +5875,7 @@ <translation id="7765158879357617694">Mover</translation> <translation id="7765507180157272835">Necesitas Bluetooth y Wi-Fi</translation> <translation id="7766082757934713382">Ayuda a reducir el uso de datos de la red pausando las actualizaciones automáticas de apps y del sistema</translation> +<translation id="7766807826975222231">Hacer un recorrido</translation> <translation id="7766838926148951335">Aceptar permisos</translation> <translation id="7768507955883790804">Los sitios siguen esta configuración de forma automática cuando los visitas.</translation> <translation id="7768770796815395237">Cambiar</translation> @@ -6115,6 +6120,7 @@ <translation id="8017176852978888182">Directorios compartidos de Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Se editó el acceso directo</translation> +<translation id="8018298733481692628">¿Quieres borrar este perfil?</translation> <translation id="8018313076035239964">Controla qué contenido pueden mostrarte los sitios web y qué información pueden usar</translation> <translation id="8023801379949507775">Actualizar las extensiones ahora</translation> <translation id="8026334261755873520">Borrar datos de navegación</translation> @@ -6285,7 +6291,6 @@ <translation id="8211551284753798479">La PUK no es válida. Te quedan <ph name="RETRIES" /> intentos.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Descarga en curso}other{Descargas en curso}}</translation> <translation id="8213449224684199188">Ingresaste al modo de foto</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> desea identificar tu dispositivo para que pueda reproducir audio y video protegidos de la más alta calidad.</translation> <translation id="8214489666383623925">Abrir archivo...</translation> <translation id="8214962590150211830">Eliminar a esta persona</translation> <translation id="8216351761227087153">Ver</translation> @@ -6764,7 +6769,6 @@ <translation id="8774379074441005279">Confirma que quieres restablecer</translation> <translation id="8774934320277480003">Margen superior</translation> <translation id="8775144690796719618">URL no válida</translation> -<translation id="8775163630211761057">Disfruta de lo mejor del teléfono Android en tu dispositivo <ph name="DEVICE_TYPE" />.</translation> <translation id="8775653927968399786">{0,plural, =1{Tu <ph name="DEVICE_TYPE" /> se bloqueará automáticamente en # segundo. <ph name="DOMAIN" /> requiere que no quites la tarjeta inteligente.}other{Tu <ph name="DEVICE_TYPE" /> se bloqueará automáticamente en # segundos. <ph name="DOMAIN" /> requiere que no quites la tarjeta inteligente.}}</translation> @@ -6953,6 +6957,7 @@ <translation id="8973596347849323817">Puedes personalizar este dispositivo para que se adapte a tus necesidades. Estas funciones de accesibilidad pueden cambiarse más tarde en Configuración.</translation> <translation id="897414447285476047">El archivo de destino está incompleto debido a un problema de conexión.</translation> <translation id="897525204902889653">Servicio de cuarentena</translation> +<translation id="8975396729541388937">Puedes anular la suscripción en cualquier momento haciendo clic en el vínculo que se incluye en los correos electrónicos que recibes.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" y 1 pestaña más}other{"<ph name="TAB_TITLE" />" y # pestañas más}}</translation> <translation id="8977811652087512276">Contraseña incorrecta o archivo dañado</translation> <translation id="8978154919215542464">Activada: sincronizar todo</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index 3db6e36..dcdcfc1 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{No hay contraseñas vulneradas}=1{1 contraseña vulnerada}other{{NUM_COMPROMISED} contraseñas vulneradas}}</translation> <translation id="1380028686461971526">Conectarse automáticamente a la red</translation> <translation id="1380436189840894976">¿Quieres salir del modo de incógnito de todas formas?</translation> +<translation id="1383597849754832576">No se han podido descargar los archivos de voz. Prueba de nuevo más tarde.</translation> <translation id="1383861834909034572">Abrir cuando haya finalizado</translation> <translation id="1383876407941801731">Buscar</translation> <translation id="1386791642444521222">Activar SIM física</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">No se ha podido activar el recurso compartido. Comprueba tus credenciales y vuelve a intentarlo.</translation> <translation id="1956050014111002555">El archivo contenía varios certificados, pero no se ha importado ninguno de ellos:</translation> <translation id="1956390763342388273">Se subirán todos los archivos de "<ph name="FOLDER_PATH" />". Realiza esta acción únicamente si confías en el sitio web.</translation> -<translation id="1960158217849594135">¿Guardar nombre de usuario en tu cuenta de Google?</translation> <translation id="196040970347962278">Conéctate primero a Internet</translation> <translation id="1962233722219655970">Esta página utiliza una aplicación de Native Client que no funciona en tu ordenador.</translation> <translation id="1963227389609234879">Eliminar todo</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Sin protección (no recomendado)</translation> <translation id="1987317783729300807">Cuentas</translation> <translation id="1989112275319619282">Examinar</translation> +<translation id="1990046457226896323">Archivos de voz descargados</translation> <translation id="1990512225220753005">No mostrar accesos directos en esta página</translation> <translation id="1992397118740194946">Sin configurar</translation> <translation id="1992924914582925289">Eliminar del dispositivo</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Si quieres obtener funciones adicionales, usa una base Dell que se haya diseñado para funcionar con este Chromebook.</translation> <translation id="215753907730220065">Desactivar pantalla completa</translation> <translation id="2157875535253991059">Esta página se muestra ahora en pantalla completa.</translation> -<translation id="2160589599612868242">Recibe notificaciones de tu teléfono en tu <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Añadir Wi-Fi...</translation> <translation id="2162155940152307086">La sincronización empezará cuando salgas de la configuración</translation> <translation id="2162838847352058695">Impedir que los sitios web descarguen varios archivos automáticamente</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Notificaciones activadas</translation> <translation id="2399939490305346086">Datos de inicio de sesión de la llave de seguridad</translation> <translation id="2400664245143453337">Es necesario actualizar de inmediato</translation> +<translation id="2406153734066939945">¿Eliminar este perfil y sus datos?</translation> <translation id="2408018932941436077">Guardando tarjeta</translation> <translation id="2408955596600435184">Introduce tu PIN</translation> <translation id="241082044617551207">Complemento desconocido</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Escritorio</translation> <translation id="2526619973349913024">Buscar actualizaciones</translation> <translation id="2527167509808613699">Cualquier tipo de conexión</translation> +<translation id="2530166226437958497">Solución de problemas</translation> <translation id="2532589005999780174">Modo de contraste alto</translation> <translation id="253434972992662860">&Pausa</translation> <translation id="2534460670861217804">Proxy HTTP seguro</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">No se ha podido decodificar la respuesta del servidor.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Abrir enlace con...</translation> -<translation id="2889481634493693121">Activa las notificaciones en tu teléfono</translation> <translation id="2889925978073739256">Seguir bloqueando complementos no incluidos en la zona de pruebas</translation> <translation id="2893168226686371498">Navegador predeterminado</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 texto}other{# textos}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Levanta el dedo y toca de nuevo</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sincronización en pausa</translation> <translation id="3861638017150647085">El nombre de usuario "<ph name="USERNAME" />" no está disponible</translation> +<translation id="3861977424605124250">Mostrar al iniciar</translation> <translation id="3862693525629180217">Verificar mediante sensor integrado</translation> <translation id="3862788408946266506">La aplicación con el atributo del archivo de manifiesto "kiosk_only" se debe instalar en el modo kiosco de Chrome OS</translation> <translation id="3865414814144988605">Resolución</translation> @@ -2801,7 +2803,6 @@ <translation id="412730574613779332">Superhéroe</translation> <translation id="4130199216115862831">Registro de dispositivo</translation> <translation id="4130207949184424187">Esta extensión ha cambiado la página que se muestra al buscar en el omnibox.</translation> -<translation id="4130344535649650885">¿Guardar contraseña en tu cuenta de Google?</translation> <translation id="4130750466177569591">Acepto</translation> <translation id="413121957363593859">Componentes</translation> <translation id="4131410914670010031">Blanco y negro</translation> @@ -3200,6 +3201,7 @@ <translation id="4627442949885028695">Continuar en otro dispositivo</translation> <translation id="4628757576491864469">Dispositivos</translation> <translation id="4628762811416793313">La configuración del contenedor de Linux no se ha completado. Inténtalo de nuevo.</translation> +<translation id="4629521233550547305">Abre el perfil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">La extensión necesita "<ph name="IMPORT_NAME" />" con la versión "<ph name="IMPORT_VERSION" />" como mínimo, pero solo está instalada la versión "<ph name="INSTALLED_VERSION" />".</translation> <translation id="4633757335284074492">Crea copias de seguridad en Google Drive. Recupera datos de forma sencilla o cambia de dispositivo en cualquier momento. Esta copia de seguridad incluye datos de aplicaciones. Los archivos de las copias de seguridad se suben a Google y se cifran con la contraseña de la cuenta de Google de tu hijo.</translation> <translation id="4634575639321169635">Configura este dispositivo para uso laboral o personal</translation> @@ -3928,7 +3930,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{No se han podido recibir <ph name="ATTACHMENTS" /> de <ph name="DEVICE_NAME" />}other{No se han podido recibir <ph name="ATTACHMENTS" /> de <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Importado desde Firefox</translation> <translation id="5502915260472117187">Un niño/a</translation> -<translation id="5503858713116291452">Comprueba que tengas el teléfono cerca, que esté desbloqueado y que el Bluetooth y el Wi‑Fi estén activados. Sigue los pasos en tu teléfono para completar la configuración.</translation> <translation id="5503982651688210506">Permitir que <ph name="HOST" /> siga usando y moviendo tu cámara y usando tu micrófono</translation> <translation id="5505264765875738116">Los sitios web no pueden preguntarte si quieres que te envíen notificaciones</translation> <translation id="5505307013568720083">No hay tinta</translation> @@ -3989,6 +3990,7 @@ <translation id="5565735124758917034">Activo</translation> <translation id="5567989639534621706">Cachés de aplicación</translation> <translation id="5568069709869097550">No puedo iniciar sesión</translation> +<translation id="5571832155627049070">Personaliza tu perfil</translation> <translation id="5572851009514199876">Abre Chrome e inicia sesión en el navegador para que compruebe si tienes permiso para acceder a este sitio web.</translation> <translation id="5575473780076478375">Extensión de incógnito: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">No se ha podido solicitar el registro de la demostración.</translation> @@ -5458,6 +5460,7 @@ <translation id="7280649757394340890">Ajustes de voz de síntesis de voz</translation> <translation id="7280877790564589615">Permiso solicitado</translation> <translation id="7282992757463864530">Barra de información</translation> +<translation id="7283555985781738399">Modo invitados</translation> <translation id="7284411326658527427">Cada perfil puede personalizar su cuenta y mantener la privacidad de sus datos.</translation> <translation id="7287143125007575591">Acceso denegado</translation> <translation id="7287411021188441799">Recuperar fondo predeterminado</translation> @@ -5837,6 +5840,7 @@ <translation id="7716781361494605745">URL de política de la entidad emisora de certificados de Netscape</translation> <translation id="7717014941119698257">Descargando: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Los sitios pueden solicitar permiso para acceder a tu ubicación (recomendado)</translation> +<translation id="771721654176725387">Se eliminarán de forma permanente los datos de navegación del dispositivo. Para recuperar los datos, activa Sincronizar como.</translation> <translation id="7717845620320228976">Buscar actualizaciones</translation> <translation id="7719367874908701697">Zoom de la página</translation> <translation id="7719588063158526969">Nombre de dispositivo demasiado largo</translation> @@ -5873,6 +5877,7 @@ <translation id="7765158879357617694">Mover</translation> <translation id="7765507180157272835">Se necesitan Bluetooth y Wi‑Fi</translation> <translation id="7766082757934713382">Ayuda a reducir el uso de datos de red al pausar las actualizaciones automáticas de aplicaciones y del sistema</translation> +<translation id="7766807826975222231">Realizar un recorrido</translation> <translation id="7766838926148951335">Aceptar permisos</translation> <translation id="7768507955883790804">Los sitios web usan esta opción cuando los visitas.</translation> <translation id="7768770796815395237">Cambiar</translation> @@ -6117,6 +6122,7 @@ <translation id="8017176852978888182">Directorios compartidos de Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Se ha editado el acceso directo</translation> +<translation id="8018298733481692628">¿Eliminar este perfil?</translation> <translation id="8018313076035239964">Controla la información que pueden utilizar los sitios web y el contenido que pueden mostrarte</translation> <translation id="8023801379949507775">Actualizar extensiones ahora</translation> <translation id="8026334261755873520">Borrar datos de navegación</translation> @@ -6287,7 +6293,6 @@ <translation id="8211551284753798479">PUK no válido. Te quedan <ph name="RETRIES" /> intentos.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Descarga en curso}other{Descargas en curso}}</translation> <translation id="8213449224684199188">Se ha cambiado al modo de foto</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> quiere identificar tu dispositivo para poder reproducir vídeo y audio protegidos de la máxima calidad.</translation> <translation id="8214489666383623925">Abrir archivo...</translation> <translation id="8214962590150211830">Eliminar este perfil</translation> <translation id="8216351761227087153">Ver</translation> @@ -6766,7 +6771,6 @@ <translation id="8774379074441005279">Confirmar restauración</translation> <translation id="8774934320277480003">Margen superior</translation> <translation id="8775144690796719618">La URL no es válida</translation> -<translation id="8775163630211761057">Lleva lo mejor de tu teléfono Android a tu <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Tu <ph name="DEVICE_TYPE" /> se bloqueará automáticamente dentro de # segundo. <ph name="DOMAIN" /> requiere que mantengas insertada tu tarjeta inteligente.}other{Tu <ph name="DEVICE_TYPE" /> se bloqueará automáticamente dentro de # segundos. <ph name="DOMAIN" /> requiere que mantengas insertada tu tarjeta inteligente.}}</translation> @@ -6955,6 +6959,7 @@ <translation id="8973596347849323817">Personaliza este dispositivo para adaptarlo a tus necesidades. Puedes modificar las funciones de accesibilidad más tarde en Configuración.</translation> <translation id="897414447285476047">El archivo de destino está incompleto debido a un problema relacionado con la conexión.</translation> <translation id="897525204902889653">Servicio de cuarentena</translation> +<translation id="8975396729541388937">Puedes cancelar la suscripción en cualquier momento haciendo clic en el enlace de los correos que recibas.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" y 1 pestaña más}other{"<ph name="TAB_TITLE" />" y # pestañas más}}</translation> <translation id="8977811652087512276">La contraseña es incorrecta o el archivo está dañado</translation> <translation id="8978154919215542464">Activada: sincronizar todo</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index 1bb02f3..63343426 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Ükski parool ei ole ohus}=1{1 parool on ohus}other{{NUM_COMPROMISED} parooli on ohus}}</translation> <translation id="1380028686461971526">Võrguta automaatselt ühendamine</translation> <translation id="1380436189840894976">Kas sulgeda ikka inkognito režiim?</translation> +<translation id="1383597849754832576">Kõnefaile ei saa alla laadida. Proovige hiljem uuesti.</translation> <translation id="1383861834909034572">Avaneb pärast lõpetamist</translation> <translation id="1383876407941801731">Otsi</translation> <translation id="1386791642444521222">Füüsilise SIM-kaardi aktiveerimine</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Viga jagatava üksuse ühendamisel. Kontrollige oma mandaati ja proovige uuesti.</translation> <translation id="1956050014111002555">Fail sisaldas mitut sertifikaati, ühtki neist ei imporditud:</translation> <translation id="1956390763342388273">See laadib üles kõik failid kaustast „<ph name="FOLDER_PATH" />”. Tehke seda ainult juhul, kui saiti usaldate.</translation> -<translation id="1960158217849594135">Kas salvestada kasutajanimi teie Google'i kontole?</translation> <translation id="196040970347962278">Looge esmalt internetiühendus</translation> <translation id="1962233722219655970">Leht kasutab omakliendi rakendust, mis ei tööta teie arvutis.</translation> <translation id="1963227389609234879">Eemalda kõik</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Kaitseta (ei ole soovitatav)</translation> <translation id="1987317783729300807">Kontod</translation> <translation id="1989112275319619282">Sirvi</translation> +<translation id="1990046457226896323">Kõnefailid laaditi alla</translation> <translation id="1990512225220753005">Ära kuva sellel lehel otseteid</translation> <translation id="1992397118740194946">Pole määratud</translation> <translation id="1992924914582925289">Eemalda seadmest</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Lisafunktsioonidele juurdepääsu saamiseks kasutage Delli dokkimisjaama, mis on mõeldud kasutamiseks selle Chromebookiga.</translation> <translation id="215753907730220065">Täisekraanilt väljumine</translation> <translation id="2157875535253991059">See leht kuvati nüüd täisekraanil.</translation> -<translation id="2160589599612868242">Saage oma telefoni märguandeid seadmes <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Lisa WiFi ...</translation> <translation id="2162155940152307086">Sünkroonimine algab, kui sünkroonimisseadetest väljute</translation> <translation id="2162838847352058695">Blokeeri saitide jaoks mitme faili automaatne allalaadimine</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Märguanded on sisse lülitatud</translation> <translation id="2399939490305346086">Turvavõtmel olevad sisselogimisandmed</translation> <translation id="2400664245143453337">Kohene värskendamine on nõutav</translation> +<translation id="2406153734066939945">Kas kustutada see profiil ja selle andmed?</translation> <translation id="2408018932941436077">Kaardi salvestamine</translation> <translation id="2408955596600435184">Sisestage PIN-kood</translation> <translation id="241082044617551207">Tundmatu pistikprogramm</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Töölaud</translation> <translation id="2526619973349913024">Otsi värskendusi</translation> <translation id="2527167509808613699">Igat laadi ühendus</translation> +<translation id="2530166226437958497">Veaotsing</translation> <translation id="2532589005999780174">Suure kontrastsusega režiim</translation> <translation id="253434972992662860">&Peata</translation> <translation id="2534460670861217804">Turvaline HTTP-puhverserver</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Serveri vastuse dekodeerimisel ilmnes probleem.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Lingi avamine rakendusega ...</translation> -<translation id="2889481634493693121">Lülitage oma telefonis märguanded sisse</translation> <translation id="2889925978073739256">Blokeeri ka edaspidi liivakastist eemaldatud pistikprogrammid</translation> <translation id="2893168226686371498">Vaikebrauser</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 sõnum}other{# sõnumit}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Tõstke sõrm andurilt ja seejärel puudutage uuesti</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sünkroonimine on peatatud</translation> <translation id="3861638017150647085">Kasutajanime „<ph name="USERNAME" />” pole saadaval</translation> +<translation id="3861977424605124250">Kuva käivitamisel</translation> <translation id="3862693525629180217">Kinnitamine sisseehitatud anduri abil</translation> <translation id="3862788408946266506">Rakendus manifesti atribuudiga „kiosk_only” tuleb installida Chrome OS-i kioskirežiimis</translation> <translation id="3865414814144988605">Eraldusvõime</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Seadme logi</translation> <translation id="4130207949184424187">See laiendus muutis seda, milline leht kuvatakse omnikastikeses otsingu tegemisel.</translation> -<translation id="4130344535649650885">Kas salvestada parool teie Google'i kontole?</translation> <translation id="4130750466177569591">Nõustun</translation> <translation id="413121957363593859">Komponendid</translation> <translation id="4131410914670010031">Mustvalge</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Jätkake sealt, kus muus seadmes pooleli jäite</translation> <translation id="4628757576491864469">Seadmed</translation> <translation id="4628762811416793313">Linuxi konteineri seadistus ei jõudnud lõpule. Proovige uuesti.</translation> +<translation id="4629521233550547305">Ava profiil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Laiendus nõuab üksust „<ph name="IMPORT_NAME" />” minimaalse versiooniga „<ph name="IMPORT_VERSION" />”, kuid installitud on ainult versioon „<ph name="INSTALLED_VERSION" />”</translation> <translation id="4633757335284074492">Andmete varundamine Google Drive'i. Teil on alati võimalik andmed hõlpsalt taastada või seadet vahetada. Varukoopia hõlmab rakenduste andmeid. Varukoopiad laaditakse Google'isse üles ja krüpteeritakse teie lapse Google'i konto parooliga.</translation> <translation id="4634575639321169635">Seadistage see seade tööks või isiklikuks kasutuseks</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Andmeid (<ph name="ATTACHMENTS" />) ei saanud seadmest <ph name="DEVICE_NAME" /> vastu võtta}other{Andmeid (<ph name="ATTACHMENTS" />) ei saanud seadmest <ph name="DEVICE_NAME" /> vastu võtta}}</translation> <translation id="5502500733115278303">Imporditud Firefoxist</translation> <translation id="5502915260472117187">Laps</translation> -<translation id="5503858713116291452">Veenduge, et teie telefon oleks läheduses, avatud ning Bluetooth ja WiFi oleksid sisse lülitatud. Seadistuse lõpuleviimiseks järgige telefonis esitatud juhiseid.</translation> <translation id="5503982651688210506">Luba hostil <ph name="HOST" /> ka edaspidi minu kaamerat kasutada ja liigutada ning mikrofoni kasutada</translation> <translation id="5505264765875738116">Saidid ei saa küsida luba märguannete saatmiseks</translation> <translation id="5505307013568720083">Tint on otsas</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Aktiivne</translation> <translation id="5567989639534621706">Rakenduste vahemälud</translation> <translation id="5568069709869097550">Ei saa sisse logida</translation> +<translation id="5571832155627049070">Profiili kohandamine</translation> <translation id="5572851009514199876">Alustage ja logige Chrome'i sisse, et Chrome saaks kontrollida, kas teil on luba sellele saidile juurdepääsemiseks.</translation> <translation id="5575473780076478375">Inkognito laiendus: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Ilmnes demo registreerimistaotlusega seotud probleem.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Kõnesünteesi hääle seaded</translation> <translation id="7280877790564589615">Luba on taotletud</translation> <translation id="7282992757463864530">Teaberiba</translation> +<translation id="7283555985781738399">Külalisrežiim</translation> <translation id="7284411326658527427">Iga inimene saab oma konto isikupärastada ja andmed privaatsena hoida.</translation> <translation id="7287143125007575591">Juurdepääs on keelatud.</translation> <translation id="7287411021188441799">Vaiketausta taastamine</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">Netscape'i sertifitseerimisorgani eeskirjade URL</translation> <translation id="7717014941119698257">Allalaadimine: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Saidid saavad küsida teie asukohateavet (soovitatav)</translation> +<translation id="771721654176725387">See kustutab teie sirvimisandmed sellest seadmest jäädavalt. Andmete taastamiseks lülitage sünkroonimine sisse kasutajana</translation> <translation id="7717845620320228976">Otsi värskendusi</translation> <translation id="7719367874908701697">Lehe suum</translation> <translation id="7719588063158526969">Seadme nimi on liiga pikk</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Liiguta</translation> <translation id="7765507180157272835">Vajalik on Bluetooth ja WiFi</translation> <translation id="7766082757934713382">Aitab automaatsete rakenduste ja süsteemivärskenduste peatamisega vähendada võrgu andmekasutust</translation> +<translation id="7766807826975222231">Vaadake esitlust</translation> <translation id="7766838926148951335">Nõustu lubadega</translation> <translation id="7768507955883790804">Saidid järgivad automaatselt seda seadet, kui neid külastate</translation> <translation id="7768770796815395237">Muuda</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">Linuxi jagatud kataloogid</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Otsetee on muudetud</translation> +<translation id="8018298733481692628">Kas kustutada see profiil?</translation> <translation id="8018313076035239964">Juhtige, millist teavet saavad veebisaidid kasutada ja millist sisu teile näidata</translation> <translation id="8023801379949507775">Värskenda laiendusi kohe</translation> <translation id="8026334261755873520">Sirvimisandmete kustutamine</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">Vale PUK-kood. Teil on veel <ph name="RETRIES" /> katset.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Allalaadimine on pooleli}other{Allalaadimised on pooleli}}</translation> <translation id="8213449224684199188">Fotorežiim aktiveeriti</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> soovib, et tuvastaksite oma seadme, et esitada kõrgeima kvaliteediga kaitstud video- ja helisisu.</translation> <translation id="8214489666383623925">Ava fail...</translation> <translation id="8214962590150211830">Eemalda see isik</translation> <translation id="8216351761227087153">Esita</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Taastamise kinnitamine</translation> <translation id="8774934320277480003">Ülemine veeris</translation> <translation id="8775144690796719618">Sobimatu URL</translation> -<translation id="8775163630211761057">Laiendage oma Android-telefoni parimad funktsioonid seadmesse <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Teie <ph name="DEVICE_TYPE" /> lukustatakse # sekundi pärast automaatselt. <ph name="DOMAIN" /> nõuab, et teie kiipkaart oleks pidevalt sisestatud.}other{Teie <ph name="DEVICE_TYPE" /> lukustatakse # sekundi pärast automaatselt. <ph name="DOMAIN" /> nõuab, et teie kiipkaart oleks pidevalt sisestatud.}}</translation> @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">Seda seadet saate kohandada oma vajaduste järgi. Neid juurdepääsetavuse funktsioone saab hiljem muuta menüüs Seaded.</translation> <translation id="897414447285476047">Sihtfail oli ühendusprobleemi tõttu poolik.</translation> <translation id="897525204902889653">Karantiini teenused</translation> +<translation id="8975396729541388937">Tellimuse võite alati tühistada, klõpsates teile saadetud meilides oleval lingil.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />”}=1{„<ph name="TAB_TITLE" />” ja veel 1 vaheleht}other{„<ph name="TAB_TITLE" />” ja veel # vahelehte}}</translation> <translation id="8977811652087512276">Sobimatu parool või rikutud fail</translation> <translation id="8978154919215542464">Sees – sünkrooni kõik</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index 8cb51d08..f5e5ea45 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Ez dago pasahitzik arriskuan}=1{1 pasahitz dago arriskuan}other{{NUM_COMPROMISED} pasahitz daude arriskuan}}</translation> <translation id="1380028686461971526">Konektatu sarera automatikoki</translation> <translation id="1380436189840894976">Ezkutuko modutik irten nahi duzu hala ere?</translation> +<translation id="1383597849754832576">Ezin dira deskargatu ahotsa testu bihurtzen duen kodearen fitxategiak. Saiatu geroago.</translation> <translation id="1383861834909034572">Osatzen denean irekiko da</translation> <translation id="1383876407941801731">Bilaketa</translation> <translation id="1386791642444521222">Aktibatu SIM txartel fisikoa</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Errore bat gertatu da fitxategiak partekatzeko biltegia muntatzean. Egiaztatu kredentzialak eta saiatu berriro.</translation> <translation id="1956050014111002555">Fitxategiak ziurtagiri bat baino gehiago ditu, baina ez da bat ere inportatu:</translation> <translation id="1956390763342388273">"<ph name="FOLDER_PATH" />" karpetako fitxategi guztiak kargatuko dira. Webgunea fidagarria bada soilik erabili aukera hori.</translation> -<translation id="1960158217849594135">Google-ko kontuan gorde nahi duzu erabiltzaile-izena?</translation> <translation id="196040970347962278">Aurrena, konektatu sarera</translation> <translation id="1962233722219655970">Orri honek ordenagailu honetan funtzionatzen ez duen bezero natiboaren aplikazio bat erabiltzen du.</translation> <translation id="1963227389609234879">Kendu guztiak</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Babesik gabe (ez da gomendatzen)</translation> <translation id="1987317783729300807">Kontuak</translation> <translation id="1989112275319619282">Arakatu</translation> +<translation id="1990046457226896323">Deskargatu dira ahotsa testu bihurtzen duen kodearen fitxategiak</translation> <translation id="1990512225220753005">Ez erakutsi lasterbideak orri honetan</translation> <translation id="1992397118740194946">Ezarri gabe</translation> <translation id="1992924914582925289">Kendu gailutik</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Eginbide gehiago lortzeko, erabili Chromebook honekin funtzionatzeko diseinatu den Dell-eko oinarri bat.</translation> <translation id="215753907730220065">Irten pantaila osoko modutik</translation> <translation id="2157875535253991059">Orria pantaila osoan dago orain.</translation> -<translation id="2160589599612868242">Jaso telefonoko jakinarazpenak <ph name="DEVICE_TYPE" /> gailuan</translation> <translation id="216169395504480358">Gehitu Wi-Fi konexioa…</translation> <translation id="2162155940152307086">Sinkronizazio-ezarpenetatik irteten zarenean hasiko da edukia sinkronizatzen</translation> <translation id="2162838847352058695">Ez utzi webguneei fitxategi bat baino gehiago automatikoki deskargatzen</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Jakinarazpenak aktibatuta daude</translation> <translation id="2399939490305346086">Segurtasun-giltzako saioa hasteko datuak</translation> <translation id="2400664245143453337">Berehala eguneratu behar da</translation> +<translation id="2406153734066939945">Profil hau eta bertako datuak ezabatu nahi dituzu?</translation> <translation id="2408018932941436077">Txartela gordetzen</translation> <translation id="2408955596600435184">Idatzi PIN kodea</translation> <translation id="241082044617551207">Plugin ezezaguna</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Ordenagailua</translation> <translation id="2526619973349913024">Egiaztatu eguneratzeak dauden</translation> <translation id="2527167509808613699">Edozein motatako konexioa</translation> +<translation id="2530166226437958497">Arazo-konpontzailea</translation> <translation id="2532589005999780174">Kontraste handiko modua</translation> <translation id="253434972992662860">&Pausatu</translation> <translation id="2534460670861217804">HTTP proxy segurua</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Arazo bat izan da zerbitzariaren erantzuna deskodetzean.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Ireki esteka honekin…</translation> -<translation id="2889481634493693121">Aktibatu jakinarazpenak telefonoan</translation> <translation id="2889925978073739256">Jarraitu blokeatzen proben eremuan sartu gabeko pluginak</translation> <translation id="2893168226686371498">Arakatzaile lehenetsia</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 testu zati}other{# testu zati}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Jaso hatza eta ukitu berriro</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sinkronizazioa pausatu egin da</translation> <translation id="3861638017150647085">"<ph name="USERNAME" />" erabiltzaile-izena ez dago erabilgarri</translation> +<translation id="3861977424605124250">Erakutsi abioan</translation> <translation id="3862693525629180217">Egiaztatu sentsore integratuaren bidez</translation> <translation id="3862788408946266506">"kiosk_only" manifestu-atributua duen aplikazio bat instalatu behar da Chrome OS sistemaren modu espezializatuan</translation> <translation id="3865414814144988605">Bereizmena</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Superheroia</translation> <translation id="4130199216115862831">Gailuen erregistroa</translation> <translation id="4130207949184424187">Luzapenak aldatu egin du arakatzaileko barratik bilatzen duzunean agertzen den orria.</translation> -<translation id="4130344535649650885">Google-ko kontuan gorde nahi duzu pasahitza?</translation> <translation id="4130750466177569591">Ados nago</translation> <translation id="413121957363593859">Osagaiak</translation> <translation id="4131410914670010031">Zuri-beltzez</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Jarraitu beste gailu batetik</translation> <translation id="4628757576491864469">Gailuak</translation> <translation id="4628762811416793313">Ez da osatu Linux edukiontziaren konfigurazioa. Saiatu berriro.</translation> +<translation id="4629521233550547305">Ireki <ph name="PROFILE_NAME" /> profila</translation> <translation id="4633003931260532286">Luzapenak "<ph name="IMPORT_NAME" />" eskatzen du, gutxienez "<ph name="IMPORT_VERSION" />" bertsiokoa, baina "<ph name="INSTALLED_VERSION" />" bertsioa baino ez dago instalatuta</translation> <translation id="4633757335284074492">Egin babeskopiak Google Drive-n. Leheneratu gailu honen datuak edo aldatu gailua edonoiz. Aplikazioetako datuak ere sartzen dira babeskopietan. Babeskopiak Google-ra kargatzen dira eta enkriptatu egiten dira haurraren Google-ko kontuaren pasahitza erabilita.</translation> <translation id="4634575639321169635">Konfiguratu gailua lanerako edo erabilera pertsonalerako</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Ezin izan da jaso <ph name="ATTACHMENTS" /> <ph name="DEVICE_NAME" /> gailutik}other{Ezin izan dira jaso <ph name="ATTACHMENTS" /> <ph name="DEVICE_NAME" /> gailutik}}</translation> <translation id="5502500733115278303">Firefox arakatzailetik inportatutakoak</translation> <translation id="5502915260472117187">Haur bat</translation> -<translation id="5503858713116291452">Ziurtatu telefonoa hurbil eta desblokeatuta dagoela, eta Bluetooth-a eta wifia aktibatuta dauzkala. Jarraitu telefonoan agertzen diren urratsei konfigurazioa osatzeko.</translation> <translation id="5503982651688210506">Ez kendu kamera erabili eta mugitzeko nahiz mikrofonoa erabiltzeko baimena <ph name="HOST" /> ostalariari</translation> <translation id="5505264765875738116">Webguneek ezin dute eskatu jakinarazpenak bidaltzea</translation> <translation id="5505307013568720083">Tinta agortu da</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Aktibo</translation> <translation id="5567989639534621706">Aplikazio-cacheak</translation> <translation id="5568069709869097550">Ezin da hasi saioa</translation> +<translation id="5571832155627049070">Pertsonalizatu profila</translation> <translation id="5572851009514199876">Ireki Chrome eta hasi saioa Chrome-k webgune hau atzitzeko baimena duzula egiazta dezan.</translation> <translation id="5575473780076478375">Ezkutuko luzapena: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Arazo bat izan da demoa erregistratzeko eskaerarekin.</translation> @@ -5458,6 +5460,7 @@ <translation id="7280649757394340890">Testua ahots bihurtzeko eginbidearen ahots-ezarpenak</translation> <translation id="7280877790564589615">Baimena behar da</translation> <translation id="7282992757463864530">Informazio-barra</translation> +<translation id="7283555985781738399">Gonbidatu modua</translation> <translation id="7284411326658527427">Bakoitzak bere kontua pertsonaliza dezake, eta datuak pribatu mantendu.</translation> <translation id="7287143125007575591">Sarbidea ukatuta dago.</translation> <translation id="7287411021188441799">Leheneratu atzeko plano lehenetsia</translation> @@ -5837,6 +5840,7 @@ <translation id="7716781361494605745">Netscape ziurtagiriaren autoritatearen gidalerroen URLa</translation> <translation id="7717014941119698257">Deskargatzen: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Webguneek kokapena eska dezakete (gomendatua)</translation> +<translation id="771721654176725387">Profila kenduz gero, betiko ezabatuko dira gailuko arakatze-datuak. Datuak berreskuratzeko, aktibatu sinkronizazioa kontu honekin:</translation> <translation id="7717845620320228976">Bilatu eguneratzeak</translation> <translation id="7719367874908701697">Orriaren zooma</translation> <translation id="7719588063158526969">Luzeegia da gailuaren izena</translation> @@ -5873,6 +5877,7 @@ <translation id="7765158879357617694">Eraman</translation> <translation id="7765507180157272835">Bluetooth-a eta wifia behar dira</translation> <translation id="7766082757934713382">Sareko datuen erabilera murrizten laguntzen du, aplikazioen eta sistemaren eguneratze automatikoak pausatzen baititu</translation> +<translation id="7766807826975222231">Eman txangoa</translation> <translation id="7766838926148951335">Eman baimenak</translation> <translation id="7768507955883790804">Webguneetan sartzen zarenean, webguneek automatikoki jarraitzen diote ezarpen honi</translation> <translation id="7768770796815395237">Aldatu</translation> @@ -6116,6 +6121,7 @@ <translation id="8016266267177410919">Aldi baterako memoria</translation> <translation id="8017176852978888182">Linux-eko direktorio partekatuak</translation> <translation id="8017679124341497925">Editatu da lasterbidea</translation> +<translation id="8018298733481692628">Profila ezabatu nahi duzu?</translation> <translation id="8018313076035239964">Kontrolatu webguneek zer informazio erabil dezaketen eta zer eduki erakuts diezazuketen</translation> <translation id="8023801379949507775">Eguneratu luzapenak</translation> <translation id="8026334261755873520">Garbitu arakatze-datuak</translation> @@ -6286,7 +6292,6 @@ <translation id="8211551284753798479">PUK kodeak ez du balio. <ph name="RETRIES" /> saiakera gelditzen zaizkizu.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Deskarga abian da}other{Deskargak abian dira}}</translation> <translation id="8213449224684199188">Argazki moduan sartu zara</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> domeinuak gailua identifikatu nahi du kalitate oneneko bideo eta audio babestuak erreproduzitzeko.</translation> <translation id="8214489666383623925">Ireki fitxategia…</translation> <translation id="8214962590150211830">Kendu pertsona hau</translation> <translation id="8216351761227087153">Ikusi</translation> @@ -6765,7 +6770,6 @@ <translation id="8774379074441005279">Berretsi leheneratu nahi duzula</translation> <translation id="8774934320277480003">Goiko marjina</translation> <translation id="8775144690796719618">URLak ez du balio</translation> -<translation id="8775163630211761057">Hedatu Android-eko telefonoaren onena <ph name="DEVICE_TYPE" /> gailura</translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> # segundo barru blokeatuko da automatikoki. Txartel adimenduna sartuta edukitzea eskatzen du <ph name="DOMAIN" /> domeinuak.}other{<ph name="DEVICE_TYPE" /> # segundo barru blokeatuko da automatikoki. Txartel adimenduna sartuta edukitzea eskatzen du <ph name="DOMAIN" /> domeinuak.}}</translation> @@ -6954,6 +6958,7 @@ <translation id="8973596347849323817">Zure beharretara doi dezakezu gailua. Erabilerraztasun-eginbideak edonoiz alda ditzakezu Ezarpenak atalean.</translation> <translation id="897414447285476047">Helmugako fitxategia ez dago osorik konexio-arazo bat izan delako.</translation> <translation id="897525204902889653">Berrogeialdi-zerbitzua</translation> +<translation id="8975396729541388937">Harpidetza kentzeko, sakatu horretarako esteka jasotzen dituzun mezu elektronikoetan.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" eta beste fitxa bat}other{"<ph name="TAB_TITLE" />" eta beste # fitxa}}</translation> <translation id="8977811652087512276">Pasahitza okerra da edo fitxategia hondatuta dago</translation> <translation id="8978154919215542464">Aktibatuta: sinkronizatu guztia</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index 047d17b..a215866 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{گذرواژه لورفتهای وجود ندارد}=1{۱ گذرواژه لورفته}one{{NUM_COMPROMISED} گذرواژه لورفته}other{{NUM_COMPROMISED} گذرواژه لورفته}}</translation> <translation id="1380028686461971526">اتصال خودکار به شبکه</translation> <translation id="1380436189840894976">درهرصورت از حالت ناشناس خارج میشوید؟</translation> +<translation id="1383597849754832576">نمیتوان فایلهای گفتاری را بارگیری کرد. بعداً دوباره امتحان کنید.</translation> <translation id="1383861834909034572">باز کردن پس از بارگیری</translation> <translation id="1383876407941801731">جستجو</translation> <translation id="1386791642444521222">فعالسازی سیمکارت فیزیکی</translation> @@ -874,7 +875,6 @@ <translation id="1954813140452229842">هنگام نشاندن دستگاه ذخیرهسازی متصل به شبکه خطایی روی داد. لطفاً اطلاعات کاربری را بررسی کنید و دوباره امتحان کنید.</translation> <translation id="1956050014111002555">این فایل دارای چندین مجوز است، هیچکدام وارد نشده است:</translation> <translation id="1956390763342388273">با این کار همه فایلها از «<ph name="FOLDER_PATH" />» بارگذاری خواهد شد. تنها درصورتی که به این سایت اعتماد دارید، این کار را انجام دهید.</translation> -<translation id="1960158217849594135">نام کاربری در «حساب Google» شما ذخیره شود؟</translation> <translation id="196040970347962278">ابتدا اتصال اینترنت را برقرار کنید</translation> <translation id="1962233722219655970">این صفحه از برنامه Native Client استفاده میکند که روی رایانه شما کار نمیکند.</translation> <translation id="1963227389609234879">حذف همه</translation> @@ -900,6 +900,7 @@ <translation id="1984417487208496350">بدون محافظت (توصیه نمیشود)</translation> <translation id="1987317783729300807">اشتراکها</translation> <translation id="1989112275319619282">مشاهده محتوای موجود در فروشگاه ما</translation> +<translation id="1990046457226896323">فایلهای گفتاری بارگیری شد</translation> <translation id="1990512225220753005">میانبرها در این صفحه نشان داده نشود</translation> <translation id="1992397118740194946">تنظیم نشده است</translation> <translation id="1992924914582925289">حذف از دستگاه</translation> @@ -1045,7 +1046,6 @@ <translation id="2157474325782140681">برای دریافت ویژگیهای اضافی، از ایستگاه پایه اتصال Dell که برای کار با این Chromebook طراحی شده است، استفاده کنید.</translation> <translation id="215753907730220065">خروج از حالت تمام صفحه</translation> <translation id="2157875535253991059">این صفحه اکنون در حالت تمام صفحه است.</translation> -<translation id="2160589599612868242">دریافت اعلان از تلفن در <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">افزودن Wi-Fi…</translation> <translation id="2162155940152307086">از صفحه تنظیمات همگامسازی که خارج شوید، همگامسازی شروع میشود</translation> <translation id="2162838847352058695">سایتها نمیتوانند چندین فایل را همزمان بارگیری کنند</translation> @@ -1263,6 +1263,7 @@ <translation id="2399699884460174994">اعلانها روشن شد</translation> <translation id="2399939490305346086">دادههای ورود به سیستم کلید امنیتی</translation> <translation id="2400664245143453337">بهروزرسانی فوری الزامی است</translation> +<translation id="2406153734066939945">این نمایه و دادههای آن حذف شود؟</translation> <translation id="2408018932941436077">درحال ذخیره کارت</translation> <translation id="2408955596600435184">پین را وارد کنید</translation> <translation id="241082044617551207">افزایه ناشناس</translation> @@ -1381,6 +1382,7 @@ <translation id="2526590354069164005">دسک تاپ</translation> <translation id="2526619973349913024">بررسی برای وجود بهروزرسانی</translation> <translation id="2527167509808613699">هر نوع اتصال</translation> +<translation id="2530166226437958497">عیبیابی</translation> <translation id="2532589005999780174">حالت کنتراست بالا</translation> <translation id="253434972992662860">&توقف موقت</translation> <translation id="2534460670861217804">پروکسی HTTP امن</translation> @@ -1698,7 +1700,6 @@ <translation id="2885729872133513017">هنگام رمزگشایی پاسخ سرور، مشکلی پیش آمد.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">بازکردن پیوند با...</translation> -<translation id="2889481634493693121">روشن کردن اعلانها در تلفن</translation> <translation id="2889925978073739256">افزایههایی که در محیط آزمایشی نبودهاند همچنان مسدود بمانند</translation> <translation id="2893168226686371498">مرورگر پیشفرض</translation> <translation id="2893917546370257247">{COUNT,plural, =1{۱ پیام}one{# پیام}other{# پیام}}</translation> @@ -2558,6 +2559,7 @@ <translation id="3857807444929313943">بردارید و سپس دوباره لمس کنید</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: همگامسازی موقتاً متوقف شد</translation> <translation id="3861638017150647085">نام کاربری «<ph name="USERNAME" />» در دسترس نیست</translation> +<translation id="3861977424605124250">نمایش هنگام راهاندازی</translation> <translation id="3862693525629180217">بهتأیید رساندن ازطریق حسگر داخلی</translation> <translation id="3862788408946266506">برنامهای با ویژگی مانیفست «kiosk_only» باید در حالت کیوسک Chrome OS نصب شود</translation> <translation id="3865414814144988605">وضوح</translation> @@ -2800,7 +2802,6 @@ <translation id="412730574613779332">قهرمان</translation> <translation id="4130199216115862831">گزارش دستگاه</translation> <translation id="4130207949184424187">این افزونه، صفحهای را تغییر داده است که هنگام جستجو از Omnibox نشان داده میشود.</translation> -<translation id="4130344535649650885">گذرواژه در «حساب Google» شما ذخیره شود؟</translation> <translation id="4130750466177569591">موافقم</translation> <translation id="413121957363593859">مؤلفهها</translation> <translation id="4131410914670010031">سیاه و سفید</translation> @@ -3199,6 +3200,7 @@ <translation id="4627442949885028695">ادامه از دستگاه دیگری</translation> <translation id="4628757576491864469">دستگاهها</translation> <translation id="4628762811416793313">راهاندازی محتوی Linux تکمیل نشد. لطفاً دوباره امتحان کنید.</translation> +<translation id="4629521233550547305">باز کردن نمایه <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">افزونه به «<ph name="IMPORT_NAME" />» با نسخه حداقل «<ph name="IMPORT_VERSION" />» نیاز دارد اما تنها نسخه «<ph name="INSTALLED_VERSION" />» نصب شده است</translation> <translation id="4633757335284074492">در Google Drive پشتیبانگیری کنید. بهآسانی دادهها را بازیابی کنید یا هرزمان خواستید دستگاه را عوض کنید. این نسخه پشتیبان حاوی دادههای برنامه است. پشتیبانها در Google بارگذاری میشوند و با گذرواژه «حساب Google» فرزندتان رمزگذاری میشوند.</translation> <translation id="4634575639321169635">راهاندازی این دستگاه برای استفاده کاری یا شخصی</translation> @@ -3927,7 +3929,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{دریافت <ph name="ATTACHMENTS" /> از <ph name="DEVICE_NAME" /> ناموفق بود}one{دریافت <ph name="ATTACHMENTS" /> از <ph name="DEVICE_NAME" /> ناموفق بود}other{دریافت <ph name="ATTACHMENTS" /> از <ph name="DEVICE_NAME" /> ناموفق بود}}</translation> <translation id="5502500733115278303">وارد شده از Firefox</translation> <translation id="5502915260472117187">کودک</translation> -<translation id="5503858713116291452">مطمئن شوید تلفنتان نزدیک باشد، قفل آن باز باشد، و بلوتوث و Wi-Fi در آن روشن باشد. برای تکمیل راهاندازی، مراحل موجود در تلفنتان را دنبال کنید.</translation> <translation id="5503982651688210506">ادامه دهید به <ph name="HOST" /> اجازه دهید از دوربینتان استفاده کند و آن را حرکت دهد، و از میکروفونتان استفاده کند</translation> <translation id="5505264765875738116">سایتها نمیتوانند برای ارسال اعلان درخواست دهند</translation> <translation id="5505307013568720083">جوهر تمام شده است</translation> @@ -3988,6 +3989,7 @@ <translation id="5565735124758917034">فعال</translation> <translation id="5567989639534621706">حافظههای پنهان برنامه</translation> <translation id="5568069709869097550">ورود به سیستم ممکن نیست</translation> +<translation id="5571832155627049070">سفارشی کردن نمایه</translation> <translation id="5572851009514199876">لطفاً Chrome را باز کنید و به سیستم آن وارد شوید تا Chrome بتواند بررسی کند آیا مجاز به دسترسی به این سایت هستید یا خیر.</translation> <translation id="5575473780076478375">افزونه ناشناس: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">مشکلی در رابطه با درخواست ثبت حالت نمایشی پیش آمد.</translation> @@ -5457,6 +5459,7 @@ <translation id="7280649757394340890">تنظیمات صدای نوشتار به گفتار</translation> <translation id="7280877790564589615">مجوز درخواست شد</translation> <translation id="7282992757463864530">نوار اطلاعات</translation> +<translation id="7283555985781738399">حالت مهمان</translation> <translation id="7284411326658527427">هر فرد میتواند حسابش را شخصیسازی کند و دادهها را خصوصی نگه دارد.</translation> <translation id="7287143125007575591">دسترسی رد شد.</translation> <translation id="7287411021188441799">بازیابی پسزمینه پیشفرض</translation> @@ -5836,6 +5839,7 @@ <translation id="7716781361494605745">نشانی وب خطمشی ارائه دهنده مجوز Netscape</translation> <translation id="7717014941119698257">بارگیری: <ph name="STATUS" /></translation> <translation id="7717134585801378441">سایتها میتوانند مکان شما را درخواست کنند (توصیه میشود)</translation> +<translation id="771721654176725387">این کار داده مرور شما را برای همیشه از این دستگاه حذف میکند. برای بازیابی داده، همگامسازی را با این حساب روشن کنید:</translation> <translation id="7717845620320228976">بررسی بهروزرسانیها</translation> <translation id="7719367874908701697">بزرگنمایی صفحه</translation> <translation id="7719588063158526969">نام دستگاه خیلی طولانی است</translation> @@ -5872,6 +5876,7 @@ <translation id="7765158879357617694">انتقال</translation> <translation id="7765507180157272835">بلوتوث و Wi-Fi لازم است</translation> <translation id="7766082757934713382">با متوقف کردن موقت بهروزرسانیهای خودکار سیستم و برنامهها، مصرف داده شبکه را کاهش دهید</translation> +<translation id="7766807826975222231">شرکت در تور</translation> <translation id="7766838926148951335">پذیرفتن مجوزها</translation> <translation id="7768507955883790804">وقتی از سایتها بازدید میکنید، آنها بهطور خودکار این تنظیم را دنبال میکنند</translation> <translation id="7768770796815395237">تغییر دادن</translation> @@ -6116,6 +6121,7 @@ <translation id="8017176852978888182">فهرستهای راهنمای همرسانیشده Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">میانبر ویرایش شد</translation> +<translation id="8018298733481692628">این نمایه حذف شود؟</translation> <translation id="8018313076035239964">اطلاعاتی را که وبسایتها میتوانند استفاده کنند و محتوایی را که میتوانند به شما نشان دهند کنترل کنید</translation> <translation id="8023801379949507775">اکنون افزونهها بهروز شوند</translation> <translation id="8026334261755873520">پاک کردن دادههای مرور</translation> @@ -6286,7 +6292,6 @@ <translation id="8211551284753798479">PUK نامعتبر است. <ph name="RETRIES" /> تلاش دیگر دارید.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{بارگیری درحال انجام است}one{بارگیری درحال انجام است}other{بارگیری درحال انجام است}}</translation> <translation id="8213449224684199188">به حالت عکسبرداری وارد شد</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> میخواهد دستگاهتان را شناسایی کند تا بتواند ویدیو و صدای محافظتشده را با بالاترین کیفیت پخش کند.</translation> <translation id="8214489666383623925">باز کردن فایل...</translation> <translation id="8214962590150211830">حذف این شخص</translation> <translation id="8216351761227087153">تماشا</translation> @@ -6765,7 +6770,6 @@ <translation id="8774379074441005279">تأیید بازیابی</translation> <translation id="8774934320277480003">حاشیه بالا</translation> <translation id="8775144690796719618">نشانی وب نامعتبر</translation> -<translation id="8775163630211761057">بهترینهای تلفن Android خود را به <ph name="DEVICE_TYPE" /> بیاورید</translation> <translation id="8775653927968399786">{0,plural, =1{دستگاه <ph name="DEVICE_TYPE" /> شما # ثانیه دیگر بهطور خودکار قفل خواهد شد. برای اینکه از سیستم <ph name="DOMAIN" /> خارج نشوید، باید کارت هوشمندتان را در دستگاه نگه دارید.}one{دستگاه <ph name="DEVICE_TYPE" /> شما # ثانیه دیگر بهطور خودکار قفل خواهد شد. برای اینکه از سیستم <ph name="DOMAIN" /> خارج نشوید، باید کارت هوشمندتان را در دستگاه نگه دارید.}other{دستگاه <ph name="DEVICE_TYPE" /> شما # ثانیه دیگر بهطور خودکار قفل خواهد شد. @@ -6955,6 +6959,7 @@ <translation id="8973596347849323817">میتوانید این دستگاه را متناسب با نیازهایتان سفارشی کنید. میتوانید بعداً در «تنظیمات»، این ویژگیهای دسترسپذیری را تغییر دهید.</translation> <translation id="897414447285476047">فایل مقصد بهعلت مشکل اتصال، ناقص بود.</translation> <translation id="897525204902889653">سرویس قرنطینه</translation> +<translation id="8975396729541388937">با کلیک کردن روی پیوند درجشده در ایمیلهایی که دریافت میکنید، هرزمان خواستید لغو اشتراک کنید.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{«<ph name="TAB_TITLE" />»}=1{«<ph name="TAB_TITLE" />» و ۱ برگه دیگر}one{«<ph name="TAB_TITLE" />» و # برگه دیگر}other{«<ph name="TAB_TITLE" />» و # برگه دیگر}}</translation> <translation id="8977811652087512276">گذرواژه نادرست یا فایل خراب است</translation> <translation id="8978154919215542464">On (روشن) - همگامسازی همهچیز</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index 3e821355..b55cd18 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Ei vaarantuneita salasanoja}=1{1 vaarantunut salasana}other{{NUM_COMPROMISED} vaarantunutta salasanaa}}</translation> <translation id="1380028686461971526">Yhdistä verkkoon automaattisesti</translation> <translation id="1380436189840894976">Haluatko silti poistua incognito-tilasta?</translation> +<translation id="1383597849754832576">Puhetiedostoja ei voi ladata. Yritä myöhemmin uudelleen.</translation> <translation id="1383861834909034572">Avautuu, kun valmis</translation> <translation id="1383876407941801731">Haku</translation> <translation id="1386791642444521222">Aktivoi fyysinen SIM-kortti</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Virhe jaon käyttöönotossa. Tarkista kirjautumistietosi ja yritä uudelleen.</translation> <translation id="1956050014111002555">Tiedostossa oli useita varmenteita, joista mitään ei tuotu:</translation> <translation id="1956390763342388273">Kaikki tämän polun (<ph name="FOLDER_PATH" />) tiedostot ladataan sivustoon. Tee tämä vain luotettavien sivustojen kohdalla.</translation> -<translation id="1960158217849594135">Tallennetaanko käyttäjänimi Google-tilillesi?</translation> <translation id="196040970347962278">Muodosta ensin internetyhteys</translation> <translation id="1962233722219655970">Tämä sivu käyttää Native Client -sovellusta, joka ei toimi tietokoneellasi.</translation> <translation id="1963227389609234879">Poista kaikki</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Ei suojausta (ei suositella)</translation> <translation id="1987317783729300807">Tilit</translation> <translation id="1989112275319619282">Selaa</translation> +<translation id="1990046457226896323">Puhetiedostot ladattu</translation> <translation id="1990512225220753005">Älä näytä pikakuvakkeita tällä sivulla</translation> <translation id="1992397118740194946">Ei asetettu</translation> <translation id="1992924914582925289">Poista laitteelta</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Jos haluat lisäominaisuuksia, käytä Dell-telinettä, joka on suunniteltu yhteensopivaksi tämän Chromebookin kanssa.</translation> <translation id="215753907730220065">Poistu koko näytön tilasta</translation> <translation id="2157875535253991059">Tämä sivu on nyt koko näytöllä.</translation> -<translation id="2160589599612868242"><ph name="DEVICE_TYPE" /> voi saada ilmoituksia puhelimestasi</translation> <translation id="216169395504480358">Lisää Wi-Fi-yhteys...</translation> <translation id="2162155940152307086">Synkronointi alkaa, kun poistut synkronointiasetuksista</translation> <translation id="2162838847352058695">Estä sivustoja lataamasta useita tiedostoja automaattisesti</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Ilmoitukset laitettu päälle</translation> <translation id="2399939490305346086">Suojausavaimen kirjautumisdata</translation> <translation id="2400664245143453337">Päivitys vaaditaan välittömästi</translation> +<translation id="2406153734066939945">Poistetaanko tämä profiili ja sen data?</translation> <translation id="2408018932941436077">Tallennetaan korttia</translation> <translation id="2408955596600435184">Lisää PIN-koodi</translation> <translation id="241082044617551207">Tuntematon laajennus</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Työpöytä</translation> <translation id="2526619973349913024">Tarkista päivitykset</translation> <translation id="2527167509808613699">Mikä tahansa yhteys</translation> +<translation id="2530166226437958497">Ongelmanratkaisu</translation> <translation id="2532589005999780174">Suuri kontrasti -tila</translation> <translation id="253434972992662860">&Tauko</translation> <translation id="2534460670861217804">Suojattu HTTP-välityspalvelin</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Palvelinvastauksen koodinpurku epäonnistui.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Avaa linkki sovelluksessa...</translation> -<translation id="2889481634493693121">Laita puhelimen ilmoitukset päälle</translation> <translation id="2889925978073739256">Estä hiekkalaatikossa toimimattomat laajennukset edelleen</translation> <translation id="2893168226686371498">Oletusselain</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 teksti}other{# tekstiä}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Nosta sormi ja kosketa uudelleen</translation> <translation id="3860104611854310167">Synkronointi keskeytetty: <ph name="PROFILE_NAME" /></translation> <translation id="3861638017150647085">Käyttäjänimi <ph name="USERNAME" /> ei ole käytettävissä</translation> +<translation id="3861977424605124250">Näytä käynnistettäessä</translation> <translation id="3862693525629180217">Vahvista sisäänrakennetun anturin kautta</translation> <translation id="3862788408946266506">Sovellukset, joilla on luetteloattribuutti kiosk_only, täytyy asentaa Chrome-käyttöjärjestelmän kioskitilassa.</translation> <translation id="3865414814144988605">Resoluutio</translation> @@ -2799,7 +2801,6 @@ <translation id="412730574613779332">Äijä</translation> <translation id="4130199216115862831">Laitteen loki</translation> <translation id="4130207949184424187">Tämä laajennus on vaihtanut omnibox-hakujen aloitussivun.</translation> -<translation id="4130344535649650885">Tallennetaanko salasana Google-tilillesi?</translation> <translation id="4130750466177569591">Hyväksyn</translation> <translation id="413121957363593859">Osat</translation> <translation id="4131410914670010031">Mustavalkoinen</translation> @@ -3198,6 +3199,7 @@ <translation id="4627442949885028695">Jatka siitä, mihin jäit toisella laitteella</translation> <translation id="4628757576491864469">Laitteet</translation> <translation id="4628762811416793313">Linux-säilön määritys ei onnistunut. Yritä uudelleen.</translation> +<translation id="4629521233550547305">Avaa profiili: <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Laajennus edellyttää sovellusliittymän <ph name="IMPORT_NAME" /> vähimmäisversiota <ph name="IMPORT_VERSION" />, mutta asennettuna on vain versio <ph name="INSTALLED_VERSION" />.</translation> <translation id="4633757335284074492">Varmuuskopioi Google Driveen. Palauta dataa tai ota uusi laite käyttöön kätevästi milloin tahansa. Tämä varmuuskopio sisältää sovellusdatan. Varmuuskopiot ladataan Googleen ja salataan lapsesi Google-tilin salasanalla.</translation> <translation id="4634575639321169635">Määritä tämä laite töitä varten tai henkilökohtaiseen käyttöön</translation> @@ -3926,7 +3928,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="ATTACHMENTS" /> jonka <ph name="DEVICE_NAME" /> lähetti ei tullut perille}other{<ph name="DEVICE_NAME" /> lähetti <ph name="ATTACHMENTS" />, mutta lähetys epäonnistui}}</translation> <translation id="5502500733115278303">Tuotu Firefoxista</translation> <translation id="5502915260472117187">Lapsi</translation> -<translation id="5503858713116291452">Varmista, että puhelin on lähellä, sen lukitus on avattu ja Bluetooth ja Wi-Fi ovat päällä. Viimeistele käyttöönotto seuraamalla puhelimessa näkyviä ohjeita.</translation> <translation id="5503982651688210506">Hyväksy edelleen, että <ph name="HOST" /> voi käyttää ja liikuttaa kameraasi ja käyttää mikrofoniasi</translation> <translation id="5505264765875738116">Sivustot eivät saa pyytää lupaa ilmoitusten lähettämiseen</translation> <translation id="5505307013568720083">Muste lopussa</translation> @@ -3987,6 +3988,7 @@ <translation id="5565735124758917034">Aktiivinen</translation> <translation id="5567989639534621706">Sovellusvälimuistit</translation> <translation id="5568069709869097550">Ei voi kirjautua sisään</translation> +<translation id="5571832155627049070">Muokkaa profiiliasi</translation> <translation id="5572851009514199876">Aloita ja kirjaudu sisään, jotta Chrome voi tarkistaa, onko sinulla oikeus käyttää tätä sivustoa.</translation> <translation id="5575473780076478375">Incognito-laajennus: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Esittelyn rekisteröintipyynnön kanssa tapahtui ongelma.</translation> @@ -5458,6 +5460,7 @@ <translation id="7280649757394340890">Tekstistä puheeksi ‑ääniasetukset</translation> <translation id="7280877790564589615">Käyttölupapyyntö</translation> <translation id="7282992757463864530">Tietopalkki</translation> +<translation id="7283555985781738399">Vierastila</translation> <translation id="7284411326658527427">Jokainen henkilö voi tehdä tilistään omannäköisen ja pitää datansa yksityisenä.</translation> <translation id="7287143125007575591">Pääsy evätty.</translation> <translation id="7287411021188441799">Palauta oletustausta</translation> @@ -5837,6 +5840,7 @@ <translation id="7716781361494605745">Netscape-varmenteen myöntäjän käytäntö-URL</translation> <translation id="7717014941119698257">Ladataan: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Sivustot saavat kysyä sijaintiasi (suositus)</translation> +<translation id="771721654176725387">Tämä poistaa pysyvästi selausdatasi tältä laitteelta. Jos haluat palauttaa datan, laita päälle Vaihda synkronointitilille</translation> <translation id="7717845620320228976">Tarkista päivitykset</translation> <translation id="7719367874908701697">Sivun zoomaus</translation> <translation id="7719588063158526969">Laitteen nimi liian pitkä</translation> @@ -5873,6 +5877,7 @@ <translation id="7765158879357617694">Siirrä</translation> <translation id="7765507180157272835">Bluetooth ja Wi-Fi vaaditaan</translation> <translation id="7766082757934713382">Auttaa vähentämään verkon datankäyttöä keskeyttämällä automaattiset sovellus- ja järjestelmäpäivitykset</translation> +<translation id="7766807826975222231">Katso esittely</translation> <translation id="7766838926148951335">Hyväksy käyttöoikeudet</translation> <translation id="7768507955883790804">Avaamasi sivustot noudattavat tätä asetusta automaattisesti</translation> <translation id="7768770796815395237">Muuta</translation> @@ -6116,6 +6121,7 @@ <translation id="8017176852978888182">Linuxin jaetut hakemistot</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Pikanäppäintä muokattu</translation> +<translation id="8018298733481692628">Poistetaanko tämä profiili?</translation> <translation id="8018313076035239964">Hallitse sitä, mitä tietoja verkkosivustot voivat käyttää ja mitä sisältöä ne voivat näyttää sinulle.</translation> <translation id="8023801379949507775">Päivitä laajennukset nyt</translation> <translation id="8026334261755873520">Poista selaustiedot</translation> @@ -6286,7 +6292,6 @@ <translation id="8211551284753798479">Väärä PUK-koodi. Sinulla on <ph name="RETRIES" /> yritystä jäljellä.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Lataus on käynnissä}other{Latauksia on käynnissä}}</translation> <translation id="8213449224684199188">Valokuvatilaan siirrytty</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> haluaa tunnistaa laitteesi, jotta se voi toistaa mahdollisimman korkealaatuista suojattua videota ja audiota.</translation> <translation id="8214489666383623925">Avaa tiedosto...</translation> <translation id="8214962590150211830">Poista tämä henkilö</translation> <translation id="8216351761227087153">Katso</translation> @@ -6765,7 +6770,6 @@ <translation id="8774379074441005279">Vahvista palautus</translation> <translation id="8774934320277480003">Yläreuna</translation> <translation id="8775144690796719618">Virheellinen URL-osoite</translation> -<translation id="8775163630211761057">Laajenna Android-puhelimesi parhaat puolet laitteelle (<ph name="DEVICE_TYPE" />)</translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> lukitaan automaattisesti # sekunnin päästä. <ph name="DOMAIN" /> ei salli älykortin poistamista.}other{<ph name="DEVICE_TYPE" /> lukitaan automaattisesti # sekunnin päästä. <ph name="DOMAIN" /> ei salli älykortin poistamista.}}</translation> @@ -6954,6 +6958,7 @@ <translation id="8973596347849323817">Voit muokata laitteen ominaisuuksia tarpeidesi mukaan. Esteettömyysominaisuuksia voi muuttaa myöhemmin asetuksissa.</translation> <translation id="897414447285476047">Kohdetiedostosta puuttuu osia yhteysongelman vuoksi.</translation> <translation id="897525204902889653">Karanteenipalvelu</translation> +<translation id="8975396729541388937">Voit perua tilauksen milloin tahansa klikkaamalla linkkiä, joka löytyy saamistasi sähköposteista.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{<ph name="TAB_TITLE" />}=1{<ph name="TAB_TITLE" /> ja yksi muu välilehti}other{<ph name="TAB_TITLE" /> ja # muuta välilehteä}}</translation> <translation id="8977811652087512276">Virheellinen salasana tai vioittunut tiedosto</translation> <translation id="8978154919215542464">Käytössä – synkronoi kaikki</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index 8ed2b68..b6b97c7 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Walang nakompromisong password}=1{1 nakompromisong password}one{{NUM_COMPROMISED} nakompromisong password}other{{NUM_COMPROMISED} na nakompromisong password}}</translation> <translation id="1380028686461971526">Awtomatikong kumonekta sa network</translation> <translation id="1380436189840894976">Umalis pa rin sa incognito mode?</translation> +<translation id="1383597849754832576">Hindi ma-download ang mga speech file. Subukan ulit sa ibang pagkakataon.</translation> <translation id="1383861834909034572">Magbubukas kapag nakumpleto</translation> <translation id="1383876407941801731">Hanapin</translation> <translation id="1386791642444521222">I-activate ang aktwal na SIM</translation> @@ -877,7 +878,6 @@ <translation id="1954813140452229842">Nagka-error sa pag-mount ng share. Pakitingnan ang iyong mga kredensyal at subukang muli.</translation> <translation id="1956050014111002555">Naglaman ang file ng maraming certificate, wala sa mga ito ang na-import:</translation> <translation id="1956390763342388273">Ia-upload nito ang lahat ng file mula sa "<ph name="FOLDER_PATH" />." Gawin lang ito kung pinagkakatiwalaan mo ang site.</translation> -<translation id="1960158217849594135">I-save ang username sa iyong Google Account?</translation> <translation id="196040970347962278">Kumonekta muna sa internet</translation> <translation id="1962233722219655970">Gumagamit ang pahinang ito ng Native Client app na hindi gumagana sa iyong computer.</translation> <translation id="1963227389609234879">Alisin lahat</translation> @@ -903,6 +903,7 @@ <translation id="1984417487208496350">Walang proteksyon (hindi inirerekomenda)</translation> <translation id="1987317783729300807">Mga Account</translation> <translation id="1989112275319619282">Mag-browse</translation> +<translation id="1990046457226896323">Na-download na ang mga speech file</translation> <translation id="1990512225220753005">Huwag magpakita ng mga shortcut sa page na ito</translation> <translation id="1992397118740194946">Hindi nakatakda</translation> <translation id="1992924914582925289">Alisin sa device</translation> @@ -1048,7 +1049,6 @@ <translation id="2157474325782140681">Para makakuha ng karagdagang feature, gumamit ng istasyon ng pag-dock ng Dell na idinisenyo para gumana sa Chromebook na ito.</translation> <translation id="215753907730220065">Umalis sa Full Screen</translation> <translation id="2157875535253991059">Full screen na ngayon ang pahinang ito.</translation> -<translation id="2160589599612868242">Makatanggap ng mga notification mula sa iyong telepono sa <ph name="DEVICE_TYPE" /> mo</translation> <translation id="216169395504480358">Magdagdag ng Wi-Fi...</translation> <translation id="2162155940152307086">Magsisimula ang pag-sync sa sandaling umalis ka sa mga setting ng pag-sync</translation> <translation id="2162838847352058695">I-block ang mga site sa awtomatikong pag-download ng maraming file</translation> @@ -1266,6 +1266,7 @@ <translation id="2399699884460174994">Na-on ang mga notification</translation> <translation id="2399939490305346086">Data ng pag-sign in ng security key</translation> <translation id="2400664245143453337">Kinakailangan ng agarang update</translation> +<translation id="2406153734066939945">I-delete ang profile na ito at ang data nito?</translation> <translation id="2408018932941436077">Sine-save ang card</translation> <translation id="2408955596600435184">Ilagay ang iyong PIN</translation> <translation id="241082044617551207">Hindi kilalang plugin</translation> @@ -1384,6 +1385,7 @@ <translation id="2526590354069164005">Desktop</translation> <translation id="2526619973349913024">Tumingin para sa update</translation> <translation id="2527167509808613699">Anumang uri ng koneksyon</translation> +<translation id="2530166226437958497">Pag-troubleshoot</translation> <translation id="2532589005999780174">High contrast mode</translation> <translation id="253434972992662860">I-&pause</translation> <translation id="2534460670861217804">Secure na HTTP Proxy</translation> @@ -1701,7 +1703,6 @@ <translation id="2885729872133513017">Nagkaproblema habang dine-decode ang tugon ng server.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Buksan ang link gamit ang...</translation> -<translation id="2889481634493693121">I-on ang mga notification sa iyong telepono</translation> <translation id="2889925978073739256">Patuloy na i-block ang mga hindi naka-sandbox na plugin</translation> <translation id="2893168226686371498">Default na browser</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 text}one{# text}other{# na text}}</translation> @@ -2561,6 +2562,7 @@ <translation id="3857807444929313943">Iangat, pagkatapos ay pindutin muli</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Na-pause ang pag-sync</translation> <translation id="3861638017150647085">Hindi available ang username na "<ph name="USERNAME" />"</translation> +<translation id="3861977424605124250">Ipakita sa startup</translation> <translation id="3862693525629180217">I-verify sa pamamagitan ng built-in na sensor</translation> <translation id="3862788408946266506">Naka-install dapat sa kiosk mode ng Chrome OS ang app na may 'kiosk_only' na manifest attribute</translation> <translation id="3865414814144988605">Resolution</translation> @@ -2803,7 +2805,6 @@ <translation id="412730574613779332">Superhero</translation> <translation id="4130199216115862831">Log ng Device</translation> <translation id="4130207949184424187">Binago ng extension na ito ang ipinapakitang page kapag naghahanap ka sa Omnibox.</translation> -<translation id="4130344535649650885">I-save ang password sa iyong Google Account?</translation> <translation id="4130750466177569591">Sumasang-ayon ako</translation> <translation id="413121957363593859">Mga Bahagi</translation> <translation id="4131410914670010031">Itim at puti</translation> @@ -3202,6 +3203,7 @@ <translation id="4627442949885028695">Magpatuloy mula sa ibang device</translation> <translation id="4628757576491864469">Mga Device</translation> <translation id="4628762811416793313">Hindi natapos ang pag-set up sa Linux container. Pakisubukang muli.</translation> +<translation id="4629521233550547305">Buksan ang profile na <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Kinakailangan ng extension ang "<ph name="IMPORT_NAME" />" na may minimum na bersyon na "<ph name="IMPORT_VERSION" />," ngunit ang bersyon na "<ph name="INSTALLED_VERSION" />" lang ang naka-install</translation> <translation id="4633757335284074492">I-back up sa Google Drive. Walang hirap na mag-restore ng data o lumipat ng device anumang oras. Kasama sa backup na ito ang data ng app. Ang mga backup ay ina-upload sa Google at ine-encrypt gamit ang password sa Google Account ng iyong anak.</translation> <translation id="4634575639321169635">I-set up ang device na ito para sa trabaho o personal na paggamit</translation> @@ -3930,7 +3932,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Hindi natanggap ang <ph name="ATTACHMENTS" /> mula sa <ph name="DEVICE_NAME" />}one{Hindi natanggap ang <ph name="ATTACHMENTS" /> mula sa <ph name="DEVICE_NAME" />}other{Hindi natanggap ang <ph name="ATTACHMENTS" /> mula sa <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Nai-import Mula sa Firefox</translation> <translation id="5502915260472117187">Bata</translation> -<translation id="5503858713116291452">Tiyaking nasa malapit at naka-unlock ang iyong telepono at naka-on ang Bluetooth at Wi-Fi nito. Sundin ang mga hakbang sa iyong telepono para kumpletuhin ang pag-set up.</translation> <translation id="5503982651688210506">Patuloy na payagan ang <ph name="HOST" /> na gamitin at galawin ang iyong camera, at gamitin ang mikropono mo</translation> <translation id="5505264765875738116">Hindi puwedeng humiling ang mga site na magpadala ng mga notification</translation> <translation id="5505307013568720083">Wala nang ink</translation> @@ -3991,6 +3992,7 @@ <translation id="5565735124758917034">Aktibo</translation> <translation id="5567989639534621706">Mga cache ng application</translation> <translation id="5568069709869097550">Hindi makapag-sign in</translation> +<translation id="5571832155627049070">I-customize ang iyong profile</translation> <translation id="5572851009514199876">Magsimula at mag-sign in sa Chrome upang masuri ng Chrome kung pinapayagan kang i-access ang site na ito.</translation> <translation id="5575473780076478375">Extension ng Incognito: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Nagkaproblema sa kahilingan sa pagpaparehistro ng demo.</translation> @@ -5460,6 +5462,7 @@ <translation id="7280649757394340890">Mga setting ng boses ng Text-to-Speech</translation> <translation id="7280877790564589615">Nahiling ang pahintulot</translation> <translation id="7282992757463864530">Infobar</translation> +<translation id="7283555985781738399">Guest mode</translation> <translation id="7284411326658527427">Magagawa ng bawat taong i-personalize ang kanyang account at panatilihing pribado ang data.</translation> <translation id="7287143125007575591">Tinanggihan ang access.</translation> <translation id="7287411021188441799">I-restore ang default na background</translation> @@ -5839,6 +5842,7 @@ <translation id="7716781361494605745">Netscape Certification Authority Policy URL</translation> <translation id="7717014941119698257">Nagda-download: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Puwedeng hilingin ng mga site ang iyong lokasyon (inirerekomenda)</translation> +<translation id="771721654176725387">Permanente nitong ide-delete ang iyong data mula sa pagba-browse sa device na ito. Para ma-recover ang data, i-on ang i-sync bilang</translation> <translation id="7717845620320228976">Tumingin ng mga update</translation> <translation id="7719367874908701697">Pag-zoom ng page</translation> <translation id="7719588063158526969">Masyadong mahaba ang pangalan ng device</translation> @@ -5875,6 +5879,7 @@ <translation id="7765158879357617694">Ilipat</translation> <translation id="7765507180157272835">Kailangan ng Bluetooth at Wi-Fi</translation> <translation id="7766082757934713382">Nakakatulong na mabawasan ang paggamit ng data ng network sa pamamagitan ng pag-pause sa mga awtomatikong update sa app at system</translation> +<translation id="7766807826975222231">Maglibot</translation> <translation id="7766838926148951335">Tanggapin ang mga pahintulot</translation> <translation id="7768507955883790804">Awtomatikong susundin ng mga site ang setting na ito kapag bumisita ka sa mga ito</translation> <translation id="7768770796815395237">Baguhin</translation> @@ -6119,6 +6124,7 @@ <translation id="8017176852978888182">Mga nakabahaging directory ng Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Na-edit ang shortcut</translation> +<translation id="8018298733481692628">I-delete ang profile na ito?</translation> <translation id="8018313076035239964">Kontrolin kung anong impormasyon ang maaaring gamitin ng mga website at anong content ang maaaring ipakita ng mga ito sa iyo</translation> <translation id="8023801379949507775">I-update ang mga extension ngayon</translation> <translation id="8026334261755873520">I-clear ang data sa pag-browse</translation> @@ -6289,7 +6295,6 @@ <translation id="8211551284753798479">Invalid ang PUK. Mayroon ka na lang <ph name="RETRIES" /> (na) natitirang pagsubok.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Kasalukuyang isinasagawa ang pag-download}one{Kasalukuyang isinasagawa ang mga pag-download}other{Kasalukuyang isinasagawa ang mga pag-download}}</translation> <translation id="8213449224684199188">Nailagay sa photo mode</translation> -<translation id="8213866992824776555">Gusto ng <ph name="DOMAIN" /> na matukoy ang iyong device para ma-play nito ang pinakamagandang kalidad na protektadong video at audio.</translation> <translation id="8214489666383623925">Open File...</translation> <translation id="8214962590150211830">Alisin ang Taong Ito</translation> <translation id="8216351761227087153">Panoorin</translation> @@ -6769,7 +6774,6 @@ <translation id="8774379074441005279">Kumpirmahin ang Pag-restore</translation> <translation id="8774934320277480003">Tuktok na margin</translation> <translation id="8775144690796719618">Di-wastong URL</translation> -<translation id="8775163630211761057">I-extend ang pinakasulit sa iyong Android phone sa <ph name="DEVICE_TYPE" /> mo</translation> <translation id="8775653927968399786">{0,plural, =1{Awtomatikong ila-lock ang iyong <ph name="DEVICE_TYPE" /> sa loob ng # segundo. Inaatasan ka ng <ph name="DOMAIN" /> na panatilihing nakalagay ang iyong smart card.}one{Awtomatikong ila-lock ang iyong <ph name="DEVICE_TYPE" /> sa loob ng # segundo. Inaatasan ka ng <ph name="DOMAIN" /> na panatilihing nakalagay ang iyong smart card.}other{Awtomatikong ila-lock ang iyong <ph name="DEVICE_TYPE" /> sa loob ng # na segundo. @@ -6960,6 +6964,7 @@ <translation id="8973596347849323817">Maaari mong i-customize ang device na ito upang maging angkop sa iyong mga pangangailangan. Maaaring baguhin ang mga feature sa accessibility na ito sa ibang pagkakataon sa Mga Setting.</translation> <translation id="897414447285476047">Hindi nakumpleto ang patutunguhang file dahil sa isyu sa koneksyon.</translation> <translation id="897525204902889653">Serbisyo ng Quarantine</translation> +<translation id="8975396729541388937">Mag-unsubscribe anumang oras sa pamamagitan ng pag-click sa link sa mga email na natatanggap mo.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" at 1 pang tab}one{"<ph name="TAB_TITLE" />" at # pang tab}other{"<ph name="TAB_TITLE" />" at # pang tab}}</translation> <translation id="8977811652087512276">Mali ang password o sira ang file</translation> <translation id="8978154919215542464">Naka-on - i-sync lahat</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index c4af62a0..2cf57cd 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -877,7 +877,6 @@ <translation id="1954813140452229842">Erreur lors du partage. Veuillez vérifier vos authentifiants et réessayer.</translation> <translation id="1956050014111002555">Le fichier contenait plusieurs certificats, mais aucun d'entre eux n'a pu être importé :</translation> <translation id="1956390763342388273">Cette opération téléversera tous les fichiers à partir de « <ph name="FOLDER_PATH" /> ». Effectuez cette opération uniquement si vous faites confiance au site.</translation> -<translation id="1960158217849594135">Enregistrer le nom d'utilisateur dans votre compte Google?</translation> <translation id="196040970347962278">Établissez une connexion Internet pour commencer</translation> <translation id="1962233722219655970">Cette page utilise une application cliente native qui n'est pas compatible avec votre ordinateur.</translation> <translation id="1963227389609234879">Tout supprimer</translation> @@ -1048,7 +1047,6 @@ <translation id="2157474325782140681">Pour obtenir des fonctionnalités supplémentaires, servez-vous d'une station d'accueil Dell conçue pour être utilisée avec ce Chromebook.</translation> <translation id="215753907730220065">Quitter le mode plein écran</translation> <translation id="2157875535253991059">Cette page est maintenant en mode plein écran.</translation> -<translation id="2160589599612868242">Recevez les notifications de votre téléphone sur votre <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Ajouter un réseau Wi-Fi…</translation> <translation id="2162155940152307086">La synchronisation commencera dès que vous quitterez les paramètres de synchronisation</translation> <translation id="2162838847352058695">Empêcher les sites de télécharger automatiquement plusieurs fichiers</translation> @@ -1702,7 +1700,6 @@ <translation id="2885729872133513017">Un problème est survenu lors du décodage de la réponse du serveur.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Ouvrir le lien avec...</translation> -<translation id="2889481634493693121">Activer les notifications sur votre téléphone</translation> <translation id="2889925978073739256">Continuer à bloquer l'exécution des plugiciels en dehors du carré de sable</translation> <translation id="2893168226686371498">Navigateur par défaut</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 élément de texte}one{# élément de texte}other{# éléments de texte}}</translation> @@ -2804,7 +2801,6 @@ <translation id="412730574613779332">Superhéros</translation> <translation id="4130199216115862831">Journal de l’appareil</translation> <translation id="4130207949184424187">L'extension a modifié la page qui s'affiche lorsque vous effectuez des recherches depuis l'omnibox.</translation> -<translation id="4130344535649650885">Enregistrer le mot de passe dans votre compte Google?</translation> <translation id="4130750466177569591">J'accepte</translation> <translation id="413121957363593859">Composants</translation> <translation id="4131410914670010031">Noir et blanc</translation> @@ -3931,7 +3927,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Échec de réception de <ph name="ATTACHMENTS" /> de l'appareil <ph name="DEVICE_NAME" />}one{Échec de réception de <ph name="ATTACHMENTS" /> de l'appareil <ph name="DEVICE_NAME" />}other{Échec de réception de <ph name="ATTACHMENTS" /> de l'appareil <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Importés de Firefox</translation> <translation id="5502915260472117187">Un enfant</translation> -<translation id="5503858713116291452">Assurez-vous que votre téléphone est à proximité, qu'il est déverrouillé et que le Bluetooth et le Wi-Fi sont activés. Suivez les étapes indiquées sur votre téléphone pour terminer la configuration.</translation> <translation id="5503982651688210506">Continuer d'autoriser <ph name="HOST" /> à utiliser et à déplacer votre caméra et à utiliser votre microphone</translation> <translation id="5505264765875738116">Les sites ne peuvent pas vous demander l'autorisation d'envoyer des notifications</translation> <translation id="5505307013568720083">À court d'encre</translation> @@ -3992,6 +3987,7 @@ <translation id="5565735124758917034">Actif</translation> <translation id="5567989639534621706">Caches des applications</translation> <translation id="5568069709869097550">Impossible de se connecter</translation> +<translation id="5571832155627049070">Personnaliser votre profil</translation> <translation id="5572851009514199876">Veuillez démarrer Chrome et vous connecter pour que Chrome puisse vérifier si vous pouvez accéder à ce site.</translation> <translation id="5575473780076478375">Extension en mode de navigation privée : <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Un problème avec la demande d'enregistrement du mode démo s'est produit.</translation> @@ -5875,6 +5871,7 @@ <translation id="7765158879357617694">Déplacer</translation> <translation id="7765507180157272835">Le Bluetooth et le Wi-Fi sont nécessaires</translation> <translation id="7766082757934713382">Aide à réduire l'utilisation de données réseau en interrompant les mises à jour automatiques des applications et des systèmes</translation> +<translation id="7766807826975222231">Visite guidée</translation> <translation id="7766838926148951335">Accepter les autorisations</translation> <translation id="7768507955883790804">Les sites respectent automatiquement ce paramètre quand vous les visitez</translation> <translation id="7768770796815395237">Changer</translation> @@ -6288,7 +6285,6 @@ <translation id="8211551284753798479">Code PUK incorrect. Il vous reste <ph name="RETRIES" /> tentatives.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Téléchargement en cours…}one{Téléchargement en cours…}other{Téléchargements en cours…}}</translation> <translation id="8213449224684199188">Mode photo activé</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> souhaite reconnaître votre appareil afin qu'il puisse lire des contenus vidéo et audio protégés de la meilleure qualité possible.</translation> <translation id="8214489666383623925">Ouvrir...</translation> <translation id="8214962590150211830">Supprimer cette personne</translation> <translation id="8216351761227087153">Visionner</translation> @@ -6767,7 +6763,6 @@ <translation id="8774379074441005279">Confirmez la restauration</translation> <translation id="8774934320277480003">Marge supérieure</translation> <translation id="8775144690796719618">URL non valide</translation> -<translation id="8775163630211761057">Faites profiter votre <ph name="DEVICE_TYPE" /> du meilleur de votre téléphone Android</translation> <translation id="8775653927968399786">{0,plural, =1{Votre <ph name="DEVICE_TYPE" /> sera automatiquement verrouillé dans # seconde. <ph name="DOMAIN" /> vous demande de laisser votre carte à puce insérée.}one{Votre <ph name="DEVICE_TYPE" /> sera automatiquement verrouillé dans # seconde. <ph name="DOMAIN" /> vous demande de laisser votre carte à puce insérée.}other{Votre <ph name="DEVICE_TYPE" /> sera automatiquement verrouillé dans # secondes.
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index 2d9f395..f1a7020d 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Aucun mot de passe compromis}=1{1 mot de passe compromis}one{{NUM_COMPROMISED} mot de passe compromis}other{{NUM_COMPROMISED} mots de passe compromis}}</translation> <translation id="1380028686461971526">Se connecter automatiquement au réseau</translation> <translation id="1380436189840894976">Voulez-vous vraiment quitter le mode navigation privée ?</translation> +<translation id="1383597849754832576">Impossible de télécharger les fichiers vocaux. Réessayez plus tard.</translation> <translation id="1383861834909034572">Ouverture à la fin du téléchargement</translation> <translation id="1383876407941801731">Rechercher</translation> <translation id="1386791642444521222">Activer une carte SIM physique</translation> @@ -877,7 +878,6 @@ <translation id="1954813140452229842">Erreur lors de l'installation du partage. Veuillez vérifier vos identifiants, puis réessayer.</translation> <translation id="1956050014111002555">Le fichier contenait plusieurs certificats, aucun d'eux n'a été importé :</translation> <translation id="1956390763342388273">Tous les fichiers seront téléchargés depuis "<ph name="FOLDER_PATH" />". N'effectuez cette opération que s'il s'agit d'un site de confiance.</translation> -<translation id="1960158217849594135">Enregistrer le nom d'utilisateur dans votre compte Google ?</translation> <translation id="196040970347962278">Connectez-vous tout d'abord à Internet</translation> <translation id="1962233722219655970">Cette page utilise une application cliente native qui ne fonctionne pas sur votre ordinateur.</translation> <translation id="1963227389609234879">Tout supprimer</translation> @@ -903,6 +903,7 @@ <translation id="1984417487208496350">Aucune protection (non recommandé)</translation> <translation id="1987317783729300807">Comptes</translation> <translation id="1989112275319619282">Parcourir</translation> +<translation id="1990046457226896323">Fichiers vocaux téléchargés</translation> <translation id="1990512225220753005">Ne pas afficher de raccourcis sur cette page</translation> <translation id="1992397118740194946">Non défini</translation> <translation id="1992924914582925289">Supprimer de l'appareil</translation> @@ -1048,7 +1049,6 @@ <translation id="2157474325782140681">Pour bénéficier de fonctionnalités supplémentaires, utilisez une station d'accueil Dell compatible avec ce Chromebook.</translation> <translation id="215753907730220065">Quitter le mode plein écran</translation> <translation id="2157875535253991059">Cette page est maintenant en mode plein écran</translation> -<translation id="2160589599612868242">Recevez sur votre <ph name="DEVICE_TYPE" /> les notifications transmises sur votre téléphone</translation> <translation id="216169395504480358">Ajouter un réseau Wi-Fi…</translation> <translation id="2162155940152307086">La synchronisation commencera une fois que vous aurez quitté les paramètres de synchronisation</translation> <translation id="2162838847352058695">Empêcher les sites de télécharger automatiquement plusieurs fichiers</translation> @@ -1266,6 +1266,7 @@ <translation id="2399699884460174994">Notifications activées</translation> <translation id="2399939490305346086">Données de connexion sur la clé de sécurité</translation> <translation id="2400664245143453337">Mise à jour immédiate requise</translation> +<translation id="2406153734066939945">Voulez-vous supprimer ce profil et ses données associées ?</translation> <translation id="2408018932941436077">Enregistrement de la carte…</translation> <translation id="2408955596600435184">Saisissez votre code.</translation> <translation id="241082044617551207">Plug-in inconnu</translation> @@ -1384,6 +1385,7 @@ <translation id="2526590354069164005">Bureau</translation> <translation id="2526619973349913024">Rechercher des mises à jour</translation> <translation id="2527167509808613699">Toutes sortes de connexions</translation> +<translation id="2530166226437958497">Dépannage</translation> <translation id="2532589005999780174">Mode Contraste élevé</translation> <translation id="253434972992662860">&Pause</translation> <translation id="2534460670861217804">Proxy HTTP sécurisé</translation> @@ -1701,7 +1703,6 @@ <translation id="2885729872133513017">Un problème est survenu lors du décodage de la réponse du serveur.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Ouvrir le lien avec...</translation> -<translation id="2889481634493693121">Activer les notifications sur votre téléphone</translation> <translation id="2889925978073739256">Continuer à bloquer l'exécution hors bac à sable des plug-ins</translation> <translation id="2893168226686371498">Navigateur par défaut</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 SMS}one{# SMS}other{# SMS}}</translation> @@ -2561,6 +2562,7 @@ <translation id="3857807444929313943">Levez le doigt, puis appuyez de nouveau</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" /> : synchronisation en pause</translation> <translation id="3861638017150647085">Nom d'utilisateur "<ph name="USERNAME" />" non disponible</translation> +<translation id="3861977424605124250">Afficher au démarrage</translation> <translation id="3862693525629180217">Valider via le capteur intégré</translation> <translation id="3862788408946266506">L'application dont le fichier manifeste comporte un attribut "kiosk_only" doit être installée en mode Kiosque pour Chrome OS</translation> <translation id="3865414814144988605">Résolution</translation> @@ -2803,7 +2805,6 @@ <translation id="412730574613779332">Super-héros</translation> <translation id="4130199216115862831">Journal d'appareils</translation> <translation id="4130207949184424187">Cette extension a modifié la page qui s'affiche lorsque vous effectuez une recherche dans l'omnibox.</translation> -<translation id="4130344535649650885">Enregistrer le mot de passe dans votre compte Google ?</translation> <translation id="4130750466177569591">J'accepte</translation> <translation id="413121957363593859">Composants</translation> <translation id="4131410914670010031">Noir et blanc</translation> @@ -3202,6 +3203,7 @@ <translation id="4627442949885028695">Continuer sur un autre appareil</translation> <translation id="4628757576491864469">Appareils</translation> <translation id="4628762811416793313">Impossible de configurer le conteneur Linux. Veuillez réessayer.</translation> +<translation id="4629521233550547305">Ouvrir le profil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">L'extension nécessite au minimum la version <ph name="IMPORT_VERSION" /> de <ph name="IMPORT_NAME" />, mais la version installée est la <ph name="INSTALLED_VERSION" /></translation> <translation id="4633757335284074492">Sauvegarder dans Google Drive. Restaurez les données ou changez d'appareil facilement et à tout moment. Les données des applications sont également sauvegardées. Les sauvegardes sont importées dans Google et chiffrées à l'aide du mot de passe du compte Google de votre enfant.</translation> <translation id="4634575639321169635">Configurez cet appareil pour un usage professionnel ou personnel</translation> @@ -3930,7 +3932,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Échec de la réception de <ph name="ATTACHMENTS" /> de l'appareil "<ph name="DEVICE_NAME" />"}one{Échec de la réception de <ph name="ATTACHMENTS" /> de l'appareil "<ph name="DEVICE_NAME" />"}other{Échec de la réception de <ph name="ATTACHMENTS" /> de l'appareil "<ph name="DEVICE_NAME" />"}}</translation> <translation id="5502500733115278303">Importés depuis Firefox</translation> <translation id="5502915260472117187">Un enfant</translation> -<translation id="5503858713116291452">Vérifiez que votre téléphone est déverrouillé et à proximité, et que le Bluetooth et le Wi-Fi sont activés. Suivez les étapes indiquées sur votre téléphone pour terminer la configuration.</translation> <translation id="5503982651688210506">Continuer d'autoriser <ph name="HOST" /> à utiliser et bouger la caméra, et à utiliser le micro</translation> <translation id="5505264765875738116">Les sites ne peuvent pas vous demander l'autorisation d'envoyer des notifications</translation> <translation id="5505307013568720083">À court d'encre</translation> @@ -3991,6 +3992,7 @@ <translation id="5565735124758917034">Actif</translation> <translation id="5567989639534621706">Caches des applications</translation> <translation id="5568069709869097550">Impossible de se connecter</translation> +<translation id="5571832155627049070">Personnalisez votre profil</translation> <translation id="5572851009514199876">Veuillez démarrer Chrome et vous connecter à votre compte pour que le navigateur puisse vérifier que vous êtes autorisé à accéder à ce site.</translation> <translation id="5575473780076478375">Extension en mode navigation privée :<ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Un problème est survenu avec la demande d'enregistrement en mode de démonstration.</translation> @@ -5461,6 +5463,7 @@ <translation id="7280649757394340890">Paramètres de voix de la synthèse vocale</translation> <translation id="7280877790564589615">Autorisation demandée</translation> <translation id="7282992757463864530">Barre d'informations</translation> +<translation id="7283555985781738399">Mode Invité</translation> <translation id="7284411326658527427">Chaque personne pourra personnaliser son compte et préserver la confidentialité de ses données.</translation> <translation id="7287143125007575591">Accès refusé.</translation> <translation id="7287411021188441799">Restaurer l'arrière-plan par défaut</translation> @@ -5840,6 +5843,7 @@ <translation id="7716781361494605745">URL de stratégie de l'autorité de certification Netscape</translation> <translation id="7717014941119698257">Téléchargement : <ph name="STATUS" /></translation> <translation id="7717134585801378441">Les sites peuvent demander votre position (recommandé)</translation> +<translation id="771721654176725387">Cette action aura pour effet de supprimer définitivement vos données de navigation de cet appareil. Pour récupérer vos données, activez la synchronisation en tant que</translation> <translation id="7717845620320228976">Rechercher des mises à jour</translation> <translation id="7719367874908701697">Zoom de la page</translation> <translation id="7719588063158526969">Nom d'appareil trop long</translation> @@ -5876,6 +5880,7 @@ <translation id="7765158879357617694">Déplacer</translation> <translation id="7765507180157272835">Veuillez activer le Bluetooth et le Wi-Fi</translation> <translation id="7766082757934713382">Aide à réduire la consommation de données réseau en suspendant les mises à jour automatiques du système et des applications</translation> +<translation id="7766807826975222231">Visite guidée</translation> <translation id="7766838926148951335">Accepter les autorisations</translation> <translation id="7768507955883790804">Les sites se basent automatiquement sur ce paramètre lorsque vous les consultez</translation> <translation id="7768770796815395237">Modifier</translation> @@ -6120,6 +6125,7 @@ <translation id="8017176852978888182">Répertoires partagés Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Raccourci modifié</translation> +<translation id="8018298733481692628">Voulez-vous supprimer ce profil ?</translation> <translation id="8018313076035239964">Contrôler les informations que les sites Web peuvent utiliser et le contenu qu'ils peuvent afficher</translation> <translation id="8023801379949507775">Mettre à jour les extensions maintenant</translation> <translation id="8026334261755873520">Effacer les données de navigation</translation> @@ -6290,7 +6296,6 @@ <translation id="8211551284753798479">Clé PUK incorrecte. Il vous reste <ph name="RETRIES" /> tentatives.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Téléchargement en cours}one{Téléchargement en cours}other{Téléchargements en cours}}</translation> <translation id="8213449224684199188">Mode Photo activé</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> souhaite identifier votre appareil afin qu'il puisse lire des contenus vidéo et audio protégés de la meilleure qualité possible.</translation> <translation id="8214489666383623925">Ouvrir le fichier...</translation> <translation id="8214962590150211830">Supprimer ce profil utilisateur</translation> <translation id="8216351761227087153">Regarder</translation> @@ -6769,7 +6774,6 @@ <translation id="8774379074441005279">Confirmer la restauration</translation> <translation id="8774934320277480003">Marge supérieure</translation> <translation id="8775144690796719618">URL non valide.</translation> -<translation id="8775163630211761057">Étendre les capacités les plus performantes de votre téléphone Android à votre <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Votre appareil (<ph name="DEVICE_TYPE" />) va être automatiquement verrouillé dans # seconde. <ph name="DOMAIN" /> vous demande de laisser votre carte à puce insérée.}one{Votre appareil (<ph name="DEVICE_TYPE" />) va être automatiquement verrouillé dans # seconde. <ph name="DOMAIN" /> vous demande de laisser votre carte à puce insérée.}other{Votre appareil (<ph name="DEVICE_TYPE" />) va être automatiquement verrouillé dans # secondes. @@ -6959,6 +6963,7 @@ <translation id="8973596347849323817">Vous pouvez personnaliser cet appareil en fonction de vos besoins. Il est possible de modifier ces fonctionnalités d'accessibilité ultérieurement dans les paramètres.</translation> <translation id="897414447285476047">Le fichier de destination est incomplet en raison d'un problème de connexion.</translation> <translation id="897525204902889653">Service de zone de quarantaine</translation> +<translation id="8975396729541388937">Vous pouvez vous désabonner à tout moment en cliquant sur le lien correspondant dans les e-mails que vous recevez.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" et 1 autre onglet}one{"<ph name="TAB_TITLE" />" et # autre onglet}other{"<ph name="TAB_TITLE" />" et # autres onglets}}</translation> <translation id="8977811652087512276">Mot de passe incorrect ou fichier corrompu</translation> <translation id="8978154919215542464">Activée – Tout synchroniser</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index 8f8ecda..0775b1c 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Ningún contrasinal vulnerado}=1{1 contrasinal vulnerado}other{{NUM_COMPROMISED} contrasinais vulnerados}}</translation> <translation id="1380028686461971526">Conectarse á rede de forma automática</translation> <translation id="1380436189840894976">Queres saír do modo de incógnito de todas formas?</translation> +<translation id="1383597849754832576">Non se puideron descargar os ficheiros de voz. Téntao máis tarde.</translation> <translation id="1383861834909034572">Abrir unha vez completado</translation> <translation id="1383876407941801731">Buscar</translation> <translation id="1386791642444521222">Activar SIM física</translation> @@ -875,7 +876,6 @@ <translation id="1954813140452229842">Produciuse un erro ao montar a localización compartida. Comproba as túas credenciais e téntao outra vez.</translation> <translation id="1956050014111002555">O ficheiro contiña varios certificados e non se importou ningún deles:</translation> <translation id="1956390763342388273">Con esta acción cargaranse todos os ficheiros de "<ph name="FOLDER_PATH" />". Non continúes se non confías no sitio.</translation> -<translation id="1960158217849594135">Queres gardar o nome do usuario na túa Conta de Google?</translation> <translation id="196040970347962278">Primeiro establece unha conexión a Internet</translation> <translation id="1962233722219655970">Esta páxina utiliza unha aplicación de cliente nativo que non funciona no teu ordenador.</translation> <translation id="1963227389609234879">Eliminar todas</translation> @@ -901,6 +901,7 @@ <translation id="1984417487208496350">Sen protección (non recomendado)</translation> <translation id="1987317783729300807">Contas</translation> <translation id="1989112275319619282">Examinar</translation> +<translation id="1990046457226896323">Descargáronse os ficheiros de voz</translation> <translation id="1990512225220753005">Non se mostran atallos nesta páxina</translation> <translation id="1992397118740194946">Sen configurar</translation> <translation id="1992924914582925289">Quitar do dispositivo</translation> @@ -1046,7 +1047,6 @@ <translation id="2157474325782140681">Para gozar de funcións adicionais, utiliza unha base de Dell deseñada para funcionar con este Chromebook.</translation> <translation id="215753907730220065">Saír do modo de pantalla completa</translation> <translation id="2157875535253991059">Esta páxina está agora en pantalla completa.</translation> -<translation id="2160589599612868242">Recibe notificacións do teléfono no teu dispositivo (<ph name="DEVICE_TYPE" />)</translation> <translation id="216169395504480358">Engadir wifi...</translation> <translation id="2162155940152307086">A sincronización comezará cando saias da configuración desta función</translation> <translation id="2162838847352058695">Impedir que os sitios descarguen automaticamente varios ficheiros</translation> @@ -1264,6 +1264,7 @@ <translation id="2399699884460174994">Activáronse as notificacións</translation> <translation id="2399939490305346086">Datos de inicio de sesión da chave de seguranza</translation> <translation id="2400664245143453337">Requírese unha actualización de inmediato</translation> +<translation id="2406153734066939945">Querer borrar este perfil e os seus datos?</translation> <translation id="2408018932941436077">Gardando tarxeta</translation> <translation id="2408955596600435184">Introduce o PIN</translation> <translation id="241082044617551207">Plugin descoñecido</translation> @@ -1382,6 +1383,7 @@ <translation id="2526590354069164005">Ordenador</translation> <translation id="2526619973349913024">Buscar actualizacións</translation> <translation id="2527167509808613699">Calquera tipo de conexión</translation> +<translation id="2530166226437958497">Solución de problemas</translation> <translation id="2532589005999780174">Modo de alto contraste</translation> <translation id="253434972992662860">&Pausa</translation> <translation id="2534460670861217804">Proxy HTTP seguro</translation> @@ -1699,7 +1701,6 @@ <translation id="2885729872133513017">Produciuse un problema ao descodificar a resposta do servidor.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Abrir ligazón con...</translation> -<translation id="2889481634493693121">Activar as notificacións no teléfono</translation> <translation id="2889925978073739256">Continuar bloqueando plugins de illamento de procesos</translation> <translation id="2893168226686371498">Navegador predeterminado</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 texto}other{# textos}}</translation> @@ -2559,6 +2560,7 @@ <translation id="3857807444929313943">Levanta o dedo e volve tocar o sensor</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: a sincronización está en pausa</translation> <translation id="3861638017150647085">O nome de usuario "<ph name="USERNAME" />" non está dispoñible</translation> +<translation id="3861977424605124250">Mostrar ao inicio</translation> <translation id="3862693525629180217">Verificación mediante o sensor integrado</translation> <translation id="3862788408946266506">É necesario instalar a aplicación co atributo de manifesto "kiosk_only" no modo de quiosco de Chrome OS</translation> <translation id="3865414814144988605">Resolución</translation> @@ -2801,7 +2803,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Rexistro do dispositivo</translation> <translation id="4130207949184424187">Esta extensión cambiou a páxina que se mostra ao buscar desde Omnibox.</translation> -<translation id="4130344535649650885">Queres gardar o contrasinal na túa Conta de Google?</translation> <translation id="4130750466177569591">Acepto</translation> <translation id="413121957363593859">Compoñentes</translation> <translation id="4131410914670010031">Branco e negro</translation> @@ -3200,6 +3201,7 @@ <translation id="4627442949885028695">Continuar desde outro dispositivo</translation> <translation id="4628757576491864469">Dispositivos</translation> <translation id="4628762811416793313">A configuración do contedor de Linux non se completou. Téntao de novo.</translation> +<translation id="4629521233550547305">Abrir perfil de <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">A extensión necesita "<ph name="IMPORT_NAME" />" coa versión "<ph name="IMPORT_VERSION" />" como mínimo, pero só está instalada a versión "<ph name="INSTALLED_VERSION" />"</translation> <translation id="4633757335284074492">Facer copia de seguranza en Drive. Restaura os datos facilmente ou cambia de dispositivo en calquera momento. Esta copia de seguranza inclúe os datos das aplicacións. As copias de seguranza cárganse en Google e encríptanse co contrasinal da Conta de Google do teu fillo.</translation> <translation id="4634575639321169635">Configura este dispositivo para uso laboral ou persoal</translation> @@ -3928,7 +3930,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Produciuse un erro ao recibir <ph name="ATTACHMENTS" /> deste dispositivo: <ph name="DEVICE_NAME" />}other{Produciuse un erro ao recibir <ph name="ATTACHMENTS" /> deste dispositivo: <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Importados desde Firefox</translation> <translation id="5502915260472117187">Un neno ou nena</translation> -<translation id="5503858713116291452">Asegúrate de que o teu teléfono estea preto e desbloqueado, e comproba que teña o Bluetooth e a wifi activados. Para finalizar a configuración, sigue os pasos que aparecen no teléfono.</translation> <translation id="5503982651688210506">Seguir permitindo que <ph name="HOST" /> use e mova a túa cámara, e que use o teu micrófono</translation> <translation id="5505264765875738116">Os sitios non poden pedir permiso para enviar notificacións</translation> <translation id="5505307013568720083">Non hai tinta</translation> @@ -3989,6 +3990,7 @@ <translation id="5565735124758917034">Activo</translation> <translation id="5567989639534621706">Memorias caché das aplicacións</translation> <translation id="5568069709869097550">Non se pode iniciar sesión</translation> +<translation id="5571832155627049070">Personaliza o teu perfil</translation> <translation id="5572851009514199876">Abre Chrome e inicia sesión para que o navegador poida comprobar se tes permiso para acceder a este sitio.</translation> <translation id="5575473780076478375">Extensión do modo de incógnito: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Produciuse un problema coa solicitude de rexistro de demostración.</translation> @@ -5457,6 +5459,7 @@ <translation id="7280649757394340890">Configuración da síntese de voz</translation> <translation id="7280877790564589615">Solicitouse permiso</translation> <translation id="7282992757463864530">Barra de información</translation> +<translation id="7283555985781738399">Modo de invitado</translation> <translation id="7284411326658527427">Cada unha delas pode personalizar a súa conta e protexer a privacidade dos seus datos.</translation> <translation id="7287143125007575591">Denegouse o acceso.</translation> <translation id="7287411021188441799">Restaurar fondo predeterminado</translation> @@ -5836,6 +5839,7 @@ <translation id="7716781361494605745">URL de política de autoridade de certificación de Netscape</translation> <translation id="7717014941119698257">Descargando: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Os sitios poden consultar a túa localización (recomendado)</translation> +<translation id="771721654176725387">Con esta acción eliminaranse permanentemente os teus datos de navegación deste dispositivo. Para recuperalos, activa a sincronización como</translation> <translation id="7717845620320228976">Buscar actualizacións</translation> <translation id="7719367874908701697">Zoom na páxina</translation> <translation id="7719588063158526969">O nome do dispositivo é demasiado longo</translation> @@ -5872,6 +5876,7 @@ <translation id="7765158879357617694">Mover</translation> <translation id="7765507180157272835">É necesario dispoñer de Bluetooth e dunha wifi</translation> <translation id="7766082757934713382">Contribúe a reducir o uso de datos da rede ao poñer en pausa as actualizacións automáticas de aplicacións e do sistema</translation> +<translation id="7766807826975222231">Realizar un percorrido</translation> <translation id="7766838926148951335">Aceptar permisos</translation> <translation id="7768507955883790804">Esta opción de configuración aplicarase automaticamente aos sitios cando os visites</translation> <translation id="7768770796815395237">Cambiar</translation> @@ -6115,6 +6120,7 @@ <translation id="8016266267177410919">Almacenamento temporal</translation> <translation id="8017176852978888182">Directorios compartidos de Linux</translation> <translation id="8017679124341497925">Editouse o atallo</translation> +<translation id="8018298733481692628">Queres eliminar este perfil?</translation> <translation id="8018313076035239964">Controla a información que poden usar os sitios web e o contido que poden mostrarche</translation> <translation id="8023801379949507775">Actualizar extensións agora</translation> <translation id="8026334261755873520">Borrar datos de navegación</translation> @@ -6285,7 +6291,6 @@ <translation id="8211551284753798479">O PUK non é válido. Quédanche <ph name="RETRIES" /> intentos.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{A descarga está en curso}other{As descargas están en curso}}</translation> <translation id="8213449224684199188">Iniciouse o modo de foto</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> quere identificar o teu dispositivo para poder reproducir audio e vídeo protexido da maior calidade posible.</translation> <translation id="8214489666383623925">Abrir ficheiro...</translation> <translation id="8214962590150211830">Eliminar esta persoa</translation> <translation id="8216351761227087153">Ver</translation> @@ -6764,7 +6769,6 @@ <translation id="8774379074441005279">Confirmar restauración</translation> <translation id="8774934320277480003">Marxe superior</translation> <translation id="8775144690796719618">URL non válido</translation> -<translation id="8775163630211761057">Utiliza as mellores funcións do teléfono Android no teu dispositivo (<ph name="DEVICE_TYPE" />)</translation> <translation id="8775653927968399786">{0,plural, =1{O teu dispositivo (<ph name="DEVICE_TYPE" />) bloquearase automaticamente en # segundo. <ph name="DOMAIN" /> require que manteñas a tarxeta intelixente inserida.}other{O teu dispositivo (<ph name="DEVICE_TYPE" />) bloquearase automaticamente en # segundos. <ph name="DOMAIN" /> require que manteñas a tarxeta intelixente inserida.}}</translation> @@ -6953,6 +6957,7 @@ <translation id="8973596347849323817">Podes personalizar este dispositivo segundo as túas necesidades. Podes cambiar estas funcións de accesibilidade máis tarde en Configuración.</translation> <translation id="897414447285476047">O ficheiro de destino está incompleto debido a un problema de conexión.</translation> <translation id="897525204902889653">Servizo de corentena</translation> +<translation id="8975396729541388937">Cancela a subscrición en calquera momento con só facer clic na ligazón que aparece nos correos electrónicos que recibas.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" e 1 pestana máis}other{"<ph name="TAB_TITLE" />" e # pestanas máis}}</translation> <translation id="8977811652087512276">O contrasinal é incorrecto ou o ficheiro está danado</translation> <translation id="8978154919215542464">Activado: sincronizar todo</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index 758e8daa..3c763e91 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{ચેડાં કરાયેલો કોઈ પાસવર્ડ નથી}=1{ચેડાં કરાયેલો 1 પાસવર્ડ}one{ચેડાં કરાયેલો {NUM_COMPROMISED} પાસવર્ડ}other{ચેડાં કરાયેલા {NUM_COMPROMISED} પાસવર્ડ}}</translation> <translation id="1380028686461971526">નેટવર્ક સાથે ઑટોમૅટિક રીતે કનેક્ટ થાઓ</translation> <translation id="1380436189840894976">છૂપો મોડ બંધ કરી જ દઈએ?</translation> +<translation id="1383597849754832576">સ્પીચ ફાઇલો ડાઉનલોડ કરી શકાતી નથી. થોડા સમય પછી ફરી પ્રયાસ કરો.</translation> <translation id="1383861834909034572">પૂર્ણ થવા પર ખુલે છે</translation> <translation id="1383876407941801731">શોધો</translation> <translation id="1386791642444521222">વાસ્તવિક સિમને સક્રિય કરો</translation> @@ -873,7 +874,6 @@ <translation id="1954813140452229842">શેર માઉન્ટ કરવામાં ભૂલ આવી. કૃપા કરીને તમારા ઓળખપત્રો ચેક કરો અને ફરી પ્રયાસ કરો.</translation> <translation id="1956050014111002555">ફાઇલમાં બહુવિધ પ્રમાણપત્રો રહેલા છે, તેમાંનાં કોઈપણ આયાત કરેલા નથી:</translation> <translation id="1956390763342388273">આનાથી "<ph name="FOLDER_PATH" />"માંથી બધી ફાઇલો અપલોડ થશે. જો તમે સાઇટ પર વિશ્વાસ કરતા હો, તો જ આ કરશો.</translation> -<translation id="1960158217849594135">તમારા Google એકાઉન્ટમાં વપરાશકર્તાનું નામ સાચવીએ?</translation> <translation id="196040970347962278">પહેલાં કોઈ ઇન્ટરનેટ કનેક્શન સ્થાપિત કરો</translation> <translation id="1962233722219655970">આ પૃષ્ઠ મૂળ ક્લાયન્ટ એપ્લિકેશનનો ઉપયોગ કરે છે જે તમારા કમ્પ્યુટર પર કામ કરતી નથી.</translation> <translation id="1963227389609234879">બધું દૂર કરો</translation> @@ -899,6 +899,7 @@ <translation id="1984417487208496350">કોઈ સંરક્ષણ નથી (સુઝાવ આપતા નથી)</translation> <translation id="1987317783729300807">એકાઉન્ટ્સ</translation> <translation id="1989112275319619282">બ્રાઉઝ કરો</translation> +<translation id="1990046457226896323">સ્પીચ ફાઇલો ડાઉનલોડ કરી</translation> <translation id="1990512225220753005">આ પેજ પર શૉર્ટકટ બતાવશો નહીં</translation> <translation id="1992397118740194946">સેટ નથી</translation> <translation id="1992924914582925289">ડિવાઇસમાંથી કાઢી નાખો</translation> @@ -1044,7 +1045,6 @@ <translation id="2157474325782140681">વધારાની સુવિધાઓ મેળવવા માટે, આ Chromebookમાં કામ કરવા માટે ડિઝાઇન કરવામાં આવેલા Dell ડૉકિંગ સ્ટેશનનો ઉપયોગ કરો.</translation> <translation id="215753907730220065">પૂર્ણ સ્ક્રીનથી બહાર નીકળો</translation> <translation id="2157875535253991059">આ પૃષ્ઠ હવે પૂર્ણ સ્ક્રીન છે.</translation> -<translation id="2160589599612868242">તમારા <ph name="DEVICE_TYPE" /> પર તમારા ફોનના નોટિફિકેશન મેળવો</translation> <translation id="216169395504480358">વાઇ-ફાઇ ઉમેરો...</translation> <translation id="2162155940152307086">એકવાર તમે સિંકના સેટિંગમાંથી બહાર નીકળશો એટલે સિંક શરૂ થઈ જશે</translation> <translation id="2162838847352058695">સાઇટને એકથી વધારે ફાઇલો ઑટોમૅટિક રીતે ડાઉનલોડ કરવાથી બ્લૉક કરો</translation> @@ -1262,6 +1262,7 @@ <translation id="2399699884460174994">નોટિફિકેશન ચાલુ કર્યા</translation> <translation id="2399939490305346086">સુરક્ષા કોડનો સાઇન ઇન ડેટા</translation> <translation id="2400664245143453337">તાત્કાલિક અપડેટ આવશ્યક છે</translation> +<translation id="2406153734066939945">આ પ્રોફાઇલ અને તેનો ડેટા ડિલીટ કરીએ?</translation> <translation id="2408018932941436077">કાર્ડ સાચવી રહ્યાં છીએ</translation> <translation id="2408955596600435184">તમારો PIN દાખલ કરો</translation> <translation id="241082044617551207">અજ્ઞાત પ્લગિન</translation> @@ -1380,6 +1381,7 @@ <translation id="2526590354069164005">ડેસ્કટૉપ</translation> <translation id="2526619973349913024">અપડેટ માટે તપાસો</translation> <translation id="2527167509808613699">કોઈપણ પ્રકારનું કનેક્શન</translation> +<translation id="2530166226437958497">સમસ્યાનિવારક</translation> <translation id="2532589005999780174">ઉચ્ચ કોન્ટ્રાસ્ટ મોડ</translation> <translation id="253434972992662860">&થોભો</translation> <translation id="2534460670861217804">સુરક્ષિત HTTP પ્રૉક્સી</translation> @@ -1697,7 +1699,6 @@ <translation id="2885729872133513017">સર્વરના પ્રતિસાદને ડીકોડ કરતી વખતે સમસ્યા આવી.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">આની સાથે લિંક ખોલો...</translation> -<translation id="2889481634493693121">તમારા ફોનમાં નોટિફિકેશનની સુવિધા ચાલુ કરો</translation> <translation id="2889925978073739256">અનસેન્ડબૉક્સ્ડ પ્લગિન્સ અવરોધિત કરવાનું ચાલુ રાખો</translation> <translation id="2893168226686371498">ડિફૉલ્ટ બ્રાઉઝર</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 ટેક્સ્ટ}one{# ટેક્સ્ટ}other{# ટેક્સ્ટ}}</translation> @@ -2557,6 +2558,7 @@ <translation id="3857807444929313943">ઉપાડો, પછી ફરી સ્પર્શ કરો</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: સિંક થોભાવ્યું</translation> <translation id="3861638017150647085">વપરાશકર્તાનું "<ph name="USERNAME" />" નામ ઉપલબ્ધ નથી</translation> +<translation id="3861977424605124250">સ્ટાર્ટઅપ કરતી વખતે બતાવો</translation> <translation id="3862693525629180217">બિલ્ટ-ઇન સેન્સર મારફતે ચકાસો</translation> <translation id="3862788408946266506">'Kiosk_only' મેનિફેસ્ટ વિશેષતાવાળી ઍપ Chrome OS કિઓસ્ક મોડમાં ઇન્સ્ટૉલ કરેલી હોવી જરૂરી છે</translation> <translation id="3865414814144988605">રિઝોલ્યુશન</translation> @@ -2799,7 +2801,6 @@ <translation id="412730574613779332">સ્પાંડેક્સ</translation> <translation id="4130199216115862831">ઉપકરણ લૉગ</translation> <translation id="4130207949184424187">જ્યારે તમે ઑમ્નિબૉક્સથી શોધ કરો છો ત્યારે જે પૃષ્ઠ દર્શાવવામાં આવે છે તે આ એક્સટેન્શને બદલ્યું છે.</translation> -<translation id="4130344535649650885">તમારા Google એકાઉન્ટમાં પાસવર્ડ સાચવીએ?</translation> <translation id="4130750466177569591">હું સંમત છું</translation> <translation id="413121957363593859">ઘટકો</translation> <translation id="4131410914670010031">કાળો અને સફેદ</translation> @@ -3198,6 +3199,7 @@ <translation id="4627442949885028695">બીજા ઉપકરણમાંથી ચાલુ કરો</translation> <translation id="4628757576491864469">ડિવાઇસ</translation> <translation id="4628762811416793313">Linux કન્ટેનર સેટઅપ પૂર્ણ થયું નથી. કૃપા કરીને ફરી પ્રયાસ કરો.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> પ્રોફાઇલ ખોલો</translation> <translation id="4633003931260532286">એક્સટેંશનને ન્યૂનતમ વર્ઝન "<ph name="IMPORT_VERSION" />" સાથે "<ph name="IMPORT_NAME" />"ની જરૂર પડે છે, પણ ફક્ત વર્ઝન "<ph name="INSTALLED_VERSION" />" જ ઇન્સ્ટૉલ કરેલું છે</translation> <translation id="4633757335284074492">Google ડ્રાઇવ પર બૅકઅપ લો. ડેટાને સરળતાથી પાછો મેળવો અથવા ડિવાઇસને કોઈપણ સમયે સ્વિચ કરો. આ બૅકઅપમાં ઍપનો ડેટા શામેલ છે. બૅકઅપને Google પર અપલોડ કરવામાં આવે છે અને તમારા બાળકના Google એકાઉન્ટ પાસવર્ડનો ઉપયોગ કરીને એન્ક્રિપ્ટ કરવામાં આવે છે.</translation> <translation id="4634575639321169635">ઑફિસના કે વ્યક્તિગત ઉપયોગ માટે આ ડિવાઇસનું સેટઅપ કરો</translation> @@ -3926,7 +3928,6 @@ <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="5503858713116291452">ખાતરી કરો કે તમારો ફોન નજીકમાં હોય, અનલૉક કરેલો હોય અને તેમાં બ્લૂટૂથ અને વાઇ-ફાઇની સુવિધા ચાલુ હોય. સેટઅપ પૂર્ણ કરવા માટે તમારા ફોન પર આપેલા પગલાં અનુસરો.</translation> <translation id="5503982651688210506"><ph name="HOST" />ને તમારા કૅમેરાનો ઉપયોગ કરવાની અને તેને ખસેડવાની સાથે તમારા માઇક્રોફોનનો ઉપયોગ કરવાની મંજૂરી આપવાનું ચાલુ રાખો</translation> <translation id="5505264765875738116">સાઇટ તમને નોટિફિકેશન મોકલવા માટે પૂછી શકશે નહીં</translation> <translation id="5505307013568720083">શાહી ખલાસ થઇ ગઇ છે</translation> @@ -3987,6 +3988,7 @@ <translation id="5565735124758917034">સક્રિય</translation> <translation id="5567989639534621706">ઍપ્લિકેશન કૅશેસ</translation> <translation id="5568069709869097550">સાઇન ઇન કરી શકાતું નથી</translation> +<translation id="5571832155627049070">તમારી પ્રોફાઇલ કસ્ટમાઇઝ કરો</translation> <translation id="5572851009514199876">કૃપા કરીને Chrome ને પ્રારંભ કરો અને સાઇન ઇન કરો જેથી કરીને Chrome તપાસી શકે કે તમને આ સાઇટની ઍક્સેસની મંજૂરી છે કે કેમ.</translation> <translation id="5575473780076478375">છુપું એક્સ્ટેંશન: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">ડેમો નોંધણીની વિનંતીમાં સમસ્યા આવી.</translation> @@ -5458,6 +5460,7 @@ <translation id="7280649757394340890">ટેક્સ્ટ-ટૂ-સ્પીચ વૉઇસ સેટિંગ</translation> <translation id="7280877790564589615">પરવાનગીની વિનંતી કરી</translation> <translation id="7282992757463864530">માહિતી બાર</translation> +<translation id="7283555985781738399">અતિથિ મોડ</translation> <translation id="7284411326658527427">દરેક વ્યક્તિ તેમનું એકાઉન્ટ મનગમતું બનાવી શકે છે અને ડેટા ખાનગી રાખી શકે છે.</translation> <translation id="7287143125007575591">ઍક્સેસ નિષેધ.</translation> <translation id="7287411021188441799">ડિફૉલ્ટ બૅકગ્રાઉન્ડ પાછું મેળવો</translation> @@ -5837,6 +5840,7 @@ <translation id="7716781361494605745">નેટસ્કેપ પ્રમાણન અધિકારી નીતિ URL</translation> <translation id="7717014941119698257">ડાઉનલોડ કરી રહ્યું છે: <ph name="STATUS" /></translation> <translation id="7717134585801378441">સાઇટ તમારું સ્થાન પૂછી શકે છે (ભલામણ કરવામાં આવે છે)</translation> +<translation id="771721654176725387">આને કારણે તમારો બ્રાઉઝિંગ ડેટા આ ડિવાઇસમાંથી કાયમ માટે ડિલીટ થઈ જશે. આ ડેટા પાછો મેળવવા માટે, સિંક કરવાની સુવિધાને આ તરીકે ચાલુ કરો</translation> <translation id="7717845620320228976">અપડેટ્સ માટે તપાસો</translation> <translation id="7719367874908701697">પૃષ્ઠ ઝૂમ કરો</translation> <translation id="7719588063158526969">ડિવાઇસનું નામ ઘણું લાંબું છે</translation> @@ -5873,6 +5877,7 @@ <translation id="7765158879357617694">સ્થાન</translation> <translation id="7765507180157272835">બ્લૂટૂથ અને વાઇ-ફાઇ જરૂરી છે</translation> <translation id="7766082757934713382">ઑટોમૅટિક રીતે થતી ઍપ અને સિસ્ટમ અપડેટ થોભાવીને નેટવર્કના ડેટા વપરાશને ઘટાડી શકાય છે</translation> +<translation id="7766807826975222231">એક મુલાકાત લો</translation> <translation id="7766838926148951335">પરવાનગીઓ સ્વીકારો</translation> <translation id="7768507955883790804">જ્યારે તમે સાઇટની મુલાકાત લો, ત્યારે તે ઑટોમૅટિક રીતે આ સેટિંગને અનુસરે છે</translation> <translation id="7768770796815395237">બદલો</translation> @@ -6111,6 +6116,7 @@ <translation id="8017176852978888182">Linuxએ શેર કરેલી ડિરેક્ટરી</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">શૉર્ટકટમાં ફેરફાર કર્યો</translation> +<translation id="8018298733481692628">આ પ્રોફાઇલ ડિલીટ કરીએ?</translation> <translation id="8018313076035239964">વેબસાઇટ કઈ માહિતીનો ઉપયોગ કરી શકે અને તેઓ કઈ કન્ટેન્ટ તમને બતાવી શકે તે નિયંત્રિત કરો</translation> <translation id="8023801379949507775">એક્સ્ટેન્શન્સ હમણાં અપડેટ કરો</translation> <translation id="8026334261755873520">બ્રાઉઝિંગ ડેટા સાફ કરો</translation> @@ -6281,7 +6287,6 @@ <translation id="8211551284753798479">અમાન્ય PUK. તમારા <ph name="RETRIES" /> પ્રયાસ બાકી છે.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ડાઉનલોડ ચાલુ છે}one{ડાઉનલોડ ચાલુ છે}other{ડાઉનલોડ ચાલુ છે}}</translation> <translation id="8213449224684199188">ફોટો મોડ પર સ્વિચ કર્યું</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> તમારું ડિવાઇસ ઓળખવા માગે છે, જેથી તે ઉચ્ચતમ ક્વૉલિટીના સંરક્ષિત વીડિયો અને ઑડિયો ચલાવી શકે.</translation> <translation id="8214489666383623925">ફાઇલ ખોલો...</translation> <translation id="8214962590150211830">આ વ્યક્તિને દૂર કરો</translation> <translation id="8216351761227087153">જુઓ</translation> @@ -6760,7 +6765,6 @@ <translation id="8774379074441005279">પુનઃસ્થાપિત કરવાનું કન્ફર્મ કરો</translation> <translation id="8774934320277480003">ઉપરી હાંસિયો</translation> <translation id="8775144690796719618">અમાન્ય URL</translation> -<translation id="8775163630211761057">તમારા Android ફોનની શ્રેષ્ઠ સુવિધાઓનો ઉપયોગ તમારા <ph name="DEVICE_TYPE" /> પર પણ કરો</translation> <translation id="8775653927968399786">{0,plural, =1{તમારું <ph name="DEVICE_TYPE" /> # સેકન્ડમાં ઑટોમૅટિક રીતે લૉક થઈ જશે. <ph name="DOMAIN" /> માટે જરૂરી છે કે તમે તમારું સ્માર્ટ કાર્ડ દાખલ કરેલું રાખો.}one{તમારું <ph name="DEVICE_TYPE" /> # સેકન્ડમાં ઑટોમૅટિક રીતે લૉક થઈ જશે. <ph name="DOMAIN" /> માટે જરૂરી છે કે તમે તમારું સ્માર્ટ કાર્ડ દાખલ કરેલું રાખો.}other{તમારું <ph name="DEVICE_TYPE" /> # સેકન્ડમાં ઑટોમૅટિક રીતે લૉક થઈ જશે. @@ -6950,6 +6954,7 @@ <translation id="8973596347849323817">તમે તમારી જરૂરિયાતો મુજબ આ ઉપકરણને કસ્ટમાઇઝ કરી શકો છો. સેટિંગ્સમાં આ ઍક્સેસિબિલિટી સુવિધાઓ પછીથી બદલી શકાય છે.</translation> <translation id="897414447285476047">કનેક્શનની સમસ્યાને લીધે ગંતવ્યની ફાઇલ અધૂરી રહી ગઈ હતી.</translation> <translation id="897525204902889653">ક્વૉરન્ટીન સેવા</translation> +<translation id="8975396729541388937">તમને પ્રાપ્ત થતા ઇમેઇલમાંની લિંક પર ક્લિક કરીને ગમે ત્યારે અનસબ્સ્ક્રાઇબ કરો.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" અને 1 અન્ય ટૅબ}one{"<ph name="TAB_TITLE" />" અને # અન્ય ટૅબ}other{"<ph name="TAB_TITLE" />" અને # અન્ય ટૅબ}}</translation> <translation id="8977811652087512276">ખોટો પાસવર્ડ અથવા દૂષિત ફાઇલ</translation> <translation id="8978154919215542464">ચાલુ - દરેક વસ્તુ સમન્વયિત કરો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index ce4e37c..7145d14 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{कोई भी पासवर्ड हैक या चोरी नहीं हुआ}=1{1 पासवर्ड हैक या चोरी हुआ है}one{{NUM_COMPROMISED} पासवर्ड हैक या चोरी हुआ है}other{{NUM_COMPROMISED} पासवर्ड हैक या चोरी हुए हैं}}</translation> <translation id="1380028686461971526">नेटवर्क से अपने-आप कनेक्ट हो</translation> <translation id="1380436189840894976">फिर भी गुप्त मोड छोड़ना चाहते हैं?</translation> +<translation id="1383597849754832576">स्पीच फ़ाइलें डाउनलोड नहीं की जा सकतीं. कुछ देर बाद कोशिश करें.</translation> <translation id="1383861834909034572">पूरा होने पर खुल रहा है</translation> <translation id="1383876407941801731">Search</translation> <translation id="1386791642444521222">सिम चालू करें</translation> @@ -877,7 +878,6 @@ <translation id="1954813140452229842">शेयर माउंट करने में गड़बड़ी. कृपया अपने क्रेडेंशियल देखें और दोबारा कोशिश करें.</translation> <translation id="1956050014111002555">फ़ाइल में एकाधिक प्रमाणपत्र थे, जिनमें से किसी को भी आयात नहीं किया गया था:</translation> <translation id="1956390763342388273">यह "<ph name="FOLDER_PATH" />" से सभी फ़ाइलों को अपलोड कर देगा. ऐसा तभी करें जब आपको साइट पर विश्वास हो.</translation> -<translation id="1960158217849594135">क्या आप इस उपयोगकर्ता नाम को अपने Google खाते में सेव करना चाहते हैं?</translation> <translation id="196040970347962278">पहले इंटरनेट कनेक्शन जोड़ें</translation> <translation id="1962233722219655970">यह पेज एक ऐसे नेटिव क्लाइंट का उपयोग करता है जो आपके कंप्यूटर पर काम नहीं करता.</translation> <translation id="1963227389609234879">सभी को निकालें</translation> @@ -903,6 +903,7 @@ <translation id="1984417487208496350">कोई सुरक्षा नहीं (हम ऐसा करने का सुझाव नहीं देते)</translation> <translation id="1987317783729300807">खाते</translation> <translation id="1989112275319619282">ब्राउज़ करें</translation> +<translation id="1990046457226896323">स्पीच फ़ाइलें डाउनलोड हो गईं</translation> <translation id="1990512225220753005">इस पेज पर शॉर्टकट न दिखाएं</translation> <translation id="1992397118740194946">सेट नहीं है</translation> <translation id="1992924914582925289">डिवाइस से हटाएं</translation> @@ -1048,7 +1049,6 @@ <translation id="2157474325782140681">ज़्यादा सुविधाएं पाने के लिए, ऐसा Dell डॉकिंग स्टेशन इस्तेमाल करें जिसे इस Chromebook के साथ काम करने के लिए बनाया गया हो.</translation> <translation id="215753907730220065">फ़ुल स्क्रीन से बाहर निकलें</translation> <translation id="2157875535253991059">यह पेज अब फ़ुल स्क्रीन है.</translation> -<translation id="2160589599612868242"><ph name="DEVICE_TYPE" /> पर अपने फ़ोन की सूचनाएं पाएं</translation> <translation id="216169395504480358">वाई-फ़ाई जोड़ें...</translation> <translation id="2162155940152307086">सिंक की सेटिंग छोड़ते ही सिंक फिर से शुरू हो जाएगा</translation> <translation id="2162838847352058695">साइटों को, अलग-अलग फ़ाइलों को अपने-आप डाउनलोड करने से रोकें</translation> @@ -1266,6 +1266,7 @@ <translation id="2399699884460174994">सूचनाएं चालू की गईं</translation> <translation id="2399939490305346086">सुरक्षा कुंजी पर साइन इन का डेटा</translation> <translation id="2400664245143453337">तुरंत अपडेट करने की ज़रूरत है</translation> +<translation id="2406153734066939945">क्या आप यह प्रोफ़ाइल और इसका डेटा मिटाना चाहते हैं?</translation> <translation id="2408018932941436077">कार्ड को सेव किया जा रहा है</translation> <translation id="2408955596600435184">अपना पिन डालें</translation> <translation id="241082044617551207">अज्ञात प्लग इन</translation> @@ -1384,6 +1385,7 @@ <translation id="2526590354069164005">डेस्कटॉप</translation> <translation id="2526619973349913024">देखें कि अपडेट उपलब्ध हैं या नहीं</translation> <translation id="2527167509808613699">किसी प्रकार का कनेक्शन</translation> +<translation id="2530166226437958497">समस्या का हल</translation> <translation id="2532589005999780174">उच्च कंट्रास्ट मोड</translation> <translation id="253434972992662860">&रोकें</translation> <translation id="2534460670861217804">सुरक्षित HTTP प्रॉक्सी</translation> @@ -1701,7 +1703,6 @@ <translation id="2885729872133513017">सर्वर के जवाब को डिकोड करते समय कोई परेशानी हुई.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">इनके साथ लिंक खोलें...</translation> -<translation id="2889481634493693121">अपने फ़ोन पर सूचनाएं पाने की सुविधा चालू करें</translation> <translation id="2889925978073739256">सैंडबॉक्स नहीं किए गए प्लग इन अवरोधित करते रहें</translation> <translation id="2893168226686371498">सामान्य ब्राउज़र</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 टेक्स्ट}one{# टेक्स्ट}other{# टेक्स्ट}}</translation> @@ -2561,6 +2562,7 @@ <translation id="3857807444929313943">उठाएं, फिर दोबारा छुएं</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: सिंक करना रोका गया</translation> <translation id="3861638017150647085">उपयोगकर्ता नाम "<ph name="USERNAME" />" उपलब्ध नहीं है</translation> +<translation id="3861977424605124250">शुरुआती पेज पर दिखाएं</translation> <translation id="3862693525629180217">पहले से मौजूद सेंसर के ज़रिए पुष्टि करें</translation> <translation id="3862788408946266506">'kiosk_only' मेनिफ़ेस्ट विशेषता वाला ऐप्लिकेशन Chrome OS कियोस्क मोड में इंस्टॉल किया जाना चाहिए</translation> <translation id="3865414814144988605">रिज़ॉल्यूशन</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">स्पैंडेक्स</translation> <translation id="4130199216115862831">डिवाइस लॉग</translation> <translation id="4130207949184424187">इस एक्सटेंशन ने यह बदल दिया है कि जब आप ऑम्निबॉक्स से खोजते हैं तब कौन सा पेज दिखाया जाए.</translation> -<translation id="4130344535649650885">क्या आप यह पासवर्ड अपने Google खाते में सेव करना चाहते हैं?</translation> <translation id="4130750466177569591">मैं सहमत हूं</translation> <translation id="413121957363593859">घटक</translation> <translation id="4131410914670010031">श्याम और श्वेत</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">किसी अन्य डिवाइस से जारी रखें</translation> <translation id="4628757576491864469">डिवाइस</translation> <translation id="4628762811416793313">Linux कंटेनर का सेटअप पूरा नहीं हुआ. कृपया फिर से कोशिश करें.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> प्रोफ़ाइल खोलें</translation> <translation id="4633003931260532286">एक्सटेंशन के लिए "<ph name="IMPORT_NAME" />" को न्यूनतम "<ph name="IMPORT_VERSION" />" वर्शन का होना चाहिए, लेकिन केवल "<ph name="INSTALLED_VERSION" />" वर्शन ही इंस्टॉल किया गया है</translation> <translation id="4633757335284074492">'Google डिस्क' में बैक अप लें. आसानी से डेटा वापस पाएं या किसी भी समय डिवाइस बदलें. इस बैक अप में ऐप्लिकेशन का डेटा शामिल है. बैकअप आपके बच्चे के Google खाते के पासवर्ड से सुरक्षित करके Google पर अपलोड किए जाते हैं.</translation> <translation id="4634575639321169635">काम या निजी इस्तेमाल के लिए इस डिवाइस को सेट अप करें</translation> @@ -3929,7 +3931,6 @@ <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="5503858713116291452">पक्का करें कि आपका फ़ोन आस-पास हो और अनलॉक किया गया हो. साथ ही, उस पर ब्लूटूथ और वाई-फ़ाई चालू हों. सेट अप पूरा करने के लिए, अपने फ़ोन पर दिया गया तरीका अपनाएं.</translation> <translation id="5503982651688210506"><ph name="HOST" /> को कैमरे का इस्तेमाल और उसे मूव करते रहने दें. साथ ही, माइक्रोफ़ोन का इस्तेमाल करते रहने दें</translation> <translation id="5505264765875738116">साइटें आपको सूचनाएं भेजने के लिए नहीं पूछ सकती हैं</translation> <translation id="5505307013568720083">इंक खत्म हो गया है</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">सक्रिय</translation> <translation id="5567989639534621706">ऐप्स संचय</translation> <translation id="5568069709869097550">साइन इन नहीं किया जा सकता</translation> +<translation id="5571832155627049070">अपनी प्रोफ़ाइल को पसंद के मुताबिक बनाएं</translation> <translation id="5572851009514199876">कृपया Chrome शुरू करके उसमें साइन इन करें ताकि Chrome देख सके कि क्या आपके पास यह साइट एक्सेस करने की अनुमति है.</translation> <translation id="5575473780076478375">गुप्त एक्सटेंशन: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">डेमो रजिस्ट्रेशन अनुरोध में कोई परेशानी हुई.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">लिखाई को बोली में बदलने की आवाज़ की सेटिंग</translation> <translation id="7280877790564589615">अनुमति का अनुरोध किया गया</translation> <translation id="7282992757463864530">जानकारी बार</translation> +<translation id="7283555985781738399">मेहमान मोड</translation> <translation id="7284411326658527427">हर व्यक्ति अपने खाते को पसंद के हिसाब से बना सकता है और डेटा को निजी रख सकता है.</translation> <translation id="7287143125007575591">एक्सेस मना कर दिया गया.</translation> <translation id="7287411021188441799">डिफ़ॉल्ट बैकग्राउंड बहाल करें</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">Netscape प्रमाणन प्राधिकरण नीति यूआरएल</translation> <translation id="7717014941119698257">डाउनलोड हो रहा है: <ph name="STATUS" /></translation> <translation id="7717134585801378441">साइटें आपकी जगह की जानकारी के लिए पूछ सकती हैं (हम इस सेटिंग को चालू रखने का सुझाव देते हैं)</translation> +<translation id="771721654176725387">ऐसा करने पर, इस डिवाइस से आपका ब्राउज़िंग डेटा हमेशा के लिए मिट जाएगा. डेटा को वापस पाने के लिए, सिंक करने की सुविधा को इसके तौर पर चालू करें</translation> <translation id="7717845620320228976">देखें कि अपडेट उपलब्ध हैं या नहीं</translation> <translation id="7719367874908701697">पेज ज़ूम</translation> <translation id="7719588063158526969">डिवाइस का नाम बहुत लंबा है</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">ले जाएं</translation> <translation id="7765507180157272835">ब्लूटूथ और वाई-फ़ाई ज़रूरी हैं</translation> <translation id="7766082757934713382">इससे आप ऐप्लिकेशन और सिस्टम को अपने-आप अपडेट होने से रोक सकते हैं. इससे आपका नेटवर्क डेटा कम खर्च होगा</translation> +<translation id="7766807826975222231">एक झलक देखें</translation> <translation id="7766838926148951335">अनुमतियां स्वीकार करें</translation> <translation id="7768507955883790804">जब आप साइटों पर जाते हैं, तो वे अपने-आप इस सेटिंग को फ़ॉलो करती हैं</translation> <translation id="7768770796815395237">बदलें</translation> @@ -6117,6 +6122,7 @@ <translation id="8017176852978888182">Linux से Chromebook के साथ शेयर की गई डायरेक्ट्री</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">शॉर्टकट में बदलाव किया गया</translation> +<translation id="8018298733481692628">क्या आप यह प्रोफ़ाइल मिटाना चाहते हैं?</translation> <translation id="8018313076035239964">यह नियंत्रित करें कि वेबसाइटें किस जानकारी का उपयोग कर सकती हैं और वे आपको क्या दिखा सकती हैं</translation> <translation id="8023801379949507775">एक्सटेंशन अभी अपडेट करें</translation> <translation id="8026334261755873520">ब्राउज़िंग डेटा साफ़ करें</translation> @@ -6287,7 +6293,6 @@ <translation id="8211551284753798479">आपने गलत PUK डाला है. आप <ph name="RETRIES" /> बार और कोशिश कर सकते हैं.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{डाउनलोड जारी है}one{डाउनलोड जारी हैं}other{डाउनलोड जारी हैं}}</translation> <translation id="8213449224684199188">आप फ़ोटो मोड में हैं</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> आपके डिवाइस की पहचान करना चाहता है, ताकि वह उस पर अच्छी क्वालिटी का सुरक्षित वीडियो और ऑडियो चला सके.</translation> <translation id="8214489666383623925">फ़ाइल खोलें...</translation> <translation id="8214962590150211830">इस व्यक्ति को निकालें</translation> <translation id="8216351761227087153">देखें</translation> @@ -6766,7 +6771,6 @@ <translation id="8774379074441005279">बहाल करने की पुष्टि करें</translation> <translation id="8774934320277480003">शीर्ष हाशिया</translation> <translation id="8775144690796719618">गलत यूआरएल</translation> -<translation id="8775163630211761057">अपने Android फ़ोन के सबसे अच्छे ऐप्लिकेशन, कॉन्टेंट, और कनेक्टिविटी को <ph name="DEVICE_TYPE" /> पर इस्तेमाल करें</translation> <translation id="8775653927968399786">{0,plural, =1{अगले # सेकंड में आपका <ph name="DEVICE_TYPE" /> अपने-आप लॉक हो जाएगा. <ph name="DOMAIN" /> के लिए ज़रूरी है कि आप अपना स्मार्ट कार्ड डालकर रखें.}one{अगले # सेकंड में आपका <ph name="DEVICE_TYPE" /> अपने-आप लॉक हो जाएगा. <ph name="DOMAIN" /> के लिए ज़रूरी है कि आप अपना स्मार्ट कार्ड डालकर रखें.}other{अगले # सेकंड में आपका <ph name="DEVICE_TYPE" /> अपने-आप लॉक हो जाएगा. @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">आप इस डिवाइस में अपनी ज़रूरतों के हिसाब से पसंद के मुताबिक बना सकते हैं. ये सुलभता सुविधाएं बाद में सेटिंग में बदली जा सकती हैं.</translation> <translation id="897414447285476047">कनेक्शन में समस्या आने के कारण गंतव्य फ़ाइल अधूरी रह गई थी.</translation> <translation id="897525204902889653">क्वॉरंटीन सेवा</translation> +<translation id="8975396729541388937">आपको भेजे गए ईमेल में दिए गए लिंक पर क्लिक करके, आप किसी भी समय सदस्यता छोड़ सकते हैं.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" और 1 अन्य टैब}one{"<ph name="TAB_TITLE" />" और # अन्य टैब}other{"<ph name="TAB_TITLE" />" और # अन्य टैब}}</translation> <translation id="8977811652087512276">गलत पासवर्ड या खराब फ़ाइल</translation> <translation id="8978154919215542464">चालू - सब कुछ सिंक करें</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index 4bd221e..cb2add3 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Nema ugroženih zaporki}=1{Jedna ugrožena zaporka}one{{NUM_COMPROMISED} ugrožena zaporka}few{{NUM_COMPROMISED} ugrožene zaporke}other{{NUM_COMPROMISED} ugroženih zaporki}}</translation> <translation id="1380028686461971526">Automatsko povezivanje s mrežom</translation> <translation id="1380436189840894976">Želite li svejedno zatvoriti anonimni način?</translation> +<translation id="1383597849754832576">Preuzimanje govornih datoteka nije uspjelo. Pokušajte ponovo kasnije.</translation> <translation id="1383861834909034572">Otvori nakon dovršetka</translation> <translation id="1383876407941801731">Traži</translation> <translation id="1386791642444521222">Aktivirajte fizičku SIM karticu</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Pogreška pri učitavanju dijeljenja. Provjerite svoje vjerodajnice i pokušajte ponovo.</translation> <translation id="1956050014111002555">Datoteka je sadržavala više certifikata, a nijedan od njih nije uvezen:</translation> <translation id="1956390763342388273">Time će se prenijeti sve datoteke koje sadrži "<ph name="FOLDER_PATH" />". Učinite to samo ako web-lokaciju smatrate pouzdanom.</translation> -<translation id="1960158217849594135">Želite li spremiti korisničko ime na Google račun?</translation> <translation id="196040970347962278">Najprije uspostavite internetsku vezu</translation> <translation id="1962233722219655970">Ova stranica upotrebljava aplikaciju izvornog klijenta koja ne funkcionira na vašem računalu.</translation> <translation id="1963227389609234879">Ukloni sve</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Bez zaštite (ne preporučuje se)</translation> <translation id="1987317783729300807">Računi</translation> <translation id="1989112275319619282">Pregledaj</translation> +<translation id="1990046457226896323">Govorne datoteke su preuzete</translation> <translation id="1990512225220753005">Nemoj prikazivati prečace na ovoj stranici</translation> <translation id="1992397118740194946">Nije postavljeno</translation> <translation id="1992924914582925289">Ukloni s uređaja</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Za biste dobili dodatne značajke, upotrijebite priključnu stanicu Dell namijenjenu za ovaj Chromebook.</translation> <translation id="215753907730220065">Napusti potpuni ekran</translation> <translation id="2157875535253991059">Ova je stranica sada na cijelom zaslonu.</translation> -<translation id="2160589599612868242">Primajte obavijesti s telefona na uređaju <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Dodaj Wi-Fi...</translation> <translation id="2162155940152307086">Sinkronizacija će se pokrenuti kad napustite postavke sinkronizacije</translation> <translation id="2162838847352058695">Onemogući web-lokacijama automatsko preuzimanje više datoteka</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Obavijesti uključene</translation> <translation id="2399939490305346086">Podaci za prijavu na sigurnosnom ključu</translation> <translation id="2400664245143453337">Odmah je potrebno ažuriranje</translation> +<translation id="2406153734066939945">Želite li izbrisati ovaj profil i podatke na njemu?</translation> <translation id="2408018932941436077">Spremanje kartice</translation> <translation id="2408955596600435184">Unesite PIN</translation> <translation id="241082044617551207">Nepoznati dodatak</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Radna površina</translation> <translation id="2526619973349913024">Provjeri ažuriranja</translation> <translation id="2527167509808613699">Bilo koja vrsta veze</translation> +<translation id="2530166226437958497">Rješavanje problema</translation> <translation id="2532589005999780174">Način visokog kontrasta</translation> <translation id="253434972992662860">&Pauziraj</translation> <translation id="2534460670861217804">Sigurni HTTP proxy</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Pojavio se problem prilikom dekodiranja odgovora poslužitelja.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Otvori vezu sa...</translation> -<translation id="2889481634493693121">Uključite obavijesti na telefonu</translation> <translation id="2889925978073739256">Nastavi blokirati dodatke izvan testnog okruženja</translation> <translation id="2893168226686371498">Zadani preglednik</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 SMS-a}one{# SMS-a}few{# SMS-a}other{# SMS-ova}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Podignite i ponovo dodirnite</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sinkronizacija je pauzirana</translation> <translation id="3861638017150647085">Korisničko ime "<ph name="USERNAME" />" nije dostupno</translation> +<translation id="3861977424605124250">Prikaži prilikom pokretanja</translation> <translation id="3862693525629180217">Potvrda putem ugrađenog senzora</translation> <translation id="3862788408946266506">Aplikaciju s atributom manifesta "kiosk_only" potrebno je instalirati u načinu kioska OS-a Chrome</translation> <translation id="3865414814144988605">Razlučivost</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Elastični</translation> <translation id="4130199216115862831">Zapisnik uređaja</translation> <translation id="4130207949184424187">Ovo proširenje promijenilo je stranicu koja se prikazuje prilikom pretraživanja putem višenamjenskog okvira.</translation> -<translation id="4130344535649650885">Želite li spremiti zaporku na Google račun?</translation> <translation id="4130750466177569591">Slažem se</translation> <translation id="413121957363593859">Komponente</translation> <translation id="4131410914670010031">Crno-bijelo</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Nastavite na drugom uređaju</translation> <translation id="4628757576491864469">Uređaji</translation> <translation id="4628762811416793313">Postavljanje Linuxovog spremnika nije dovršeno. Pokušajte ponovo.</translation> +<translation id="4629521233550547305">Otvorite profil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Minimalna je verzija za "<ph name="IMPORT_NAME" />" koju proširenje zahtijeva "<ph name="IMPORT_VERSION" />", ali je instalirana samo verzija "<ph name="INSTALLED_VERSION" />"</translation> <translation id="4633757335284074492">Sigurnosno kopiranje na Google disku. Lako vratite podatke ili promijenite uređaj u bilo kojem trenutku. Sigurnosna kopija uključuje podatke aplikacija. Sigurnosna kopija prenosi se na Google i kriptira pomoću zaporke Google računa vašeg djeteta.</translation> <translation id="4634575639321169635">Postavite ovaj uređaj za poslovnu ili osobnu upotrebu</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Primanje s uređaja <ph name="DEVICE_NAME" /> nije uspjelo za <ph name="ATTACHMENTS" />}one{Primanje s uređaja <ph name="DEVICE_NAME" /> nije uspjelo za <ph name="ATTACHMENTS" />}few{Primanje s uređaja <ph name="DEVICE_NAME" /> nije uspjelo za <ph name="ATTACHMENTS" />}other{Primanje s uređaja <ph name="DEVICE_NAME" /> nije uspjelo za <ph name="ATTACHMENTS" />}}</translation> <translation id="5502500733115278303">Uvezeno iz Firefoxa</translation> <translation id="5502915260472117187">Dijete</translation> -<translation id="5503858713116291452">Provjerite je li telefon u blizini, je li otključan i jesu li na njemu uključeni Bluetooth i Wi-Fi. Slijedite korake na telefonu da biste dovršili postavljanje.</translation> <translation id="5503982651688210506">I dalje dopuštam da <ph name="HOST" /> koristi i pomiče kameru te koristi mikrofon</translation> <translation id="5505264765875738116">Web-lokacije ne mogu postavljati pitanja o slanju obavijesti</translation> <translation id="5505307013568720083">Nema tinte</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Aktivno</translation> <translation id="5567989639534621706">Predmemorije aplikacije</translation> <translation id="5568069709869097550">Ne mogu se prijaviti</translation> +<translation id="5571832155627049070">Prilagodite svoj profil</translation> <translation id="5572851009514199876">Pokrenite Chrome i prijavite se na njega kako bi mogao provjeriti imate li dopuštenje za pristup toj web-lokaciji.</translation> <translation id="5575473780076478375">Anonimno proširenje: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Pojavio se problem sa zahtjevom za registraciju za demo način.</translation> @@ -5458,6 +5460,7 @@ <translation id="7280649757394340890">Postavke glasa za pretvaranje teksta u govor</translation> <translation id="7280877790564589615">Traženje dopuštenja</translation> <translation id="7282992757463864530">Infotraka</translation> +<translation id="7283555985781738399">Način rada za goste</translation> <translation id="7284411326658527427">Svaka osoba može prilagoditi svoj račun i zadržati privatnost svojih podataka.</translation> <translation id="7287143125007575591">Pristup je odbijen.</translation> <translation id="7287411021188441799">Vratite zadanu pozadinu</translation> @@ -5836,6 +5839,7 @@ <translation id="7716781361494605745">URL pravila tijela za izdavanje Netscape certifikata</translation> <translation id="7717014941119698257">Preuzimanje: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Web-lokacije mogu tražiti dopuštenje za vašu lokaciju (preporučeno)</translation> +<translation id="771721654176725387">Time će se trajno izbrisati podaci o pregledavanju s ovog uređaja. Da biste vratili te podatke, uključite sinkroniziranje kao</translation> <translation id="7717845620320228976">Provjeri ažuriranja</translation> <translation id="7719367874908701697">Zumiranje stranice</translation> <translation id="7719588063158526969">Naziv uređaja predugačak je</translation> @@ -5872,6 +5876,7 @@ <translation id="7765158879357617694">Pomakni</translation> <translation id="7765507180157272835">Potrebni su Bluetooth i Wi-Fi</translation> <translation id="7766082757934713382">Pomaže smanjiti potrošnju podatkovnog prometa na mreži pauziranjem automatskih ažuriranja aplikacija i sustava</translation> +<translation id="7766807826975222231">Krenite u obilazak</translation> <translation id="7766838926148951335">Prihvati dopuštenja</translation> <translation id="7768507955883790804">Web-lokacije automatski primjenjuju ovu postavku kad ih posjetite</translation> <translation id="7768770796815395237">Promijenite</translation> @@ -6116,6 +6121,7 @@ <translation id="8017176852978888182">Linuxovi dijeljeni direktoriji</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Prečac je uređen</translation> +<translation id="8018298733481692628">Želite li izbrisati ovaj profil?</translation> <translation id="8018313076035239964">Kontrolirajte koje informacije web-lokacije mogu upotrebljavati i koji vam sadržaj mogu prikazivati</translation> <translation id="8023801379949507775">Ažuriraj proširenja sada</translation> <translation id="8026334261755873520">Brisanje podataka o pregledavanju</translation> @@ -6286,7 +6292,6 @@ <translation id="8211551284753798479">PUK nije važeći. Preostao vam je sljedeći broj pokušaja: <ph name="RETRIES" />.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Preuzimanje u tijeku}one{Preuzimanja u tijeku}few{Preuzimanja u tijeku}other{Preuzimanja u tijeku}}</translation> <translation id="8213449224684199188">Ušli ste u način fotografije</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> želi da identificirate svoj uređaj da biste mogli reproducirati zaštićene videozapise i audiozapise najviše kvalitete.</translation> <translation id="8214489666383623925">Otvori datoteku...</translation> <translation id="8214962590150211830">Ukloni ovu osobu</translation> <translation id="8216351761227087153">Pogledajte</translation> @@ -6764,7 +6769,6 @@ <translation id="8774379074441005279">Potvrđivanje vraćanja</translation> <translation id="8774934320277480003">Gornja margina</translation> <translation id="8775144690796719618">Nevažeći URL</translation> -<translation id="8775163630211761057">Koristite najbolje značajke svojeg Android telefona na svojem uređaju <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> će se automatski zaključati za # sekundu. <ph name="DOMAIN" /> zahtijeva da vaša pametna kartica ostane umetnuta.}one{<ph name="DEVICE_TYPE" /> će se automatski zaključati za # sekundu. <ph name="DOMAIN" /> zahtijeva da vaša pametna kartica ostane umetnuta.}few{<ph name="DEVICE_TYPE" /> će se automatski zaključati za # sekunde. @@ -6955,6 +6959,7 @@ <translation id="8973596347849323817">Ovaj uređaj možete prilagoditi svojim potrebama. Značajke pristupačnosti možete promijeniti kasnije u postavkama.</translation> <translation id="897414447285476047">Odredišna datoteka bila je nepotpuna zbog problema s vezom.</translation> <translation id="897525204902889653">Usluga karantene</translation> +<translation id="8975396729541388937">Pretplatu uvijek možete otkazati klikom na vezu u primljenim e-porukama.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />"}=1{„<ph name="TAB_TITLE" />" i još jedna kartica}one{„<ph name="TAB_TITLE" />" i još # kartica}few{„<ph name="TAB_TITLE" />" i još # kartice}other{„<ph name="TAB_TITLE" />" i još # kartica}}</translation> <translation id="8977811652087512276">Netočna zaporka ili oštećena datoteka</translation> <translation id="8978154919215542464">Uključeno – sinkronizacija svega</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index 0205289..06b7703 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Nincsenek olyan jelszavak, amelyekhez illetéktelenül fértek hozzá}=1{1 jelszó, amelyhez illetéktelenül fértek hozzá}other{{NUM_COMPROMISED} jelszó, amelyhez illetéktelenül fértek hozzá}}</translation> <translation id="1380028686461971526">Automatikus csatlakozás a hálózathoz</translation> <translation id="1380436189840894976">Mindenképp kilép az inkognitó módból?</translation> +<translation id="1383597849754832576">Nem sikerült a beszédfájlok letöltése. Próbálja újra később.</translation> <translation id="1383861834909034572">Megnyitás, amikor kész</translation> <translation id="1383876407941801731">Keresés</translation> <translation id="1386791642444521222">Fizikai SIM-kártya aktiválása</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Hiba történt a megosztott tároló csatlakoztatása során. Ellenőrizze hitelesítő adatait, majd próbálkozzon újra.</translation> <translation id="1956050014111002555">A fájl több tanúsítványt tartalmazott, amelyek közül egy sincs importálva:</translation> <translation id="1956390763342388273">Ezzel feltölti az összes fájlt a(z) „<ph name="FOLDER_PATH" />” mappából. Csak akkor tegye ezt, ha megbízik a webhelyben.</translation> -<translation id="1960158217849594135">Menti a felhasználónevet a Google-fiókjába?</translation> <translation id="196040970347962278">Előbb létesítsen internetkapcsolatot</translation> <translation id="1962233722219655970">Az oldal olyan Natív kliensalkalmazást használ, amely nem működik a számítógépén.</translation> <translation id="1963227389609234879">Összes eltávolítása</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Nincs védelem (nem javasolt)</translation> <translation id="1987317783729300807">Fiókok</translation> <translation id="1989112275319619282">Böngészés</translation> +<translation id="1990046457226896323">Beszédfájlok letöltve</translation> <translation id="1990512225220753005">Ne jelenjenek meg parancsikonok ezen az oldalon</translation> <translation id="1992397118740194946">Nincs beállítva</translation> <translation id="1992924914582925289">Eltávolítás az eszközről</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Ha további funkciókhoz is hozzá szeretne férni, használjon olyan Dell dokkolóállomást, amelyet ehhez a Chromebookhoz terveztek.</translation> <translation id="215753907730220065">Kilépés a teljes képernyős módból</translation> <translation id="2157875535253991059">Ez az oldal most teljes képernyős nézetben van.</translation> -<translation id="2160589599612868242">Telefonja értesítéseinek fogadása <ph name="DEVICE_TYPE" /> eszközén</translation> <translation id="216169395504480358">Wi-Fi hozzáadása...</translation> <translation id="2162155940152307086">A szinkronizálás akkor kezdődik el, amikor Ön kilép a szinkronizálási beállításokból.</translation> <translation id="2162838847352058695">A webhelyek nem tölthetnek le automatikusan több fájlt</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Értesítések bekapcsolva</translation> <translation id="2399939490305346086">Biztonsági hardverkulcs bejelentkezési adatai</translation> <translation id="2400664245143453337">Azonnali frissítés szükséges</translation> +<translation id="2406153734066939945">Törli ezt a profilt és a hozzá tartozó adatokat?</translation> <translation id="2408018932941436077">Kártya mentése folyamatban</translation> <translation id="2408955596600435184">PIN-kód megadása</translation> <translation id="241082044617551207">Ismeretlen beépülő modul</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Asztal</translation> <translation id="2526619973349913024">Frissítés keresése</translation> <translation id="2527167509808613699">Bármilyen kapcsolódás</translation> +<translation id="2530166226437958497">Hibaelhárítás</translation> <translation id="2532589005999780174">Nagy kontrasztú mód</translation> <translation id="253434972992662860">&Szünet</translation> <translation id="2534460670861217804">Biztonságos HTTP-proxy</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Hiba történt a szerverválasz dekódolása során.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Link megnyitása...</translation> -<translation id="2889481634493693121">Értesítések bekapcsolása a telefonon</translation> <translation id="2889925978073739256">Sandbox-technológiát nem alkalmazó beépülő modulok tiltásának fenntartása</translation> <translation id="2893168226686371498">Alapértelmezett böngésző</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 szöveg}other{# szöveg}}</translation> @@ -1821,7 +1822,7 @@ <translation id="3016641847947582299">Összetevő frissítve</translation> <translation id="3017079585324758401">Háttér</translation> <translation id="3019285239893817657">Aloldal gombja</translation> -<translation id="3020183492814296499">Billentyűparancsok</translation> +<translation id="3020183492814296499">Parancsikonok</translation> <translation id="3020990233660977256">Sorozatszám: <ph name="SERIAL_NUMBER" /></translation> <translation id="3021065318976393105">Amíg akkumulátorról működik</translation> <translation id="3021066826692793094">Pillangó</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Emelje fel, majd érintse újra</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: a szinkronizálás szünetel</translation> <translation id="3861638017150647085">A(z) „<ph name="USERNAME" />” felhasználónév nem áll rendelkezésre</translation> +<translation id="3861977424605124250">Megjelenítés indításkor</translation> <translation id="3862693525629180217">Igazolás beépített érzékelő révén</translation> <translation id="3862788408946266506">A „kiosk_only” jegyzékattribútummal rendelkező alkalmazást kioszk módban kell telepíteni a Chrome OS rendszeren</translation> <translation id="3865414814144988605">Felbontás</translation> @@ -2801,7 +2803,6 @@ <translation id="412730574613779332">Hős</translation> <translation id="4130199216115862831">Eszköznapló</translation> <translation id="4130207949184424187">Ez a bővítmény módosította, hogy melyik oldal jelenjen meg a cím- és keresősávban indított kereséskor.</translation> -<translation id="4130344535649650885">Menti a jelszót a Google-fiókjába?</translation> <translation id="4130750466177569591">Elfogadom</translation> <translation id="413121957363593859">Összetevők</translation> <translation id="4131410914670010031">Fekete-fehér</translation> @@ -3200,6 +3201,7 @@ <translation id="4627442949885028695">Folytatás másik eszközről</translation> <translation id="4628757576491864469">Eszközök</translation> <translation id="4628762811416793313">A Linux-tároló beállítása nem fejeződött be. Próbálja újra.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> profil megnyitása</translation> <translation id="4633003931260532286">A bővítmény a(z) „<ph name="IMPORT_NAME" />” legalább „<ph name="IMPORT_VERSION" />” verzióját igényli, ám csak a(z) „<ph name="INSTALLED_VERSION" />” verzió van telepítve</translation> <translation id="4633757335284074492">Biztonsági mentés a Google Drive-ra. Bármikor könnyedén visszaállíthatja adatait vagy lecserélheti eszközét. A biztonsági másolat alkalmazásadatokat tartalmaz. A biztonsági másolatokat a Google szervereire tölti fel a rendszer, és a gyermeke Google-fiókjához használt jelszóval titkosítja őket.</translation> <translation id="4634575639321169635">Eszköz beállítása munkahelyi vagy személyes használatra</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Nem sikerült <ph name="ATTACHMENTS" /> fogadása innen: <ph name="DEVICE_NAME" />}other{Nem sikerült <ph name="ATTACHMENTS" /> fogadása innen: <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">A Firefox alkalmazásból importálva</translation> <translation id="5502915260472117187">Gyermek</translation> -<translation id="5503858713116291452">Gondoskodjon arról, hogy telefonja fel legyen oldva, és a közelben legyen, bekapcsolt Bluetooth és Wi-Fi funkcióval. A beállítás befejezéséhez hajtsa végre a lépéseket a telefonján.</translation> <translation id="5503982651688210506">A(z) <ph name="HOST" /> továbbra is használhatja és mozgathatja a kamerát, valamint használhatja a mikrofont</translation> <translation id="5505264765875738116">A webhelyek nem kérdezhetnek rá, hogy küldjenek-e Önnek értesítéseket</translation> <translation id="5505307013568720083">Elfogyott a tinta</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Aktív</translation> <translation id="5567989639534621706">Alkalmazás-gyorsítótárak</translation> <translation id="5568069709869097550">Nem sikerült a bejelentkezés</translation> +<translation id="5571832155627049070">Profil személyre szabása</translation> <translation id="5572851009514199876">Indítsa el a Chrome böngészőt és jelentkezzen be, hogy a Chrome ellenőrizni tudja, engedélyezték-e a hozzáférést ehhez a webhelyhez.</translation> <translation id="5575473780076478375">Inkognitó mód bővítmény: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Gond adódott a demó mód regisztrációs kérelmével.</translation> @@ -5460,6 +5462,7 @@ <translation id="7280649757394340890">A szövegfelolvasó hangbeállításai</translation> <translation id="7280877790564589615">Engedély kérelmezve</translation> <translation id="7282992757463864530">Információs sáv</translation> +<translation id="7283555985781738399">Vendég mód</translation> <translation id="7284411326658527427">Bárki személyre szabhatja a saját fiókját, és gondoskodhat adatainak biztonságáról.</translation> <translation id="7287143125007575591">Hozzáférés megtagadva.</translation> <translation id="7287411021188441799">Alapértelmezett háttér visszaállítása</translation> @@ -5839,6 +5842,7 @@ <translation id="7716781361494605745">Netscape tanúsítványkibocsátó -- irányelv URL</translation> <translation id="7717014941119698257">Letöltés: <ph name="STATUS" /></translation> <translation id="7717134585801378441">A webhelyek kérhetik az Ön helyadatait (ajánlott)</translation> +<translation id="771721654176725387">Ezzel az összes böngészési adat véglegesen törlődik erről az eszközről. Az adatok visszaállításához kapcsolja be a „Szinkronizálás mint” lehetőséget.</translation> <translation id="7717845620320228976">Frissítések keresése</translation> <translation id="7719367874908701697">Oldal nagyítása/kicsinyítése</translation> <translation id="7719588063158526969">Az eszköznév túl hosszú</translation> @@ -5875,6 +5879,7 @@ <translation id="7765158879357617694">Áthelyezés</translation> <translation id="7765507180157272835">Szükség van Bluetoothra és Wi-Fi-re</translation> <translation id="7766082757934713382">Segít a hálózati adatforgalom csökkentésében az automatikus alkalmazás- és rendszerfrissítések szüneteltetésével</translation> +<translation id="7766807826975222231">Bemutató megtekintése</translation> <translation id="7766838926148951335">Engedélyek elfogadása</translation> <translation id="7768507955883790804">A webhelyek a felkereséskor automatikusan ezt a beállítást követik</translation> <translation id="7768770796815395237">Módosítás</translation> @@ -6119,6 +6124,7 @@ <translation id="8017176852978888182">Megosztott Linux-könyvtárak</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Billentyűparancs szerkesztve</translation> +<translation id="8018298733481692628">Törli ezt a profilt?</translation> <translation id="8018313076035239964">Szabályozhatja, hogy a webhelyek milyen adatokat használhatnak fel, és milyen tartalmakat jeleníthetnek meg</translation> <translation id="8023801379949507775">Bővítmények frissítése most</translation> <translation id="8026334261755873520">Böngészési adatok törlése</translation> @@ -6289,7 +6295,6 @@ <translation id="8211551284753798479">Érvénytelen PUK-kód. <ph name="RETRIES" /> próbálkozási lehetősége maradt.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Letöltés folyamatban}other{Letöltések folyamatban}}</translation> <translation id="8213449224684199188">Fotó mód bekapcsolva</translation> -<translation id="8213866992824776555">A legjobb minőségű, védelemmel rendelkező videó és hang lejátszása érdekében a(z) <ph name="DOMAIN" /> azonosítani kívánja az eszközét.</translation> <translation id="8214489666383623925">Fájl megnyitása...</translation> <translation id="8214962590150211830">Személy eltávolítása</translation> <translation id="8216351761227087153">Megtekintés</translation> @@ -6768,7 +6773,6 @@ <translation id="8774379074441005279">Visszaállítás megerősítése</translation> <translation id="8774934320277480003">Felső margó</translation> <translation id="8775144690796719618">Érvénytelen URL</translation> -<translation id="8775163630211761057">Androidos telefonja legjavának kiterjesztése <ph name="DEVICE_TYPE" /> eszközére</translation> <translation id="8775653927968399786">{0,plural, =1{A rendszer # másodpercen belül automatikusan zárolja <ph name="DEVICE_TYPE" /> eszközét. A(z) <ph name="DOMAIN" /> megköveteli, hogy ne távolítsa el az intelligens kártyát.}other{A rendszer # másodpercen belül automatikusan zárolja <ph name="DEVICE_TYPE" /> eszközét. A(z) <ph name="DOMAIN" /> megköveteli, hogy ne távolítsa el az intelligens kártyát.}}</translation> @@ -6957,6 +6961,7 @@ <translation id="8973596347849323817">Eszközét saját igényeinek megfelelően testre szabhatja. Ezeket a kisegítő lehetőségeket később a Beállítások menüben módosíthatja.</translation> <translation id="897414447285476047">A célfájl csatlakozási probléma miatt hiányos.</translation> <translation id="897525204902889653">Karanténszolgáltatás</translation> +<translation id="8975396729541388937">Bármikor leiratkozhat a kapott e-mailekben található linkre kattintva.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />”}=1{„<ph name="TAB_TITLE" />” és 1 másik lap}other{„<ph name="TAB_TITLE" />” és # másik lap}}</translation> <translation id="8977811652087512276">Hibás jelszó vagy sérült fájl</translation> <translation id="8978154919215542464">Be – az összes szinkronizálása</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index a8d9e1a..3f1da455 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -340,6 +340,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Կոտրված գաղտնաբառեր չկան}=1{1 կոտրված գաղտնաբառ}one{{NUM_COMPROMISED} կոտրված գաղտնաբառ}other{{NUM_COMPROMISED} կոտրված գաղտնաբառ}}</translation> <translation id="1380028686461971526">Ավտոմատ միանալ ցանցին</translation> <translation id="1380436189840894976">Փակե՞լ ինկոգնիտո պատուհանը</translation> +<translation id="1383597849754832576">Չհաջողվեց ներբեռնել ենթագրերի ֆայլը։ Փորձեք ավելի ուշ։</translation> <translation id="1383861834909034572">Ավարտվելուն պես կբացվի</translation> <translation id="1383876407941801731">Որոնում</translation> <translation id="1386791642444521222">Ակտիվացնել ֆիզիկական SIM քարտ</translation> @@ -878,7 +879,6 @@ <translation id="1954813140452229842">Ընդհանուր միացման սխալ կա։ Ստուգեք ձեր տվյալներն ու նորից փորձեք:</translation> <translation id="1956050014111002555">Ֆայլը պարունակում է մի քանի վկայագիր, նրանցից ոչ մեկը չի ներմուծվել`</translation> <translation id="1956390763342388273">Դուք պատրաստվում եք վերբեռնել «<ph name="FOLDER_PATH" />» պանակի բոլոր ֆայլերը։ Մի՛ արեք դա, եթե կայքը վստահելի չեք համարում։</translation> -<translation id="1960158217849594135">Պահե՞լ օգտանունը ձեր Google հաշվում</translation> <translation id="196040970347962278">Նախ միացեք համացանցին</translation> <translation id="1962233722219655970">Այս էջն օգտագործում է Native Client հավելված, որը ձեր համակարգիչը չի աջակցում:</translation> <translation id="1963227389609234879">Հեռացնել բոլորը</translation> @@ -904,6 +904,7 @@ <translation id="1984417487208496350">Առանց պաշտպանության (խորհուրդ չի տրվում)</translation> <translation id="1987317783729300807">Հաշիվներ</translation> <translation id="1989112275319619282">Ընտրել</translation> +<translation id="1990046457226896323">Ենթագրերի ֆայլերը ներբեռնվել են</translation> <translation id="1990512225220753005">Չցուցադրել դյուրանցումներ այս էջում</translation> <translation id="1992397118740194946">Տրված չէ</translation> <translation id="1992924914582925289">Հեռացնել սարքից</translation> @@ -1049,7 +1050,6 @@ <translation id="2157474325782140681">Լրացուցիչ գործառույթների համար օգտագործեք այս Chromebook-ի համար նախատեսված Dell դոկ-կայան:</translation> <translation id="215753907730220065">Ելնել լիաէկրան ռեժիմից</translation> <translation id="2157875535253991059">Այս էջն այժմ լիաէկրան ռեժիմում է:</translation> -<translation id="2160589599612868242">Ստացեք ծանուցումներ ձեր հեռախոսից <ph name="DEVICE_TYPE" /> սարքում</translation> <translation id="216169395504480358">Ավելացնել Wi-Fi…</translation> <translation id="2162155940152307086">Համաժամացումը կսկսվի, երբ դուրս գաք համաժամացման կարգավորումներից</translation> <translation id="2162838847352058695">Արգելել կայքերին ավտոմատ ներբեռնել մի քանի ֆայլ</translation> @@ -1267,6 +1267,7 @@ <translation id="2399699884460174994">Ծանուցումները միացվեցին</translation> <translation id="2399939490305346086">Անվտանգության բանալու մուտքային տվյալներ</translation> <translation id="2400664245143453337">Անհապաղ թարմացրեք օպերացիոն համակարգը</translation> +<translation id="2406153734066939945">Ջնջե՞լ այս պրոֆիլը և դրա տվյալները</translation> <translation id="2408018932941436077">Քարտը պահվում է</translation> <translation id="2408955596600435184">Մուտքագրեք ձեր PIN կոդը</translation> <translation id="241082044617551207">Անհայտ փլագին</translation> @@ -1385,6 +1386,7 @@ <translation id="2526590354069164005">Աշխատասեղան</translation> <translation id="2526619973349913024">Ստուգել թարմացումները</translation> <translation id="2527167509808613699">Ցանկացած տիպի կապակցում</translation> +<translation id="2530166226437958497">Անսարքությունների վերացում</translation> <translation id="2532589005999780174">Բարձր ցայտունության ռեժիմ</translation> <translation id="253434972992662860">&Դադարեցնել</translation> <translation id="2534460670861217804">Ապահով HTTP միջնորդ սերվեր</translation> @@ -1702,7 +1704,6 @@ <translation id="2885729872133513017">Չհաջողվեց ապակոդավորել սերվերի պատասխանը։</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Բացել հղումը` օգտագործելով…</translation> -<translation id="2889481634493693121">Միացրեք ծանուցումները ձեր հեռախոսում</translation> <translation id="2889925978073739256">Շարունակել արգելափակել պաշտպանված միջավայրից դուրս փլագինները</translation> <translation id="2893168226686371498">Կանխադրված դիտարկիչ</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 SMS}one{# SMS}other{# SMS}}</translation> @@ -2562,6 +2563,7 @@ <translation id="3857807444929313943">Բարձրացրեք մատը և նորից փորձեք</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />․ համաժամացումը դադարեցված է</translation> <translation id="3861638017150647085">«<ph name="USERNAME" />» օգտանունը հասանելի չէ</translation> +<translation id="3861977424605124250">Ցույց տալ գործարկման ժամանակ</translation> <translation id="3862693525629180217">Հաստատել ներկառուցված սկաների միջոցով</translation> <translation id="3862788408946266506">«Kiosk_only» մանիֆեստի հատկանիշով հավելվածը պետք է տեղադրվի Chrome OS-ի կրպակի ռեժիմում</translation> <translation id="3865414814144988605">Լուծաչափ</translation> @@ -2804,7 +2806,6 @@ <translation id="412730574613779332">Գերհերոս</translation> <translation id="4130199216115862831">Սարքի մատյան</translation> <translation id="4130207949184424187">Այս ընդլայնումը փոխել է Omnibox-ում որոնման ժամանակ ցուցադրվող էջը:</translation> -<translation id="4130344535649650885">Պահե՞լ գաղտնաբառը ձեր Google հաշվում</translation> <translation id="4130750466177569591">Համաձայն եմ</translation> <translation id="413121957363593859">Բաղադրիչներ</translation> <translation id="4131410914670010031">Սև ու սպիտակ</translation> @@ -3203,6 +3204,7 @@ <translation id="4627442949885028695">Շարունակեք այլ սարքից</translation> <translation id="4628757576491864469">Սարքեր</translation> <translation id="4628762811416793313">Չհաջողվեց ավարտել Linux-ի կոնտեյների կարգավորումը: Նորից փորձեք:</translation> +<translation id="4629521233550547305">Բացել <ph name="PROFILE_NAME" /> պրոֆիլը</translation> <translation id="4633003931260532286">Ընդլայնումը պահանջում է «<ph name="IMPORT_NAME" />»՝ «<ph name="IMPORT_VERSION" />» նվազագույն տարբերակով, սակայն տեղադրված է «<ph name="INSTALLED_VERSION" />» տարբերակը</translation> <translation id="4633757335284074492">Կրկնօրինակ Google Drive-ում։ Ցանկացած ժամանակ հեշտությամբ վերականգնեք ձեր տվյալները կամ տեղափոխեք մեկ այլ սարք։ Պահուստավորումը ներառում է հավելվածների տվյալները։ Կրկնօրինակները վերբեռնվում են Google և գաղտնագրվում ձեր երեխայի Google հաշվի գաղտնաբառի միջոցով։</translation> <translation id="4634575639321169635">Կարգավորեք այս սարքը անձնական օգտագործման կամ աշխատանքի համար</translation> @@ -3934,7 +3936,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Չհաջողվեց <ph name="ATTACHMENTS" /> ստանալ <ph name="DEVICE_NAME" /> սարքից}one{Չհաջողվեց <ph name="ATTACHMENTS" /> ստանալ <ph name="DEVICE_NAME" /> սարքից}other{Չհաջողվեց <ph name="ATTACHMENTS" /> ստանալ <ph name="DEVICE_NAME" /> սարքից}}</translation> <translation id="5502500733115278303">Firefox-ից ներմուծված</translation> <translation id="5502915260472117187">Երեխա</translation> -<translation id="5503858713116291452">Համոզվեք, որ ձեր հեռախոսը մոտակայքում է, ապակողպված է, և որ Bluetooth-ն ու Wi-Fi-ը միացված են։ Հեռախոսում կատարեք հետևյալ քայլերը՝ կարգավորումն ավարտելու համար։</translation> <translation id="5503982651688210506">Թույլատրել <ph name="HOST" /> կայքին օգտագործել և տեղաշարժել տեսախցիկը և օգտագործել խոսափողը</translation> <translation id="5505264765875738116">Կայքերը չեն կարող խնդրել ծանուցումներ ուղարկել</translation> <translation id="5505307013568720083">Թանաքը վերջացել է</translation> @@ -3995,6 +3996,7 @@ <translation id="5565735124758917034">Ակտիվ է</translation> <translation id="5567989639534621706">Հավելվածի քեշեր</translation> <translation id="5568069709869097550">Չհաջողվեց մուտք գործել</translation> +<translation id="5571832155627049070">Անհատականացրեք ձեր պրոֆիլը</translation> <translation id="5572851009514199876">Մուտք գործեք Chrome, որպեսզի վերջինս կարողանա ստուգել՝ արդյոք դուք այս կայքը բացելու թույլտվություն ունեք։</translation> <translation id="5575473780076478375">Ինկոգնիտո ընդլայնում` <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Դեմո ռեժիմի գրանցման հարցումն անվավեր է։</translation> @@ -5463,6 +5465,7 @@ <translation id="7280649757394340890">Տեքստի հնչեցման կարգավորումներ</translation> <translation id="7280877790564589615">Թույլտվության հարցումն ուղարկված է</translation> <translation id="7282992757463864530">Տեղեկագոտի</translation> +<translation id="7283555985781738399">Հյուրի ռեժիմ</translation> <translation id="7284411326658527427">Նրանցից յուրաքանչյուրը կարող է անհատականացնել հաշիվը և գաղտնի պահել իր տվյալները։</translation> <translation id="7287143125007575591">Մուտքը մերժված է:</translation> <translation id="7287411021188441799">Վերականգնել կանխադրված ֆոնը</translation> @@ -5842,6 +5845,7 @@ <translation id="7716781361494605745">Netscape-ի հավաստագրման կենտրոնի քաղաքականության URL</translation> <translation id="7717014941119698257">Ներբեռնում` <ph name="STATUS" /></translation> <translation id="7717134585801378441">Կայքերը կարող են ձեր տեղադրության տվյալներն օգտագործելու թույլտվություն հայցել (խորհուրդ է տրվում)</translation> +<translation id="771721654176725387">Ձեր այցելությունների պատմությունն ընդմիշտ կջնջվի այս սարքից։ Տվյալները վերականգնելու համար միացրեք համաժամացումը որպես</translation> <translation id="7717845620320228976">Ստուգել թարմացումները</translation> <translation id="7719367874908701697">Էջի մասշտաբավորում</translation> <translation id="7719588063158526969">Սարքի անունը չափազանց երկար է</translation> @@ -5878,6 +5882,7 @@ <translation id="7765158879357617694">Տեղափոխել</translation> <translation id="7765507180157272835">Անհրաժեշտ է Bluetooth և Wi-Fi կապ</translation> <translation id="7766082757934713382">Օգնում է նվազեցնել թրաֆիկի օգտագործումը՝ հավելվածների և համակարգի ավտոմատ թարմացումները դադարեցնելու միջոցով</translation> +<translation id="7766807826975222231">Կատարել շրջայց</translation> <translation id="7766838926148951335">Ընդունել</translation> <translation id="7768507955883790804">Երբ դուք այցելում եք կայքեր, դրանք ավտոմատ հետևում են այս կարգավորմանը։</translation> <translation id="7768770796815395237">Փոխել</translation> @@ -6120,6 +6125,7 @@ <translation id="8016266267177410919">Ժամանակավոր հիշողություն</translation> <translation id="8017176852978888182">Լինուքսի ընդհանուր գրացուցակներ</translation> <translation id="8017679124341497925">Դյուրանցումը փոխվեց</translation> +<translation id="8018298733481692628">Ջնջե՞լ այս պրոֆիլը</translation> <translation id="8018313076035239964">Վերահսկեք, թե ձեր մասին ինչ տեղեկություններ հասանելի կլինեն կայքերին և ինչ են ցուցադրելու ձեզ կայքերը։</translation> <translation id="8023801379949507775">Թարմացնել ընդլայնումները հիմա</translation> <translation id="8026334261755873520">Դիտարկումների տվյալների մաքրում</translation> @@ -6290,7 +6296,6 @@ <translation id="8211551284753798479">PUK կոդն անվավեր է։ Մնաց <ph name="RETRIES" /> փորձ։</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Ներբեռնումն ընթացքում է}one{Ներբեռնումն ընթացքում է}other{Ներբեռնումներն ընթացքում են}}</translation> <translation id="8213449224684199188">Լուսանկարելու ռեժիմը միացավ</translation> -<translation id="8213866992824776555">Ամենաբարձր որակի պաշտպանված աուդիո և տեսաբովանդակության նվագարկման համար <ph name="DOMAIN" /> տիրույթը ցանկանում է ստանալ ձեր սարքի եզակի ID-ն։</translation> <translation id="8214489666383623925">Open File...</translation> <translation id="8214962590150211830">Հեռացնել այս անձին</translation> <translation id="8216351761227087153">Դիտել</translation> @@ -6769,7 +6774,6 @@ <translation id="8774379074441005279">Հաստատեք վերականգնումը</translation> <translation id="8774934320277480003">Վերին լուսանցք</translation> <translation id="8775144690796719618">URL-ն անվավեր է</translation> -<translation id="8775163630211761057">Օգտագործեք ձեր Android հեռախոսի հնարավորությունները <ph name="DEVICE_TYPE" /> սարքում</translation> <translation id="8775653927968399786">{0,plural, =1{Ձեր <ph name="DEVICE_TYPE" /> սարքը # վայրկյանից ավտոմատ կկողպվի։ Համաձայն <ph name="DOMAIN" /> տիրույթի կանոնների՝ խելացի քարտը պետք է տեղադրված լինի։}one{Ձեր <ph name="DEVICE_TYPE" /> սարքը # վայրկյանից ավտոմատ կկողպվի։ Համաձայն <ph name="DOMAIN" /> տիրույթի կանոնների՝ խելացի քարտը պետք է տեղադրված լինի։}other{Ձեր <ph name="DEVICE_TYPE" /> սարքը # վայրկյանից ավտոմատ կկողպվի։ @@ -6959,6 +6963,7 @@ <translation id="8973596347849323817">Սյս սարքը կարող եք հարմարեցնել ձեր կարիքներին: Մատչելիության այս գործառույթները կարող եք հետագայում փոխել սարքի կարգավորումներում:</translation> <translation id="897414447285476047">Չհաջողվեց ներբեռնել ֆայլը կապի խնդրի պատճառով։</translation> <translation id="897525204902889653">Կարանտին</translation> +<translation id="8975396729541388937">Դուք ցանկացած ժամանակ կարող եք չեղարկել բաժանորդագրությունը՝ սեղմելով հղումը նամակում։</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{«<ph name="TAB_TITLE" />»}=1{«<ph name="TAB_TITLE" />» ու ևս 1 ներդիր}one{«<ph name="TAB_TITLE" />» ու ևս # ներդիր}other{«<ph name="TAB_TITLE" />» ու ևս # ներդիր}}</translation> <translation id="8977811652087512276">Գաղտնաբառը սխալ է, կամ ֆայլը վնասված է</translation> <translation id="8978154919215542464">Միացած է – համաժամացնել ամեն ինչ</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index bce8b4a..47284596 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Tidak ada sandi yang telah dibobol}=1{1 sandi telah dibobol}other{{NUM_COMPROMISED} sandi telah dibobol}}</translation> <translation id="1380028686461971526">Otomatis hubungkan ke jaringan</translation> <translation id="1380436189840894976">Tetap keluar dari mode samaran?</translation> +<translation id="1383597849754832576">Tidak dapat mendownload file ucapan. Coba lagi nanti.</translation> <translation id="1383861834909034572">Dibuka setelah selesai</translation> <translation id="1383876407941801731">Telusuri</translation> <translation id="1386791642444521222">Aktifkan SIM fisik</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Error saat memasang URL berbagi. Periksa kredensial Anda dan coba lagi.</translation> <translation id="1956050014111002555">File berisi beberapa sertifikat, dan tidak ada satu pun di antaranya yang diimpor.</translation> <translation id="1956390763342388273">Tindakan ini akan mengupload semua file dari "<ph name="FOLDER_PATH" />". Hanya lakukan ini jika Anda memercayai situs.</translation> -<translation id="1960158217849594135">Simpan nama pengguna ke Akun Google Anda?</translation> <translation id="196040970347962278">Buat koneksi internet terlebih dahulu</translation> <translation id="1962233722219655970">Halaman ini menggunakan aplikasi Native Client yang tidak bekerja di komputer Anda.</translation> <translation id="1963227389609234879">Hapus Semua</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Tidak ada perlindungan (tidak direkomendasikan)</translation> <translation id="1987317783729300807">Akun</translation> <translation id="1989112275319619282">Jelajahi</translation> +<translation id="1990046457226896323">File ucapan didownload</translation> <translation id="1990512225220753005">Jangan tampilkan pintasan di halaman ini</translation> <translation id="1992397118740194946">Belum disetel</translation> <translation id="1992924914582925289">Hapus dari perangkat</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Untuk mendapatkan fitur tambahan, gunakan stasiun dok Dell yang didesain untuk berfungsi dengan Chromebook ini.</translation> <translation id="215753907730220065">Keluar dari Tampilan Layar Penuh</translation> <translation id="2157875535253991059">Sekarang halaman ini dalam mode layar penuh.</translation> -<translation id="2160589599612868242">Terima notifikasi dari ponsel Anda di <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Tambahkan Wi-Fi...</translation> <translation id="2162155940152307086">Sinkronisasi akan dimulai setelah Anda meninggalkan setelan sinkronisasi</translation> <translation id="2162838847352058695">Blokir situs agar tidak otomatis mendownload beberapa file</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Notifikasi diaktifkan</translation> <translation id="2399939490305346086">Data login kunci keamanan</translation> <translation id="2400664245143453337">Perlu update segera</translation> +<translation id="2406153734066939945">Hapus profil ini dan datanya?</translation> <translation id="2408018932941436077">Menyimpan kartu</translation> <translation id="2408955596600435184">Masukkan PIN</translation> <translation id="241082044617551207">Plugin tidak dikenal</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Desktop</translation> <translation id="2526619973349913024">Periksa update</translation> <translation id="2527167509808613699">Jenis sambungan apa pun</translation> +<translation id="2530166226437958497">Pemecahan masalah</translation> <translation id="2532589005999780174">Mode kontras tinggi</translation> <translation id="253434972992662860">&Jeda</translation> <translation id="2534460670861217804">Proxy HTTP Aman</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Terjadi masalah saat mendekode respons server.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Buka link dengan...</translation> -<translation id="2889481634493693121">Aktifkan notifikasi di ponsel</translation> <translation id="2889925978073739256">Lanjutkan pemblokiran plugin yang tidak dimasukkan kotak pasir</translation> <translation id="2893168226686371498">Browser default</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 teks}other{# teks}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Angkat, kemudian sentuh lagi</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Sinkronisasi dijeda</translation> <translation id="3861638017150647085">Nama pengguna "<ph name="USERNAME" />" tidak tersedia</translation> +<translation id="3861977424605124250">Tampilkan saat memulai</translation> <translation id="3862693525629180217">Verifikasi melalui sensor bawaan</translation> <translation id="3862788408946266506">Aplikasi dengan atribut manifes 'kiosk_only' harus diinstal dalam mode kios Chrome OS</translation> <translation id="3865414814144988605">Resolusi</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Putra Super</translation> <translation id="4130199216115862831">Log Perangkat</translation> <translation id="4130207949184424187">Ekstensi ini telah mengubah halaman apa yang ditampilkan saat Anda menelusuri dari Omnibox.</translation> -<translation id="4130344535649650885">Simpan sandi ke Akun Google Anda?</translation> <translation id="4130750466177569591">Saya setuju</translation> <translation id="413121957363593859">Komponen</translation> <translation id="4131410914670010031">Hitam dan putih</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Lanjutkan dari perangkat lain</translation> <translation id="4628757576491864469">Perangkat</translation> <translation id="4628762811416793313">Penyiapan container Linux tidak selesai. Harap coba lagi.</translation> +<translation id="4629521233550547305">Buka profil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Ekstensi memerlukan "<ph name="IMPORT_NAME" />" dengan versi minimum "<ph name="IMPORT_VERSION" />", namun hanya versi "<ph name="INSTALLED_VERSION" />" yang terinstal</translation> <translation id="4633757335284074492">Cadangkan ke Google Drive. Pulihkan data atau beralih perangkat kapan saja dengan mudah. Cadangan ini mencakup data aplikasi. Cadangan diupload ke Google dan dienkripsi menggunakan sandi Akun Google anak Anda.</translation> <translation id="4634575639321169635">Siapkan perangkat ini untuk bekerja atau penggunaan pribadi</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Gagal menerima <ph name="ATTACHMENTS" /> dari <ph name="DEVICE_NAME" />}other{Gagal menerima <ph name="ATTACHMENTS" /> dari <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Diimpor dari Firefox</translation> <translation id="5502915260472117187">Anak</translation> -<translation id="5503858713116291452">Pastikan ponsel berada di dekat Anda, tidak terkunci, serta Bluetooth dan Wi-Fi aktif. Ikuti langkah di ponsel untuk menyelesaikan penyiapan.</translation> <translation id="5503982651688210506">Terus izinkan <ph name="HOST" /> untuk menggunakan dan menggerakkan kamera, serta menggunakan mikrofon Anda</translation> <translation id="5505264765875738116">Situs tidak dapat meminta izin mengirimkan notifikasi</translation> <translation id="5505307013568720083">Kehabisan tinta</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Aktif</translation> <translation id="5567989639534621706">Cache aplikasi</translation> <translation id="5568069709869097550">Tidak dapat sign in</translation> +<translation id="5571832155627049070">Sesuaikan profil Anda</translation> <translation id="5572851009514199876">Mulai dan login ke Chrome agar Chrome dapat memeriksa apakah Anda diizinkan untuk mengakses situs ini atau tidak.</translation> <translation id="5575473780076478375">Ekstensi Samaran: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Terjadi masalah dengan permintaan pendaftaran demo.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Setelan suara Text-to-Speech</translation> <translation id="7280877790564589615">Izin diminta</translation> <translation id="7282992757463864530">Infobar</translation> +<translation id="7283555985781738399">Mode tamu</translation> <translation id="7284411326658527427">Setiap pengguna dapat mempersonalisasi akunnya dan menjaga privasi datanya.</translation> <translation id="7287143125007575591">Akses ditolak.</translation> <translation id="7287411021188441799">Pulihkan background default</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">URL Kebijakan Otoritas Sertifikasi Netscape</translation> <translation id="7717014941119698257">Mendownload: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Situs dapat meminta lokasi Anda (direkomendasikan)</translation> +<translation id="771721654176725387">Tindakan ini akan menghapus data penjelajahan Anda dari perangkat ini secara permanen. Untuk memulihkan data, aktifkan sinkronisasi sebagai</translation> <translation id="7717845620320228976">Periksa pembaruan</translation> <translation id="7719367874908701697">Perkecil/perbesar halaman</translation> <translation id="7719588063158526969">Nama perangkat terlalu panjang</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Pindahkan</translation> <translation id="7765507180157272835">Perlu Bluetooth dan Wi-Fi</translation> <translation id="7766082757934713382">Membantu mengurangi penggunaan data jaringan dengan menjeda aplikasi otomatis dan update sistem</translation> +<translation id="7766807826975222231">Ikuti tur</translation> <translation id="7766838926148951335">Terima izin</translation> <translation id="7768507955883790804">Situs akan otomatis mengikuti setelan ini saat Anda mengunjunginya</translation> <translation id="7768770796815395237">Ubah</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">Direktori bersama Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Pintasan diedit</translation> +<translation id="8018298733481692628">Hapus profil ini?</translation> <translation id="8018313076035239964">Kontrol informasi yang dapat digunakan situs dan konten yang dapat ditampilkan kepada Anda</translation> <translation id="8023801379949507775">Perbarui ekstensi sekarang</translation> <translation id="8026334261755873520">Hapus data penjelajahan</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">PUK tidak valid. Tersisa <ph name="RETRIES" /> upaya lagi.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Proses download sedang berlangsung}other{Proses download sedang berlangsung}}</translation> <translation id="8213449224684199188">Masuk ke mode foto</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> ingin mengidentifikasi perangkat agar dapat memutar video dan audio berkualitas tinggi yang dilindungi.</translation> <translation id="8214489666383623925">Buka File...</translation> <translation id="8214962590150211830">Hapus Orang ini</translation> <translation id="8216351761227087153">Tonton</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Konfirmasikan Pemulihan</translation> <translation id="8774934320277480003">Batas atas</translation> <translation id="8775144690796719618">URL tidak valid</translation> -<translation id="8775163630211761057">Hadirkan fitur terbaik ponsel Android ke <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> akan otomatis terkunci dalam # detik. <ph name="DOMAIN" /> mengharuskan Anda tetap memasang kartu smart.}other{<ph name="DEVICE_TYPE" /> akan otomatis terkunci dalam # detik. <ph name="DOMAIN" /> mengharuskan Anda tetap memasang kartu smart.}}</translation> @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">Anda dapat menyesuaikan perangkat ini sesuai kebutuhan. Fitur aksesibilitas ini dapat diubah nanti di Setelan.</translation> <translation id="897414447285476047">File tujuan tidak lengkap karena masalah sambungan.</translation> <translation id="897525204902889653">Layanan Karantina</translation> +<translation id="8975396729541388937">Berhenti berlangganan kapan saja dengan mengklik link di email yang Anda terima.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" dan 1 tab lainnya}other{"<ph name="TAB_TITLE" />" dan # tab lainnya}}</translation> <translation id="8977811652087512276">Sandi salah atau file rusak</translation> <translation id="8978154919215542464">Aktif - sinkronkan semuanya</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index 2af1a4ad..1b18cb1 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Engin aðgangsorð í hættu}=1{1 aðgangsorð í hættu}one{{NUM_COMPROMISED} aðgangsorð í hættu}other{{NUM_COMPROMISED} aðgangsorð í hættu}}</translation> <translation id="1380028686461971526">Tengjast sjálfkrafa við netkerfi</translation> <translation id="1380436189840894976">Viltu samt loka huliðsstillingu?</translation> +<translation id="1383597849754832576">Ekki er hægt að sækja talskrár. Reyndu aftur síðar.</translation> <translation id="1383861834909034572">Opnast að þessu loknu</translation> <translation id="1383876407941801731">Leita</translation> <translation id="1386791642444521222">Virkja efnislegt SIM-kort</translation> @@ -877,7 +878,6 @@ <translation id="1954813140452229842">Villa við að tengja deilt efni. Athugaðu innskráningarupplýsingarnar og reyndu aftur.</translation> <translation id="1956050014111002555">Skráin inniheldur mörg vottorð og engin þeirra voru flutt inn:</translation> <translation id="1956390763342388273">Öllum skrám í „<ph name="FOLDER_PATH" />“ verður hlaðið upp. Gerðu þetta aðeins ef þú treystir vefsvæðinu.</translation> -<translation id="1960158217849594135">Vista notandanafn á Google reikningnum þínum?</translation> <translation id="196040970347962278">Settu upp nettengingu fyrst</translation> <translation id="1962233722219655970">Þessi síða notast við sérforritað forrit sem virkar ekki í tölvunni þinni.</translation> <translation id="1963227389609234879">Fjarlægja allt</translation> @@ -903,6 +903,7 @@ <translation id="1984417487208496350">Engin vörn (ekki mælt með)</translation> <translation id="1987317783729300807">Reikningar</translation> <translation id="1989112275319619282">Skoða</translation> +<translation id="1990046457226896323">Talskrár sóttar</translation> <translation id="1990512225220753005">Ekki sýna flýtileiðir á þessari síðu</translation> <translation id="1992397118740194946">Ekki stillt</translation> <translation id="1992924914582925289">Fjarlægja úr tæki</translation> @@ -1048,7 +1049,6 @@ <translation id="2157474325782140681">Til að fá viðbótareiginleika skaltu nota Dell-dokku sem er hönnuð fyrir þessa Chromebook tölvu.</translation> <translation id="215753907730220065">Hætta að nota allan skjáinn</translation> <translation id="2157875535253991059">Þessi síða birtist núna á öllum skjánum.</translation> -<translation id="2160589599612868242">Fáðu tilkynningar úr símanum í <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Bæta við Wi-Fi...</translation> <translation id="2162155940152307086">Samstilling hefst þegar þú lokar samstillingarkostum</translation> <translation id="2162838847352058695">Loka á að vefsvæði sæki margar skrár sjálfkrafa</translation> @@ -1266,6 +1266,7 @@ <translation id="2399699884460174994">Kveikt á tilkynningum</translation> <translation id="2399939490305346086">Innskráningargögn öryggislykils</translation> <translation id="2400664245143453337">Uppfæra þarf tafarlaust</translation> +<translation id="2406153734066939945">Eyða þessum prófíl og gögnum hans?</translation> <translation id="2408018932941436077">Vistar kort</translation> <translation id="2408955596600435184">Sláðu inn PIN-númerið þitt</translation> <translation id="241082044617551207">Óþekkt viðbót</translation> @@ -1384,6 +1385,7 @@ <translation id="2526590354069164005">Skjáborð</translation> <translation id="2526619973349913024">Leita að uppfærslu</translation> <translation id="2527167509808613699">Hvers kyns tenging</translation> +<translation id="2530166226437958497">Úrræðaleit</translation> <translation id="2532589005999780174">Mikil birtuskil</translation> <translation id="253434972992662860">Gera hlé</translation> <translation id="2534460670861217804">Öruggur HTTP-staðgengilsþjónn</translation> @@ -1701,7 +1703,6 @@ <translation id="2885729872133513017">Villa kom upp þegar svar netþjóns var afkóðað.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Opna tengil með...</translation> -<translation id="2889481634493693121">Kveikja á tilkynningum í símanum</translation> <translation id="2889925978073739256">Halda áfram að útiloka óafmarkaðar viðbætur</translation> <translation id="2893168226686371498">Sjálfgefinn vafri</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 SMS-skilaboð}one{# SMS-skilaboð}other{# SMS-skilaboð}}</translation> @@ -2561,6 +2562,7 @@ <translation id="3857807444929313943">Lyftu upp og snertu aftur með fingrinum</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Samstilling stöðvuð</translation> <translation id="3861638017150647085">Notandanafnið „<ph name="USERNAME" />“ er ekki laust</translation> +<translation id="3861977424605124250">Birta við ræsingu</translation> <translation id="3862693525629180217">Staðfesta með innbyggðum skynjara</translation> <translation id="3862788408946266506">Forrit með upplýsingaskráreigindina „kiosk_only“ verður að vera uppsett í sjálfsalastillingu Chrome OS</translation> <translation id="3865414814144988605">Upplausn</translation> @@ -2803,7 +2805,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Annáll tækis</translation> <translation id="4130207949184424187">Þessi viðbót hefur breytt því hvaða síða birtist þegar þú leitar með veffangastikunni.</translation> -<translation id="4130344535649650885">Á að vista aðgangsorðið að Google reikningnum þínum?</translation> <translation id="4130750466177569591">Ég samþykki</translation> <translation id="413121957363593859">Íhlutir</translation> <translation id="4131410914670010031">Svarthvítt</translation> @@ -3202,6 +3203,7 @@ <translation id="4627442949885028695">Halda áfram í öðru tæki</translation> <translation id="4628757576491864469">Tæki</translation> <translation id="4628762811416793313">Uppsetningu á Linux-geyminum var ekki lokið. Reyndu aftur.</translation> +<translation id="4629521233550547305">Opna prófílinn <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Viðbótin krefst „<ph name="IMPORT_NAME" />“ með „<ph name="IMPORT_VERSION" />“ eða nýrri útgáfu en aðeins útgáfa „<ph name="INSTALLED_VERSION" />“ er uppsett</translation> <translation id="4633757335284074492">Taka afrit á Google Drive. Endurheimtu gögn eða skiptu um tæki hvenær sem er. Þetta öryggisafrit inniheldur forritsgögn. Öryggisafritunum þínum er hlaðið inn á Google og þau dulkóðuð með aðgangsorði Google reiknings barnsins þíns.</translation> <translation id="4634575639321169635">Settu þetta tæki upp fyrir notkun við vinnu eða til einkanota</translation> @@ -3930,7 +3932,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Ekki tókst að taka við <ph name="ATTACHMENTS" /> frá <ph name="DEVICE_NAME" />}one{Ekki tókst að taka við <ph name="ATTACHMENTS" /> frá <ph name="DEVICE_NAME" />}other{Ekki tókst að taka við <ph name="ATTACHMENTS" /> frá <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Flutt inn úr Firefox</translation> <translation id="5502915260472117187">Barn</translation> -<translation id="5503858713116291452">Gakktu úr skugga um að síminn sé nálægt, ólæstur og með kveikt á Bluetooth og Wi-Fi. Fylgdu leiðbeiningunum í símanum til að ljúka uppsetningu.</translation> <translation id="5503982651688210506">Halda áfram að leyfa <ph name="HOST" /> að nota og hreyfa myndavélina og nota hljóðnemann</translation> <translation id="5505264765875738116">Vefsvæði geta ekki óskað eftir því að senda tilkynningar</translation> <translation id="5505307013568720083">Ekkert blek</translation> @@ -3991,6 +3992,7 @@ <translation id="5565735124758917034">Virkt</translation> <translation id="5567989639534621706">Skyndiminni forrita</translation> <translation id="5568069709869097550">Innskráning mistókst</translation> +<translation id="5571832155627049070">Útbúðu prófílinn þinn</translation> <translation id="5572851009514199876">Byrjaðu á að skrá þig inn á Chrome svo Chrome geti athugað hvort þú hafir leyfi til að skoða þetta vefsvæði.</translation> <translation id="5575473780076478375">Huliðsviðbót: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Vandamál með skráningarbeiðni fyrir prufustillingu kom upp</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Raddstillingar talgervils</translation> <translation id="7280877790564589615">Heimildar krafist</translation> <translation id="7282992757463864530">Upplýsingastika</translation> +<translation id="7283555985781738399">Gestastilling</translation> <translation id="7284411326658527427">Hver einstaklingur getur sérsniðið reikninginn sinn og tryggt öryggi gagna.</translation> <translation id="7287143125007575591">Aðgangur ekki veittur.</translation> <translation id="7287411021188441799">Endurheimta sjálfgefinn bakgrunn</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">Stefnuvefslóð Netscape-vottunarstöðvar</translation> <translation id="7717014941119698257">Sækir: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Vefsvæði geta beðið um leyfi til að sjá staðsetningu þína (ráðlagt)</translation> +<translation id="771721654176725387">Þetta mun eyða vefskoðunargögnum varanlega úr þessu tæki. Til að endurheimta gögnin skaltu kveikja á samstillingu sem</translation> <translation id="7717845620320228976">Leita að uppfærslum</translation> <translation id="7719367874908701697">Síðuaðdráttur</translation> <translation id="7719588063158526969">Heiti tækis er of langt</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Færa</translation> <translation id="7765507180157272835">Bluetooth- og Wi-Fi-tengingar eru áskildar</translation> <translation id="7766082757934713382">Hjálpar til við að minnka gagnanotkun á neti með því að setja sjálfvirkar forrita- og kerfisuppfærslur í bið</translation> +<translation id="7766807826975222231">Skoða kynningu</translation> <translation id="7766838926148951335">Samþykkja heimildir</translation> <translation id="7768507955883790804">Síður fylgja þessari stillingu sjálfkrafa þegar þú opnar þær</translation> <translation id="7768770796815395237">Breyta</translation> @@ -6117,6 +6122,7 @@ <translation id="8016266267177410919">Tímabundin geymsla</translation> <translation id="8017176852978888182">Sameiginleg skráasöfn í Linux</translation> <translation id="8017679124341497925">Flýtileið breytt</translation> +<translation id="8018298733481692628">Eyða þessum prófíl?</translation> <translation id="8018313076035239964">Stjórna því hvaða upplýsingar vefsvæði geta notað og hvaða efni þau geta sýnt þér</translation> <translation id="8023801379949507775">Uppfæra viðbætur núna</translation> <translation id="8026334261755873520">Hreinsa vafragögn</translation> @@ -6287,7 +6293,6 @@ <translation id="8211551284753798479">Ógilt PUK-númer. <ph name="RETRIES" /> tilraunir eru eftir.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Niðurhal er í gangi}one{Niðurhal er í gangi}other{Niðurhal er í gangi}}</translation> <translation id="8213449224684199188">Myndastilling valin</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> vill auðkenna tækið þitt til að hægt sé að spila í því mynd og hljóð í miklum gæðum og á öruggan hátt.</translation> <translation id="8214489666383623925">Opna skrá...</translation> <translation id="8214962590150211830">Fjarlægja þennan notanda</translation> <translation id="8216351761227087153">Horfa</translation> @@ -6766,7 +6771,6 @@ <translation id="8774379074441005279">Staðfesta endurheimt</translation> <translation id="8774934320277480003">Efri spássía</translation> <translation id="8775144690796719618">Ógild vefslóð</translation> -<translation id="8775163630211761057">Notaðu það besta úr Android símanum í <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> verður læst sjálfkrafa eftir # sekúndu. <ph name="DOMAIN" /> krefst þess að snjallkortið sé haft í.}one{<ph name="DEVICE_TYPE" /> verður læst sjálfkrafa eftir # sekúndu. <ph name="DOMAIN" /> krefst þess að snjallkortið sé haft í.}other{<ph name="DEVICE_TYPE" /> verður læst sjálfkrafa eftir # sekúndur. @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">Þú getur sérsniðið þetta tæki eftir þínum þörfum. Þessum aðgengiseiginleikum má breyta síðar í stillingunum.</translation> <translation id="897414447285476047">Áfangaskráin var ókláruð sökum tengingarvandamáls.</translation> <translation id="897525204902889653">Einangrunarþjónusta</translation> +<translation id="8975396729541388937">Hættu áskrift hvenær sem er með því að smella á tengilinn í tölvupóstinum sem þú færð.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />“}=1{„<ph name="TAB_TITLE" />“ og 1 flipi til viðbótar}one{„<ph name="TAB_TITLE" />“ og # flipi til viðbótar}other{„<ph name="TAB_TITLE" />“ og # flipar til viðbótar}}</translation> <translation id="8977811652087512276">Rangt aðgangsorð eða skemmd skrá</translation> <translation id="8978154919215542464">Kveikt – samstilla allt</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index caa01d4c..8c2596e1 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Nessuna password compromessa}=1{1 password compromessa}other{{NUM_COMPROMISED} password compromesse}}</translation> <translation id="1380028686461971526">Collegamento automatico alla rete</translation> <translation id="1380436189840894976">Vuoi uscire comunque dalla modalità di navigazione in incognito?</translation> +<translation id="1383597849754832576">Impossibile scaricare i file di contenuti vocali. Riprova più tardi.</translation> <translation id="1383861834909034572">Apri al termine</translation> <translation id="1383876407941801731">Cerca</translation> <translation id="1386791642444521222">Attiva SIM fisica</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Errore durante il montaggio della condivisione. Verifica le tue credenziali e riprova.</translation> <translation id="1956050014111002555">Il file conteneva più certificati, che non sono stati importati:</translation> <translation id="1956390763342388273">Verranno caricati tutti i file da "<ph name="FOLDER_PATH" />". Esegui questa operazione solo se ritieni il sito affidabile.</translation> -<translation id="1960158217849594135">Vuoi salvare il nome utente sul tuo Account Google?</translation> <translation id="196040970347962278">Prima stabilisci una connessione a Internet</translation> <translation id="1962233722219655970">Questa pagina utilizza un'app Native Client che non funziona sul tuo computer.</translation> <translation id="1963227389609234879">Rimuovi tutto</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Nessuna protezione (sconsigliata)</translation> <translation id="1987317783729300807">Account</translation> <translation id="1989112275319619282">Esplora</translation> +<translation id="1990046457226896323">File di contenuti vocali scaricati</translation> <translation id="1990512225220753005">Non mostrare scorciatoie in questa pagina</translation> <translation id="1992397118740194946">Non impostata</translation> <translation id="1992924914582925289">Rimuovi dal dispositivo</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Per avere a disposizione funzionalità aggiuntive, usa una dock station Dell progettata per supportare questo Chromebook.</translation> <translation id="215753907730220065">Esci da schermo intero</translation> <translation id="2157875535253991059">Questa pagina ora è a schermo intero.</translation> -<translation id="2160589599612868242">Ricevi le notifiche del telefono sul tuo dispositivo <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Aggiungi Wi-Fi...</translation> <translation id="2162155940152307086">La sincronizzazione inizierà quando esci dalle impostazioni di sincronizzazione</translation> <translation id="2162838847352058695">Impedisci ai siti di scaricare automaticamente più file</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Notifiche attivate</translation> <translation id="2399939490305346086">Dati di accesso del token di sicurezza</translation> <translation id="2400664245143453337">È richiesto l'aggiornamento immediato</translation> +<translation id="2406153734066939945">Vuoi eliminare questo profilo e i relativi dati?</translation> <translation id="2408018932941436077">Salvataggio della carta</translation> <translation id="2408955596600435184">Inserisci il codice PIN</translation> <translation id="241082044617551207">Plug-in sconosciuto</translation> @@ -1382,6 +1383,7 @@ <translation id="2526590354069164005">Desktop</translation> <translation id="2526619973349913024">Verifica la presenza di aggiornamenti</translation> <translation id="2527167509808613699">Qualsiasi tipo di connessione</translation> +<translation id="2530166226437958497">Risolvere problemi</translation> <translation id="2532589005999780174">Modalità ad alto contrasto</translation> <translation id="253434972992662860">&Pausa</translation> <translation id="2534460670861217804">Proxy HTTP sicuro</translation> @@ -1699,7 +1701,6 @@ <translation id="2885729872133513017">Si è verificato un problema durante la decodifica della risposta del server.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Apri link con...</translation> -<translation id="2889481634493693121">Attiva le notifiche sul telefono</translation> <translation id="2889925978073739256">Continua a bloccare i plug-in senza sandbox</translation> <translation id="2893168226686371498">Browser predefinito</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 segmento di testo}other{# segmenti di testo}}</translation> @@ -2559,6 +2560,7 @@ <translation id="3857807444929313943">Solleva, quindi tocca di nuovo</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sincronizzazione in pausa</translation> <translation id="3861638017150647085">Il nome utente "<ph name="USERNAME" />" non è disponibile</translation> +<translation id="3861977424605124250">Mostra all'avvio</translation> <translation id="3862693525629180217">Verifica tramite sensore integrato</translation> <translation id="3862788408946266506">L'app con l'attributo del file manifest "kiosk_only" deve essere installata in modalità kiosk di Chrome OS</translation> <translation id="3865414814144988605">Risoluzione</translation> @@ -2801,7 +2803,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Log dispositivo</translation> <translation id="4130207949184424187">Questa estensione ha cambiato la pagina mostrata quando esegui ricerche dalla omnibox.</translation> -<translation id="4130344535649650885">Vuoi salvare la password sul tuo Account Google?</translation> <translation id="4130750466177569591">Accetto</translation> <translation id="413121957363593859">Componenti</translation> <translation id="4131410914670010031">In bianco e nero</translation> @@ -3200,6 +3201,7 @@ <translation id="4627442949885028695">Continua da un altro dispositivo</translation> <translation id="4628757576491864469">Dispositivi</translation> <translation id="4628762811416793313">La configurazione del container Linux non è stata completata. Riprova.</translation> +<translation id="4629521233550547305">Apri il profilo <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">L'estensione richiede "<ph name="IMPORT_NAME" />" con la versione minima "<ph name="IMPORT_VERSION" />", ma è installata soltanto la versione "<ph name="INSTALLED_VERSION" />"</translation> <translation id="4633757335284074492">Effettua il backup su Google Drive. Ripristina i dati facilmente o cambia dispositivo in qualsiasi momento. Questa copia di backup include i dati delle app. Le copie di backup vengono caricate su Google e criptate mediante la password del tuo Account Google.</translation> <translation id="4634575639321169635">Configura questo dispositivo per il lavoro o per uso personale</translation> @@ -3928,7 +3930,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Impossibile ricevere <ph name="ATTACHMENTS" /> dal dispositivo <ph name="DEVICE_NAME" />}other{Impossibile ricevere <ph name="ATTACHMENTS" /> dal dispositivo <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Importati da Firefox</translation> <translation id="5502915260472117187">Bambino</translation> -<translation id="5503858713116291452">Assicurati che il tuo telefono sia nelle vicinanze, sbloccato e che il Bluetooth e il Wi-Fi siano attivi. Segui i passaggi sul telefono per completare la configurazione.</translation> <translation id="5503982651688210506">Continua a consentire a <ph name="HOST" /> di utilizzare e spostare la videocamera e di usare il microfono</translation> <translation id="5505264765875738116">I siti non possono chiedere di inviare notifiche</translation> <translation id="5505307013568720083">Inchiostro esaurito</translation> @@ -3989,6 +3990,7 @@ <translation id="5565735124758917034">Attivo</translation> <translation id="5567989639534621706">Cache applicazione</translation> <translation id="5568069709869097550">Non riesco a effettuare l'accesso</translation> +<translation id="5571832155627049070">Personalizza il tuo profilo</translation> <translation id="5572851009514199876">Accedi a Chrome per consentire al browser di verificare che tu sia autorizzato ad accedere a questo sito.</translation> <translation id="5575473780076478375">Estensione in incognito: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Si è verificato un problema con la richiesta di registrazione alla modalità demo.</translation> @@ -5458,6 +5460,7 @@ <translation id="7280649757394340890">Impostazioni voce per sintesi vocale</translation> <translation id="7280877790564589615">Richiesta di autorizzazione</translation> <translation id="7282992757463864530">Barra delle informazioni</translation> +<translation id="7283555985781738399">Modalità ospite</translation> <translation id="7284411326658527427">Ogni persona potrà personalizzare il proprio account e mantenere privati i dati.</translation> <translation id="7287143125007575591">Accesso negato.</translation> <translation id="7287411021188441799">Ripristina sfondo predefinito</translation> @@ -5837,6 +5840,7 @@ <translation id="7716781361494605745">URL dei criteri dell'autorità di certificazione Netscape</translation> <translation id="7717014941119698257">Download in corso: <ph name="STATUS" /></translation> <translation id="7717134585801378441">I siti possono richiedere la tua posizione (opzione consigliata)</translation> +<translation id="771721654176725387">I tuoi dati di navigazione verranno eliminati definitivamente da questo dispositivo. Per recuperare i dati, attiva la sincronizzazione come</translation> <translation id="7717845620320228976">Verifica disponibilità di aggiornamenti</translation> <translation id="7719367874908701697">Zoom delle pagine</translation> <translation id="7719588063158526969">Nome del dispositivo troppo lungo</translation> @@ -5873,6 +5877,7 @@ <translation id="7765158879357617694">Sposta</translation> <translation id="7765507180157272835">Bluetooth e Wi-Fi necessari</translation> <translation id="7766082757934713382">Contribuisce a ridurre l'utilizzo dei dati di rete mettendo in pausa gli aggiornamenti automatici di sistema e delle app</translation> +<translation id="7766807826975222231">Fai un tour</translation> <translation id="7766838926148951335">Accetta le autorizzazioni</translation> <translation id="7768507955883790804">I siti seguiranno automaticamente questa impostazione quando li visiti</translation> <translation id="7768770796815395237">Cambia</translation> @@ -6117,6 +6122,7 @@ <translation id="8017176852978888182">Directory condivise di Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Scorciatoia modificata</translation> +<translation id="8018298733481692628">Vuoi eliminare questo profilo?</translation> <translation id="8018313076035239964">Consentono di stabilire quali contenuti possono mostrarti i siti web e quali informazioni possono utilizzare</translation> <translation id="8023801379949507775">Aggiorna estensioni adesso</translation> <translation id="8026334261755873520">Cancella dati di navigazione</translation> @@ -6286,7 +6292,6 @@ <translation id="8211551284753798479">PUK non valido. Hai ancora <ph name="RETRIES" /> tentativi a disposizione.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Download in corso}other{Download in corso}}</translation> <translation id="8213449224684199188">Modalità foto attivata</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> vuole identificare il tuo dispositivo per poter riprodurre i video e gli audio protetti di massima qualità.</translation> <translation id="8214489666383623925">Apri file...</translation> <translation id="8214962590150211830">Rimuovi questa persona</translation> <translation id="8216351761227087153">Guarda</translation> @@ -6765,7 +6770,6 @@ <translation id="8774379074441005279">Conferma il ripristino</translation> <translation id="8774934320277480003">Margine superiore</translation> <translation id="8775144690796719618">URL non valido</translation> -<translation id="8775163630211761057">Il meglio del tuo telefono Android sul tuo dispositivo <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Il tuo <ph name="DEVICE_TYPE" /> verrà bloccato automaticamente tra # secondo. <ph name="DOMAIN" /> richiede di lasciare la smart card inserita.}other{Il tuo <ph name="DEVICE_TYPE" /> verrà bloccato automaticamente tra # secondi. <ph name="DOMAIN" /> richiede di lasciare la smart card inserita.}}</translation> @@ -6954,6 +6958,7 @@ <translation id="8973596347849323817">Puoi personalizzare questo dispositivo in base alle tue esigenze. Queste funzioni di accessibilità possono essere modificate in un secondo momento nelle Impostazioni.</translation> <translation id="897414447285476047">File di destinazione incompleto a causa di un problema di connessione.</translation> <translation id="897525204902889653">Servizio di quarantena</translation> +<translation id="8975396729541388937">Puoi annullare l'iscrizione in qualsiasi momento facendo clic sul link nelle email ricevute.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" e 1 altra scheda}other{"<ph name="TAB_TITLE" />" e altre # schede}}</translation> <translation id="8977811652087512276">Password errata o file danneggiato</translation> <translation id="8978154919215542464">On: sincronizza tutto</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 61405e0..22e10cf 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -875,7 +875,6 @@ <translation id="1954813140452229842">קרתה שגיאה בטעינת התקן הרשת לשיתוף קבצים. יש לבדוק את פרטי הכניסה ולנסות שוב.</translation> <translation id="1956050014111002555">הקובץ הכיל אישורים מרובים שאף אחד מהם לא יובא:</translation> <translation id="1956390763342388273">הפעולה הזו תעלה את כל הקבצים מ-"<ph name="FOLDER_PATH" />". יש לעשות זאת רק אם סומכים על האתר.</translation> -<translation id="1960158217849594135">רוצה לשמור את שם המשתמש של חשבון Google שלך?</translation> <translation id="196040970347962278">יש להתחבר לאינטרנט תחילה</translation> <translation id="1962233722219655970">דף זה משתמש ביישום Native Client שאינו פועל במחשב שלך.</translation> <translation id="1963227389609234879">הסרת כל קובצי ה-cookie</translation> @@ -1046,7 +1045,6 @@ <translation id="2157474325782140681">כדי להשתמש בתכונות נוספות, יש להשתמש בתחנת עגינה של Dell שתוכננה לפעול עם ה-Chromebook הזה.</translation> <translation id="215753907730220065">יציאה ממסך מלא</translation> <translation id="2157875535253991059">דף זה הוא במסך מלא כעת.</translation> -<translation id="2160589599612868242">לקבלת התראות מהטלפון במכשיר ה-<ph name="DEVICE_TYPE" /> שלך</translation> <translation id="216169395504480358">הוספת רשת Wi-Fi...</translation> <translation id="2162155940152307086">הסנכרון יתחיל מיד לאחר היציאה מהגדרות הסנכרון</translation> <translation id="2162838847352058695">חסימת האפשרות של אתרים להוריד מספר קבצים באופן אוטומטי</translation> @@ -1700,7 +1698,6 @@ <translation id="2885729872133513017">התרחשה בעיה במהלך פענוח תגובת השרת.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">פתיחת קישור באמצעות...</translation> -<translation id="2889481634493693121">הפעלת התראות בטלפון שלך</translation> <translation id="2889925978073739256">להמשיך לחסום יישומי פלאגין שאינם בארגז חול</translation> <translation id="2893168226686371498">דפדפן ברירת מחדל</translation> <translation id="2893917546370257247">{COUNT,plural, =1{קטע טקסט אחד}two{# קטעי טקסט}many{# קטעי טקסט}other{# קטעי טקסט}}</translation> @@ -2802,7 +2799,6 @@ <translation id="412730574613779332">סטרץ'</translation> <translation id="4130199216115862831">יומן מכשיר</translation> <translation id="4130207949184424187">התוסף הזה שינה את הדף שמוצג כשמבצעים חיפוש מסרגל הכתובות.</translation> -<translation id="4130344535649650885">רוצה לשמור את הסיסמה של חשבון Google שלך?</translation> <translation id="4130750466177569591">מקובל עליי</translation> <translation id="413121957363593859">רכיבים</translation> <translation id="4131410914670010031">שחור ולבן</translation> @@ -3929,7 +3925,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{לא ניתן היה לקבל <ph name="ATTACHMENTS" /> מהמכשיר <ph name="DEVICE_NAME" />}two{לא ניתן היה לקבל <ph name="ATTACHMENTS" /> מהמכשיר <ph name="DEVICE_NAME" />}many{לא ניתן היה לקבל <ph name="ATTACHMENTS" /> מהמכשיר <ph name="DEVICE_NAME" />}other{לא ניתן היה לקבל <ph name="ATTACHMENTS" /> מהמכשיר <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">ייבוא מ-Firefox</translation> <translation id="5502915260472117187">ילד או ילדה</translation> -<translation id="5503858713116291452">יש לוודא שהטלפון נמצא בקרבת מקום, שהוא אינו נעול ושה-Bluetooth וה-Wi-Fi פועלים. יש לפעול לפי השלבים בטלפון להשלמת תהליך ההגדרה.</translation> <translation id="5503982651688210506">זה בסדר, אפשר להמשיך להרשות לאתר <ph name="HOST" /> להשתמש במצלמה ולהזיז אותה, ולהשתמש במיקרופון</translation> <translation id="5505264765875738116">אתרים לא יכולים לבקש לשלוח התראות</translation> <translation id="5505307013568720083">הדיו נגמר</translation> @@ -3990,6 +3985,7 @@ <translation id="5565735124758917034">פעילה</translation> <translation id="5567989639534621706">קובצי מטמון של יישום</translation> <translation id="5568069709869097550">אי אפשר להיכנס</translation> +<translation id="5571832155627049070">התאמה אישית של הפרופיל</translation> <translation id="5572851009514199876">תחילה עליך להיכנס לחשבונך ב-Chrome כדי לאפשר ל-Chrome לבדוק אם יש לך הרשאה לגשת לאתר הזה.</translation> <translation id="5575473780076478375">תוסף של גלישה פרטית: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">התרחשה בעיה הקשורה לבקשת הרשמה של הדגמה.</translation> @@ -5874,6 +5870,7 @@ <translation id="7765158879357617694">העברה</translation> <translation id="7765507180157272835">נדרשים Bluetooth ו-Wi-Fi</translation> <translation id="7766082757934713382">המתג הזה עוזר לצמצם את השימוש בחבילת הגלישה על ידי הרשת, על ידי השהיית העדכונים האוטומטיים של האפליקציה והמערכת.</translation> +<translation id="7766807826975222231">הצטרף לסיור</translation> <translation id="7766838926148951335">אישור הרשאות</translation> <translation id="7768507955883790804">אתרים יפעלו לפי ההגדרה הזו באופן אוטומטי בזמן הביקור בהם</translation> <translation id="7768770796815395237">שינוי</translation> @@ -6289,7 +6286,6 @@ <translation id="8211551284753798479">PUK לא חוקי. נותרו לך עוד <ph name="RETRIES" /> ניסיונות.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{הורדה מתבצעת}two{הורדות מתבצעות}many{הורדות מתבצעות}other{הורדות מתבצעות}}</translation> <translation id="8213449224684199188">עברת למצב תמונות</translation> -<translation id="8213866992824776555">הדומיין <ph name="DOMAIN" /> מבקש לזהות את המכשיר שלך כדי להפעיל תוכן מוגן של וידאו ואודיו באיכות הגבוהה ביותר.</translation> <translation id="8214489666383623925">פתיחת קובץ...</translation> <translation id="8214962590150211830">הסרת משתמש זה</translation> <translation id="8216351761227087153">צפייה</translation> @@ -6768,7 +6764,6 @@ <translation id="8774379074441005279">אישור השחזור</translation> <translation id="8774934320277480003">שוליים עליונים</translation> <translation id="8775144690796719618">כתובת אתר לא חוקית</translation> -<translation id="8775163630211761057">הרחבת התכונות הטובות ביותר בטלפון Android למכשיר <ph name="DEVICE_TYPE" /> שלך</translation> <translation id="8775653927968399786">{0,plural, =1{מכשיר ה-<ph name="DEVICE_TYPE" /> יינעל אוטומטית בעוד שנייה אחת. כדי לעבוד עם הדומיין <ph name="DOMAIN" />, צריך להשאיר את הכרטיס החכם בפנים.}two{מכשיר ה-<ph name="DEVICE_TYPE" /> יינעל אוטומטית בעוד # שניות. כדי לעבוד עם הדומיין <ph name="DOMAIN" />, צריך להשאיר את הכרטיס החכם בפנים.}many{מכשיר ה-<ph name="DEVICE_TYPE" /> יינעל אוטומטית בעוד # שניות.
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index 7c3bac5..34ab01d 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{不正使用されたパスワードはありません}=1{不正使用されたパスワード: 1 件}other{不正使用されたパスワード: {NUM_COMPROMISED} 件}}</translation> <translation id="1380028686461971526">自動接続するネットワーク</translation> <translation id="1380436189840894976">シークレット モードを終了してもよろしいですか?</translation> +<translation id="1383597849754832576">読み上げファイルをダウンロードできません。しばらくしてからもう一度お試しください。</translation> <translation id="1383861834909034572">ダウンロードが完了したら開きます</translation> <translation id="1383876407941801731">検索</translation> <translation id="1386791642444521222">物理的な SIM を有効にする</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">共有フォルダのマウントエラー。認証情報を確認してもう一度お試しください。</translation> <translation id="1956050014111002555">ファイルに含まれる複数の証明書のうち、いずれもインポートできませんでした:</translation> <translation id="1956390763342388273">「<ph name="FOLDER_PATH" />」のすべてのファイルがアップロードされます。この操作は、サイトを信頼できる場合にのみ行ってください。</translation> -<translation id="1960158217849594135">Google アカウントにユーザー名を保存しますか?</translation> <translation id="196040970347962278">まずインターネット接続を確立してください</translation> <translation id="1962233722219655970">このページは、お使いのパソコンでは動作しないネイティブ クライアント アプリを使用しています。</translation> <translation id="1963227389609234879">すべて削除</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">保護なし(推奨されません)</translation> <translation id="1987317783729300807">アカウント</translation> <translation id="1989112275319619282">閲覧</translation> +<translation id="1990046457226896323">読み上げファイルをダウンロードしました</translation> <translation id="1990512225220753005">このページではショートカットを表示しません</translation> <translation id="1992397118740194946">未設定</translation> <translation id="1992924914582925289">デバイスから削除</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">すべての機能を利用できるようにするには、この Chromebook に対応した Dell のドッキング ステーションを使用してください。</translation> <translation id="215753907730220065">全画面表示を終了</translation> <translation id="2157875535253991059">現在このページは全画面表示です。</translation> -<translation id="2160589599612868242">スマートフォンの通知を <ph name="DEVICE_TYPE" /> で受信できます</translation> <translation id="216169395504480358">Wi-Fi を追加...</translation> <translation id="2162155940152307086">同期設定を閉じると同期が開始します</translation> <translation id="2162838847352058695">サイトが複数のファイルを自動的にダウンロードできないようにする</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">通知をオンにしました</translation> <translation id="2399939490305346086">セキュリティ キーのログインデータ</translation> <translation id="2400664245143453337">今すぐ更新が必要です</translation> +<translation id="2406153734066939945">このプロフィールとデータを削除しますか?</translation> <translation id="2408018932941436077">カードを保存しています</translation> <translation id="2408955596600435184">PIN を入力してください</translation> <translation id="241082044617551207">不明なプラグイン</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">デスクトップ</translation> <translation id="2526619973349913024">アップデートを確認</translation> <translation id="2527167509808613699">あらゆる種類の接続</translation> +<translation id="2530166226437958497">トラブルシューティング</translation> <translation id="2532589005999780174">ハイコントラスト モード</translation> <translation id="253434972992662860">一時停止(&P)</translation> <translation id="2534460670861217804">保護された HTTP プロキシ</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">サーバーの応答をデコード中に問題が発生しました。</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">次のプログラムでリンクを開く...</translation> -<translation id="2889481634493693121">スマートフォンからの通知をオンにする</translation> <translation id="2889925978073739256">サンドボックスの無効化プラグインを引き続きブロックする</translation> <translation id="2893168226686371498">既定のブラウザ</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 個のテキスト}other{# 個のテキスト}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">指を放して、もう一度タッチ</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: 同期が一時停止されています</translation> <translation id="3861638017150647085">ユーザー名「<ph name="USERNAME" />」は使用できません</translation> +<translation id="3861977424605124250">起動時に表示する</translation> <translation id="3862693525629180217">内蔵センサーを使って確認</translation> <translation id="3862788408946266506">「kiosk_only」のマニフェスト属性が指定されているアプリは、Chrome OS キオスクモードでインストールする必要があります。</translation> <translation id="3865414814144988605">解像度</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">スパンデックス</translation> <translation id="4130199216115862831">デバイスログ</translation> <translation id="4130207949184424187">この拡張機能により、アドレスバーから検索したときに表示されるページが変更されました。</translation> -<translation id="4130344535649650885">Google アカウントにパスワードを保存しますか?</translation> <translation id="4130750466177569591">同意する</translation> <translation id="413121957363593859">コンポーネント</translation> <translation id="4131410914670010031">白黒</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">他のデバイスで開いたタブ</translation> <translation id="4628757576491864469">デバイス</translation> <translation id="4628762811416793313">Linux コンテナの設定を完了できませんでした。もう一度お試しください。</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> のプロフィールを開く</translation> <translation id="4633003931260532286">拡張機能には「<ph name="IMPORT_NAME" />」のバージョン「<ph name="IMPORT_VERSION" />」以上が必要ですが、インストールされているのはバージョン「<ph name="INSTALLED_VERSION" />」のみです</translation> <translation id="4633757335284074492">Google ドライブにデータをバックアップします。これにより、いつでも簡単にデータを復元したりデバイスを切り替えたりできます。バックアップ内容にはアプリのデータが含まれます。バックアップ データは Google にアップロードされ、お子様の Google アカウントのパスワードを使って暗号化されます。</translation> <translation id="4634575639321169635">このデバイスを仕事または個人で使用する</translation> @@ -3929,7 +3931,6 @@ <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="5503858713116291452">Bluetooth 搭載のスマートフォンが近くにあり、Wi-Fi がオンになっていて、ロックも解除されていることを確認してください。スマートフォンの手順に沿って設定を完了します。</translation> <translation id="5503982651688210506"><ph name="HOST" /> によるカメラの使用と移動、およびマイクの使用を引き続き許可する</translation> <translation id="5505264765875738116">通知を送信するかどうかの確認をサイトに許可しない</translation> <translation id="5505307013568720083">インクがありません</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">有効</translation> <translation id="5567989639534621706">アプリケーション キャッシュ</translation> <translation id="5568069709869097550">ログインできない</translation> +<translation id="5571832155627049070">プロファイルのカスタマイズ</translation> <translation id="5572851009514199876">このサイトへのアクセス権があるかどうかを Chrome で確認できるように、Chrome を起動してログインしてください。</translation> <translation id="5575473780076478375">シークレット モード拡張機能: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">デモ登録リクエストで問題が発生しました。</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">テキスト読み上げの音声の設定</translation> <translation id="7280877790564589615">許可の要求</translation> <translation id="7282992757463864530">情報バー</translation> +<translation id="7283555985781738399">ゲストモード</translation> <translation id="7284411326658527427">ユーザーごとにアカウントをカスタマイズして、データのプライバシーを確保できます。</translation> <translation id="7287143125007575591">アクセスが拒否されました。</translation> <translation id="7287411021188441799">デフォルトの背景に戻す</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">Netscape 認証局ポリシー URL</translation> <translation id="7717014941119698257">ダウンロード: <ph name="STATUS" /></translation> <translation id="7717134585801378441">サイトが位置情報を要求できるようにする(推奨)</translation> +<translation id="771721654176725387">このデバイスから閲覧データを完全に削除します。データを復元するには、次のユーザーとして同期を有効にしてください:</translation> <translation id="7717845620320228976">アップデートを確認</translation> <translation id="7719367874908701697">ページのズーム</translation> <translation id="7719588063158526969">デバイス名が長すぎます</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">移動</translation> <translation id="7765507180157272835">Bluetooth と Wi-Fi が必要です</translation> <translation id="7766082757934713382">アプリとシステムの自動アップデートを一時的に停止することで、ネットワークのデータ使用量を減らします。</translation> +<translation id="7766807826975222231">使い方ガイド</translation> <translation id="7766838926148951335">権限を許可</translation> <translation id="7768507955883790804">サイトにアクセスしたときにこの設定の動作を自動的に行います</translation> <translation id="7768770796815395237">変更</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">Linux の共有ディレクトリ</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">ショートカットを編集しました</translation> +<translation id="8018298733481692628">このプロフィールを削除しますか?</translation> <translation id="8018313076035239964">ウェブサイトに使用を許可する情報や、表示してもよいコンテンツを管理します</translation> <translation id="8023801379949507775">拡張機能を今すぐ更新</translation> <translation id="8026334261755873520">閲覧履歴データの削除</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">無効な PUK です。入力できるのはあと <ph name="RETRIES" /> 回です。</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ダウンロードが進行中です}other{ダウンロードが進行中です}}</translation> <translation id="8213449224684199188">写真モードに切り替えました</translation> -<translation id="8213866992824776555">保護された最高品質の動画とオーディオを再生するために、<ph name="DOMAIN" /> がデバイスの確認を求めています。</translation> <translation id="8214489666383623925">ファイルを開く...</translation> <translation id="8214962590150211830">このユーザーを削除</translation> <translation id="8216351761227087153">見る</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">復元を実行</translation> <translation id="8774934320277480003">上余白</translation> <translation id="8775144690796719618">無効なURL</translation> -<translation id="8775163630211761057">Android スマートフォンの機能を <ph name="DEVICE_TYPE" /> で利用できるようにします</translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> は # 秒後に自動的にロックされます。 <ph name="DOMAIN" /> では必ずスマートカードを挿入した状態にしてください。}other{<ph name="DEVICE_TYPE" /> は # 秒後に自動的にロックされます。 <ph name="DOMAIN" /> では必ずスマートカードを挿入した状態にしてください。}}</translation> @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">このデバイスを必要に応じてカスタマイズできます。このユーザー補助機能は後から [設定] で変更できます。</translation> <translation id="897414447285476047">接続の問題により、ダウンロードされたファイルは不完全です。</translation> <translation id="897525204902889653">検疫サービス</translation> +<translation id="8975396729541388937">配信登録は、このメールのリンクをクリックして、いつでも解除できます。</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{「<ph name="TAB_TITLE" />」}=1{「<ph name="TAB_TITLE" />」と他 1 個のタブ}other{「<ph name="TAB_TITLE" />」と他 # 個のタブ}}</translation> <translation id="8977811652087512276">パスワードが間違っているか、ファイルが壊れています</translation> <translation id="8978154919215542464">オン - すべて同期</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index 3752d6a9..4b9e069d 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{გატეხილი პაროლები არ არის}=1{1 გატეხილი პაროლი}other{{NUM_COMPROMISED} გატეხილი პაროლი}}</translation> <translation id="1380028686461971526">ქსელთან ავტომატურად დაკავშირება</translation> <translation id="1380436189840894976">მაინც გსურთ ინკოგნიტო რეჟიმიდან გასვლა?</translation> +<translation id="1383597849754832576">მეტყველების ფაილების ჩამოტვირთვა ვერ მოხერხდა. ცადეთ მოგვიანებით.</translation> <translation id="1383861834909034572">გახსნა დასრულებისთანავე</translation> <translation id="1383876407941801731">ძიება</translation> <translation id="1386791642444521222">ფიზიკური SIM-ბარათის გააქტიურება</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">გაზიარების მიერთებისას მოხდა შეცდომა. შეამოწმეთ თქვენი ავტორიზაციის მონაცემები და ცადეთ ხელახლა.</translation> <translation id="1956050014111002555">ფაილი შეიცავდა რამდენიმე სერტიფიკატს. არცერთი სერტიფიკატი არ იქნა დაიმპორტირებული:</translation> <translation id="1956390763342388273">ეს ქმედება ატვირთავს ყველა ფაილს „<ph name="FOLDER_PATH" />“-დან. ამის გაკეთება რეკომენდებულია მხოლოდ იმ შემთხვევაში, თუ საიტს ენდობით.</translation> -<translation id="1960158217849594135">გსურთ, შეინახოთ მომხმარებლის სახელი თქვენს Google ანგარიშში?</translation> <translation id="196040970347962278">პირველ რიგში, საჭიროა ინტერნეტთან კავშირი</translation> <translation id="1962233722219655970">ეს გვერდი იყენებს ორიგინალური კლიენტის პროგრამას, რომელიც არ მუშაობს თქვენს კომპიუტერში.</translation> <translation id="1963227389609234879">ყველას ამოშლა</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">დაცვის გარეშე (არარეკომენდებული)</translation> <translation id="1987317783729300807">ანგარიშები</translation> <translation id="1989112275319619282">დათვალიერება</translation> +<translation id="1990046457226896323">მეტყველების ფაილები ჩამოიტვირთა</translation> <translation id="1990512225220753005">მალსახმობების დამალვა ამ გვერდზე</translation> <translation id="1992397118740194946">არ არის დაყენებული</translation> <translation id="1992924914582925289">მოწყობილობიდან ამოშლა</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">დამატებითი ფუნქციებით სარგებლობისთვის გამოიყენეთ Dell-ის სამაგრი, რომელიც შექმნილია ამ Chromebook-თან მუშაობისთვის.</translation> <translation id="215753907730220065">სრულეკრანიანი რეჟიმიდან გამოსვლა</translation> <translation id="2157875535253991059">ეს გვერდი ახლა მთელ ეკრანზეა.</translation> -<translation id="2160589599612868242">მიიღეთ შეტყობინებები თქვენი ტელეფონიდან თქვენს <ph name="DEVICE_TYPE" />-ზე</translation> <translation id="216169395504480358">Wi-Fi-ს დამატება…</translation> <translation id="2162155940152307086">სინქრონიზაცია დაიწყება სინქრონიზაციის პარამეტრებიდან გამოსვლის შემდეგ</translation> <translation id="2162838847352058695">საიტებისთვის რამდენიმე ფაილის ავტომატურად ჩამოტვირთვის დაბლოკვა</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">შეტყობინებები ჩართულია</translation> <translation id="2399939490305346086">უსაფრთხოების გასაღების სისტემაში შესვლის მონაცემები</translation> <translation id="2400664245143453337">საჭიროა გადაუდებელი განახლება</translation> +<translation id="2406153734066939945">გსურთ, წაშალოთ ეს პროფილი და მისი მონაცემები?</translation> <translation id="2408018932941436077">მიმდინარეობს ბარათის შენახვა</translation> <translation id="2408955596600435184">შეიყვანეთ თქვენი PIN-კოდი</translation> <translation id="241082044617551207">უცნობი დანამატი</translation> @@ -1382,6 +1383,7 @@ <translation id="2526590354069164005">სამუშაო დაფა</translation> <translation id="2526619973349913024">განახლების შემოწმება</translation> <translation id="2527167509808613699">ნებისმიერი ტიპის კავშირი</translation> +<translation id="2530166226437958497">დეფექტების აღმოფხვრა</translation> <translation id="2532589005999780174">მაღალი კონტრასტის რეჟიმი</translation> <translation id="253434972992662860">&პაუზა</translation> <translation id="2534460670861217804">უსაფრთხო HTTP პროქსი-სერვერი</translation> @@ -1699,7 +1701,6 @@ <translation id="2885729872133513017">სერვერის რეაგირების გაშიფვრისას წარმოიქმნა პრობლემა.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">ბმულის გახსნა…</translation> -<translation id="2889481634493693121">ჩართეთ ტელეფონზე შეტყობინებების მიღება</translation> <translation id="2889925978073739256">დაცულ გარემოში არმყოფი დანამატების დაბლოკვის გაგრძელება</translation> <translation id="2893168226686371498">ნაგულისხმევი ბრაუზერი</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 ტექსტი}other{# ტექსტი}}</translation> @@ -2559,6 +2560,7 @@ <translation id="3857807444929313943">აიღეთ თითი, შემდეგ კი ხელახლა შეეხეთ</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: სინქრონიზაცია დაპაუზებულია</translation> <translation id="3861638017150647085">მომხმარებლის სახელი „<ph name="USERNAME" />“ მიუწვდომელია</translation> +<translation id="3861977424605124250">გაშვებისას ჩვენება</translation> <translation id="3862693525629180217">ჩაშენებული სენსორის მეშვეობით დადასტურება</translation> <translation id="3862788408946266506">აპი, რომლის მანიფესტის ატრიბუტიცაა „kiosk_only“, უნდა დაინსტალირდეს Chrome OS-ის კიოსკის რეჟიმში</translation> <translation id="3865414814144988605">გარჩევადობა</translation> @@ -2801,7 +2803,6 @@ <translation id="412730574613779332">სპანდექსი</translation> <translation id="4130199216115862831">მოწყობილობაში შესვლა</translation> <translation id="4130207949184424187">ამ გაფართოებამ თქვენ მიერ Omnibox-ში ძიებისას ნაჩვენები გვერდი შეცვალა.</translation> -<translation id="4130344535649650885">გსურთ, შეინახოთ პაროლი თქვენს Google ანგარიშში?</translation> <translation id="4130750466177569591">ვეთანხმები</translation> <translation id="413121957363593859">კომპონენტები</translation> <translation id="4131410914670010031">შავი და თეთრი</translation> @@ -3200,6 +3201,7 @@ <translation id="4627442949885028695">სხვა მოწყობილობიდან გაგრძელება</translation> <translation id="4628757576491864469">მოწყობილობები</translation> <translation id="4628762811416793313">Linux კონტეინერის დაყენება არ დასრულებულა. გთხოვთ, ცადოთ ხელახლა.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" />-ის პროფილის გახსნა</translation> <translation id="4633003931260532286">გაფართოებას სჭირდება „<ph name="IMPORT_NAME" />“ მინიმალური ვერსიით „<ph name="IMPORT_VERSION" />“, თუმცა დაინსტალირებულია მხოლოდ ვერსია „<ph name="INSTALLED_VERSION" />“</translation> <translation id="4633757335284074492">სარეზერვო კოპირება Google Drive-ში. მარტივად აღადგინეთ მონაცემები, ან შეცვალეთ მოწყობილობები ნებისმიერ დროს. ეს სარეზერვო ასლი მოიცავს აპების მონაცემებს. სარეზერვო ასლები აიტვირთება Google-ში და დაიშიფრება თქვენი შვილის Google ანგარიშის პაროლით.</translation> <translation id="4634575639321169635">დააყენეთ ეს მოწყობილობა სამსახურისთვის ან პირადი გამოყენებისთვის</translation> @@ -3928,7 +3930,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="ATTACHMENTS" /> <ph name="DEVICE_NAME" />-დან ვერ მიიღეთ}other{<ph name="ATTACHMENTS" /> <ph name="DEVICE_NAME" />-დან ვერ მიიღეთ}}</translation> <translation id="5502500733115278303">იმპორტირებულია Firefox-იდან</translation> <translation id="5502915260472117187">ბავშვი</translation> -<translation id="5503858713116291452">დარწმუნდით, რომ ტელეფონი ახლოს გაქვთ, განბლოკილია და მასზე ჩართულია Bluetooth/Wi-Fi. დაყენების დასასრულებლად შეასრულეთ თქვენს ტელეფონზე მოცემული ნაბიჯები.</translation> <translation id="5503982651688210506"><ph name="HOST" />-ისთვის თქვენი კამერის გამოყენებისა და გადააგილების, ასევე, მიკროფონის გამოყენების, კლავინდებურად დაშვება</translation> <translation id="5505264765875738116">საიტები ვერ გთხოვთ შეტყობინებების გამოგზავნას</translation> <translation id="5505307013568720083">მელანი ამოიწურა</translation> @@ -3989,6 +3990,7 @@ <translation id="5565735124758917034">აქტიური</translation> <translation id="5567989639534621706">პროგრამის შეცდომები</translation> <translation id="5568069709869097550">სისტემაში შესვლა ვერ მოხერხდა</translation> +<translation id="5571832155627049070">მოირგეთ პროფილი</translation> <translation id="5572851009514199876">გთხოვთ, გაუშვათ Chrome და შეხვიდეთ მასში, რათა Chrome-მა შეამოწმოს, გაქვთ თუ არა ამ საიტზე წვდომის უფლება.</translation> <translation id="5575473780076478375">ინკოგნიტო გაფართოება: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">წარმოიქმნა დემო-რეგისტრაციის მოთხოვნასთან დაკავშირებული პრობლემა.</translation> @@ -5457,6 +5459,7 @@ <translation id="7280649757394340890">ტექსტის გახმოვანების ხმის პარამეტრები</translation> <translation id="7280877790564589615">მოთხოვნილია ნებართვა</translation> <translation id="7282992757463864530">საინფორმაციო ზოლი</translation> +<translation id="7283555985781738399">სტუმრის რეჟიმი</translation> <translation id="7284411326658527427">თითოეულ ადამიანს შეეძლება თავისი ანგარიშის პერსონალიზება და მონაცემების განცალკევებით შენახვა.</translation> <translation id="7287143125007575591">წვდომა აკრძალულია.</translation> <translation id="7287411021188441799">ნაგულისხმევი ფონის აღდგენა</translation> @@ -5836,6 +5839,7 @@ <translation id="7716781361494605745">Netscape სერტიფიკაციის ორგანიზაციის პოლიტიკის URL</translation> <translation id="7717014941119698257">ჩამოტვირთვა: <ph name="STATUS" /></translation> <translation id="7717134585801378441">საიტებს შეუძლია თქვენი მდებარეობის თხოვნა (რეკომენდებული)</translation> +<translation id="771721654176725387">ეს მოქმედება სამუდამოდ წაშლის თქვენს დათვალიერების მონაცემებს ამ მოწყობილობიდან. მონაცემების აღსადგენად ჩართეთ სინქრონიზაცია შემდეგი მომხმარებლის სახელით:</translation> <translation id="7717845620320228976">განახლებების შემოწმება</translation> <translation id="7719367874908701697">გვერდის მასშტაბი</translation> <translation id="7719588063158526969">მოწყობილობის სახელი ზედმეტად გრძელია</translation> @@ -5872,6 +5876,7 @@ <translation id="7765158879357617694">გადატანა</translation> <translation id="7765507180157272835">საჭიროა Bluetooth და Wi-Fi</translation> <translation id="7766082757934713382">დაგეხმარებათ ქსელის მიერ მონაცემთა მოხმარების შემცირებაში აპებისა და სისტემის განახლებების ავტომატური განახლებების დაპაუზების გზით</translation> +<translation id="7766807826975222231">ტური</translation> <translation id="7766838926148951335">ნებართვების მიღება</translation> <translation id="7768507955883790804">საიტები, რომლებსაც მოინახულებთ, ავტომატურად გაითვალისწინებს ამ პარამეტრს</translation> <translation id="7768770796815395237">შეცვლა</translation> @@ -6115,6 +6120,7 @@ <translation id="8016266267177410919">დროებითი მეხსიერება</translation> <translation id="8017176852978888182">Linux-ის გაზიარებული კატალოგები</translation> <translation id="8017679124341497925">მალსახმობი რედაქტირებულია</translation> +<translation id="8018298733481692628">გსურთ ამ პროფილის წაშლა?</translation> <translation id="8018313076035239964">ვებსაიტების მიერ თქვენთვის ნაჩვენები კონტენტისა და მათ მიერ გამოყენებული ინფორმაციის მართვა</translation> <translation id="8023801379949507775">გაანახლეთ გაფართოებები ეხლა</translation> <translation id="8026334261755873520">დათვალიერების მონაცემების გასუფთავება</translation> @@ -6284,7 +6290,6 @@ <translation id="8211551284753798479">PUK-კოდი არასწორია. <ph name="RETRIES" /> მცდელობა დაგრჩათ.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{მიმდინარეობს ჩამოტვირთვა}other{მიმდინარეობს ჩამოტვირთვები}}</translation> <translation id="8213449224684199188">გაშვებულია ფოტო რეჟიმი</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> ითხოვს თქვენი მოწყობილობის იდენტიფიცირების ნებართვას, რომ უმაღლესი ხარისხის, დაცული ვიდეო და აუდიო დაუკრას.</translation> <translation id="8214489666383623925">ფაილის გახსნა…</translation> <translation id="8214962590150211830">ამ პირის ამოღება</translation> <translation id="8216351761227087153">ყურება</translation> @@ -6763,7 +6768,6 @@ <translation id="8774379074441005279">დაადასტურეთ აღდგენა</translation> <translation id="8774934320277480003">ზედა მინდორი</translation> <translation id="8775144690796719618">URL არასწორია</translation> -<translation id="8775163630211761057">გამოიყენეთ თქვენი Android ტელეფონის საუკეთესო შესაძლებლობები თქვენს <ph name="DEVICE_TYPE" />-ზე</translation> <translation id="8775653927968399786">{0,plural, =1{თქვენი <ph name="DEVICE_TYPE" /> ავტომატურად ჩაიკეტება # წამში. <ph name="DOMAIN" /> მოითხოვს, რომ თქვენი სმარტ-ბარათი ჩასმული იყოს.}other{თქვენი <ph name="DEVICE_TYPE" /> ავტომატურად ჩაიკეტება # წამში. <ph name="DOMAIN" /> მოითხოვს, რომ თქვენი სმარტ-ბარათი ჩასმული იყოს.}}</translation> @@ -6952,6 +6956,7 @@ <translation id="8973596347849323817">ამ მოწყობილობის მორგება თქვენი საჭიროებების შესაბამისად შეგიძლიათ. მარტივი წვდომის ამ პარამეტრების მოგვიანებით შეცვლა პარამეტრებიდან არის შესაძლებელი.</translation> <translation id="897414447285476047">დანიშნულების ფაილი იყო არასრული კავშირის პრობლემის გამო.</translation> <translation id="897525204902889653">კარანტინის სერვისი</translation> +<translation id="8975396729541388937">გამოწერის გაუქმება ნებისმიერ დროს შეგიძლიათ, ამისთვის დააწკაპუნეთ ელფოსტით მიღებულ შეტყობინებებში მოცემულ ბმულზე.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />“}=1{„<ph name="TAB_TITLE" />“ და 1 სხვა ჩანართი}other{„<ph name="TAB_TITLE" />“ და # სხვა ჩანართი}}</translation> <translation id="8977811652087512276">პაროლი არასწორია, ან დაზიანებულია ფაილი</translation> <translation id="8978154919215542464">ჩართული — ყველაფრის სინქრონიზაცია</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index 5cadc6f..42459324 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Ұрланған құпия сөздер жоқ.}=1{1 құпия сөз ұрланды.}other{{NUM_COMPROMISED} құпия сөз ұрланды.}}</translation> <translation id="1380028686461971526">Желіге автоматты қосылу</translation> <translation id="1380436189840894976">Инкогнито режимінен бәрібір шығасыз ба?</translation> +<translation id="1383597849754832576">Автоматты субтитр файлдары жүктеп алынбады. Кейінірек қайталап көріңіз.</translation> <translation id="1383861834909034572">Аяқталғанда ашу</translation> <translation id="1383876407941801731">Іздеу</translation> <translation id="1386791642444521222">Физикалық SIM картасын белсендіру</translation> @@ -873,7 +874,6 @@ <translation id="1954813140452229842">Ортақ файлды орнату кезінде қате шықты. Тіркелу деректерін тексеріп, қайталап көріңіз.</translation> <translation id="1956050014111002555">Файлда ешбірі импортталмаған көптеген сертификаттар қамтылған:</translation> <translation id="1956390763342388273">Ол "<ph name="FOLDER_PATH" />" қалтасындағы барлық файлдарды жүктеп салады. Сайт сенімді болған жағдайда ғана жүктеп салыңыз.</translation> -<translation id="1960158217849594135">Пайдаланушы аты Google есептік жазбаңызға сақталсын ба?</translation> <translation id="196040970347962278">Алдымен интернетпен байланыс орнатыңыз.</translation> <translation id="1962233722219655970">Бұл бет компьютеріңізде жұмыс істемейтін Native Client қолданбасын пайдаланады.</translation> <translation id="1963227389609234879">Барлығын жою</translation> @@ -899,6 +899,7 @@ <translation id="1984417487208496350">Қорғау режимін өшіру (ұсынылмайды)</translation> <translation id="1987317783729300807">Есептік жазбалар</translation> <translation id="1989112275319619282">Шолу</translation> +<translation id="1990046457226896323">Автоматты субтитр файлдары жүктеп алынды.</translation> <translation id="1990512225220753005">Бұл бетте таңбашаларды көрсетпеу</translation> <translation id="1992397118740194946">Орнатылмаған</translation> <translation id="1992924914582925289">Құрылғыдан жою</translation> @@ -1044,7 +1045,6 @@ <translation id="2157474325782140681">Қосымша функцияларды пайдалану үшін осы Chromebook құрылғысымен жұмыс істеуге арналған қондыру станциясын пайдаланыңыз.</translation> <translation id="215753907730220065">Толық экраннан шығу</translation> <translation id="2157875535253991059">Бұл бет енді толық экранға ауысты.</translation> -<translation id="2160589599612868242">Телефонға келген хабарландыруларды <ph name="DEVICE_TYPE" /> құрылғысына да алыңыз.</translation> <translation id="216169395504480358">Wi-Fi желісін қосу…</translation> <translation id="2162155940152307086">Синхрондау, сіз параметрлерден шыққан кезде, басталады.</translation> <translation id="2162838847352058695">Сайттардың бірнеше файлды автоматты түрде жүктеп алуына тыйым салу</translation> @@ -1262,6 +1262,7 @@ <translation id="2399699884460174994">Хабарландырулар қосылды</translation> <translation id="2399939490305346086">Қауіпсіздік кілтіне кіру деректері</translation> <translation id="2400664245143453337">Дереу жаңарту қажет</translation> +<translation id="2406153734066939945">Бұл профиль және оның деректері жойылсын ба?</translation> <translation id="2408018932941436077">Карта сақталуда</translation> <translation id="2408955596600435184">PIN кодын енгізіңіз</translation> <translation id="241082044617551207">Белгісіз плагин</translation> @@ -1380,6 +1381,7 @@ <translation id="2526590354069164005">Жұмыс үстелі</translation> <translation id="2526619973349913024">Жаңа нұсқасының бар-жоғын тексеру</translation> <translation id="2527167509808613699">Байланыстың кез келген түрі</translation> +<translation id="2530166226437958497">Ақауларды жою</translation> <translation id="2532589005999780174">Жоғары контраст режимі</translation> <translation id="253434972992662860">&Кідірту</translation> <translation id="2534460670861217804">Қауіпсіз HTTP прокси-сервері</translation> @@ -1697,7 +1699,6 @@ <translation id="2885729872133513017">Сервер жауабының шифрын шешу барысында ақау орын алды.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Сілтеме ашу әдісі…</translation> -<translation id="2889481634493693121">Телефондағы хабарландыруларды қосу</translation> <translation id="2889925978073739256">Сынақ ортасында жоқ плагиндерді тыю</translation> <translation id="2893168226686371498">Әдепкі браузер</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 мәтін}other{# мәтін}}</translation> @@ -2557,6 +2558,7 @@ <translation id="3857807444929313943">Саусағыңызды алып, қайта түртіңіз</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: синхрондау кідіртілді</translation> <translation id="3861638017150647085">"<ph name="USERNAME" />" деген пайдаланушы аты қолжетімді емес.</translation> +<translation id="3861977424605124250">Іске қосу кезінде көрсету</translation> <translation id="3862693525629180217">Ендірілген сенсор арқылы растау</translation> <translation id="3862788408946266506">"kiosk_only" манифест атрибутына ие қолданба Chrome OS киоск режимінде орнатылуы тиіс</translation> <translation id="3865414814144988605">Ажыратымдылық</translation> @@ -2799,7 +2801,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Құрылғы журналы</translation> <translation id="4130207949184424187">Бұл кеңейтім Omnibox ішінен іздеген кезде көрсетілетін бетті өзгертті.</translation> -<translation id="4130344535649650885">Құпия сөз Google есептік жазбаңызға сақталсын ба?</translation> <translation id="4130750466177569591">Мен келісемін</translation> <translation id="413121957363593859">Компоненттер</translation> <translation id="4131410914670010031">Қара мен ақ</translation> @@ -3198,6 +3199,7 @@ <translation id="4627442949885028695">Басқа құрылғыдан жалғастыру</translation> <translation id="4628757576491864469">Құрылғылар</translation> <translation id="4628762811416793313">Linux контейнерін реттеу аяқталмады. Әрекетті қайталаңыз.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> профилін ашу</translation> <translation id="4633003931260532286">Кеңейтім кемінде "<ph name="IMPORT_VERSION" />" нұсқалы "<ph name="IMPORT_NAME" />" интерфейсін қажет етеді, бірақ тек "<ph name="INSTALLED_VERSION" />" нұсқасы орнатылған</translation> <translation id="4633757335284074492">Google Drive жадына сақтық көшірме жасау. Деректерді қалпына келтіруге немесе құрылғыны кез келген уақытта ауыстыруға болады. Сақтық көшірмеде қолданба деректері қамтылады. Сақтық көшірмелер Google-ға жүктеп салынады және балаңыздың Google есептік жазбасының құпия сөзімен шифрланады.</translation> <translation id="4634575639321169635">Осы құрылғыны жұмыста не жеке пайдалану үшін реттеңіз.</translation> @@ -3926,7 +3928,6 @@ <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="5503858713116291452">Телефоныңыз жаныңызда, құлпы ашық болуы және Bluetooth бен Wi-Fi қосылып тұруы керек. Реттеуді аяқтау үшін телефоныңыздағы қадамдарды орындаңыз.</translation> <translation id="5503982651688210506"><ph name="HOST" /> сайтына камераны пайдалануға және жылжытуға, микрофонды пайдалануға рұқсат ету</translation> <translation id="5505264765875738116">Сайттар хабарландырулар жіберу рұқсатын сұрай алмайды</translation> <translation id="5505307013568720083">Сия бітті</translation> @@ -3987,6 +3988,7 @@ <translation id="5565735124758917034">Белсенді</translation> <translation id="5567989639534621706">Қолданба кэштері</translation> <translation id="5568069709869097550">Кіру мүмкін емес</translation> +<translation id="5571832155627049070">Профильді реттеу</translation> <translation id="5572851009514199876">Chrome браузері сіздің сайтқа кіруге рұқсатыңыз барын тексере алуы үшін Chrome жүйесін іске қосып, оған кіріңіз.</translation> <translation id="5575473780076478375">Инкогнито кеңейтімі: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Демо тіркеу сұрауына қатысты ақау орын алды.</translation> @@ -5455,6 +5457,7 @@ <translation id="7280649757394340890">Мәтінді дыбысқа түрлендіру дауыстық параметрлері</translation> <translation id="7280877790564589615">Рұқсат қажет</translation> <translation id="7282992757463864530">Ақпараттық тақта</translation> +<translation id="7283555985781738399">Қонақ режимі</translation> <translation id="7284411326658527427">Әр адам өзінің есептік жазбасын жекелендіріп, деректерін құпия сақтай алады.</translation> <translation id="7287143125007575591">Кіруге тыйым салынған.</translation> <translation id="7287411021188441799">Әдепкі фонды қалпына келтіру</translation> @@ -5834,6 +5837,7 @@ <translation id="7716781361494605745">Netscape сертификат беру органы саясатының URL мекенжайы</translation> <translation id="7717014941119698257">Жүктеу: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Сайттар геодерегіңізді сұрай алады (ұсынылады).</translation> +<translation id="771721654176725387">Мұның нәтижесінде осы құрылғыдағы браузерді пайдалану деректеріңіз біржола жойылады. Деректерді қалпына келтіру үшін келесі синхрондау қызметін қосыңыз:</translation> <translation id="7717845620320228976">Жаңартылған нұсқалардың бар-жоғын тексеру</translation> <translation id="7719367874908701697">Бетті масштабтау</translation> <translation id="7719588063158526969">Құрылғының аты тым ұзын.</translation> @@ -5870,6 +5874,7 @@ <translation id="7765158879357617694">Жылжыту</translation> <translation id="7765507180157272835">Bluetooth және Wi-Fi қажет.</translation> <translation id="7766082757934713382">Автоматты қолданбаны және жүйелік жаңартуларды кідірту арқылы желінің дерек трафигін азайтуға көмектеседі.</translation> +<translation id="7766807826975222231">Тур жасаңыз</translation> <translation id="7766838926148951335">Рұқсаттарды қабылдау</translation> <translation id="7768507955883790804">Сайттарға кірген кезде олар автоматты түрде осы параметрге қойылады.</translation> <translation id="7768770796815395237">Өзгерту</translation> @@ -6113,6 +6118,7 @@ <translation id="8016266267177410919">Уақытша жад</translation> <translation id="8017176852978888182">Linux ортақ каталогтері</translation> <translation id="8017679124341497925">Таңбаша өзгерді</translation> +<translation id="8018298733481692628">Бұл профиль жойылсын ба?</translation> <translation id="8018313076035239964">Вебсайттар қандай ақпаратты пайдалана алатынын және сізге қандай мазмұн көрсете алатынын басқару</translation> <translation id="8023801379949507775">Кеңейтімдерді қазір жаңарту</translation> <translation id="8026334261755873520">Шолу деректерін өшіру</translation> @@ -6283,7 +6289,6 @@ <translation id="8211551284753798479">PUK коды жарамсыз. <ph name="RETRIES" /> әрекет қалды.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Файл жүктеп алынуда}other{Файлдар жүктеп алынуда}}</translation> <translation id="8213449224684199188">Фото режимі қосылды</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> жоғары сапалы әрі қорғалған бейне мен аудио мазмұнды ойнату үшін құрылғыңызды анықтауды қажет етеді.</translation> <translation id="8214489666383623925">Файлды ашу…</translation> <translation id="8214962590150211830">Бұл тұлғаны өшіру</translation> <translation id="8216351761227087153">Қарау</translation> @@ -6762,7 +6767,6 @@ <translation id="8774379074441005279">Қалпына келтіруді растау</translation> <translation id="8774934320277480003">Жоғарғы шек</translation> <translation id="8775144690796719618">Жарамсыз URL</translation> -<translation id="8775163630211761057">Android телефоныңыздың барлық мүмкіндіктерін <ph name="DEVICE_TYPE" /> құрылғысында арттырыңыз.</translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> құрылғыңыз # секундтан кейін автоматты түрде құлыпталады. <ph name="DOMAIN" /> домені смарт картаңызды салып жүруіңізді талап етеді.}other{<ph name="DEVICE_TYPE" /> құрылғыңыз # секундтан кейін автоматты түрде құлыпталады. <ph name="DOMAIN" /> домені смарт картаңызды салып жүруіңізді талап етеді.}}</translation> @@ -6951,6 +6955,7 @@ <translation id="8973596347849323817">Бұл құрылғыны қажеттіліктерге сай реттей аласыз. Бұл арнайы мүмкіндіктерді кейінірек "Параметрлер" тармағында өзгертуге болады.</translation> <translation id="897414447285476047">Байланыстағы ақауға қарай мақсатты файл аяқталмады.</translation> <translation id="897525204902889653">Карантин қызметі</translation> +<translation id="8975396729541388937">Электрондық хаттардағы жазылымнан бас тарту сілтемесін басып, жазылымды кез келген уақытта тоқтатыңыз.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" және тағы 1 қойынды}other{"<ph name="TAB_TITLE" />" және тағы # қойынды}}</translation> <translation id="8977811652087512276">Құпия сөз дұрыс емес немесе файл бүлінген</translation> <translation id="8978154919215542464">Қосулы – барлығын синхрондау</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb index 1f8a21c..0ef2475 100644 --- a/chrome/app/resources/generated_resources_km.xtb +++ b/chrome/app/resources/generated_resources_km.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{គ្មានពាក្យសម្ងាត់ដែលរងការលុកលុយទេ}=1{ពាក្យសម្ងាត់ដែលរងការលុកលុយ 1}other{ពាក្យសម្ងាត់ដែលរងការលុកលុយ {NUM_COMPROMISED}}}</translation> <translation id="1380028686461971526">ភ្ជាប់បណ្ដាញដោយស្វ័យប្រវត្តិ</translation> <translation id="1380436189840894976">នៅតែចង់ចាកចេញពីមុខងារឯកជនឬ?</translation> +<translation id="1383597849754832576">មិនអាចទាញយកឯកសារនិយាយបានទេ។ សូមព្យាយាមម្តងទៀតនៅពេលក្រោយ។</translation> <translation id="1383861834909034572">បើកនៅពេលបញ្ចប់</translation> <translation id="1383876407941801731">ស្វែងរក</translation> <translation id="1386791642444521222">បើកដំណើរការស៊ីមកាត</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">មានបញ្ហាក្នុងការភ្ជាប់ការចែករំលែក។ សូមពិនិត្យមើលព័ត៌មានផ្ទៀងផ្ទាត់របស់អ្នក រួចព្យាយាមម្ដងទៀត។</translation> <translation id="1956050014111002555">ឯកសារបានផ្ទុកវិញ្ញាបនប័ត្រច្រើន តែគ្មានមួយណាត្រូវបាននាំចូលទេ៖</translation> <translation id="1956390763342388273">ឯកសារទាំងអស់នឹងត្រូវបានបង្ហោះពី "<ph name="FOLDER_PATH" />"។ សូមធ្វើដូច្នេះ ប្រសិនបើអ្នកពិតជាទុកចិត្តទំព័រនេះ។</translation> -<translation id="1960158217849594135">រក្សាទុកឈ្មោះអ្នកប្រើប្រាស់ទៅក្នុងគណនី Google របស់អ្នកឬ?</translation> <translation id="196040970347962278">បង្កើតការតភ្ជាប់អ៊ីនធឺណិតជាមុនសិន</translation> <translation id="1962233722219655970">ទំព័រនេះប្រើកម្មវិធី អតិថិជនដើម ដែលមិនដំណើរការនៅលើកុំព្យូទ័ររបស់អ្នកទេ។</translation> <translation id="1963227389609234879">លុបទាំងអស់</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">គ្មានការការពារ (មិនណែនាំ)</translation> <translation id="1987317783729300807">គណនី</translation> <translation id="1989112275319619282">រុករក</translation> +<translation id="1990046457226896323">បានទាញយកឯកសារនិយាយ</translation> <translation id="1990512225220753005">កុំបង្ហាញផ្លូវកាត់នៅលើទំព័រនេះ</translation> <translation id="1992397118740194946">មិនបានកំណត់</translation> <translation id="1992924914582925289">លុបចេញពីឧបករណ៍</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">ដើម្បីទទួលបានមុខងារបន្ថែម សូមប្រើឧបករណ៍ភ្ជាប់ Dell ដែលរចនាឡើងសម្រាប់ដំណើរការជាមួយ Chromebook នេះ។</translation> <translation id="215753907730220065">ចាកចេញពីអេក្រង់ពេញ</translation> <translation id="2157875535253991059">ឥឡូវនេះទំព័រនេះពេញអេក្រង់ហើយ។</translation> -<translation id="2160589599612868242">ទទួលបានការជូនដំណឹងពីទូរសព្ទរបស់អ្នកនៅលើ <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">បន្ថែម Wi-Fi...</translation> <translation id="2162155940152307086">ការធ្វើសមកាលកម្មនឹងចាប់ផ្ដើម បន្ទាប់ពីអ្នកចាកចេញពីការកំណត់ការធ្វើសមកាលកម្ម</translation> <translation id="2162838847352058695">ទប់ស្កាត់គេហទំព័រមិនឱ្យទាញយកឯកសារច្រើនដោយស្វ័យប្រវត្តិ</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">បានបើកការជូនដំណឹង</translation> <translation id="2399939490305346086">ទិន្នន័យចូលគណនីរបស់សោសុវត្ថិភាព</translation> <translation id="2400664245143453337">តម្រូវឱ្យមានការដំឡើងកំណែភ្លាមៗ</translation> +<translation id="2406153734066939945">លុបកម្រងព័ត៌មាននេះ និងទិន្នន័យរបស់វាឬ?</translation> <translation id="2408018932941436077">កំពុងរក្សាទុកបណ្ណ</translation> <translation id="2408955596600435184">បញ្ចូលកូដ PIN របស់អ្នក</translation> <translation id="241082044617551207">កម្មវិធីជំនួយដែលមិនស្គាល់</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">ដេស៍ថប</translation> <translation id="2526619973349913024">រកមើលកំណែថ្មី</translation> <translation id="2527167509808613699">ប្រភេទនៃការភ្ជាប់ណាមួយ</translation> +<translation id="2530166226437958497">ការដោះស្រាយបញ្ហា</translation> <translation id="2532589005999780174">របៀបភាពដិតកម្រិតខ្ពស់</translation> <translation id="253434972992662860">ផ្អាក</translation> <translation id="2534460670861217804">ប្រូកស៊ី HTTP សុវត្ថិភាព</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">មានបញ្ហាកើតឡើង នៅពេលឌិកូដការឆ្លើយតបរបស់ម៉ាស៊ីនមេ។</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">បើកតំណជាមួយ...</translation> -<translation id="2889481634493693121">បើកការជូនដំណឹងនៅលើទូរសព្ទរបស់អ្នក</translation> <translation id="2889925978073739256">បន្តរារាំងកម្មវិធីជំនួយដែលមិនបានសេនបក់</translation> <translation id="2893168226686371498">កម្មវិធីរុករកលំនាំដើម</translation> <translation id="2893917546370257247">{COUNT,plural, =1{សារជាអក្សរ 1}other{សារជាអក្សរ #}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">លើកឡើង បន្ទាប់មកប៉ះម្តងទៀត</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />៖ សមកាលកម្មបានផ្អាក</translation> <translation id="3861638017150647085">មិនមានឈ្មោះអ្នកប្រើប្រាស់ "<ph name="USERNAME" />" ទេ</translation> +<translation id="3861977424605124250">បង្ហាញនៅពេលចាប់ផ្ដើម</translation> <translation id="3862693525629180217">ផ្ទៀងផ្ទាត់តាមរយៈឧបករណ៍ចាប់សញ្ញាដែលភ្ជាប់មកជាមួយ</translation> <translation id="3862788408946266506">កម្មវិធីដែលមានលក្ខណៈមេនីហ្វេសថ៍ 'kiosk_only' ត្រូវបានដំឡើងជាមុខងារបញ្ជរ Chrome OS</translation> <translation id="3865414814144988605">គុណភាពបង្ហាញ</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">សរសៃអំបោះស្ពេនឌិក</translation> <translation id="4130199216115862831">កំណត់ហេតុឧបករណ៍</translation> <translation id="4130207949184424187">កម្មវិធីបន្ថែមនេះបានប្តូរអ្វីដែលទំព័របានបង្ហាញ នៅពេលអ្នកស្វែងរកពីប្រអប់អូមនី។</translation> -<translation id="4130344535649650885">រក្សាទុកពាក្យសម្ងាត់ទៅក្នុងគណនី Google របស់អ្នកឬ?</translation> <translation id="4130750466177569591">ខ្ញុំយល់ព្រម</translation> <translation id="413121957363593859">សមាសភាគ</translation> <translation id="4131410914670010031">ពណ៌ខ្មៅ និងស</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">បន្តពីឧបករណ៍ផ្សេងទៀត</translation> <translation id="4628757576491864469">ឧបករណ៍</translation> <translation id="4628762811416793313">ការរៀបចំទម្រង់ផ្ទុក Linux មិនបានបញ្ចប់ទេ។ សូមព្យាយាមម្ដងទៀត។</translation> +<translation id="4629521233550547305">បើកកម្រងព័ត៌មាន <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">កម្មវិធីបន្ថែមតម្រូវឱ្យមាន "<ph name="IMPORT_NAME" />" ដែលមានកំណែទាបបំផុត "<ph name="IMPORT_VERSION" />" ប៉ុន្តែមានតែកំណែ "<ph name="INSTALLED_VERSION" />" ប៉ុណ្ណោះដែលត្រូវបានដំឡើង</translation> <translation id="4633757335284074492">បម្រុងទុកទៅក្នុង Google ថាស។ ងាយស្រួលក្នុងការស្ដារទិន្នន័យ ឬប្ដូរឧបករណ៍បានគ្រប់ពេល។ ការបម្រុងទុកនេះរួមបញ្ចូលទាំងទិន្នន័យកម្មវិធី។ ការបម្រុងទុកត្រូវបានបង្ហោះទៅ Google និងអ៊ីនគ្រីបដោយប្រើពាក្យសម្ងាត់គណនី Google របស់កូនអ្នក។</translation> <translation id="4634575639321169635">រៀបចំឧបករណ៍នេះសម្រាប់ការប្រើប្រាស់ផ្ទាល់ខ្លួន ឬការងារ</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{មិនអាចទទួល <ph name="ATTACHMENTS" /> ពី <ph name="DEVICE_NAME" /> បានទេ}other{មិនអាចទទួល <ph name="ATTACHMENTS" /> ពី <ph name="DEVICE_NAME" /> បានទេ}}</translation> <translation id="5502500733115278303">បាននាំចូលពី Firefox</translation> <translation id="5502915260472117187">កុមារ</translation> -<translation id="5503858713116291452">សូមប្រាកដថា ទូរសព្ទរបស់អ្នកនៅជិត បានដោះសោ និងបានបើកប៊្លូធូស និង Wi-Fi។ អនុវត្តតាមជំហាននៅលើទូរសព្ទរបស់អ្នក ដើម្បីបញ្ចប់ការរៀបចំ។</translation> <translation id="5503982651688210506">បន្តអនុញ្ញាត <ph name="HOST" /> ឱ្យប្រើ និងផ្លាស់ទីកាមេរ៉ារបស់អ្នក និងប្រើមីក្រូហ្វូនរបស់អ្នក</translation> <translation id="5505264765875738116">គេហទំព័រមិនអាចស្នើសុំការអនុញ្ញាតដើម្បីផ្ញើការជូនដំណឹងបានទេ</translation> <translation id="5505307013568720083">អស់ទឹកថ្នាំ</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">សកម្ម</translation> <translation id="5567989639534621706">ឃ្លាំងសម្ងាត់កម្មវិធី</translation> <translation id="5568069709869097550">មិនអាចចូលបានទេ</translation> +<translation id="5571832155627049070">ប្ដូរកម្រងព័ត៌មានរបស់អ្នកតាមបំណង</translation> <translation id="5572851009514199876">សូមចាប់ផ្តើម ហើយបញ្ចូលគណនីទៅក្នុង Chrome នោះ Chrome នឹងអាចពិនិត្យថាតើអ្នកអាចចូលប្រើទំព័រនេះបានដែរឬទេ។</translation> <translation id="5575473780076478375">កម្មវិធីបន្ថែមអនាមិក៖ <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">សំណើចុះឈ្មោះសាកល្បងមានបញ្ហា។</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">ការកំណត់សំឡេងអត្ថបទទៅជាការនិយាយ</translation> <translation id="7280877790564589615">ការអនុញ្ញាតត្រូវបានស្នើ</translation> <translation id="7282992757463864530">របារព័ត៌មាន</translation> +<translation id="7283555985781738399">មុខងារភ្ញៀវ</translation> <translation id="7284411326658527427">មនុស្សម្នាក់ៗអាចកំណត់គណនីរបស់គេជាលក្ខណៈផ្ទាល់ខ្លួន និងរក្សាទិន្នន័យជាលក្ខណៈឯកជន។</translation> <translation id="7287143125007575591">បានបដិសេធការចូលប្រើ។</translation> <translation id="7287411021188441799">ស្ដារផ្ទៃខាងក្រោយលំនាំដើម</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">URL គោលការណ៍អាជ្ញាធរវិញ្ញាបនប័ត្រ Netscape</translation> <translation id="7717014941119698257">កំពុងទាញយក៖ <ph name="STATUS" /></translation> <translation id="7717134585801378441">គេហទំព័រអាចស្នើសុំប្រើទីតាំងរបស់អ្នក (បានណែនាំ)</translation> +<translation id="771721654176725387">ការលុបនេះនឹងលុបទិន្នន័យរុករករបស់អ្នកចេញពីឧបករណ៍នេះជាអចិន្ត្រៃយ៍។ ដើម្បីស្ដារទិន្នន័យ សូមបើកសមកាលកម្មជា</translation> <translation id="7717845620320228976">ពិនិត្យមើលការអាប់ដេត</translation> <translation id="7719367874908701697">ពង្រីកទំព័រ</translation> <translation id="7719588063158526969">ឈ្មោះឧបករណ៍វែងពេក</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">ផ្លាស់ទី</translation> <translation id="7765507180157272835">ត្រូវការប៊្លូធូស និង Wi-Fi</translation> <translation id="7766082757934713382">ជួយកាត់បន្ថយការប្រើប្រាស់ទិន្នន័យបណ្ដាញដោយផ្អាកការធ្វើបច្ចុប្បន្នភាពប្រព័ន្ធ និងកម្មវិធីដោយស្វ័យប្រវត្តិ</translation> +<translation id="7766807826975222231">ចូលទស្សនាស្វែងយល់</translation> <translation id="7766838926148951335">ទទួលយកការអនុញ្ញាត</translation> <translation id="7768507955883790804">គេហទំព័រប្រើការកំណត់នេះដោយស្វ័យប្រវត្តិ នៅពេលអ្នកចូលគេហទំព័រទាំងនោះ</translation> <translation id="7768770796815395237">ប្ដូរ</translation> @@ -6117,6 +6122,7 @@ <translation id="8016266267177410919">ទំហំផ្ទុកបណ្តោះអាសន្ន</translation> <translation id="8017176852978888182">បញ្ជីដែល Linux បានចែករំលែក</translation> <translation id="8017679124341497925">បានកែសម្រួលផ្លូវកាត់</translation> +<translation id="8018298733481692628">លុបកម្រងព័ត៌មាននេះឬ?</translation> <translation id="8018313076035239964">គ្រប់គ្រងព័ត៌មាន និងមាតិកាអ្វីខ្លះ ដែលគេហទំព័រអាចប្រើប្រាស់ និងបង្ហាញដល់អ្នក</translation> <translation id="8023801379949507775">ធ្វើបច្ចុប្បន្នភាពកម្មវិធីបន្ថែមឥឡូវនេះ</translation> <translation id="8026334261755873520">ជម្រះទិន្នន័យរុករក</translation> @@ -6287,7 +6293,6 @@ <translation id="8211551284753798479">PUK មិនត្រឹមត្រូវទេ។ អ្នកអាចព្យាយាមបាន <ph name="RETRIES" /> ដងទៀត។</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ការទាញយកកំពុងដំណើរការ}other{ការទាញយកកំពុងដំណើរការ}}</translation> <translation id="8213449224684199188">បានចូលមុខងាររូបថត</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> ចង់កំណត់អត្តសញ្ញាណឧបករណ៍របស់អ្នក ដើម្បីឱ្យវាអាចចាក់វីដេអូ និងសំឡេងគុណភាពខ្ពស់បំផុតដែលបានការពារ។</translation> <translation id="8214489666383623925">បើកឯកសារ...</translation> <translation id="8214962590150211830">ដកបុគ្គលនេះចេញ</translation> <translation id="8216351761227087153">មើល</translation> @@ -6766,7 +6771,6 @@ <translation id="8774379074441005279">បញ្ជាក់ការស្ដារ</translation> <translation id="8774934320277480003">ចន្លោះគែមខាងលើ</translation> <translation id="8775144690796719618">URL មិនត្រឹមត្រូវ</translation> -<translation id="8775163630211761057">បន្ថែមអត្ថប្រយោជន៍ច្រើនបំផុតពីទូរសព្ទ Android របស់អ្នកទៅ <ph name="DEVICE_TYPE" /> របស់អ្នក</translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> របស់អ្នកនឹងត្រូវបានចាក់សោដោយស្វ័យប្រវត្តិក្នុងរយៈពេល # វិនាទីទៀត។ <ph name="DOMAIN" /> តម្រូវឱ្យអ្នកបន្តដោតកាតឆ្លាតវៃរបស់អ្នក។}other{<ph name="DEVICE_TYPE" /> របស់អ្នកនឹងត្រូវបានចាក់សោដោយស្វ័យប្រវត្តិក្នុងរយៈពេល # វិនាទីទៀត។ <ph name="DOMAIN" /> តម្រូវឱ្យអ្នកបន្តដោតកាតឆ្លាតវៃរបស់អ្នក។}}</translation> @@ -6955,6 +6959,7 @@ <translation id="8973596347849323817">អ្នកអាចកែសម្រួលឧបករណ៍នេះឲ្យស្របតាមតម្រូវការរបស់អ្នក។ មុខងារភាពងាយស្រួលទាំងនេះអាចផ្លាស់ប្តូរបាននៅពេលក្រោយក្នុងការកំណត់។</translation> <translation id="897414447285476047">ឯកសារគោលដៅមិនពេញលេញទេ ដោយសារមានបញ្ហាការតភ្ជាប់។</translation> <translation id="897525204902889653">សេវាកម្មចត្តាឡីស័ក</translation> +<translation id="8975396729541388937">ឈប់ជាវបានគ្រប់ពេល ដោយចុចតំណនៅក្នុងអ៊ីមែលដែលអ្នកទទួលបាន។</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" និងផ្ទាំង 1 ទៀត}other{"<ph name="TAB_TITLE" />" និងផ្ទាំង # ទៀត}}</translation> <translation id="8977811652087512276">ពាក្យសម្ងាត់មិនត្រឹមត្រូវ ឬឯកសារខូច</translation> <translation id="8978154919215542464">បើក - ធ្វើសមកាលកម្មទាំងអស់</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index cbb325c..f2e08ca 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -878,7 +878,6 @@ <translation id="1954813140452229842">ಹಂಚಿಕೆಯನ್ನು ಅಳವಡಿಸುವುದರಲ್ಲಿ ದೋಷವಿದೆ. ನಿಮ್ಮ ರುಜುವಾತುಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="1956050014111002555">ಫೈಲ್ ಬಹು ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಅವುಗಳಲ್ಲಿ ಯಾವುದನ್ನೂ ಆಮದು ಮಾಡಿಕೊಳ್ಳಲಾಗಿಲ್ಲ: </translation> <translation id="1956390763342388273">ಇದು "<ph name="FOLDER_PATH" />" ನಿಂದ ಎಲ್ಲ ಫೈಲ್ಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡುತ್ತದೆ. ಸೈಟ್ ಕುರಿತು ನಿಮಗೆ ನಂಬಿಕೆಯಿದ್ದರೆ ಮಾತ್ರ ಇದನ್ನು ಮಾಡಿ.</translation> -<translation id="1960158217849594135">ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಬಳಕೆದಾರರ ಹೆಸರನ್ನು ಉಳಿಸಬೇಕೆ?</translation> <translation id="196040970347962278">ಮೊದಲು ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಿ</translation> <translation id="1962233722219655970">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರುವಂತಹ ಸ್ಥಳೀಯ ಕ್ಲೈಂಟ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಈ ಪುಟವು ಬಳಸುತ್ತದೆ.</translation> <translation id="1963227389609234879">ಎಲ್ಲವನ್ನೂ ತೆಗೆದುಹಾಕಿ</translation> @@ -1049,7 +1048,6 @@ <translation id="2157474325782140681">ಹೆಚ್ಚುವರಿ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪಡೆಯಲು, ಈ Chromebook ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ Dell ಡಾಕಿಂಗ್ ಸ್ಟೇಷನ್ ಒಂದನ್ನು ಬಳಸಿ.</translation> <translation id="215753907730220065">ಪೂರ್ಣಪರದೆಯಿಂದ ನಿರ್ಗಮಿಸಿ</translation> <translation id="2157875535253991059">ಈ ಪುಟವು ಇದೀಗ ಪೂರ್ಣ ಪರದೆಯಾಗಿದೆ.</translation> -<translation id="2160589599612868242">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ ನಿಮ್ಮ ಫೋನ್ನಿಂದ ಅಧಿಸೂಚನೆಗಳನ್ನು ಪಡೆಯಿರಿ</translation> <translation id="216169395504480358">ವೈ-ಫೈ ಸೇರಿಸಿ...</translation> <translation id="2162155940152307086">ಸಿಂಕ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನೀವು ತೊರೆದ ನಂತರ ಸಿಂಕ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ</translation> <translation id="2162838847352058695">ಬಹು ಫೈಲ್ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೌನ್ಲೋಡ್ ಮಾಡುವ ಸೈಟ್ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ</translation> @@ -1701,7 +1699,6 @@ <translation id="2885729872133513017">ಸರ್ವರ್ನ ಉತ್ತರವನ್ನು ಡೀಕೋಡ್ ಮಾಡುವಾಗ ಸಮಸ್ಯೆ ಸಂಭವಿಸಿದೆ.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">ಇದರೊಂದಿಗೆ Open Link...</translation> -<translation id="2889481634493693121">ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿ ಅಧಿಸೂಚನೆಗಳನ್ನು ಆನ್ ಮಾಡಿ</translation> <translation id="2889925978073739256">ಸ್ಯಾಂಡ್ಬಾಕ್ಸ್ ರದ್ದುಗೊಳಿಸಲಾಗಿರುವ ಪ್ಲಗ್-ಇನ್ಗಳ ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ಮುಂದುವರಿಸಿ</translation> <translation id="2893168226686371498">ಡಿಫಾಲ್ಟ್ ಬ್ರೌಸರ್</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 ಪಠ್ಯ}one{# ಪಠ್ಯಗಳು}other{# ಪಠ್ಯಗಳು}}</translation> @@ -2803,7 +2800,6 @@ <translation id="412730574613779332">ಸ್ಪ್ಯಾಂಡೆಕ್ಸ್</translation> <translation id="4130199216115862831">ಸಾಧನದ ಲಾಗ್</translation> <translation id="4130207949184424187">ಆಮ್ನಿಬಾಕ್ಸ್ನಿಂದ ನೀವು ಹುಡುಕಿದಾಗ ತೋರಿಸಬೇಕಾದ ಪುಟವನ್ನು ಈ ವಿಸ್ತರಣೆಯು ಬದಲಾಯಿಸಿದೆ.</translation> -<translation id="4130344535649650885">ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಉಳಿಸಬೇಕೆ?</translation> <translation id="4130750466177569591">ನಾನು ಒಪ್ಪುತ್ತೇನೆ</translation> <translation id="413121957363593859">ಘಟಕಾಂಶಗಳು</translation> <translation id="4131410914670010031">ಕಪ್ಪು ಮತ್ತು ಬಿಳುಪು</translation> @@ -3931,7 +3927,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="ATTACHMENTS" /> ಗಳನ್ನು <ph name="DEVICE_NAME" /> ನಿಂದ ಸ್ವೀಕರಿಸಲು ವಿಫಲವಾಗಿದೆ}one{<ph name="ATTACHMENTS" /> ಗಳನ್ನು <ph name="DEVICE_NAME" /> ನಿಂದ ಸ್ವೀಕರಿಸಲು ವಿಫಲವಾಗಿದೆ}other{<ph name="ATTACHMENTS" /> ಗಳನ್ನು <ph name="DEVICE_NAME" /> ನಿಂದ ಸ್ವೀಕರಿಸಲು ವಿಫಲವಾಗಿದೆ}}</translation> <translation id="5502500733115278303">Firefox ಇಂದ ಆಮದು ಮಾಡಿಕೊಳ್ಳಲಾಗಿದೆ</translation> <translation id="5502915260472117187">ಮಗು</translation> -<translation id="5503858713116291452">ನಿಮ್ಮ ಫೋನ್ ಸಮೀಪದಲ್ಲಿದೆ, ಅನ್ಲಾಕ್ ಆಗಿದೆ ಮತ್ತು ಅದರಲ್ಲಿ ಬ್ಲೂಟೂತ್ ಹಾಗೂ ವೈ-ಫೈ ಆನ್ ಆಗಿದೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಸೆಟಪ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿ.</translation> <translation id="5503982651688210506">ನಿಮ್ಮ ಕ್ಯಾಮರಾವನ್ನು ಬಳಸಲು ಮತ್ತು ಸರಿಸಲು ಹಾಗೂ ನಿಮ್ಮ ಮೈಕ್ರೋಫೋನ್ ಅನ್ನು ಬಳಸಲು <ph name="HOST" /> ಗೆ ಅನುಮತಿಸುವುದನ್ನು ಮುಂದುವರಿಸಿ</translation> <translation id="5505264765875738116">ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಳುಹಿಸಬಹುದೇ ಎಂದು ಸೈಟ್ಗಳು ಕೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> <translation id="5505307013568720083">ಶಾಯಿ ಖಾಲಿಯಾಗಿದೆ</translation> @@ -3992,6 +3987,7 @@ <translation id="5565735124758917034">ಸಕ್ರಿಯ</translation> <translation id="5567989639534621706">ಅಪ್ಲಿಕೇಶನ್ ಸಂಗ್ರಹಗಳು</translation> <translation id="5568069709869097550">ಸೈನ್ ಇನ್ ಆಗಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation> +<translation id="5571832155627049070">ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ</translation> <translation id="5572851009514199876">ದಯವಿಟ್ಟು Chrome ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಸೈನ್ ಇನ್ ಮಾಡಿ ಈ ಮೂಲಕ ಈ ಸೈಟ್ಗೆ ಪ್ರವೇಶಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸಲಾಗಿದೆಯೇ ಎಂಬುದನ್ನು Chrome ಪರಿಶೀಲಿಸಬಹುದು.</translation> <translation id="5575473780076478375">ಅದೃಶ್ಯ ವಿಸ್ತರಣೆ: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">ಡೆಮೊ ನೋಂದಣಿ ಕೋರಿಕೆಯಲ್ಲಿ ಸಮಸ್ಯೆ ಸಂಭವಿಸಿದೆ.</translation> @@ -5878,6 +5874,7 @@ <translation id="7765158879357617694">ಸರಿಸು</translation> <translation id="7765507180157272835">ಬ್ಲೂಟೂತ್ ಮತ್ತು ವೈ-ಫೈ ಬೇಕಾಗುತ್ತದೆ</translation> <translation id="7766082757934713382">ಸ್ವಯಂಚಾಲಿತ ಆ್ಯಪ್ ಮತ್ತು ಸಿಸ್ಟಮ್ ಅಪ್ಡೇಟ್ಗಳನ್ನು ವಿರಾಮಗೊಳಿಸುವ ಮೂಲಕ ನೆಟ್ವರ್ಕ್ ಡೇಟಾ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ</translation> +<translation id="7766807826975222231">ಪ್ರವಾಸವನ್ನು ಕೈಗೊಳ್ಳಿ</translation> <translation id="7766838926148951335">ಅನುಮತಿಗಳನ್ನು ಸಮ್ಮತಿಸಿ</translation> <translation id="7768507955883790804">ನೀವು ಸೈಟ್ಗಳಿಗೆ ಭೇಟಿ ನೀಡಿದಾಗ, ಅವು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಅನುಸರಿಸುತ್ತವೆ</translation> <translation id="7768770796815395237">ಬದಲಿಸಿ</translation> @@ -6288,7 +6285,6 @@ <translation id="8211551284753798479">ಅಮಾನ್ಯ PUK. ನೀವು <ph name="RETRIES" /> ಬಾಕಿ ಉಳಿದಿರುವ ಪ್ರಯತ್ನಗಳನ್ನು ಹೊಂದಿರುವಿರಿ.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ಡೌನ್ಲೋಡ್ ಪ್ರಗತಿಯಲ್ಲಿದೆ}one{ಡೌನ್ಲೋಡ್ಗಳು ಪ್ರಗತಿಯಲ್ಲಿವೆ}other{ಡೌನ್ಲೋಡ್ಗಳು ಪ್ರಗತಿಯಲ್ಲಿವೆ}}</translation> <translation id="8213449224684199188">ಫೋಟೋ ಮೋಡ್ ನಮೂದಿಸಲಾಗಿದೆ</translation> -<translation id="8213866992824776555">ನಿಮ್ಮ ಸಾಧನವನ್ನು ಗುರುತಿಸಬೇಕೆಂದು <ph name="DOMAIN" /> ಬಯಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಇದು ಅತ್ಯುತ್ತಮ ಗುಣಮಟ್ಟದ ಸುರಕ್ಷಿತಗೊಳಿಸಿದ ವೀಡಿಯೊ ಮತ್ತು ಆಡಿಯೋವನ್ನು ಪ್ಲೇ ಮಾಡಬಹುದು.</translation> <translation id="8214489666383623925">ಫೈಲ್ ತೆರೆಯಿರಿ...</translation> <translation id="8214962590150211830">ಈ ವ್ಯಕ್ತಿಯನ್ನು ತೆಗೆದುಹಾಕು</translation> <translation id="8216351761227087153">ವೀಕ್ಷಿಸಿ</translation> @@ -6767,7 +6763,6 @@ <translation id="8774379074441005279">ಮರುಸ್ಥಾಪನೆಯನ್ನು ದೃಢೀಕರಿಸಿ</translation> <translation id="8774934320277480003">ಮೇಲಿನ ಅಂಚು</translation> <translation id="8775144690796719618">ಅಮಾನ್ಯ URL</translation> -<translation id="8775163630211761057">ನಿಮ್ಮ Android ಫೋನ್ನಲ್ಲಿ ಉತ್ತಮವಾದದ್ದನ್ನು ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ ವಿಸ್ತರಿಸಿ</translation> <translation id="8775653927968399786">{0,plural, =1{ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> # ಸೆಕೆಂಡಿನಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲಾಕ್ ಆಗುತ್ತದೆ. <ph name="DOMAIN" />, ನಿಮ್ಮ ಸ್ಮಾರ್ಟ್ ಕಾರ್ಡ್ ಅನ್ನು ಸೇರಿಸಬೇಕೆಂದು ಬಯಸುತ್ತದೆ.}one{ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> # ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲಾಕ್ ಆಗುತ್ತದೆ. <ph name="DOMAIN" />, ನಿಮ್ಮ ಸ್ಮಾರ್ಟ್ ಕಾರ್ಡ್ ಅನ್ನು ಸೇರಿಸಬೇಕೆಂದು ಬಯಸುತ್ತದೆ.}other{ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> # ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲಾಕ್ ಆಗುತ್ತದೆ.
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index ecaf5a7..f828ba98 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -332,12 +332,13 @@ <translation id="1374844444528092021">네트워크 '<ph name="NETWORK_NAME" />'에 필요한 인증서가 설치되지 않았거나 더 이상 유효하지 않습니다. 새로운 인증서를 받아 다시 연결하세요.</translation> <translation id="1375321115329958930">저장된 비밀번호</translation> <translation id="137651782282853227">저장한 주소가 여기 표시됩니다.</translation> -<translation id="1376771218494401509">창 이름 지정(&W)...</translation> +<translation id="1376771218494401509">창 이름 지정...</translation> <translation id="1377600615067678409">건너뛰기</translation> <translation id="1378613616312864539"><ph name="NAME" />이(가) 이 설정을 제어함</translation> <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{유출된 비밀번호 없음}=1{유출된 비밀번호 1개}other{유출된 비밀번호 {NUM_COMPROMISED}개}}</translation> <translation id="1380028686461971526">네트워크 자동 연결</translation> <translation id="1380436189840894976">시크릿 모드를 종료하시겠습니까?</translation> +<translation id="1383597849754832576">음성 파일을 다운로드할 수 없습니다. 나중에 다시 시도해 보세요.</translation> <translation id="1383861834909034572">완료되면 열기</translation> <translation id="1383876407941801731">검색</translation> <translation id="1386791642444521222">실제 SIM 활성화</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">공유를 마운트하는 중에 오류가 발생했습니다. 사용자 인증 정보를 확인한 후 다시 시도해 주세요.</translation> <translation id="1956050014111002555">파일에 여러 인증서가 있지만 가져올 수 있는 인증서가 없습니다.</translation> <translation id="1956390763342388273">'<ph name="FOLDER_PATH" />'의 모든 파일이 업로드됩니다. 사이트를 신뢰할 수 있을 때만 실행하세요.</translation> -<translation id="1960158217849594135">Google 계정에 사용자 이름을 저장하시겠습니까?</translation> <translation id="196040970347962278">먼저 인터넷에 연결하세요.</translation> <translation id="1962233722219655970">이 페이지에서 사용자 컴퓨터에서 작동하지 않는 Native Client 앱을 사용합니다.</translation> <translation id="1963227389609234879">모두 삭제</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">보호되지 않음(권장되지 않음)</translation> <translation id="1987317783729300807">계정</translation> <translation id="1989112275319619282">찾아보기</translation> +<translation id="1990046457226896323">음성 파일 다운로드됨</translation> <translation id="1990512225220753005">이 페이지에 바로가기를 표시하지 않습니다.</translation> <translation id="1992397118740194946">설정 안됨</translation> <translation id="1992924914582925289">기기에서 삭제</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">추가 기능을 사용하려면 이 Chromebook과 호환되는 Dell 도킹 스테이션을 사용하세요.</translation> <translation id="215753907730220065">전체화면 종료</translation> <translation id="2157875535253991059">페이지가 현재 전체화면으로 전환되었습니다.</translation> -<translation id="2160589599612868242"><ph name="DEVICE_TYPE" />에서 휴대전화 알림을 받아 봅니다.</translation> <translation id="216169395504480358">Wi-Fi 추가</translation> <translation id="2162155940152307086">동기화 설정을 종료하면 동기화가 시작됩니다.</translation> <translation id="2162838847352058695">사이트에서 여러 파일을 자동으로 다운로드하지 못하도록 차단</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">알림 사용 설정됨</translation> <translation id="2399939490305346086">보안 키 로그인 데이터</translation> <translation id="2400664245143453337">즉시 업데이트 필요</translation> +<translation id="2406153734066939945">프로필과 데이터를 삭제하시겠습니까?</translation> <translation id="2408018932941436077">카드 저장 중</translation> <translation id="2408955596600435184">PIN 입력</translation> <translation id="241082044617551207">알 수 없는 플러그인</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">데스크톱</translation> <translation id="2526619973349913024">업데이트 상태 확인</translation> <translation id="2527167509808613699">모든 종류의 연결</translation> +<translation id="2530166226437958497">문제 해결</translation> <translation id="2532589005999780174">고대비 모드</translation> <translation id="253434972992662860">일시중지(&P)</translation> <translation id="2534460670861217804">보안 HTTP 프록시</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">서버 응답을 디코딩하는 동안 문제가 발생했습니다.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">다음으로 링크 열기...</translation> -<translation id="2889481634493693121">휴대전화에서 알림 사용 설정</translation> <translation id="2889925978073739256">샌드박스 처리되지 않은 플러그인 계속 차단</translation> <translation id="2893168226686371498">기본 브라우저</translation> <translation id="2893917546370257247">{COUNT,plural, =1{텍스트 1개}other{텍스트 #개}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">손가락을 뗀 후 다시 터치</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: 동기화 중지됨</translation> <translation id="3861638017150647085">사용자 이름 ‘<ph name="USERNAME" />’은(는) 사용할 수 없습니다.</translation> +<translation id="3861977424605124250">시작 시 표시</translation> <translation id="3862693525629180217">내장 센서를 통해 인증</translation> <translation id="3862788408946266506">'kiosk_only' 매니페스트 속성을 사용하는 앱은 Chrome OS 키오스크 모드에 설치해야 합니다</translation> <translation id="3865414814144988605">해상도</translation> @@ -2800,7 +2802,6 @@ <translation id="412730574613779332">스판덱스</translation> <translation id="4130199216115862831">기기 로그</translation> <translation id="4130207949184424187">검색주소창에서 검색하면 표시되는 페이지가 이 확장 프로그램으로 인해 변경되었습니다.</translation> -<translation id="4130344535649650885">Google 계정에 비밀번호를 저장하시겠습니까?</translation> <translation id="4130750466177569591">동의함</translation> <translation id="413121957363593859">컴포넌트</translation> <translation id="4131410914670010031">흑백</translation> @@ -3199,6 +3200,7 @@ <translation id="4627442949885028695">다른 기기에서 계속</translation> <translation id="4628757576491864469">기기</translation> <translation id="4628762811416793313">Linux 컨테이너 설정이 완료되지 않았습니다. 다시 시도해 주세요.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> 프로필 열기</translation> <translation id="4633003931260532286">확장 프로그램은 최소 버전 '<ph name="IMPORT_VERSION" />'의 '<ph name="IMPORT_NAME" />'을(를) 요구하지만 '<ph name="INSTALLED_VERSION" />' 버전만 설치되었습니다</translation> <translation id="4633757335284074492">Google 드라이브에 백업합니다. 언제든지 간편하게 데이터를 복원하거나 다른 기기로 전환할 수 있습니다. 앱 데이터도 백업에 포함됩니다. 백업 항목은 Google에 업로드되며 자녀의 Google 계정 비밀번호를 사용하여 암호화됩니다.</translation> <translation id="4634575639321169635">기기를 업무용 또는 개인용으로 설정합니다.</translation> @@ -3927,7 +3929,6 @@ <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="5503858713116291452">휴대전화가 근처에 있고, 잠금이 해제되어 있으며, 블루투스와 Wi-Fi가 켜져 있는지 확인하세요. 휴대전화에 표시된 단계에 따라 설정을 완료하세요.</translation> <translation id="5503982651688210506"><ph name="HOST" />의 카메라 사용 및 이동과 마이크 사용을 계속 허용</translation> <translation id="5505264765875738116">사이트에서 알림 전송 허용을 요청할 수 없음</translation> <translation id="5505307013568720083">잉크 부족</translation> @@ -3988,6 +3989,7 @@ <translation id="5565735124758917034">활성</translation> <translation id="5567989639534621706">애플리케이션 캐시</translation> <translation id="5568069709869097550">로그인할 수 없음</translation> +<translation id="5571832155627049070">프로필 맞춤설정</translation> <translation id="5572851009514199876">이 사이트에 액세스할 수 있는지 확인할 수 있도록 Chrome을 시작하고 로그인하세요.</translation> <translation id="5575473780076478375">시크릿 모드 확장 프로그램: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">데모 등록 요청에 문제가 발생했습니다.</translation> @@ -5457,6 +5459,7 @@ <translation id="7280649757394340890">TTS 음성 설정</translation> <translation id="7280877790564589615">권한 요청됨</translation> <translation id="7282992757463864530">정보 표시줄</translation> +<translation id="7283555985781738399">게스트 모드</translation> <translation id="7284411326658527427">모든 사용자는 자신의 계정을 맞춤설정하고 데이터를 비공개로 유지할 수 있습니다.</translation> <translation id="7287143125007575591">액세스가 거부되었습니다.</translation> <translation id="7287411021188441799">기본 배경 복원</translation> @@ -5836,6 +5839,7 @@ <translation id="7716781361494605745">Netscape 인증 기관 정책 URL</translation> <translation id="7717014941119698257">다운로드: <ph name="STATUS" /></translation> <translation id="7717134585801378441">사이트에서 위치를 요청할 수 있음(권장)</translation> +<translation id="771721654176725387">기기에서 인터넷 사용 기록이 완전히 삭제됩니다. 데이터를 복구하려면 다음 계정으로 동기화를 사용 설정하세요.</translation> <translation id="7717845620320228976">업데이트 확인</translation> <translation id="7719367874908701697">페이지 확대/축소</translation> <translation id="7719588063158526969">기기 이름이 너무 깁니다.</translation> @@ -5872,6 +5876,7 @@ <translation id="7765158879357617694">이동</translation> <translation id="7765507180157272835">블루투스 및 Wi-Fi 필요</translation> <translation id="7766082757934713382">자동 앱 및 시스템 업데이트를 일시중지하여 네트워크 데이터 사용량을 줄일 수 있습니다.</translation> +<translation id="7766807826975222231">둘러보기</translation> <translation id="7766838926148951335">권한 수락</translation> <translation id="7768507955883790804">사이트를 방문할 때 이 설정을 자동으로 따릅니다.</translation> <translation id="7768770796815395237">변경</translation> @@ -6116,6 +6121,7 @@ <translation id="8017176852978888182">Linux 공유 디렉터리</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">바로가기 수정됨</translation> +<translation id="8018298733481692628">프로필을 삭제하시겠습니까?</translation> <translation id="8018313076035239964">웹사이트에서 사용할 수 있는 정보와 나에게 표시할 수 있는 콘텐츠를 컨트롤합니다.</translation> <translation id="8023801379949507775">지금 확장 프로그램 업데이트</translation> <translation id="8026334261755873520">인터넷 사용 기록 삭제</translation> @@ -6286,7 +6292,6 @@ <translation id="8211551284753798479">잘못된 PUK입니다. 기회가 <ph name="RETRIES" />번 남았습니다.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{다운로드 진행 중}other{다운로드 진행 중}}</translation> <translation id="8213449224684199188">사진 모드 시작됨</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" />에서 보호되는 고품질 동영상 및 오디오를 재생할 수 있도록 기기를 확인하고자 합니다.</translation> <translation id="8214489666383623925">파일 열기...</translation> <translation id="8214962590150211830">이 사용자 삭제</translation> <translation id="8216351761227087153">보기</translation> @@ -6765,7 +6770,6 @@ <translation id="8774379074441005279">복원 확인</translation> <translation id="8774934320277480003">상단 여백</translation> <translation id="8775144690796719618">URL이 올바르지 않습니다.</translation> -<translation id="8775163630211761057">Android 휴대전화의 유용한 기능을 <ph name="DEVICE_TYPE" /> 기기로 확장합니다.</translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> 기기가 #초 후 자동으로 잠깁니다. <ph name="DOMAIN" />에서 스마트 카드를 삽입해 둔 상태로 둘 것을 요청합니다.}other{<ph name="DEVICE_TYPE" /> 기기가 #초 후 자동으로 잠깁니다. <ph name="DOMAIN" />에서 스마트 카드를 삽입해 둔 상태로 둘 것을 요청합니다.}}</translation> @@ -6954,6 +6958,7 @@ <translation id="8973596347849323817">필요에 따라 기기를 맞춤설정할 수 있습니다. 다음 접근성 기능은 나중에 설정에서 변경할 수 있습니다.</translation> <translation id="897414447285476047">연결 문제로 인해 대상 파일 다운로드를 완료하지 못했습니다.</translation> <translation id="897525204902889653">격리 서비스</translation> +<translation id="8975396729541388937">수신한 이메일의 링크를 클릭하여 언제든지 수신 거부할 수 있습니다.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{‘<ph name="TAB_TITLE" />’}=1{‘<ph name="TAB_TITLE" />’ 외 탭 1개}other{‘<ph name="TAB_TITLE" />’ 외 탭 #개}}</translation> <translation id="8977811652087512276">잘못된 비밀번호이거나 손상된 파일입니다.</translation> <translation id="8978154919215542464">사용 - 모든 항목 동기화</translation> @@ -7073,7 +7078,7 @@ <translation id="9102610709270966160">확장 프로그램 사용</translation> <translation id="9103479157856427471">키보드 포커스를 따라 확대된 화면 이동</translation> <translation id="9103868373786083162">돌아가려면 뒤로 버튼을 누르고, 방문 기록을 보려면 컨텍스트 메뉴 키를 누릅니다.</translation> -<translation id="9108035152087032312">창 이름 지정(&W)...</translation> +<translation id="9108035152087032312">창 이름 지정...</translation> <translation id="9108072915170399168">현재 데이터 사용 설정은 인터넷 사용 안함입니다</translation> <translation id="9108692355621501797"><ph name="LINK_BEGIN" />G Suite for Education 개인정보처리방침<ph name="LINK_END" />은 G Suite for Education 사용자와 부모가 제품에서 수집하는 데이터의 유형과 데이터를 수집하는 이유, 데이터의 용도를 이해할 수 있도록 돕기 위한 것입니다.</translation> <translation id="9108808586816295166">보안 DNS가 항상 제공되지는 않을 수도 있습니다.</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index ca7b6f5..1f1fd9e7 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Уурдалган сырсөздөр жок}=1{1 уурдалган сырсөз бар}other{{NUM_COMPROMISED} уурдалган сырсөз бар}}</translation> <translation id="1380028686461971526">Тармакка автоматтык түрдө туташуу</translation> <translation id="1380436189840894976">Жашыруун режимден баары бир чыгасызбы?</translation> +<translation id="1383597849754832576">Кеп файлдары жүктөлүп алынган жок. Кийинчерээк кайталаңыз.</translation> <translation id="1383861834909034572">Аяктаганда ачылат</translation> <translation id="1383876407941801731">Издөө</translation> <translation id="1386791642444521222">Кадимки SIM-картаны иштетүү</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Түзмөктү кошууда ката кетти. Эсептик дайын-даректериңизди текшерип, кайталап көрүңүз.</translation> <translation id="1956050014111002555">Файлда, бирөөсү да импорттолбогон, бир нече тастыктама бар:</translation> <translation id="1956390763342388273">Ушуну менен "<ph name="FOLDER_PATH" />" папкасындагы бардык файлдар сайтка жүктөлүп берилет. Сайт ишенимдүү болсо гана, бул аракетти аткарыңыз.</translation> -<translation id="1960158217849594135">Колдонуучунун аты Google аккаунтуңузда сакталсынбы?</translation> <translation id="196040970347962278">Адегенде Интернетке туташыңыз</translation> <translation id="1962233722219655970">Бул баракча компьютериңизде иштебей турган Native Client колдонмосун пайдаланат.</translation> <translation id="1963227389609234879">Баарын алып салуу</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Корголбойт (сунушталбайт)</translation> <translation id="1987317783729300807">Аккаунттар</translation> <translation id="1989112275319619282">Серептөө</translation> +<translation id="1990046457226896323">Кеп файлдары жүктөлүп алынды</translation> <translation id="1990512225220753005">Ыкчам баскычтар бул бетте көрүнбөсүн</translation> <translation id="1992397118740194946">Коюлган эмес</translation> <translation id="1992924914582925289">Түзмөктөн алып салуу</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Кошумча функцияларын колдонуу үчүн, ушул Chromebook менен иштөөгө арналган Dell док станциясын колдонуңуз.</translation> <translation id="215753907730220065">Толук экран режиминен чыгуу</translation> <translation id="2157875535253991059">Бул бет эми толук экранда.</translation> -<translation id="2160589599612868242">Телефонуңуздагы билдирмелерди <ph name="DEVICE_TYPE" /> түзмөгүңүзгө алыңыз</translation> <translation id="216169395504480358">Wi-Fi кошуу…</translation> <translation id="2162155940152307086">Шайкештирүү жөндөөлөрүнөн чыгарыңыз менен шайкештирүү башталат</translation> <translation id="2162838847352058695">Сайттардын бир нече файлды автоматтык түрдө жүктөп алуусуна тыюу салуу</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Билдирмелер күйгүзүлдү</translation> <translation id="2399939490305346086">Коопсуздук ачкычынын кирүү дайындары</translation> <translation id="2400664245143453337">Дароо жаңыртуу талап кылынат</translation> +<translation id="2406153734066939945">Бул профиль жана андагы маалымат жок кылынсынбы?</translation> <translation id="2408018932941436077">Карта сакталууда</translation> <translation id="2408955596600435184">PIN кодуңузду киргизиңиз</translation> <translation id="241082044617551207">Белгисиз плагин</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Иштакта</translation> <translation id="2526619973349913024">Жаңыртууларды издөө</translation> <translation id="2527167509808613699">Туташуунун бардык түрү</translation> +<translation id="2530166226437958497">Бузулууларды аныктап оңдоо</translation> <translation id="2532589005999780174">Жогорку контраст режими</translation> <translation id="253434972992662860">&Бир азга токтотуу</translation> <translation id="2534460670861217804">Коопсуз HTTP проксиси</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Сервердин жообунун шифрин чечмелеп жатканда ката кетти.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Шилтемени төмөнкү менен ачуу…</translation> -<translation id="2889481634493693121">Телефонуңузда билдирмелерди күйгүзүңүз</translation> <translation id="2889925978073739256">Сынамык чөйрөсүнөн тышкары плагиндер бөгөттөлө берсин</translation> <translation id="2893168226686371498">Демейки серепчи</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 билдирүү}other{# билдирүү}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Көтөрүп, кайра тийип коюңуз</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Шайкештирүү тындырылды</translation> <translation id="3861638017150647085">"<ph name="USERNAME" />" колдонуучунун аты жеткиликсиз</translation> +<translation id="3861977424605124250">Башында көрсөтүү</translation> <translation id="3862693525629180217">Орнотулган сенсор аркылуу ырастоо</translation> <translation id="3862788408946266506">"Толук экран_гана" манифест атрибуту камтылган колдонмо Chrome OS толук экран режиминде орнотулушу керек</translation> <translation id="3865414814144988605">Чечилиш</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Спандекс</translation> <translation id="4130199216115862831">Түзмөк таржымалы</translation> <translation id="4130207949184424187">Бул кеңейтүү, Omnibox'тон кандайдыр бир нерсе изделип жатканда, көрсөтүлө турган бетти өзгөрттү.</translation> -<translation id="4130344535649650885">Сырсөз Google аккаунтуңузда сакталсыныбы?</translation> <translation id="4130750466177569591">Макул</translation> <translation id="413121957363593859">Курамдык бөлүктөр</translation> <translation id="4131410914670010031">Ак-кара</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Башка түзмөктөн улантуу</translation> <translation id="4628757576491864469">Түзмөктөр</translation> <translation id="4628762811416793313">Linux контейнери аягына чейин жөндөлбөй калды. Кайталап көрүңүз.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> профилин ачуу</translation> <translation id="4633003931260532286">Кеңейтүүгө кеминде "<ph name="IMPORT_VERSION" />" версиясындагы "<ph name="IMPORT_NAME" />" талап кылынат, бирок учурда "<ph name="INSTALLED_VERSION" />" версиясы гана орнотулган.</translation> <translation id="4633757335284074492">Google Drive'га камдык көчүрмөлөрдү сактоо. Маалыматыңды (ошондой эле колдонмолордогу) оңой эле калыбына келтирип, бир түзмөктөн экинчисине өткөрө аласыз. Көчүрмөдө колдонмо тууралуу маалымат дагы сакталат. Камдык көчүрмөлөр Google'га жүктөлүп берилип, балаңыздын Google аккаунтунун сырсөзү менен шифрленет.</translation> <translation id="4634575639321169635">Бул түзмөктү жумуш же жеке колдонуу үчүн жөндөңүз</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="ATTACHMENTS" /> <ph name="DEVICE_NAME" /> түзмөгүнөн алынбай калды}other{<ph name="ATTACHMENTS" /> <ph name="DEVICE_NAME" /> түзмөгүнөн алынбай калды}}</translation> <translation id="5502500733115278303">Firefox'тон импорттолгон</translation> <translation id="5502915260472117187">Бала</translation> -<translation id="5503858713116291452">Телефонуңуз жакын жерде турганын жана анын кулпусу ачык болуп, Bluetooth менен Wi-Fi күйгүзүлгөнүн текшериңиз. Жөндөп бүтүрүү үчүн телефондогу кадамдарды аткарыңыз.</translation> <translation id="5503982651688210506"><ph name="HOST" /> сайтына камера менен микрофонду колдонуп, камераны жылдырууга уруксат берүүгө макул болуу</translation> <translation id="5505264765875738116">Сайттар билдирмелерди жөнөтүүнү сурана алышпайт</translation> <translation id="5505307013568720083">Сыя түгөндү</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Жигердүү</translation> <translation id="5567989639534621706">Колдонмо кэштери</translation> <translation id="5568069709869097550">Аккаунтка кирбей жатат</translation> +<translation id="5571832155627049070">Профилиңизди ыңгайлаштырыңыз</translation> <translation id="5572851009514199876">Chrome'ду иштетип, аккаунтка кириңиз. Chrome бул сайтка кирүүгө уруксатыңыз бар-жогун текшериши керек.</translation> <translation id="5575473780076478375">Жашыруун кеңейтүү: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Демо режимин каттоо сурамында ката кетти.</translation> @@ -5458,6 +5460,7 @@ <translation id="7280649757394340890">Кеп синтезаторунун үн жөндөөлөрү</translation> <translation id="7280877790564589615">Уруксат суралды</translation> <translation id="7282992757463864530">Маалымат тилкеси</translation> +<translation id="7283555985781738399">Конок режими</translation> <translation id="7284411326658527427">Ар бир адам аккаунтун жекелештирип, маалыматын купуя сактай алат.</translation> <translation id="7287143125007575591">Кирүү мүмкүнчүлүгү четке кагылды.</translation> <translation id="7287411021188441799">Демейки фонду калыбына келтирүү</translation> @@ -5837,6 +5840,7 @@ <translation id="7716781361494605745">Netscape Тастыктама борборунун саясатынын URL</translation> <translation id="7717014941119698257"><ph name="STATUS" /> жүктөлүп алынууда</translation> <translation id="7717134585801378441">Сайттар сиздин уруксатыңыз менен жайгашкан жериңизди колдоно алат (сунушталат)</translation> +<translation id="771721654176725387">Ушуну менен бул түзмөктөн серептөө дайын-даректериңиз биротоло өчүрүлөт. Маалыматты калыбына келтирүү үчүн төмөнкү аккаунт менен шайкештирүүнү күйгүзүңүз:</translation> <translation id="7717845620320228976">Жаңыртууларды издөө</translation> <translation id="7719367874908701697">Бетти чоңойтуп/кичирейтүү</translation> <translation id="7719588063158526969">Түзмөктүн аталышы өтө узун</translation> @@ -5873,6 +5877,7 @@ <translation id="7765158879357617694">Жылуу</translation> <translation id="7765507180157272835">Bluetooth жана Wi-Fi керектелет</translation> <translation id="7766082757934713382">Автоматтык түрдө иштеген колдонмолорду жана тутумдун жаңыртууларын тындырып, Интернет трафигин үнөмдөөгө жардам берет</translation> +<translation id="7766807826975222231">Саякатка чыгуу</translation> <translation id="7766838926148951335">Уруксаттарды кабыл алуу</translation> <translation id="7768507955883790804">Сайттарга киргениңизде, ушул жөндөө автоматтык түрдө колдонулат</translation> <translation id="7768770796815395237">Өзгөртүү</translation> @@ -6116,6 +6121,7 @@ <translation id="8016266267177410919">Убактылуу сактагыч</translation> <translation id="8017176852978888182">Linux'тун бөлүшүлгөн каталогдору</translation> <translation id="8017679124341497925">Кыска жол түзөтүлдү</translation> +<translation id="8018298733481692628">Бул профиль жок кылынсынбы?</translation> <translation id="8018313076035239964">Вебсайттар кандай маалыматты көрсөтө аларын жана кандай мазмунду колдоно аларын көзөмөлдөңүз</translation> <translation id="8023801379949507775">Кеңейтүүлөрдү азыр жаңыртуу</translation> <translation id="8026334261755873520">Серептөө дайындарын тазалап салуу</translation> @@ -6286,7 +6292,6 @@ <translation id="8211551284753798479">Жараксыз PUK. Сизде <ph name="RETRIES" /> аракет калды.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Жүктөп алуу аткарылууда}other{Жүктөп алуулар аткарылууда}}</translation> <translation id="8213449224684199188">Сүрөт режими киргизилди</translation> -<translation id="8213866992824776555">Коопсуздугу корголгон жогорку сапаттагы видео менен аудиону ойнотуу үчүн <ph name="DOMAIN" /> түзмөгүңүздү аныктаганы жатат.</translation> <translation id="8214489666383623925">Төмөнкү файлды ачуу…</translation> <translation id="8214962590150211830">Бул адамды алып салуу</translation> <translation id="8216351761227087153">Көрүү</translation> @@ -6765,7 +6770,6 @@ <translation id="8774379074441005279">Калыбына келтирүүнү ырастоо</translation> <translation id="8774934320277480003">Жогорку чети</translation> <translation id="8775144690796719618">Жараксыз URL</translation> -<translation id="8775163630211761057">Android телефонуңуздун мүмкүнчүлүктөрүн <ph name="DEVICE_TYPE" /> түзмөгүңүздө колдоносуз</translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> түзмөгүңүз # секунддан кийин автоматтык түрдө кулпуланат. <ph name="DOMAIN" /> эрежелери боюнча акылдуу картаңыз салынып турушу керек.}other{<ph name="DEVICE_TYPE" /> түзмөгүңүз # секунддан кийин автоматтык түрдө кулпуланат. <ph name="DOMAIN" /> эрежелери боюнча акылдуу картаңыз салынып турушу керек.}}</translation> @@ -6954,6 +6958,7 @@ <translation id="8973596347849323817">Түзмөктү өзүңүзгө ыңгайлаштырып алыңыз. Бул атайын мүмкүнчүлүктөрдүн параметрлерин кийинчерээк Жөндөөлөрдөн өзгөртсөңүз болот.</translation> <translation id="897414447285476047">Начар байланыштан улам файл толук жүктөлүп алынбай калды.</translation> <translation id="897525204902889653">Карантин кызматы</translation> +<translation id="8975396729541388937">Сизге жөнөтүлгөн электрондук каттардагы шилтемени басып, жазылууну каалаган убакта токтото аласыз.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" жана башка 1 өтмөк}other{"<ph name="TAB_TITLE" />" жана башка # өтмөк}}</translation> <translation id="8977811652087512276">Сырсөз туура эмес же файл бузук</translation> <translation id="8978154919215542464">Күйүк – баарын шайкештирүү</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index 8a51725..bdc16337 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{ບໍ່ມີລະຫັດຜ່ານທີ່ຖືກລະເມີດ}=1{ມີລະຫັດຜ່ານທີ່ຖືກລະເມີດ 1 ລາຍການ}other{ມີລະຫັດຜ່ານທີ່ຖືກລະເມີດ {NUM_COMPROMISED} ລາຍການ}}</translation> <translation id="1380028686461971526">ເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍໂດຍອັດຕະໂນມັດ</translation> <translation id="1380436189840894976">ແນວໃດກໍອອກຈາກໂໝດທີ່ບໍ່ເຜີຍຕົວຕົນບໍ?</translation> +<translation id="1383597849754832576">ບໍ່ສາມາດດາວໂຫຼດໄຟລ໌ສຽງເວົ້າໄດ້. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ.</translation> <translation id="1383861834909034572">ເປີດເມື່ອສໍາເລັດ</translation> <translation id="1383876407941801731">ຊອກຫາ</translation> <translation id="1386791642444521222">ເປີດນຳໃຊ້ SIM ແທ້</translation> @@ -874,7 +875,6 @@ <translation id="1954813140452229842">ເກີດຂໍ້ຜິດພາດໃນການເຊື່ອມຕໍ່ການແບ່ງປັນ. ກະລຸນາກວດເບິ່ງຂໍ້ມູນປະຈຳຕົວຂອງທ່ານ ແລະ ລອງອີກຄັ້ງ.</translation> <translation id="1956050014111002555">ໄຟລ໌ມີຫຼາຍໃບຢັ້ງຢືນ, ບໍ່ມີອັນໃດທີ່ຖືກນໍາເຂົ້າມາ:</translation> <translation id="1956390763342388273">ນີ້ຈະອັບໂຫຼດໄຟລ໌ທັງໝົດຈາກ "<ph name="FOLDER_PATH" />". ພຽງແຕ່ເຮັດສິ່ງນີ້ຖ້າທ່ານເຊື່ອຖືເວັບໄຊເທົ່ານັ້ນ.</translation> -<translation id="1960158217849594135">ບັນທຶກຊື່ຜູ້ໃຊ້ໄວ້ໃນບັນຊີ Google ຂອງທ່ານບໍ?</translation> <translation id="196040970347962278">ກຳນົດການເຊື່ອມຕໍ່ອິນເຕີເນັດກ່ອນ</translation> <translation id="1962233722219655970">ໜ້ານີ້ໃຊ້ແອັບລູກຂ່າຍເດີມທີ່ບໍ່ເຮັດວຽກຢູ່ໃນຄອມພິວເຕີຂອງທ່ານ.</translation> <translation id="1963227389609234879">ເອົາອອກທັງໝົດ</translation> @@ -900,6 +900,7 @@ <translation id="1984417487208496350">ບໍ່ມີການປົກປ້ອງ (ບໍ່ແນະນຳ)</translation> <translation id="1987317783729300807">ບັນຊີ</translation> <translation id="1989112275319619282">ເປີດເບິ່ງ</translation> +<translation id="1990046457226896323">ດາວໂຫຼດໄຟລ໌ສຽງເວົ້າແລ້ວ</translation> <translation id="1990512225220753005">ຢ່າສະແດງທາງລັດໃນໜ້ານີ້</translation> <translation id="1992397118740194946">ບໍ່ໄດ້ຕັ້ງ</translation> <translation id="1992924914582925289">ລຶບອອກຈາກອຸປະກອນ</translation> @@ -1045,7 +1046,6 @@ <translation id="2157474325782140681">ເພື່ອຮັບຄຸນສົມບັດເພີ່ມເຕີມ, ກະລຸນາໃຊ້ສະຖານີແທ່ນສາກ Dell ທີ່ຖືກອອກແບບມາໃຫ້ໃຊ້ໄດ້ກັບ Chromebook ນີ້.</translation> <translation id="215753907730220065">ອອກຈາກເຕັມໜ້າຈໍ</translation> <translation id="2157875535253991059">ດຽວນີ້ໜ້ານີ້ເຕັມໜ້າຈໍແລ້ວ.</translation> -<translation id="2160589599612868242">ຮັບການແຈ້ງເຕືອນຈາກໂທລະສັບຂອງທ່ານໃນ <ph name="DEVICE_TYPE" /> ຂອງທ່ານ</translation> <translation id="216169395504480358">ເພີ່ມ Wi-Fi...</translation> <translation id="2162155940152307086">ການຊິ້ງຂໍ້ມູນຈະເລີ່ມເມື່ອທ່ານອອກຈາກການຕັ້ງຄ່າການຊິ້ງຂໍ້ມູນ</translation> <translation id="2162838847352058695">ບລັອກບໍ່ໃຫ້ເວັບໄຊດາວໂຫຼດຫຼາຍໄຟລ໌ໂດຍອັດຕະໂນມັດ</translation> @@ -1263,6 +1263,7 @@ <translation id="2399699884460174994">ເປິດການແຈ້ງເຕືອນແລ້ວ</translation> <translation id="2399939490305346086">ຂໍ້ມູນການເຂົ້າສູ່ລະບົບໃນກະແຈຄວາມປອດໄພ</translation> <translation id="2400664245143453337">ຈໍາເປັນຕ້ອງອັບເດດໃນທັນທີ</translation> +<translation id="2406153734066939945">ລຶບໂປຣໄຟລ໌ນີ້ ແລະ ຂໍ້ມູນຂອງມັນບໍ?</translation> <translation id="2408018932941436077">ກຳລັງບັນທຶກບັດ</translation> <translation id="2408955596600435184">ປ້ອນລະຫັດ PIN ຂອງທ່ານ</translation> <translation id="241082044617551207">ປລັກອິນທີ່ບໍ່ຮູ້ຈັກ</translation> @@ -1381,6 +1382,7 @@ <translation id="2526590354069164005">ເດັສທັອບ</translation> <translation id="2526619973349913024">ກວດຫາອັບເດດ</translation> <translation id="2527167509808613699">ການເຊື່ອມຕໍ່ປະເພດໃດໜຶ່ງ</translation> +<translation id="2530166226437958497">ການແກ້ໄຂບັນຫາ</translation> <translation id="2532589005999780174">ໂໝດສີຕັດກັນສູງ</translation> <translation id="253434972992662860">ຢຸດຊົ່ວຄາວ</translation> <translation id="2534460670861217804">ພຣັອກຊີ HTTP ທີ່ປອດໄພ</translation> @@ -1698,7 +1700,6 @@ <translation id="2885729872133513017">ເກີດບັນຫາຂຶ້ນໃນເວລາຖອດລະຫັດຄຳຕອບຂອງເຊີບເວີ.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">ເປີດລິ້ງກັບ...</translation> -<translation id="2889481634493693121">ເປີດການແຈ້ງເຕືອນໃນໂທລະສັບຂອງທ່ານ</translation> <translation id="2889925978073739256">ສືບຕໍ່ບລັອກປລັກອິນທີ່ບໍ່ແມ່ນແຊນບັອກ</translation> <translation id="2893168226686371498">ບຣາວເຊີມາດຕະຖານ</translation> <translation id="2893917546370257247">{COUNT,plural, =1{ຂໍ້ຄວາມ 1 ລາຍການ}other{ຂໍ້ຄວາມ # ລາຍການ}}</translation> @@ -2558,6 +2559,7 @@ <translation id="3857807444929313943">ຍົກຂຶ້ນ, ຈາກນັ້ນແຕະອີກຄັ້ງ</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: ຢຸດການຊິ້ງຂໍ້ມູນໄວ້ແລ້ວ</translation> <translation id="3861638017150647085">ຊື່ຜູ້ໃຊ້ "<ph name="USERNAME" />" ບໍ່ສາມາດໃຊ້ໄດ້</translation> +<translation id="3861977424605124250">ສະແດງໃນເວລາສະຕາດອັບ</translation> <translation id="3862693525629180217">ຢັ້ງຢືນຜ່ານເຊັນເຊີທີ່ມາພ້ອມໃນເຄື່ອງ</translation> <translation id="3862788408946266506">ຕ້ອງຕິດຕັ້ງແອັບທີ່ມີຄຸນລັກສະນະ 'kiosk_only' manifest ຢູ່ໃນໂໝດ Chrome OS kiosk</translation> <translation id="3865414814144988605">ຄວາມລະອຽດ</translation> @@ -2800,7 +2802,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">ບັນທຶກອຸປະກອນ</translation> <translation id="4130207949184424187">ສ່ວນຂະຫຍາຍໄດ້ປ່ຽນວ່າຈະໃຫ້ໜ້າໃດສະແດງຂຶ້ນ ເມື່ອທ່ານຄົ້ນຫາຈາກ Omnibox.</translation> -<translation id="4130344535649650885">ບັນທຶກລະຫັດຜ່ານໄວ້ໃນບັນຊີ Google ຂອງທ່ານບໍ?</translation> <translation id="4130750466177569591">ຂ້ອຍເຫັນດີ</translation> <translation id="413121957363593859">ອົງປະກອບ</translation> <translation id="4131410914670010031">ຂາວດໍາ</translation> @@ -3199,6 +3200,7 @@ <translation id="4627442949885028695">ສືບຕໍ່ຈາກອຸປະກອນອື່ນ</translation> <translation id="4628757576491864469">ອຸປະກອນ</translation> <translation id="4628762811416793313">ການຕັ້ງຄ່າກ່ອງບັນຈຸ Linux ບໍ່ສຳເລັດ. ກະລຸນາລອງໃໝ່ອີກຄັ້ງ.</translation> +<translation id="4629521233550547305">ເປີດໂປຣໄຟລ໌ <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">ສ່ວນຂະຫຍາຍຈຳເປັນຕ້ອງມີ "<ph name="IMPORT_NAME" />" ທີ່ມີເວີຊັນຕໍ່າສຸດ "<ph name="IMPORT_VERSION" />", ແຕ່ມີການຕິດຕັ້ງເວີຊັນ "<ph name="INSTALLED_VERSION" />" ເທົ່ານັ້ນ</translation> <translation id="4633757335284074492">ສຳຮອງຂໍ້ມູນໄວ້ໃນ Google Drive ກູ້ຄືນຂໍ້ມູນໄດ້ຢ່າງງ່າຍດາຍ ຫຼື ປ່ຽນອຸປະກອນໄດ້ທຸກເວລາ. ການສຳຮອງຂໍ້ມູນີ້ຮວມເອົາຂໍ້ມູນແອັບ. ຂໍ້ມູນທີ່ສຳຮອງໄວ້ຂອງທ່ານຖືກອັບໂຫຼດໄວ້ໃນ Google ແລະ ເຂົ້າລະຫັດໄວ້ໂດຍໃຊ້ລະຫັດຜ່ານບັນຊີ Google ຂອງລູກທ່ານ.</translation> <translation id="4634575639321169635">ຕັ້ງຄ່າອຸປະກອນນີ້ສຳລັບວຽກ ຫຼື ການໃຊ້ສ່ວນຕົວ</translation> @@ -3927,7 +3929,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{ຮັບ <ph name="ATTACHMENTS" /> ຈາກ <ph name="DEVICE_NAME" /> ບໍ່ສຳເລັດ}other{ຮັບ <ph name="ATTACHMENTS" /> ຈາກ <ph name="DEVICE_NAME" /> ບໍ່ສຳເລັດ}}</translation> <translation id="5502500733115278303">ນໍາເຂົ້າມາຈາກ Firefox ແລ້ວ</translation> <translation id="5502915260472117187">ເດັກ</translation> -<translation id="5503858713116291452">ກວດໃຫ້ແນ່ໃຈວ່າໂທລະສັບຂອງທ່ານຢູ່ໃກ້, ປົດລັອກ ແລະ ເປີດ Bluetooth ແລະ Wi-Fi ແລ້ວ. ປະຕິບັດຕາມຂັ້ນຕອນໃນໂທລະສັບຂອງທ່ານເພື່ອເຮັດສຳເລັດການຕັ້ງຄ່າ.</translation> <translation id="5503982651688210506">ສືບຕໍ່ອະນຸຍາດໃຫ້ <ph name="HOST" /> ໃຊ້ ແລະ ຍ້າຍກ້ອງຂອງທ່ານ ແລະ ໃຊ້ໄມໂຄຣໂຟນຂອງທ່ານ</translation> <translation id="5505264765875738116">ເວັບໄຊບໍ່ສາມາດຂໍໃຫ້ສົ່ງການແຈ້ງເຕືອນໄດ້</translation> <translation id="5505307013568720083">ໝຶກໝົດ</translation> @@ -3988,6 +3989,7 @@ <translation id="5565735124758917034">ເປີດຢູ່</translation> <translation id="5567989639534621706">ແຄຊ໌ແອັບພລິເຄຊັນ</translation> <translation id="5568069709869097550">ບໍ່ສາມາດເຂົ້າສູ່ລະບົບໄດ້</translation> +<translation id="5571832155627049070">ປັບແຕ່ງໂປຣໄຟລ໌ຂອງທ່ານ</translation> <translation id="5572851009514199876">ກະລຸນາເລີ່ມຕົ້ນ ແລະ ເຂົ້າສູ່ລະບົບ Chrome ເພື່ອໃຫ້ Chrome ສາມາດກວດເບິ່ງວ່າທ່ານໄດ້ຮັບອະນຸຍາດໃຫ້ເຂົ້າຫາເວັບໄຊນີ້ຫຼືບໍ່.</translation> <translation id="5575473780076478375">ສ່ວນຂະຫຍາຍທີ່ບໍ່ເຜີຍຕົນຕົວ: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">ເກີດບັນຫາກັບຄຳຂໍລົງທະບຽນການສາທິດ.</translation> @@ -5456,6 +5458,7 @@ <translation id="7280649757394340890">ການຕັ້ງຄ່າສຽງສຳລັບການປ່ຽນຂໍ້ຄວາມເປັນສຽງເວົ້າ</translation> <translation id="7280877790564589615">ຂໍເອົາການອະນຸຍາດແລ້ວ</translation> <translation id="7282992757463864530">ແຖບຂໍ້ມູນ</translation> +<translation id="7283555985781738399">ໂໝດແຂກ</translation> <translation id="7284411326658527427">ແຕ່ລະຄົນສາມາດປັບແຕ່ງບັນຊີຂອງເຂົາເຈົ້າ ແລະ ຮັກສາຂໍ້ມູນໄວ້ເປັນສ່ວນຕົວໄດ້.</translation> <translation id="7287143125007575591">ການເຂົ້າເຖິງຖືກປະຕິເສດ.</translation> <translation id="7287411021188441799">ກູ້ຄືນພື້ນຫຼັງເລີ່ມຕົ້ນ</translation> @@ -5835,6 +5838,7 @@ <translation id="7716781361494605745">URL ນະໂຍບາຍໜ່ວຍງານອອກໃບຢັ້ງຢືນ Netscape</translation> <translation id="7717014941119698257">ກໍາລັງດາວໂຫລດ: <ph name="STATUS" /></translation> <translation id="7717134585801378441">ເວັບໄຊສາມາດຂໍເອົາສະຖານທີ່ຂອງທ່ານໄດ້ (ແນະນຳ)</translation> +<translation id="771721654176725387">ນີ້ຈະລຶບຂໍ້ມູນການທ່ອງເວັບຂອງທ່ານອອກຈາກອຸປະກອນນີ້ຢ່າງຖາວອນ. ເພື່ອກູ້ຄືນຂໍ້ມູນ, ກະລຸນາເປີດການຊິ້ງຂໍ້ມູນເປັນ</translation> <translation id="7717845620320228976">ກວດເບິ່ງການອັບເດດ</translation> <translation id="7719367874908701697">ຊູມໜ້າ</translation> <translation id="7719588063158526969">ຊື່ອຸປະກອນຍາວເກີນໄປ</translation> @@ -5871,6 +5875,7 @@ <translation id="7765158879357617694">ຍ້າຍ</translation> <translation id="7765507180157272835">ຈຳເປັນຕ້ອງເປີດ Bluetooth ແລະ Wi-Fi</translation> <translation id="7766082757934713382">ຊ່ວຍຫຼຸດການນຳໃຊ້ອິນເຕີເນັດເຄືອຂ່າຍໂດຍການຢຸດການອັບເດດແອັບ ແລະ ລະບົບອັດຕະໂນມັດໄວ້ຊົ່ວຄາວ</translation> +<translation id="7766807826975222231">ທ່ອງເບິ່ງ</translation> <translation id="7766838926148951335">ຍອມຮັບການອະນຸຍາດ</translation> <translation id="7768507955883790804">ເວັບໄຊຈະປະຕິບັດຕາມການຕັ້ງຄ່ານີ້ໂດຍອັດຕະໂນມັດເມື່ອທ່ານເຂົ້າເບິ່ງພວກມັນ</translation> <translation id="7768770796815395237">ປ່ຽນ</translation> @@ -6113,6 +6118,7 @@ <translation id="8016266267177410919">ບ່ອນຈັດເກັບຂໍ້ມູນຊົ່ວຄາວ</translation> <translation id="8017176852978888182">ແຟ້ມທີ່ແບ່ງປັນຂອງ Linux</translation> <translation id="8017679124341497925">ແກ້ໄຂທາງລັດແລ້ວ</translation> +<translation id="8018298733481692628">ລຶບໂປຣໄຟລ໌ນີ້ບໍ?</translation> <translation id="8018313076035239964">ຄວບຄຸມວ່າເວັບໄຊສາມາດໃຊ້ຂໍ້ມູນໃດແດ່ ແລະ ພວກເຂົາສາມາດສະແດງເນື້ອຫາໃດແດ່ໃຫ້ທ່ານເຫັນໄດ້</translation> <translation id="8023801379949507775">ອັບເດດສ່ວນຂະຫຍາຍດຽວນີ້</translation> <translation id="8026334261755873520">ລຶບຂໍ້ມູນການທ່ອງເນັດ</translation> @@ -6283,7 +6289,6 @@ <translation id="8211551284753798479">PUK ທີ່ຖືກຕ້ອງ. ທ່ານລອງໄດ້ອີກ <ph name="RETRIES" /> ເທື່ອ.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ການດາວໂຫຼດພວມດຳເນີນຢູ່}other{ການດາວໂຫຼດພວມດຳເນີນຢູ່}}</translation> <translation id="8213449224684199188">ເຂົ້າໂໝດຮູບພາບແລ້ວ</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> ຕ້ອງການລະບຸອຸປະກອນຂອງທ່ານເພື່ອໃຫ້ມັນສາມາດຫຼິ້ນວິດີໂອ ແລະ ສຽງທີ່ມີການປົກປ້ອງເປັນຄຸນນະພາບສູງສຸດໄດ້.</translation> <translation id="8214489666383623925">ເປີດໄຟລ໌...</translation> <translation id="8214962590150211830">ເອົາຄົນນີ້ອອກໄປ</translation> <translation id="8216351761227087153">ເບິ່ງ</translation> @@ -6762,7 +6767,6 @@ <translation id="8774379074441005279">ຢືນຢັນກູ້ຄືນ</translation> <translation id="8774934320277480003">ຂອບເທິງ</translation> <translation id="8775144690796719618">URL ໃຊ້ບໍ່ໄດ້</translation> -<translation id="8775163630211761057">ຂະຫຍາຍສິ່ງທີ່ດີທີ່ສຸດຂອງໂທລະສັບຂອງທ່ານໄປສູ່ <ph name="DEVICE_TYPE" /> ຂອງທ່ານ</translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> ຂອງທ່ານຈະຖືກລັອກໄວ້ໂດຍອັດຕະໂນມັດໃນ # ວິນາທີ. <ph name="DOMAIN" /> ກຳນົດໃຫ້ທ່ານສຽບບັດອັດສະລິຍະຄາໄວ້.}other{<ph name="DEVICE_TYPE" /> ຂອງທ່ານຈະຖືກລັອກໄວ້ໂດຍອັດຕະໂນມັດໃນ # ວິນາທີ. <ph name="DOMAIN" /> ກຳນົດໃຫ້ທ່ານສຽບບັດອັດສະລິຍະຄາໄວ້.}}</translation> @@ -6951,6 +6955,7 @@ <translation id="8973596347849323817">ທ່ານສາມາດປັບແຕ່ງອຸປະກອນນີ້ໃຫ້ເໝາະສົມກັບຄວາມຕ້ອງການຂອງທ່ານ. ສາມາດປ່ຽນແປງຄຸນສົມຊ່ວຍເຂົ້າເຖິງເຫຼົ່ານີ້ໄດ້ໃນພາຍຫຼັງໃນການຕັ້ງຄ່າ.</translation> <translation id="897414447285476047">ໄຟລ໌ປາຍທາງບໍ່ສົມບູນເນື່ອງຈາກບັນຫາການເຊື່ອມຕໍ່.</translation> <translation id="897525204902889653">ການບໍລິການກັກກັນ</translation> +<translation id="8975396729541388937">ຍົກເລີກການສະໝັກໃຊ້ໄດ້ທຸກເວລາໂດຍການຄລິກລິ້ງໃນອີເມວທີ່ທ່ານໄດ້ຮັບ.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" ແລະ ອີກ 1 ແຖບອື່ນ}other{"<ph name="TAB_TITLE" />" ແລະ ອີກ # ແຖບອື່ນ}}</translation> <translation id="8977811652087512276">ລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ ຫຼື ໄຟລ໌ເສຍຫາຍ</translation> <translation id="8978154919215542464">ເປີດ - ຊິ້ງຂໍ້ມູນທຸກຢ່າງ</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index 2e496fd..59f7e8e 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -341,6 +341,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Pažeistų slaptažodžių nėra}=1{1 pažeistas slaptažodis}one{{NUM_COMPROMISED} pažeistas slaptažodis}few{{NUM_COMPROMISED} pažeisti slaptažodžiai}many{{NUM_COMPROMISED} pažeisto slaptažodžio}other{{NUM_COMPROMISED} pažeistų slaptažodžių}}</translation> <translation id="1380028686461971526">Automatiškai prisijungti prie tinklo</translation> <translation id="1380436189840894976">Vis tiek išeiti iš inkognito režimo?</translation> +<translation id="1383597849754832576">Nepavyko atsisiųsti kalbos failų. Vėliau bandykite dar kartą.</translation> <translation id="1383861834909034572">Baigus bus atidaryta</translation> <translation id="1383876407941801731">Ieškoti</translation> <translation id="1386791642444521222">Suaktyvinti fizinę SIM kortelę</translation> @@ -879,7 +880,6 @@ <translation id="1954813140452229842">Klaida įdedant bendrinamą objektą. Patikrinkite prisijungimo duomenis ir bandykite dar kartą.</translation> <translation id="1956050014111002555">Faile buvo keli sertifikatai; nė vienas iš jų nebuvo importuotas:</translation> <translation id="1956390763342388273">Bus įkelti visi failai iš „<ph name="FOLDER_PATH" />“. Tai atlikite, tik jei svetainė patikima.</translation> -<translation id="1960158217849594135">Išsaugoti naudotojo vardą „Google“ paskyroje?</translation> <translation id="196040970347962278">Pirmiausia užmegzkite interneto ryšį</translation> <translation id="1962233722219655970">Šiame puslapyje naudojama programa „Native Client“, kuri neveikia jūsų kompiuteryje.</translation> <translation id="1963227389609234879">Pašalinti viską</translation> @@ -905,6 +905,7 @@ <translation id="1984417487208496350">Apsaugos nėra (nerekomenduojama)</translation> <translation id="1987317783729300807">Paskyros</translation> <translation id="1989112275319619282">Naršyti</translation> +<translation id="1990046457226896323">Kalbos failai atsisiųsti</translation> <translation id="1990512225220753005">Nerodyti sparčiųjų klavišų šiame puslapyje</translation> <translation id="1992397118740194946">Nenustatyta</translation> <translation id="1992924914582925289">Pašalinti iš įrenginio</translation> @@ -1050,7 +1051,6 @@ <translation id="2157474325782140681">Norėdami naudotis papildomomis funkcijomis, naudokite „Dell“ doką, sukurtą specialiai šiam „Chromebook“.</translation> <translation id="215753907730220065">Išeiti iš viso ekrano režimo</translation> <translation id="2157875535253991059">Dabar šis puslapis veikia viso ekrano režimu.</translation> -<translation id="2160589599612868242">Gaukite pranešimus iš telefono „<ph name="DEVICE_TYPE" />“ įrenginyje</translation> <translation id="216169395504480358">Pridėti „Wi-Fi“...</translation> <translation id="2162155940152307086">Sinchronizavimas bus pradėtas, kai išeisite iš sinchronizavimo nustatymų</translation> <translation id="2162838847352058695">Blokuoti svetaines, kad nebūtų galima automatiškai atsisiųsti kelių failų</translation> @@ -1268,6 +1268,7 @@ <translation id="2399699884460174994">Pranešimai įjungti</translation> <translation id="2399939490305346086">Saugos rakto prisijungimo duomenys</translation> <translation id="2400664245143453337">Reikia nedelsiant atnaujinti</translation> +<translation id="2406153734066939945">Ištrinti šį profilį ir jo duomenis?</translation> <translation id="2408018932941436077">Išsaugoma kortelė</translation> <translation id="2408955596600435184">Įveskite PIN kodą</translation> <translation id="241082044617551207">Nežinomas papildinys</translation> @@ -1386,6 +1387,7 @@ <translation id="2526590354069164005">Darbalaukis</translation> <translation id="2526619973349913024">Patikrinti, ar yra naujinių</translation> <translation id="2527167509808613699">Bet koks ryšys</translation> +<translation id="2530166226437958497">Trikčių šalinimas</translation> <translation id="2532589005999780174">Didelio kontrasto režimas</translation> <translation id="253434972992662860">&Pristabdyti</translation> <translation id="2534460670861217804">Saugus HTTP tarpinis serveris</translation> @@ -1703,7 +1705,6 @@ <translation id="2885729872133513017">Iššifruojant serverio atsaką įvyko klaida.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Atidaryti nuorodą naudojant...</translation> -<translation id="2889481634493693121">Pranešimų įjungimas telefone</translation> <translation id="2889925978073739256">Toliau blokuoti ne „smėlio dėžės“ papildinius</translation> <translation id="2893168226686371498">Numatytoji naršyklė</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 teksto pranešimas}one{# teksto pranešimas}few{# teksto pranešimai}many{# teksto pranešimo}other{# teksto pranešimų}}</translation> @@ -2563,6 +2564,7 @@ <translation id="3857807444929313943">Patraukite ir vėl prilieskite</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sinchronizavimas pristabdytas</translation> <translation id="3861638017150647085">Naudotojo vardas „<ph name="USERNAME" />“ nepasiekiamas</translation> +<translation id="3861977424605124250">Rodyti paleidžiant</translation> <translation id="3862693525629180217">Patvirtinti per įtaisytą jutiklį</translation> <translation id="3862788408946266506">Programa su aprašo atributu „kiosk_only“ turi būti įdiegta „Chrome“ OS viešojo terminalo režimu</translation> <translation id="3865414814144988605">Skyra</translation> @@ -2805,7 +2807,6 @@ <translation id="412730574613779332">Triko</translation> <translation id="4130199216115862831">Įrenginio žurnalas</translation> <translation id="4130207949184424187">Šis plėtinys pakeitė, kuris puslapis rodomas ieškant „Omnibox“.</translation> -<translation id="4130344535649650885">Išsaugoti slaptažodį „Google“ paskyroje?</translation> <translation id="4130750466177569591">Sutinku</translation> <translation id="413121957363593859">Komponentai</translation> <translation id="4131410914670010031">Nespalvotai</translation> @@ -3204,6 +3205,7 @@ <translation id="4627442949885028695">Tęsiama kitu įrenginiu</translation> <translation id="4628757576491864469">Įrenginiai</translation> <translation id="4628762811416793313">Nepavyko užbaigti „Linux“ sudėtinio rodinio. Bandykite dar kartą.</translation> +<translation id="4629521233550547305">Atidaryti <ph name="PROFILE_NAME" /> profilį</translation> <translation id="4633003931260532286">Norint naudoti plėtinį reikalinga bent <ph name="IMPORT_VERSION" /> versijos „<ph name="IMPORT_NAME" />“, bet įdiegta tik <ph name="INSTALLED_VERSION" /> versija</translation> <translation id="4633757335284074492">Sukurkite atsarginę kopiją „Google“ diske. Lengvai atkurkite duomenis arba perjunkite įrenginį bet kuriuo metu. Į šią atsarginę kopiją įtraukiami programų. Atsarginės kopijos įkeliamos į sistemą „Google“ ir šifruojamos naudojant vaiko „Google“ paskyros slaptažodį.</translation> <translation id="4634575639321169635">Nustatyti šį įrenginį naudoti darbo ar asmeniniais tikslais</translation> @@ -3932,7 +3934,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Nepavyko gauti turinio (<ph name="ATTACHMENTS" />) iš „<ph name="DEVICE_NAME" />“ įrenginio}one{Nepavyko gauti turinio (<ph name="ATTACHMENTS" />) iš „<ph name="DEVICE_NAME" />“ įrenginio}few{Nepavyko gauti turinio (<ph name="ATTACHMENTS" />) iš „<ph name="DEVICE_NAME" />“ įrenginio}many{Nepavyko gauti turinio (<ph name="ATTACHMENTS" />) iš „<ph name="DEVICE_NAME" />“ įrenginio}other{Nepavyko gauti turinio (<ph name="ATTACHMENTS" />) iš „<ph name="DEVICE_NAME" />“ įrenginio}}</translation> <translation id="5502500733115278303">Importuota iš „Firefox“</translation> <translation id="5502915260472117187">Vaikas</translation> -<translation id="5503858713116291452">Įsitikinkite, kad telefonas netoliese, atrakintas ir jame įjungtas „Bluetooth“ bei „Wi-Fi“ ryšys. Atlikite telefone pateiktus veiksmus, kad užbaigtumėte nustatymo procesą.</translation> <translation id="5503982651688210506">Ir toliau leisti <ph name="HOST" /> naudoti ir judinti kamerą bei naudoti mikrofoną</translation> <translation id="5505264765875738116">Svetainės negali prašyti siųsti pranešimus</translation> <translation id="5505307013568720083">Baigėsi rašalas</translation> @@ -3993,6 +3994,7 @@ <translation id="5565735124758917034">Aktyvus</translation> <translation id="5567989639534621706">Programos talpyklos</translation> <translation id="5568069709869097550">Nepavyksta prisijungti</translation> +<translation id="5571832155627049070">Tinkinkite savo profilį</translation> <translation id="5572851009514199876">Pirmiausia prisijunkite prie „Chrome“, kad „Chrome“ galėtų patikrinti, ar jums leidžiama pasiekti šią svetainę.</translation> <translation id="5575473780076478375">Inkognito plėtinys: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Iškilo su demonstracinio režimo registracijos užklausa susijusi problema.</translation> @@ -5463,6 +5465,7 @@ <translation id="7280649757394340890">Teksto į kalbą balso nustatymai</translation> <translation id="7280877790564589615">Prašoma leidimo</translation> <translation id="7282992757463864530">Informacinė juosta</translation> +<translation id="7283555985781738399">Svečio režimas</translation> <translation id="7284411326658527427">Kiekvienas asmuo gali suasmeninti paskyrą ir privačiai saugoti duomenis.</translation> <translation id="7287143125007575591">Prieiga atmesta.</translation> <translation id="7287411021188441799">Atkurti numatytąjį foną</translation> @@ -5842,6 +5845,7 @@ <translation id="7716781361494605745">„Netscape“ sertifikavimo institucijos politikos URL</translation> <translation id="7717014941119698257">Atsisiunčiama: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Svetainėse gali būti prašoma jūsų vietovės informacijos (rekomenduojama)</translation> +<translation id="771721654176725387">Atlikus šį veiksmą bus visam laikui ištrinti naršymo duomenys iš šio įrenginio. Norėdami atkurti duomenis, įjunkite sinchronizavimą</translation> <translation id="7717845620320228976">Patikrinkite, ar nėra naujinių</translation> <translation id="7719367874908701697">Puslapio mastelis</translation> <translation id="7719588063158526969">Įrenginio pavadinimas per ilgas</translation> @@ -5878,6 +5882,7 @@ <translation id="7765158879357617694">Perkelti</translation> <translation id="7765507180157272835">Reikalingas „Bluetooth“ ir „Wi-Fi“ ryšys</translation> <translation id="7766082757934713382">Padeda sumažinti tinklo duomenų naudojimą pristabdant automatinius programų ir sistemos naujinius</translation> +<translation id="7766807826975222231">Peržiūrėti apžvalgą</translation> <translation id="7766838926148951335">Priimti leidimus</translation> <translation id="7768507955883790804">Svetainėms automatiškai pritaikomas šis nustatymas, kai jose apsilankote</translation> <translation id="7768770796815395237">Keisti</translation> @@ -6122,6 +6127,7 @@ <translation id="8017176852978888182">„Linux“ bendrinami katalogai</translation> <translation id="8017335670460187064">„<ph name="LABEL" />“</translation> <translation id="8017679124341497925">Spartusis klavišas redaguotas</translation> +<translation id="8018298733481692628">Ištrinti šį profilį?</translation> <translation id="8018313076035239964">Valdykite, kokią informaciją galima naudoti svetainėse ir kokį turinį jose rodyti</translation> <translation id="8023801379949507775">Atnaujinti plėtinius dabar</translation> <translation id="8026334261755873520">Išvalyti naršymo duomenis</translation> @@ -6292,7 +6298,6 @@ <translation id="8211551284753798479">Netinkamas PUK kodas. Liko bandymų: <ph name="RETRIES" />.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Vykdomas atsisiuntimas}one{Vykdomi atsisiuntimai}few{Vykdomi atsisiuntimai}many{Vykdomi atsisiuntimai}other{Vykdomi atsisiuntimai}}</translation> <translation id="8213449224684199188">Įjungtas nuotraukų režimas</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> nori identifikuoti jūsų įrenginį, kad būtų galima paleisti aukščiausios kokybės apsaugotus vaizdo ir garso įrašus.</translation> <translation id="8214489666383623925">Atidaryti failą...</translation> <translation id="8214962590150211830">Pašalinti šį asmenį</translation> <translation id="8216351761227087153">Žiūrėti</translation> @@ -6771,7 +6776,6 @@ <translation id="8774379074441005279">Atkūrimo patvirtinimas</translation> <translation id="8774934320277480003">Viršutinė paraštė</translation> <translation id="8775144690796719618">Netinkamas URL</translation> -<translation id="8775163630211761057">Perkelkite geriausias „Android“ telefono funkcijas į <ph name="DEVICE_TYPE" /> įrenginį</translation> <translation id="8775653927968399786">{0,plural, =1{Jūsų „<ph name="DEVICE_TYPE" />“ įrenginys bus automatiškai užrakintas po # sekundės. <ph name="DOMAIN" /> reikia, kad paliktumėte įdėtą išmaniąją kortelę.}one{Jūsų „<ph name="DEVICE_TYPE" />“ įrenginys bus automatiškai užrakintas po # sekundės. <ph name="DOMAIN" /> reikia, kad paliktumėte įdėtą išmaniąją kortelę.}few{Jūsų „<ph name="DEVICE_TYPE" />“ įrenginys bus automatiškai užrakintas po # sekundžių. @@ -6963,6 +6967,7 @@ <translation id="8973596347849323817">Galite tinkinti šį įrenginį pagal savo poreikius. Vėliau šias pritaikymo neįgaliesiems funkcijas galite pakeisti nustatymuose.</translation> <translation id="897414447285476047">Paskirties failas neužbaigtas dėl ryšio problemos.</translation> <translation id="897525204902889653">Izoliavimo paslauga</translation> +<translation id="8975396729541388937">Bet kuriuo metu atšaukite prenumeratą spustelėję nuorodą gautuose pranešimuose.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />“}=1{„<ph name="TAB_TITLE" />“ ir dar 1 skirtukas}one{„<ph name="TAB_TITLE" />“ ir dar # skirtukas}few{„<ph name="TAB_TITLE" />“ ir dar # skirtukai}many{„<ph name="TAB_TITLE" />“ ir dar # skirtuko}other{„<ph name="TAB_TITLE" />“ ir dar # skirtukų}}</translation> <translation id="8977811652087512276">Netinkamas slaptažodis arba sugadintas failas</translation> <translation id="8978154919215542464">Įjungta – sinchronizuoti viską</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index 2fe3634..dbd3ca59 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -340,6 +340,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Nav uzlauztu paroļu}=1{1 uzlauzta parole}zero{{NUM_COMPROMISED} uzlauztu paroļu}one{{NUM_COMPROMISED} uzlauzta parole}other{{NUM_COMPROMISED} uzlauztas paroles}}</translation> <translation id="1380028686461971526">Automātiska savienojuma izveide ar tīklu</translation> <translation id="1380436189840894976">Vai tik un tā iziet no inkognito režīma?</translation> +<translation id="1383597849754832576">Nevar lejupielādēt automātisko subtitru failus. Vēlāk mēģiniet vēlreiz.</translation> <translation id="1383861834909034572">Atvēršana, kad pabeigts</translation> <translation id="1383876407941801731">Meklēt</translation> <translation id="1386791642444521222">Aktivizēt fizisku SIM karti</translation> @@ -878,7 +879,6 @@ <translation id="1954813140452229842">Iekļaujot kopīgošanu, radās kļūda. Lūdzu, pārbaudiet akreditācijas datus un mēģiniet vēlreiz.</translation> <translation id="1956050014111002555">Failā bija iekļauti vairāki sertifikāti, no kuriem neviens netika importēts:</translation> <translation id="1956390763342388273">Šādi tiks augšupielādēti visi faili no mapes <ph name="FOLDER_PATH" />. Dariet to tikai tad, ja vietne ir uzticama.</translation> -<translation id="1960158217849594135">Vai saglabāt lietotājvārdu Google kontā?</translation> <translation id="196040970347962278">Vispirms izveidojiet interneta savienojumu.</translation> <translation id="1962233722219655970">Šajā lapā tiek izmantota Native Client lietotne, kas nedarbojas jūsu datorā.</translation> <translation id="1963227389609234879">Izņemt visu</translation> @@ -904,6 +904,7 @@ <translation id="1984417487208496350">Bez aizsardzības (nav ieteicams)</translation> <translation id="1987317783729300807">Konti</translation> <translation id="1989112275319619282">Pārlūkot</translation> +<translation id="1990046457226896323">Automātisko subtitru faili ir lejupielādēti.</translation> <translation id="1990512225220753005">Šajā lapā nerādīt saīsnes</translation> <translation id="1992397118740194946">Nav iestatīts</translation> <translation id="1992924914582925289">Noņemt no ierīces</translation> @@ -1049,7 +1050,6 @@ <translation id="2157474325782140681">Lai varētu izmantot papildu funkcijas, lietojiet Dell dokstaciju, kas paredzēta darbam ar šo Chromebook datoru.</translation> <translation id="215753907730220065">Iziet no pilnekrāna režīma</translation> <translation id="2157875535253991059">Šī lapa tagad ir redzama pilnekrāna režīmā.</translation> -<translation id="2160589599612868242">Saņemiet paziņojumus no tālruņa otrā ierīcē (<ph name="DEVICE_TYPE" />)</translation> <translation id="216169395504480358">Pievienot Wi-Fi...</translation> <translation id="2162155940152307086">Sinhronizācija tiks sākta, tiklīdz aizvērsiet sinhronizācijas iestatījumus.</translation> <translation id="2162838847352058695">Liegt vietnēm automātisku vairāku failu lejupielādi</translation> @@ -1267,6 +1267,7 @@ <translation id="2399699884460174994">Paziņojumi ieslēgti</translation> <translation id="2399939490305346086">Drošības atslēgas pierakstīšanās dati</translation> <translation id="2400664245143453337">Nepieciešama tūlītēja atjaunināšana</translation> +<translation id="2406153734066939945">Vai dzēst šo profilu un tā datus?</translation> <translation id="2408018932941436077">Karte tiek saglabāta.</translation> <translation id="2408955596600435184">Ievadiet PIN kodu</translation> <translation id="241082044617551207">Nezināms spraudnis</translation> @@ -1385,6 +1386,7 @@ <translation id="2526590354069164005">Darbvirsma</translation> <translation id="2526619973349913024">Pārbaudīt atjauninājumus</translation> <translation id="2527167509808613699">Jebkāda veida savienojums</translation> +<translation id="2530166226437958497">Problēmu novēršana</translation> <translation id="2532589005999780174">Augsta kontrasta režīms</translation> <translation id="253434972992662860">&Pauzēt</translation> <translation id="2534460670861217804">Drošs HTTP starpniekserveris</translation> @@ -1702,7 +1704,6 @@ <translation id="2885729872133513017">Dekodējot servera atbildi, radās problēma.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Atvērt saiti ar...</translation> -<translation id="2889481634493693121">Tālrunī ieslēdziet paziņojumus</translation> <translation id="2889925978073739256">Turpināt bloķēt spraudņus, kas nav ievietoti smilškastē</translation> <translation id="2893168226686371498">Noklusējuma pārlūks</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 teksta fragments}zero{# teksta fragmentu}one{# teksta fragments}other{# teksta fragmenti}}</translation> @@ -2562,6 +2563,7 @@ <translation id="3857807444929313943">Paceliet un pieskarieties vēlreiz</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sinhronizācija ir apturēta</translation> <translation id="3861638017150647085">Lietotājvārds “<ph name="USERNAME" />” nav pieejams.</translation> +<translation id="3861977424605124250">Rādīt palaišanas brīdī</translation> <translation id="3862693525629180217">Apstiprināt, izmantojot iebūvētu sensoru</translation> <translation id="3862788408946266506">Lai instalētu lietotni ar manifesta atribūtu kiosk_only, ir jāizmanto Chrome OS kioska režīms.</translation> <translation id="3865414814144988605">Izšķirtspēja</translation> @@ -2804,7 +2806,6 @@ <translation id="412730574613779332">Varonis</translation> <translation id="4130199216115862831">Ierīces žurnāls</translation> <translation id="4130207949184424187">Šis paplašinājums mainīja iestatījumu, kura lapa tiek parādīta, kad veicat meklēšanu, izmantojot universālo lodziņu.</translation> -<translation id="4130344535649650885">Vai saglabāt paroli Google kontā?</translation> <translation id="4130750466177569591">Piekrītu</translation> <translation id="413121957363593859">Komponenti</translation> <translation id="4131410914670010031">Melnbaltā</translation> @@ -3203,6 +3204,7 @@ <translation id="4627442949885028695">Turpiniet citā ierīcē</translation> <translation id="4628757576491864469">Ierīces</translation> <translation id="4628762811416793313">Linux konteinera iestatīšana netika pabeigta. Lūdzu, mēģiniet vēlreiz.</translation> +<translation id="4629521233550547305">Atvērt profilu “<ph name="PROFILE_NAME" />”</translation> <translation id="4633003931260532286">Paplašinājumam ir nepieciešama “<ph name="IMPORT_NAME" />” versija <ph name="IMPORT_VERSION" /> (vismaz), taču ir instalēta tikai versija <ph name="INSTALLED_VERSION" />.</translation> <translation id="4633757335284074492">Datu dublēšana Google diskā. Varēsiet jebkurā laikā ērti atjaunot datus vai mainīt ierīci. Dublējumā ir ietverti arī lietotņu dati. Dublējumi tiek augšupielādēti Google serveros un tiek šifrēti, izmantojot jūsu bērna Google konta paroli.</translation> <translation id="4634575639321169635">Iestatīt šo ierīci darbam vai personīgai lietošanai</translation> @@ -3931,7 +3933,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Neizdevās saņemt saturu (<ph name="ATTACHMENTS" />) no ierīces <ph name="DEVICE_NAME" />}zero{Neizdevās saņemt saturu (<ph name="ATTACHMENTS" />) no ierīces <ph name="DEVICE_NAME" />}one{Neizdevās saņemt saturu (<ph name="ATTACHMENTS" />) no ierīces <ph name="DEVICE_NAME" />}other{Neizdevās saņemt saturu (<ph name="ATTACHMENTS" />) no ierīces <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Importēts no Firefox</translation> <translation id="5502915260472117187">Bērns</translation> -<translation id="5503858713116291452">Tālrunim ir jāatrodas tuvumā, tam jābūt atbloķētam, un tajā ir jābūt ieslēgtam Bluetooth un Wi-Fi savienojumam. Lai pabeigtu iestatīšanu, izpildiet tālrunī sniegtos norādījumus.</translation> <translation id="5503982651688210506">Lapa <ph name="HOST" /> drīkst arī turpmāk izmantot un kustināt jūsu kameru, kā arī izmantot jūsu mikrofonu</translation> <translation id="5505264765875738116">Vietnēs nevar lūgt atļauju sūtīt paziņojumus</translation> <translation id="5505307013568720083">Beigusies tinte</translation> @@ -3992,6 +3993,7 @@ <translation id="5565735124758917034">Aktīvs</translation> <translation id="5567989639534621706">Lietojumprogrammu kešatmiņas</translation> <translation id="5568069709869097550">Nevarat pieteikties</translation> +<translation id="5571832155627049070">Profila pielāgošana</translation> <translation id="5572851009514199876">Lūdzu, palaidiet pārlūku Chrome un pierakstieties tajā, lai pārlūkā Chrome varētu pārbaudīt, vai jums ir atļauja piekļūt šai vietnei.</translation> <translation id="5575473780076478375">Inkognito paplašinājums: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Radās problēma ar demonstrācijas reģistrācijas pieprasījumu.</translation> @@ -5461,6 +5463,7 @@ <translation id="7280649757394340890">Balss iestatījumi teksta pārvēršanai runā</translation> <translation id="7280877790564589615">Atļaujas pieprasījums</translation> <translation id="7282992757463864530">Informācijas josla</translation> +<translation id="7283555985781738399">Viesa režīms</translation> <translation id="7284411326658527427">Katra persona var personalizēt savu kontu, un katras personas dati ir konfidenciāli.</translation> <translation id="7287143125007575591">Piekļuve liegta.</translation> <translation id="7287411021188441799">Atjaunot noklusējuma fonu</translation> @@ -5840,6 +5843,7 @@ <translation id="7716781361494605745">Netscape sertifikāta izdevējiestādes politikas URL</translation> <translation id="7717014941119698257">Notiek lejupielāde: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Atļaut vietnēm pieprasīt atļauju piekļūt jūsu atrašanās vietas datiem (ieteicams)</translation> +<translation id="771721654176725387">Veicot šo darbību, no šīs ierīces tiks neatgriezeniski dzēsti jūsu pārlūkošanas dati. Lai atkoptu datus, ieslēdziet sinhronizāciju kontā</translation> <translation id="7717845620320228976">Atjauninājumu pieejamības pārbaude</translation> <translation id="7719367874908701697">Lapas tālummaiņa</translation> <translation id="7719588063158526969">Ierīces nosaukums ir pārāk garš</translation> @@ -5876,6 +5880,7 @@ <translation id="7765158879357617694">Pārvietot</translation> <translation id="7765507180157272835">Nepieciešams Bluetooth un Wi-Fi savienojums</translation> <translation id="7766082757934713382">Palīdz samazināt tīkla datu lietojumu, apturot automātiskos lietotņu un sistēmas atjauninājumus.</translation> +<translation id="7766807826975222231">Skatīt ceļvedi</translation> <translation id="7766838926148951335">Piekrist atļaujām</translation> <translation id="7768507955883790804">Vietnēs tiks automātiski lietots šis iestatījums, kad tās apmeklēsiet.</translation> <translation id="7768770796815395237">Mainīt</translation> @@ -6119,6 +6124,7 @@ <translation id="8017176852978888182">Linux koplietotie katalogi</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Saīsne rediģēta</translation> +<translation id="8018298733481692628">Vai dzēst šo profilu?</translation> <translation id="8018313076035239964">Kontrolējiet, kādu informāciju vietnes var izmantot un kāds vietņu saturs jums var tikt rādīts.</translation> <translation id="8023801379949507775">Atjaunināt paplašinājumus tūlīt</translation> <translation id="8026334261755873520">Notīrīt pārlūkošanas datus</translation> @@ -6289,7 +6295,6 @@ <translation id="8211551284753798479">PUK nav derīgs. Atlikuši <ph name="RETRIES" /> mēģinājumi.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Notiek lejupielāde}zero{Notiek lejupielāde}one{Notiek lejupielāde}other{Notiek lejupielāde}}</translation> <translation id="8213449224684199188">Ievadīts foto režīms</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> pieprasa atļauju identificēt jūsu ierīci, lai varētu atskaņot aizsargāto augstākās kvalitātes video un audio saturu.</translation> <translation id="8214489666383623925">Atvērt failu...</translation> <translation id="8214962590150211830">Noņemt šo lietotāju</translation> <translation id="8216351761227087153">Skatīties</translation> @@ -6768,7 +6773,6 @@ <translation id="8774379074441005279">Atjaunošanas apstiprinājums</translation> <translation id="8774934320277480003">Augšējā piemale</translation> <translation id="8775144690796719618">Nederīgs URL</translation> -<translation id="8775163630211761057">Izmantojiet sava Android tālruņa iespējas savā <ph name="DEVICE_TYPE" /> ierīcē.</translation> <translation id="8775653927968399786">{0,plural, =1{Jūsu <ph name="DEVICE_TYPE" /> ierīce tiks automātiski bloķēta pēc # sekundes. Saskaņā ar domēna <ph name="DOMAIN" /> prasībām viedkartei ir jābūt ievietotai.}zero{Jūsu <ph name="DEVICE_TYPE" /> ierīce tiks automātiski bloķēta pēc # sekundēm. Saskaņā ar domēna <ph name="DOMAIN" /> prasībām viedkartei ir jābūt ievietotai.}one{Jūsu <ph name="DEVICE_TYPE" /> ierīce tiks automātiski bloķēta pēc # sekundes. @@ -6959,6 +6963,7 @@ <translation id="8973596347849323817">Varat pielāgot šo ierīci savām vajadzībām. Šīs pieejamības funkcijas var mainīt vēlāk sadaļā Iestatījumi.</translation> <translation id="897414447285476047">Galamērķa fails netika pilnībā lejupielādēts savienojuma problēmas dēļ.</translation> <translation id="897525204902889653">Karantīnas pakalpojums</translation> +<translation id="8975396729541388937">Varat jebkurā laikā anulēt abonementu, saņemtajos e-pasta ziņojumos noklikšķinot uz attiecīgās saites.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{“<ph name="TAB_TITLE" />”}=1{“<ph name="TAB_TITLE" />” un vēl 1 cilne}zero{“<ph name="TAB_TITLE" />” un vēl # cilnes}one{“<ph name="TAB_TITLE" />” un vēl # cilne}other{“<ph name="TAB_TITLE" />” un vēl # cilnes}}</translation> <translation id="8977811652087512276">Nepareiza parole vai bojāts fails.</translation> <translation id="8978154919215542464">Ieslēgta — sinhronizēt visu</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index 8e1770d..a554c853 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Нема компромитирани лозинки}=1{1 компромитирана лозинка}one{{NUM_COMPROMISED} компромитирана лозинка}other{{NUM_COMPROMISED} компромитирани лозинки}}</translation> <translation id="1380028686461971526">Автоматско поврзување на мрежа</translation> <translation id="1380436189840894976">Сепак да се напушти режим „Инкогнито“?</translation> +<translation id="1383597849754832576">Не може да се преземат датотеките за говор. Обидете се повторно подоцна.</translation> <translation id="1383861834909034572">Ќе се отвори кога ќе заврши</translation> <translation id="1383876407941801731">Барај</translation> <translation id="1386791642444521222">Активирајте ја физичката SIM-картичка</translation> @@ -877,7 +878,6 @@ <translation id="1954813140452229842">Грешка при монтирање на споделувањето. Проверете ги вашите акредитиви и обидете се повторно.</translation> <translation id="1956050014111002555">Датотеката содржи повеќе сертификати, но не е увезен ниту еден:</translation> <translation id="1956390763342388273">Ќе се прикачат сите датотеки од „<ph name="FOLDER_PATH" />“. Направете го ова само ако му верувате на сајтот.</translation> -<translation id="1960158217849594135">Да се зачува корисничкото име во вашата сметка на Google?</translation> <translation id="196040970347962278">Прво воспоставете интернет-врска</translation> <translation id="1962233722219655970">Оваа страница користи апликација за матичен клиент што не работи на вашиот компјутер.</translation> <translation id="1963227389609234879">Отстрани ги сите</translation> @@ -903,6 +903,7 @@ <translation id="1984417487208496350">Без заштита (не се препорачува)</translation> <translation id="1987317783729300807">Сметки</translation> <translation id="1989112275319619282">Прелистувај</translation> +<translation id="1990046457226896323">Датотеките за говор се преземени</translation> <translation id="1990512225220753005">Не прикажувај кратенки на страницава</translation> <translation id="1992397118740194946">Не е поставено</translation> <translation id="1992924914582925289">Отстрани од уредот</translation> @@ -1048,7 +1049,6 @@ <translation id="2157474325782140681">За да добиете дополнителни функции, користете приклучна станица од Dell што е дизајнирана да работи со овој Chromebook.</translation> <translation id="215753907730220065">Излези од цел екран</translation> <translation id="2157875535253991059">Страницава е сега на цел екран.</translation> -<translation id="2160589599612868242">Примајте известувања од телефонот на вашиот <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Додај Wi-Fi...</translation> <translation id="2162155940152307086">Синхронизацијата ќе започне откако ќе излезете од поставките за синхронизација</translation> <translation id="2162838847352058695">Не дозволувај сајтовите да преземаат повеќе датотеки автоматски</translation> @@ -1266,6 +1266,7 @@ <translation id="2399699884460174994">Известувањата се вклучени</translation> <translation id="2399939490305346086">Податоци за најавување на безбедносниот клуч</translation> <translation id="2400664245143453337">Потребно е итно ажурирање</translation> +<translation id="2406153734066939945">Да се избрише профилот и неговите податоци?</translation> <translation id="2408018932941436077">Се зачувува картичката</translation> <translation id="2408955596600435184">Внесете го вашиот PIN</translation> <translation id="241082044617551207">Непознат приклучок</translation> @@ -1384,6 +1385,7 @@ <translation id="2526590354069164005">Десктоп</translation> <translation id="2526619973349913024">Провери за ажурирање</translation> <translation id="2527167509808613699">Секаков вид на поврзување</translation> +<translation id="2530166226437958497">Отстранување грешки</translation> <translation id="2532589005999780174">Режим на висок контраст</translation> <translation id="253434972992662860">&Паузирај</translation> <translation id="2534460670861217804">Безбеден HTTP прокси</translation> @@ -1701,7 +1703,6 @@ <translation id="2885729872133513017">Настана проблем при декодирање на одговорот на серверот.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Отвори ја врската со…</translation> -<translation id="2889481634493693121">Вклучете ги известувањата на телефонот</translation> <translation id="2889925978073739256">Продолжи со блокирање неизолирани приклучоци</translation> <translation id="2893168226686371498">Стандарден прелистувач</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 текст}one{# текст}other{# текста}}</translation> @@ -2561,6 +2562,7 @@ <translation id="3857807444929313943">Подигнете и допрете повторно</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: синхронизацијата е паузирана</translation> <translation id="3861638017150647085">Корисничкото име „<ph name="USERNAME" />“ не е достапно</translation> +<translation id="3861977424605124250">Прикажувај при стартување</translation> <translation id="3862693525629180217">Потврди преку вграден сензор</translation> <translation id="3862788408946266506">Апликацијата со атрибут на манифестот „kiosk_only“ мора да се инсталира во режим на киоск на Chrome OS</translation> <translation id="3865414814144988605">Резолуција</translation> @@ -2803,7 +2805,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Дневник на уредот</translation> <translation id="4130207949184424187">Екстензијата ја смени страницата што се прикажува кога пребарувате од Omnibox.</translation> -<translation id="4130344535649650885">Да се зачува лозинката во вашата сметка на Google?</translation> <translation id="4130750466177569591">Се согласувам</translation> <translation id="413121957363593859">Компоненти</translation> <translation id="4131410914670010031">Црно и бело</translation> @@ -3202,6 +3203,7 @@ <translation id="4627442949885028695">Продолжете од друг уред</translation> <translation id="4628757576491864469">Уреди</translation> <translation id="4628762811416793313">Поставувањето на контејнерот на Linux не заврши. Обидете се повторно.</translation> +<translation id="4629521233550547305">Отвори го профилот <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Екстензијата бара „<ph name="IMPORT_NAME" />" со минимална верзија „<ph name="IMPORT_VERSION" />", но инсталирана е само верзијата „<ph name="INSTALLED_VERSION" />"</translation> <translation id="4633757335284074492">Направете бекап на Google Drive. Лесно враќајте ги податоците или менувајте ги уредите во секое време. Бекапов опфаќа податоци од апликациите. Бекапот се прикачува во Google и се шифрира со лозинката за сметката на Google на вашето дете.</translation> <translation id="4634575639321169635">Поставете го уредов за работа или за лична употреба</translation> @@ -3930,7 +3932,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Неуспешно преземање <ph name="ATTACHMENTS" /> од <ph name="DEVICE_NAME" />}one{Неуспешно преземање <ph name="ATTACHMENTS" /> од <ph name="DEVICE_NAME" />}other{Неуспешно преземање <ph name="ATTACHMENTS" /> од <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Увезени од Firefox</translation> <translation id="5502915260472117187">Дете</translation> -<translation id="5503858713116291452">Проверете дали телефонот е во близина, отклучен и со вклучени Bluetooth и Wi-Fi. Следете ги чекорите на телефонот за да го продолжите поставувањето.</translation> <translation id="5503982651688210506">Продолжете да дозволувате <ph name="HOST" /> да ја користи и движи камерата и да го користи микрофонот</translation> <translation id="5505264765875738116">Сајтовите не можат да прашуваат дали да испраќаат известувања</translation> <translation id="5505307013568720083">Нема мастило</translation> @@ -3991,6 +3992,7 @@ <translation id="5565735124758917034">Активно</translation> <translation id="5567989639534621706">Кешови на апликација</translation> <translation id="5568069709869097550">Не може да се најавите</translation> +<translation id="5571832155627049070">Приспособете го вашиот профил</translation> <translation id="5572851009514199876">Започнете и најавете се на Chrome за да може Chrome да провери дали ви е дозволено да пристапите на сајтов.</translation> <translation id="5575473780076478375">Наставка на таен идентитет: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Настана проблем со барањето за регистрација на демо.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Гласовни поставки за „Од текст во говор“</translation> <translation id="7280877790564589615">Побарана е дозвола</translation> <translation id="7282992757463864530">Лента со информации</translation> +<translation id="7283555985781738399">Режим на гостин</translation> <translation id="7284411326658527427">Секое лице може да ја персонализира својата сметка и да ја задржи приватноста на податоците.</translation> <translation id="7287143125007575591">Пристапот е одбиен.</translation> <translation id="7287411021188441799">Врати ја стандардната заднина</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">URL за Политика на орган за сертифицирање на Netscape</translation> <translation id="7717014941119698257">Преземање: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Сајтовите може да ја побараат вашата локација (се препорачува)</translation> +<translation id="771721654176725387">Ова трајно ќе ги избрише податоците од прелистувањето на овој уред. За да ги вратите податоците, вклучете ја синхронизацијата како</translation> <translation id="7717845620320228976">Провери за ажурирања</translation> <translation id="7719367874908701697">Зумирање страница</translation> <translation id="7719588063158526969">Името на уредот е предолго</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Премести</translation> <translation id="7765507180157272835">Потребни се Bluetooth и Wi-Fi</translation> <translation id="7766082757934713382">Помага да се намали сообраќајот на мрежата со паузирање на автоматските ажурирања на апликациите и системот</translation> +<translation id="7766807826975222231">Направете разгледување</translation> <translation id="7766838926148951335">Прифати ги дозволите</translation> <translation id="7768507955883790804">Сајтовите автоматски ја следат оваа поставка кога ги посетувате</translation> <translation id="7768770796815395237">Промени</translation> @@ -6117,6 +6122,7 @@ <translation id="8016266267177410919">Привремена меморија</translation> <translation id="8017176852978888182">Споделени директориуми на Linux</translation> <translation id="8017679124341497925">Кратенката е изменета</translation> +<translation id="8018298733481692628">Да се избрише профилот?</translation> <translation id="8018313076035239964">Контролирајте кои информации може да ги користат веб-сајтовите и кои содржини може да ви ги покажуваат</translation> <translation id="8023801379949507775">Ажурирајте наставки сега</translation> <translation id="8026334261755873520">Исчисти податоци од прелистување</translation> @@ -6287,7 +6293,6 @@ <translation id="8211551284753798479">Погрешен PUK. Имате уште <ph name="RETRIES" /> обиди.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Преземањето е во тек}one{Преземањата се во тек}other{Преземањата се во тек}}</translation> <translation id="8213449224684199188">Влеговте во режим на фотографија</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> сака да го идентификува вашиот уред за да може да ги пушта заштитените аудиовизуелни содржини со највисок квалитет.</translation> <translation id="8214489666383623925">Отвори датотека...</translation> <translation id="8214962590150211830">Отстрани го ова лице</translation> <translation id="8216351761227087153">Гледај</translation> @@ -6769,7 +6774,6 @@ <translation id="8774379074441005279">Потврдете го враќањето</translation> <translation id="8774934320277480003">Маргина на врв</translation> <translation id="8775144690796719618">Неважечка URL-адреса</translation> -<translation id="8775163630211761057">Пренесете го најдоброто од телефонот со Android на вашиот <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Вашиот <ph name="DEVICE_TYPE" /> автоматски ќе се заклучи по # секунда. <ph name="DOMAIN" /> бара паметната картичка да ви остане вметната.}one{Вашиот <ph name="DEVICE_TYPE" /> автоматски ќе се заклучи по # секунда. <ph name="DOMAIN" /> бара паметната картичка да ви остане вметната.}other{Вашиот <ph name="DEVICE_TYPE" /> автоматски ќе се заклучи по # секунди. @@ -6959,6 +6963,7 @@ <translation id="8973596347849323817">Уредот може да го приспособите да одговара на вашите потреби. Овие функции за пристапност може да ги смените подоцна во „Поставки“.</translation> <translation id="897414447285476047">Целната датотека не е целосна поради проблем со врската.</translation> <translation id="897525204902889653">Услуга за карантин</translation> +<translation id="8975396729541388937">Отпишете се во секое време со кликнување на линкот во е-пораките што ги добивате.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />“}=1{„<ph name="TAB_TITLE" />“ и уште 1 картичка}one{„<ph name="TAB_TITLE" />“ и уште # картичка}other{„<ph name="TAB_TITLE" />“ и уште # картички}}</translation> <translation id="8977811652087512276">Неточна лозинка или оштетена датотека</translation> <translation id="8978154919215542464">Вклучено - синхронизирај сѐ</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index 8a1f8fa..de40b66 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{അപഹരിക്കപ്പെട്ട പാസ്വേഡുകൾ ഒന്നുമില്ല}=1{അപഹരിക്കപ്പെട്ട ഒരു പാസ്വേഡ്}other{അപഹരിക്കപ്പെട്ട {NUM_COMPROMISED} പാസ്വേഡുകൾ}}</translation> <translation id="1380028686461971526">നെറ്റ്വർക്കിലേക്ക് സ്വയമേവ കണക്റ്റ് ചെയ്യുക</translation> <translation id="1380436189840894976">അദൃശ്യ മോഡിൽ നിന്ന് എന്തായാലും പുറത്തുകടക്കണോ?</translation> +<translation id="1383597849754832576">സംഭാഷണ ഫയലുകൾ ഡൗൺലോഡ് ചെയ്യാനായില്ല. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="1383861834909034572">പൂര്ത്തിയാകുമ്പോള് തുറക്കുന്നു</translation> <translation id="1383876407941801731">Search</translation> <translation id="1386791642444521222">ഫിസിക്കൽ സിം സജീവമാക്കുക</translation> @@ -873,7 +874,6 @@ <translation id="1954813140452229842">പങ്കിടൽ മൗണ്ട് ചെയ്യുന്നതിൽ പിശക്. ക്രെഡൻഷ്യലുകൾ പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="1956050014111002555">ഫയലില് ഒന്നിലധികം സാക്ഷ്യപ്ത്രങ്ങള് അടങ്ങിയിരിക്കുന്നു, അതിലൊന്നും ഇറക്കുമതി ചെയ്തില്ല:</translation> <translation id="1956390763342388273">"<ph name="FOLDER_PATH" />" ഫോൾഡറിൽ നിന്നുള്ള എല്ലാ ഫയലുകളും ഇത് അപ്ലോഡ് ചെയ്യും. നിങ്ങൾ സൈറ്റിനെ വിശ്വസിക്കുന്നുവെങ്കിൽ മാത്രം ഇത് ചെയ്യുക.</translation> -<translation id="1960158217849594135">നിങ്ങളുടെ Google അക്കൗണ്ടിലേക്ക് ഉപയോക്തൃനാമം സംരക്ഷിക്കണോ?</translation> <translation id="196040970347962278">ആദ്യം ഇന്റർനെറ്റ് കണക്ഷൻ സ്ഥാപിക്കുക</translation> <translation id="1962233722219655970">ഈ പേജ് നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ പ്രവർത്തിക്കാത്ത ഒരു നേറ്റീവ് ക്ലയന്റ് ആപ്പ് ഉപയോഗിക്കുന്നു.</translation> <translation id="1963227389609234879">എല്ലാം നീക്കംചെയ്യൂ</translation> @@ -899,6 +899,7 @@ <translation id="1984417487208496350">പരിരക്ഷയില്ല (ശുപാർശ ചെയ്യുന്നില്ല)</translation> <translation id="1987317783729300807">അക്കൗണ്ടുകൾ</translation> <translation id="1989112275319619282">ബ്രൗസ് ചെയ്യുക</translation> +<translation id="1990046457226896323">സംഭാഷണ ഫയലുകൾ ഡൗൺലോഡ് ചെയ്തു</translation> <translation id="1990512225220753005">ഈ പേജിൽ കുറുക്കുവഴികൾ കാണിക്കരുത്</translation> <translation id="1992397118740194946">സജ്ജമാക്കിയിട്ടില്ല</translation> <translation id="1992924914582925289">ഉപകരണത്തിൽ നിന്ന് നീക്കം ചെയ്യുക</translation> @@ -1044,7 +1045,6 @@ <translation id="2157474325782140681">അധിക ഫീച്ചറുകൾ ലഭിക്കാൻ, ഈ Chromebook-ൽ പ്രവർത്തിക്കുന്നതിനായി രൂപകൽപ്പന ചെയ്തിരിക്കുന്ന Dell ഡോക്കിംഗ് സ്റ്റേഷൻ ഉപയോഗിക്കുക.</translation> <translation id="215753907730220065">പൂര്ണ്ണ സ്ക്രീനില് നിന്ന് പുറത്തുകടക്കുക</translation> <translation id="2157875535253991059">ഈ പേജ് ഇപ്പോൾ പൂർണ്ണമായ സ്ക്രീനിലാണ്.</translation> -<translation id="2160589599612868242">നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> എന്നതിൽ നിങ്ങളുടെ ഫോണിൽ നിന്നുള്ള അറിയിപ്പുകൾ സ്വീകരിക്കുക</translation> <translation id="216169395504480358">Wi-Fi ചേർക്കുക...</translation> <translation id="2162155940152307086">നിങ്ങൾ സമന്വയിപ്പിക്കൽ ക്രമീകരണം വിടുമ്പോൾ, സമന്വയിപ്പിക്കൽ ആരംഭിക്കും</translation> <translation id="2162838847352058695">ഒന്നിലധികം ഫയലുകൾ സ്വയമേവ ഡൗൺലോഡ് ചെയ്യുന്നതിൽ നിന്ന് സൈറ്റുകളെ ബ്ലോക്ക് ചെയ്യുക</translation> @@ -1262,6 +1262,7 @@ <translation id="2399699884460174994">അറിയിപ്പുകൾ ഓണാക്കി</translation> <translation id="2399939490305346086">സുരക്ഷാ കീയുടെ സൈൻ ഇൻ ഡാറ്റ</translation> <translation id="2400664245143453337">ഉടൻ അപ്ഡേറ്റ് ആവശ്യമാണ്</translation> +<translation id="2406153734066939945">ഈ പ്രൊഫൈലും ഇതിലെ ഡാറ്റയും ഇല്ലാതാക്കണോ?</translation> <translation id="2408018932941436077">കാർഡ് സംരക്ഷിക്കുന്നു</translation> <translation id="2408955596600435184">നിങ്ങളുടെ പിൻ നൽകുക</translation> <translation id="241082044617551207">അജ്ഞാത പ്ലഗ് ഇൻ</translation> @@ -1380,6 +1381,7 @@ <translation id="2526590354069164005">ഡെസ്ക്ടോപ്പ്</translation> <translation id="2526619973349913024">അപ്ഡേറ്റിനായി പരിശോധിക്കുക</translation> <translation id="2527167509808613699">ഏത് രീതിയിലുള്ള കണക്ഷനും</translation> +<translation id="2530166226437958497">ട്രബിൾഷൂട്ടിംഗ്</translation> <translation id="2532589005999780174">ഉയർന്ന ദൃശ്യതീവ്രത മോഡ്</translation> <translation id="253434972992662860">&താല്ക്കാലികമായി നിര്ത്തുക</translation> <translation id="2534460670861217804">സുരക്ഷിത HTTP പ്രോക്സി</translation> @@ -1697,7 +1699,6 @@ <translation id="2885729872133513017">സെർവറിന്റെ പ്രതികരണം ഡീകോഡ് ചെയ്യുമ്പോൾ ഒരു പ്രശ്നമുണ്ടായി.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">ഇനിപ്പറയുന്നതിൽ ലിങ്ക് തുറക്കുക...</translation> -<translation id="2889481634493693121">നിങ്ങളുടെ ഫോണിൽ അറിയിപ്പുകൾ ഓണാക്കുക</translation> <translation id="2889925978073739256">അൺസാൻഡ്ബോക്സ് ചെയ്ത പ്ലഗിന്നുകൾ തടയുന്നത് തുടരുക</translation> <translation id="2893168226686371498">ഡിഫോൾട്ട് ബ്രൗസര്</translation> <translation id="2893917546370257247">{COUNT,plural, =1{ഒരു ടെക്സ്റ്റ്}other{# ടെക്സ്റ്റുകൾ}}</translation> @@ -2557,6 +2558,7 @@ <translation id="3857807444929313943">വിരൽ ഉയർത്തി, വീണ്ടും സ്പർശിക്കുക</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: സമന്വയം താൽക്കാലികമായി നിർത്തി</translation> <translation id="3861638017150647085">"<ph name="USERNAME" />" എന്ന ഉപയോക്തൃനാമം ലഭ്യമല്ല</translation> +<translation id="3861977424605124250">ആരംഭത്തിൽ കാണിക്കുക</translation> <translation id="3862693525629180217">കമ്പ്യൂട്ടറിൽ അടങ്ങിയ സെൻസർ വഴി പരിശോധിച്ചുറപ്പിക്കുക</translation> <translation id="3862788408946266506">Chrome OS കിയോസ്ക് മോഡിൽ, 'kiosk_only' മാനിഫെസ്റ്റ് ആട്രിബ്യൂട്ട് ഉള്ള ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്യണം</translation> <translation id="3865414814144988605">റെസല്യൂഷൻ</translation> @@ -2798,7 +2800,6 @@ <translation id="412730574613779332">സ്പാൻഡെക്സ്</translation> <translation id="4130199216115862831">ഉപകരണ ലോഗ്</translation> <translation id="4130207949184424187">നിങ്ങൾ ഓമ്നിബോക്സിൽ നിന്ന് തിരയുമ്പോൾ ദൃശ്യമാകുന്ന പേജിനെ ഈ വിപുലീകരണം മാറ്റി.</translation> -<translation id="4130344535649650885">നിങ്ങളുടെ Google അക്കൗണ്ടിലേക്ക് പാസ്വേഡ് സംരക്ഷിക്കണോ?</translation> <translation id="4130750466177569591">ഞാന് അംഗീകരിക്കുന്നു</translation> <translation id="413121957363593859">ഘടകങ്ങൾ</translation> <translation id="4131410914670010031">കറുപ്പും വെള്ളയും</translation> @@ -3197,6 +3198,7 @@ <translation id="4627442949885028695">മറ്റൊരു ഉപകരണത്തിൽ നിന്ന് തുടരുക</translation> <translation id="4628757576491864469">ഉപകരണങ്ങൾ</translation> <translation id="4628762811416793313">Linux കണ്ടെയ്നർ സജ്ജീകരണം പൂർത്തിയായില്ല. വീണ്ടും ശ്രമിക്കുക.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> പ്രൊഫെെൽ തുറക്കുക</translation> <translation id="4633003931260532286">വിപുലീകരണത്തിന് "<ph name="IMPORT_VERSION" />" എന്ന പതിപ്പെങ്കിലുമുള്ള "<ph name="IMPORT_NAME" />" ആവശ്യമാണെങ്കിലും "<ph name="INSTALLED_VERSION" />" പതിപ്പ് മാത്രം ഇൻസ്റ്റാൾ ചെയ്തിരിക്കുന്നു</translation> <translation id="4633757335284074492">Google ഡ്രൈവിലേക്ക് ബാക്കപ്പെടുക്കുക. ഏത് സമയത്തും ഡാറ്റ എളുപ്പത്തിൽ പുനഃസ്ഥാപിക്കുകയോ ഉപകരണം മാറുകയോ ചെയ്യുക. ഈ ബാക്കപ്പിൽ ആപ്പ് ഡാറ്റയും ഉൾപ്പെടുന്നു. ബാക്കപ്പുകൾ Google-ലേക്ക് അപ്ലോഡ് ചെയ്ത്, നിങ്ങളുടെ കുട്ടിയുടെ Google അക്കൗണ്ട് പാസ്വേഡ് ഉപയോഗിച്ച് എൻക്രിപ്റ്റ് ചെയ്യും.</translation> <translation id="4634575639321169635">ഔദ്യോഗിക അല്ലെങ്കിൽ വ്യക്തിപരമായ ഉപയോഗത്തിനായി ഈ ഉപകരണം സജ്ജീകരിക്കുക</translation> @@ -3925,7 +3927,6 @@ <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="5503858713116291452">നിങ്ങളുടെ ഫോൺ സമീപത്തുണ്ടെന്നും അൺലോക്ക് ചെയ്തിട്ടുണ്ടെന്നും Bluetooth-ഉം വൈഫൈയും ഓണാക്കിയിട്ടുണ്ടെന്നും ഉറപ്പാക്കുക. സജ്ജീകരണം പൂർത്തിയാക്കാൻ നിങ്ങളുടെ ഫോണിലെ ഘട്ടങ്ങൾ പിന്തുടരുക.</translation> <translation id="5503982651688210506">നിങ്ങളുടെ ക്യാമറ ഉപയോഗിക്കാനും ചലിപ്പിക്കാനും, മൈക്രോഫോൺ ഉപയോഗിക്കാനും <ph name="HOST" /> -നെ, തുടർന്നും അനുവദിക്കുക</translation> <translation id="5505264765875738116">അറിയിപ്പുകൾ അയയ്ക്കാൻ സൈറ്റുകൾക്ക് അനുവാദം ചോദിക്കാനാവില്ല</translation> <translation id="5505307013568720083">മഷിയില്ല</translation> @@ -3986,6 +3987,7 @@ <translation id="5565735124758917034">സജീവമാണ്</translation> <translation id="5567989639534621706">ആപ്പ് കാഷെകള്</translation> <translation id="5568069709869097550">സൈൻ ഇൻ ചെയ്യാനായില്ല</translation> +<translation id="5571832155627049070">നിങ്ങളുടെ പ്രൊഫൈൽ ഇഷ്ടാനുസൃതമാക്കുക</translation> <translation id="5572851009514199876">ആരംഭിച്ച് Chrome-ൽ സൈൻ ഇൻ ചെയ്യുന്നതിലൂടെ, നിങ്ങൾക്ക് ഈ സൈറ്റ് ആക്സസ് ചെയ്യാൻ അനുവാദമുണ്ടോയെന്ന് Chrome-ന് പരിശോധിക്കാനാവും.</translation> <translation id="5575473780076478375">ആള്മാറാട്ട വിപുലീകരണം: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">ഡെമോ രജിസ്ട്രേഷൻ അഭ്യർത്ഥനയിൽ ഒരു പ്രശ്നം സംഭവിച്ചു.</translation> @@ -5457,6 +5459,7 @@ <translation id="7280649757394340890">ടെക്സ്റ്റ് ടു സ്പീച്ച് ശബ്ദ ക്രമീകരണം</translation> <translation id="7280877790564589615">അനുമതി അഭ്യർത്ഥിച്ചു</translation> <translation id="7282992757463864530">വിവരബാര്</translation> +<translation id="7283555985781738399">അതിഥി മോഡ്</translation> <translation id="7284411326658527427">ഓരോ വ്യക്തിക്കും അവരുടെ അക്കൗണ്ട് വ്യക്തിപരമാക്കാനും ഡാറ്റ സ്വകാര്യമായി സൂക്ഷിക്കാനും കഴിയും.</translation> <translation id="7287143125007575591">ആക്സസ് നിരസിച്ചു.</translation> <translation id="7287411021188441799">ഡിഫോൾട്ട് പശ്ചാത്തലം പുനഃസ്ഥാപിക്കുക</translation> @@ -5836,6 +5839,7 @@ <translation id="7716781361494605745">നെറ്റ്സ്കേപ്പ് സർട്ടിഫിക്കേഷൻ അതോറിറ്റി നയ URL</translation> <translation id="7717014941119698257">ഡൗൺലോഡുചെയ്യുന്നു: <ph name="STATUS" /></translation> <translation id="7717134585801378441">നിങ്ങളുടെ ലൊക്കേഷൻ ഉപയോഗിക്കാൻ സൈറ്റുകൾക്ക് അനുവാദം ചോദിക്കാം (നിർദ്ദേശിക്കുന്നത്)</translation> +<translation id="771721654176725387">ഇത് ഈ ഉപകരണത്തിൽ നിന്ന് നിങ്ങളുടെ ബ്രൗസിംഗ് ഡാറ്റ ശാശ്വതമായി ഇല്ലാതാക്കും. ഡാറ്റ വീണ്ടെടുക്കാൻ, ഇനിപ്പറയുന്ന ഇമെയിൽ ഐഡി ഉപയോഗിച്ച് സമന്വയം ഓണാക്കുക</translation> <translation id="7717845620320228976">അപ്ഡേറ്റുകൾ പരിശോധിക്കുക</translation> <translation id="7719367874908701697">പേജ് സൂം ചെയ്യുക</translation> <translation id="7719588063158526969">ഉപകരണത്തിന്റെ പേര് ദെെർഘ്യമേറിയതാണ്</translation> @@ -5872,6 +5876,7 @@ <translation id="7765158879357617694">നീക്കുക</translation> <translation id="7765507180157272835">Bluetooth-ഉം വൈഫൈയും ആവശ്യമാണ്</translation> <translation id="7766082757934713382">ആപ്പിന്റെയും സിസ്റ്റത്തിന്റെയും സ്വയമേവയുള്ള അപ്ഡേറ്റുകൾ താൽക്കാലികമായി നിർത്തി നെറ്റ്വർക്ക് ഡാറ്റാ ഉപയോഗം കുറയ്ക്കാൻ സഹായിക്കുന്നു</translation> +<translation id="7766807826975222231">ഒരു ടൂര് നടത്തുക</translation> <translation id="7766838926148951335">അനുമതികൾ അംഗീകരിക്കുക</translation> <translation id="7768507955883790804">നിങ്ങൾ സെെറ്റുകൾ സന്ദർശിക്കുമ്പോൾ അവ ഈ ക്രമീകരണം സ്വയമേവ പിന്തുടരും</translation> <translation id="7768770796815395237">മാറ്റുക</translation> @@ -6116,6 +6121,7 @@ <translation id="8017176852978888182">Linux-ൽ നിന്ന് പങ്കിട്ട ഡയറക്റ്ററികൾ</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">കുറുക്കുവഴി എഡിറ്റ് ചെയ്തു</translation> +<translation id="8018298733481692628">ഈ പ്രൊഫൈൽ ഇല്ലാതാക്കണോ?</translation> <translation id="8018313076035239964">വെബ്സൈറ്റുകൾക്ക് എന്തൊക്കെ വിവരങ്ങൾ ഉപയോഗിക്കാനാവുമെന്നും ഏതൊക്കെ ഉള്ളടക്കം നിങ്ങൾക്ക് ദൃശ്യമാക്കാനാവുമെന്നും നിയന്ത്രിക്കുക</translation> <translation id="8023801379949507775">ഇപ്പോള് വിപുലീകരണങ്ങള് അപ്ഡേറ്റ് ചെയ്യുക</translation> <translation id="8026334261755873520">ബ്രൌസിംഗ് ഡാറ്റ മായ്ക്കുക</translation> @@ -6286,7 +6292,6 @@ <translation id="8211551284753798479">PUK അസാധുവാണ്. നിങ്ങൾക്ക് <ph name="RETRIES" /> ശ്രമങ്ങൾ കൂടി ബാക്കിയുണ്ട്.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ഡൗൺലോഡ് പുരോഗമിക്കുന്നു}other{ഡൗൺലോഡുകൾ പുരോഗമിക്കുന്നു}}</translation> <translation id="8213449224684199188">ഫോട്ടോ മോഡിലേക്ക് പ്രവേശിച്ചു</translation> -<translation id="8213866992824776555">ഏറ്റവും ഉയർന്ന നിലവാരമുള്ള പരിരക്ഷിത വീഡിയോയും ഓഡിയോയും പ്ലേ ചെയ്യാൻ <ph name="DOMAIN" /> നിങ്ങളുടെ ഉപകരണം തിരിച്ചറിയാൻ ആഗ്രഹിക്കുന്നു.</translation> <translation id="8214489666383623925">ഫയല് തുറക്കുക...</translation> <translation id="8214962590150211830">ഈ വ്യക്തിയെ നീക്കംചെയ്യുക</translation> <translation id="8216351761227087153">കാണുക</translation> @@ -6764,7 +6769,6 @@ <translation id="8774379074441005279">പുനഃസ്ഥാപിക്കൽ സ്ഥിരീകരിക്കുക</translation> <translation id="8774934320277480003">മുകൾഭാഗത്തെ മാർജിൻ</translation> <translation id="8775144690796719618">URL അസാധുവാണ്</translation> -<translation id="8775163630211761057">നിങ്ങളുടെ Android ഫോണിലെ ഏറ്റവും മികച്ചവ <ph name="DEVICE_TYPE" /> എന്നതിലേക്ക് വിപുലീകരിക്കുക</translation> <translation id="8775653927968399786">{0,plural, =1{നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> # സെക്കൻഡിൽ സ്വയമേവ ലോക്ക് ചെയ്യും. <ph name="DOMAIN" />-ൽ തുടരുന്നതിന് നിങ്ങളുടെ സ്മാർട്ട് കാർഡ് ഇൻസേർട്ട് ചെയ്ത നിലയിൽ തുടരേണ്ടതുണ്ട്.}other{നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> # സെക്കൻഡിൽ സ്വയമേവ ലോക്ക് ചെയ്യും. <ph name="DOMAIN" />-ൽ തുടരുന്നതിന് നിങ്ങളുടെ സ്മാർട്ട് കാർഡ് ഇൻസേർട്ട് ചെയ്ത നിലയിൽ തുടരേണ്ടതുണ്ട്.}}</translation> @@ -6953,6 +6957,7 @@ <translation id="8973596347849323817">ആവശ്യങ്ങൾക്ക് അനുസരിച്ച് നിങ്ങൾക്ക് ഈ ഉപകരണം ഇഷ്ടാനുസൃതമാക്കാം. ഈ ഉപയോഗസഹായി ഫീച്ചറുകൾ പിന്നീട് ക്രമീകരണത്തിൽ മാറ്റാവുന്നതാണ്.</translation> <translation id="897414447285476047">കണക്ഷൻ പ്രശ്നം കാരണം ലക്ഷ്യസ്ഥാന ഫയൽ പൂർത്തിയായില്ല.</translation> <translation id="897525204902889653">സേവനം നിഷേധിക്കുക</translation> +<translation id="8975396729541388937">നിങ്ങൾക്ക് ലഭിക്കുന്ന ഇമെയിലുകളിലുള്ള ലിങ്ക് ക്ലിക്ക് ചെയ്ത് ഏത് സമയത്തും വരിക്കാരല്ലാതാകുക.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" എന്നതും മറ്റൊരു ടാബും}other{"<ph name="TAB_TITLE" />" എന്നതും മറ്റ് # ടാബുകളും}}</translation> <translation id="8977811652087512276">പാസ്വേഡ് തെറ്റോ ഫയൽ കേടോ ആണ്</translation> <translation id="8978154919215542464">ഓണാണ് - എല്ലാം സമന്വയിപ്പിക്കുക</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index 937bfe7..8a130c42 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Алдагдсан нууц үг алга}=1{Алдагдсан 1 нууц үг}other{{NUM_COMPROMISED} алдагдсан нууц үг}}</translation> <translation id="1380028686461971526">Сүлжээнд автоматаар холбогдох</translation> <translation id="1380436189840894976">Нууцлалын горимоос гарах уу?</translation> +<translation id="1383597849754832576">Ярианы файлуудыг татах боломжгүй. Дараа дахин оролдоно уу.</translation> <translation id="1383861834909034572">Дуусах үед нээж байна</translation> <translation id="1383876407941801731">Хайлт</translation> <translation id="1386791642444521222">Биет SIM идэвхжүүлэх</translation> @@ -872,7 +873,6 @@ <translation id="1954813140452229842">Хуваалцлыг залгаж чадсангүй. Мандат үнэмлэхээ шалгаад дахин оролдоно уу.</translation> <translation id="1956050014111002555">Файл нь олон тооны гэрчилгээнүүд агуулсан байсан бөгөөд тэдгээрээс алийг нь ч импортолж аваагүй байна:</translation> <translation id="1956390763342388273">Энэ нь "<ph name="FOLDER_PATH" />"-н бүх файлыг байршуулна. Та тэдгээр файлыг зөвхөн энэ сайтад итгэдэг тохиолдолд байршуулна уу.</translation> -<translation id="1960158217849594135">Хэрэглэгчийн нэрийг Google Бүртгэлдээ хадгалах уу?</translation> <translation id="196040970347962278">Эхлээд интернэт холболт үүсгэнэ үү</translation> <translation id="1962233722219655970">Энэ хуудас нь таны компьютер дээр ажиллах боломжгүй Native Client аппликейшнийг ашиглаж байна.</translation> <translation id="1963227389609234879">Бүгдийг устгах</translation> @@ -898,6 +898,7 @@ <translation id="1984417487208496350">Хамгаалалт байхгүй (зөвлөдөггүй)</translation> <translation id="1987317783729300807">Хаяг</translation> <translation id="1989112275319619282">Хөтлөх</translation> +<translation id="1990046457226896323">Ярианы файлуудыг татсан</translation> <translation id="1990512225220753005">Энэ хуудсан дээр товчлолыг бүү харуул</translation> <translation id="1992397118740194946">Суугдаагүй</translation> <translation id="1992924914582925289">Төхөөрөмжөөс хасах</translation> @@ -1043,7 +1044,6 @@ <translation id="2157474325782140681">Нэмэлт онцлогийг авахын тулд энэ Chromebook-тэй ажиллахад зориулсан Dell холбогч станцыг ашиглана уу.</translation> <translation id="215753907730220065">Дэлгэц дүүрэн харах горимоос гарах</translation> <translation id="2157875535253991059">Энэ хуудас нь одоо дэлгэц дүүрэн харагдаж байна.</translation> -<translation id="2160589599612868242">Утасныхаа мэдэгдлийг <ph name="DEVICE_TYPE" /> дээрээ хүлээн аваарай</translation> <translation id="216169395504480358">Wi-Fi нэмэх...</translation> <translation id="2162155940152307086">Таныг синк хийх тохиргооноос гарсны дараа синк хийж эхэлнэ</translation> <translation id="2162838847352058695">Сайтуудыг автоматаар олон файл татахыг нь блоклоно</translation> @@ -1261,6 +1261,7 @@ <translation id="2399699884460174994">Мэдэгдлийг асаасан</translation> <translation id="2399939490305346086">Аюулгүй байдлын түлхүүрийн нэвтрэх өгөгдөл</translation> <translation id="2400664245143453337">Нэн даруй шинэчлэх шаардлагатай</translation> +<translation id="2406153734066939945">Энэ профайл болон үүний өгөгдлийг устгах уу?</translation> <translation id="2408018932941436077">Картыг хадгалж байна</translation> <translation id="2408955596600435184">ПИН-ээ оруулна уу</translation> <translation id="241082044617551207">Үл мэдэх нэмэлт өргөтгөл</translation> @@ -1378,6 +1379,7 @@ <translation id="2526590354069164005">Десктоп</translation> <translation id="2526619973349913024">Шинэчлэлт хийгдсэн эсэхийг шалгах</translation> <translation id="2527167509808613699">Ямар ч төрлийн холболт</translation> +<translation id="2530166226437958497">Асуудал шийдэх</translation> <translation id="2532589005999780174">Тодосгогч горим</translation> <translation id="253434972992662860">&Түр зогсоох</translation> <translation id="2534460670861217804">HTTP проксиг аюулгүй байлгах</translation> @@ -1695,7 +1697,6 @@ <translation id="2885729872133513017">Серверийн хариу үйлдлийн кодыг тайлахад асуудал гарлаа.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Холбоосыг ...-аар нээх</translation> -<translation id="2889481634493693121">Утсан дээрээ мэдэгдлийг асаах</translation> <translation id="2889925978073739256">Хамгаалалтгүй нэмэлт өргөтгөлүүдийг блоклох үйлдлийг үргэлжлүүлэх</translation> <translation id="2893168226686371498">Стандарт веб хөтөч</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 текст}other{# текст}}</translation> @@ -2555,6 +2556,7 @@ <translation id="3857807444929313943">Дээшлүүлээд дахин хүрэх</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Синкийг түр зогссон</translation> <translation id="3861638017150647085">"<ph name="USERNAME" />" хэрэглэгчийн нэр боломжгүй байна</translation> +<translation id="3861977424605124250">Гарааны компанид харуулах</translation> <translation id="3862693525629180217">Built-in мэдрэгчээр баталгаажуулах</translation> <translation id="3862788408946266506">"Kiosk_only" тодорхойлогч файлын шинжтэй аппыг Chrome-н үйлдлийн системийн киоск горимд суулгах шаардлагатай</translation> <translation id="3865414814144988605">Нягтрал</translation> @@ -2796,7 +2798,6 @@ <translation id="412730574613779332">Спандекс</translation> <translation id="4130199216115862831">Device Log</translation> <translation id="4130207949184424187">Энэ өргөтгөл нь Omnibox-с хайлт хийхэд гарах илэрцийг өөрчилсөн.</translation> -<translation id="4130344535649650885">Нууц үгийг Google Бүртгэлдээ хадгалах уу?</translation> <translation id="4130750466177569591">Би зөвшөөрч байна.</translation> <translation id="413121957363593859">Бүрдлүүд</translation> <translation id="4131410914670010031">Хар ба цагаан</translation> @@ -3195,6 +3196,7 @@ <translation id="4627442949885028695">Өөр төхөөрөмжөөс үргэлжлүүлэх</translation> <translation id="4628757576491864469">Төхөөрөмжүүд</translation> <translation id="4628762811416793313">Linux-н контейнерыг тохируулж дууссангүй. Дахин оролдоно уу.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> профайлыг нээх</translation> <translation id="4633003931260532286">Өргөтгөлд хамгийн бага "<ph name="IMPORT_VERSION" />" хувилбартай "<ph name="IMPORT_NAME" />" шаардлагатай хэдий ч зөвхөн "<ph name="INSTALLED_VERSION" />" хувилбарыг суулгасан байна</translation> <translation id="4633757335284074492">Google Драйвд хуулбарлана уу. Өгөгдлийг амархан сэргээх эсвэл хүссэн үедээ төхөөрөмж хооронд сэлгэнэ үү. Энэ нөөцлөлтөд аппын өгөгдөл багтана. Нөөцлөлтийг Google-д байршуулдаг бөгөөд таны хүүхдийн Google Бүртгэлийн нууц үгийг ашиглан шифрлэдэг.</translation> <translation id="4634575639321169635">Энэ төхөөрөмжийг ажлын эсвэл хувийн хэрэгцээндээ зориулж тохируулах</translation> @@ -3923,7 +3925,6 @@ <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="5503858713116291452">Таны утас ойрхон, түгжээг нь тайлсан, Bluetooth, Wi-Fi-г нь асаасан эсэхийг шалгана уу. Та тохируулгыг дуусгахын тулд өөрийн утсан дээрх алхмуудыг дагана уу.</translation> <translation id="5503982651688210506"><ph name="HOST" />-д таны камерыг ашиглах, хөдөлгөх болон микрофоныг ашиглахыг үргэлжлүүлэн зөвшөөрөх</translation> <translation id="5505264765875738116">Сайтууд нь танд мэдэгдэл илгээх зөвшөөрөл асуух боломжгүй</translation> <translation id="5505307013568720083">Бэх дууссан</translation> @@ -3984,6 +3985,7 @@ <translation id="5565735124758917034">Идэвхтэй</translation> <translation id="5567989639534621706">Аппликейшний кэшүүд</translation> <translation id="5568069709869097550">Нэвтрэх боломжгүй</translation> +<translation id="5571832155627049070">Профайлаа өөрчлөх</translation> <translation id="5572851009514199876">Chrome-г эхлүүлж, нэвтэрснээр Chrome таныг энэ сайтад хандах эрхтэй эсэхийг шалгах болно.</translation> <translation id="5575473780076478375">Нууцлалтай өргөтгөл: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Демо бүртгэлийн хүсэлтэд алдаа гарлаа.</translation> @@ -5452,6 +5454,7 @@ <translation id="7280649757394340890">Текстийг яриа болгох дуу хоолойны тохиргоо</translation> <translation id="7280877790564589615">Зөвшөөрөл хүссэн</translation> <translation id="7282992757463864530">Мэдээллийн самбар</translation> +<translation id="7283555985781738399">Зочны горим</translation> <translation id="7284411326658527427">Хүн бүр бүртгэлээ хувийн болгож, өгөгдлөө хувьдаа хадгалж болно.</translation> <translation id="7287143125007575591">Хандалтыг зөвшөөрөөгүй.</translation> <translation id="7287411021188441799">Өгөгдмөл дэвсгэрийг сэргээх</translation> @@ -5831,6 +5834,7 @@ <translation id="7716781361494605745">Netscape Сертификат Эрхийн Журам URL</translation> <translation id="7717014941119698257"><ph name="STATUS" />-ыг татаж авч байна:</translation> <translation id="7717134585801378441">Сайтууд таны байршлыг харахыг хүсэх боломжтой (санал болгосон)</translation> +<translation id="771721654176725387">Ингэснээр таны интернэтээр үзсэн өгөгдлийг энэ төхөөрөмжөөс бүрмөсөн устгана. Өгөгдлийг сэргээхийн тулд синк хийхийг дараахад асаана уу</translation> <translation id="7717845620320228976">Шинэчлэлтээ шалгах</translation> <translation id="7719367874908701697">Хуудсыг томруулах</translation> <translation id="7719588063158526969">Төхөөрөмжийн нэр хэт урт байна</translation> @@ -5867,6 +5871,7 @@ <translation id="7765158879357617694">Зөөх</translation> <translation id="7765507180157272835">Bluetooth болон Wi-Fi шаардлагатай</translation> <translation id="7766082757934713382">Автомат апп болон систем шинэчлэлтийг түр зогсоосноор сүлжээний дата ашиглалтыг багасгахад тусалдаг</translation> +<translation id="7766807826975222231">Аялцгаая</translation> <translation id="7766838926148951335">Зөвшөөрлийг зөвшөөрөх</translation> <translation id="7768507955883790804">Таныг сайт руу зочлоход энэ тохиргоог сайт автоматаар дагана</translation> <translation id="7768770796815395237">Өөрчлөх</translation> @@ -6108,6 +6113,7 @@ <translation id="8016266267177410919">Түр хадгалах сан</translation> <translation id="8017176852978888182">Linux-н хуваалцсан лавлахууд</translation> <translation id="8017679124341497925">Товчлолыг зассан</translation> +<translation id="8018298733481692628">Энэ профайлыг устгах уу?</translation> <translation id="8018313076035239964">Вебсайтын ашиглах боломжтой мэдээлэл болон танд харуулах агуулгыг удирдах</translation> <translation id="8023801379949507775">Өргөтгөлийг одоо шинэчил</translation> <translation id="8026334261755873520">Хайлтын өгөгдлийг цэвэрлэх</translation> @@ -6277,7 +6283,6 @@ <translation id="8211551284753798479">PUK буруу байна. Танд <ph name="RETRIES" /> оролдлого үлдлээ.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Татаж байна}other{Татаж байна}}</translation> <translation id="8213449224684199188">Зургийн горимыг оруулсан</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> таны төхөөрөмжийг тодорхойлохыг хүсэж байгаа бөгөөд ингэснээр энэ нь хамгийн өндөр чанартай хамгаалагдсан видео болон аудио тоглуулах боломжтой.</translation> <translation id="8214489666383623925">Файлыг нээ...</translation> <translation id="8214962590150211830">Энэ хүнийг устга</translation> <translation id="8216351761227087153">Үзэх</translation> @@ -6754,7 +6759,6 @@ <translation id="8774379074441005279">Сэргээхийг баталгаажуулах</translation> <translation id="8774934320277480003">Дээд хүрээ</translation> <translation id="8775144690796719618">Хүчингүй URL</translation> -<translation id="8775163630211761057">Android утасныхаа хамгийн сайныг <ph name="DEVICE_TYPE" /> руугаа өргөтгөөрэй</translation> <translation id="8775653927968399786">{0,plural, =1{Таны <ph name="DEVICE_TYPE" />-г # секундийн дараа автоматаар түгжинэ. <ph name="DOMAIN" /> таныг ухаалаг картаа оруулсан хэвээр байхыг шаардана.}other{Таны <ph name="DEVICE_TYPE" />-г # секундийн дараа автоматаар түгжинэ. <ph name="DOMAIN" /> таныг ухаалаг картаа оруулсан хэвээр байхыг шаардана.}}</translation> @@ -6943,6 +6947,7 @@ <translation id="8973596347849323817">Та энэ төхөөрөмжийг хүссэнээрээ тохируулах боломжтой. Эдгээр хүртээмжит онцлогийг дараа нь Тохиргоо хэсэгт өөрчлөх боломжтой.</translation> <translation id="897414447285476047">Зорилтот файл холболтын асуудлаас дутуу татагдсан байна.</translation> <translation id="897525204902889653">Карантины үйлчилгээ</translation> +<translation id="8975396729541388937">Хүлээн авсан имэйл дээрх холбоосыг товшиж хүссэн үедээ захиалгаа цуцлаарай.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" болон бусад 1 таб}other{"<ph name="TAB_TITLE" />" болон бусад # таб}}</translation> <translation id="8977811652087512276">Нууц үг буруу эсвэл файл гэмтсэн байна</translation> <translation id="8978154919215542464">Идэвхжүүлэх - бүгдийг синк хийх</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index 69e164d1..b1b9213 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -873,7 +873,6 @@ <translation id="1954813140452229842">शेअर माउंट करताना एरर आली. कृपया तुमची क्रेडेंशियल तपासा आणि पुन्हा प्रयत्न करा.</translation> <translation id="1956050014111002555">फाइलमध्ये एकाधिक प्रमाणपत्रे आहेत ज्यापैकी एकही इंपोर्ट झालेले नाही: </translation> <translation id="1956390763342388273">हे "<ph name="FOLDER_PATH" />" वरील सर्व फाइल अपलोड करेल. जर तुमचा साइटवर विश्वास असेल तरच हे करा.</translation> -<translation id="1960158217849594135">तुमच्या Google खाते मध्ये वापरकर्ता नाव सेव्ह करायचे आहे का?</translation> <translation id="196040970347962278">प्रथम इंटरनेट कनेक्शन स्थापित करा</translation> <translation id="1962233722219655970">हे पेज एक मूळ क्लायंट अॅप वापरते जो तुमच्या कॉंप्युटरवर काम करत नाही.</translation> <translation id="1963227389609234879">सर्व काढून टाका</translation> @@ -1044,7 +1043,6 @@ <translation id="2157474325782140681">अतिरिक्त वैशिष्ट्ये मिळवण्यासाठी, या Chromebook सोबत काम करणारे Dell डॉक स्टेशन वापरा.</translation> <translation id="215753907730220065">पूर्ण स्क्रीनमधून निर्गमन करा</translation> <translation id="2157875535253991059">हे पृष्ठ आता फुल स्क्रीन असेल.</translation> -<translation id="2160589599612868242">तुमच्या फोनमधील सूचना तुमच्या <ph name="DEVICE_TYPE" /> वर मिळवा</translation> <translation id="216169395504480358">वाय-फाय जोडा...</translation> <translation id="2162155940152307086">तुम्ही सिंक सेटिंग्ज सोडल्यास सिंक सुरू होईल</translation> <translation id="2162838847352058695">साइटना एकाहून अधिक फाइल आपोआप डाउनलोड करण्यापासून ब्लॉक करा</translation> @@ -1697,7 +1695,6 @@ <translation id="2885729872133513017">सर्व्हर प्रतिसाद डीकोड करताना समस्या आली.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">यासह लिंक उघडा...</translation> -<translation id="2889481634493693121">तुमच्या फोनवर सूचना सुरू करा</translation> <translation id="2889925978073739256">सॅन्डबॉक्स न केलेले प्लगिन अवरोधित करणे सुरू ठेवा</translation> <translation id="2893168226686371498">डीफॉल्ट ब्राउझर</translation> <translation id="2893917546370257247">{COUNT,plural, =1{एक एसएमएस}other{# एसएमएस}}</translation> @@ -2598,6 +2595,7 @@ <translation id="3900789207771372462">काही एक्स्टेंशन वैयक्तिक माहितीच्या समावेशासह तुमची ब्राउझिंग ॲक्टिव्हिटी पाहू शकतात.</translation> <translation id="3900966090527141178">पासवर्ड एक्सपोर्ट करा</translation> <translation id="3901991538546252627"><ph name="NAME" /> वर कनेक्ट करीत आहे</translation> +<translation id="3903187154317825986">बिल्ट-इन कीबोर्ड</translation> <translation id="3904326018476041253">स्थान सेवा</translation> <translation id="3905761538810670789">अॅप दुरुस्त करा</translation> <translation id="3906232975181435906">मोबाइल प्रोफाइल इंस्टॉल करत आहे, <ph name="NETWORK_COUNT" /> पैकी <ph name="NETWORK_INDEX" /> नेटवर्क, <ph name="NETWORK_NAME" /></translation> @@ -2796,7 +2794,6 @@ <translation id="412730574613779332">स्पॅनडेक्स</translation> <translation id="4130199216115862831">डिव्हाइस लॉग</translation> <translation id="4130207949184424187">तुम्ही ओम्निबॉक्समधून शोध घेता तेव्हा कोणते पेज दर्शविले जाते ते या एक्स्टेंशनने बदलले आहे.</translation> -<translation id="4130344535649650885">तुमच्या Google खाते मध्ये पासवर्ड सेव्ह करायचा आहे का?</translation> <translation id="4130750466177569591">मला मान्य आहे</translation> <translation id="413121957363593859">घटक</translation> <translation id="4131410914670010031">कृष्ण धवल</translation> @@ -2893,6 +2890,7 @@ <translation id="4267924571297947682">पालकाकडे परवानगी मागा</translation> <translation id="4267953847983678297">मोबाइल नेटवर्कशी आपोआप कनेक्ट करा</translation> <translation id="4268025649754414643">की एनसिफरमेन्ट</translation> +<translation id="4268670020635416342">नाव किंवा ऑफिस, वैयक्तिक अथवा मूल अशी लेबले जोडा</translation> <translation id="4270393598798225102">आवृत्ती <ph name="NUMBER" /></translation> <translation id="4274667386947315930">साइन-इन डेटा</translation> <translation id="4275291496240508082">स्टार्टअप आवाज</translation> @@ -3922,7 +3920,6 @@ <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="5503858713116291452">तुमचा फोन जवळपास असल्याची, अनलॉक केलेला असल्याची आणि त्यामध्ये ब्लूटूथ व वाय-फाय सुरू असल्याची खात्री करा. सेटअप पूर्ण करण्यासाठी तुमच्या फोनवरील पायर्या फॉलो करा.</translation> <translation id="5503982651688210506"><ph name="HOST" /> ला तुमचा कॅमेरा वापरण्याची आणि तो हलवण्याची व तुमचा मायक्रोफोन वापरण्याची अनुमती देणे सुरू ठेवा.</translation> <translation id="5505264765875738116">साइट सूचना पाठवण्यास सांगू शकत नाहीत</translation> <translation id="5505307013568720083">शाई संपली</translation> @@ -3983,6 +3980,7 @@ <translation id="5565735124758917034">सक्रिय</translation> <translation id="5567989639534621706">ॲप्लिकेशन कॅशे</translation> <translation id="5568069709869097550">साइन इन करणे शक्य नाही</translation> +<translation id="5571832155627049070">तुमची प्रोफाइल कस्टमाइझ करा</translation> <translation id="5572851009514199876">कृपया सुरुवात करा आणि Chrome मध्ये साइन इन करा जेणेकरून तुम्हाला या साइट ॲक्सेस करण्याची परवानगी आहे किंवा नाही ते Chrome तपासू शकेल.</translation> <translation id="5575473780076478375">गुप्त एक्स्टेंशन: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">डेमो नोंदणी विनंतीला समस्या आली.</translation> @@ -4610,6 +4608,7 @@ <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{आपल्या नेटवर्कवरील नवीन प्रिंटर}other{आपल्या नेटवर्कवरील नवीन प्रिंटर}}</translation> <translation id="6285770818046456882">तुमच्यासोबत शेअर करत असलेल्या डिव्हाइसने ट्रान्सफर रद्द केली</translation> <translation id="6290613030083731160">जवळपास शेअर करत असलेली कोणतीही डिव्हाइस उपलब्ध नाहीत. <ph name="LINK_BEGIN" />अधिक जाणून घ्या<ph name="LINK_END" /></translation> +<translation id="6291741848715722067">कंफर्मेशन कोड</translation> <translation id="6291949900244949761">साइटला केव्हा USB डिव्हाइस ॲक्सेस करायचे आहेत हे विचारा (शिफारस केलेले)</translation> <translation id="6291953229176937411">फाइंडर मध्ये &दर्शवा</translation> <translation id="6295158916970320988">सर्व साइट</translation> @@ -5833,6 +5832,7 @@ <translation id="7719367874908701697">पेज झूम करा</translation> <translation id="7719588063158526969">डिव्हाइसचे नाव खूप मोठे आहे</translation> <translation id="7721179060400456005">विंडोला दृश्ये स्पॅन करण्याची अनुमती द्या</translation> +<translation id="7721237513035801311"><ph name="SWITCH" /> (<ph name="DEVICE_TYPE" />)</translation> <translation id="7722040605881499779">अपडेटसाठी आवश्यक: <ph name="NECESSARY_SPACE" /></translation> <translation id="7724603315864178912">कट करा</translation> <translation id="7728465250249629478">डिव्हाइसची भाषा बदला</translation> @@ -5864,6 +5864,7 @@ <translation id="7765158879357617694">हलवा</translation> <translation id="7765507180157272835">ब्लूटूथ आणि वाय-फाय आवश्यक आहे</translation> <translation id="7766082757934713382">ऑटोमॅटिक अॅप आणि सिस्टम अपडेट थांबवून नेटवर्क डेटा वापर कमी करण्यात मदत करते</translation> +<translation id="7766807826975222231">एक फेरफटका मारा</translation> <translation id="7766838926148951335">परवानग्या स्वीकारा</translation> <translation id="7768507955883790804">तुम्ही साइटना भेट देता तेव्हा त्या आपोआप हे सेटिंग फॉलो करतात</translation> <translation id="7768770796815395237">बदला</translation> @@ -6276,7 +6277,6 @@ <translation id="8211551284753798479">अवैध PUK. तुमच्याकडे <ph name="RETRIES" /> प्रयत्न शिल्लक आहेत.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{डाउनलोड सुरू आहे}other{डाउनलोड सुरू आहेत}}</translation> <translation id="8213449224684199188">फोटो मोड टाकला</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> ला तुमचे डिव्हाइस ओळखायचे आहे जेणेकरून, ते सर्वोच्च गुणवत्तेमधील संरक्षित व्हिडिओ आणि ऑडिओ प्ले करू शकेल.</translation> <translation id="8214489666383623925">फाइल उघडा...</translation> <translation id="8214962590150211830">या व्यक्तीस काढून टाका</translation> <translation id="8216351761227087153">पहा</translation> @@ -6755,7 +6755,6 @@ <translation id="8774379074441005279">रिस्टोअर करण्याची खात्री करा</translation> <translation id="8774934320277480003">शीर्ष समास</translation> <translation id="8775144690796719618">चुकीची URL</translation> -<translation id="8775163630211761057">तुमच्या Android फोनमधील सर्वोत्तम सुविधांचा वापर तुमच्या <ph name="DEVICE_TYPE" /> करा</translation> <translation id="8775653927968399786">{0,plural, =1{तुमचे <ph name="DEVICE_TYPE" /> # सेकंदामध्ये आपोआप लॉक होईल. <ph name="DOMAIN" /> ला तुम्ही तुमचे स्मार्ट कार्ड घालून ठेवणे आवश्यक आहे.}other{तुमचे <ph name="DEVICE_TYPE" /> # सेकंदांमध्ये आपोआप लॉक होईल. <ph name="DOMAIN" /> ला तुम्ही तुमचे स्मार्ट कार्ड घालून ठेवणे आवश्यक आहे.}}</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index 0f1cb26..27dcd4d 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Tiada kata laluan yang terjejas}=1{1 kata laluan yang terjejas}other{{NUM_COMPROMISED} kata laluan yang terjejas}}</translation> <translation id="1380028686461971526">Autosambung kepada rangkaian</translation> <translation id="1380436189840894976">Keluar daripada mod inkognito juga?</translation> +<translation id="1383597849754832576">Tidak dapat memuat turun fail pertuturan. Cuba lagi nanti.</translation> <translation id="1383861834909034572">Pembukaan apabila lengkap</translation> <translation id="1383876407941801731">Carian</translation> <translation id="1386791642444521222">Aktifkan SIM</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Ralat melekapkan perkongsian. Sila semak bukti kelayakan anda dan cuba lagi.</translation> <translation id="1956050014111002555">Fail mengandungi berbilang sijil, tiada yang diimport:</translation> <translation id="1956390763342388273">Tindakan ini akan memuat naik semua fail daripada "<ph name="FOLDER_PATH" />". Lakukan tindakan ini hanya jika anda mempercayai tapak tersebut.</translation> -<translation id="1960158217849594135">Simpan nama pengguna pada Akaun Google anda?</translation> <translation id="196040970347962278">Wujudkan sambungan internet dahulu</translation> <translation id="1962233722219655970">Halaman ini menggunakan aplikasi Native Client yang tidak berfungsi pada komputer anda.</translation> <translation id="1963227389609234879">Buang Semua</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Tiada perlindungan (tidak disyorkan)</translation> <translation id="1987317783729300807">Akaun</translation> <translation id="1989112275319619282">Semak Imbas</translation> +<translation id="1990046457226896323">Fail pertuturan dimuat turun</translation> <translation id="1990512225220753005">Jangan paparkan pintasan pada halaman ini</translation> <translation id="1992397118740194946">Tidak ditetapkan</translation> <translation id="1992924914582925289">Alih keluar daripada peranti</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Gunakan stesen dok Dell yang direka khusus untuk Chromebook ini untuk mendapatkan ciri tambahan.</translation> <translation id="215753907730220065">Keluar Daripada Skrin Penuh</translation> <translation id="2157875535253991059">Halaman ini kini dalam skrin penuh.</translation> -<translation id="2160589599612868242">Terima pemberitahuan daripada telefon pada <ph name="DEVICE_TYPE" /> anda</translation> <translation id="216169395504480358">Tambah Wi-Fi...</translation> <translation id="2162155940152307086">Penyegerakan akan bermula selepas anda meninggalkan tetapan penyegerakan</translation> <translation id="2162838847352058695">Sekat tapak daripada memuat turun beberapa fail secara automatik</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Pemberitahuan dihidupkan</translation> <translation id="2399939490305346086">Data log masuk kunci keselamatan</translation> <translation id="2400664245143453337">Kemas kini segera diperlukan</translation> +<translation id="2406153734066939945">Padamkan profil dan data profil ini?</translation> <translation id="2408018932941436077">Menyimpan kad</translation> <translation id="2408955596600435184">Masukkan PIN anda</translation> <translation id="241082044617551207">Pemalam tidak diketahui</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Desktop</translation> <translation id="2526619973349913024">Semak kemas kini</translation> <translation id="2527167509808613699">Mana-mana jenis sambungan</translation> +<translation id="2530166226437958497">Menyelesai masalah</translation> <translation id="2532589005999780174">Mod kontras tinggi</translation> <translation id="253434972992662860">&Jeda</translation> <translation id="2534460670861217804">Proksi HTTP Selamat</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Masalah telah berlaku semasa menyahkod respons pelayan.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Buka pautan dengan...</translation> -<translation id="2889481634493693121">Hidupkan pemberitahuan pada telefon anda</translation> <translation id="2889925978073739256">Teruskan menyekat pemalam tanpa kotak pasir</translation> <translation id="2893168226686371498">Penyemak imbas lalai</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 teks}other{# teks}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Angkat jari, kemudian sentuh lagi</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Penyegerakan dijeda</translation> <translation id="3861638017150647085">Nama pengguna "<ph name="USERNAME" />" tidak tersedia</translation> +<translation id="3861977424605124250">Tunjukkan pada permulaan</translation> <translation id="3862693525629180217">Sahkan melalui penderia terbina dalam</translation> <translation id="3862788408946266506">Apl dengan atribut manifes 'kiosk_only' mesti dipasang dalam mod kios OS Chrome OS</translation> <translation id="3865414814144988605">Peleraian</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Log Peranti</translation> <translation id="4130207949184424187">Sambungan ini telah menukar halaman yang ditunjukkan apabila anda membuat carian daripada Kotak Omni.</translation> -<translation id="4130344535649650885">Simpan kata laluan pada Akaun Google anda?</translation> <translation id="4130750466177569591">Saya bersetuju</translation> <translation id="413121957363593859">Komponen</translation> <translation id="4131410914670010031">Hitam putih</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Teruskan daripada peranti lain</translation> <translation id="4628757576491864469">Peranti</translation> <translation id="4628762811416793313">Penyediaan bekas Linux tidak lengkap. Sila cuba lagi.</translation> +<translation id="4629521233550547305">Buka profil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Sambungan memerlukan "<ph name="IMPORT_NAME" />" dengan versi minimum "<ph name="IMPORT_VERSION" />", tetapi hanya versi "<ph name="INSTALLED_VERSION" />" yang ada dipasang</translation> <translation id="4633757335284074492">Sandarkan pada Google Drive. Pulihkan data atau tukar peranti dengan mudah pada bila-bila masa. Sandaran ini merangkumi data apl. Sandaran dimuat naik pada Google dan disulitkan dengan menggunakan kata laluan Akaun Google anak anda.</translation> <translation id="4634575639321169635">Sediakan peranti ini untuk kegunaan kerja atau peribadi</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Gagal untuk menerima <ph name="ATTACHMENTS" /> daripada <ph name="DEVICE_NAME" />}other{Gagal untuk menerima <ph name="ATTACHMENTS" /> daripada <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Diimport Daripada Firefox</translation> <translation id="5502915260472117187">Anak</translation> -<translation id="5503858713116291452">Pastikan telefon anda berada berdekatan, dibuka kunci dan Bluetooth serta Wi-Fi dihidupkan. Ikut langkah pada telefon anda untuk menyelesaikan persediaan.</translation> <translation id="5503982651688210506">Teruskan membenarkan <ph name="HOST" /> menggunakan dan mengalihkan kamera anda serta menggunakan mikrofon anda</translation> <translation id="5505264765875738116">Tapak tidak boleh membuat permintaan untuk menghantar pemberitahuan</translation> <translation id="5505307013568720083">Kehabisan dakwat</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Aktif</translation> <translation id="5567989639534621706">Cache aplikasi</translation> <translation id="5568069709869097550">Tidak boleh log masuk</translation> +<translation id="5571832155627049070">Sesuaikan profil anda</translation> <translation id="5572851009514199876">Sila mulakan dan log masuk ke Chrome supaya Chrome boleh menyemak sama ada anda dibenarkan mengakses tapak ini.</translation> <translation id="5575473780076478375">Sambungan Inkognito: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Masalah berkaitan permintaan pendaftaran tunjuk cara telah berlaku.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Tetapan suara Teks ke Pertuturan</translation> <translation id="7280877790564589615">Kebenaran diminta</translation> <translation id="7282992757463864530">Bar Maklumat</translation> +<translation id="7283555985781738399">Mod tetamu</translation> <translation id="7284411326658527427">Setiap orang boleh memeribadikan akaun mereka dan merahsiakan data.</translation> <translation id="7287143125007575591">Akses ditolak.</translation> <translation id="7287411021188441799">Pulihkan latar lalai</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">URL Dasar Pihak Berkuasa Pensijilan Netscape</translation> <translation id="7717014941119698257">Memuat turun: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Tapak boleh meminta lokasi anda (disyorkan)</translation> +<translation id="771721654176725387">Tindakan ini akan memadamkan data penyemakan imbas anda daripada peranti ini selama-lamanya. Untuk memulihkan data, hidupkan penyegerakan sebagai</translation> <translation id="7717845620320228976">Semak kemas kini</translation> <translation id="7719367874908701697">Zum halaman</translation> <translation id="7719588063158526969">Nama peranti terlalu panjang</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Alih</translation> <translation id="7765507180157272835">Bluetooth dan Wi-Fi diperlukan</translation> <translation id="7766082757934713382">Bantu mengurangkan penggunaan data rangkaian dengan menjedakan kemas kini apl dan sistem automatik</translation> +<translation id="7766807826975222231">Buat lawatan</translation> <translation id="7766838926148951335">Terima kebenaran</translation> <translation id="7768507955883790804">Tapak mengikut tetapan ini secara automatik apabila anda melawatnya</translation> <translation id="7768770796815395237">Tukar</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">Direktori kongsi Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Pintasan diedit</translation> +<translation id="8018298733481692628">Padamkan profil ini?</translation> <translation id="8018313076035239964">Kawal maklumat yang boleh tapak web gunakan dan kandungan yang boleh ditunjukkan kepada anda</translation> <translation id="8023801379949507775">Kemas kini sambungan sekarang</translation> <translation id="8026334261755873520">Kosongkan data semakan imbas</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">PUK tidak sah. Anda mempunyai <ph name="RETRIES" /> percubaan lagi.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Muat turun sedang berlangsung}other{Muat turun sedang berlangsung}}</translation> <translation id="8213449224684199188">Mod foto dimasukkan</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> mahu mengenal pasti peranti anda supaya video dan audio yang dilindungi dapat dimainkan dengan kualiti tertinggi.</translation> <translation id="8214489666383623925">Buka Fail...</translation> <translation id="8214962590150211830">Alih Keluar Orang Ini</translation> <translation id="8216351761227087153">Tonton</translation> @@ -6768,7 +6773,6 @@ <translation id="8774379074441005279">Sahkan Pemulihan</translation> <translation id="8774934320277480003">Jidar atas</translation> <translation id="8775144690796719618">URL tidak sah</translation> -<translation id="8775163630211761057">Perluas manfaat telefon Android kepada <ph name="DEVICE_TYPE" /> anda</translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> anda akan dikunci secara automatik dalam masa # saat. <ph name="DOMAIN" /> menghendaki anda memastikan kad pintar anda tidak dikeluarkan.}other{<ph name="DEVICE_TYPE" /> anda akan dikunci secara automatik dalam masa # saat. <ph name="DOMAIN" /> menghendaki anda memastikan kad pintar anda tidak dikeluarkan.}}</translation> @@ -6957,6 +6961,7 @@ <translation id="8973596347849323817">Anda boleh menyesuaikan peranti ini mengikut keperluan anda. Ciri kebolehaksesan ini boleh diubah kemudian dalam Tetapan.</translation> <translation id="897414447285476047">Fail destinasi tidak lengkap kerana isu sambungan.</translation> <translation id="897525204902889653">Perkhidmatan Kuarantin</translation> +<translation id="8975396729541388937">Nyahlanggan pada bila-bila masa dengan mengklik pautan dalam e-mel yang anda terima.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" dan 1 tab lain}other{"<ph name="TAB_TITLE" />" dan # tab lain}}</translation> <translation id="8977811652087512276">Kata laluan salah atau fail rosak</translation> <translation id="8978154919215542464">Hidup - segerakkan semuanya</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index 63c9fa1..3282661 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{ကျိုးပေါက်ထားသည့် စကားဝှက်များ မရှိပါ}=1{ကျိုးပေါက်ထားသည့် စကားဝှက် 1 ခု}other{ကျိုးပေါက်ထားသည့် စကားဝှက် {NUM_COMPROMISED} ခု}}</translation> <translation id="1380028686461971526">ကွန်ရက်သို့ အော်တို ချိတ်ဆက်ရန်</translation> <translation id="1380436189840894976">မည်သို့ပင်ဖြစ်စေ ရုပ်ဖျက်မုဒ်မှ ထွက်လိုပါသလား။</translation> +<translation id="1383597849754832576">တိုက်ရိုက်စာတန်းဖိုင်များကို ဒေါင်းလုဒ်လုပ်၍ မရပါ။ နောက်မှ ထပ်စမ်းကြည့်ပါ။</translation> <translation id="1383861834909034572">ပြီးဆုံးသည့် အခါမှာ ဖွင့်မည်</translation> <translation id="1383876407941801731">ရှာဖွေမှု</translation> <translation id="1386791642444521222">ဆင်းမ်ကတ်ကို ဖွင့်ရန်</translation> @@ -877,7 +878,6 @@ <translation id="1954813140452229842">မျှဝေဖိုင်တွဲကို တင်ရာတွင် အမှားအယွင်းရှိသည်။ အထောက်အထားများကို စစ်ဆေးပြီး ထပ်စမ်းကြည့်ပါ။</translation> <translation id="1956050014111002555">ဖိုင်ထဲမှာ လက်မှတ် အများအပြား ပါခဲ့သည်၊ ၎င်းတို့ထဲက တစ်ခုကိုမှ မတင်သွင်းခဲ့ပါ။:</translation> <translation id="1956390763342388273">၎င်းသည် "<ph name="FOLDER_PATH" />" ရှိဖိုင်များ အားလုံးကို အပ်လုဒ်လုပ်သွားပါမည်။ ဝဘ်ဆိုက်ကို ယုံကြည်ရမှသာ ဤသို့လုပ်ဆောင်ပါ။</translation> -<translation id="1960158217849594135">အသုံးပြုသူအမည်ကို သင့် Google Account တွင် သိမ်းမလား။</translation> <translation id="196040970347962278">အင်တာနက်ချိတ်ဆက်မှု ဦးစွာ စတင်ပါ</translation> <translation id="1962233722219655970">ဒီစာမျက်နှာက Native Client အက်ပ်ကို အသုံးပြုရာ သင်၏ ကွန်ပျူတာမှာ အလုပ် မလုပ်ပါ။</translation> <translation id="1963227389609234879">အားလုံးဖယ်ရှားရန်</translation> @@ -903,6 +903,7 @@ <translation id="1984417487208496350">ကာကွယ်မှုမရှိပါ (အကြံပြုမထားပါ)</translation> <translation id="1987317783729300807">အကောင့်များ</translation> <translation id="1989112275319619282">ကြည့်ရန်</translation> +<translation id="1990046457226896323">တိုက်ရိုက်စာတန်းဖိုင်များ ဒေါင်းလုဒ်လုပ်ပြီးပြီ</translation> <translation id="1990512225220753005">ဖြတ်လမ်းလင့်ခ်များကို ဤစာမျက်နှာတွင် မပြပါနှင့်</translation> <translation id="1992397118740194946">မသတ်မှတ်ရသေး</translation> <translation id="1992924914582925289">စက်မှ ဖယ်ရှားရန်</translation> @@ -1048,7 +1049,6 @@ <translation id="2157474325782140681">နောက်ထပ်ဝန်ဆောင်မှုများ ရရှိရန် ဤ Chromebook နှင့်တွဲသုံးရန် ထုတ်လုပ်ထားသော Dell အထိုင်စက်ကို အသုံးပြုပါ။</translation> <translation id="215753907730220065">မျက်နှာပြင် အပြည့်မှ ထွက်ရန်</translation> <translation id="2157875535253991059">ဤစာမျက်နှာသည် ယခု စကရင်ပြည့်ဖြစ်သည်။</translation> -<translation id="2160589599612868242">သင့် <ph name="DEVICE_TYPE" /> တွင် သင်၏ဖုန်းမှ အကြောင်းကြားချက်များကို လက်ခံနိုင်သည်</translation> <translation id="216169395504480358">ကြိုးမဲ့ကို ထည့်ပေးရန်...</translation> <translation id="2162155940152307086">စင့်ခ်ဆက်တင်များကို သင်ပိတ်လိုက်သည်နှင့် စတင်၍ စင့်ခ်လုပ်သွားပါမည်</translation> <translation id="2162838847352058695">ဖိုင်အများအပြားကို ဝဘ်ဆိုက်များက အလိုအလျောက်ဒေါင်းလုဒ်လုပ်ခြင်းအား ပိတ်ထားရန်</translation> @@ -1266,6 +1266,7 @@ <translation id="2399699884460174994">အကြောင်းကြားချက်များ ဖွင့်ထားသည်</translation> <translation id="2399939490305346086">လုံခြုံရေးကီး လက်မှတ်ထိုးဝင်ခြင်းဒေတာများ</translation> <translation id="2400664245143453337">ချက်ချင်း အပ်ဒိတ်လုပ်ရန် လိုအပ်သည်</translation> +<translation id="2406153734066939945">ဤပရိုဖိုင်နှင့် ၎င်း၏ဒေတာကို ဖျက်မလား။</translation> <translation id="2408018932941436077">ကတ်ကို သိမ်းနေသည်</translation> <translation id="2408955596600435184">သင့်ပင်နံပါတ်ကို ထည့်ပါ</translation> <translation id="241082044617551207">အမည်မသိ ပလတ်အင်</translation> @@ -1384,6 +1385,7 @@ <translation id="2526590354069164005">ဒက်စက်တော့</translation> <translation id="2526619973349913024">အဆင့်မြှင့်ရန် စစ်ခြင်း</translation> <translation id="2527167509808613699">မည်သည့် ချိတ်ဆက်မှု မဆို</translation> +<translation id="2530166226437958497">ပြဿနာရှာဖွေဖြေရှင်းခြင်း</translation> <translation id="2532589005999780174">ဖြူမဲခြားနားချက် များသော မုဒ်</translation> <translation id="253434972992662860">&ဆိုင်းငံ့</translation> <translation id="2534460670861217804">လုံခြုံသည့် HTTP ပရောက်စီ</translation> @@ -1701,7 +1703,6 @@ <translation id="2885729872133513017">ဆာဗာတုံ့ပြန်ချက်ကို ကုဒ်ဖြေရာတွင် အမှားအယွင်းရှိနေသည်။</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">... ဖြင့် လင့် ဖွင့်ရန်</translation> -<translation id="2889481634493693121">သင့်ဖုန်းတွင် အကြောင်းကြားချက်များ ဖွင့်ခြင်း</translation> <translation id="2889925978073739256">unsandboxed ပလတ်အင်များအားဆက်လက် ပိတ်ဆို့ထားရန်</translation> <translation id="2893168226686371498">ပုံသေ ဘရောင်ဇာ</translation> <translation id="2893917546370257247">{COUNT,plural, =1{စာတို 1 စောင်}other{စာတို # စောင်}}</translation> @@ -2561,6 +2562,7 @@ <translation id="3857807444929313943">မြှောက်ပါ၊ ထို့နောက် ပြန်ထိပါ</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />− စင့်ခ်ကို ခေတ္တရပ်ထားသည်</translation> <translation id="3861638017150647085">အသုံးပြုသူအမည် "<ph name="USERNAME" />" ကို မရနိုင်ပါ</translation> +<translation id="3861977424605124250">စတင်ချိန်တွင် ပြရန်</translation> <translation id="3862693525629180217">ပူးတွဲပါ အာရုံခံဆင်ဆာ မှတစ်ဆင့် အတည်ပြုရန်</translation> <translation id="3862788408946266506">'kiosk_only' မန်နီးဖက်စ်ရည်ညွှန်းချက်ပါသည့် အက်ပ်ကို Chrome OS kiosk မုဒ်တွင် ထည့်သွင်းရမည်</translation> <translation id="3865414814144988605">ပုံရိပ်ပြတ်သားကိန်း</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">စပန်းဒက်စ်</translation> <translation id="4130199216115862831">စက်ပစ္စည်း မှတ်စုစာရင်း</translation> <translation id="4130207949184424187">Omnibox မှ သင်ရှာဖွေသောအခါ စာမျက်နှာမှ ပြသသည်များကို ဤတိုးချဲလိုင်းမှ ပြောင်းလဲခဲ့၏။</translation> -<translation id="4130344535649650885">စကားဝှက်ကို သင့် Google Account တွင် သိမ်းမလား။</translation> <translation id="4130750466177569591">ကျွန်ုပ် သဘောတူ</translation> <translation id="413121957363593859">အစိတ်အပိုင်းများ</translation> <translation id="4131410914670010031">အမည်း နှင့် အဖြူ</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">အခြားစက်ပစ္စည်းမှ ဆက်လုပ်ပါ</translation> <translation id="4628757576491864469">စက်ပစ္စည်းများ</translation> <translation id="4628762811416793313">Linux ကွန်တိန်နာ စနစ်ထည့်သွင်းခြင်း ပြီးမြောက်မှုမရှိပါ။ ထပ်စမ်းကြည့်ပါ။</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> ပရိုဖိုင် ဖွင့်ရန်</translation> <translation id="4633003931260532286">နောက်ဆက်တွဲသည် အနိမ့်ဆုံးဗားရှင်း "<ph name="IMPORT_VERSION" />" ရှိသည့် "<ph name="IMPORT_NAME" />" ကို လိုအပ်သော်လည်း ဗားရှင်း "<ph name="INSTALLED_VERSION" />" ကိုသာ ထည့်သွင်းထားသည်</translation> <translation id="4633757335284074492">Google Drive သို့ မိတ္တူကူးရန်။ ဒေတာများကို အလွယ်တကူ ပြန်ယူပါ သို့မဟုတ် စက်ပစ္စည်းကို အချိန်မရွေး ပြောင်းပါ။ ဤမိတ္တူတွင် အက်ပ်ဒေတာများ ပါဝင်သည်။ မိတ္တူများကို Google သို့ အပ်လုဒ်လုပ်ပြီး သင့်ကလေး၏ Google အကောင့်စကားဝှက်သုံး၍ အသွင်ဝှက်ထားပါသည်။</translation> <translation id="4634575639321169635">အလုပ် သို့မဟုတ် ကိုယ်ရေးကိုယ်တာအတွက် ဤစက်ကို စနစ်ထည့်သွင်းရန်</translation> @@ -3929,7 +3931,6 @@ <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="5503858713116291452">သင့်ဖုန်းသည် အနီးတွင်ရှိပြီး လော့ခ်ဖွင့်ထားကာ ဘလူးတုသ်နှင့် Wi-Fi ဖွင့်ထားကြောင်း သေချာပါစေ။ စနစ်ထည့်သွင်းမှု အပြီးသတ်ရန် သင့်ဖုန်းပေါ်ရှိအဆင့်များကို ဆောင်ရွက်ပါ။</translation> <translation id="5503982651688210506">သင့်ကင်မရာ သုံးရန်၊ ရွှေ့ရန်နှင့် သင့်မိုက်ကရိုဖုန်း အသုံးပြုရန်အတွက် <ph name="HOST" /> ကို ဆက်လက်ခွင့်ပြုရန်</translation> <translation id="5505264765875738116">ဝဘ်ဆိုက်များက အကြောင်းကြားချက်များပို့ရန် တောင်းဆို၍မရပါ</translation> <translation id="5505307013568720083">မင်ကုန်နေသည်</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">အသက်ဝင်နေ</translation> <translation id="5567989639534621706">အပလီကေးရှင်း ကက်ရှ်များ</translation> <translation id="5568069709869097550">လက်မှတ်ထိုးဝင်၍ မရပါ။</translation> +<translation id="5571832155627049070">သင့်ပရိုဖိုင်ကို စိတ်ကြိုက်ပြင်ရန်</translation> <translation id="5572851009514199876">သင်သည် ဤဆိုက်ကို ကြည့်ရှုခွင့်ရှိမရှိ Chrome က စစ်ဆေးပေးရန် စတင်၍ Chrome သို့ လက်မှတ်ထိုးဝင်ပါ။</translation> <translation id="5575473780076478375">Incognito အိတ်စတန်းရှင်း: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">သရုပ်ပြမုဒ် မှတ်ပုံတင်ခြင်းတောင်းဆိုချက်တွင် အမှားအယွင်းရှိနေသည်။</translation> @@ -5456,6 +5458,7 @@ <translation id="7280649757394340890">'စာသားမှ စကားပြောသို့ ပြောင်းခြင်း' အသံဆက်တင်များ</translation> <translation id="7280877790564589615">ခွင့်ပြုချက် တောင်းဆို၏</translation> <translation id="7282992757463864530">အချက်အလက်ဘားတန်း</translation> +<translation id="7283555985781738399">ဧည့်သည်မုဒ်</translation> <translation id="7284411326658527427">လူတိုင်းက မိမိအကောင့်ကို ပုဂ္ဂိုလ်ရေးသီးသန့်ပြုလုပ်ကာ ဒေတာများ သီးသန့်သိမ်းနိုင်သည်။</translation> <translation id="7287143125007575591">အသုံးပြုခွင့် မရပါ။</translation> <translation id="7287411021188441799">မူရင်းနောက်ခံပုံကို ပြန်ယူရန်</translation> @@ -5835,6 +5838,7 @@ <translation id="7716781361494605745">Netscape လက်မှတ်ထုတ်ပေးရေး အာဏာပိုင် မူဝါဒ URL</translation> <translation id="7717014941119698257">ဒေါင်းလုပ်လုပ်နေ: <ph name="STATUS" /></translation> <translation id="7717134585801378441">ဝက်ဆိုက်များက သင့်တည်နေရာကို မေးနိုင်သည် (အကြံပြုထားသည်)</translation> +<translation id="771721654176725387">၎င်းသည် ဖွင့်ကြည့်ထားသည့်မှတ်တမ်းဒေတာကို ဤစက်ထဲမှ အပြီးဖျက်လိုက်ပါမည်။ ဒေတာပြန်ယူရန် အောက်ပါအဖြစ် စင့်ခ်လုပ်ခြင်းကို ဖွင့်ပါ-</translation> <translation id="7717845620320228976">အပ်ဒိတ်များစစ်ရန်</translation> <translation id="7719367874908701697">စာမျက်နှာဇူးမ်</translation> <translation id="7719588063158526969">စက်အမည် ရှည်လွန်းသည်</translation> @@ -5871,6 +5875,7 @@ <translation id="7765158879357617694">ရွှေ့ရန်</translation> <translation id="7765507180157272835">ဘလူးတုသ်နှင့် Wi-Fi လိုအပ်သည်</translation> <translation id="7766082757934713382">အလိုအလျောက်အက်ပ်များနှင့် စနစ် အပ်ဒိတ်လုပ်ခြင်းများကို ခေတ္တရပ်ခြင်းဖြင့် ကွန်ရက်ဒေတာအသုံးပြုမှုကို ကူညီလျှော့ချသည်</translation> +<translation id="7766807826975222231">လေ့လာ ကြည့်ရှုပါ</translation> <translation id="7766838926148951335">ခွင့်ပြုချက်များကို လက်ခံရန်</translation> <translation id="7768507955883790804">ဝဘ်ဆိုက်များသို့ ဝင်ကြည့်သောအခါ ၎င်းတို့က ဤဆက်တင်အတိုင်း အလိုအလျောက်လုပ်ဆောင်သည်</translation> <translation id="7768770796815395237">ပြောင်းရန်</translation> @@ -6114,6 +6119,7 @@ <translation id="8016266267177410919">ယာယီ သိုလှောင်ခန်း</translation> <translation id="8017176852978888182">Linux မျှဝေထားသော ဖိုင်လမ်းညွှန်များ</translation> <translation id="8017679124341497925">ဖြတ်လမ်းလင့်ခ်ကို တည်းဖြတ်ပြီးပါပြီ</translation> +<translation id="8018298733481692628">ဤပရိုဖိုင်ကို ဖျက်မလား။</translation> <translation id="8018313076035239964">ဝဘ်ဆိုက်များက အသုံးပြုနိုင်သည့် အချက်အလက်များနှင့် သင့်အားပြသမည့် အကြောင်းအရာများကို ထိန်းချုပ်ပါ</translation> <translation id="8023801379949507775">အိတ်စတန်းရှင်းအား ယခု အဆင့်မြှင့်မည်</translation> <translation id="8026334261755873520">ဘရောက်လုပ်ထားသည့် အချက်လက်များ ရှင်းလင်းရန်</translation> @@ -6284,7 +6290,6 @@ <translation id="8211551284753798479">PUK မမှန်ပါ။ သင့်တွင် ကြိုးစားခွင့် <ph name="RETRIES" /> ကြိမ် ကျန်သည်။</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ဒေါင်းလုဒ် လုပ်နေဆဲဖြစ်သည်}other{ဒေါင်းလုဒ်များ လုပ်နေဆဲဖြစ်သည်}}</translation> <translation id="8213449224684199188">ဓာတ်ပုံမုဒ်သို့ ပြောင်းလိုက်ပါပြီ</translation> -<translation id="8213866992824776555">အမြင့်ဆုံးအရည်အသွေးရှိသော ကာကွယ်ထားသည့် ဗီဒီယိုနှင့် အသံကို ဖွင့်နိုင်ရန်အတွက် သင်၏စက်ကို <ph name="DOMAIN" /> က ခွဲခြားဖော်ထုတ်လိုသည်။</translation> <translation id="8214489666383623925">ဖိုင် ဖွင့်ရန်...</translation> <translation id="8214962590150211830">ဒီလူကို ထုတ်လိုက်ရန်</translation> <translation id="8216351761227087153">လက်ပတ်နာရီ</translation> @@ -6763,7 +6768,6 @@ <translation id="8774379074441005279">ပြန်ယူခြင်းကို အတည်ပြုခြင်း</translation> <translation id="8774934320277480003">ထိပ်ဆုံး မာဂျင်</translation> <translation id="8775144690796719618">URL မမှန်ပါ</translation> -<translation id="8775163630211761057">သင်၏ <ph name="DEVICE_TYPE" /> တွင် သင့် Android ဖုန်း၏ အကောင်းဆုံးများကို ပိုမိုအသုံးပြုနိုင်သည်</translation> <translation id="8775653927968399786">{0,plural, =1{သင်၏ <ph name="DEVICE_TYPE" /> ကို # စက္ကန့်အကြာတွင် အလိုအလျောက်လော့ခ်ချလိုက်ပါမည်။ သင့်စမတ်ကတ်ကို ထည့်သွင်းထားရန် <ph name="DOMAIN" /> က သတ်မှတ်ထားသည်။}other{သင်၏ <ph name="DEVICE_TYPE" /> ကို # စက္ကန့်အကြာတွင် အလိုအလျောက်လော့ခ်ချလိုက်ပါမည်။ သင့်စမတ်ကတ်ကို ထည့်သွင်းထားရန် <ph name="DOMAIN" /> က သတ်မှတ်ထားသည်။}}</translation> @@ -6952,6 +6956,7 @@ <translation id="8973596347849323817">သင့်လိုအပ်ချက်များနှင့် ကိုက်ညီမှုရှိစေရန် ဤစက်ပစ္စည်းကို သင့်စိတ်ကြိုက်ပြင်ဆင်နိုင်သည်။ သုံးရလွယ်သည့် ဤဝန်ဆောင်မှုများကို ဆက်တင်များထဲ၌ နောက်ပိုင်းတွင် ပြောင်းလဲနိုင်သည်။</translation> <translation id="897414447285476047">အင်တာနက်လိုင်းမကောင်းသောကြောင့် ပို့လိုသောဖိုင် မပြီးမြောက်ခဲ့ပါ။</translation> <translation id="897525204902889653">သီးသန့်ဖယ်ထုတ်ထားသော ဝန်ဆောင်မှု</translation> +<translation id="8975396729541388937">သင်လက်ခံရရှိသော အီးမေးလ်များရှိ လင့်ခ်ကိုနှိပ်ခြင်းဖြင့် အချိန်မရွေး မှာယူမှုရပ်ဆိုင်းနိုင်သည်။</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" နှင့် အခြားတဘ် ၁ ခု}other{"<ph name="TAB_TITLE" />" နှင့် အခြားတဘ် # ခု}}</translation> <translation id="8977811652087512276">စကားဝှက် မမှန်ကန်ပါ သို့မဟုတ် ဖိုင်ပျက်စီးနေသည်</translation> <translation id="8978154919215542464">ဖွင့်ရန် - အားလုံးကို စင့်ခ်လုပ်ရန်</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index d80fae8..51e8a3b7 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -872,7 +872,6 @@ <translation id="1954813140452229842">आदान प्रदान माउन्ट गर्ने क्रममा त्रुटि भयो। कृपया आफ्ना प्रमाणहरूको जाँच गरी फेरि प्रयास गर्नुहोस्।</translation> <translation id="1956050014111002555">फाइलमा बहुविध प्रमाणपत्रहरू समावेश गरिएको थियो, जस मध्ये कुनै पनि आयात गरिएका थिएनन्:</translation> <translation id="1956390763342388273">यस कार्यले "<ph name="FOLDER_PATH" />" मा रहेका सबै फाइलहरू अपलोड गर्ने छ। तपाईंलाई साइटमाथि विश्वास छ भने मात्र यो कार्य गर्नुहोस्।</translation> -<translation id="1960158217849594135">यो युजरनेम तपाईंको Google खातामा सुरक्षित गर्ने हो?</translation> <translation id="196040970347962278">सर्वप्रथम इन्टरनेट जोड्नुहोस्</translation> <translation id="1962233722219655970">यस पृष्ठले एक सहज ग्राहक एप प्रयोग गर्छ जुन तपाइँको कम्प्युटरटमा चल्दैन।</translation> <translation id="1963227389609234879">सबै हटाउनुहोस्</translation> @@ -1043,7 +1042,6 @@ <translation id="2157474325782140681">अतिरिक्त सुविधाहरू प्राप्त गर्न यो Chromebook का लागि उपयुक्त हुने गरी डिजाइन गरिएको Dell डकिङ स्टेसन प्रयोग गर्नुहोस्।</translation> <translation id="215753907730220065">पूरा स्क्रिन मोडबाट निस्कनुहोस्</translation> <translation id="2157875535253991059">यो पृष्ठ अभ फुल स्क्रिन छ।</translation> -<translation id="2160589599612868242">आफ्नो फोनका सूचनाहरू <ph name="DEVICE_TYPE" /> मा प्राप्त गर्नुहोस्</translation> <translation id="216169395504480358">Wi-Fi थप्नुहोस्...</translation> <translation id="2162155940152307086">तपाईंले सिंकसम्बन्धी सेटिङहरूको पृष्ठ छोडेपछि सिंक सुरु हुने छ</translation> <translation id="2162838847352058695">साइटहरूलाई एकभन्दा बढी फाइल स्वतः डाउनलोड गर्न नदिनुहोस्</translation> @@ -1696,7 +1694,6 @@ <translation id="2885729872133513017">सर्भरको जवाफ डिकोडिङ गर्ने क्रममा कुनै समस्या भयो।</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">कृपया लिङ्क खोल्नुहोस्...</translation> -<translation id="2889481634493693121">आफ्नो फोनमा सूचनाहरू अन गर्नुहोस्</translation> <translation id="2889925978073739256">स्यान्डबक्स हटाइएका प्लगइनहरू रोक्न जारी राख्नुहोस्</translation> <translation id="2893168226686371498">पूर्वनिर्धारित ब्राउजर</translation> <translation id="2893917546370257247">{COUNT,plural, =1{एउटा पाठ}other{# वटा पाठ}}</translation> @@ -2798,7 +2795,6 @@ <translation id="412730574613779332">स्प्यानडेक्स</translation> <translation id="4130199216115862831">उपकरण लग</translation> <translation id="4130207949184424187">यो विस्तारले तपाईँले ओम्निबक्सबाट खोज गर्दा देखाइएको पृष्ठलाई परिवर्तन गरेको छ।</translation> -<translation id="4130344535649650885">यो पासवर्ड तपाईंको Google खातामा सुरक्षित गर्ने हो?</translation> <translation id="4130750466177569591">म सहमत गर्छु</translation> <translation id="413121957363593859">अनुभागहरू</translation> <translation id="4131410914670010031">कालो र सेतो</translation> @@ -3925,7 +3921,6 @@ <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="5503858713116291452">तपाईंको फोन नजिकै छ, अनलक गरिएको छ र त्यसको ब्लुटुथ र Wi-Fi अन छ भन्ने कुरा सुनिश्चित गर्नुहोस्। सेटअप प्रक्रिया पूरा गर्न आफ्नो फोनको स्क्रिनमा देखाइने चरणहरूको पालना गर्नुहोस्।</translation> <translation id="5503982651688210506"><ph name="HOST" /> लाई तपाईंको यन्त्रको क्यामेरा प्रयोग गर्ने तथा क्यामेरा यताउता घुमाउने र माइक्रोफोन प्रयोग गर्ने अनुमति दिइराख्नुहोस्</translation> <translation id="5505264765875738116">साइटहरूले सूचनाहरू पठाउनका निम्ति अनुमति माग्न सक्दैनन्।</translation> <translation id="5505307013568720083">मसी सकियो</translation> @@ -3986,6 +3981,7 @@ <translation id="5565735124758917034">सक्रिय</translation> <translation id="5567989639534621706">एप क्यासहरू</translation> <translation id="5568069709869097550">साइन इन गर्न सक्दैन</translation> +<translation id="5571832155627049070">आफ्नो प्रोफाइल आफ्नो रोजाइ अनुकूल पार्नुहोस्</translation> <translation id="5572851009514199876">Chrome ले तपाईंलाई यस साइटमाथि पहुँच राख्ने अनुमति छ वा छैन भनी जाँच्न सकोस् भन्नका लागि कृपया Chrome सुरु गरी साइन इन गर्नुहोस्।</translation> <translation id="5575473780076478375">इंकोग्निटो एक्स्टेन्शन: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">डेमो दर्ताको अनुरोधसम्बन्धी कुनै समस्या भयो।</translation> @@ -5868,6 +5864,7 @@ <translation id="7765158879357617694">सार्नुहोस्</translation> <translation id="7765507180157272835">ब्लुटुथ तथा Wi-Fi कनेक्सन आवश्यक पर्छ</translation> <translation id="7766082757934713382">यसले स्वचालित एप तथा सिस्टम अपडेट अस्थायी रूपमा बन्द गरेर डेटाको खपत कम गर्न मद्दत गर्छ</translation> +<translation id="7766807826975222231">भ्रमण गर्नुहोस्</translation> <translation id="7766838926148951335">अनुमतिहरू स्वीकार गर्नुहोस्</translation> <translation id="7768507955883790804">तपाईं कुनै साइटमा जाँदा उक्त साइटमा स्वतः यो सेटिङ लागू हुन्छ</translation> <translation id="7768770796815395237">परिवर्तन गर्नुहोस्</translation> @@ -6281,7 +6278,6 @@ <translation id="8211551284753798479">PUK अवैध छ। तपाईं अझै <ph name="RETRIES" /> पटक प्रयास गर्न सक्नुहुन्छ।</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{डाउनलोड हुँदैछ}other{डाउनलोड हुँदैछन्}}</translation> <translation id="8213449224684199188">तस्बिर मोडमा प्रवेश गरियो</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> ले संरक्षित भिडियो तथा अडियो उच्चतम गुणस्तरमा प्ले गर्ने प्रयोजनका लागि तपाईंको यन्त्र पहिचान गर्न चाहन्छ।</translation> <translation id="8214489666383623925">फाइल खोल्नुहोस्...</translation> <translation id="8214962590150211830">यो व्यक्तिलाई हटाउनुहोस्</translation> <translation id="8216351761227087153">हेर्नुहोस्</translation> @@ -6760,7 +6756,6 @@ <translation id="8774379074441005279">पुनर्स्थापना गर्ने कार्य पुष्टि गर्नुहोस्</translation> <translation id="8774934320277480003">शीर्ष सीमान्त</translation> <translation id="8775144690796719618">अमान्य URL</translation> -<translation id="8775163630211761057">आफ्नो Android फोनका उत्कृष्ट एप, सामग्री तथा कनेक्टिभिटी सुविधाहरू <ph name="DEVICE_TYPE" /> मा प्रयोग गर्नुहोस्</translation> <translation id="8775653927968399786">{0,plural, =1{तपाईंको <ph name="DEVICE_TYPE" /> # सेकेन्डमा स्वतः लक हुने छ। <ph name="DOMAIN" /> मा तपाईंले आफ्नो स्मार्ट कार्ड इन्सर्ट गरिराख्नु पर्ने हुन्छ।}other{तपाईंको <ph name="DEVICE_TYPE" /> # सेकेन्डमा स्वतः लक हुने छ। <ph name="DOMAIN" /> मा तपाईंले आफ्नो स्मार्ट कार्ड इन्सर्ट गरिराख्नु पर्ने हुन्छ।}}</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index 3eae80a9..71d5c8b 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Geen gehackte wachtwoorden}=1{1 gehackt wachtwoord}other{{NUM_COMPROMISED} gehackte wachtwoorden}}</translation> <translation id="1380028686461971526">Automatisch verbinding maken met netwerk</translation> <translation id="1380436189840894976">Incognitomodus toch afsluiten?</translation> +<translation id="1383597849754832576">Kan spraakbestanden niet downloaden. Probeer het later opnieuw.</translation> <translation id="1383861834909034572">Openen wanneer voltooid</translation> <translation id="1383876407941801731">Zoeken</translation> <translation id="1386791642444521222">Fysieke simkaart activeren</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Fout bij het activeren van de fileshare. Controleer je inloggegevens en probeer het opnieuw.</translation> <translation id="1956050014111002555">Het bestand bevatte meerdere certificaten. Geen van deze certificaten is geïmporteerd:</translation> <translation id="1956390763342388273">Hiermee worden alle bestanden in <ph name="FOLDER_PATH" /> geüpload. Doe dit alleen als je de site vertrouwt.</translation> -<translation id="1960158217849594135">Gebruikersnaam opslaan in je Google-account?</translation> <translation id="196040970347962278">Maak eerst verbinding met internet</translation> <translation id="1962233722219655970">Deze pagina gebruikt een Native Client-app die niet werkt op je computer.</translation> <translation id="1963227389609234879">Alles verwijderen</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Geen beveiliging (niet aanbevolen)</translation> <translation id="1987317783729300807">Accounts</translation> <translation id="1989112275319619282">Browsen</translation> +<translation id="1990046457226896323">Spraakbestanden gedownload</translation> <translation id="1990512225220753005">Geen snelkoppelingen op deze pagina weergeven</translation> <translation id="1992397118740194946">Niet ingesteld</translation> <translation id="1992924914582925289">Van apparaat verwijderen</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Gebruik voor aanvullende functies een Dell-dockingstation dat is bedoeld voor gebruik met deze Chromebook.</translation> <translation id="215753907730220065">Volledig scherm sluiten</translation> <translation id="2157875535253991059">Deze pagina wordt nu op volledig scherm weergegeven.</translation> -<translation id="2160589599612868242">Meldingen van je telefoon krijgen op je <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Wifi toevoegen...</translation> <translation id="2162155940152307086">De synchronisatie wordt gestart wanneer je de synchronisatie-instellingen verlaat</translation> <translation id="2162838847352058695">Voorkomen dat sites automatisch meerdere bestanden downloaden</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Meldingen ingeschakeld</translation> <translation id="2399939490305346086">Inloggegevens voor beveiligingssleutel</translation> <translation id="2400664245143453337">Onmiddellijke update vereist</translation> +<translation id="2406153734066939945">Dit profiel en de bijbehorende gegevens verwijderen?</translation> <translation id="2408018932941436077">Kaart opslaan</translation> <translation id="2408955596600435184">Je pincode opgeven</translation> <translation id="241082044617551207">Onbekende plug-in</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Bureaublad</translation> <translation id="2526619973349913024">Controleren op updates</translation> <translation id="2527167509808613699">Elk soort verbinding</translation> +<translation id="2530166226437958497">Problemen oplossen</translation> <translation id="2532589005999780174">Modus voor hoog contrast</translation> <translation id="253434972992662860">&Onderbreken</translation> <translation id="2534460670861217804">Beveiligde HTTP-proxy</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Er is een probleem opgetreden bij het decoderen van de serverreactie.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Link openen met...</translation> -<translation id="2889481634493693121">Meldingen inschakelen op je telefoon</translation> <translation id="2889925978073739256">Plug-ins zonder sandbox blijven blokkeren</translation> <translation id="2893168226686371498">Standaardbrowser</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 tekstfragment}other{# tekstfragmenten}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Til je vinger op en plaats deze opnieuw op de sensor</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: synchronisatie gepauzeerd</translation> <translation id="3861638017150647085">De gebruikersnaam '<ph name="USERNAME" />' is niet beschikbaar</translation> +<translation id="3861977424605124250">Tonen bij opstarten</translation> <translation id="3862693525629180217">Verifiëren via ingebouwde sensor</translation> <translation id="3862788408946266506">Een app met het manifestkenmerk 'kiosk_only' moet worden geïnstalleerd in de Chrome OS-kioskmodus</translation> <translation id="3865414814144988605">Resolutie</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Superheld</translation> <translation id="4130199216115862831">Apparaatlogboek</translation> <translation id="4130207949184424187">Deze extensie heeft gewijzigd welke pagina wordt weergegeven wanneer je vanuit de omnibox zoekt.</translation> -<translation id="4130344535649650885">Wachtwoord opslaan in je Google-account?</translation> <translation id="4130750466177569591">Ik ga akkoord</translation> <translation id="413121957363593859">Componenten</translation> <translation id="4131410914670010031">Zwart/wit</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Doorgaan vanaf een ander apparaat</translation> <translation id="4628757576491864469">Apparaten</translation> <translation id="4628762811416793313">De installatie van de Linux-container is niet voltooid. Probeer het opnieuw.</translation> +<translation id="4629521233550547305">Profiel <ph name="PROFILE_NAME" /> openen</translation> <translation id="4633003931260532286">Voor deze extensie is minimaal versie '<ph name="IMPORT_VERSION" />' van '<ph name="IMPORT_NAME" />' vereist, maar alleen versie '<ph name="INSTALLED_VERSION" />' is geïnstalleerd</translation> <translation id="4633757335284074492">Maak een back-up op Google Drive. Zet gegevens eenvoudig terug of schakel wanneer je wilt tussen apparaten. Deze back-up omvat app-gegevens. Back-ups worden geüpload naar Google en versleuteld met het wachtwoord van het Google-account van je kind.</translation> <translation id="4634575639321169635">Stel dit apparaat in voor zakelijk of persoonlijk gebruik</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Kan <ph name="ATTACHMENTS" /> van <ph name="DEVICE_NAME" /> niet ontvangen}other{Kan <ph name="ATTACHMENTS" /> van <ph name="DEVICE_NAME" /> niet ontvangen}}</translation> <translation id="5502500733115278303">Geïmporteerd uit Firefox</translation> <translation id="5502915260472117187">Een kind</translation> -<translation id="5503858713116291452">Zorg dat je telefoon in de buurt en ontgrendeld is en dat bluetooth en wifi zijn ingeschakeld. Volg de stappen op je telefoon om het instellen af te ronden.</translation> <translation id="5503982651688210506">Blijven toestaan dat <ph name="HOST" /> de camera gebruikt en beweegt en de microfoon gebruikt</translation> <translation id="5505264765875738116">Sites kunnen niet vragen of ze je meldingen mogen sturen</translation> <translation id="5505307013568720083">Inkt is op</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Actief</translation> <translation id="5567989639534621706">Applicatiecaches</translation> <translation id="5568069709869097550">Kan niet aanmelden</translation> +<translation id="5571832155627049070">Je profiel aanpassen</translation> <translation id="5572851009514199876">Start Chrome en log in zodat Chrome kan controleren of je deze site mag openen.</translation> <translation id="5575473780076478375">Incognito-extensie: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Er is een probleem opgetreden met een demoregistratieverzoek.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Spraakinstellingen voor tekst-naar-spraak</translation> <translation id="7280877790564589615">Rechten gevraagd</translation> <translation id="7282992757463864530">Infobalk</translation> +<translation id="7283555985781738399">Gastmodus</translation> <translation id="7284411326658527427">Ze kunnen ieder hun account personaliseren en gegevens privé houden.</translation> <translation id="7287143125007575591">Toegang geweigerd.</translation> <translation id="7287411021188441799">Standaard achtergrond herstellen</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">URL voor beleid van certificeringsinstantie voor Netscape-certificaat</translation> <translation id="7717014941119698257">Downloaden: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Sites kunnen je locatie vragen (aanbevolen)</translation> +<translation id="771721654176725387">Hiermee worden je browsegegevens op dit apparaat definitief verwijderd. Als je de gegevens wilt herstellen, zet je synchronisatie aan als</translation> <translation id="7717845620320228976">Controleren op updates</translation> <translation id="7719367874908701697">Zoomen op pagina</translation> <translation id="7719588063158526969">Apparaatnaam te lang</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Verplaatsen</translation> <translation id="7765507180157272835">Bluetooth en wifi vereist</translation> <translation id="7766082757934713382">Hiermee kun je het mobiele dataverbruik verminderen door automatische app- en systeemupdates te onderbreken</translation> +<translation id="7766807826975222231">Een rondleiding volgen</translation> <translation id="7766838926148951335">Rechten accepteren</translation> <translation id="7768507955883790804">Sites volgen deze instelling automatisch als je ze bezoekt</translation> <translation id="7768770796815395237">Wijzigen</translation> @@ -6117,6 +6122,7 @@ <translation id="8017176852978888182">Gedeelde directory's voor Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Snelkoppeling bewerkt</translation> +<translation id="8018298733481692628">Dit profiel verwijderen?</translation> <translation id="8018313076035239964">Bepaal welke informatie websites kunnen gebruiken en welke content ze aan je kunnen laten zien</translation> <translation id="8023801379949507775">Extensies nu updaten</translation> <translation id="8026334261755873520">Browsegegevens wissen</translation> @@ -6287,7 +6293,6 @@ <translation id="8211551284753798479">Ongeldige pukcode. Je hebt nog <ph name="RETRIES" /> pogingen.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Download wordt uitgevoerd}other{Downloads worden uitgevoerd}}</translation> <translation id="8213449224684199188">Fotomodus geopend</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> wil je apparaat identificeren zodat het beveiligde video en audio van de hoogste kwaliteit kan afspelen.</translation> <translation id="8214489666383623925">Open bestand...</translation> <translation id="8214962590150211830">Deze persoon verwijderen</translation> <translation id="8216351761227087153">Bekijken</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Herstel bevestigen</translation> <translation id="8774934320277480003">Marge bovenkant</translation> <translation id="8775144690796719618">Ongeldige URL</translation> -<translation id="8775163630211761057">Gebruik het beste van je Android-telefoon ook op je <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Je <ph name="DEVICE_TYPE" /> wordt over # seconde automatisch vergrendeld. <ph name="DOMAIN" /> vereist dat je smartcard geplaatst blijft.}other{Je <ph name="DEVICE_TYPE" /> wordt over # seconden automatisch vergrendeld. <ph name="DOMAIN" /> vereist dat je smartcard geplaatst blijft.}}</translation> @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">Je kunt dit apparaat aanpassen aan je behoeften. Deze toegankelijkheidsfuncties kunnen later worden gewijzigd in Instellingen.</translation> <translation id="897414447285476047">Bestemmingsbestand is onvolledig vanwege een verbindingsprobleem.</translation> <translation id="897525204902889653">Quarantineservice</translation> +<translation id="8975396729541388937">Je kunt je altijd afmelden door op de link te klikken in de e-mails die je krijgt.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{<ph name="TAB_TITLE" />}=1{<ph name="TAB_TITLE" /> en 1 ander tabblad}other{<ph name="TAB_TITLE" /> en # andere tabbladen}}</translation> <translation id="8977811652087512276">Onjuist wachtwoord of beschadigd bestand</translation> <translation id="8978154919215542464">Aan: alles synchroniseren</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index 34755fc..3c5bc60 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Ingen passord er utsatt for sikkerhetsbrudd}=1{1 passord er utsatt for sikkerhetsbrudd}other{{NUM_COMPROMISED} passord er utsatt for sikkerhetsbrudd}}</translation> <translation id="1380028686461971526">Koble til nettverket automatisk</translation> <translation id="1380436189840894976">Vil du avslutte inkognitomodus likevel?</translation> +<translation id="1383597849754832576">Kan ikke laste ned talefiler. Prøv igjen senere.</translation> <translation id="1383861834909034572">Åpnes ved fullført nedlasting</translation> <translation id="1383876407941801731">Søk</translation> <translation id="1386791642444521222">Aktivér fysisk SIM-kort</translation> @@ -873,7 +874,6 @@ <translation id="1954813140452229842">Feil ved innsetting av deling. Sjekk legitimasjonen og prøv igjen.</translation> <translation id="1956050014111002555">Filen inneholdt flere sertifikater, men ingen av dem ble importert:</translation> <translation id="1956390763342388273">Dette fører til at alle filer fra «<ph name="FOLDER_PATH" />» lastes opp. Du bør bare gjøre dette hvis du stoler på nettstedet.</translation> -<translation id="1960158217849594135">Vil du lagre brukernavnet i Google-kontoen din?</translation> <translation id="196040970347962278">Koble til internett først</translation> <translation id="1962233722219655970">Denne siden bruker en Native Client-app som ikke fungerer på datamaskinen din.</translation> <translation id="1963227389609234879">Fjern alle</translation> @@ -899,6 +899,7 @@ <translation id="1984417487208496350">Ingen beskyttelse (anbefales ikke)</translation> <translation id="1987317783729300807">Kontoer</translation> <translation id="1989112275319619282">Bla gjennom</translation> +<translation id="1990046457226896323">Talefiler er lastet ned</translation> <translation id="1990512225220753005">Ikke vis snarveier på denne siden</translation> <translation id="1992397118740194946">Ikke angitt</translation> <translation id="1992924914582925289">Fjern fra enheten</translation> @@ -1044,7 +1045,6 @@ <translation id="2157474325782140681">For å få flere funksjoner, bruk en Dell-dokkingstasjon som er laget for å fungere sammen med denne Chromebooken.</translation> <translation id="215753907730220065">Avslutt fullskjermmodus</translation> <translation id="2157875535253991059">Denne siden vises nå i full skjerm.</translation> -<translation id="2160589599612868242">Motta varsler fra telefonen din på <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Legg til Wi-Fi</translation> <translation id="2162155940152307086">Synkroniseringen starter når du går ut av synkroniseringsinnstillingene</translation> <translation id="2162838847352058695">Blokkér nettsteder fra å laste ned flere filer automatisk</translation> @@ -1262,6 +1262,7 @@ <translation id="2399699884460174994">Varsler er slått på</translation> <translation id="2399939490305346086">Påloggingsdata på sikkerhetsnøkkelen</translation> <translation id="2400664245143453337">Umiddelbar oppdatering kreves</translation> +<translation id="2406153734066939945">Vil du slette denne profilen og tilhørende data?</translation> <translation id="2408018932941436077">Lagrer kortet</translation> <translation id="2408955596600435184">Skriv inn PIN-koden din</translation> <translation id="241082044617551207">Ukjent programtillegg</translation> @@ -1380,6 +1381,7 @@ <translation id="2526590354069164005">Skrivebordet</translation> <translation id="2526619973349913024">Se etter oppdateringer</translation> <translation id="2527167509808613699">Alle typer tilkobling</translation> +<translation id="2530166226437958497">Feilsøking</translation> <translation id="2532589005999780174">Høykontrastmodus</translation> <translation id="253434972992662860">&Stans midlertidig</translation> <translation id="2534460670861217804">Sikker HTTP-proxy-tjener</translation> @@ -1697,7 +1699,6 @@ <translation id="2885729872133513017">Det oppsto et problem ved dekoding av tjenerrespons.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Åpne link med</translation> -<translation id="2889481634493693121">Slå på varsler på telefonen</translation> <translation id="2889925978073739256">Fortsett blokkeringen av programtillegg uten prosessisolering</translation> <translation id="2893168226686371498">Standardnettleser</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 tekst}other{# tekster}}</translation> @@ -2557,6 +2558,7 @@ <translation id="3857807444929313943">Løft fingeren og berør igjen</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Synkronisering er satt på pause</translation> <translation id="3861638017150647085">Brukernavnet «<ph name="USERNAME" />» er ikke tilgjengelig</translation> +<translation id="3861977424605124250">Vis ved oppstart</translation> <translation id="3862693525629180217">Bekreft via innebygd sensor</translation> <translation id="3862788408946266506">Apper med manifest-attributtet «kiosk_only» må være installert i Chrome OS-kioskmodus</translation> <translation id="3865414814144988605">Oppløsning</translation> @@ -2797,7 +2799,6 @@ <translation id="412730574613779332">Superhelt</translation> <translation id="4130199216115862831">Enhetslogg</translation> <translation id="4130207949184424187">Denne utvidelsen har endret hvilken side som vises når du søker fra multifunksjonsfeltet.</translation> -<translation id="4130344535649650885">Vil du lagre passordet i Google-kontoen din?</translation> <translation id="4130750466177569591">Godta</translation> <translation id="413121957363593859">Komponenter</translation> <translation id="4131410914670010031">Svarthvitt</translation> @@ -3196,6 +3197,7 @@ <translation id="4627442949885028695">Fortsett på en annen enhet</translation> <translation id="4628757576491864469">Enheter</translation> <translation id="4628762811416793313">Konfigureringen av Linux-beholderen ble ikke fullført. Prøv på nytt.</translation> +<translation id="4629521233550547305">Åpne <ph name="PROFILE_NAME" />-profilen</translation> <translation id="4633003931260532286">Utvidelsen krever «<ph name="IMPORT_NAME" />» med «<ph name="IMPORT_VERSION" />» som minimumsversjon, men bare versjon «<ph name="INSTALLED_VERSION" />» er installert</translation> <translation id="4633757335284074492">Sikkerhetskopiér til Google Disk. Gjenopprett data enkelt eller bytt enhet når som helst. Denne sikkerhetskopien inkluderer appdata. Sikkerhetskopier lastes opp til Google og krypteres med passordet for Google-kontoen til barnet ditt.</translation> <translation id="4634575639321169635">Konfigurer denne enheten for arbeid eller personlig bruk</translation> @@ -3924,7 +3926,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Kunne ikke motta <ph name="ATTACHMENTS" /> fra <ph name="DEVICE_NAME" />}other{Kunne ikke motta <ph name="ATTACHMENTS" /> fra <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Importert fra Firefox</translation> <translation id="5502915260472117187">Et barn</translation> -<translation id="5503858713116291452">Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wi-Fi er slått på. Følg fremgangsmåten på telefonen for å fullføre konfigureringen.</translation> <translation id="5503982651688210506">Fortsett å tillate <ph name="HOST" /> å bruke og bevege kameraet ditt og bruke mikrofonen din</translation> <translation id="5505264765875738116">Nettsteder kan ikke be om å få sende deg varsler</translation> <translation id="5505307013568720083">Tom for blekk</translation> @@ -3985,6 +3986,7 @@ <translation id="5565735124758917034">Aktiv</translation> <translation id="5567989639534621706">Programbuffere</translation> <translation id="5568069709869097550">Kan ikke logge på</translation> +<translation id="5571832155627049070">Tilpass profilen din</translation> <translation id="5572851009514199876">Start og logg på Chrome, så Chrome kan sjekke om du har tillatelse til å gå til dette nettstedet.</translation> <translation id="5575473780076478375">Inkognitoutvidelse: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Det oppsto et problem med en forespørsel om demoregistrering.</translation> @@ -5454,6 +5456,7 @@ <translation id="7280649757394340890">Stemmeinnstillinger for tekst til tale</translation> <translation id="7280877790564589615">Tillatelse forespurt</translation> <translation id="7282992757463864530">Informasjonsfelt</translation> +<translation id="7283555985781738399">Gjestemodus</translation> <translation id="7284411326658527427">Hver person kan gi kontoen sin et personlig preg og holde dataene sine private.</translation> <translation id="7287143125007575591">Ingen tilgang.</translation> <translation id="7287411021188441799">Gjenopprett standardbakgrunnen</translation> @@ -5833,6 +5836,7 @@ <translation id="7716781361494605745">Nettadresse for retningslinjer for Netscape-sertifiseringsinstans</translation> <translation id="7717014941119698257">Laster ned: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Nettsteder kan be om posisjonen din (anbefales)</translation> +<translation id="771721654176725387">Dette sletter nettlesingsdataene dine permanent fra denne enheten. For å gjenopprette dataene, slå på synkronisering som</translation> <translation id="7717845620320228976">Se etter oppdateringer</translation> <translation id="7719367874908701697">Sidezoom</translation> <translation id="7719588063158526969">Enhetsnavnet er for langt</translation> @@ -5869,6 +5873,7 @@ <translation id="7765158879357617694">Flytt</translation> <translation id="7765507180157272835">Bluetooth og Wi-Fi kreves</translation> <translation id="7766082757934713382">Bidrar til å redusere databruken i nettverket ved å sette automatiske app- og systemoppdateringer på pause</translation> +<translation id="7766807826975222231">Få en innføring</translation> <translation id="7766838926148951335">Godta tillatelsene</translation> <translation id="7768507955883790804">Nettsteder følger automatisk denne innstillingen når du besøker dem</translation> <translation id="7768770796815395237">Endre</translation> @@ -6113,6 +6118,7 @@ <translation id="8017176852978888182">Delte kataloger for Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Snarveien er endret</translation> +<translation id="8018298733481692628">Vil du slette denne profilen?</translation> <translation id="8018313076035239964">Kontrollér hva slags informasjon nettsteder kan bruke, og hva slags innhold de kan vise deg</translation> <translation id="8023801379949507775">Oppdater utvidelser nå</translation> <translation id="8026334261755873520">Slett nettleserdata</translation> @@ -6283,7 +6289,6 @@ <translation id="8211551284753798479">Ugyldig PUK. Du har <ph name="RETRIES" /> forsøk igjen.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Nedlasting pågår}other{Nedlastinger pågår}}</translation> <translation id="8213449224684199188">Fotomodus er aktivert</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> vil at du identifiserer enheten din, slik at beskyttet video og lyd i høyeste kvalitet kan spilles av.</translation> <translation id="8214489666383623925">Åpne fil</translation> <translation id="8214962590150211830">Fjern denne personen</translation> <translation id="8216351761227087153">Se</translation> @@ -6762,7 +6767,6 @@ <translation id="8774379074441005279">Bekreft gjenoppretting</translation> <translation id="8774934320277480003">Toppmargen</translation> <translation id="8775144690796719618">Ugyldig nettadresse</translation> -<translation id="8775163630211761057">Få det beste fra Android-telefonen din på <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> låses automatisk om # sekund. <ph name="DOMAIN" /> krever at smartkortet blir stående i.}other{<ph name="DEVICE_TYPE" /> låses automatisk om # sekunder. <ph name="DOMAIN" /> krever at smartkortet blir stående i.}}</translation> @@ -6951,6 +6955,7 @@ <translation id="8973596347849323817">Du kan tilpasse denne enheten etter eget behov. Disse tilgjengelighetsfunksjonene kan endres senere i innstillingene.</translation> <translation id="897414447285476047">Målfilen er ikke fullstendig på grunn av et tilkoblingsproblem</translation> <translation id="897525204902889653">Karantenetjeneste</translation> +<translation id="8975396729541388937">Du kan når som helst melde deg av ved å klikke på linken i e-postene du mottar.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{«<ph name="TAB_TITLE" />»}=1{«<ph name="TAB_TITLE" />» og 1 annen fane}other{«<ph name="TAB_TITLE" />» og # andre faner}}</translation> <translation id="8977811652087512276">Feil passord eller skadet fil</translation> <translation id="8978154919215542464">På – synkroniser alt</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index 5bd86e6..767c719 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -870,7 +870,6 @@ <translation id="1954813140452229842">ସେୟାର୍ ଖଞ୍ଜିବାରେ ତ୍ରୁଟି। ଦୟାକରି ଆପଣଙ୍କର କ୍ରେଡେନ୍ସିଆଲ୍ ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="1956050014111002555">ଫାଇଲ୍ରେ ଅନେକ ସାର୍ଟିଫିକେଟ୍ ଅଛି, ଏଥିମଧ୍ୟରୁ କୌଣସିଟି ଇମ୍ପୋର୍ଟ ହୋଇନାହିଁ:</translation> <translation id="1956390763342388273">ଏହା "<ph name="FOLDER_PATH" />"ରୁ ସମସ୍ତ ଫାଇଲ୍କୁ ଅପ୍ଲୋଡ୍ କରିବ। ଆପଣ ଯଦି ସାଇଟ୍କୁ ବିଶ୍ଵାସ କରନ୍ତି, ତା'ହେଲେ ହିଁ ଏହା କରନ୍ତୁ।</translation> -<translation id="1960158217849594135">ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ଉପଯୋଗକର୍ତ୍ତାନାମ ସେଭ୍ କରିବେ?</translation> <translation id="196040970347962278">ପ୍ରଥମେ ଏକ ଇଣ୍ଟରନେଟ୍ ସଂଯୋଗ ସ୍ଥାପନ କରନ୍ତୁ</translation> <translation id="1962233722219655970">ଏହି ପୃଷ୍ଠାକୁ ଏପରି ମୂଳ କ୍ଲାଏଣ୍ଟର ବ୍ୟବହାର କରେ ଯାହା ଆପଣଙ୍କର କମ୍ପ୍ୟୁଟର୍ରେ କାର୍ଯ୍ୟ କରେନାହିଁ।</translation> <translation id="1963227389609234879">ସମସ୍ତ ଅପସାରଣ କରନ୍ତୁ</translation> @@ -1041,7 +1040,6 @@ <translation id="2157474325782140681">ଅତିରିକ୍ତ ଫିଚର୍ଗୁଡ଼ିକ ପାଇବା ନିମନ୍ତେ ଏହି Chromebook ସହ କାମ କରିବା ପାଇଁ ଡିଜାଇନ୍ କରାଯାଇଥିବା ଏକ Dell ଡକିଂ ଷ୍ଟେସନ ବ୍ୟବହାର କରନ୍ତୁ।</translation> <translation id="215753907730220065">ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍ରୁ ବାହାରି ଆସନ୍ତୁ</translation> <translation id="2157875535253991059">ଏହି ପୃଷ୍ଠା ବର୍ତ୍ତମାନ ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍ରେ ଅଛି।</translation> -<translation id="2160589599612868242">ଆପଣଙ୍କ <ph name="DEVICE_TYPE" />ରେ ଆପଣଙ୍କ ଫୋନରୁ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପ୍ରାପ୍ତ କରନ୍ତୁ</translation> <translation id="216169395504480358">Wi-Fi ଯୋଗ କରନ୍ତୁ...</translation> <translation id="2162155940152307086">ଥରେ ଆପଣ ସିଙ୍କ୍ ସେଟିଂସ୍କୁ ଛାଡ଼ିବା କ୍ଷଣି ସିଙ୍କ୍ର କାର୍ଯ୍ୟ ଆରମ୍ଭ ହୋଇଯିବ</translation> <translation id="2162838847352058695">ସ୍ୱଚାଳିତ ଭାବେ ଏକାଧିକ ଫାଇଲକୁ ଡାଉନଲୋଡ୍ କରିବାରୁ ସାଇଟଗୁଡ଼ିକୁ ବ୍ଲକ୍ କରନ୍ତୁ</translation> @@ -1693,7 +1691,6 @@ <translation id="2885729872133513017">ସର୍ଭର୍ ପ୍ରତିକ୍ରିୟାକୁ ଡିକୋଡ୍କରିବା ସମୟରେ ଏକ ସମସ୍ୟା ହୋଇଛି।</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">ଏହା ମାଧ୍ୟମରେ ଲିଙ୍କ୍ ଖୋଲନ୍ତୁ...</translation> -<translation id="2889481634493693121">ଆପଣଙ୍କ ଫୋନରେ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଚାଲୁ କରନ୍ତୁ</translation> <translation id="2889925978073739256">ଅନ୍ସ୍ୟାଣ୍ଡବକ୍ସ ହୋଇଥିବା ପ୍ଲଗଇନ୍ଗୁଡ଼ିକୁ ବ୍ଲକ୍ କରିବା ଜାରି ରଖନ୍ତୁ</translation> <translation id="2893168226686371498">ଡିଫଲ୍ଟ ବ୍ରାଉଜର୍</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1ଟି ଟେକ୍ସଟ୍}other{#ଟି ଟେକ୍ସଟ୍}}</translation> @@ -2794,7 +2791,6 @@ <translation id="412730574613779332">ସ୍ପାଣ୍ଡେକ୍ସ</translation> <translation id="4130199216115862831">ଡିଭାଇସ୍ ଲଗ୍</translation> <translation id="4130207949184424187">ଆପଣ ଯେତେବେଳେ Omniboxରୁ ସନ୍ଧାନ କରନ୍ତି, ସେତେବେଳେ କେଉଁ ପୃଷ୍ଠାଗୁଡ଼ିକ ଦେଖାଯିବ ତାହା ଏହି ଏକ୍ସଟେନ୍ସନ୍ ବଦଳାଇଦେଇଛି।</translation> -<translation id="4130344535649650885">ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ପାସୱାର୍ଡ ସେଭ୍ କରିବେ?</translation> <translation id="4130750466177569591">ମୁଁ ରାଜି</translation> <translation id="413121957363593859">କମ୍ପୋନେଣ୍ଟ</translation> <translation id="4131410914670010031">କଳା ଏବଂ ଧଳା</translation> @@ -3920,7 +3916,6 @@ <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="5503858713116291452">ଆପଣଙ୍କ ଫୋନ୍ ନିକଟରେ ଅଛି, ଅନଲକ୍ କରାଯାଇଛି ଏବଂ ସେଥିରେ ବ୍ଲୁଟୁଥ୍ ଓ ୱାଇ-ଫାଇ ଚାଲୁ ଅଛି ବୋଲି ସୁନିଶ୍ଚିତ କରନ୍ତୁ। ସେଟଅପ୍ ସମ୍ପୂର୍ଣ୍ଣ କରିବା ପାଇଁ ଆପଣଙ୍କ ଫୋନରେ ଷ୍ଟେପଗୁଡ଼ିକୁ ଅନୁସରଣ କରନ୍ତୁ।</translation> <translation id="5503982651688210506">ଆପଣଙ୍କ କ୍ୟାମେରା ବ୍ୟବହାର ଓ ମୁଭ୍ କରିବା ପାଇଁ ଏବଂ ମାଇକ୍ରୋଫୋନ୍ ବ୍ୟବହାର କରିବା ପାଇଁ <ph name="HOST" />କୁ ଅନୁମତି ଦେବା ଜାରି ରଖନ୍ତୁ</translation> <translation id="5505264765875738116">ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ପଠାଇବାକୁ ସାଇଟ୍ଗୁଡ଼ିକ ପଚାରିପାରିବେ ନାହିଁ</translation> <translation id="5505307013568720083">ସ୍ୟାହୀ ଶେଷ ହୋଇଯାଇଛି</translation> @@ -3981,6 +3976,7 @@ <translation id="5565735124758917034">ସକ୍ରିୟ ଅଛି</translation> <translation id="5567989639534621706">ଆପ୍ଲିକେସନ୍ କେଚ୍</translation> <translation id="5568069709869097550">ସାଇନ୍ ଇନ୍ କରିପାରିବ ନାହିଁ</translation> +<translation id="5571832155627049070">ଆପଣଙ୍କ ପ୍ରୋଫାଇଲ୍ କଷ୍ଟମାଇଜ୍ କରନ୍ତୁ</translation> <translation id="5572851009514199876">ଦୟାକରି Chromeରେ ସାଇନ୍ ଇନ୍ କରି ଆରମ୍ଭ କରନ୍ତୁ ଯାହା ଦ୍ୱାରା Chrome ଏହା ଯାଞ୍ଚ କରିପାରିବ ଯେ ଆପଣଙ୍କୁ ଏହି ସାଇଟ୍ ଆକ୍ସେସ୍ କରିବାକୁ ଅନୁମତି ଅଛି କି ନାହିଁ।</translation> <translation id="5575473780076478375">ଇନ୍କଗ୍ନିଟୋ ଏକ୍ସଟେନ୍ସନ୍: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">ଡେମୋ ପଞ୍ଜିକରଣ ଅନୁରୋଧରେ ଏକ ସମସ୍ୟା ହୋଇଛି।</translation> @@ -5867,6 +5863,7 @@ <translation id="7765158879357617694">ନିଅନ୍ତୁ</translation> <translation id="7765507180157272835">ବ୍ଲୁଟୁଥ୍ ଏବଂ ୱାଇ-ଫାଇ ଆବଶ୍ୟକ</translation> <translation id="7766082757934713382">ସ୍ୱଚାଳିତ ଆପ୍ ଏବଂ ସିଷ୍ଟମ୍ ଅପଡେଟଗୁଡ଼ିକୁ ବିରତ କରି ନେଟୱାର୍କ ଡାଟା ବ୍ୟବହାର ହ୍ରାସ କରିବାରେ ସାହାଯ୍ୟ କରେ</translation> +<translation id="7766807826975222231">ଭ୍ରମଣରେ ଯାଆନ୍ତୁ</translation> <translation id="7766838926148951335">ଅନୁମତି ସ୍ଵୀକାର କରନ୍ତୁ</translation> <translation id="7768507955883790804">ଆପଣ ସାଇଟଗୁଡ଼ିକୁ ଭିଜିଟ୍ କଲେ ସେଗୁଡ଼ିକ ସ୍ୱଚାଳିତ ଭାବେ ଏହି ସେଟିଂର ଅନୁସରଣ କରିଥାନ୍ତି</translation> <translation id="7768770796815395237">ପରିବର୍ତ୍ତନ କରନ୍ତୁ</translation> @@ -6278,7 +6275,6 @@ <translation id="8211551284753798479">ଅବୈଧ PUK। ଆପଣଙ୍କ ପାଖରେ <ph name="RETRIES" />ଟି ପ୍ରଚେଷ୍ଟା ବାକି ଅଛି।</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ଡାଉନ୍ଲୋଡ୍ ଚାଲିଛି}other{ଡାଉନ୍ଲୋଡ୍ ଚାଲିଛି}}</translation> <translation id="8213449224684199188">ଫଟୋ ମୋଡ୍ରେ ପ୍ରବେଶ ହୋଇଛି</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> ଆପଣଙ୍କ ଡିଭାଇସକୁ ଚିହ୍ନଟ କରିବାକୁ ଚାହେଁ ଯାହା ଫଳରେ ଏହା ଉଚ୍ଚତମ ଗୁଣବତ୍ତାର ସୁରକ୍ଷିତ ଭିଡିଓ ଏବଂ ଅଡିଓ ଚଲାଇପାରିବ।</translation> <translation id="8214489666383623925">ଫାଇଲ୍ ଖୋଲନ୍ତୁ...</translation> <translation id="8214962590150211830">ଏହି ବ୍ୟକ୍ତିଙ୍କୁ କାଢ଼ନ୍ତୁ</translation> <translation id="8216351761227087153">ଦେଖନ୍ତୁ</translation> @@ -6757,7 +6753,6 @@ <translation id="8774379074441005279">ରିଷ୍ଟୋର୍ କରିବାକୁ ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation> <translation id="8774934320277480003">ଉପର ମାର୍ଜିନ୍</translation> <translation id="8775144690796719618">ଅବୈଧ URL</translation> -<translation id="8775163630211761057">ଆପଣଙ୍କ Android ଫୋନର ଶ୍ରେଷ୍ଠ ସୁବିଧାଗୁଡ଼ିକୁ ଆପଣଙ୍କ <ph name="DEVICE_TYPE" /> ପର୍ଯ୍ୟନ୍ତ ବିସ୍ତୃତ କରନ୍ତୁ</translation> <translation id="8775653927968399786">{0,plural, =1{ଆପଣଙ୍କ <ph name="DEVICE_TYPE" /> ସ୍ୱଚାଳିତ ଭାବେ # ସେକେଣ୍ଡରେ ଲକ୍ ହୋଇଯିବ। <ph name="DOMAIN" /> ପାଇଁ ଆପଣ ଆପଣଙ୍କ ସ୍ମାର୍ଟ କାର୍ଡକୁ ଇନସାର୍ଟ କରି ରଖିବା ଆବଶ୍ୟକ।}other{ଆପଣଙ୍କ <ph name="DEVICE_TYPE" /> ସ୍ୱଚାଳିତ ଭାବେ # ସେକେଣ୍ଡରେ ଲକ୍ ହୋଇଯିବ। <ph name="DOMAIN" /> ପାଇଁ ଆପଣ ଆପଣଙ୍କ ସ୍ମାର୍ଟ କାର୍ଡକୁ ଇନସାର୍ଟ କରି ରଖିବା ଆବଶ୍ୟକ।}}</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index 4dddd4e..8b6f5c9 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -877,7 +877,6 @@ <translation id="1954813140452229842">ਸਾਂਝਾਕਰਨ ਮਾਊਂਟ ਕਰਨ ਵਿੱਚ ਗੜਬੜ ਹੋਈ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਕ੍ਰੀਡੈਂਸ਼ੀਅਲ ਦੀ ਜਾਂਚ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="1956050014111002555">ਫਾਈਲ ਵਿੱਚ ਮਲਟੀਪਲ ਸਰਟੀਫਿਕੇਟਸ ਸਨ, ਜਿਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਆਯਾਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ:</translation> <translation id="1956390763342388273">ਇਹ "<ph name="FOLDER_PATH" />" ਤੋਂ ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਅੱਪਲੋਡ ਕਰੇਗਾ। ਇੰਝ ਸਿਰਫ਼ ਤਾਂ ਹੀ ਕਰੋ ਜੇਕਰ ਤੁਹਾਨੂੰ ਸਾਈਟ 'ਤੇ ਭਰੋਸਾ ਹੈ।</translation> -<translation id="1960158217849594135">ਕੀ ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਇਸ ਵਰਤੋਂਕਾਰ ਦਾ ਨਾਮ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?</translation> <translation id="196040970347962278">ਪਹਿਲਾਂ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰੋ</translation> <translation id="1962233722219655970">ਇਸ ਪੰਨਾ 'ਨੇਟਿਵ ਕਲਾਇੰਟ' ਐਪ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਚਲਦਾ ਹੈ ਜੋ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ 'ਤੇ ਕੰਮ ਨਹੀਂ ਕਰਦੀ।</translation> <translation id="1963227389609234879">ਸਭ ਹਟਾਓ</translation> @@ -1048,7 +1047,6 @@ <translation id="2157474325782140681">ਵਧੀਕ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਇਸ Chromebook ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ ਡਿਜ਼ਾਈਨ ਕੀਤਾ Dell ਡੌਕਿੰਗ ਸਟੇਸ਼ਨ ਵਰਤੋ।</translation> <translation id="215753907730220065">ਪੂਰੀ ਸਕ੍ਰੀਨ ਤੋਂ ਬਾਹਰ ਜਾਓ</translation> <translation id="2157875535253991059">ਇਹ ਸਫ਼ਾ ਹੁਣ ਪੂਰੀ ਸਕ੍ਰੀਨ ਹੈ।</translation> -<translation id="2160589599612868242">ਆਪਣੇ ਫ਼ੋਨ ਤੋਂ ਆਪਣੇ <ph name="DEVICE_TYPE" /> 'ਤੇ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰੋ</translation> <translation id="216169395504480358">ਵਾਈ-ਫਾਈ ਸ਼ਾਮਿਲ ਕਰੋ...</translation> <translation id="2162155940152307086">ਤੁਹਾਡੇ ਵੱਲੋਂ ਸਮਕਾਲੀਕਰਨ ਸੈਟਿੰਗਾਂ ਤੋਂ ਬਾਹਰ ਜਾਣ ਤੋਂ ਬਾਅਦ ਸਮਕਾਲੀਕਰਨ ਸ਼ੁਰੂ ਹੋ ਜਾਵੇਗਾ</translation> <translation id="2162838847352058695">ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਕਈ ਫ਼ਾਈਲਾਂ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਤੋਂ ਰੋਕਣ ਲਈ ਸਾਈਟਾਂ ਨੂੰ ਬਲਾਕ ਕਰੋ</translation> @@ -1700,7 +1698,6 @@ <translation id="2885729872133513017">ਸਰਵਰ ਦੇ ਜਵਾਬ ਨੂੰ ਡੀਕੋਡ ਕਰਨ ਵੇਲੇ ਕੋਈ ਸਮੱਸਿਆ ਆਈ।</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">ਇਸ ਨਾਲ ਲਿੰਕ ਖੋਲ੍ਹੇੋ...</translation> -<translation id="2889481634493693121">ਆਪਣੇ ਫ਼ੋਨ 'ਤੇ ਸੂਚਨਾਵਾਂ ਚਾਲੂ ਕਰੋ</translation> <translation id="2889925978073739256">ਅਨਸੈਂਡਬੌਕਸਿਡ ਪਲਗਇੰਸ ਨੂੰ ਬਲੌਕ ਕਰਨਾ ਜਾਰੀ ਰੱਖੋ</translation> <translation id="2893168226686371498">ਪੂਰਵ-ਨਿਰਧਾਰਤ ਬ੍ਰਾਊਜ਼ਰ</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 ਲਿਖਤ}one{# ਲਿਖਤ}other{# ਲਿਖਤਾਂ}}</translation> @@ -2801,7 +2798,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">ਡੀਵਾਈਸ ਲੌਗ</translation> <translation id="4130207949184424187">ਇਹ ਐਕਸਟੈਂਸ਼ਨ ਬਦਲਿਆ ਗਿਆ ਹੈ ਕਿ ਕਿਹੜਾ ਪੰਨਾ ਦਿਖਾਇਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ Omnibox ਤੋਂ ਖੋਜ ਕਰਦੇ ਹੋ।</translation> -<translation id="4130344535649650885">ਕੀ ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਇਹ ਪਾਸਵਰਡ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?</translation> <translation id="4130750466177569591">ਮੈਂ ਸਹਿਮਤ ਹਾਂ</translation> <translation id="413121957363593859">ਕੰਪੋਨੈਂਟਸ</translation> <translation id="4131410914670010031">ਕਾਲਾ ਅਤੇ ਚਿੱਟਾ</translation> @@ -3928,7 +3924,6 @@ <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="5503858713116291452">ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਹਾਡਾ ਫ਼ੋਨ ਨਜ਼ਦੀਕ ਹੈ, ਅਣਲਾਕ ਹੈ ਅਤੇ ਉਸਦਾ ਬਲੂਟੁੱਥ ਅਤੇ ਵਾਈ-ਫਾਈ ਚਾਲੂ ਹੈ। ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰਨ ਲਈ ਆਪਣੇ ਫ਼ੋਨ 'ਤੇ ਦਿੱਤੇ ਪੜਾਵਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ।</translation> <translation id="5503982651688210506"><ph name="HOST" /> ਨੂੰ ਆਪਣਾ ਕੈਮਰਾ ਵਰਤਣ ਅਤੇ ਹਿਲਾਉਣ ਅਤੇ ਆਪਣਾ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਵਰਤਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਜਾਰੀ ਰੱਖੋ</translation> <translation id="5505264765875738116">ਸਾਈਟਾਂ ਸੂਚਨਾਵਾਂ ਭੇਜਣ ਲਈ ਪੁੱਛ ਨਹੀਂ ਸਕਦੀਆਂ ਹਨ</translation> <translation id="5505307013568720083">ਸਿਆਹੀ ਖਤਮ ਹੋਈ</translation> @@ -3989,6 +3984,7 @@ <translation id="5565735124758917034">ਸਕਿਰਿਆ</translation> <translation id="5567989639534621706">ਐਪਲੀਕੇਸ਼ਨ ਕੈਸ਼ੇ</translation> <translation id="5568069709869097550">ਸਾਈਨ-ਇਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation> +<translation id="5571832155627049070">ਆਪਣੇ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਵਿਉਂਤਬੱਧ ਕਰੋ</translation> <translation id="5572851009514199876">ਕਿਰਪਾ ਕਰਕੇ ਸ਼ੁਰੂ ਕਰੋ ਅਤੇ Chrome 'ਤੇ ਸਾਈਨ ਇਨ ਕਰੋ ਤਾਂ ਕਿ Chrome ਇਹ ਜਾਂਚ ਸਕੇ ਕਿ ਤੁਹਾਨੂੰ ਇਸ ਸਾਈਟ 'ਤੇ ਪਹੁੰਚ ਲਈ ਇਜਾਜ਼ਤ ਹੈ ਜਾਂ ਨਹੀਂ।</translation> <translation id="5575473780076478375">ਇਨਕੋਗਨਿਟੋ ਐਕਸਟੈਂਸ਼ਨ: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">ਡੈਮੋ ਰਜਿਸਟਰੇਸ਼ਨ ਬੇਨਤੀ ਵਿੱਚ ਸਮੱਸਿਆ ਆਈ।</translation> @@ -5872,6 +5868,7 @@ <translation id="7765158879357617694">ਮੂਵ ਕਰੋ</translation> <translation id="7765507180157272835">ਬਲੂਟੁੱਥ ਅਤੇ ਵਾਈ-ਫਾਈ ਦੀ ਲੋੜ ਹੈ</translation> <translation id="7766082757934713382">ਸਵੈਚਲਿਤ ਐਪ ਅਤੇ ਸਿਸਟਮ ਅੱਪਡੇਟ ਨੂੰ ਰੋਕ ਕੇ ਨੈੱਟਵਰਕ ਡਾਟਾ ਵਰਤੋਂ ਘਟਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ</translation> +<translation id="7766807826975222231">ਇੱਕ ਟੂਅਰ ਲਓ</translation> <translation id="7766838926148951335">ਇਜਾਜ਼ਤਾਂ ਸਵੀਕਾਰ ਕਰੋ</translation> <translation id="7768507955883790804">ਜਦੋਂ ਤੁਸੀਂ ਸਾਈਟਾਂ 'ਤੇ ਜਾਂਦੇ ਹੋ, ਤਾਂ ਉਹ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਇਸ ਸੈਟਿੰਗ ਦੀ ਪਾਲਣਾ ਕਰਦੀਆਂ ਹਨ</translation> <translation id="7768770796815395237">ਬਦਲੋ</translation> @@ -6283,7 +6280,6 @@ <translation id="8211551284753798479">ਅਵੈਧ PUK ਤੁਹਾਡੇ ਕੋਲ <ph name="RETRIES" /> ਕੋਸ਼ਿਸ਼ਾਂ ਬਾਕੀ ਹਨ।</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ਡਾਊਨਲੋਡ ਪ੍ਰਗਤੀ ਵਿੱਚ ਹੈ}one{ਡਾਊਨਲੋਡ ਪ੍ਰਗਤੀ ਵਿੱਚ ਹੈ}other{ਡਾਊਨਲੋਡ ਪ੍ਰਗਤੀ ਵਿੱਚ ਹਨ}}</translation> <translation id="8213449224684199188">ਫ਼ੋਟੋ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਹੋਏ</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੀ ਪਛਾਣ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹੈ, ਤਾਂ ਜੋ ਇਹ ਬਿਹਤਰੀਨ ਕੁਆਲਿਟੀ ਦੇ ਸੁਰੱਖਿਅਤ ਵੀਡੀਓ ਅਤੇ ਆਡੀਓ ਚਲਾ ਸਕੇ।</translation> <translation id="8214489666383623925">ਫਾਈਲ ਖੋਲ੍ਹੋ...</translation> <translation id="8214962590150211830">ਇਹ ਵਿਅਕਤੀ ਹਟਾਓ</translation> <translation id="8216351761227087153">ਦੇਖੋ</translation> @@ -6762,7 +6758,6 @@ <translation id="8774379074441005279">ਮੁੜ-ਬਹਾਲ ਕਰਨ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation> <translation id="8774934320277480003">ਟੌਪ ਹਾਸ਼ੀਆ</translation> <translation id="8775144690796719618">ਅਵੈਧ URL</translation> -<translation id="8775163630211761057">ਆਪਣੇ Android ਫ਼ੋਨ ਦੇ ਬਿਹਤਰੀਨ ਅਨੁਭਵ ਦਾ ਆਪਣੇ <ph name="DEVICE_TYPE" /> 'ਤੇ ਵਿਸਤਾਰ ਕਰੋ</translation> <translation id="8775653927968399786">{0,plural, =1{ਤੁਹਾਡਾ <ph name="DEVICE_TYPE" /> ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ # ਸਕਿੰਟ ਵਿੱਚ ਲਾਕ ਕੀਤਾ ਜਾਵੇਗਾ। <ph name="DOMAIN" /> ਲਈ ਤੁਹਾਨੂੰ ਆਪਣਾ ਸਮਾਰਟ ਕਾਰਡ ਪਾਈ ਰੱਖਣ ਦੀ ਲੋੜ ਹੈ।}one{ਤੁਹਾਡਾ <ph name="DEVICE_TYPE" /> ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ # ਸਕਿੰਟ ਵਿੱਚ ਲਾਕ ਕੀਤਾ ਜਾਵੇਗਾ। <ph name="DOMAIN" /> ਲਈ ਤੁਹਾਨੂੰ ਆਪਣਾ ਸਮਾਰਟ ਕਾਰਡ ਪਾਈ ਰੱਖਣ ਦੀ ਲੋੜ ਹੈ।}other{ਤੁਹਾਡਾ <ph name="DEVICE_TYPE" /> ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ # ਸਕਿੰਟਾਂ ਵਿੱਚ ਲਾਕ ਕੀਤਾ ਜਾਵੇਗਾ।
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index 0ae7f31..ab346c2 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -340,6 +340,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Brak przejętych haseł}=1{1 przejęte hasło}few{{NUM_COMPROMISED} przejęte hasła}many{{NUM_COMPROMISED} przejętych haseł}other{{NUM_COMPROMISED} przejętego hasła}}</translation> <translation id="1380028686461971526">Automatycznie łącz z siecią</translation> <translation id="1380436189840894976">Zamknąć tryb incognito mimo to?</translation> +<translation id="1383597849754832576">Nie udało się pobrać plików z mową. Spróbuj później.</translation> <translation id="1383861834909034572">Otwieranie po ukończeniu</translation> <translation id="1383876407941801731">Szukaj</translation> <translation id="1386791642444521222">Aktywuj fizyczną kartę SIM</translation> @@ -874,7 +875,6 @@ <translation id="1954813140452229842">Błąd podczas podłączania udziału. Sprawdź dane logowania i spróbuj ponownie.</translation> <translation id="1956050014111002555">Plik zawierał wiele certyfikatów, z których żaden nie został zaimportowany:</translation> <translation id="1956390763342388273">Spowoduje to przesłanie wszystkich plików z folderu „<ph name="FOLDER_PATH" />”. Zdecyduj się na ten krok tylko, jeśli ufasz witrynie.</translation> -<translation id="1960158217849594135">Zapisać nazwę użytkownika na Twoim koncie Google?</translation> <translation id="196040970347962278">Najpierw musisz nawiązać połączenie z internetem</translation> <translation id="1962233722219655970">Ta strona używa aplikacji klienta natywnego, która nie działa na Twoim komputerze.</translation> <translation id="1963227389609234879">Usuń wszystko</translation> @@ -900,6 +900,7 @@ <translation id="1984417487208496350">Brak ochrony (niezalecane)</translation> <translation id="1987317783729300807">Konta</translation> <translation id="1989112275319619282">Przeglądaj</translation> +<translation id="1990046457226896323">Pliki z mową zostały pobrane</translation> <translation id="1990512225220753005">Nie wyświetlaj skrótów na tej stronie</translation> <translation id="1992397118740194946">Nie ustawiono</translation> <translation id="1992924914582925289">Usuń z urządzenia</translation> @@ -1045,7 +1046,6 @@ <translation id="2157474325782140681">Aby korzystać z większej liczby funkcji, używaj stacji dokującej Dell przeznaczonej do tego Chromebooka.</translation> <translation id="215753907730220065">Zamknij pełny ekran</translation> <translation id="2157875535253991059">Ta strona jest wyświetlana w trybie pełnoekranowym.</translation> -<translation id="2160589599612868242">Odbieraj powiadomienia z telefonu na urządzeniu <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Dodaj Wi-Fi...</translation> <translation id="2162155940152307086">Synchronizacja rozpocznie się zaraz po zamknięciu ustawień</translation> <translation id="2162838847352058695">Nie zezwalaj stronom na automatyczne pobieranie wielu plików</translation> @@ -1263,6 +1263,7 @@ <translation id="2399699884460174994">Powiadomienia włączone</translation> <translation id="2399939490305346086">Dane logowania na kluczu bezpieczeństwa</translation> <translation id="2400664245143453337">Wymagana natychmiastowa aktualizacja</translation> +<translation id="2406153734066939945">Usunąć ten profil i powiązane z nim dane?</translation> <translation id="2408018932941436077">Zapisuję kartę</translation> <translation id="2408955596600435184">Wpisz kod PIN</translation> <translation id="241082044617551207">Nieznana wtyczka</translation> @@ -1381,6 +1382,7 @@ <translation id="2526590354069164005">Pulpit</translation> <translation id="2526619973349913024">Sprawdź dostępność aktualizacji</translation> <translation id="2527167509808613699">Dowolny rodzaj połączenia</translation> +<translation id="2530166226437958497">Rozwiązywanie problemów</translation> <translation id="2532589005999780174">Tryb wysokiego kontrastu</translation> <translation id="253434972992662860">&Wstrzymaj</translation> <translation id="2534460670861217804">Serwer proxy HTTPS</translation> @@ -1698,7 +1700,6 @@ <translation id="2885729872133513017">Podczas dekodowania odpowiedzi serwera wystąpił problem.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Otwórz link przy użyciu...</translation> -<translation id="2889481634493693121">Włącz powiadomienia na swoim telefonie</translation> <translation id="2889925978073739256">Nadal blokuj wtyczki spoza piaskownicy</translation> <translation id="2893168226686371498">Domyślna przeglądarka</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 tekst}few{# teksty}many{# tekstów}other{# tekstu}}</translation> @@ -2558,6 +2559,7 @@ <translation id="3857807444929313943">Podnieś palec i przyłóż ponownie</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: synchronizacja wstrzymana</translation> <translation id="3861638017150647085">Nazwa użytkownika „<ph name="USERNAME" />” jest niedostępna</translation> +<translation id="3861977424605124250">Pokaż po uruchomieniu</translation> <translation id="3862693525629180217">Zweryfikuj za pomocą wbudowanego czujnika</translation> <translation id="3862788408946266506">Aplikację z atrybutem „kiosk_only” w pliku manifestu należy zainstalować w Chrome OS w trybie kiosku</translation> <translation id="3865414814144988605">Rozdzielczość</translation> @@ -2800,7 +2802,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Dziennik urządzenia</translation> <translation id="4130207949184424187">To rozszerzenie ustawiło inną stronę wyświetlaną po wyszukiwaniu w omniboksie.</translation> -<translation id="4130344535649650885">Zapisać hasło na Twoim koncie Google?</translation> <translation id="4130750466177569591">Zgadzam się</translation> <translation id="413121957363593859">Komponenty</translation> <translation id="4131410914670010031">Czarno-biały</translation> @@ -3199,6 +3200,7 @@ <translation id="4627442949885028695">Kontynuuj z innego urządzenia</translation> <translation id="4628757576491864469">Urządzenia</translation> <translation id="4628762811416793313">Konfiguracja kontenera Linuxa nie została ukończona. Spróbuj ponownie.</translation> +<translation id="4629521233550547305">Otwórz profil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Rozszerzenie wymaga: „<ph name="IMPORT_NAME" />” przynajmniej w wersji „<ph name="IMPORT_VERSION" />”, ale zainstalowana jest tylko wersja „<ph name="INSTALLED_VERSION" />”</translation> <translation id="4633757335284074492">Twórz kopie zapasowe na Dysku Google. W dowolnej chwili możesz w prosty sposób przywrócić dane lub używać ich na innym urządzeniu. Kopia zapasowa zawiera dane aplikacji. Kopie zapasowe są szyfrowane za pomocą hasła do konta Google Twojego dziecka i przesyłane do Google.</translation> <translation id="4634575639321169635">Skonfiguruj to urządzenie pod kątem pracy lub użytku osobistego</translation> @@ -3927,7 +3929,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Nie udało się odebrać danych (<ph name="ATTACHMENTS" />) z urządzenia <ph name="DEVICE_NAME" />}few{Nie udało się odebrać danych (<ph name="ATTACHMENTS" />) z urządzenia <ph name="DEVICE_NAME" />}many{Nie udało się odebrać danych (<ph name="ATTACHMENTS" />) z urządzenia <ph name="DEVICE_NAME" />}other{Nie udało się odebrać danych (<ph name="ATTACHMENTS" />) z urządzenia <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Zaimportowane z Firefoxa</translation> <translation id="5502915260472117187">Dziecko</translation> -<translation id="5503858713116291452">Sprawdź, czy telefon jest w pobliżu, jest odblokowany i ma włączone Bluetooth oraz Wi-Fi. Wykonaj instrukcje na telefonie, by zakończyć konfigurację.</translation> <translation id="5503982651688210506">Nadal zezwalaj witrynie <ph name="HOST" /> na używanie kamery i poruszanie nią oraz na używanie mikrofonu</translation> <translation id="5505264765875738116">Strony nie mogą prosić o zgodę na wysyłanie powiadomień</translation> <translation id="5505307013568720083">Brak tuszu</translation> @@ -3988,6 +3989,7 @@ <translation id="5565735124758917034">Aktywny</translation> <translation id="5567989639534621706">Pamięci podręczne aplikacji</translation> <translation id="5568069709869097550">Nie można się zalogować</translation> +<translation id="5571832155627049070">Dostosuj profil</translation> <translation id="5572851009514199876">Uruchom Chrome i zaloguj się w nim, by mógł sprawdzić, czy masz uprawnienia dostępu do tej strony.</translation> <translation id="5575473780076478375">Rozszerzenie w trybie incognito: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Wystąpił problem z żądaniem zarejestrowania w trybie demonstracyjnym.</translation> @@ -5457,6 +5459,7 @@ <translation id="7280649757394340890">Ustawienia głosu przy zamianie tekstu na mowę</translation> <translation id="7280877790564589615">Prośba o uprawnienia</translation> <translation id="7282992757463864530">Pasek informacyjny</translation> +<translation id="7283555985781738399">Tryb gościa</translation> <translation id="7284411326658527427">Każda osoba może spersonalizować swoje konto i zachować prywatność swoich danych.</translation> <translation id="7287143125007575591">Odmowa dostępu.</translation> <translation id="7287411021188441799">Przywróć domyślne tło</translation> @@ -5836,6 +5839,7 @@ <translation id="7716781361494605745">Adres URL zasad urzędu certyfikacji firmy Netscape</translation> <translation id="7717014941119698257">Pobieram: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Strony mogą prosić o dostęp do Twojej lokalizacji (zalecane)</translation> +<translation id="771721654176725387">Spowoduje to trwałe usunięcie danych przeglądania z tego urządzenia. Aby przywrócić dane, włącz synchronizację jako</translation> <translation id="7717845620320228976">Sprawdź dostępność aktualizacji</translation> <translation id="7719367874908701697">Powiększenie strony</translation> <translation id="7719588063158526969">Nazwa urządzenia jest za długa</translation> @@ -5872,6 +5876,7 @@ <translation id="7765158879357617694">Przenieś</translation> <translation id="7765507180157272835">Potrzebne są Bluetooth i Wi-Fi</translation> <translation id="7766082757934713382">Pomaga ograniczyć sieciową transmisję danych dzięki wstrzymaniu automatycznych aktualizacji aplikacji i systemu</translation> +<translation id="7766807826975222231">Obejrzyj prezentację</translation> <translation id="7766838926148951335">Zaakceptuj uprawnienia</translation> <translation id="7768507955883790804">Otwierane witryny automatycznie działają zgodnie z tym ustawieniem.</translation> <translation id="7768770796815395237">Zmień</translation> @@ -6116,6 +6121,7 @@ <translation id="8017176852978888182">Katalogi udostępnione Linuksa</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Skrót był edytowany</translation> +<translation id="8018298733481692628">Usunąć ten profil?</translation> <translation id="8018313076035239964">Określ, z jakich informacji mogą korzystać strony internetowe i jakie treści mogą się na nich wyświetlać</translation> <translation id="8023801379949507775">Aktualizuj rozszerzenia</translation> <translation id="8026334261755873520">Wyczyść dane przeglądania</translation> @@ -6286,7 +6292,6 @@ <translation id="8211551284753798479">Nieprawidłowy PUK. Pozostałe próby: <ph name="RETRIES" />.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Trwa pobieranie pliku}few{Trwa pobieranie plików}many{Trwa pobieranie plików}other{Trwa pobieranie plików}}</translation> <translation id="8213449224684199188">Włączono tryb fotografowania</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> chce zidentyfikować Twoje urządzenie, aby odtwarzać chronione treści audio i wideo najwyższej jakości.</translation> <translation id="8214489666383623925">Otwórz plik...</translation> <translation id="8214962590150211830">Usuń tę osobę</translation> <translation id="8216351761227087153">Zobacz</translation> @@ -6765,7 +6770,6 @@ <translation id="8774379074441005279">Potwierdzenie przywrócenia danych</translation> <translation id="8774934320277480003">Górny margines</translation> <translation id="8775144690796719618">Nieprawidłowy URL</translation> -<translation id="8775163630211761057">Udostępnij to, co najlepsze z telefonu z Androidem na urządzeniu <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Twoje urządzenie <ph name="DEVICE_TYPE" /> zostanie automatycznie zablokowane za # sekundę. Domena <ph name="DOMAIN" /> wymaga, by karta inteligentna pozostała w gnieździe.}few{Twoje urządzenie <ph name="DEVICE_TYPE" /> zostanie automatycznie zablokowane za # sekundy. Domena <ph name="DOMAIN" /> wymaga, by karta inteligentna pozostała w gnieździe.}many{Twoje urządzenie <ph name="DEVICE_TYPE" /> zostanie automatycznie zablokowane za # sekund. @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">Możesz dostosować urządzenie do swoich potrzeb. Ułatwienia dostępu możesz zawsze zmienić w Ustawieniach.</translation> <translation id="897414447285476047">Plik docelowy był niekompletny z powodu problemu z połączeniem.</translation> <translation id="897525204902889653">Usługa kwarantanny</translation> +<translation id="8975396729541388937">W każdej chwili możesz zrezygnować z subskrypcji. Wystarczy kliknąć link w otrzymywanych e-mailach.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />”}=1{„<ph name="TAB_TITLE" />” i jeszcze jedna karta}few{„<ph name="TAB_TITLE" />” i # inne karty}many{„<ph name="TAB_TITLE" />” i # innych kart}other{„<ph name="TAB_TITLE" />” i # innej karty}}</translation> <translation id="8977811652087512276">Nieprawidłowe hasło lub uszkodzony plik</translation> <translation id="8978154919215542464">Włączono synchronizację wszystkich danych</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index f4bc4b8..b84acf9 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Nenhuma senha comprometida}=1{1 senha comprometida}one{{NUM_COMPROMISED} senha comprometida}other{{NUM_COMPROMISED} senhas comprometidas}}</translation> <translation id="1380028686461971526">Conectar-se automaticamente à rede</translation> <translation id="1380436189840894976">Sair do modo de navegação anônima mesmo assim?</translation> +<translation id="1383597849754832576">Não foi possível fazer o download dos arquivos de fala. Tente novamente mais tarde.</translation> <translation id="1383861834909034572">Abrir quando estiver concluído</translation> <translation id="1383876407941801731">Pesquisar</translation> <translation id="1386791642444521222">Ativar chip físico</translation> @@ -877,7 +878,6 @@ <translation id="1954813140452229842">Erro ao ativar o compartilhamento. Verifique suas credenciais e tente novamente.</translation> <translation id="1956050014111002555">O arquivo continha muitos certificados e nenhum deles foi importado:</translation> <translation id="1956390763342388273">Essa ação fará o upload de todos os arquivos de "<ph name="FOLDER_PATH" />". Faça isso apenas se você confiar no site.</translation> -<translation id="1960158217849594135">Salvar nome de usuário na sua Conta do Google?</translation> <translation id="196040970347962278">É necessário ter uma conexão de Internet</translation> <translation id="1962233722219655970">Esta página usa um aplicativo de cliente nativo que não funciona em seu computador.</translation> <translation id="1963227389609234879">Remover tudo</translation> @@ -903,6 +903,7 @@ <translation id="1984417487208496350">Sem proteção (não recomendado)</translation> <translation id="1987317783729300807">Contas</translation> <translation id="1989112275319619282">Procurar</translation> +<translation id="1990046457226896323">Download de arquivos de fala concluído</translation> <translation id="1990512225220753005">Não mostrar atalhos nesta página</translation> <translation id="1992397118740194946">Não definido</translation> <translation id="1992924914582925289">Remover do dispositivo</translation> @@ -1048,7 +1049,6 @@ <translation id="2157474325782140681">Para ter outros recursos, use uma base de encaixe Dell compatível com este Chromebook.</translation> <translation id="215753907730220065">Sair do modo tela cheia</translation> <translation id="2157875535253991059">Esta página está no modo de tela inteira.</translation> -<translation id="2160589599612868242">Receba notificações do seu smartphone no <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Adicionar Wi-Fi...</translation> <translation id="2162155940152307086">A sincronização será iniciada assim que você sair das configurações</translation> <translation id="2162838847352058695">Impedir que sites façam o download automático de vários arquivos</translation> @@ -1266,6 +1266,7 @@ <translation id="2399699884460174994">Notificações ativadas</translation> <translation id="2399939490305346086">Dados de login da chave de segurança</translation> <translation id="2400664245143453337">Atualização imediata necessária</translation> +<translation id="2406153734066939945">Excluir este perfil e os dados dele?</translation> <translation id="2408018932941436077">Salvando cartão</translation> <translation id="2408955596600435184">Informe seu PIN</translation> <translation id="241082044617551207">Plug-in desconhecido</translation> @@ -1384,6 +1385,7 @@ <translation id="2526590354069164005">Área de trabalho</translation> <translation id="2526619973349913024">Verificar atualizações</translation> <translation id="2527167509808613699">Qualquer tipo de conexão</translation> +<translation id="2530166226437958497">Solução de problemas</translation> <translation id="2532589005999780174">Modo de alto contraste</translation> <translation id="253434972992662860">&Pausar</translation> <translation id="2534460670861217804">Proxy HTTP seguro</translation> @@ -1701,7 +1703,6 @@ <translation id="2885729872133513017">Ocorreu um problema ao decodificar a resposta do servidor.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Abrir link com...</translation> -<translation id="2889481634493693121">Ativar as notificações no seu smartphone</translation> <translation id="2889925978073739256">Continuar bloqueando plug-ins sem sandbox</translation> <translation id="2893168226686371498">Navegador padrão</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 mensagem de texto}one{# mensagem de texto}other{# mensagens de texto}}</translation> @@ -2562,6 +2563,7 @@ <translation id="3857807444929313943">Tire o dedo e toque novamente</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sincronização pausada</translation> <translation id="3861638017150647085">O nome de usuário "<ph name="USERNAME" />" não está disponível</translation> +<translation id="3861977424605124250">Exibir na inicialização</translation> <translation id="3862693525629180217">Verificar pelo sensor integrado</translation> <translation id="3862788408946266506">O app com o atributo de manifesto "kiosk_only" precisa ser instalado no modo quiosque do Chrome OS</translation> <translation id="3865414814144988605">Resolução</translation> @@ -2804,7 +2806,6 @@ <translation id="412730574613779332">Mascarado</translation> <translation id="4130199216115862831">Registro do dispositivo</translation> <translation id="4130207949184424187">Esta extensão alterou a página que é exibida quando você pesquisa na Omnibox.</translation> -<translation id="4130344535649650885">Salvar a senha na sua Conta do Google?</translation> <translation id="4130750466177569591">Aceito</translation> <translation id="413121957363593859">Componentes</translation> <translation id="4131410914670010031">Preto e branco</translation> @@ -3203,6 +3204,7 @@ <translation id="4627442949885028695">Continuar de outro dispositivo</translation> <translation id="4628757576491864469">Dispositivos</translation> <translation id="4628762811416793313">A configuração do contêiner Linux não foi concluída. Tente novamente.</translation> +<translation id="4629521233550547305">Abrir perfil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">A extensão requer "<ph name="IMPORT_NAME" />" com a versão mínima "<ph name="IMPORT_VERSION" />", mas apenas a versão "<ph name="INSTALLED_VERSION" />" está instalada</translation> <translation id="4633757335284074492">Fazer backup no Google Drive Restaure dados ou troque de dispositivo a qualquer momento com facilidade. O backup inclui dados do app. Os backups são enviados ao Google e criptografados usando a senha da Conta do Google da criança.</translation> <translation id="4634575639321169635">Configurar este dispositivo para uso profissional ou pessoal</translation> @@ -3931,7 +3933,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Falha ao receber <ph name="ATTACHMENTS" /> do <ph name="DEVICE_NAME" />}one{Falha ao receber <ph name="ATTACHMENTS" /> do <ph name="DEVICE_NAME" />}other{Falha ao receber <ph name="ATTACHMENTS" /> do <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Importado do Firefox</translation> <translation id="5502915260472117187">Uma criança</translation> -<translation id="5503858713116291452">Confira se o smartphone está por perto, desbloqueado e com o Wi-Fi e o Bluetooth ativados. Siga as etapas no seu smartphone para concluir a configuração.</translation> <translation id="5503982651688210506">Continuar permitindo que <ph name="HOST" /> use e mova sua câmera e use seu microfone</translation> <translation id="5505264765875738116">Os sites não podem pedir para enviar notificações</translation> <translation id="5505307013568720083">Sem tinta</translation> @@ -3992,6 +3993,7 @@ <translation id="5565735124758917034">Ativo</translation> <translation id="5567989639534621706">Caches de aplicativos</translation> <translation id="5568069709869097550">Não consigo acessar</translation> +<translation id="5571832155627049070">Personalize seu perfil</translation> <translation id="5572851009514199876">Inicie e faça login no Chrome para que ele possa verificar se você tem permissão para acessar este site.</translation> <translation id="5575473780076478375">Extensão anônima: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Ocorreu um problema com a solicitação de registro de demonstração.</translation> @@ -5304,7 +5306,7 @@ <translation id="7086672505018440886">Incluir arquivos de registros do Chrome no arquivo.</translation> <translation id="7088434364990739311">A atualização da verificação falhou ao iniciar (código do erro <ph name="ERROR" />).</translation> <translation id="7088561041432335295">Zip Archiver: abra e compacte arquivos ZIP no app Arquivos.</translation> -<translation id="7088674813905715446">O administrador pôs este dispositivo no estado de aprovisionamento cancelado. Para ativar a inscrição do dispositivo, solicite que o administrador o coloque no estado "Pendente".</translation> +<translation id="7088674813905715446">O administrador pôs este dispositivo no estado de provisionamento cancelado. Para ativar a inscrição do dispositivo, solicite que o administrador o coloque no estado "Pendente".</translation> <translation id="7092474863625458670">O Voice Match permite que você acesse o Assistente diretamente usando sua voz. <ph name="BR" /> <ph name="BEGIN_BOLD" />Lembre-se:<ph name="END_BOLD" /> é possível que uma voz semelhante ou uma gravação consiga acessar seu Assistente. Você pode retirar a permissão do Voice Match posteriormente desativando-o nas configurações do Assistente.</translation> @@ -5463,6 +5465,7 @@ <translation id="7280649757394340890">Configurações da conversão de texto em voz</translation> <translation id="7280877790564589615">Permissão solicitada</translation> <translation id="7282992757463864530">Barra de informações</translation> +<translation id="7283555985781738399">Modo visitante</translation> <translation id="7284411326658527427">Cada pessoa pode personalizar a própria conta e manter os dados privados.</translation> <translation id="7287143125007575591">Acesso negado.</translation> <translation id="7287411021188441799">Restaurar plano de fundo padrão</translation> @@ -5842,6 +5845,7 @@ <translation id="7716781361494605745">URL da diretiva de autoridade de certificação do Netscape</translation> <translation id="7717014941119698257">Fazendo download <ph name="STATUS" /></translation> <translation id="7717134585801378441">Os sites podem perguntar sua localização (recomendado)</translation> +<translation id="771721654176725387">Isso excluirá permanentemente os dados de navegação deste dispositivo. Para recuperar os dados, ative a sincronização como</translation> <translation id="7717845620320228976">Verificar se há atualizações</translation> <translation id="7719367874908701697">Zoom da página:</translation> <translation id="7719588063158526969">Nome do dispositivo muito longo</translation> @@ -5878,6 +5882,7 @@ <translation id="7765158879357617694">Mover</translation> <translation id="7765507180157272835">Bluetooth e Wi-Fi necessários</translation> <translation id="7766082757934713382">Ajuda a reduzir o uso de dados da rede pausando atualizações automáticas de apps e do sistema</translation> +<translation id="7766807826975222231">Fazer o tour</translation> <translation id="7766838926148951335">Aceitar permissões</translation> <translation id="7768507955883790804">Os sites seguem esta configuração automaticamente ao serem acessados</translation> <translation id="7768770796815395237">Mudar</translation> @@ -6122,6 +6127,7 @@ <translation id="8017176852978888182">Diretórios compartilhados do Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Atalho editado</translation> +<translation id="8018298733481692628">Excluir este perfil?</translation> <translation id="8018313076035239964">Controla quais informações os sites podem usar e quais conteúdos eles podem mostrar</translation> <translation id="8023801379949507775">Atualizar extensões agora</translation> <translation id="8026334261755873520">Limpar dados de navegação</translation> @@ -6292,7 +6298,6 @@ <translation id="8211551284753798479">PUK inválida. Você tem <ph name="RETRIES" /> tentativas restantes.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{O download está em andamento}one{O download está em andamento}other{Os downloads estão em andamento}}</translation> <translation id="8213449224684199188">Alterado para o modo de foto</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> quer identificar seu dispositivo para que possa abrir vídeos e áudios protegidos na melhor qualidade.</translation> <translation id="8214489666383623925">Abrir arquivo...</translation> <translation id="8214962590150211830">Remover esta pessoa</translation> <translation id="8216351761227087153">Assistir</translation> @@ -6771,7 +6776,6 @@ <translation id="8774379074441005279">Confirmar restauração</translation> <translation id="8774934320277480003">Margem superior</translation> <translation id="8775144690796719618">URL inválido</translation> -<translation id="8775163630211761057">Levar o melhor do seu smartphone Android para o <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Seu <ph name="DEVICE_TYPE" /> será bloqueado automaticamente em # segundo. <ph name="DOMAIN" /> requer que você mantenha o cartão inteligente inserido.}one{Seu <ph name="DEVICE_TYPE" /> será bloqueado automaticamente em # segundo. <ph name="DOMAIN" /> requer que você mantenha o cartão inteligente inserido.}other{Seu <ph name="DEVICE_TYPE" /> será bloqueado automaticamente em # segundos. @@ -6961,6 +6965,7 @@ <translation id="8973596347849323817">É possível personalizar este dispositivo para atender às suas necessidades. Esses recursos de acessibilidade podem ser alterados posteriormente em "Config.".</translation> <translation id="897414447285476047">O arquivo de destino estava incompleto devido a um problema de conexão.</translation> <translation id="897525204902889653">Serviço de quarentena</translation> +<translation id="8975396729541388937">Cancele a inscrição a qualquer momento clicando no link nos e-mails recebidos.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" e mais 1 guia}one{"<ph name="TAB_TITLE" />" e mais # guia}other{"<ph name="TAB_TITLE" />" e mais # guias}}</translation> <translation id="8977811652087512276">Senha incorreta ou arquivo corrompido</translation> <translation id="8978154919215542464">Ativado - sincronizar tudo</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index f05e0e96..3de9cde 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Nenhuma palavra-passe comprometida.}=1{1 palavra-passe comprometida.}other{{NUM_COMPROMISED} palavras-passe comprometidas.}}</translation> <translation id="1380028686461971526">Ligar automaticamente à rede</translation> <translation id="1380436189840894976">Pretende sair do modo de navegação anónima mesmo assim?</translation> +<translation id="1383597849754832576">Não é possível transferir os ficheiros de voz. Tente novamente mais tarde.</translation> <translation id="1383861834909034572">Abrir quando concluído</translation> <translation id="1383876407941801731">Pesquisar</translation> <translation id="1386791642444521222">Ativar SIM físico</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Erro ao montar a partilha. Verifique as suas credenciais e tente novamente.</translation> <translation id="1956050014111002555">O ficheiro continha vários certificados e nenhum deles foi importado:</translation> <translation id="1956390763342388273">Esta ação irá carregar todos os ficheiros de "<ph name="FOLDER_PATH" />". Faça isto apenas se confiar no site.</translation> -<translation id="1960158217849594135">Pretende guardar o nome de utilizador na sua Conta Google?</translation> <translation id="196040970347962278">Estabeleça ligação à Internet primeiro.</translation> <translation id="1962233722219655970">Esta página utiliza uma aplicação Native Client que não funciona no computador.</translation> <translation id="1963227389609234879">Remover tudo</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Sem proteção (não recomendado)</translation> <translation id="1987317783729300807">Contas</translation> <translation id="1989112275319619282">Procurar</translation> +<translation id="1990046457226896323">Ficheiros de voz transferidos.</translation> <translation id="1990512225220753005">Não mostre atalhos nesta página</translation> <translation id="1992397118740194946">Não definida</translation> <translation id="1992924914582925289">Remover do dispositivo</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Para ter acesso a mais funcionalidades, utilize uma estação de ancoragem Dell concebida para trabalhar com este Chromebook.</translation> <translation id="215753907730220065">Sair do modo de ecrã inteiro</translation> <translation id="2157875535253991059">Esta página está agora em ecrã inteiro.</translation> -<translation id="2160589599612868242">Receba notificações do seu telemóvel no <ph name="DEVICE_TYPE" />.</translation> <translation id="216169395504480358">Adicionar Wi-Fi...</translation> <translation id="2162155940152307086">A sincronização é iniciada depois de sair das definições de sincronização.</translation> <translation id="2162838847352058695">Impedir que os sites transfiram automaticamente vários ficheiros</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Notificações ativadas</translation> <translation id="2399939490305346086">Dados de início de sessão da chave de segurança</translation> <translation id="2400664245143453337">É necessária uma atualização imediata</translation> +<translation id="2406153734066939945">Pretende eliminar este perfil e os respetivos dados?</translation> <translation id="2408018932941436077">A guardar o cartão…</translation> <translation id="2408955596600435184">Introduza o PIN</translation> <translation id="241082044617551207">Plug-in desconhecido</translation> @@ -1382,6 +1383,7 @@ <translation id="2526590354069164005">Ambiente de trabalho</translation> <translation id="2526619973349913024">Verificar se existem actualizações</translation> <translation id="2527167509808613699">Qualquer tipo de ligação</translation> +<translation id="2530166226437958497">Resolução de problemas</translation> <translation id="2532589005999780174">Modo de alto contraste</translation> <translation id="253434972992662860">&Pausa</translation> <translation id="2534460670861217804">Proxy de HTTP seguro</translation> @@ -1699,7 +1701,6 @@ <translation id="2885729872133513017">Ocorreu um problema ao descodificar a resposta do servidor.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Abrir link com...</translation> -<translation id="2889481634493693121">Ative notificações no seu telemóvel</translation> <translation id="2889925978073739256">Continuar a bloquear plug-ins sem isolamento de processos</translation> <translation id="2893168226686371498">Navegador predefinido</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 texto}other{# textos}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Levante e toque novamente</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sincronização em pausa</translation> <translation id="3861638017150647085">O nome de utilizador "<ph name="USERNAME" />" não está disponível.</translation> +<translation id="3861977424605124250">Mostrar no arranque</translation> <translation id="3862693525629180217">Validar através do sensor integrado</translation> <translation id="3862788408946266506">É necessário instalar a aplicação com o atributo de manifesto "kiosk_only" no modo quiosque do Chrome OS.</translation> <translation id="3865414814144988605">Resolução</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Registo do dispositivo</translation> <translation id="4130207949184424187">Esta extensão alterou a página apresentada quando pesquisa a partir da caixa geral.</translation> -<translation id="4130344535649650885">Pretende guardar a palavra-passe para a sua Conta Google?</translation> <translation id="4130750466177569591">Concordo</translation> <translation id="413121957363593859">Componentes</translation> <translation id="4131410914670010031">Preto e branco</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Continuar a partir de outro dispositivo</translation> <translation id="4628757576491864469">Dispositivos</translation> <translation id="4628762811416793313">A configuração do contentor do Linux não foi concluída. Tente novamente.</translation> +<translation id="4629521233550547305">Abrir perfil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">A extensão requer "<ph name="IMPORT_NAME" />" com, pelo menos, a versão "<ph name="IMPORT_VERSION" />", mas apenas está instalada a versão "<ph name="INSTALLED_VERSION" />".</translation> <translation id="4633757335284074492">Faça uma cópia de segurança para o Google Drive. Restaure facilmente os dados ou troque de dispositivo em qualquer altura. Esta cópia de segurança inclui dados de apps. As cópias de segurança são carregadas para a Google e encriptadas com a palavra-passe da Conta Google da criança.</translation> <translation id="4634575639321169635">Configure este dispositivo para utilização profissional ou pessoal.</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Falha ao receber <ph name="ATTACHMENTS" /> de <ph name="DEVICE_NAME" />}other{Falha ao receber <ph name="ATTACHMENTS" /> de <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Importado do Firefox</translation> <translation id="5502915260472117187">Uma criança</translation> -<translation id="5503858713116291452">Certifique-se de que o telemóvel está próximo, desbloqueado e com o Bluetooth e o Wi-Fi ativados. Siga os passos no telemóvel para concluir a configuração.</translation> <translation id="5503982651688210506">Continuar a permitir que <ph name="HOST" /> utilize e mova a câmara e utilize o microfone</translation> <translation id="5505264765875738116">Os sites não podem pedir para enviar notificações.</translation> <translation id="5505307013568720083">Sem tinta</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Ativo</translation> <translation id="5567989639534621706">Caches de aplicações</translation> <translation id="5568069709869097550">Não é possível iniciar sessão</translation> +<translation id="5571832155627049070">Personalize o seu perfil</translation> <translation id="5572851009514199876">Comece e inicie sessão no Chrome para que este possa verificar se tem autorização para aceder a este site.</translation> <translation id="5575473780076478375">Extensão da navegação anónima: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Ocorreu um problema com o pedido de registo de demonstração.</translation> @@ -5460,6 +5462,7 @@ <translation id="7280649757394340890">Definições de voz para a síntese de voz</translation> <translation id="7280877790564589615">Autorização solicitada</translation> <translation id="7282992757463864530">Barra de informações</translation> +<translation id="7283555985781738399">Modo convidado</translation> <translation id="7284411326658527427">Cada pessoa pode personalizar a respetiva conta e manter os dados privados.</translation> <translation id="7287143125007575591">Acesso negado.</translation> <translation id="7287411021188441799">Restaurar fundo predefinido</translation> @@ -5839,6 +5842,7 @@ <translation id="7716781361494605745">URL da política da autoridade de certificação Netscape</translation> <translation id="7717014941119698257">A transferir: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Os sites podem solicitar a sua localização (recomendado)</translation> +<translation id="771721654176725387">Esta ação elimina permanentemente os dados de navegação deste dispositivo. Para recuperar os dados, ative Sincronizar como</translation> <translation id="7717845620320228976">Verificar atualizações</translation> <translation id="7719367874908701697">Zoom da página</translation> <translation id="7719588063158526969">O nome do dispositivo é demasiado longo.</translation> @@ -5875,6 +5879,7 @@ <translation id="7765158879357617694">Mover</translation> <translation id="7765507180157272835">É necessário Bluetooth e Wi-Fi</translation> <translation id="7766082757934713382">Ajuda a reduzir a utilização de dados de rede ao colocar em pausa as atualizações automáticas do sistema e de apps.</translation> +<translation id="7766807826975222231">Faça uma visita guiada</translation> <translation id="7766838926148951335">Aceitar autorizações</translation> <translation id="7768507955883790804">Os sites seguem automaticamente esta definição quando os visita.</translation> <translation id="7768770796815395237">Alterar</translation> @@ -6119,6 +6124,7 @@ <translation id="8017176852978888182">Diretórios partilhados do Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Atalho editado</translation> +<translation id="8018298733481692628">Pretende eliminar este perfil?</translation> <translation id="8018313076035239964">Controle as informações que os Sites podem utilizar e os conteúdos que podem apresentar</translation> <translation id="8023801379949507775">Atualizar extensões agora</translation> <translation id="8026334261755873520">Limpar dados de navegação</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">PUK inválido. Tem mais <ph name="RETRIES" /> tentativas.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Transferência em curso}other{Transferências em curso}}</translation> <translation id="8213449224684199188">Entrou no modo de foto</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> pretende identificar o seu dispositivo para poder reproduzir vídeo e áudio protegidos na máxima qualidade.</translation> <translation id="8214489666383623925">Abrir ficheiro...</translation> <translation id="8214962590150211830">Remover esta pessoa</translation> <translation id="8216351761227087153">Ver</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Confirme o restauro</translation> <translation id="8774934320277480003">Margem superior</translation> <translation id="8775144690796719618">URL inválido</translation> -<translation id="8775163630211761057">Expanda as capacidades do seu telemóvel Android para o <ph name="DEVICE_TYPE" />.</translation> <translation id="8775653927968399786">{0,plural, =1{O dispositivo <ph name="DEVICE_TYPE" /> será bloqueado automaticamente dentro de # segundo. <ph name="DOMAIN" /> requer que mantenha o seu cartão inteligente inserido.}other{O dispositivo <ph name="DEVICE_TYPE" /> será bloqueado automaticamente dentro de # segundos. <ph name="DOMAIN" /> requer que mantenha o seu cartão inteligente inserido.}}</translation> @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">Pode personalizar este dispositivo de acordo com as suas necessidades. Pode alterar estas funcionalidades de acessibilidade mais tarde em Definições.</translation> <translation id="897414447285476047">O ficheiro de destino está incompleto devido a um problema de ligação.</translation> <translation id="897525204902889653">Serviço de quarentena</translation> +<translation id="8975396729541388937">Anule a subscrição em qualquer altura ao clicar no link nos emails recebidos.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" e mais 1 separador}other{"<ph name="TAB_TITLE" />" e mais # separadores}}</translation> <translation id="8977811652087512276">Palavra-passe incorreta ou ficheiro danificado</translation> <translation id="8978154919215542464">Ativar – sincronizar tudo</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index 62ea23e..6c9e526a 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Nicio parolă compromisă}=1{O parolă compromisă}few{{NUM_COMPROMISED} parole compromise}other{{NUM_COMPROMISED} de parole compromise}}</translation> <translation id="1380028686461971526">Conectează-te automat la rețea</translation> <translation id="1380436189840894976">Ieși oricum din modul incognito?</translation> +<translation id="1383597849754832576">Nu se pot descărca fișierele de redare în scris a vorbirii. Încearcă din nou mai târziu.</translation> <translation id="1383861834909034572">Se va deschide după finalizare</translation> <translation id="1383876407941801731">Caută</translation> <translation id="1386791642444521222">Activează cardul SIM fizic</translation> @@ -877,7 +878,6 @@ <translation id="1954813140452229842">Eroare la montarea dispozitivului de stocare în rețea. Verifică acreditările și încearcă din nou.</translation> <translation id="1956050014111002555">Fișierul conținea certificate multiple și niciunul dintre acestea nu a fost importat:</translation> <translation id="1956390763342388273">Vor fi încărcate toate fișierele din „<ph name="FOLDER_PATH" />”. Fă acest lucru doar dacă ai încredere în site.</translation> -<translation id="1960158217849594135">Salvezi numele de utilizator în Contul Google?</translation> <translation id="196040970347962278">Mai întâi stabilește o conexiune la internet</translation> <translation id="1962233722219655970">Această pagină utilizează o aplicație Client nativ care nu funcționează pe computerul dvs.</translation> <translation id="1963227389609234879">Elimină tot</translation> @@ -903,6 +903,7 @@ <translation id="1984417487208496350">Fără protecție (nu este recomandat)</translation> <translation id="1987317783729300807">Conturi</translation> <translation id="1989112275319619282">Răsfoiește</translation> +<translation id="1990046457226896323">Fișierele de redare în scris a vorbirii s-au descărcat</translation> <translation id="1990512225220753005">Nu afișa comenzi rapide pe această pagină</translation> <translation id="1992397118740194946">Nu este setat</translation> <translation id="1992924914582925289">Elimină de pe dispozitiv</translation> @@ -1048,7 +1049,6 @@ <translation id="2157474325782140681">Pentru a beneficia de mai multe funcții, folosește o stație de andocare Dell proiectată să funcționeze cu acest Chromebook.</translation> <translation id="215753907730220065">Ieși din ecranul complet</translation> <translation id="2157875535253991059">Acum această pagină este în modul ecran complet.</translation> -<translation id="2160589599612868242">Primește notificări de pe telefon pe dispozitivul <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Adăugați o rețea Wi-Fi...</translation> <translation id="2162155940152307086">Sincronizarea va porni după ce părăsești setările pentru sincronizare</translation> <translation id="2162838847352058695">Împiedică site-urile să descarce automat mai multe fișiere</translation> @@ -1266,6 +1266,7 @@ <translation id="2399699884460174994">Notificări activate</translation> <translation id="2399939490305346086">Datele de conectare ale cheii de securitate</translation> <translation id="2400664245143453337">Este necesară actualizarea imediată</translation> +<translation id="2406153734066939945">Ștergi profilul și datele asociate?</translation> <translation id="2408018932941436077">Se salvează cardul</translation> <translation id="2408955596600435184">Introdu codul PIN</translation> <translation id="241082044617551207">Plugin necunoscut</translation> @@ -1384,6 +1385,7 @@ <translation id="2526590354069164005">Desktop</translation> <translation id="2526619973349913024">Verifică dacă există actualizări</translation> <translation id="2527167509808613699">Orice fel de conexiune</translation> +<translation id="2530166226437958497">Remedierea erorilor</translation> <translation id="2532589005999780174">Mod de contrast ridicat</translation> <translation id="253434972992662860">&Întrerupe</translation> <translation id="2534460670861217804">Proxy HTTP securizat</translation> @@ -1701,7 +1703,6 @@ <translation id="2885729872133513017">A apărut o problemă la decodarea răspunsului serverului.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Deschide linkul cu...</translation> -<translation id="2889481634493693121">Activează notificările pe telefon</translation> <translation id="2889925978073739256">Continuă blocarea pluginurilor scoase din mediul de testare</translation> <translation id="2893168226686371498">Browserul prestabilit</translation> <translation id="2893917546370257247">{COUNT,plural, =1{un mesaj text}few{# mesaje text}other{# de mesaje text}}</translation> @@ -2561,6 +2562,7 @@ <translation id="3857807444929313943">Ridică, apoi atinge din nou</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sincronizarea a fost întreruptă</translation> <translation id="3861638017150647085">Numele de utilizator „<ph name="USERNAME" />” nu este disponibil</translation> +<translation id="3861977424605124250">Afișează la pornire</translation> <translation id="3862693525629180217">Confirmă prin senzorul încorporat</translation> <translation id="3862788408946266506">Aplicația cu atributul „kiosk_only” din manifest trebuie să fie instalată în modul chioșc pentru sistemul de operare Chrome</translation> <translation id="3865414814144988605">Rezoluție</translation> @@ -2803,7 +2805,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Jurnalul dispozitivului</translation> <translation id="4130207949184424187">Această extensie a modificat ce pagină se afișează când cauți din caseta polivalentă.</translation> -<translation id="4130344535649650885">Salvezi parola în Contul Google?</translation> <translation id="4130750466177569591">Sunt de acord</translation> <translation id="413121957363593859">Componente</translation> <translation id="4131410914670010031">Alb-negru</translation> @@ -3202,6 +3203,7 @@ <translation id="4627442949885028695">Continuă de pe un alt dispozitiv</translation> <translation id="4628757576491864469">Dispozitive</translation> <translation id="4628762811416793313">Configurarea containerului Linux nu s-a finalizat. Încearcă din nou.</translation> +<translation id="4629521233550547305">Deschide profilul <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Extensia necesită „<ph name="IMPORT_NAME" />” cu versiunea minimă „<ph name="IMPORT_VERSION" />”, dar numai versiunea „<ph name="INSTALLED_VERSION" />” este instalată</translation> <translation id="4633757335284074492">Fă backup în Google Drive. Restabilește datele sau schimbă dispozitivul cu ușurință, în orice moment. Acest backup include datele aplicațiilor. Backupurile sunt încărcate pe serverele Google și sunt criptate folosind parola pentru Contul Google al copilului tău.</translation> <translation id="4634575639321169635">Configurează dispozitivul pentru serviciu sau pentru uz personal</translation> @@ -3930,7 +3932,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Nu s-a primit <ph name="ATTACHMENTS" /> de la <ph name="DEVICE_NAME" />}few{Nu s-au primit <ph name="ATTACHMENTS" /> de la <ph name="DEVICE_NAME" />}other{Nu s-au primit <ph name="ATTACHMENTS" /> de la <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Importate din Firefox</translation> <translation id="5502915260472117187">Un copil</translation> -<translation id="5503858713116291452">Asigură-te că telefonul este în apropiere, deblocat, cu Bluetooth și Wi-Fi activate. Urmează pașii de pe telefon pentru a finaliza configurarea.</translation> <translation id="5503982651688210506">Permite în continuare ca <ph name="HOST" /> să folosească și să miște camera și să folosească microfonul</translation> <translation id="5505264765875738116">Site-urile nu îți pot solicita să îți trimită notificări</translation> <translation id="5505307013568720083">Lipsă cerneală</translation> @@ -3991,6 +3992,7 @@ <translation id="5565735124758917034">Activ</translation> <translation id="5567989639534621706">Memoriile cache ale aplicației</translation> <translation id="5568069709869097550">Nu se poate conecta</translation> +<translation id="5571832155627049070">Personalizează-ți profilul</translation> <translation id="5572851009514199876">Pornește și conectează-te la Chrome, ca acesta să verifice dacă ai permisiunea să accesezi site-ul.</translation> <translation id="5575473780076478375">Extensie incognito: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">A apărut o problemă cu solicitarea de înregistrare demo.</translation> @@ -5460,6 +5462,7 @@ <translation id="7280649757394340890">Setări ale vocii pentru redarea vocală a textului</translation> <translation id="7280877790564589615">Permisiune solicitată</translation> <translation id="7282992757463864530">Bară de informații</translation> +<translation id="7283555985781738399">Modul pentru invitați</translation> <translation id="7284411326658527427">Fiecare persoană poate să-și personalizeze contul și să-și păstreze datele private.</translation> <translation id="7287143125007575591">Acces refuzat.</translation> <translation id="7287411021188441799">Restabilește fundalul prestabilit</translation> @@ -5839,6 +5842,7 @@ <translation id="7716781361494605745">Adresa URL a politicii privind autoritatea de certificare Netscape</translation> <translation id="7717014941119698257">Se descarcă: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Site-urile pot solicita permisiunea de a accesa locația (recomandat)</translation> +<translation id="771721654176725387">Astfel, vor fi șterse definitiv datele de navigare de pe acest dispozitiv. Pentru a recupera datele, activează sincronizarea ca</translation> <translation id="7717845620320228976">Caută actualizări</translation> <translation id="7719367874908701697">Zoom pe pagină</translation> <translation id="7719588063158526969">Numele dispozitivului este prea lung</translation> @@ -5875,6 +5879,7 @@ <translation id="7765158879357617694">Mută</translation> <translation id="7765507180157272835">Necesită Bluetooth și Wi-Fi</translation> <translation id="7766082757934713382">Reduce utilizarea datelor din rețea prin întreruperea actualizărilor automate ale aplicațiilor și sistemului</translation> +<translation id="7766807826975222231">Faceți un tur</translation> <translation id="7766838926148951335">Acceptă permisiunile</translation> <translation id="7768507955883790804">Site-urile aplică automat această setare când le accesezi</translation> <translation id="7768770796815395237">Modifică</translation> @@ -6119,6 +6124,7 @@ <translation id="8017176852978888182">Directoare comune în Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Comanda rapidă a fost editată</translation> +<translation id="8018298733481692628">Ștergi profilul?</translation> <translation id="8018313076035239964">Stabilește ce informații pot să folosească site-urile și ce conținut pot afișa</translation> <translation id="8023801379949507775">Actualizează extensiile acum</translation> <translation id="8026334261755873520">Șterge datele de navigare</translation> @@ -6289,7 +6295,6 @@ <translation id="8211551284753798479">PUK nevalid. Mai ai <ph name="RETRIES" /> încercări.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Descărcarea este în desfășurare}few{Descărcările sunt în desfășurare}other{Descărcările sunt în desfășurare}}</translation> <translation id="8213449224684199188">Modul foto a fost activat</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> dorește să îți identifice dispozitivul, astfel încât să poată reda fișiere video și audio protejate la cea mai înaltă calitate.</translation> <translation id="8214489666383623925">Deschide fișierul...</translation> <translation id="8214962590150211830">Exclude această persoană</translation> <translation id="8216351761227087153">Vizionați</translation> @@ -6768,7 +6773,6 @@ <translation id="8774379074441005279">Confirmă restabilirea</translation> <translation id="8774934320277480003">Margine sus</translation> <translation id="8775144690796719618">Adresă URL nevalidă</translation> -<translation id="8775163630211761057">Extinde cele mai bune funcții ale telefonului Android la <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Dispozitivul <ph name="DEVICE_TYPE" /> se va bloca automat peste # secundă. <ph name="DOMAIN" /> solicită să nu scoți cardul inteligent din dispozitiv.}few{Dispozitivul <ph name="DEVICE_TYPE" /> se va bloca automat peste # secunde. <ph name="DOMAIN" /> solicită să nu scoți cardul inteligent din dispozitiv.}other{Dispozitivul <ph name="DEVICE_TYPE" /> se va bloca automat peste # de secunde. @@ -6958,6 +6962,7 @@ <translation id="8973596347849323817">Poți personaliza acest dispozitiv conform dorințelor tale. Aceste funcții de accesibilitate pot fi modificate ulterior în Setări.</translation> <translation id="897414447285476047">Fișierul de destinație este incomplet din cauza unei probleme de conectivitate.</translation> <translation id="897525204902889653">Serviciu de carantină</translation> +<translation id="8975396729541388937">Dezabonează-te oricând dând clic pe linkul din e-mailurile pe care le primești.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />”}=1{„<ph name="TAB_TITLE" />” și încă o filă}few{„<ph name="TAB_TITLE" />” și încă # file}other{„<ph name="TAB_TITLE" />” și încă # de file}}</translation> <translation id="8977811652087512276">Parola nu este corectă sau fișierul este deteriorat</translation> <translation id="8978154919215542464">Activată – sincronizează tot</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index bbf513c..a473cfab 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -341,6 +341,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Нет раскрытых паролей}=1{1 раскрытый пароль}one{{NUM_COMPROMISED} раскрытый пароль}few{{NUM_COMPROMISED} раскрытых пароля}many{{NUM_COMPROMISED} раскрытых паролей}other{{NUM_COMPROMISED} раскрытого пароля}}</translation> <translation id="1380028686461971526">Автоподключение к сети</translation> <translation id="1380436189840894976">Вы действительно хотите выйти из режима инкогнито?</translation> +<translation id="1383597849754832576">Не удалось скачать файлы автоматических субтитров. Повторите попытку позже.</translation> <translation id="1383861834909034572">Открытие по завершении</translation> <translation id="1383876407941801731">Поиск</translation> <translation id="1386791642444521222">Активировать обычную SIM-карту</translation> @@ -878,7 +879,6 @@ <translation id="1954813140452229842">Не удалось подключить ресурс. Проверьте учетные данные и повторите попытку.</translation> <translation id="1956050014111002555">Файл содержит несколько сертификатов, ни один из которых не был импортирован:</translation> <translation id="1956390763342388273">Вы собираетесь загрузить все файлы из "<ph name="FOLDER_PATH" />". Не делайте этого, если не доверяете сайту.</translation> -<translation id="1960158217849594135">Сохранить имя пользователя в аккаунте Google?</translation> <translation id="196040970347962278">Сначала установите подключение к Интернету</translation> <translation id="1962233722219655970">На этой странице используется приложение Native Client, не поддерживаемое вашим компьютером.</translation> <translation id="1963227389609234879">Удалить все</translation> @@ -904,6 +904,7 @@ <translation id="1984417487208496350">Защита отключена (не рекомендуется)</translation> <translation id="1987317783729300807">Аккаунты</translation> <translation id="1989112275319619282">Выбрать</translation> +<translation id="1990046457226896323">Файлы автоматических субтитров скачаны.</translation> <translation id="1990512225220753005">Не показывать ярлыки на этой странице</translation> <translation id="1992397118740194946">Не задано</translation> <translation id="1992924914582925289">Удалить с устройства</translation> @@ -1049,7 +1050,6 @@ <translation id="2157474325782140681">Чтобы получить доступ к дополнительным возможностям, используйте док-станцию Dell, предназначенную для этого устройства Chromebook.</translation> <translation id="215753907730220065">Выход из полноэкранного режима</translation> <translation id="2157875535253991059">Эта страница отображается в полноэкранном режиме.</translation> -<translation id="2160589599612868242">Получайте уведомления с телефона на устройстве <ph name="DEVICE_TYPE" />.</translation> <translation id="216169395504480358">Добавить подключение по Wi-Fi...</translation> <translation id="2162155940152307086">Синхронизация начнется, когда вы покинете страницу с настройками синхронизации.</translation> <translation id="2162838847352058695">Запретить сайтам автоматически скачивать несколько файлов</translation> @@ -1267,6 +1267,7 @@ <translation id="2399699884460174994">Уведомления включены</translation> <translation id="2399939490305346086">Учетные данные электронного ключа</translation> <translation id="2400664245143453337">Требуется немедленно обновить ОС</translation> +<translation id="2406153734066939945">Удалить профиль и все его данные?</translation> <translation id="2408018932941436077">Сохранение карты</translation> <translation id="2408955596600435184">Введите PIN-код</translation> <translation id="241082044617551207">Неизвестный плагин</translation> @@ -1384,6 +1385,7 @@ <translation id="2526590354069164005">Рабочий стол</translation> <translation id="2526619973349913024">Проверить обновления</translation> <translation id="2527167509808613699">при любом типе подключения</translation> +<translation id="2530166226437958497">Устранение неполадок</translation> <translation id="2532589005999780174">Режим высокой контрастности</translation> <translation id="253434972992662860">&Пауза</translation> <translation id="2534460670861217804">Безопасный HTTP-прокси</translation> @@ -1701,7 +1703,6 @@ <translation id="2885729872133513017">Не удалось расшифровать ответ сервера.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Открыть ссылку с помощью...</translation> -<translation id="2889481634493693121">Включите уведомления на телефоне</translation> <translation id="2889925978073739256">Всегда блокировать плагины вне тестовой среды</translation> <translation id="2893168226686371498">Браузер по умолчанию</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 SMS}one{# SMS}few{# SMS}many{# SMS}other{# SMS}}</translation> @@ -2561,6 +2562,7 @@ <translation id="3857807444929313943">Коснитесь несколько раз</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: синхронизация приостановлена</translation> <translation id="3861638017150647085">Имя пользователя "<ph name="USERNAME" />" недоступно.</translation> +<translation id="3861977424605124250">Показывать при запуске</translation> <translation id="3862693525629180217">Подтвердить с помощью встроенного датчика</translation> <translation id="3862788408946266506">Приложения, у которых в манифесте есть атрибут kiosk_only, можно устанавливать только в режиме киоска</translation> <translation id="3865414814144988605">Разрешение</translation> @@ -2803,7 +2805,6 @@ <translation id="412730574613779332">Супергерой</translation> <translation id="4130199216115862831">Журнал устройства</translation> <translation id="4130207949184424187">Расширение изменило поисковую систему, которая используется по умолчанию при вводе запроса в омнибокс.</translation> -<translation id="4130344535649650885">Сохранить пароль в аккаунте Google?</translation> <translation id="4130750466177569591">Принимаю</translation> <translation id="413121957363593859">Компоненты</translation> <translation id="4131410914670010031">Черно-белая печать</translation> @@ -3202,6 +3203,7 @@ <translation id="4627442949885028695">Продолжить на другом устройстве</translation> <translation id="4628757576491864469">Устройства</translation> <translation id="4628762811416793313">Не удалось завершить настройку контейнера Linux. Повторите попытку.</translation> +<translation id="4629521233550547305">Открыть профиль <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Для расширения требуется <ph name="IMPORT_NAME" /> версии не ранее <ph name="IMPORT_VERSION" />. Сейчас установлена версия <ph name="INSTALLED_VERSION" />.</translation> <translation id="4633757335284074492">Сохранение резервных копий на Google Диске. Позволяет в любой момент восстанавливать данные (в том числе из приложений) или переносить их с одного устройства на другое. Резервные копии загружаются в Google и шифруются с помощью пароля аккаунта Google вашего ребенка.</translation> <translation id="4634575639321169635">Настройте устройство для использования в служебных или личных целях.</translation> @@ -3930,7 +3932,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Не удалось получить <ph name="ATTACHMENTS" /> с устройства "<ph name="DEVICE_NAME" />".}one{Не удалось получить <ph name="ATTACHMENTS" /> с устройства "<ph name="DEVICE_NAME" />".}few{Не удалось получить <ph name="ATTACHMENTS" /> с устройства "<ph name="DEVICE_NAME" />".}many{Не удалось получить <ph name="ATTACHMENTS" /> с устройства "<ph name="DEVICE_NAME" />".}other{Не удалось получить <ph name="ATTACHMENTS" /> с устройства "<ph name="DEVICE_NAME" />".}}</translation> <translation id="5502500733115278303">Импортированные из Firefox</translation> <translation id="5502915260472117187">Ребенок</translation> -<translation id="5503858713116291452">Убедитесь, что телефон находится рядом, он разблокирован и на нем включены Bluetooth и Wi-Fi. Чтобы завершить настройку, следуйте инструкциям на телефоне.</translation> <translation id="5503982651688210506">Разрешить сайту <ph name="HOST" /> и дальше использовать и перемещать вашу камеру, а также использовать микрофон</translation> <translation id="5505264765875738116">Сайты не могут запрашивать разрешения на отправку уведомлений</translation> <translation id="5505307013568720083">Закончились чернила</translation> @@ -3991,6 +3992,7 @@ <translation id="5565735124758917034">Активен</translation> <translation id="5567989639534621706">Кеш приложений</translation> <translation id="5568069709869097550">Не удается войти</translation> +<translation id="5571832155627049070">Настройте профиль</translation> <translation id="5572851009514199876">Выполните вход, чтобы Chrome определил, разрешен ли вам доступ к этому сайту.</translation> <translation id="5575473780076478375">Расширение в режиме инкогнито: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Возникла проблема с запросом на регистрацию демонстрационного режима.</translation> @@ -5460,6 +5462,7 @@ <translation id="7280649757394340890">Настройки синтеза речи</translation> <translation id="7280877790564589615">Требуется разрешение</translation> <translation id="7282992757463864530">Информационная панель</translation> +<translation id="7283555985781738399">Гостевой режим</translation> <translation id="7284411326658527427">У каждого пользователя будет возможность персонализировать свой аккаунт и обеспечивать конфиденциальность данных.</translation> <translation id="7287143125007575591">Доступ запрещен.</translation> <translation id="7287411021188441799">Восстановить фон по умолчанию</translation> @@ -5839,6 +5842,7 @@ <translation id="7716781361494605745">URL политики ЦС Netscape</translation> <translation id="7717014941119698257">Скачивается: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Разрешить сайтам отправлять запрос на доступ к информации о местоположении</translation> +<translation id="771721654176725387">Все данные о работе в браузере будут удалены с устройства. Чтобы восстановить данные, включите синхронизацию с аккаунтом</translation> <translation id="7717845620320228976">Проверить наличие обновлений</translation> <translation id="7719367874908701697">Масштабирование страницы</translation> <translation id="7719588063158526969">Слишком длинное имя устройства.</translation> @@ -5875,6 +5879,7 @@ <translation id="7765158879357617694">Переместить</translation> <translation id="7765507180157272835">Требуется подключение к Bluetooth и сети Wi-Fi</translation> <translation id="7766082757934713382">Эта функция приостанавливает автоматическое обновление системы и приложений, что позволяет экономить сетевой трафик.</translation> +<translation id="7766807826975222231">Узнать больше</translation> <translation id="7766838926148951335">Разрешить</translation> <translation id="7768507955883790804">Когда вы посещаете сайты, эти настройки используются автоматически.</translation> <translation id="7768770796815395237">Изменить</translation> @@ -6119,6 +6124,7 @@ <translation id="8017176852978888182">Общие каталоги Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Ярлык изменен</translation> +<translation id="8018298733481692628">Удалить профиль?</translation> <translation id="8018313076035239964">Выбрать, какие данные отправлять сайтам и какой контент показывать на веб-страницах</translation> <translation id="8023801379949507775">Обновить расширения</translation> <translation id="8026334261755873520">Очистить историю</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">Недействительный PUK-код. Осталось попыток: <ph name="RETRIES" />.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Выполняется скачивание}one{Выполняется скачивание}few{Выполняется скачивание}many{Выполняется скачивание}other{Выполняется скачивание}}</translation> <translation id="8213449224684199188">Включён режим фотосъёмки</translation> -<translation id="8213866992824776555">Для воспроизведения защищенного видео и аудиоконтента самого высокого качества домен <ph name="DOMAIN" /> запрашивает уникальный код устройства.</translation> <translation id="8214489666383623925">Открыть файл...</translation> <translation id="8214962590150211830">Удалить пользователя</translation> <translation id="8216351761227087153">Просмотреть</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Подтвердите восстановление</translation> <translation id="8774934320277480003">Верхнее поле</translation> <translation id="8775144690796719618">Недействительный URL</translation> -<translation id="8775163630211761057">Используйте возможности телефона Android на устройстве <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Ваше устройство <ph name="DEVICE_TYPE" /> будет автоматически заблокировано через # секунду. По правилам домена <ph name="DOMAIN" /> смарт-карта должна быть вставлена.}one{Ваше устройство <ph name="DEVICE_TYPE" /> будет автоматически заблокировано через # секунду. По правилам домена <ph name="DOMAIN" /> смарт-карта должна быть вставлена.}few{Ваше устройство <ph name="DEVICE_TYPE" /> будет автоматически заблокировано через # секунды. @@ -6959,6 +6963,7 @@ <translation id="8973596347849323817">Используйте специальные возможности для удобной работы с устройством. Эти параметры можно изменить в настройках.</translation> <translation id="897414447285476047">Файл был скачан не полностью из-за неполадок с подключением.</translation> <translation id="897525204902889653">Карантин</translation> +<translation id="8975396729541388937">Вы можете в любое время отказаться от рассылки – просто нажмите на ссылку в письме.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" и ещё 1 вкладка}one{"<ph name="TAB_TITLE" />" и ещё # вкладка}few{"<ph name="TAB_TITLE" />" и ещё # вкладки}many{"<ph name="TAB_TITLE" />" и ещё # вкладок}other{"<ph name="TAB_TITLE" />" и ещё # вкладки}}</translation> <translation id="8977811652087512276">Пароль указан неверно или поврежден файл</translation> <translation id="8978154919215542464">Включено (синхронизировать все)</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index 4e17ab2..e261edd 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{අවදානමට පත් වූ මුරපද නැත}=1{අවදානමට පත් වූ මුරපද 1}one{අවදානමට පත් වූ මුරපද {NUM_COMPROMISED}}other{අවදානමට පත් වූ මුරපද {NUM_COMPROMISED}}}</translation> <translation id="1380028686461971526">ජාලයට ස්වයංක්රීයව සම්බන්ධ කරන්න</translation> <translation id="1380436189840894976">කෙසේ වුවත් අප්රසිද්ධ ආකාරයෙන් ඉවත් වන්න ද?</translation> +<translation id="1383597849754832576">කථන ගොනු බාගැනීමට නොහැකිය. පසුව නැවත උත්සාහ කරන්න.</translation> <translation id="1383861834909034572">සම්පූර්ණ වූ විට විවෘත වේ</translation> <translation id="1383876407941801731">සොයන්න</translation> <translation id="1386791642444521222">සක්රිය භෞතික SIM</translation> @@ -874,7 +875,6 @@ <translation id="1954813140452229842">කොටස නැංවීමේ දෝෂයකි. ඔබේ අක්තපත්ර පරීක්ෂා කර නැවත උත්සාහ කරන්න.</translation> <translation id="1956050014111002555">ගොනුවේ බොහෝ සහතික අඩංගු වේ, එයින් කිසිවක් ආනයනය නොකරන ලදි:</translation> <translation id="1956390763342388273">මෙය "<ph name="FOLDER_PATH" />" වෙතින් සියලුම ගොනු උඩුගත කරනු ඇත. ඔබ අඩවිය විශ්වාස කරන්නේ නම් පමණක් මෙය කරන්න.</translation> -<translation id="1960158217849594135">ඔබගේ Google ගිණුමට පරිශීලක නාමය සුරකින්නද?</translation> <translation id="196040970347962278">පළමුව අන්තර්ජාල සබැඳුමක් ස්ථාපනය කරන්න</translation> <translation id="1962233722219655970">මෙම පිටුව විසින් ඔබේ පරිගණකය මත ක්රියා නොකරන ස්වදේශ සේවාලාභී යෙදුමක් භාවිත කරයි.</translation> <translation id="1963227389609234879">සියල්ල ඉවත් කරන්න</translation> @@ -900,6 +900,7 @@ <translation id="1984417487208496350">ආරක්ෂාවක් නැත (නිර්දේශ නොකෙරේ)</translation> <translation id="1987317783729300807">ගිණුම්</translation> <translation id="1989112275319619282">බ්රවුස් කරන්න</translation> +<translation id="1990046457226896323">කථන ගොනු බාගන්නා ලදී</translation> <translation id="1990512225220753005">මෙම පිටුව මත කෙටිමං නොපෙන්වන්න</translation> <translation id="1992397118740194946">සකසා නොමැත</translation> <translation id="1992924914582925289">උපාංගයෙන් ඉවත් කරන්න</translation> @@ -1045,7 +1046,6 @@ <translation id="2157474325782140681">අමතර විශේෂාංග ලබා ගැනීමට, මෙම Chromebook සමඟ ක්රියා කිරීමට සැලසුම් කර ඇති Dell ඩොක් කිරීමේ ස්ථානයක් භාවිත කරන්න.</translation> <translation id="215753907730220065">සම්පූර්ණ තිරයෙන් ඉවත් වන්න</translation> <translation id="2157875535253991059">මෙම පිටුව දැන් තිරය පුරා ඇත.</translation> -<translation id="2160589599612868242">ඔබගේ <ph name="DEVICE_TYPE" /> හි ඔබගේ දුරකථනය වෙතින් දැනුම්දීම් ලබා ගන්න.</translation> <translation id="216169395504480358">Wi-Fi එක් කරන්න...</translation> <translation id="2162155940152307086">ඔබ සමමුහුර්ත සැකසීම් හැර ගිය පසු සමමුහුර්තය ඇරඹෙනු ඇත</translation> <translation id="2162838847352058695">ගොනු කිහිපයක් ස්වයංක්රියව බාගැනීමෙන් අඩවි අවහිර කරන්න</translation> @@ -1263,6 +1263,7 @@ <translation id="2399699884460174994">දැනුම්දීම් ක්රියාත්මක කරන ලදී</translation> <translation id="2399939490305346086">ආරක්ෂක යතුරු පුරන දත්ත</translation> <translation id="2400664245143453337">වහා යාවත්කාලීන කිරීම අවශ්යයි</translation> +<translation id="2406153734066939945">මෙම පැතිකඩ සහ එහි දත්ත මකන්නද?</translation> <translation id="2408018932941436077">කාඩ්පත සුරකිනු ලැබේ</translation> <translation id="2408955596600435184">ඔබගේ PIN එක ඇතුළු කරන්න</translation> <translation id="241082044617551207">නොදන්නා ප්ලගිනය</translation> @@ -1381,6 +1382,7 @@ <translation id="2526590354069164005">ඩෙස්ක්ටොප්</translation> <translation id="2526619973349913024">යාවත්කාලීනය සඳහා පරික්ෂා කරන්න</translation> <translation id="2527167509808613699">කිසියම් ආකාරයක සම්බන්ධය</translation> +<translation id="2530166226437958497">දෝෂාවේක්ෂය</translation> <translation id="2532589005999780174">අධි අසමානතා ප්රකාරය</translation> <translation id="253434972992662860">විරාමය (&P)</translation> <translation id="2534460670861217804">ආරක්ෂිත HTTP ප්රොක්සිය</translation> @@ -1698,7 +1700,6 @@ <translation id="2885729872133513017">සේවාදායක ප්රතිචාරය විකේතන කරන විට ගැටලුවක් සිදු විය.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">සමඟ සබැඳිය විවෘත කරන්න...</translation> -<translation id="2889481634493693121">ඔබගේ දුරකථනයේ දැනුම්දීම් ක්රියාත්මක කරන්න</translation> <translation id="2889925978073739256">unsandboxed ප්ලගින අවහිර කිරීම දිගටම කරගෙන යන්න</translation> <translation id="2893168226686371498">පෙරනිමි බ්රව්සරය</translation> <translation id="2893917546370257247">{COUNT,plural, =1{පෙළ 1}one{පෙළ #}other{පෙළ #}}</translation> @@ -2559,6 +2560,7 @@ <translation id="3857807444929313943">ඔසවා, පසුව නැවත ස්පර්ශ කරන්න</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: සමමුහුර්ත කිරීම විරාම කරන ලදී</translation> <translation id="3861638017150647085">පරිශීලක නාමය "<ph name="USERNAME" />" නොලැබේ</translation> +<translation id="3861977424605124250">ඇරඹුමේදී පෙන්වන්න</translation> <translation id="3862693525629180217">ආවේණික සංවේදකය හරහා තහවුරු කරන්න</translation> <translation id="3862788408946266506">'kiosk_only' මැනිෆෙස්ට් උපලක්ෂණය සහිත යෙදුම Chrome OS කියෝස්ක් ප්රකාරයේ ස්ථාපනය කළ යුතුය</translation> <translation id="3865414814144988605">විභේදනය</translation> @@ -2801,7 +2803,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">උපාංග වාර්ථාව</translation> <translation id="4130207949184424187">දිගුව ඔබ Omnibox වෙතින් සොයන විට කුමන පිටුව පෙන්වන්නේද යන්න වෙනස් කර තිබේ.</translation> -<translation id="4130344535649650885">ඔබගේ Google ගිණුමට මුරපදය සුරකින්නද?</translation> <translation id="4130750466177569591">මම එකඟ වෙමි</translation> <translation id="413121957363593859">අංග</translation> <translation id="4131410914670010031">කළු සහ සුදු</translation> @@ -3200,6 +3201,7 @@ <translation id="4627442949885028695">වෙනත් උපාංගයකින් කරගෙන යන්න</translation> <translation id="4628757576491864469">උපාංග</translation> <translation id="4628762811416793313">Linux බහාලුම සැකසීම සම්පූර්ණ නොවිය. නැවත උත්සාහ කරන්න.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> පැතිකඩ විවෘත කරන්න</translation> <translation id="4633003931260532286">දිගුවට "<ph name="IMPORT_NAME" />" හි අවම "<ph name="IMPORT_VERSION" />" අනුවාදයක් අවශ්යයි, නමුත් ස්ථාපිතව ඇත්තේ "<ph name="INSTALLED_VERSION" />" පමණි</translation> <translation id="4633757335284074492">Google Drive වෙත උපස්ථ කරන්න. ඕනෑම වේලාවක දත්ත පහසුවෙන් නැවත සකසන්න හෝ උපාංග අතර මාරු වන්න. මෙම උපස්ථයට යෙදුම් දත්ත ඇතුළුයි. උපස්ථ Google වෙත උඩුගත කෙරෙන අතර ඔබේ දරුවාගේ Google ගිණුමේ මුරපදය භාවිත කර සංකේතන කෙරේ.</translation> <translation id="4634575639321169635">කාර්යාල හෝ පුද්ගලික භාවිතය සඳහා මෙම උපාංගය පිහිටුවන්න</translation> @@ -3928,7 +3930,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="ATTACHMENTS" /> <ph name="DEVICE_NAME" /> වෙතින් ලබා ගැනීමට අසමත් විය}one{<ph name="ATTACHMENTS" /> <ph name="DEVICE_NAME" /> වෙතින් ලබා ගැනීමට අසමත් විය}other{<ph name="ATTACHMENTS" /> <ph name="DEVICE_NAME" /> වෙතින් ලබා ගැනීමට අසමත් විය}}</translation> <translation id="5502500733115278303">Firefox වෙතින් ආයාත කෙරිණි</translation> <translation id="5502915260472117187">ළමයකු</translation> -<translation id="5503858713116291452">ඔබගේ දුරකථනය අවට, අගුලු හැර, බ්ලූටූත් සහ Wi-Fi ක්රියාත්මකව තිබෙන බව සහතික කර ගන්න. පිහිටුවීම සම්පූර්ණ කිරීමට ඔබගේ දුරකථනයේ පියවර අනුගමනය කරන්න.</translation> <translation id="5503982651688210506"><ph name="HOST" /> හට ඔබේ කැමරාව භාවිත කිරීමටත් එහා මෙහා කිරීමටත්, ඔබේ මයික්රොෆෝනය භාවිත කිරීමටත් දිගටම ඉඩ දෙන්න</translation> <translation id="5505264765875738116">වෙබ් අඩවිවලට දැනුම්දීම් යැවීමට ඉල්ලිය නොහැක</translation> <translation id="5505307013568720083">තීන්ත නැත</translation> @@ -3989,6 +3990,7 @@ <translation id="5565735124758917034">සක්රියයි</translation> <translation id="5567989639534621706">යෙදුම් කැෂේ</translation> <translation id="5568069709869097550">පුරනය විය නොහැක</translation> +<translation id="5571832155627049070">ඔබේ පැතිකඩ අභිරුචිකරණය කරන්න</translation> <translation id="5572851009514199876">ඔබට මෙම අඩවියට පිවිසීමට ඉඩ දෙන්නේද යන්න පරීක්ෂා කිරීමට Chrome හට හැකි වන ලෙස කරුණාකර Chrome ආරම්භ කර පුරන්න.</translation> <translation id="5575473780076478375">Incognito දිගුව: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">ආදර්ශන ලියාපදිංචි ඉල්ලීම සමඟ ගැටලුවක් සිදු විය.</translation> @@ -5456,6 +5458,7 @@ <translation id="7280649757394340890">පෙළ-කථන හඬ සැකසුම්</translation> <translation id="7280877790564589615">අවසරය ඉල්ලන ලදී</translation> <translation id="7282992757463864530">තතුතීරුව</translation> +<translation id="7283555985781738399">ආගන්තුක ප්රකාරය</translation> <translation id="7284411326658527427">සෑම පුද්ගලයෙකුටම ඔවුන්ගේ ගිණුම පෞද්ගලීකරණය කර දත්ත පුද්ගලිකව තබා ගත හැකිය.</translation> <translation id="7287143125007575591">ප්රවේශය ප්රතික්ෂේප කරන ලදී.</translation> <translation id="7287411021188441799">පෙරනිමි පසුබිම ප්රතිසාධනය</translation> @@ -5835,6 +5838,7 @@ <translation id="7716781361494605745">Netscape සහතික බලධාරී ප්රතිපත්ති ලිපිනය</translation> <translation id="7717014941119698257">බාගනිමින්: <ph name="STATUS" /></translation> <translation id="7717134585801378441">අඩවිවලට ඔබේ ස්ථානය ඉල්ලිය හැකිය (නිර්දේශිතයි)</translation> +<translation id="771721654176725387">මෙය මෙම උපාංගය වෙතින් ඔබගේ බ්රවුස් කිරීමේ දත්ත ස්ථිරව මකනු ඇත. දත්ත ප්රතිසාධනය කිරීමට, මෙලෙස සමමුහුර්ත කරන්න ක්රියාත්මක කරන්න</translation> <translation id="7717845620320228976">යාවත්කාලීන සඳහා පරීක්ෂා කරන්න</translation> <translation id="7719367874908701697">පිටු විශාලනය:</translation> <translation id="7719588063158526969">උපාංග නම දිග වැඩිය</translation> @@ -5871,6 +5875,7 @@ <translation id="7765158879357617694">චලනය කරන්න</translation> <translation id="7765507180157272835">බ්ලූටූත් සහ Wi-Fi අවශ්යයි</translation> <translation id="7766082757934713382">ස්වයංක්රීය යෙදුම් සහ පද්ධති යාවත්කාලීන කිරීම් විරාම කිරීම ජාල දත්ත භාවිතය අඩු කිරීමට උපකාරී වේ</translation> +<translation id="7766807826975222231">සංචාරයක් කරන්න</translation> <translation id="7766838926148951335">අවසර පිළිගන්න</translation> <translation id="7768507955883790804">ඔබ මෙම අඩවිවලට පිවිසෙන විට ඒවා ස්වයංක්රීයව මෙම සැකසීම අනුගමනය කරයි</translation> <translation id="7768770796815395237">වෙනස</translation> @@ -6113,6 +6118,7 @@ <translation id="8016266267177410919">තාවකාලික ගබඩාව</translation> <translation id="8017176852978888182">ලිනක්ස් බෙදාගත් නාමාවලි</translation> <translation id="8017679124341497925">කෙටිමඟ සංස්කරණය කෙරිණි</translation> +<translation id="8018298733481692628">මෙම පැතිකඩ මකන්නද?</translation> <translation id="8018313076035239964">වෙබ් අඩවි භාවිත කළ හැකි තොරතුරු සහ ඔවුන් ඔබට පෙන්විය හැකි අන්තර්ගතය පාලනය කරන්න</translation> <translation id="8023801379949507775">දිගු දැන්ම යාවත්කාලීන කරන්න</translation> <translation id="8026334261755873520">පිරික්සුම් දත්ත හිස් කරන්න</translation> @@ -6283,7 +6289,6 @@ <translation id="8211551284753798479">අවලංගු PUK එකකි. ඔබට උත්සාහයන් <ph name="RETRIES" />ක් ඉතිරිව ඇත.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{බාගැනීම ක්රියාවේ පවතියි}one{බාගැනීම් ක්රියාවේ පවතියි}other{බාගැනීම් ක්රියාවේ පවතියි}}</translation> <translation id="8213449224684199188">ඡායාරූප ප්රකාරය ඇතුළු කෙරිණි</translation> -<translation id="8213866992824776555">ඉහළම ගුණත්වයේ ආරක්ෂිත වීඩියෝ සහ ශ්රව්ය වාදනය කළ හැකි නිසා <ph name="DOMAIN" /> හට ඔබගේ උපාංගය හඳුනා ගැනීමට අවශ්ය වේ.</translation> <translation id="8214489666383623925">ගොනුව විවෘත කරන්න...</translation> <translation id="8214962590150211830">මෙම පුද්ගලයා ඉවත් කරන්න</translation> <translation id="8216351761227087153">නරඹන්න</translation> @@ -6762,7 +6767,6 @@ <translation id="8774379074441005279">ප්රතිසාධනය තහවුරු කරන්න</translation> <translation id="8774934320277480003">ඉහල මායිම</translation> <translation id="8775144690796719618">අවලංගු URL</translation> -<translation id="8775163630211761057">ඔබගේ Android දුරකථනයේ උපරිමය <ph name="DEVICE_TYPE" /> වෙත පුළුල් කරන්න</translation> <translation id="8775653927968399786">{0,plural, =1{ඔබගේ <ph name="DEVICE_TYPE" /> තත්පර #කින් ස්වයංක්රියව අගුලු දමනු ඇත. <ph name="DOMAIN" /> හට ඔබ ඔබගේ ස්මාර්ට් කාඩ්පත ඇතුළු කර තබා ගැනීමට අවශ්යයි.}one{ඔබගේ <ph name="DEVICE_TYPE" /> තත්පර #කින් ස්වයංක්රියව අගුලු දමනු ඇත. <ph name="DOMAIN" /> හට ඔබ ඔබගේ ස්මාර්ට් කාඩ්පත ඇතුළු කර තබා ගැනීමට අවශ්යයි.}other{ඔබගේ <ph name="DEVICE_TYPE" /> තත්පර #කින් ස්වයංක්රියව අගුලු දමනු ඇත. @@ -6952,6 +6956,7 @@ <translation id="8973596347849323817">ඔබට ඔබේ අවශ්යතාවන්ට ගැළපෙන පරිදි මෙම උපාංගය අභිරුචිකරණය කළ හැකිය. මෙම ප්රවේශ්යතා විශේෂාංග සැකසීම්වල පසුව වෙනස් කළ හැකිය.</translation> <translation id="897414447285476047">ගමනාන්ත ගොනුව සබැඳුමේ ගැටලුවක් හේතුවෙන් අසම්පූර්ණයි.</translation> <translation id="897525204902889653">නිරෝධායන සේවය</translation> +<translation id="8975396729541388937">ඔබට ලැබෙන ඉ-තැපැල්වල ඇති සබැඳිය ක්ලික් කිරීමෙන් ඕනෑම වේලාවක දායකත්වයෙන් ඉවත් වන්න.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" සහ වෙන 1 පටිත්තක්}one{"<ph name="TAB_TITLE" />" සහ වෙනත් පටිති # ක්}other{"<ph name="TAB_TITLE" />" සහ වෙනත් පටිති # ක්}}</translation> <translation id="8977811652087512276">වැරදි මුරපදයක් හෝ දූෂිත ගොනුවකි</translation> <translation id="8978154919215542464">ක්රියාත්මකයි - සියලු දේ සමමුහුර්ත කරන්න</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index f8adee86..bfcac30 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -340,6 +340,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Žiadne odhalené heslá}=1{1 odhalené heslo}few{{NUM_COMPROMISED} odhalené heslá}many{{NUM_COMPROMISED} compromised passwords}other{{NUM_COMPROMISED} odhalených hesiel}}</translation> <translation id="1380028686461971526">Automaticky pripojiť k sieti</translation> <translation id="1380436189840894976">Aj tak ukončiť režim inkognito?</translation> +<translation id="1383597849754832576">Súbory s balíkmi reči sa nedajú stiahnuť. Skúste to neskôr.</translation> <translation id="1383861834909034572">Otvoriť po prebratí</translation> <translation id="1383876407941801731">Vyhľadávanie</translation> <translation id="1386791642444521222">Aktivovať fyzickú SIM kartu</translation> @@ -878,7 +879,6 @@ <translation id="1954813140452229842">Pri pripájaní zdieľaného úložiska sa vyskytla chyba. Skontrolujte poverenia a skúste to znova.</translation> <translation id="1956050014111002555">Súbor obsahoval viacero certifikátov a žiadny z nich nebol importovaný:</translation> <translation id="1956390763342388273">Touto akciou nahráte všetky súbory z priečinka <ph name="FOLDER_PATH" />. Vykonajte to iba v prípade, že webu dôverujete.</translation> -<translation id="1960158217849594135">Chcete si uložiť používateľské meno do účtu Google?</translation> <translation id="196040970347962278">Najprv nadviažte internetové pripojenie</translation> <translation id="1962233722219655970">Táto stránka používa aplikáciu Native Client, ktorá na vašom počítači nefunguje.</translation> <translation id="1963227389609234879">Odstrániť všetko</translation> @@ -904,6 +904,7 @@ <translation id="1984417487208496350">Bez ochrany (neodporúča sa)</translation> <translation id="1987317783729300807">Účty</translation> <translation id="1989112275319619282">Prehliadať</translation> +<translation id="1990046457226896323">Súbory s balíkmi reči boli stiahnuté</translation> <translation id="1990512225220753005">Nezobrazovať skratky na tejto stránke</translation> <translation id="1992397118740194946">Nie je nastavené</translation> <translation id="1992924914582925289">Odstrániť zo zariadenia</translation> @@ -1049,7 +1050,6 @@ <translation id="2157474325782140681">Ak chcete získať ďalšie funkcie, použite dokovaciu stanicu od spoločnosti Dell, ktorá je navrhnutá pre tento Chromebook.</translation> <translation id="215753907730220065">Ukončiť zobrazenie na celú obrazovku</translation> <translation id="2157875535253991059">Táto stránka je teraz zobrazená na celú obrazovku.</translation> -<translation id="2160589599612868242">Dostávajte upozornenia zo svojho telefónu v zariadení <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Pridať Wi‑Fi…</translation> <translation id="2162155940152307086">Synchronizácia sa spustí, keď opustíte nastavenia synchronizácie</translation> <translation id="2162838847352058695">Blokovať weby, aby nemohli automaticky sťahovať viacero súborov</translation> @@ -1267,6 +1267,7 @@ <translation id="2399699884460174994">Upozornenia sú zapnuté</translation> <translation id="2399939490305346086">Prihlasovacie údaje bezpečnostného kľúča</translation> <translation id="2400664245143453337">Vyžaduje sa okamžitá aktualizácia</translation> +<translation id="2406153734066939945">Chcete odstrániť tento profil a jeho údaje?</translation> <translation id="2408018932941436077">Karta sa ukladá</translation> <translation id="2408955596600435184">Zadajte kód PIN</translation> <translation id="241082044617551207">Neznámy doplnok</translation> @@ -1384,6 +1385,7 @@ <translation id="2526590354069164005">Pracovná plocha</translation> <translation id="2526619973349913024">Skontrolovať aktualizáciu</translation> <translation id="2527167509808613699">Ľubovoľný typ pripojenia</translation> +<translation id="2530166226437958497">Riešenie problémov</translation> <translation id="2532589005999780174">Režim s vysokým kontrastom</translation> <translation id="253434972992662860">&Pozastaviť</translation> <translation id="2534460670861217804">Server proxy so zabezpečeným protokolom HTTP</translation> @@ -1701,7 +1703,6 @@ <translation id="2885729872133513017">Pri dešifrovaní odpovede servera sa vyskytol problém.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Otvoriť odkaz pomocou...</translation> -<translation id="2889481634493693121">Zapnutie upozornení v telefóne</translation> <translation id="2889925978073739256">Pokračovať v blokovaní doplnkov, ktoré nie sú v karanténe</translation> <translation id="2893168226686371498">Predvolený prehliadač</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 textová správa}few{# textové správy}many{# texts}other{# textových správ}}</translation> @@ -2561,6 +2562,7 @@ <translation id="3857807444929313943">Zdvihnite a opäť priložte</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: synchronizácia je pozastavená</translation> <translation id="3861638017150647085">Používateľské meno <ph name="USERNAME" /> nie je k dispozícii</translation> +<translation id="3861977424605124250">Zobrazovať pri spustení</translation> <translation id="3862693525629180217">Overiť prostredníctvom vstavaného senzora</translation> <translation id="3862788408946266506">Aplikácia s atribútom manifestu „kiosk_only“ musí byť nainštalovaná v režime verejného terminálu systému Chrome OS</translation> <translation id="3865414814144988605">Rozlíšenie</translation> @@ -2803,7 +2805,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Denník zariadenia</translation> <translation id="4130207949184424187">Toto rozšírenie zmenilo stránku, ktorá sa zobrazí pri vyhľadávaní pomocou všeobecného poľa.</translation> -<translation id="4130344535649650885">Chcete si uložiť heslo do účtu Google?</translation> <translation id="4130750466177569591">Súhlasím</translation> <translation id="413121957363593859">Komponenty</translation> <translation id="4131410914670010031">Čiernobielo</translation> @@ -3202,6 +3203,7 @@ <translation id="4627442949885028695">Pokračovať na inom zariadení</translation> <translation id="4628757576491864469">Zariadenia</translation> <translation id="4628762811416793313">Nastavenie kontajnera Linux sa nedokončilo. Skúste to znova.</translation> +<translation id="4629521233550547305">Otvoriť profil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Rozšírenie vyžaduje <ph name="IMPORT_NAME" /> minimálne vo verzii <ph name="IMPORT_VERSION" />, ale nainštalovaná je iba verzia <ph name="INSTALLED_VERSION" /></translation> <translation id="4633757335284074492">Zálohovanie na Disk Google. Jednoducho kedykoľvek obnovte údaje alebo prejdite na iné zariadenie. Táto záloha zahrnuje dáta aplikácií. Zálohy sa nahrajú do Googlu a zašifrujú pomocou hesla účtu Google vášho dieťaťa.</translation> <translation id="4634575639321169635">Nastavte toto zariadenie na pracovné alebo osobné použitie</translation> @@ -3930,7 +3932,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Nepodarilo sa prijať prílohy (<ph name="ATTACHMENTS" />) zo zariadenia <ph name="DEVICE_NAME" />}few{Nepodarilo sa prijať prílohy (<ph name="ATTACHMENTS" />) zo zariadenia <ph name="DEVICE_NAME" />}many{Nepodarilo sa prijať prílohy (<ph name="ATTACHMENTS" />) zo zariadenia <ph name="DEVICE_NAME" />}other{Nepodarilo sa prijať prílohy (<ph name="ATTACHMENTS" />) zo zariadenia <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Importované z Firefoxu</translation> <translation id="5502915260472117187">Dieťa</translation> -<translation id="5503858713116291452">Telefón majte nablízku, odomknutý a so zapnutým rozhraním Bluetooth a pripojením Wi‑Fi. Dokončite nastavenie podľa krokov v telefóne.</translation> <translation id="5503982651688210506">Pokračovať v povolení hostiteľovi <ph name="HOST" /> používať vašu kameru aj hýbať ňou a používať mikrofón</translation> <translation id="5505264765875738116">Weby nemôžu žiadať o odosielanie upozornení</translation> <translation id="5505307013568720083">Minul sa atrament</translation> @@ -3991,6 +3992,7 @@ <translation id="5565735124758917034">Aktívne</translation> <translation id="5567989639534621706">Vyrovnávacie pamäte aplikácií</translation> <translation id="5568069709869097550">Nedá sa prihlásiť</translation> +<translation id="5571832155627049070">Prispôsobenie profilu</translation> <translation id="5572851009514199876">Začnite a prihláste sa do Chromu, aby skontroloval, či môžete navštíviť tento web.</translation> <translation id="5575473780076478375">Rozšírenie inkognito: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Vyskytol sa problém so žiadosťou o registráciu ukážky.</translation> @@ -5460,6 +5462,7 @@ <translation id="7280649757394340890">Hlasové nastavenia prevodu textu na reč</translation> <translation id="7280877790564589615">Vyžaduje sa povolenie</translation> <translation id="7282992757463864530">Informačný panel</translation> +<translation id="7283555985781738399">Režim pre hostí</translation> <translation id="7284411326658527427">Každá osoba si môže prispôsobiť účet a uchovať údaje v súkromí.</translation> <translation id="7287143125007575591">Prístup bol odmietnutý</translation> <translation id="7287411021188441799">Obnoviť predvolené pozadie</translation> @@ -5839,6 +5842,7 @@ <translation id="7716781361494605745">Webová adresa pre pravidlá certifikačnej autority služby Netscape</translation> <translation id="7717014941119698257">Sťahovanie: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Weby môžu žiadať o vašu polohu (odporúčané)</translation> +<translation id="771721654176725387">Táto akcia natrvalo odstráni dáta prehliadania z tohto zariadenia. Ak ich chcete obnoviť, zapnite synchronizáciu</translation> <translation id="7717845620320228976">Kontrola dostupnosti aktualizácií</translation> <translation id="7719367874908701697">Priblíženie stránky</translation> <translation id="7719588063158526969">Názov zariadenia je príliš dlhý</translation> @@ -5875,6 +5879,7 @@ <translation id="7765158879357617694">Presunúť</translation> <translation id="7765507180157272835">Vyžadujú sa Bluetooth a Wi-Fi</translation> <translation id="7766082757934713382">Pomáha znížiť spotrebu sieťových dát pozastavením automatických aktualizácií aplikácií a systému</translation> +<translation id="7766807826975222231">Spustiť prehliadku</translation> <translation id="7766838926148951335">Prijať povolenia</translation> <translation id="7768507955883790804">Weby sa automaticky riadia týmto nastavením, keď ich navštívite</translation> <translation id="7768770796815395237">Zmeniť</translation> @@ -6119,6 +6124,7 @@ <translation id="8017176852978888182">Zdieľané adresáre v systéme Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Skratka bola upravená</translation> +<translation id="8018298733481692628">Chcete odstrániť tento profil?</translation> <translation id="8018313076035239964">Aké dáta môžu weby používať a aký obsah vám môžu zobrazovať</translation> <translation id="8023801379949507775">Aktualizovať rozšírenia</translation> <translation id="8026334261755873520">Vymazať dáta prehliadania</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">Neplatný kód PUK. Zostáva vám tento počet pokusov: <ph name="RETRIES" />.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Sťahuje sa}few{Sťahujú sa}many{Sťahujú sa}other{Sťahujú sa}}</translation> <translation id="8213449224684199188">Bol aktivovaný fotografický režim</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> chce identifikovať vaše zariadenie, aby sa v ňom mohli prehrávať chránené videá a zvuk v najvyššej kvalite.</translation> <translation id="8214489666383623925">Otvoriť súbor...</translation> <translation id="8214962590150211830">Odstrániť túto osobu</translation> <translation id="8216351761227087153">Pozrieť</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Potvrdenie obnovy</translation> <translation id="8774934320277480003">Horný okraj</translation> <translation id="8775144690796719618">Neplatná webová adresa</translation> -<translation id="8775163630211761057">Rozšírte to najlepšie zo svojho telefónu s Androidom do zariadenia <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Vaše zariadenie <ph name="DEVICE_TYPE" /> bude automaticky uzamknuté o # sekundu. <ph name="DOMAIN" /> vyžaduje, aby ste svoju čipovú kartu ponechali vloženú.}few{Vaše zariadenie <ph name="DEVICE_TYPE" /> bude automaticky uzamknuté o # sekundy. <ph name="DOMAIN" /> vyžaduje, aby ste svoju čipovú kartu ponechali vloženú.}many{Vaše zariadenie <ph name="DEVICE_TYPE" /> bude automaticky uzamknuté o # sekundy. @@ -6958,6 +6962,7 @@ <translation id="8973596347849323817">Zariadenie môžete prispôsobiť, aby zodpovedalo vašim potrebám. Tieto funkcie dostupnosti môžete neskôr zmeniť v Nastaveniach.</translation> <translation id="897414447285476047">Cieľový súbor bol neúplný, pretože sa vyskytol problém s pripojením.</translation> <translation id="897525204902889653">Služba karantény</translation> +<translation id="8975396729541388937">Odber môžete kedykoľvek zrušiť kliknutím na odkaz v správach, ktoré dostanete.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />“}=1{„<ph name="TAB_TITLE" />“ a jedna ďalšia karta}few{„<ph name="TAB_TITLE" />“ a # ďalšie karty}many{"<ph name="TAB_TITLE" />" and # other tabs}other{„<ph name="TAB_TITLE" />“ a # ďalších kariet}}</translation> <translation id="8977811652087512276">Nesprávne heslo alebo poškodený súbor</translation> <translation id="8978154919215542464">Zapnuté – synchronizovať všetko</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index f81e6b55..9a2cedc 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -341,6 +341,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Ni ogroženih gesel}=1{1 ogroženo geslo}one{{NUM_COMPROMISED} ogroženo geslo}two{{NUM_COMPROMISED} ogroženi gesli}few{{NUM_COMPROMISED} ogrožena gesla}other{{NUM_COMPROMISED} ogroženih gesel}}</translation> <translation id="1380028686461971526">Samodejna povezava z omrežjem</translation> <translation id="1380436189840894976">Ali želite vseeno zapustiti način brez beleženja zgodovine?</translation> +<translation id="1383597849754832576">Datotek za govor ni mogoče prenesti. Poskusite pozneje.</translation> <translation id="1383861834909034572">Odpiranje, ko je končano</translation> <translation id="1383876407941801731">Išči</translation> <translation id="1386791642444521222">Aktiviranje fizične kartice SIM</translation> @@ -879,7 +880,6 @@ <translation id="1954813140452229842">Napaka pri vpenjanju datotečnega sredstva v skupni rabi. Preverite poverilnice in poskusite znova.</translation> <translation id="1956050014111002555">V datoteki je bilo več potrdil in nobeno ni bilo uvoženo:</translation> <translation id="1956390763342388273">S tem bodo naložene vse datoteke z mesta »<ph name="FOLDER_PATH" />«. To storite samo, če spletnemu mestu zaupate.</translation> -<translation id="1960158217849594135">Želite uporabniško ime shraniti v svoj račun Google?</translation> <translation id="196040970347962278">Najprej vzpostavite povezavo z internetom</translation> <translation id="1962233722219655970">Ta stran uporablja aplikacijo s tehnologijo Native Client, ki ne deluje v vašem računalniku.</translation> <translation id="1963227389609234879">Odstrani vse</translation> @@ -905,6 +905,7 @@ <translation id="1984417487208496350">Brez zaščite (ni priporočljivo)</translation> <translation id="1987317783729300807">Računi</translation> <translation id="1989112275319619282">Brskanje</translation> +<translation id="1990046457226896323">Datoteke za govor so bile prenesene.</translation> <translation id="1990512225220753005">Ne prikaži bližnjic na tej strani</translation> <translation id="1992397118740194946">Ni nastavljeno</translation> <translation id="1992924914582925289">Odstrani iz naprave</translation> @@ -1050,7 +1051,6 @@ <translation id="2157474325782140681">Če želite dodatne funkcije, uporabite priklopno postajo Dell, zasnovano za uporabo s tem Chromebookom.</translation> <translation id="215753907730220065">Izhod iz celozaslonskega načina</translation> <translation id="2157875535253991059">Ta stran je zdaj prikazana na celotnem zaslonu.</translation> -<translation id="2160589599612868242">Prejmite obvestila iz telefona v napravi <ph name="DEVICE_TYPE" />.</translation> <translation id="216169395504480358">Dodaj Wi-Fi ...</translation> <translation id="2162155940152307086">Sinhronizacija se bo začela, ko zaprete nastavitve sinhronizacije</translation> <translation id="2162838847352058695">Spletnim mestom prepreči samodejno prenašanje več datotek</translation> @@ -1268,6 +1268,7 @@ <translation id="2399699884460174994">Obvestila so vklopljena</translation> <translation id="2399939490305346086">Podatki za prijavo na varnostnem ključu</translation> <translation id="2400664245143453337">Potrebna je takojšnja posodobitev</translation> +<translation id="2406153734066939945">Želite izbrisati ta profil in podatke v njem?</translation> <translation id="2408018932941436077">Shranjevanje kartice</translation> <translation id="2408955596600435184">Vnos kode PIN</translation> <translation id="241082044617551207">Neznani vtičnik</translation> @@ -1386,6 +1387,7 @@ <translation id="2526590354069164005">Namizje</translation> <translation id="2526619973349913024">Poišči posodobitev</translation> <translation id="2527167509808613699">Kakršna koli povezava</translation> +<translation id="2530166226437958497">Odpravljanje težav</translation> <translation id="2532589005999780174">Visokokontrastni način</translation> <translation id="253434972992662860">&Premor</translation> <translation id="2534460670861217804">Varni proxy HTTP</translation> @@ -1703,7 +1705,6 @@ <translation id="2885729872133513017">Pri dekodiranju odziva strežnika je prišlo do težave.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Odpri povezavo z ...</translation> -<translation id="2889481634493693121">Vklop obvestil v telefonu</translation> <translation id="2889925978073739256">Še naprej blokiraj vtičnike</translation> <translation id="2893168226686371498">Privzeti brskalnik</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 SMS}one{# SMS}two{# SMS-ja}few{# SMS-ji}other{# SMS-jev}}</translation> @@ -2563,6 +2564,7 @@ <translation id="3857807444929313943">Dvignite in se spet dotaknite</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sinhronizacija je zaustavljena</translation> <translation id="3861638017150647085">Uporabniško ime »<ph name="USERNAME" />« ni na voljo</translation> +<translation id="3861977424605124250">Pokaži ob zagonu</translation> <translation id="3862693525629180217">Preverite prek vgrajenega tipala</translation> <translation id="3862788408946266506">Aplikacijo z atributom manifesta »kiosk_only« je treba namestiti v načinu kioska sistema OS Chrome</translation> <translation id="3865414814144988605">Ločljivost</translation> @@ -2805,7 +2807,6 @@ <translation id="412730574613779332">Super junak</translation> <translation id="4130199216115862831">Dnevnik naprave</translation> <translation id="4130207949184424187">Zaradi te razširitve se je spremenila stran, ki je prikazana, ko iščete v naslovni vrstici.</translation> -<translation id="4130344535649650885">Želite geslo shraniti v svoj račun Google?</translation> <translation id="4130750466177569591">Strinjam se</translation> <translation id="413121957363593859">Komponente</translation> <translation id="4131410914670010031">Črno-belo</translation> @@ -3204,6 +3205,7 @@ <translation id="4627442949885028695">Nadaljevanje iz druge naprave</translation> <translation id="4628757576491864469">Naprave</translation> <translation id="4628762811416793313">Nastavitev vsebnika za Linux se ni dokončala. Poskusite znova.</translation> +<translation id="4629521233550547305">Odpri profil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Razširitev zahteva »<ph name="IMPORT_NAME" />« z najmanjšo številko različice »<ph name="IMPORT_VERSION" />«, vendar je nameščena samo različica »<ph name="INSTALLED_VERSION" />«</translation> <translation id="4633757335284074492">Varnostno kopiranje v Google Drive. Kadar koli lahko preprosto obnovite podatke v napravi ali zamenjate napravo z drugo. Te varnostne kopije vključujejo podatke aplikacij. Varnostne kopije so naložene v Google in šifrirane z geslom za račun Google otroka.</translation> <translation id="4634575639321169635">Nastavite to napravo za službeno ali osebno uporabo</translation> @@ -3932,7 +3934,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Prejemanje prilog (<ph name="ATTACHMENTS" />) iz naprave <ph name="DEVICE_NAME" /> ni bilo uspešno}one{Prejemanje prilog (<ph name="ATTACHMENTS" />) iz naprave <ph name="DEVICE_NAME" /> ni bilo uspešno}two{Prejemanje prilog (<ph name="ATTACHMENTS" />) iz naprave <ph name="DEVICE_NAME" /> ni bilo uspešno}few{Prejemanje prilog (<ph name="ATTACHMENTS" />) iz naprave <ph name="DEVICE_NAME" /> ni bilo uspešno}other{Prejemanje prilog (<ph name="ATTACHMENTS" />) iz naprave <ph name="DEVICE_NAME" /> ni bilo uspešno}}</translation> <translation id="5502500733115278303">Uvoženo iz brskalnika Firefox</translation> <translation id="5502915260472117187">Otrok</translation> -<translation id="5503858713116291452">Preverite, ali imate telefon v bližini, ali je vklopljen in ima vklopljeno povezavo Bluetooth in omrežje Wi-Fi. Če želite dokončati nastavitev, uporabite postopek v telefonu.</translation> <translation id="5503982651688210506">Še naprej dovoli, da gostitelj <ph name="HOST" /> uporablja in premika kamero ter uporablja mikrofon</translation> <translation id="5505264765875738116">Spletna mesta vas ne smejo vprašati, ali želite, da vam pošiljajo obvestila</translation> <translation id="5505307013568720083">Ni več črnila</translation> @@ -3993,6 +3994,7 @@ <translation id="5565735124758917034">Aktivno</translation> <translation id="5567989639534621706">Predpomnilniki aplikacij</translation> <translation id="5568069709869097550">Vpis ni mogoč</translation> +<translation id="5571832155627049070">Prilagodite svoj profil</translation> <translation id="5572851009514199876">Začnite s prijavo v Chrome, da lahko Chrome preveri, ali vam je dovoljeno dostopati do tega spletnega mesta.</translation> <translation id="5575473780076478375">Razširitev brez beleženja zgodovine: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Prišlo je do težave z zahtevo za registracijo predstavitve.</translation> @@ -5464,6 +5466,7 @@ <translation id="7280649757394340890">Glasovne nastavitve pretvorbe besedila v govor</translation> <translation id="7280877790564589615">Zahtevano je dovoljenje</translation> <translation id="7282992757463864530">Informacijska vrstica</translation> +<translation id="7283555985781738399">Način za goste</translation> <translation id="7284411326658527427">Vsak lahko individualno prilagodi svoj račun in poskrbi za zasebnost podatkov.</translation> <translation id="7287143125007575591">Dostop zavrnjen.</translation> <translation id="7287411021188441799">Obnovi privzeto ozadje</translation> @@ -5843,6 +5846,7 @@ <translation id="7716781361494605745">Spletni naslov pravilnika overitelja Netscapeovega potrdila</translation> <translation id="7717014941119698257">Prenos: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Spletna mesta lahko zahtevajo vašo lokacijo (priporočeno)</translation> +<translation id="771721654176725387">S tem boste iz te naprave trajno izbrisali podatke o brskanju. Če želite podatke obnoviti, omogočite sinhronizacijo kot</translation> <translation id="7717845620320228976">Preveri, ali so na voljo posodobitve</translation> <translation id="7719367874908701697">Povečava/pomanjšava strani</translation> <translation id="7719588063158526969">Ime naprave je predolgo.</translation> @@ -5879,6 +5883,7 @@ <translation id="7765158879357617694">Premakni</translation> <translation id="7765507180157272835">Potrebujete Bluetooth in Wi-Fi</translation> <translation id="7766082757934713382">Z začasno zaustavitvijo posodobitev aplikacij in sistema pomaga zmanjšati preneseno količino podatkov v omrežju</translation> +<translation id="7766807826975222231">Oglejte si predstavitev</translation> <translation id="7766838926148951335">Sprejmi dovoljenja</translation> <translation id="7768507955883790804">Spletna mesta ob vašem obisku samodejno upoštevajo to nastavitev</translation> <translation id="7768770796815395237">Spremeni</translation> @@ -6123,6 +6128,7 @@ <translation id="8017176852978888182">Imeniki Linux, deljeni z drugimi</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Bližnjica je bila urejena</translation> +<translation id="8018298733481692628">Želite izbrisati ta profil?</translation> <translation id="8018313076035239964">Nadzirajte, katere podatke lahko uporabijo spletna mesta in katero vsebino vam lahko pokažejo</translation> <translation id="8023801379949507775">Posodobi razširitve</translation> <translation id="8026334261755873520">Izbriši podatke brskanja</translation> @@ -6293,7 +6299,6 @@ <translation id="8211551284753798479">Neveljavna koda PUK. Imate še toliko poskusov: <ph name="RETRIES" />.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Poteka prenos}one{Poteka prenos}two{Potekata prenosa}few{Potekajo prenosi}other{Potekajo prenosi}}</translation> <translation id="8213449224684199188">Izbran je način za fotografije</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> zahteva, da določite napravo, da bo lahko predvajali zaščitene videoposnetke in zvok največje kakovosti.</translation> <translation id="8214489666383623925">Odpri datoteko ...</translation> <translation id="8214962590150211830">Odstrani to osebo</translation> <translation id="8216351761227087153">Glejte</translation> @@ -6772,7 +6777,6 @@ <translation id="8774379074441005279">Potrdite obnovitev</translation> <translation id="8774934320277480003">Zgornji rob</translation> <translation id="8775144690796719618">Neveljaven URL</translation> -<translation id="8775163630211761057">Prenesite najboljše, kar ponuja telefon Android, v napravo <ph name="DEVICE_TYPE" />.</translation> <translation id="8775653927968399786">{0,plural, =1{Naprava <ph name="DEVICE_TYPE" /> se bo samodejno zaklenila čez # sekund. Domena <ph name="DOMAIN" /> zahteva, da je pametna kartica vstavljena.}one{Naprava <ph name="DEVICE_TYPE" /> se bo samodejno zaklenila čez # sekundo. Domena <ph name="DOMAIN" /> zahteva, da je pametna kartica vstavljena.}two{Naprava <ph name="DEVICE_TYPE" /> se bo samodejno zaklenila čez # sekundi. @@ -6964,6 +6968,7 @@ <translation id="8973596347849323817">To napravo lahko prilagodite svojim potrebam. Te funkcije za ljudi s posebnimi potrebami lahko pozneje spremenite v nastavitvah.</translation> <translation id="897414447285476047">Prenos ciljne datoteke je bil zaradi težave s povezavo nedokončan.</translation> <translation id="897525204902889653">Storitev karantene</translation> +<translation id="8975396729541388937">Kadar koli se lahko odjavite tako, da kliknete povezavo v e-poštnih sporočilih, ki jih prejmete.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{»<ph name="TAB_TITLE" />«}=1{»<ph name="TAB_TITLE" />« in še 1 zavihek}one{»<ph name="TAB_TITLE" />« in še # zavihek}two{»<ph name="TAB_TITLE" />« in še # zavihka}few{»<ph name="TAB_TITLE" />« in še # zavihki}other{»<ph name="TAB_TITLE" />« in še # zavihkov}}</translation> <translation id="8977811652087512276">Napačno geslo ali poškodovana datoteka</translation> <translation id="8978154919215542464">Vklopljeno – sinhroniziranje vsega</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index 74c4720..dbb9b5c 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Asnjë fjalëkalim i komprometuar}=1{1 fjalëkalim i komprometuar}other{{NUM_COMPROMISED} fjalëkalime të komprometuara}}</translation> <translation id="1380028686461971526">Lidhu automatikisht me rrjetin</translation> <translation id="1380436189840894976">Dëshiron ta mbyllësh gjithsesi modalitetin "e fshehtë"?</translation> +<translation id="1383597849754832576">Skedarët e ligjërimit nuk mund të shkarkohen. Provo përsëri më vonë.</translation> <translation id="1383861834909034572">Do të hapet kur të përfundojë</translation> <translation id="1383876407941801731">Kërko</translation> <translation id="1386791642444521222">Aktivizo kartën fizike SIM</translation> @@ -873,7 +874,6 @@ <translation id="1954813140452229842">Gabim gjatë montimit të ndarjes. Kontrollo kredencialet e tua dhe provo përsëri.</translation> <translation id="1956050014111002555">Skedari përmbante shumë certifikata dhe asnjëra prej tyre nuk u importua:</translation> <translation id="1956390763342388273">Kjo do të ngarkojë të gjithë skedarët nga "<ph name="FOLDER_PATH" />". Bëje këtë vetëm nëse e beson sajtin.</translation> -<translation id="1960158217849594135">Të ruhet emri i përdoruesit në "Llogarinë tënde të Google"?</translation> <translation id="196040970347962278">Krijo në fillim një lidhje me internetin</translation> <translation id="1962233722219655970">Kjo faqe përdor një version të aplikacionit "Klient origjinal" që nuk punon në kompjuterin tënd.</translation> <translation id="1963227389609234879">Hiqi të gjitha</translation> @@ -899,6 +899,7 @@ <translation id="1984417487208496350">Asnjë mbrojtje (nuk rekomandohet)</translation> <translation id="1987317783729300807">Llogaritë</translation> <translation id="1989112275319619282">Shfleto</translation> +<translation id="1990046457226896323">Skedarët e ligjërimit u shkarkuan</translation> <translation id="1990512225220753005">Mos shfaq shkurtore në këtë faqe</translation> <translation id="1992397118740194946">Nuk është caktuar</translation> <translation id="1992924914582925289">Hiqe nga pajisja</translation> @@ -1044,7 +1045,6 @@ <translation id="2157474325782140681">Për të marrë veçori shtesë, përdor një stacion lidhjeje Dell të projektuar për të funksionuar me këtë Chromebook.</translation> <translation id="215753907730220065">Dil nga ekrani i plotë</translation> <translation id="2157875535253991059">Kjo faqe tani është në ekran të plotë</translation> -<translation id="2160589599612868242">Merr njoftime nga telefoni yt në pajisjen tënde <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Shto Wi-Fi...</translation> <translation id="2162155940152307086">Sinkronizimi do të fillojë pasi të largohesh nga cilësimet e sinkronizimit</translation> <translation id="2162838847352058695">Blloko sajtet që të mos shkarkojnë automatikisht shumë skedarë</translation> @@ -1262,6 +1262,7 @@ <translation id="2399699884460174994">Njoftimet janë të aktivizuara</translation> <translation id="2399939490305346086">Të dhënat e identifikimit të çelësit të sigurisë</translation> <translation id="2400664245143453337">Kërkohet përditësimi i menjëhershëm</translation> +<translation id="2406153734066939945">Të fshihet ky profil dhe të dhënat e tij?</translation> <translation id="2408018932941436077">Po ruhet karta</translation> <translation id="2408955596600435184">Fut kodin PIN</translation> <translation id="241082044617551207">Përbërës shtesë i panjohur</translation> @@ -1380,6 +1381,7 @@ <translation id="2526590354069164005">Desktopi</translation> <translation id="2526619973349913024">Kontrollo përditësime</translation> <translation id="2527167509808613699">Çdo lloj lidhjeje</translation> +<translation id="2530166226437958497">Zgjidhja e problemeve</translation> <translation id="2532589005999780174">Modaliteti i kontrastit të lartë</translation> <translation id="253434972992662860">&Ndërprit</translation> <translation id="2534460670861217804">Përfaqësuesi i sigurt i HTTP-së</translation> @@ -1697,7 +1699,6 @@ <translation id="2885729872133513017">Ndodhi një problem gjatë deshifrimit të përgjigjes së serverit.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Hap lidhjen me...</translation> -<translation id="2889481634493693121">Aktivizo njoftimet në telefonin tënd</translation> <translation id="2889925978073739256">Vazhdo bllokimin e përbërësve shtesë të pakufizuar</translation> <translation id="2893168226686371498">Shfletuesi i parazgjedhur</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 mesazh}other{# mesazhe}}</translation> @@ -2557,6 +2558,7 @@ <translation id="3857807444929313943">Ngrije dhe më pas prek përsëri</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Sinkronizimi u ndërpre</translation> <translation id="3861638017150647085">Emri i përdoruesit "<ph name="USERNAME" />" nuk ofrohet</translation> +<translation id="3861977424605124250">Shfaq në momentin e nisjes</translation> <translation id="3862693525629180217">Verifikohu nëpërmjet sensorit të integruar</translation> <translation id="3862788408946266506">Aplikacioni me cilësinë e shfaqjes "kiosk_only" duhet të instalohet në modalitetin "kioskë" të sistemit operativ Chrome</translation> <translation id="3865414814144988605">Rezolucioni</translation> @@ -2799,7 +2801,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Ditari i pajisjes</translation> <translation id="4130207949184424187">Kjo shtesë ka ndryshuar se cila faqe shfaqet kur kërkon nga Omnibox.</translation> -<translation id="4130344535649650885">Të ruhet fjalëkalimi për "Llogarinë tënde të Google"?</translation> <translation id="4130750466177569591">Jam dakord</translation> <translation id="413121957363593859">Përbërësit</translation> <translation id="4131410914670010031">Bardhezi</translation> @@ -3198,6 +3199,7 @@ <translation id="4627442949885028695">Vazhdo nga një pajisje tjetër</translation> <translation id="4628757576491864469">Pajisjet</translation> <translation id="4628762811416793313">Konfigurimi i kontejnerit të Linux nuk përfundoi. Provo përsëri.</translation> +<translation id="4629521233550547305">Hap profilin <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Shtesa kërkon "<ph name="IMPORT_NAME" />" me një version minimal "<ph name="IMPORT_VERSION" />", por është instaluar vetëm versioni "<ph name="INSTALLED_VERSION" />"</translation> <translation id="4633757335284074492">Rezervo në "Diskun e Google". Restauro të dhënat ose ndërro me lehtësi pajisjen në çdo kohë. Rezervimi yt përfshin të dhënat e aplikacioneve. Rezervimet ngarkohen në Google dhe enkriptohen duke përdorur fjalëkalimin e "Llogarisë së Google" të fëmijës tënd.</translation> <translation id="4634575639321169635">Konfiguroje këtë pajisje për përdorim pune ose personal</translation> @@ -3926,7 +3928,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Marrja nga <ph name="DEVICE_NAME" /> dështoi: <ph name="ATTACHMENTS" />}other{Marrja nga <ph name="DEVICE_NAME" /> dështoi: <ph name="ATTACHMENTS" />}}</translation> <translation id="5502500733115278303">Importuar nga Firefox</translation> <translation id="5502915260472117187">Një fëmijë</translation> -<translation id="5503858713116291452">Sigurohu që telefoni yt të jetë pranë, i shkyçur dhe ta ketë të aktivizuar Bluetooth-in dhe Wi-Fi. Ndiq hapat në telefon për të përfunduar konfigurimin.</translation> <translation id="5503982651688210506">Vazhdo të lejosh që <ph name="HOST" /> të përdorë dhe të lëvizë kamerën dhe të përdorë mikrofonin</translation> <translation id="5505264765875738116">Sajtet nuk mund të kërkojnë të dërgojnë njoftime</translation> <translation id="5505307013568720083">Nuk ka bojë</translation> @@ -3987,6 +3988,7 @@ <translation id="5565735124758917034">Aktiv</translation> <translation id="5567989639534621706">Memoriet specifike të aplikacionit</translation> <translation id="5568069709869097550">Nuk mund të identifkohet</translation> +<translation id="5571832155627049070">Personalizo profilin tënd</translation> <translation id="5572851009514199876">Fillo dhe identifikohu në Chrome që Chrome të mund të kontrollojë nëse lejohesh të kesh qasje në këtë sajt.</translation> <translation id="5575473780076478375">Shtesë e fshehtë: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Kishte një problem me kërkesën për regjistrimin e demonstrimit.</translation> @@ -5455,6 +5457,7 @@ <translation id="7280649757394340890">Cilësimet e zërit për tekstin në ligjërim</translation> <translation id="7280877790564589615">Kërkohet leje</translation> <translation id="7282992757463864530">Shiriti i informacioneve</translation> +<translation id="7283555985781738399">Modaliteti "vizitor"</translation> <translation id="7284411326658527427">Çdo person mund ta personalizojë llogarinë e vet dhe t'i mbajë të dhënat private.</translation> <translation id="7287143125007575591">Qasja refuzohet</translation> <translation id="7287411021188441799">Restauro sfondin e parazgjedhur</translation> @@ -5834,6 +5837,7 @@ <translation id="7716781361494605745">URL-ja e politikës së autoritetit të certifikimit të Netscape</translation> <translation id="7717014941119698257">Po shkarkon: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Sajtet mund të kërkojnë vendndodhjen tënde (rekomandohet)</translation> +<translation id="771721654176725387">Kjo do të fshijë në mënyrë të përhershme të dhënat e shfletimit nga kjo pajisje. Për të rikuperuar të dhënat, aktivizo "Sinkronizo si"</translation> <translation id="7717845620320228976">Kontrollo për përditësime</translation> <translation id="7719367874908701697">Zmadhimi i faqes</translation> <translation id="7719588063158526969">Emri i pajisjes është shumë i gjatë</translation> @@ -5870,6 +5874,7 @@ <translation id="7765158879357617694">Zhvendos</translation> <translation id="7765507180157272835">Nevojiten Bluetooth-i dhe Wi-Fi</translation> <translation id="7766082757934713382">Ndihmon për të zvogëluar përdorimin e të dhënave të rrjetit duke i vendosur në pauzë përditësimet e aplikacioneve dhe sistemit</translation> +<translation id="7766807826975222231">Bëj një turne</translation> <translation id="7766838926148951335">Prano lejet</translation> <translation id="7768507955883790804">Sajtet e ndjekin automatikisht këtë cilësim kur i viziton ato</translation> <translation id="7768770796815395237">Ndrysho</translation> @@ -6112,6 +6117,7 @@ <translation id="8016266267177410919">Hapësira ruajtëse e përkohshme</translation> <translation id="8017176852978888182">Direktoritë e ndara të Linux</translation> <translation id="8017679124341497925">Shkurtorja u modifikua</translation> +<translation id="8018298733481692628">Të fshihet ky profil?</translation> <translation id="8018313076035239964">Kontrollo se çfarë informacioni mund të përdorin sajtet e uebit dhe çfarë përmbajtjeje mund të të shfaqin</translation> <translation id="8023801379949507775">Përditëso shtesat tani</translation> <translation id="8026334261755873520">Pastro të dhënat e shfletimit</translation> @@ -6282,7 +6288,6 @@ <translation id="8211551284753798479">Kodi PUK i pavlefshëm. Të kanë mbetur edhe <ph name="RETRIES" /> përpjekje.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Shkarkimi është në vazhdim}other{Shkarkimet janë në vazhdim}}</translation> <translation id="8213449224684199188">Kalove te modaliteti i fotografisë</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> kërkon të identifikojë pajisjen tënde që të mund t'i luajë videon dhe audion e mbrojtur me cilësinë më të lartë.</translation> <translation id="8214489666383623925">Hap skedarin...</translation> <translation id="8214962590150211830">Hiqe këtë person</translation> <translation id="8216351761227087153">Shikoje</translation> @@ -6761,7 +6766,6 @@ <translation id="8774379074441005279">Konfirmo restaurimin</translation> <translation id="8774934320277480003">Kufiri i sipërm</translation> <translation id="8775144690796719618">URL-ja është e pavlefshme</translation> -<translation id="8775163630211761057">Sill më të mirën e telefonit tënd Android në <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Pajisja jote <ph name="DEVICE_TYPE" /> do të kyçet automatikisht brenda # sekonde. <ph name="DOMAIN" /> kërkon që ti ta mbash kartën tënde smart të futur.}other{Pajisja jote <ph name="DEVICE_TYPE" /> do të kyçet automatikisht brenda # sekondash. <ph name="DOMAIN" /> kërkon që ti ta mbash kartën tënde smart të futur.}}</translation> @@ -6950,6 +6954,7 @@ <translation id="8973596347849323817">Mund ta personalizosh këtë pajisje për t'iu përshtatur nevojave të tua. Këto veçori të qasshmërisë mund të ndryshohen më vonë te "Cilësimet".</translation> <translation id="897414447285476047">Skedari i destinacionit ishte i paplotë për shkak të një problemi me lidhjen.</translation> <translation id="897525204902889653">Shërbimi i karantinës</translation> +<translation id="8975396729541388937">Çregjistrohu në çdo kohë duke klikuar te lidhja në email-et që merr.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" dhe 1 skedë tjetër}other{"<ph name="TAB_TITLE" />" dhe # skeda të tjera}}</translation> <translation id="8977811652087512276">Fjalëkalim i pasaktë ose skedar i dëmtuar</translation> <translation id="8978154919215542464">Aktiv - sinkronizo çdo gjë</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index e3f0edb..a781a21f 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -340,6 +340,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Nema ugroženih lozinki}=1{1 ugrožena lozinka}one{{NUM_COMPROMISED} ugrožena lozinka}few{{NUM_COMPROMISED} ugrožene lozinke}other{{NUM_COMPROMISED} ugroženih lozinki}}</translation> <translation id="1380028686461971526">Automatsko povezivanje na mrežu</translation> <translation id="1380436189840894976">Želite li da ipak izađete iz režima bez arhiviranja?</translation> +<translation id="1383597849754832576">Preuzimanje fajlova govora nije uspelo. Probajte kasnije.</translation> <translation id="1383861834909034572">Otvaranje kad se dovrši</translation> <translation id="1383876407941801731">Pretraži</translation> <translation id="1386791642444521222">Aktivirajte fizičku SIM karticu</translation> @@ -875,7 +876,6 @@ <translation id="1954813140452229842">Greška pri učitavanju deljene datoteke. Proverite akreditive i probajte ponovo.</translation> <translation id="1956050014111002555">Datoteka sadrži više sertifikata, od kojih nijedan nije uvezen:</translation> <translation id="1956390763342388273">Ovim ćete otpremiti sve datoteke iz „<ph name="FOLDER_PATH" />“. Radite ovo samo ako je sajt pouzdan.</translation> -<translation id="1960158217849594135">Želite da sačuvate korisničko ime na Google nalogu?</translation> <translation id="196040970347962278">Prvo se povežite na internet</translation> <translation id="1962233722219655970">Ova stranica koristi Native Client aplikaciju koja ne funkcioniše na vašem računaru.</translation> <translation id="1963227389609234879">Ukloni sve</translation> @@ -901,6 +901,7 @@ <translation id="1984417487208496350">Bez zaštite (ne preporučuje se)</translation> <translation id="1987317783729300807">Nalozi</translation> <translation id="1989112275319619282">Pregledaj</translation> +<translation id="1990046457226896323">Preuzeti su fajlovi govora</translation> <translation id="1990512225220753005">Ne prikazujte prečice na ovoj stranici</translation> <translation id="1992397118740194946">Nije podešeno</translation> <translation id="1992924914582925289">Ukloni sa uređaja</translation> @@ -1046,7 +1047,6 @@ <translation id="2157474325782140681">Da biste koristili dodatne funkcije, koristite Dell baznu stanicu kompatibilnu sa ovim Chromebook-om.</translation> <translation id="215753907730220065">Izađi iz režima celog ekrana</translation> <translation id="2157875535253991059">Ova stranica je sada u režimu celog ekrana.</translation> -<translation id="2160589599612868242">Dobijajte obaveštenja sa telefona na uređaju <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Dodaj WiFi...</translation> <translation id="2162155940152307086">Sinhronizacija će početi kada izađete iz podešavanja sinhronizacije</translation> <translation id="2162838847352058695">Onemogući sajtovima da automatski preuzimaju više fajlova</translation> @@ -1264,6 +1264,7 @@ <translation id="2399699884460174994">Obaveštenja su uključena</translation> <translation id="2399939490305346086">Podaci za prijavljivanje sa bezbednosnog ključa</translation> <translation id="2400664245143453337">Treba odmah da ažurirate</translation> +<translation id="2406153734066939945">Želite li da izbrišete ovaj profil i podatke na njemu?</translation> <translation id="2408018932941436077">Kartica se čuva</translation> <translation id="2408955596600435184">Unesite PIN</translation> <translation id="241082044617551207">Nepoznata dodatna komponenta</translation> @@ -1382,6 +1383,7 @@ <translation id="2526590354069164005">Radna površina</translation> <translation id="2526619973349913024">Proveri da li postoji ažuriranje</translation> <translation id="2527167509808613699">Bilo koja vrsta veze</translation> +<translation id="2530166226437958497">Rešavanje problema</translation> <translation id="2532589005999780174">Režim visokog kontrasta</translation> <translation id="253434972992662860">&Pauziraj</translation> <translation id="2534460670861217804">Bezbedan HTTP proksi</translation> @@ -1699,7 +1701,6 @@ <translation id="2885729872133513017">Došlo je do problema pri dekodiranju odgovora servera.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Otvori link koristeći...</translation> -<translation id="2889481634493693121">Uključite obaveštenja na telefonu</translation> <translation id="2889925978073739256">Nastavi blokiranje dodatnih komponenata koje su izvan zaštićenog okruženja</translation> <translation id="2893168226686371498">Podrazumevani pregledač</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 tekstualna poruka}one{# tekstualna poruka}few{# tekstualne poruke}other{# tekstualnih poruka}}</translation> @@ -2559,6 +2560,7 @@ <translation id="3857807444929313943">Podignite, pa opet dodirnite</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sinhronizacija je pauzirana</translation> <translation id="3861638017150647085">Korisničko ime <ph name="USERNAME" /> nije dostupno</translation> +<translation id="3861977424605124250">Prikaži pri pokretanju</translation> <translation id="3862693525629180217">Potvrdi pomoću ugrađenog senzora</translation> <translation id="3862788408946266506">Aplikacija sa atributom manifesta „kiosk_only“ mora da se instalira u režimu kioska u Chrome OS-u</translation> <translation id="3865414814144988605">Rezolucija</translation> @@ -2801,7 +2803,6 @@ <translation id="412730574613779332">Spandeks</translation> <translation id="4130199216115862831">Evidencija uređaja</translation> <translation id="4130207949184424187">Ovaj dodatak je promenio stranicu koja se prikazuje kada pretražujete iz omniboksa.</translation> -<translation id="4130344535649650885">Želite da sačuvate lozinku za Google nalog?</translation> <translation id="4130750466177569591">Prihvatam</translation> <translation id="413121957363593859">Komponente</translation> <translation id="4131410914670010031">Crno-belo</translation> @@ -3200,6 +3201,7 @@ <translation id="4627442949885028695">Nastavite na drugom uređaju</translation> <translation id="4628757576491864469">Uređaji</translation> <translation id="4628762811416793313">Podešavanje Linux kontejnera nije dovršeno. Probajte ponovo.</translation> +<translation id="4629521233550547305">Otvori profil <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Dodatak zahteva „<ph name="IMPORT_NAME" />“ čija je najstarija verzija „<ph name="IMPORT_VERSION" />“, ali instalirana je samo verzija „<ph name="INSTALLED_VERSION" />“</translation> <translation id="4633757335284074492">Pravite rezervne kopije na Google disku. Lako vratite podatke ili pređite na drugi uređaj u bilo kom trenutku. Ova rezervna kopija uključuje podatke aplikacija. Rezervne kopije se otpremaju na Google i šifruju lozinkom za Google nalog deteta.</translation> <translation id="4634575639321169635">Podesite ovaj uređaj za poslovnu ili ličnu upotrebu</translation> @@ -3928,7 +3930,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Prijem (<ph name="ATTACHMENTS" />) sa uređaja <ph name="DEVICE_NAME" /> nije uspeo}one{Prijem (<ph name="ATTACHMENTS" />) sa uređaja <ph name="DEVICE_NAME" /> nije uspeo}few{Prijem <ph name="ATTACHMENTS" /> sa uređaja <ph name="DEVICE_NAME" /> nije uspeo}other{Prijem <ph name="ATTACHMENTS" /> sa uređaja <ph name="DEVICE_NAME" /> nije uspeo}}</translation> <translation id="5502500733115278303">Uvezeno iz Firefox pregledača</translation> <translation id="5502915260472117187">Dete</translation> -<translation id="5503858713116291452">Uverite se da je telefon u blizini, da je otključan i da su Bluetooth i WiFi uključeni. Pratite korake na računaru da biste dovršili podešavanje.</translation> <translation id="5503982651688210506">Nastavite da dozvoljavate sajtu <ph name="HOST" /> da koristi i pomera kameru i koristi mikrofon</translation> <translation id="5505264765875738116">Sajtovi ne mogu da traže da šalju obaveštenja</translation> <translation id="5505307013568720083">Nema mastila</translation> @@ -3989,6 +3990,7 @@ <translation id="5565735124758917034">Aktivno</translation> <translation id="5567989639534621706">Keševi aplikacija</translation> <translation id="5568069709869097550">Ne mogu da se prijavim</translation> +<translation id="5571832155627049070">Prilagodite profil</translation> <translation id="5572851009514199876">Otvorite i prijavite se u Chrome da bi Chrome mogao da proveri da li imate dozvolu za pristup ovom sajtu.</translation> <translation id="5575473780076478375">Dodatak u režimu bez arhiviranja: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Došlo je do problema sa zahtevom za registraciju za režim demonstracije.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Podešavanja glasa za pretvaranje teksta u govor</translation> <translation id="7280877790564589615">Traži se dozvola</translation> <translation id="7282992757463864530">Traka sa informacijama</translation> +<translation id="7283555985781738399">Režim gosta</translation> <translation id="7284411326658527427">Svaka osoba može da personalizuje nalog i čuva privatnost podataka.</translation> <translation id="7287143125007575591">Pristup je odbijen.</translation> <translation id="7287411021188441799">Vrati podrazumevanu pozadinu</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">URL adresa za smernice autoriteta za izdavanje Netscape sertifikata</translation> <translation id="7717014941119698257">Preuzimanje: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Sajtovi mogu da traže da koriste vašu lokaciju (preporučuje se)</translation> +<translation id="771721654176725387">To će trajno izbrisati podatke pregledanja sa ovog uređaja. Da biste vratili podatke, uključite sinhronizaciju kao</translation> <translation id="7717845620320228976">Traženje ažuriranja</translation> <translation id="7719367874908701697">Zumiranje stranice</translation> <translation id="7719588063158526969">Naziv uređaja je predugačak</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Premesti</translation> <translation id="7765507180157272835">Potrebni su Bluetooth i WiFi</translation> <translation id="7766082757934713382">Pauzira automatska ažuriranja aplikacija i sistema i tako doprinosi smanjivanju potrošnje podataka na mreži</translation> +<translation id="7766807826975222231">Kreni u obilazak</translation> <translation id="7766838926148951335">Prihvati dozvole</translation> <translation id="7768507955883790804">Sajtovi automatski prate ovo podešavanje kada ih posetite</translation> <translation id="7768770796815395237">Promenite</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">Deljeni Linux direktorijumi</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Prečica je izmenjena</translation> +<translation id="8018298733481692628">Želite li da izbrišete ovaj profil?</translation> <translation id="8018313076035239964">Kontrolišu koje informacije veb-sajtovi mogu da koriste i koji sadržaj mogu da vam prikazuju</translation> <translation id="8023801379949507775">Ažuriraj dodatke</translation> <translation id="8026334261755873520">Obrišite podatke pregledanja</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">Nevažeći PUK. Preostalih pokušaja: <ph name="RETRIES" />.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Preuzimanje je u toku}one{Preuzimanja su u toku}few{Preuzimanja su u toku}other{Preuzimanja su u toku}}</translation> <translation id="8213449224684199188">Aktiviran je režim slika</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> želi da identifikuje uređaj da bi mogao da pušta najkvalitetniji zaštićeni video i audio sadržaj.</translation> <translation id="8214489666383623925">Otvori datoteku...</translation> <translation id="8214962590150211830">Ukloni ovu osobu</translation> <translation id="8216351761227087153">Gledaj</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Potvrdite vraćanje</translation> <translation id="8774934320277480003">Gornja margina</translation> <translation id="8775144690796719618">Nevažeći URL</translation> -<translation id="8775163630211761057">Prenesite najbolje sa Android telefona na <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> će se automatski zaključati za # sekundu. <ph name="DOMAIN" /> zahteva da pametna kartica ostane umetnuta.}one{<ph name="DEVICE_TYPE" /> će se automatski zaključati za # sekundu. <ph name="DOMAIN" /> zahteva da pametna kartica ostane umetnuta.}few{<ph name="DEVICE_TYPE" /> će se automatski zaključati za # sekunde. @@ -6958,6 +6962,7 @@ <translation id="8973596347849323817">Možete da prilagodite ovaj uređaj prema potrebama. Te funkcije pristupačnosti možete kasnije da promenite u Podešavanjima.</translation> <translation id="897414447285476047">Odredišna datoteka je nepotpuna zbog problema sa vezom.</translation> <translation id="897525204902889653">Usluga karantina</translation> +<translation id="8975396729541388937">Opozovite prijavu u bilo kom trenutku tako što ćete kliknuti na link u imejlovima koje dobijate.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />“}=1{„<ph name="TAB_TITLE" />“ i još 1 kartica}one{„<ph name="TAB_TITLE" />“ i još # kartica}few{„<ph name="TAB_TITLE" />“ i još # kartice}other{„<ph name="TAB_TITLE" />“ i još # kartica}}</translation> <translation id="8977811652087512276">Netačna lozinka ili oštećena datoteka</translation> <translation id="8978154919215542464">Uključeno – sinhronizuj sve</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index fb58d5f..a3e3444 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -340,6 +340,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Нема угрожених лозинки}=1{1 угрожена лозинка}one{{NUM_COMPROMISED} угрожена лозинка}few{{NUM_COMPROMISED} угрожене лозинке}other{{NUM_COMPROMISED} угрожених лозинки}}</translation> <translation id="1380028686461971526">Аутоматско повезивање на мрежу</translation> <translation id="1380436189840894976">Желите ли да ипак изађете из режима без архивирања?</translation> +<translation id="1383597849754832576">Преузимање фајлова говора није успело. Пробајте касније.</translation> <translation id="1383861834909034572">Отварање кад се доврши</translation> <translation id="1383876407941801731">Претражи</translation> <translation id="1386791642444521222">Активирајте физичку SIM картицу</translation> @@ -875,7 +876,6 @@ <translation id="1954813140452229842">Грешка при учитавању дељене датотеке. Проверите акредитиве и пробајте поново.</translation> <translation id="1956050014111002555">Датотека садржи више сертификата, од којих ниједан није увезен:</translation> <translation id="1956390763342388273">Овим ћете отпремити све датотеке из „<ph name="FOLDER_PATH" />“. Радите ово само ако је сајт поуздан.</translation> -<translation id="1960158217849594135">Желите да сачувате корисничко име на Google налогу?</translation> <translation id="196040970347962278">Прво се повежите на интернет</translation> <translation id="1962233722219655970">Ова страница користи Native Client апликацију која не функционише на вашем рачунару.</translation> <translation id="1963227389609234879">Уклони све</translation> @@ -901,6 +901,7 @@ <translation id="1984417487208496350">Без заштите (не препоручује се)</translation> <translation id="1987317783729300807">Налози</translation> <translation id="1989112275319619282">Прегледај</translation> +<translation id="1990046457226896323">Преузети су фајлови говора</translation> <translation id="1990512225220753005">Не приказујте пречице на овој страници</translation> <translation id="1992397118740194946">Није подешено</translation> <translation id="1992924914582925289">Уклони са уређаја</translation> @@ -1046,7 +1047,6 @@ <translation id="2157474325782140681">Да бисте користили додатне функције, користите Dell базну станицу компатибилну са овим Chromebook-ом.</translation> <translation id="215753907730220065">Изађи из режима целог екрана</translation> <translation id="2157875535253991059">Ова страница је сада у режиму целог екрана.</translation> -<translation id="2160589599612868242">Добијајте обавештења са телефона на уређају <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Додај WiFi...</translation> <translation id="2162155940152307086">Синхронизација ће почети када изађете из подешавања синхронизације</translation> <translation id="2162838847352058695">Онемогући сајтовима да аутоматски преузимају више фајлова</translation> @@ -1264,6 +1264,7 @@ <translation id="2399699884460174994">Обавештења су укључена</translation> <translation id="2399939490305346086">Подаци за пријављивање са безбедносног кључа</translation> <translation id="2400664245143453337">Треба одмах да ажурирате</translation> +<translation id="2406153734066939945">Желите ли да избришете овај профил и податке на њему?</translation> <translation id="2408018932941436077">Картица се чува</translation> <translation id="2408955596600435184">Унесите PIN</translation> <translation id="241082044617551207">Непозната додатна компонента</translation> @@ -1382,6 +1383,7 @@ <translation id="2526590354069164005">Радна површина</translation> <translation id="2526619973349913024">Провери да ли постоји ажурирање</translation> <translation id="2527167509808613699">Било која врста везе</translation> +<translation id="2530166226437958497">Решавање проблема</translation> <translation id="2532589005999780174">Режим високог контраста</translation> <translation id="253434972992662860">&Паузирај</translation> <translation id="2534460670861217804">Безбедан HTTP прокси</translation> @@ -1699,7 +1701,6 @@ <translation id="2885729872133513017">Дошло је до проблема при декодирању одговора сервера.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Отвори линк користећи...</translation> -<translation id="2889481634493693121">Укључите обавештења на телефону</translation> <translation id="2889925978073739256">Настави блокирање додатних компонената које су изван заштићеног окружења</translation> <translation id="2893168226686371498">Подразумевани прегледач</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 текстуална порука}one{# текстуална порука}few{# текстуалне поруке}other{# текстуалних порука}}</translation> @@ -2559,6 +2560,7 @@ <translation id="3857807444929313943">Подигните, па опет додирните</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: синхронизација је паузирана</translation> <translation id="3861638017150647085">Корисничко име <ph name="USERNAME" /> није доступно</translation> +<translation id="3861977424605124250">Прикажи при покретању</translation> <translation id="3862693525629180217">Потврди помоћу уграђеног сензора</translation> <translation id="3862788408946266506">Апликација са атрибутом манифеста „kiosk_only“ мора да се инсталира у режиму киоска у Chrome ОС-у</translation> <translation id="3865414814144988605">Резолуција</translation> @@ -2801,7 +2803,6 @@ <translation id="412730574613779332">Спандекс</translation> <translation id="4130199216115862831">Евиденција уређаја</translation> <translation id="4130207949184424187">Овај додатак је променио страницу која се приказује када претражујете из омнибокса.</translation> -<translation id="4130344535649650885">Желите да сачувате лозинку за Google налог?</translation> <translation id="4130750466177569591">Прихватам</translation> <translation id="413121957363593859">Компоненте</translation> <translation id="4131410914670010031">Црно-бело</translation> @@ -3200,6 +3201,7 @@ <translation id="4627442949885028695">Наставите на другом уређају</translation> <translation id="4628757576491864469">Уређаји</translation> <translation id="4628762811416793313">Подешавање Linux контејнера није довршено. Пробајте поново.</translation> +<translation id="4629521233550547305">Отвори профил <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Додатак захтева „<ph name="IMPORT_NAME" />“ чија је најстарија верзија „<ph name="IMPORT_VERSION" />“, али инсталирана је само верзија „<ph name="INSTALLED_VERSION" />“</translation> <translation id="4633757335284074492">Правите резервне копије на Google диску. Лако вратите податке или пређите на други уређај у било ком тренутку. Ова резервна копија укључује податке апликација. Резервне копије се отпремају на Google и шифрују лозинком за Google налог детета.</translation> <translation id="4634575639321169635">Подесите овај уређај за пословну или личну употребу</translation> @@ -3928,7 +3930,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Пријем (<ph name="ATTACHMENTS" />) са уређаја <ph name="DEVICE_NAME" /> није успео}one{Пријем (<ph name="ATTACHMENTS" />) са уређаја <ph name="DEVICE_NAME" /> није успео}few{Пријем <ph name="ATTACHMENTS" /> са уређаја <ph name="DEVICE_NAME" /> није успео}other{Пријем <ph name="ATTACHMENTS" /> са уређаја <ph name="DEVICE_NAME" /> није успео}}</translation> <translation id="5502500733115278303">Увезено из Firefox прегледача</translation> <translation id="5502915260472117187">Дете</translation> -<translation id="5503858713116291452">Уверите се да је телефон у близини, да је откључан и да су Bluetooth и WiFi укључени. Пратите кораке на рачунару да бисте довршили подешавање.</translation> <translation id="5503982651688210506">Наставите да дозвољавате сајту <ph name="HOST" /> да користи и помера камеру и користи микрофон</translation> <translation id="5505264765875738116">Сајтови не могу да траже да шаљу обавештења</translation> <translation id="5505307013568720083">Нема мастила</translation> @@ -3989,6 +3990,7 @@ <translation id="5565735124758917034">Активно</translation> <translation id="5567989639534621706">Кешеви апликација</translation> <translation id="5568069709869097550">Не могу да се пријавим</translation> +<translation id="5571832155627049070">Прилагодите профил</translation> <translation id="5572851009514199876">Отворите и пријавите се у Chrome да би Chrome могао да провери да ли имате дозволу за приступ овом сајту.</translation> <translation id="5575473780076478375">Додатак у режиму без архивирања: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Дошло је до проблема са захтевом за регистрацију за режим демонстрације.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Подешавања гласа за претварање текста у говор</translation> <translation id="7280877790564589615">Тражи се дозвола</translation> <translation id="7282992757463864530">Трака са информацијама</translation> +<translation id="7283555985781738399">Режим госта</translation> <translation id="7284411326658527427">Свака особа може да персонализује налог и чува приватност података.</translation> <translation id="7287143125007575591">Приступ је одбијен.</translation> <translation id="7287411021188441799">Врати подразумевану позадину</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">URL адреса за смернице ауторитета за издавање Netscape сертификата</translation> <translation id="7717014941119698257">Преузимање: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Сајтови могу да траже да користе вашу локацију (препоручује се)</translation> +<translation id="771721654176725387">То ће трајно избрисати податке прегледања са овог уређаја. Да бисте вратили податке, укључите синхронизацију као</translation> <translation id="7717845620320228976">Тражење ажурирања</translation> <translation id="7719367874908701697">Зумирање странице</translation> <translation id="7719588063158526969">Назив уређаја је предугачак</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Премести</translation> <translation id="7765507180157272835">Потребни су Bluetooth и WiFi</translation> <translation id="7766082757934713382">Паузира аутоматска ажурирања апликација и система и тако доприноси смањивању потрошње података на мрежи</translation> +<translation id="7766807826975222231">Крени у обилазак</translation> <translation id="7766838926148951335">Прихвати дозволе</translation> <translation id="7768507955883790804">Сајтови аутоматски прате ово подешавање када их посетите</translation> <translation id="7768770796815395237">Промените</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">Дељени Linux директоријуми</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Пречица је измењена</translation> +<translation id="8018298733481692628">Желите ли да избришете овај профил?</translation> <translation id="8018313076035239964">Контролишу које информације веб-сајтови могу да користе и који садржај могу да вам приказују</translation> <translation id="8023801379949507775">Ажурирај додатке</translation> <translation id="8026334261755873520">Обришите податке прегледања</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">Неважећи PUK. Преосталих покушаја: <ph name="RETRIES" />.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Преузимање је у току}one{Преузимања су у току}few{Преузимања су у току}other{Преузимања су у току}}</translation> <translation id="8213449224684199188">Активиран је режим слика</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> жели да идентификује уређај да би могао да пушта најквалитетнији заштићени видео и аудио садржај.</translation> <translation id="8214489666383623925">Отвори датотеку...</translation> <translation id="8214962590150211830">Уклони ову особу</translation> <translation id="8216351761227087153">Гледај</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Потврдите враћање</translation> <translation id="8774934320277480003">Горња маргина</translation> <translation id="8775144690796719618">Неважећи URL</translation> -<translation id="8775163630211761057">Пренесите најбоље са Android телефона на <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> ће се аутоматски закључати за # секунду. <ph name="DOMAIN" /> захтева да паметна картица остане уметнута.}one{<ph name="DEVICE_TYPE" /> ће се аутоматски закључати за # секунду. <ph name="DOMAIN" /> захтева да паметна картица остане уметнута.}few{<ph name="DEVICE_TYPE" /> ће се аутоматски закључати за # секунде. @@ -6958,6 +6962,7 @@ <translation id="8973596347849323817">Можете да прилагодите овај уређај према потребама. Те функције приступачности можете касније да промените у Подешавањима.</translation> <translation id="897414447285476047">Одредишна датотека је непотпуна због проблема са везом.</translation> <translation id="897525204902889653">Услуга карантина</translation> +<translation id="8975396729541388937">Опозовите пријаву у било ком тренутку тако што ћете кликнути на линк у имејловима које добијате.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{„<ph name="TAB_TITLE" />“}=1{„<ph name="TAB_TITLE" />“ и још 1 картица}one{„<ph name="TAB_TITLE" />“ и још # картица}few{„<ph name="TAB_TITLE" />“ и још # картице}other{„<ph name="TAB_TITLE" />“ и још # картица}}</translation> <translation id="8977811652087512276">Нетачна лозинка или оштећена датотека</translation> <translation id="8978154919215542464">Укључено – синхронизуј све</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index b3fd21f..1db2c3fd0 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Inga utsatta lösenord}=1{1 utsatt lösenord}other{{NUM_COMPROMISED} utsatta lösenord}}</translation> <translation id="1380028686461971526">Anslut till ett nätverk automatiskt</translation> <translation id="1380436189840894976">Vill du avsluta inkognitoläget ändå?</translation> +<translation id="1383597849754832576">Det gick inte att ladda ned röstfilerna. Försök igen senare.</translation> <translation id="1383861834909034572">Öppna när klar</translation> <translation id="1383876407941801731">Sök</translation> <translation id="1386791642444521222">Aktivera fysiskt SIM-kort</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Det gick inte att montera den delade resursen. Kontrollera användaruppgifterna och försök igen.</translation> <translation id="1956050014111002555">Filen innehöll flera certifikat men inga certifikat importerades:</translation> <translation id="1956390763342388273">Alla filer från <ph name="FOLDER_PATH" /> laddas upp. Gör bara detta om du litar på webbplatsen.</translation> -<translation id="1960158217849594135">Vill du spara användarnamnet i Google-kontot?</translation> <translation id="196040970347962278">Anslut till internet först</translation> <translation id="1962233722219655970">Denna sida använder en Native Client-app som inte fungerar på din dator.</translation> <translation id="1963227389609234879">Ta bort alla</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Inget skydd (rekommenderas inte)</translation> <translation id="1987317783729300807">Konton</translation> <translation id="1989112275319619282">Bläddra</translation> +<translation id="1990046457226896323">Röstfilerna har laddats ned</translation> <translation id="1990512225220753005">Visa inte genvägar på den här sidan</translation> <translation id="1992397118740194946">Inte angett</translation> <translation id="1992924914582925289">Ta bort från enheten</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Använd en dockningsstation som är gjord för att användas med denna Chromebook om du vill ha tillgång till ytterligare funktioner.</translation> <translation id="215753907730220065">Avsluta helskärmsläge</translation> <translation id="2157875535253991059">Denna sida visas nu i helskärm.</translation> -<translation id="2160589599612868242">Få aviseringar från telefonen på din <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Lägg till Wi-Fi ...</translation> <translation id="2162155940152307086">Synkroniseringen startar när du lämnar synkroniseringsinställningarna</translation> <translation id="2162838847352058695">Förhindra att webbplatser laddar ned flera filer automatiskt</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Aviseringar har aktiverats</translation> <translation id="2399939490305346086">Säkerhetsnyckelns inloggningsdata</translation> <translation id="2400664245143453337">Omedelbar uppdatering krävs</translation> +<translation id="2406153734066939945">Vill du radera den här profilen och tillhörande data?</translation> <translation id="2408018932941436077">Kortet sparas</translation> <translation id="2408955596600435184">Ange din pinkod</translation> <translation id="241082044617551207">Okänt pluginprogram</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Skrivbord</translation> <translation id="2526619973349913024">Sök efter uppdatering</translation> <translation id="2527167509808613699">Ospecificerad anslutning</translation> +<translation id="2530166226437958497">Felsökning</translation> <translation id="2532589005999780174">Högkontrastläge</translation> <translation id="253434972992662860">&Paus</translation> <translation id="2534460670861217804">Säker HTTP-proxy</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Ett problem uppstod när serversvaret skulle avkodas.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Öppna länk med ...</translation> -<translation id="2889481634493693121">Aktivera aviseringar på telefonen</translation> <translation id="2889925978073739256">Fortsätt att blockera pluginprogram utanför sandlåda</translation> <translation id="2893168226686371498">Standardwebbläsare</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 text}other{# texter}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Lyft och tryck sedan igen</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Synkroniseringen har pausats</translation> <translation id="3861638017150647085">Användarnamnet <ph name="USERNAME" /> är inte tillgängligt</translation> +<translation id="3861977424605124250">Visa vid start</translation> <translation id="3862693525629180217">Verifiera via inbyggd sensor</translation> <translation id="3862788408946266506">En app med manifestattributet kiosk_only måste installeras i kioskläget i Chrome OS</translation> <translation id="3865414814144988605">Upplösning</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Superhjälte</translation> <translation id="4130199216115862831">Enhetslogg</translation> <translation id="4130207949184424187">Det här tillägget har ändrat vilken sida som visas när du söker i adressfältet.</translation> -<translation id="4130344535649650885">Vill du spara lösenordet i Google-kontot?</translation> <translation id="4130750466177569591">Jag godkänner</translation> <translation id="413121957363593859">Komponenter</translation> <translation id="4131410914670010031">Svartvitt</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Fortsätta på en annan enhet</translation> <translation id="4628757576491864469">Enheter</translation> <translation id="4628762811416793313">Det gick inte att slutföra konfigureringen av Linux-behållaren. Försök igen.</translation> +<translation id="4629521233550547305">Öppna profilen <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Tillägget kräver <ph name="IMPORT_NAME" /> med minst version <ph name="IMPORT_VERSION" />, men endast version <ph name="INSTALLED_VERSION" /> är installerad</translation> <translation id="4633757335284074492">Säkerhetskopiera på Google Drive. Återställ data eller byt enkelt enhet när du vill. Säkerhetskopian innehåller appdata. Säkerhetskopiorna krypteras med hjälp av lösenordet till barnets Google-konto och laddas upp på Google.</translation> <translation id="4634575639321169635">Konfigurera enheten för användning i jobbet eller privat</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Mottagningen av <ph name="ATTACHMENTS" /> från <ph name="DEVICE_NAME" /> misslyckades}other{Mottagningen av <ph name="ATTACHMENTS" /> från <ph name="DEVICE_NAME" /> misslyckades}}</translation> <translation id="5502500733115278303">Importerat från Firefox</translation> <translation id="5502915260472117187">Ett barn</translation> -<translation id="5503858713116291452">Kontrollera att telefonen finns i närheten, att den är olåst och att Bluetooth och Wi-Fi är aktiverat på den. Följ stegen på telefonen för att slutföra konfigurationen.</translation> <translation id="5503982651688210506">Tillåt <ph name="HOST" /> att använda och röra din kamera och använda mikrofonen även i fortsättningen</translation> <translation id="5505264765875738116">Webbplatser får inte be om tillåtelse att skicka aviseringar</translation> <translation id="5505307013568720083">Slut på bläck</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Aktiv</translation> <translation id="5567989639534621706">Programmets cacheminnen</translation> <translation id="5568069709869097550">Kan inte logga in</translation> +<translation id="5571832155627049070">Anpassa din profil</translation> <translation id="5572851009514199876">Logga in på Chrome så att Chrome kan kontrollera om du har tillgång till den här webbplatsen.</translation> <translation id="5575473780076478375">Inkognitotilläggsprogram: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Ett problem uppstod med registreringsbegäran.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Röstinställningar för text till tal</translation> <translation id="7280877790564589615">Tillstånd begärt</translation> <translation id="7282992757463864530">Informationsfält</translation> +<translation id="7283555985781738399">Gästläge</translation> <translation id="7284411326658527427">Var och en kan anpassa sitt konto och hålla sin data privat.</translation> <translation id="7287143125007575591">Åtkomst nekad.</translation> <translation id="7287411021188441799">Återställ standardbakgrund</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">Webbadress till Netscapes princip för certifikatutfärdare</translation> <translation id="7717014941119698257">Nedladdning: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Webbplatser får fråga efter din plats (rekommenderas)</translation> +<translation id="771721654176725387">All webbinformation raderas permanent från den här enheten. Om du vill återställa informationen aktiverar du synkronisering som</translation> <translation id="7717845620320228976">Sök efter uppdateringar</translation> <translation id="7719367874908701697">Sidzoom</translation> <translation id="7719588063158526969">Enhetsnamnet är för långt</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Flytta</translation> <translation id="7765507180157272835">Bluetooth och Wi-Fi krävs</translation> <translation id="7766082757934713382">Du kan minska användningen av nätverksdata genom att pausa automatiska app- och systemuppdateringar</translation> +<translation id="7766807826975222231">Ta en rundtur</translation> <translation id="7766838926148951335">Godkänn behörigheterna</translation> <translation id="7768507955883790804">Webbplatser som du besöker följer automatiskt den här inställningen</translation> <translation id="7768770796815395237">Ändra</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">Delade kataloger i Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Genvägen har ändrats</translation> +<translation id="8018298733481692628">Vill du radera den här profilen?</translation> <translation id="8018313076035239964">Styr vilken information som webbplatser kan ta del av och vilket innehåll de kan visa</translation> <translation id="8023801379949507775">Uppdatera tillägg nu</translation> <translation id="8026334261755873520">Rensa webbinformation</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">Ogiltig PUK-kod. Du har <ph name="RETRIES" /> försök kvar.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Nedladdning pågår}other{Nedladdningar pågår}}</translation> <translation id="8213449224684199188">Fotoläget har aktiverats</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> vill identifiera din enhet så skyddade video- och ljud-filer kan spelas upp i högsta kvalitet.</translation> <translation id="8214489666383623925">Öppna fil...</translation> <translation id="8214962590150211830">Ta bort personen</translation> <translation id="8216351761227087153">Titta</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Bekräfta återställning</translation> <translation id="8774934320277480003">Övre marginal</translation> <translation id="8775144690796719618">Ogiltig webbadress</translation> -<translation id="8775163630211761057">Ta med det bästa i Android-telefonen till din <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{Din <ph name="DEVICE_TYPE" /> kommer att låsas automatiskt om # sekund. <ph name="DOMAIN" /> kräver att du har smartkortet isatt.}other{Din <ph name="DEVICE_TYPE" /> kommer att låsas automatiskt om # sekunder. <ph name="DOMAIN" /> kräver att du har smartkortet isatt.}}</translation> @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">Du kan anpassa enheten efter dina behov. Tillgänglighetsfunktionerna kan ändras senare under Inställningar.</translation> <translation id="897414447285476047">Hela målfilen laddades inte ned på grund av ett anslutningsfel.</translation> <translation id="897525204902889653">Karantäntjänst</translation> +<translation id="8975396729541388937">Du kan när som helst avsluta prenumerationen genom att klicka på länken i e-postmeddelandena du får.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{<ph name="TAB_TITLE" />}=1{<ph name="TAB_TITLE" /> och 1 flik till}other{<ph name="TAB_TITLE" /> och # flikar till}}</translation> <translation id="8977811652087512276">Felaktigt lösenord eller skadad fil</translation> <translation id="8978154919215542464">På – synkronisera allt</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index a42889c79..a800aa3 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Hakuna manenosiri yaliyoathiriwa}=1{Nenosiri moja limeathiriwa}other{Manenosiri {NUM_COMPROMISED} yameathiriwa}}</translation> <translation id="1380028686461971526">Unganisha kwenye mtandao kiotomatiki</translation> <translation id="1380436189840894976">Ungependa kufunga hali fiche?</translation> +<translation id="1383597849754832576">Imeshindwa kupakua faili za matamshi. Jaribu tena baadaye.</translation> <translation id="1383861834909034572">Itafunguliwa baada ya kukamilika</translation> <translation id="1383876407941801731">Tafuta</translation> <translation id="1386791642444521222">Weka SIM halisi</translation> @@ -873,7 +874,6 @@ <translation id="1954813140452229842">Hitilafu imetokea wakati wa kupachika faili ya kushiriki. Tafadhali angalia kitambulisho chako kisha ujaribu tena.</translation> <translation id="1956050014111002555">Faili ilikuwa na vyeti anuwai, ambavyo hamna kile kilicholetwa:</translation> <translation id="1956390763342388273">Hatua hii itapakia faili zote kutoka "<ph name="FOLDER_PATH" />". Tekeleza tu hatua hii ikiwa unaamini tovuti.</translation> -<translation id="1960158217849594135">Ungependa kuhifadhi jina la mtumiaji kwenye Akaunti yako ya Google?</translation> <translation id="196040970347962278">Unganisha kwenye intaneti kwanza</translation> <translation id="1962233722219655970">Ukurasa huu unatumia programu ya Mteja Halisi isiyofanya kazi kwenye kompyuta yako.</translation> <translation id="1963227389609234879">Ondoa Yote</translation> @@ -899,6 +899,7 @@ <translation id="1984417487208496350">Hamna ulinzi (haipendekezwi)</translation> <translation id="1987317783729300807">Akaunti</translation> <translation id="1989112275319619282">Vinjari</translation> +<translation id="1990046457226896323">Faili za matamshi zimepakuliwa</translation> <translation id="1990512225220753005">Usionyeshe njia za mkato kwenye ukurasa huu</translation> <translation id="1992397118740194946">Haijawekwa</translation> <translation id="1992924914582925289">Ondoa kwenye kifaa</translation> @@ -1044,7 +1045,6 @@ <translation id="2157474325782140681">Ili upate vipengele vya ziada, tumia kituo cha Dell cha kuambatisha kinachoweza kutumiwa na Chromebook hii.</translation> <translation id="215753907730220065">Ondoka kwenye Skrini Kamili</translation> <translation id="2157875535253991059">Ukurasa huu sasa umejaa.</translation> -<translation id="2160589599612868242">Pokea arifa za simu yako kupitia kwenye <ph name="DEVICE_TYPE" /> yako</translation> <translation id="216169395504480358">Ongeza Wi-Fi...</translation> <translation id="2162155940152307086">Itaanza kusawazisha utakapofunga mipangilio ya usawazishaji</translation> <translation id="2162838847352058695">Zuia tovuti zisipakue faili nyingi kiotomatiki</translation> @@ -1262,6 +1262,7 @@ <translation id="2399699884460174994">Arifa zimewashwa</translation> <translation id="2399939490305346086">Data ya kuingia katika akaunti ya ufunguo wa usalama</translation> <translation id="2400664245143453337">Unatakiwa kusasisha mara moja</translation> +<translation id="2406153734066939945">Ungependa kufuta wasifu huu na data iliyomo?</translation> <translation id="2408018932941436077">Inahifadhi kadi</translation> <translation id="2408955596600435184">Weka PIN yako</translation> <translation id="241082044617551207">Programu jalizi haijulikani</translation> @@ -1380,6 +1381,7 @@ <translation id="2526590354069164005">Eneo-kazi</translation> <translation id="2526619973349913024">Kagua Usasishaji</translation> <translation id="2527167509808613699">Aina yoyote ya muunganisho.</translation> +<translation id="2530166226437958497">Utatuzi</translation> <translation id="2532589005999780174">Hali ya juu ya utofautishaji</translation> <translation id="253434972992662860">&Pumzisha</translation> <translation id="2534460670861217804">Linda Seva Mbadala ya HTTP</translation> @@ -1697,7 +1699,6 @@ <translation id="2885729872133513017">Tatizo limetokea wakati wa kusimbua majibu ya seva.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Fungua kiungo kwa...</translation> -<translation id="2889481634493693121">Washa arifa kwenye simu yako</translation> <translation id="2889925978073739256">Endelea kuzuia programu jalizi zisizo kwenye sandbox</translation> <translation id="2893168226686371498">Kivinjari chaguomsingi</translation> <translation id="2893917546370257247">{COUNT,plural, =1{ujumbe mmoja}other{ujumbe #}}</translation> @@ -2557,6 +2558,7 @@ <translation id="3857807444929313943">Inua, kisha uguse tena</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Umesitisha usawazishaji</translation> <translation id="3861638017150647085">Jina la mtumiaji "<ph name="USERNAME" />" halipatikani</translation> +<translation id="3861977424605124250">Onyesha kifaa kinapowashwa</translation> <translation id="3862693525629180217">Thibitisha kupitia kitambuzi kilichojumuishwa</translation> <translation id="3862788408946266506">Ni lazima programu iliyo na sifa ya faili ya maelezo ya 'kiosk_only' isakinishwe katika skrini nzima ya Mfumo wa Uendeshaji wa Chrome</translation> <translation id="3865414814144988605">Ubora</translation> @@ -2797,7 +2799,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Kumbukumbu ya Kifaa</translation> <translation id="4130207949184424187">Kiendelezi hiki kimebadilisha ukurasa unaoonyeshwa unapotafuta kutoka Sanduku Kuu.</translation> -<translation id="4130344535649650885">Ungependa kuhifadhi nenosiri kwenye Akaunti yako ya Google?</translation> <translation id="4130750466177569591">Ninakubali</translation> <translation id="413121957363593859">Vipengele</translation> <translation id="4131410914670010031">Nyeusi na nyeupe</translation> @@ -3196,6 +3197,7 @@ <translation id="4627442949885028695">Endelea kutoka kwenye kifaa kingine</translation> <translation id="4628757576491864469">Vifaa</translation> <translation id="4628762811416793313">Imeshindwa kukamilisha kuweka mipangilio ya metadata ya Linux. Tafadhali jaribu tena.</translation> +<translation id="4629521233550547305">Fungua wasifu wa <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Kiendelezi kinahitaji "<ph name="IMPORT_NAME" />" yenye toleo la chini zaidi la "<ph name="IMPORT_VERSION" />", lakini toleo la "<ph name="INSTALLED_VERSION" />" ndilo limesakinishwa pekee.</translation> <translation id="4633757335284074492">Hifadhi nakala kwenye Hifadhi ya Google. Rejesha data kwa urahisi au ubadilishe kifaa wakati wowote. Nakala inajumuisha data ya programu. Nakala hupakiwa kwenye Google na kusimbwa kwa njia fiche kwa kutumia nenosiri la Akaunti ya Google ya mtoto wako.</translation> <translation id="4634575639321169635">Weka mipangilio ya matumizi ya kazini au binafsi kwenye kifaa hiki</translation> @@ -3924,7 +3926,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Imeshindwa kupokea <ph name="ATTACHMENTS" /> kutoka kwenye <ph name="DEVICE_NAME" />}other{Imeshindwa kupokea <ph name="ATTACHMENTS" /> kutoka kwenye <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Zilizoingizwa Kutoka Firefox</translation> <translation id="5502915260472117187">Mtoto</translation> -<translation id="5503858713116291452">Hakikisha kwamba simu yako iko karibu, umeifungua na umewasha Bluetooth na Wi-Fi. Fuata hatua kwenye simu yako ili ukamilishe kuweka mipangilio.</translation> <translation id="5503982651688210506">Endelea kuruhusu <ph name="HOST" /> itumie na isogeze kamera na itumie maikrofoni yako</translation> <translation id="5505264765875738116">Tovuti haziwezi kukuuliza kutuma arifa</translation> <translation id="5505307013568720083">Wino umeisha</translation> @@ -3985,6 +3986,7 @@ <translation id="5565735124758917034">Inatumika</translation> <translation id="5567989639534621706">Akiba za programu</translation> <translation id="5568069709869097550">Siwezi kuingia</translation> +<translation id="5571832155627049070">Weka mapendeleo kwenye wasifu wako</translation> <translation id="5572851009514199876">Tafadhali anza na uingie katika Chrome ili Chrome iangalie ikiwa unaruhusiwa kufikia tovuti hii.</translation> <translation id="5575473780076478375">Kiendelezi kilicho katika hali fiche: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Hitilafu imetokea kwenye onyesho la ombi la usajili.</translation> @@ -5454,6 +5456,7 @@ <translation id="7280649757394340890">Mipangilio ya sauti ya Ubadilishaji wa Maandishi kwenda Usemi</translation> <translation id="7280877790564589615">Ruhusa imeombwa</translation> <translation id="7282992757463864530">Upau wa maelezo</translation> +<translation id="7283555985781738399">Matumizi ya wageni</translation> <translation id="7284411326658527427">Kila mtu anaweza kuweka mapendeleo kwenye akaunti yake na kuweka data yake iwe ya faragha.</translation> <translation id="7287143125007575591">Umenyimwa idhini ya kufikia.</translation> <translation id="7287411021188441799">Rejesha mandhari chaguomsingi</translation> @@ -5833,6 +5836,7 @@ <translation id="7716781361494605745">URL ya Sera ya Idhini ya Cheti cha Netscape</translation> <translation id="7717014941119698257">Inapakua: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Tovuti zinaweza kuomba maelezo ya mahali ulipo (inapendekezwa)</translation> +<translation id="771721654176725387">Hatua hii itafuta kabisa data yako ya kuvinjari kwenye kifaa hiki. Ili urejeshe data hii, washa kipengele cha kusawazisha kama</translation> <translation id="7717845620320228976">Angalia masasisho</translation> <translation id="7719367874908701697">Kuza ukurasa</translation> <translation id="7719588063158526969">Jina la kifaa ni ndefu mno</translation> @@ -5869,6 +5873,7 @@ <translation id="7765158879357617694">Sogeza</translation> <translation id="7765507180157272835">Bluetooth na Wi-Fi zinahitajika</translation> <translation id="7766082757934713382">Husaidia kupunguza matumizi ya data ya muunganisho kwa kusimamisha masasisho ya mfumo na programu za kiotomatiki</translation> +<translation id="7766807826975222231">Kagua</translation> <translation id="7766838926148951335">Kubali ruhusa</translation> <translation id="7768507955883790804">Tovuti hufuata mipangilio hii kiotomatiki unapozitembelea</translation> <translation id="7768770796815395237">Badilisha</translation> @@ -6115,6 +6120,7 @@ <translation id="8017176852978888182">Saraka za Linux zinazoshirikiwa</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Umebadilisha njia ya mkato</translation> +<translation id="8018298733481692628">Ungependa kufuta wasifu huu?</translation> <translation id="8018313076035239964">Dhibiti maelezo ambayo tovuti zinaweza kutumia na maudhui ambayo zinaweza kukuonyesha</translation> <translation id="8023801379949507775">Sasisha viendelezi sasa</translation> <translation id="8026334261755873520">Futa data ya kuvinjari</translation> @@ -6285,7 +6291,6 @@ <translation id="8211551284753798479">PUK si sahihi. Umebakisha majaribio <ph name="RETRIES" />.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Inaendelea kupakua}other{Inaendelea kupakua}}</translation> <translation id="8213449224684199188">Umeweka hali ya picha</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> inataka kutambua kifaa chako ili iweze kucheza video na sauti zinazolindwa za ubora wa juu kabisa.</translation> <translation id="8214489666383623925">Fungua Faili...</translation> <translation id="8214962590150211830">Ondoa Mtumiaji Huyu</translation> <translation id="8216351761227087153">Tazama</translation> @@ -6764,7 +6769,6 @@ <translation id="8774379074441005279">Thibitisha Hatua ya Kurejesha</translation> <translation id="8774934320277480003">Pambizo la juu</translation> <translation id="8775144690796719618">URL si sahihi</translation> -<translation id="8775163630211761057">Fikia yaliyo kwenye simu yako ya Android kupitia <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> yako itafungwa kiotomatiki baada ya sekunde #. <ph name="DOMAIN" /> inahitaji usiondoe kadi yako mahiri.}other{<ph name="DEVICE_TYPE" /> yako itafungwa kiotomatiki baada ya sekunde #. <ph name="DOMAIN" /> inahitaji usiondoe kadi yako mahiri.}}</translation> @@ -6953,6 +6957,7 @@ <translation id="8973596347849323817">Unaweza kubadilisha mipangilio ya kifaa hiki kulingana na mahitaji yako. Vipengele hivi vya zana za walio na matatizo ya kuona au kusikia vinaweza kubadilishwa baadaye kwenye Mipangilio.</translation> <translation id="897414447285476047">Faili inayotumwa haikukamilika kutokana na hitilafu ya muunganisho.</translation> <translation id="897525204902889653">Huduma za Eneo la Ukaguzi Lililotengwa</translation> +<translation id="8975396729541388937">Unaweza kujiondoa wakati wowote kwa kubofya kiungo katika barua pepe unazopokea.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" na kichupo kingine 1}other{"<ph name="TAB_TITLE" />" na vichupo vingine #}}</translation> <translation id="8977811652087512276">Nenosiri si sahihi au faili imeharibika</translation> <translation id="8978154919215542464">Imewashwa - sawazisha kila kitu</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index 056f32a..579797e7 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{களவாடப்பட்ட கடவுச்சொற்கள் எதுவுமில்லை}=1{1 களவாடப்பட்ட கடவுச்சொல்}other{{NUM_COMPROMISED} களவாடப்பட்ட கடவுச்சொற்கள்}}</translation> <translation id="1380028686461971526">நெட்வொர்க்குடன் தானாக இணை</translation> <translation id="1380436189840894976">எனினும் மறைநிலைப் பயன்முறையை மூடவா?</translation> +<translation id="1383597849754832576">உடனடி வசனத்தின் கோப்புகளைப் பதிவிறக்க முடியவில்லை. பிறகு முயலவும்.</translation> <translation id="1383861834909034572">முடித்ததும் திறக்கிறது</translation> <translation id="1383876407941801731">Search</translation> <translation id="1386791642444521222">SIMமை இயக்குதல்</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">பகிர்வை ஏற்றுவதில் பிழை. உங்கள் அனுமதிச் சான்றுகளைச் சரிபார்த்து, மீண்டும் முயலவும்.</translation> <translation id="1956050014111002555">இந்தக் கோப்பில் பல சான்றிதழ்கள் உள்ளன, அவற்றில் எதுவும் இறக்குமதி செய்யப்படவில்லை:</translation> <translation id="1956390763342388273">இதைச் செய்தால், "<ph name="FOLDER_PATH" />" இல் உள்ள அனைத்துக் கோப்புகளும் பதிவேற்றப்படும். தளத்தை நம்பினால் மட்டுமே இதைச் செய்யவும்.</translation> -<translation id="1960158217849594135">பயனர்பெயரை Google கணக்கில் சேமிக்கவா?</translation> <translation id="196040970347962278">முதலில் இணையத்துடன் இணைக்கவும்</translation> <translation id="1962233722219655970">உங்கள் கம்ப்யூட்டரில் இயங்காத நேட்டிவ் கிளையண்ட் ஆப்ஸை இந்தப் பக்கம் பயன்படுத்துகிறது.</translation> <translation id="1963227389609234879">அனைத்தையும் அகற்று</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">பாதுகாப்பற்ற பயன்முறை (பரிந்துரைக்கப்படவில்லை)</translation> <translation id="1987317783729300807">கணக்குகள்</translation> <translation id="1989112275319619282">உலாவு</translation> +<translation id="1990046457226896323">உடனடி வசனத்தின் கோப்புகள் பதிவிறக்கப்பட்டன</translation> <translation id="1990512225220753005">இந்தப் பக்கத்தில் ஷார்ட்கட்களைக் காண்பிக்க வேண்டாம்</translation> <translation id="1992397118740194946">அமைக்கப்படவில்லை</translation> <translation id="1992924914582925289">சாதனத்திலிருந்து அகற்று</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">கூடுதல் அம்சங்களைப் பெற இந்த Chromebookகுடன் இணங்குமாறு வடிவமைக்கப்பட்ட Dell டாக்கிங் ஸ்டேஷனைப் பயன்படுத்தவும்.</translation> <translation id="215753907730220065">முழுத்திரையிலிருந்து வெளியேறு</translation> <translation id="2157875535253991059">இந்தப் பக்கம் இப்போது முழுத் திரையில்.</translation> -<translation id="2160589599612868242">உங்கள் மொபைலுக்கு வரும் அறிவிப்புகளை <ph name="DEVICE_TYPE" /> இல் பெறலாம்</translation> <translation id="216169395504480358">வைஃபை ஐச் சேர்...</translation> <translation id="2162155940152307086">நீங்கள் ஒத்திசைவு அமைப்புகளை விட்டு வெளியேறியவுடன் ஒத்திசைவு தொடங்கும்</translation> <translation id="2162838847352058695">பல கோப்புகளைத் தளங்கள் தானாகவே பதிவிறக்குவதைத் தடு</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">அறிவிப்புகள் இயக்கப்பட்டுள்ளன</translation> <translation id="2399939490305346086">பாதுகாப்பு விசைக்கான உள்நுழைவுத் தகவல்கள்</translation> <translation id="2400664245143453337">உடனடியாகப் புதுப்பிக்கப்பட வேண்டும்</translation> +<translation id="2406153734066939945">இந்தச் சுயவிவரத்தையும் இதன் தரவையும் நீக்கவா?</translation> <translation id="2408018932941436077">கார்டு விவரங்களைச் சேமிக்கிறது</translation> <translation id="2408955596600435184">பின்னை உள்ளிடவும்</translation> <translation id="241082044617551207">அறியப்படாத செருகுநிரல்</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">டெஸ்க்டாப்</translation> <translation id="2526619973349913024">புதுப்பிப்புக்காக சோதி</translation> <translation id="2527167509808613699">எந்த வகையான இணைப்பும்</translation> +<translation id="2530166226437958497">பிழையறிந்து திருத்துதல்</translation> <translation id="2532589005999780174">அதிக ஒளி மாறுபாட்டுப் பயன்முறை</translation> <translation id="253434972992662860">&இடைநிறுத்து</translation> <translation id="2534460670861217804">பாதுகாப்பான HTTP ப்ராக்ஸி</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">சேவையகத்தின் பதிலை டிகோட் செய்யும்போது சிக்கல் ஏற்பட்டது.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">இதைக் கொண்டு இணைப்பைத் திற...</translation> -<translation id="2889481634493693121">உங்கள் மொபைலில் அறிவிப்புகளை இயக்கவும்</translation> <translation id="2889925978073739256">சாண்ட்பாக்ஸ் செய்யப்படாத செருகுநிரல்களைத் தொடர்ந்து தடு</translation> <translation id="2893168226686371498">இயல்புநிலை உலாவி</translation> <translation id="2893917546370257247">{COUNT,plural, =1{ஒரு உரையை}other{# உரைகளை}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">விரலை எடுத்துவிட்டு மீண்டும் தொடவும்</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: ஒத்திசைவு இடைநிறுத்தப்பட்டுள்ளது</translation> <translation id="3861638017150647085">"<ph name="USERNAME" />" என்ற பயனர்பெயரைப் பயன்படுத்த முடியாது</translation> +<translation id="3861977424605124250">தொடங்கும்போது காட்டு</translation> <translation id="3862693525629180217">உள்ளமைந்த சென்சார் வழியாகச் சரிபார்</translation> <translation id="3862788408946266506">'kiosk_only' மெனிஃபெஸ்ட் பண்புக்கூறைக் கொண்ட ஆப்ஸை Chrome OS கியோஸ்க் பயன்முறையிலேயே நிறுவ வேண்டும்</translation> <translation id="3865414814144988605">தெளிவு</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">ஸ்பான்டெக்ஸ்</translation> <translation id="4130199216115862831">சாதனப் பதிவு</translation> <translation id="4130207949184424187">ஆம்னிபாக்ஸிலிருந்து தேடும்போது காண்பிக்கப்படும் பக்கத்தை இந்த நீட்டிப்பு மாற்றியுள்ளது.</translation> -<translation id="4130344535649650885">கடவுச்சொல்லை Google கணக்கில் சேமிக்கவா?</translation> <translation id="4130750466177569591">நான் ஏற்கிறேன்</translation> <translation id="413121957363593859">கூறுகள்</translation> <translation id="4131410914670010031">கருப்பு வெள்ளை</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">மற்றொரு சாதனத்திலிருந்து பார்த்தவை</translation> <translation id="4628757576491864469">சாதனங்கள்</translation> <translation id="4628762811416793313">Linux கண்டெய்னர் அமைவு முடியவில்லை. மீண்டும் முயலவும்.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> சுயவிவரத்தைத் திற</translation> <translation id="4633003931260532286">நீட்டிப்பிற்கு குறைந்தபட்சம் "<ph name="IMPORT_VERSION" />" பதிப்புடன் கூடிய "<ph name="IMPORT_NAME" />" தேவை, ஆனால் "<ph name="INSTALLED_VERSION" />" பதிப்பு மட்டும் நிறுவப்பட்டுள்ளது</translation> <translation id="4633757335284074492">Google Driveவிற்குக் காப்புப் பிரதி எடுக்கவும். எப்போது வேண்டுமானாலும் தரவை எளிதாக மீட்டெடுக்கலாம் அல்லது சாதனத்தை மாற்றலாம். ஆப்ஸ் தரவும் இந்தக் காப்புப் பிரதியில் அடங்கும். காப்புப்பிரதிகள் Googleளுக்குப் பதிவேற்றப்பட்டு பிள்ளையின் Google கணக்கின் கடவுச்சொல்லைப் பயன்படுத்தி என்க்ரிப்ஷன் செய்யப்படுகின்றன.</translation> <translation id="4634575639321169635">பணிக்காகவோ தனிப்பட்ட உபயோகத்திற்காகவோ இந்தச் சாதனத்தை அமைக்கலாம்</translation> @@ -3929,7 +3931,6 @@ <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="5503858713116291452">உங்கள் மொபைல் அன்லாக் செய்யப்பட்டு அருகில் இருப்பதையும் அதில் புளூடூத், வைஃபை ஆகியவை இயக்கப்பட்டிருப்பதையும் உறுதிப்படுத்திக் கொள்ளவும். அமைவை நிறைவு செய்ய மொபைலில் காட்டப்படும் வழிமுறைகளைப் பின்பற்றவும்.</translation> <translation id="5503982651688210506">கேமராவைப் பயன்படுத்தவும் நகர்த்தவும் உங்கள் மைக்ரோஃபோனைப் பயன்படுத்தவும் <ph name="HOST" /> ஐத் தொடர்ந்து அனுமதி</translation> <translation id="5505264765875738116">அறிவிப்புகளை அனுப்புவதற்கான அனுமதியைத் தளங்களால் கோர இயலாது</translation> <translation id="5505307013568720083">மை தீர்ந்துவிட்டது</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">செயலில் உள்ளது</translation> <translation id="5567989639534621706">ஆப்ஸ் தற்காலிக சேமிப்புகள்</translation> <translation id="5568069709869097550">உள்நுழைய முடியவில்லை</translation> +<translation id="5571832155627049070">உங்கள் சுயவிவரத்தைப் பிரத்தியேகமாக்குங்கள்</translation> <translation id="5572851009514199876">Chromeமைத் தொடங்கி உள்நுழையவும். அப்போதுதான் இந்தத் தளத்தை அணுகுவதற்கு உங்களுக்கு அனுமதி உள்ளதா என்பதை Chrome சரிபார்க்க முடியும்.</translation> <translation id="5575473780076478375">மறைநிலை நீட்டிப்பு: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">டெமோவுக்குப் பதிவு செய்யும் கோரிக்கையில் ஒரு சிக்கல் ஏற்பட்டது.</translation> @@ -5460,6 +5462,7 @@ <translation id="7280649757394340890">உரையிலிருந்து பேச்சுக்கான குரல் அமைப்புகள்</translation> <translation id="7280877790564589615">அனுமதி கோரப்பட்டது</translation> <translation id="7282992757463864530">தகவல்பட்டி</translation> +<translation id="7283555985781738399">கெஸ்ட் பயன்முறை</translation> <translation id="7284411326658527427">ஒவ்வொருவரும் தங்களது கணக்கைப் பிரத்தியேகப்படுத்தி தரவைத் தனிப்பட்டதாக வைத்துக்கொள்ளலாம்.</translation> <translation id="7287143125007575591">அணுகல் மறுக்கப்பட்டது.</translation> <translation id="7287411021188441799">இயல்புப் பின்னணியை மீட்டமை</translation> @@ -5839,6 +5842,7 @@ <translation id="7716781361494605745">Netscape சான்றளிக்கும் மையக் கொள்கை URL</translation> <translation id="7717014941119698257">பதிவிறக்குகிறது: <ph name="STATUS" /></translation> <translation id="7717134585801378441">எனது இருப்பிடத் தகவலைத் தளங்கள் பயன்படுத்த முயலும்போது அனுமதி கேள் (பரிந்துரைக்கப்படுவது)</translation> +<translation id="771721654176725387">அகற்றினால் நீங்கள் உலாவிய தரவு இந்தச் சாதனத்திலிருந்து நிரந்தரமாக நீக்கப்படும். தரவை மீட்டெடுக்க இந்தக் கணக்கின் மூலம் ஒத்திசைவை இயக்கவும்:</translation> <translation id="7717845620320228976">புதுப்பிப்புகளைத் தேடு</translation> <translation id="7719367874908701697">பக்கத்தின் அளவு</translation> <translation id="7719588063158526969">சாதனத்தின் பெயர் நீளமாக உள்ளது</translation> @@ -5875,6 +5879,7 @@ <translation id="7765158879357617694">நகர்த்து</translation> <translation id="7765507180157272835">புளூடூத் & வைஃபை இணைப்பு தேவை</translation> <translation id="7766082757934713382">ஆப்ஸ் மற்றும் சிஸ்டத்திற்கான தானியங்கு புதுப்பிப்புகளை இடைநிறுத்துவதன் மூலம் நெட்வொர்க் டேட்டா பயன்பாட்டைக் குறைக்க உதவுகிறது</translation> +<translation id="7766807826975222231">உலா செல்</translation> <translation id="7766838926148951335">அனுமதிகளை ஏற்றுக்கொள்</translation> <translation id="7768507955883790804">நீங்கள் தளங்களைப் பார்வையிடும்போது அவை தானாகவே இந்த அமைப்பின்படி செயல்படும்</translation> <translation id="7768770796815395237">மாற்று</translation> @@ -6119,6 +6124,7 @@ <translation id="8017176852978888182">Linux பகிர்ந்த கோப்பகங்கள்</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">ஷார்ட்கட் திருத்தப்பட்டது</translation> +<translation id="8018298733481692628">இந்தச் சுயவிவரத்தை நீக்கவா?</translation> <translation id="8018313076035239964">இணையதளங்கள் என்ன தகவலைப் பயன்படுத்தலாம், என்ன உள்ளடக்கத்தைக் காட்டலாம் என்பதைக் கட்டுப்படுத்தலாம்</translation> <translation id="8023801379949507775">நீட்டிப்புகளை இப்போதே புதுப்பி</translation> <translation id="8026334261755873520">உலாவிய தரவை அழி</translation> @@ -6289,7 +6295,6 @@ <translation id="8211551284753798479">தவறான PUK. <ph name="RETRIES" /> முயற்சிகள் மீதமுள்ளன.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{பதிவிறக்கம் செயலில் உள்ளது}other{பதிவிறக்கங்கள் செயலில் உள்ளன}}</translation> <translation id="8213449224684199188">படப் பயன்முறைக்குச் சென்றது</translation> -<translation id="8213866992824776555">பாதுகாக்கப்பட்ட உயர்தர வீடியோவையும் ஆடியோவையும் பிளே செய்ய <ph name="DOMAIN" /> உங்கள் சாதனத்தை அடையாளம் காண விரும்புகிறது.</translation> <translation id="8214489666383623925">கோப்பைத் திற...</translation> <translation id="8214962590150211830">இவரை அகற்று</translation> <translation id="8216351761227087153">காண்</translation> @@ -6768,7 +6773,6 @@ <translation id="8774379074441005279">மீட்டமைப்பை உறுதிப்படுத்துதல்</translation> <translation id="8774934320277480003">மேல் ஓரம்</translation> <translation id="8775144690796719618">தவறான URL</translation> -<translation id="8775163630211761057">உங்கள் Android மொபைலில் உள்ள ஆப்ஸ், உள்ளடக்கம், இணைப்புநிலை ஆகியவற்றை <ph name="DEVICE_TYPE" /> சாதனத்தில் பயன்படுத்தலாம்</translation> <translation id="8775653927968399786">{0,plural, =1{இன்னும் # வினாடியில் உங்கள் <ph name="DEVICE_TYPE" /> தானாகப் பூட்டப்படும். <ph name="DOMAIN" /> டொமைனைப் பயன்படுத்த, உங்கள் ஸ்மார்ட் கார்டு செருகப்பட்ட நிலையிலேயே இருக்க வேண்டும்.}other{இன்னும் # வினாடிகளில் உங்கள் <ph name="DEVICE_TYPE" /> தானாகப் பூட்டப்படும். <ph name="DOMAIN" /> டொமைனைப் பயன்படுத்த, உங்கள் ஸ்மார்ட் கார்டு செருகப்பட்ட நிலையிலேயே இருக்க வேண்டும்.}}</translation> @@ -6957,6 +6961,7 @@ <translation id="8973596347849323817">உங்கள் தேவைகளுக்கேற்ப இந்தச் சாதனத்தைத் தனிப்பயனாக்கலாம். இந்த அணுகல்தன்மை அம்சங்களை, அமைப்புகளுக்குச் சென்று பின்னர் மாற்றிக்கொள்ளலாம்.</translation> <translation id="897414447285476047">இணைப்பில் ஏற்பட்ட சிக்கலின் காரணமாக, இலக்குக் கோப்பின் பதிவிறக்கம் முழுமையடையவில்லை.</translation> <translation id="897525204902889653">குவாரண்டைன் சேவை</translation> +<translation id="8975396729541388937">உங்களுக்கு அனுப்பப்படும் மின்னஞ்சல்களில் உள்ள இணைப்பைக் கிளிக் செய்து எப்போது வேண்டுமானாலும் குழுவிலகலாம்.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" மேலும் ஒரு தாவல்}other{"<ph name="TAB_TITLE" />" மேலும் # தாவல்கள்}}</translation> <translation id="8977811652087512276">தவறான கடவுச்சொல் அல்லது சிதைந்த கோப்பு</translation> <translation id="8978154919215542464">இயக்கத்திலுள்ளது - அனைத்தையும் ஒத்திசை</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index d6b3d9d..58673dba 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -393,7 +393,7 @@ <translation id="142765311413773645"><ph name="APP_NAME" /> లైసెన్స్ గడువు ముగిసింది</translation> <translation id="1429300045468813835">అన్నీ తీసివేయబడ్డాయి</translation> <translation id="143027896309062157">మీ కంప్యూటర్లో మరియు మీరు సందర్శించే వెబ్సైట్ల్లో మీ మొత్తం డేటాను చదవడం మరియు మార్చడం</translation> -<translation id="1430915738399379752">ముద్రించు</translation> +<translation id="1430915738399379752">ప్రింట్</translation> <translation id="1431188203598586230">చివరి సాఫ్ట్వేర్ అప్డేట్</translation> <translation id="1431402976894535801">మీ ఉనికిని తెలుసుకోనివ్వకుండా సైట్లను బ్లాక్ చేయండి</translation> <translation id="1431432486300429272">శోధన మరియు ఇతర Google సర్వీస్లను వ్యక్తిగతీకరించడం కోసం Google మీ బ్రౌజింగ్ చరిత్రను ఉపయోగించవచ్చు. మీరు లేదా మీ తల్లి/తండ్రి దీన్ని ఎప్పుడైనా myaccount.google.com/activitycontrols/searchలో మార్చవచ్చు</translation> @@ -621,7 +621,7 @@ <translation id="1673137583248014546"><ph name="URL" /> మీ భద్రతా కీ యొక్క తయారీదారు బ్రాండ్ పేరు మరియు మోడల్ని చూడాలనుకుంటోంది</translation> <translation id="1677306805708094828"><ph name="EXTENSION_TYPE_PARAMETER" />ను జోడించడం సాధ్యం కాలేదు</translation> <translation id="1677472565718498478"><ph name="TIME" /> మిగిలి ఉంది</translation> -<translation id="1679068421605151609">డెవలపర్ సాధనాలు</translation> +<translation id="1679068421605151609">డెవలపర్ టూల్స్</translation> <translation id="1679810534535368772">మీరు ఖచ్చితంగా నిష్క్రమించాలనుకుంటున్నారా?</translation> <translation id="167983332380191032">నిర్వహణ సేవ HTTP ఎర్రర్ని పంపింది.</translation> <translation id="1680841347983561661">దయచేసి కొన్ని క్షణాలలో Google Playని మళ్లీ ప్రారంభించడానికి ట్రై చేయండి.</translation> @@ -876,7 +876,6 @@ <translation id="1954813140452229842">షేర్ను మౌంట్ చేయడంలో ఎర్రర్ ఏర్పడింది. దయచేసి మీ ఆధారాలను సరిచూసుకుని, మళ్లీ ప్రయత్నించండి.</translation> <translation id="1956050014111002555">ఫైల్ బహుళ ప్రమాణపత్రాలను కలిగి ఉంది, వీటిలో ఏది దిగుమతి చెయ్యబడింది:</translation> <translation id="1956390763342388273">ఇది "<ph name="FOLDER_PATH" />" నుండి అన్ని ఫైల్లను అప్లోడ్ చేస్తుంది. మీరు సైట్ను విశ్వసిస్తే మాత్రమే దీనిని చేయండి.</translation> -<translation id="1960158217849594135">మీ Google ఖాతాకు యూజర్నేమ్ను సేవ్ చేయాలా?</translation> <translation id="196040970347962278">మొదట ఒక ఇంటర్నెట్ కనెక్షన్ను ఏర్పాటు చేయండి</translation> <translation id="1962233722219655970">ఈ పేజీ మీ కంప్యూటర్లో పని చేయని స్థానిక క్లయింట్ యాప్ను ఉపయోగిస్తుంది.</translation> <translation id="1963227389609234879">అన్నీ తొలగించు</translation> @@ -1047,7 +1046,6 @@ <translation id="2157474325782140681">ఈ Chromebookకు అనుగుణంగా పని చేయడానికి రూపొందించబడిన డెల్ డాకింగ్ స్టేషన్ను ఉపయోగించి, అదనపు ఫీచర్లను పొందండి.</translation> <translation id="215753907730220065">పూర్తి స్క్రీన్ను నిష్క్రమించు</translation> <translation id="2157875535253991059">ఈ పేజీ ఇప్పుడు పూర్తి స్క్రీన్లో ఉంది.</translation> -<translation id="2160589599612868242">మీ <ph name="DEVICE_TYPE" />లో మీ ఫోన్ నుండి నోటిఫికేషన్లను పొందండి</translation> <translation id="216169395504480358">Wi-Fiని జోడించండి...</translation> <translation id="2162155940152307086">మీరు ఒకసారి సింక్ సెట్టింగ్ల పేజీని వదిలివెళ్లినప్పటి నుండి సింక్ ప్రారంభమవుతుంది</translation> <translation id="2162838847352058695">ఆటోమేటిక్గా అనేక ఫైల్లను డౌన్లోడ్ చేయనివ్వకుండా సైట్లను బ్లాక్ చేయండి</translation> @@ -1700,7 +1698,6 @@ <translation id="2885729872133513017">సర్వర్ ప్రతిస్పందనను డీకోడ్ చేస్తుండగా సమస్య ఏర్పడింది.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">దీనితో లింక్ తెరువు...</translation> -<translation id="2889481634493693121">మీ ఫోన్లో నోటిఫికేషన్లను ఆన్ చేయండి</translation> <translation id="2889925978073739256">శాండ్బాక్స్ చేయని ప్లగిన్లను బ్లాక్ చేయడం కొనసాగించు</translation> <translation id="2893168226686371498">ఆటోమేటిక్ బ్రౌజర్</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 టెక్స్ట్}other{# టెక్స్ట్లు}}</translation> @@ -2802,7 +2799,6 @@ <translation id="412730574613779332">స్పాండెక్స్</translation> <translation id="4130199216115862831">పరికరం లాగ్</translation> <translation id="4130207949184424187">మీరు ఓమ్నిబాక్స్ నుండి వెతికేటప్పుడు చూపబడే పేజీని ఈ ఎక్స్టెన్షన్ మార్చింది.</translation> -<translation id="4130344535649650885">మీ Google ఖాతాకు పాస్వర్డ్ను సేవ్ చేయాలా?</translation> <translation id="4130750466177569591">నేను అంగీకరిస్తున్నాను</translation> <translation id="413121957363593859">భాగాలు</translation> <translation id="4131410914670010031">నలుపు మరియు తెలుపు</translation> @@ -3929,7 +3925,6 @@ <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="5503858713116291452">మీ ఫోన్ సమీపంలోనే ఉండి, అన్లాక్ చేసి ఉండి, అలాగే అందులో బ్లూటూత్, Wi-Fi ఆన్ చేయబడి ఉన్నాయని నిర్ధారించుకోండి. సెటప్ను పూర్తి చేయడానికి మీ ఫోన్లో దశలను ఫాలో అవ్వండి.</translation> <translation id="5503982651688210506">మీ కెమెరా, మైక్రోఫోన్ను ఉపయోగించడానికి, తరలించడానికి <ph name="HOST" />ను అనుమతించడాన్ని కొనసాగించండి</translation> <translation id="5505264765875738116">నోటిఫికేషన్లను పంపడానికి సైట్లు అడగవు</translation> <translation id="5505307013568720083">ఇంక్ లేదు</translation> @@ -3990,6 +3985,7 @@ <translation id="5565735124758917034">సక్రియం</translation> <translation id="5567989639534621706">అప్లికేషన్ కాష్లు</translation> <translation id="5568069709869097550">సైన్ ఇన్ చేయడం సాధ్యపడలేదు</translation> +<translation id="5571832155627049070">మీ ప్రొఫైల్ను తగినట్టుగా మార్చుకోండి</translation> <translation id="5572851009514199876">దయచేసి Chromeను ప్రారంభించి, దానికి సైన్ ఇన్ చేయండి, అప్పుడు ఈ సైట్ను యాక్సెస్ చేయడానికి మీకు అనుమతి ఉందో లేదో Chrome తనిఖీ చేయగలదు.</translation> <translation id="5575473780076478375">అజ్ఞాత ఎక్స్టెన్షన్: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">డెమో నమోదు అభ్యర్థనకు సంబంధించి ఒక సమస్య ఏర్పడింది.</translation> @@ -5874,6 +5870,7 @@ <translation id="7765158879357617694">తరలించు</translation> <translation id="7765507180157272835">బ్లూటూత్, Wi-Fi అవసరం</translation> <translation id="7766082757934713382">ఆటోమేటిక్ యాప్, సిస్టమ్ అప్డేట్లను పాజ్ చేయడం ద్వారా నెట్వర్క్ డేటా వినియోగాన్ని తగ్గించడంలో సహాయపడుతుంది</translation> +<translation id="7766807826975222231">పర్యటనలో పాల్గొనండి</translation> <translation id="7766838926148951335">అనుమతులను ఆమోదించు</translation> <translation id="7768507955883790804">మీరు సైట్లను సందర్శించినపుడు, అవి ఆటోమేటిక్గా ఈ సెట్టింగ్ను ఫాలో అవుతాయి</translation> <translation id="7768770796815395237">మార్చు</translation> @@ -6284,7 +6281,6 @@ <translation id="8211551284753798479">PUK చెల్లదు. మీకు <ph name="RETRIES" /> ప్రయత్నాలు మిగిలి ఉన్నాయి.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{డౌన్లోడ్ ప్రోగ్రెస్లో ఉంది}other{డౌన్లోడ్లు ప్రోగ్రెస్లో ఉన్నాయి}}</translation> <translation id="8213449224684199188">ఫోటో మోడ్లోకి ప్రవేశించింది</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" />, మీ పరికరాన్ని గుర్తించాలనుకుంటుంది, తద్వారా ఇది సురక్షిత వీడియో, ఆడియోను అత్యధిక క్వాలిటీతో ప్లే చేస్తుంది.</translation> <translation id="8214489666383623925">ఫైల్ను తెరువు...</translation> <translation id="8214962590150211830">ఈ వ్యక్తిని తీసివేయి</translation> <translation id="8216351761227087153">వీక్షించండి</translation> @@ -6763,7 +6759,6 @@ <translation id="8774379074441005279">పునరుద్ధరణను నిర్ధారించండి</translation> <translation id="8774934320277480003">ఎగువ అంచు</translation> <translation id="8775144690796719618">URL చెల్లదు</translation> -<translation id="8775163630211761057">మీ Android ఫోన్ నుండి మరిన్ని ప్రయోజనాలను మీ <ph name="DEVICE_TYPE" />కు పొడిగించండి</translation> <translation id="8775653927968399786">{0,plural, =1{మీ <ph name="DEVICE_TYPE" /> # సెకనులో ఆటోమేటిక్గా లాక్ చేయబడుతుంది. మీ స్మార్ట్ కార్డ్ను ఇన్సర్ట్ చేసి ఉంచమని <ph name="DOMAIN" /> మిమ్మల్ని కోరుతుంది.}other{మీ <ph name="DEVICE_TYPE" /> # సెకన్లలో ఆటోమేటిక్గా లాక్ చేయబడుతుంది. మీ స్మార్ట్ కార్డ్ను ఇన్సర్ట్ చేసి ఉంచమని <ph name="DOMAIN" /> మిమ్మల్ని కోరుతుంది.}}</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index 4b44567..228e659 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{ไม่มีรหัสผ่านที่ถูกละเมิด}=1{มีรหัสผ่านที่ถูกละเมิด 1 รายการ}other{มีรหัสผ่านที่ถูกละเมิด {NUM_COMPROMISED} รายการ}}</translation> <translation id="1380028686461971526">เชื่อมต่อกับเครือข่ายโดยอัตโนมัติ</translation> <translation id="1380436189840894976">ต้องการออกจากโหมดไม่ระบุตัวตนไหม</translation> +<translation id="1383597849754832576">ดาวน์โหลดไฟล์คำพูดไม่ได้ โปรดลองอีกครั้งภายหลัง</translation> <translation id="1383861834909034572">เปิดไฟล์เมื่อดาวน์โหลดเสร็จสมบูรณ์</translation> <translation id="1383876407941801731">ค้นหา</translation> <translation id="1386791642444521222">เปิดใช้งานซิมจริง</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">เกิดข้อผิดพลาดขณะต่อเชื่อมพื้นที่แชร์ โปรดตรวจสอบข้อมูลรับรองแล้วลองอีกครั้ง</translation> <translation id="1956050014111002555">ไฟล์มีใบรับรองหลายใบ แต่ไม่มีการนำเข้าใบรับรอง:</translation> <translation id="1956390763342388273">การดำเนินการนี้จะอัปโหลดไฟล์ทั้งหมดจาก "<ph name="FOLDER_PATH" />" ดำเนินการนี้เฉพาะในกรณีที่คุณเชื่อถือเว็บไซต์ดังกล่าวเท่านั้น</translation> -<translation id="1960158217849594135">บันทึกชื่อผู้ใช้ลงในบัญชี Google ใช่ไหม</translation> <translation id="196040970347962278">ทำการเชื่อมต่ออินเทอร์เน็ตก่อน</translation> <translation id="1962233722219655970">หน้าเว็บนี้ใช้แอปพลิเคชัน Native Client ซึ่งไม่สามารถทำงานบนคอมพิวเตอร์ของคุณ</translation> <translation id="1963227389609234879">นำออกทั้งหมด</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">ไม่มีการปกป้อง (ไม่แนะนำ)</translation> <translation id="1987317783729300807">บัญชี</translation> <translation id="1989112275319619282">เปิดดู</translation> +<translation id="1990046457226896323">ดาวน์โหลดไฟล์คำพูดแล้ว</translation> <translation id="1990512225220753005">ไม่แสดงทางลัดในหน้านี้</translation> <translation id="1992397118740194946">ไม่ได้ตั้งค่า</translation> <translation id="1992924914582925289">นำออกจากอุปกรณ์</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">โปรดใช้แท่นชาร์จ Dell ที่ออกแบบมาให้ใช้งานกับ Chromebook นี้เพื่อใช้ฟีเจอร์เพิ่มเติม</translation> <translation id="215753907730220065">ออกจากการแสดงเต็มหน้าจอ</translation> <translation id="2157875535253991059">หน้าเว็บนี้แสดงแบบเต็มหน้าจอแล้ว</translation> -<translation id="2160589599612868242">รับการแจ้งเตือนจากโทรศัพท์ใน <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">เพิ่ม WiFi...</translation> <translation id="2162155940152307086">การซิงค์จะเริ่มขึ้นเมื่อคุณออกจากการตั้งค่า</translation> <translation id="2162838847352058695">บล็อกเว็บไซต์ไม่ให้ดาวน์โหลดไฟล์หลายไฟล์โดยอัตโนมัติ</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">เปิดการแจ้งเตือนแล้ว</translation> <translation id="2399939490305346086">ข้อมูลการลงชื่อเข้าใช้ในคีย์ความปลอดภัย</translation> <translation id="2400664245143453337">ต้องอัปเดตทันที</translation> +<translation id="2406153734066939945">ลบโปรไฟล์นี้และข้อมูลในโปรไฟล์ใช่ไหม</translation> <translation id="2408018932941436077">กำลังบันทึกบัตร</translation> <translation id="2408955596600435184">ป้อน PIN ของคุณ</translation> <translation id="241082044617551207">ปลั๊กอินที่ไม่รู้จัก</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">เดสก์ท็อป</translation> <translation id="2526619973349913024">ตรวจหาอัปเดต</translation> <translation id="2527167509808613699">การเชื่อมต่อทุกประเภท</translation> +<translation id="2530166226437958497">การแก้ปัญหา</translation> <translation id="2532589005999780174">โหมดคอนทราสต์สูง</translation> <translation id="253434972992662860">&หยุดชั่วคราว</translation> <translation id="2534460670861217804">พร็อกซี HTTP ที่ปลอดภัย</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">เกิดปัญหาเมื่อถอดรหัสการตอบกลับของเซิร์ฟเวอร์</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">เปิดลิงก์ด้วย...</translation> -<translation id="2889481634493693121">เปิดการแจ้งเตือนในโทรศัพท์</translation> <translation id="2889925978073739256">บล็อกปลั๊กอินที่ไม่ได้อยู่ในแซนด์บ็อกซ์ต่อไป</translation> <translation id="2893168226686371498">เบราว์เซอร์เริ่มต้น</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 ข้อความ}other{# ข้อความ}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">ยกนิ้วขึ้นแล้วแตะอีกครั้ง</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: การซิงค์หยุดชั่วคราว</translation> <translation id="3861638017150647085">ใช้ชื่อผู้ใช้ "<ph name="USERNAME" />" ไม่ได้</translation> +<translation id="3861977424605124250">แสดงเมื่อเริ่มต้นใช้งาน</translation> <translation id="3862693525629180217">ยืนยันผ่านเซ็นเซอร์ในเครื่อง</translation> <translation id="3862788408946266506">ต้องติดตั้งแอปที่มีแอตทริบิวต์ไฟล์ Manifest ที่ชื่อ "kiosk_only" ในโหมดคีออสก์ของ Chrome OS</translation> <translation id="3865414814144988605">ความละเอียด</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">สแปนเด็กซ์</translation> <translation id="4130199216115862831">บันทึกของอุปกรณ์</translation> <translation id="4130207949184424187">ส่วนขยายนี้ได้เปลี่ยนหน้าที่จะแสดงเมื่อคุณค้นหาจากแถบอเนกประสงค์</translation> -<translation id="4130344535649650885">บันทึกรหัสผ่านลงในบัญชี Google ใช่ไหม</translation> <translation id="4130750466177569591">ฉันยอมรับ</translation> <translation id="413121957363593859">คอมโพเนนต์</translation> <translation id="4131410914670010031">ขาวดำ</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">ดำเนินการต่อจากอุปกรณ์อื่น</translation> <translation id="4628757576491864469">อุปกรณ์</translation> <translation id="4628762811416793313">ยังสร้างคอนเทนเนอร์ Linux ไม่สมบูรณ์ โปรดลองอีกครั้ง</translation> +<translation id="4629521233550547305">เปิดโปรไฟล์ของ <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">ส่วนขยายต้องใช้ "<ph name="IMPORT_NAME" />" เวอร์ชัน "<ph name="IMPORT_VERSION" />" เป็นอย่างน้อย แต่ที่ติดตั้งอยู่เป็นเวอร์ชัน "<ph name="INSTALLED_VERSION" />"</translation> <translation id="4633757335284074492">สำรองข้อมูลไปที่ Google ไดรฟ์ กู้คืนข้อมูลหรือเปลี่ยนอุปกรณ์ได้ง่ายๆ ทุกเมื่อ ข้อมูลสำรองนี้มีข้อมูลแอปอยู่ด้วย ข้อมูลสำรองจะอัปโหลดขึ้น Google และเข้ารหัสโดยใช้รหัสผ่านบัญชี Google ของบุตรหลาน</translation> <translation id="4634575639321169635">ตั้งค่าอุปกรณ์นี้สำหรับการทำงานหรือใช้ส่วนตัว</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{รับ <ph name="ATTACHMENTS" />จาก <ph name="DEVICE_NAME" /> ไม่สำเร็จ}other{รับ <ph name="ATTACHMENTS" />จาก <ph name="DEVICE_NAME" /> ไม่สำเร็จ}}</translation> <translation id="5502500733115278303">นำเข้าจาก Firefox</translation> <translation id="5502915260472117187">บุตรหลาน</translation> -<translation id="5503858713116291452">ตรวจสอบว่าโทรศัพท์อยู่ใกล้ๆ ปลดล็อกแล้ว และเปิดบลูทูธกับ Wi-Fi ไว้ ทำตามขั้นตอนในโทรศัพท์เพื่อตั้งค่าให้เสร็จสมบูรณ์</translation> <translation id="5503982651688210506">อนุญาตให้ <ph name="HOST" /> ใช้และเคลื่อนย้ายกล้อง รวมถึงใช้ไมโครโฟนของคุณต่อไป</translation> <translation id="5505264765875738116">เว็บไซต์ขออนุญาตเพื่อส่งการแจ้งเตือนไม่ได้</translation> <translation id="5505307013568720083">หมึกหมด</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">ใช้งานอยู่</translation> <translation id="5567989639534621706">แคชของแอปพลิเคชัน</translation> <translation id="5568069709869097550">ไม่สามารถลงชื่อเข้าใช้</translation> +<translation id="5571832155627049070">กำหนดค่าโปรไฟล์ของคุณ</translation> <translation id="5572851009514199876">โปรดเปิดและลงชื่อเข้าใช้ Chrome เพื่อให้ Chrome ตรวจสอบได้ว่าคุณได้รับอนุญาตให้เข้าถึงไซต์นี้หรือไม่</translation> <translation id="5575473780076478375">ส่วนขยายแบบไม่ระบุตัวตน: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">เกิดปัญหาเกี่ยวกับคำขอลงทะเบียนสาธิต</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">การตั้งค่าเสียงของการอ่านออกเสียงข้อความ</translation> <translation id="7280877790564589615">ขอสิทธิ์แล้ว</translation> <translation id="7282992757463864530">แถบข้อมูล</translation> +<translation id="7283555985781738399">โหมดผู้มาเยือน</translation> <translation id="7284411326658527427">โดยแต่ละคนจะปรับเปลี่ยนการตั้งค่าบัญชีในแบบของตนและเก็บเป็นข้อมูลส่วนตัวได้</translation> <translation id="7287143125007575591">ปฏิเสธการเข้าถึง</translation> <translation id="7287411021188441799">คืนค่าพื้นหลังเริ่มต้น</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">URL นโยบายของผู้ออกใบรับรองของ Netscape</translation> <translation id="7717014941119698257">กำลังดาวน์โหลด: <ph name="STATUS" /></translation> <translation id="7717134585801378441">เว็บไซต์ขอตำแหน่งของคุณได้ (แนะนำ)</translation> +<translation id="771721654176725387">การดำเนินการนี้จะลบข้อมูลการท่องเว็บของคุณจากอุปกรณ์นี้อย่างถาวร หากต้องการกู้ข้อมูลคืน ให้เปิดการซิงค์ในชื่อ</translation> <translation id="7717845620320228976">ตรวจสอบการอัปเดต</translation> <translation id="7719367874908701697">การซูมหน้า</translation> <translation id="7719588063158526969">ชื่ออุปกรณ์ยาวเกินไป</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">ย้าย</translation> <translation id="7765507180157272835">ต้องใช้บลูทูธและ Wi-Fi</translation> <translation id="7766082757934713382">ช่วยลดปริมาณการใช้อินเทอร์เน็ตของเครือข่ายโดยหยุดการอัปเดตระบบกับแอปอัตโนมัติไว้ชั่วคราว</translation> +<translation id="7766807826975222231">ทัวร์ชม</translation> <translation id="7766838926148951335">ยอมรับสิทธิ์</translation> <translation id="7768507955883790804">เว็บไซต์จะดำเนินการตามการตั้งค่านี้โดยอัตโนมัติเมื่อคุณเข้าชม</translation> <translation id="7768770796815395237">เปลี่ยน</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">ไดเรกทอรีที่แชร์ใน Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">แก้ไขทางลัดแล้ว</translation> +<translation id="8018298733481692628">ลบโปรไฟล์นี้ใช่ไหม</translation> <translation id="8018313076035239964">ควบคุมว่าจะให้เว็บไซต์ใช้ข้อมูลใดได้บ้าง และสามารถแสดงเนื้อหาใดให้กับคุณ</translation> <translation id="8023801379949507775">อัปเดตส่วนขยายทันที</translation> <translation id="8026334261755873520">ล้างข้อมูลการท่องเว็บ</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">PUK ไม่ถูกต้อง คุณลองได้อีก <ph name="RETRIES" /> ครั้ง</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{อยู่ระหว่างการดาวน์โหลด}other{อยู่ระหว่างการดาวน์โหลด}}</translation> <translation id="8213449224684199188">เข้าสู่โหมดรูปภาพแล้ว</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> ต้องการระบุอุปกรณ์ของคุณเพื่อให้เล่นวิดีโอและเสียงที่มีการปกป้องเป็นคุณภาพสูงสุดได้</translation> <translation id="8214489666383623925">เปิดไฟล์...</translation> <translation id="8214962590150211830">นำบุคคลนี้ออก</translation> <translation id="8216351761227087153">ดู</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">ยืนยันการคืนค่า</translation> <translation id="8774934320277480003">ขอบบน</translation> <translation id="8775144690796719618">URL ไม่ถูกต้อง</translation> -<translation id="8775163630211761057">เพิ่มสิ่งที่ดีที่สุดจากโทรศัพท์ Android ของคุณไปยัง <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> ของคุณจะล็อกโดยอัตโนมัติใน # วินาที คุณต้องเสียบสมาร์ทการ์ดไว้ตลอดเพื่อให้ใช้งาน <ph name="DOMAIN" /> ได้}other{<ph name="DEVICE_TYPE" /> ของคุณจะล็อกโดยอัตโนมัติใน # วินาที คุณต้องเสียบสมาร์ทการ์ดไว้ตลอดเพื่อให้ใช้งาน <ph name="DOMAIN" /> ได้}}</translation> @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">คุณสามารถปรับแต่งอุปกรณ์นี้ให้ตรงกับความต้องการของคุณ และเปลี่ยนฟีเจอร์การเข้าถึงเหล่านี้ได้ภายหลังใน "การตั้งค่า"</translation> <translation id="897414447285476047">ไฟล์ปลายทางไม่สมบูรณ์เนื่องจากปัญหาการเชื่อมต่อ</translation> <translation id="897525204902889653">บริการเขตกักบริเวณ</translation> +<translation id="8975396729541388937">ยกเลิกการสมัครได้ทุกเมื่อโดยคลิกลิงก์ในอีเมลที่ได้รับ</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" และแท็บอื่นอีก 1 แท็บ}other{"<ph name="TAB_TITLE" />" และแท็บอื่นอีก # แท็บ}}</translation> <translation id="8977811652087512276">รหัสผ่านไม่ถูกต้องหรือไฟล์เสียหาย</translation> <translation id="8978154919215542464">เปิด - ซิงค์ทุกอย่าง</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index 31916ee..ea18b07 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Güvenliği ihlal edilmiş şifre yok}=1{Güvenliği ihlal edilmiş 1 şifre}other{Güvenliği ihlal edilmiş {NUM_COMPROMISED} şifre}}</translation> <translation id="1380028686461971526">Ağa otomatik olarak bağlan</translation> <translation id="1380436189840894976">Yine de gizli mod kapatılsın mı?</translation> +<translation id="1383597849754832576">Canlı Altyazı dosyaları indirilemiyor. Daha sonra tekrar deneyin.</translation> <translation id="1383861834909034572">Tamamlandığında açılacak</translation> <translation id="1383876407941801731">Ara</translation> <translation id="1386791642444521222">Fiziksel SIM kartını etkinleştir</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Paylaşım eklenirken hata oluştu. Lütfen kimlik bilgilerinizi kontrol edin ve tekrar deneyin.</translation> <translation id="1956050014111002555">Dosya birden çok sertifika içeriyordu, bunların hiçbiri içe aktarılmadı:</translation> <translation id="1956390763342388273">Bu işlem, "<ph name="FOLDER_PATH" />" klasöründeki tüm dosyaları yükleyecek. Bunu yalnızca siteye güveniyorsanız yapın.</translation> -<translation id="1960158217849594135">Kullanıcı adı Google Hesabınıza kaydedilsin mi?</translation> <translation id="196040970347962278">Önce internet bağlantısı kurun</translation> <translation id="1962233722219655970">Bu sayfada, bilgisayarınızda çalışmayan bir Native Client uygulaması kullanılmaktadır.</translation> <translation id="1963227389609234879">Tümünü Kaldır</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Koruma yok (önerilmez)</translation> <translation id="1987317783729300807">Hesaplar</translation> <translation id="1989112275319619282">Göz at</translation> +<translation id="1990046457226896323">Canlı Altyazı dosyaları indirildi</translation> <translation id="1990512225220753005">Kısayolları bu sayfada gösterme</translation> <translation id="1992397118740194946">Ayarlanmadı</translation> <translation id="1992924914582925289">Cihazdan kaldır</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Ek özelliklerden yararlanmak için bu Chromebook ile uyumlu olacak şekilde tasarlanmış bir Dell yuva istasyonu kullanın.</translation> <translation id="215753907730220065">Tam Ekrandan Çık</translation> <translation id="2157875535253991059">Bu sayfa artık tam ekran.</translation> -<translation id="2160589599612868242">Telefonunuzdaki bildirimleri <ph name="DEVICE_TYPE" /> cihazınızda alın</translation> <translation id="216169395504480358">Kablosuz Ekle...</translation> <translation id="2162155940152307086">Senkronizasyon işlemi, senkonizasyon ayarlarından çıktığınızda başlayacaktır</translation> <translation id="2162838847352058695">Sitelerin birden fazla dosyayı otomatik olarak indirmesini engelle</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Bildirimler açık</translation> <translation id="2399939490305346086">Güvenlik anahtarı oturum açma verileri</translation> <translation id="2400664245143453337">Hemen güncelleme gerekli</translation> +<translation id="2406153734066939945">Bu profil ve verileri silinsin mi?</translation> <translation id="2408018932941436077">Kart kaydediliyor</translation> <translation id="2408955596600435184">PIN'inizi girin</translation> <translation id="241082044617551207">Bilinmeyen eklenti</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Masaüstü</translation> <translation id="2526619973349913024">Güncellemeleri denetle</translation> <translation id="2527167509808613699">Herhangi bir bağlantı türü</translation> +<translation id="2530166226437958497">Sorun giderme</translation> <translation id="2532589005999780174">Yüksek kontrast modu</translation> <translation id="253434972992662860">&Duraklat</translation> <translation id="2534460670861217804">Güvenli HTTP Proxy'si</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Sunucu yanıtının kodu çözülürken bir sorun oluştu.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Bağlantıyı şununla aç...</translation> -<translation id="2889481634493693121">Telefonunuzda bildirimleri açın</translation> <translation id="2889925978073739256">Korumalı alanda olmayan eklentileri engellemeye devam et</translation> <translation id="2893168226686371498">Varsayılan tarayıcı</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 metin}other{# metin}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Kaldırın, tekrar dokunun</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Senkronizasyon duraklatıldı</translation> <translation id="3861638017150647085">"<ph name="USERNAME" />" kullanıcı adı kullanılamıyor</translation> +<translation id="3861977424605124250">Başlangıçta göster</translation> <translation id="3862693525629180217">Yerleşik sensör kullanarak doğrula</translation> <translation id="3862788408946266506">"kiosk_only" manifest özelliğine sahip uygulamalar ChromeOS kiosk modunda yüklenmelidir</translation> <translation id="3865414814144988605">Çözünürlük</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Süper Kahraman</translation> <translation id="4130199216115862831">Cihaz Günlüğü</translation> <translation id="4130207949184424187">Bu uzantı, Çok Amaçlı Adres Çubuğu'nda arama yaptığınızda gösterilen sayfayı değiştirdi.</translation> -<translation id="4130344535649650885">Şifre Google Hesabınıza kaydedilsin mi?</translation> <translation id="4130750466177569591">Kabul ediyorum</translation> <translation id="413121957363593859">Bileşenler</translation> <translation id="4131410914670010031">Siyah beyaz</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Başka bir cihazdan devam edin</translation> <translation id="4628757576491864469">Cihazlar</translation> <translation id="4628762811416793313">Linux kapsayıcısı kurulumu tamamlanmadı. Lütfen tekrar deneyin.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> profilini açın</translation> <translation id="4633003931260532286">Uzantı en az "<ph name="IMPORT_NAME" />" "<ph name="IMPORT_VERSION" />" sürümünü gerektiriyor ancak sadece "<ph name="INSTALLED_VERSION" />" sürümü yüklü</translation> <translation id="4633757335284074492">Google Drive'a yedekle. Verileri istediğiniz zaman kolayca geri yükleyin veya cihazlar arasında geçiş yapın. Bu yedekleme, uygulama verilerini içerir. Yedek veriler Google'a yüklenir ve çocuğunuzun Google Hesabının şifresi kullanılarak şifrelenir.</translation> <translation id="4634575639321169635">Bu cihazı iş amaçlı veya kişisel kullanım için kurun</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="ATTACHMENTS" />, <ph name="DEVICE_NAME" /> adlı cihazdan alınamadı}other{<ph name="ATTACHMENTS" />, <ph name="DEVICE_NAME" /> adlı cihazdan alınamadı}}</translation> <translation id="5502500733115278303">Firefox'tan Aktarıldı</translation> <translation id="5502915260472117187">Çocuk</translation> -<translation id="5503858713116291452">Telefonunuzun yakında bulunduğundan, kilidinin ve Bluetooth ile Kablosuz bağlantının da açık olduğundan emin olun. Kurulumu tamamlamak için telefonunuzdaki adımları uygulayın.</translation> <translation id="5503982651688210506"><ph name="HOST" /> sitesine hem kameramı kullanması, hareket ettirmesi hem de mikrofonumu kullanması için izni vermeye devam et</translation> <translation id="5505264765875738116">Siteler bildirim göndermek isteyemez</translation> <translation id="5505307013568720083">Mürekkep bitti</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Etkin</translation> <translation id="5567989639534621706">Uygulama önbellekleri</translation> <translation id="5568069709869097550">Oturum açılamıyor</translation> +<translation id="5571832155627049070">Profilinizi özelleştirin</translation> <translation id="5572851009514199876">Chrome'un bu siteye erişmenize izin verilip verilmediğini kontrol edebilmesi için lütfen Chrome'u başlatıp oturum açın.</translation> <translation id="5575473780076478375">Gizli Mod Uzantısı: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Demo kayıt isteğiyle ilgili bir sorun oluştu.</translation> @@ -5460,6 +5462,7 @@ <translation id="7280649757394340890">Metin Okuma ses ayarları</translation> <translation id="7280877790564589615">İzin istendi</translation> <translation id="7282992757463864530">Bilgi çubuğu</translation> +<translation id="7283555985781738399">Misafir modu</translation> <translation id="7284411326658527427">Her kullanıcı, hesabını kişiselleştirip verilerini gizli tutabilir.</translation> <translation id="7287143125007575591">Erişim reddedildi.</translation> <translation id="7287411021188441799">Varsayılan arka planı geri yükle</translation> @@ -5839,6 +5842,7 @@ <translation id="7716781361494605745">Netscape Sertifika Yetki Politikası URL'si</translation> <translation id="7717014941119698257">İndiriliyor: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Siteler konumunuza erişmek isteyebilir (önerilir)</translation> +<translation id="771721654176725387">Bu işlem, tarama verilerinizi bu cihazdan kalıcı olarak silecektir. Verileri kurtarmak için şu hesapla senkronizasyonu açın:</translation> <translation id="7717845620320228976">Güncellemeleri kontrol et</translation> <translation id="7719367874908701697">Sayfa yakınlaştırma</translation> <translation id="7719588063158526969">Cihaz adı çok uzun</translation> @@ -5875,6 +5879,7 @@ <translation id="7765158879357617694">Taşı</translation> <translation id="7765507180157272835">Bluetooth ve Kablosuz Ağ gerekli</translation> <translation id="7766082757934713382">Otomatik uygulama ve sistem güncellemelerini duraklatarak ağ veri kullanımının azaltılmasına yardımcı olur</translation> +<translation id="7766807826975222231">Tura katılın</translation> <translation id="7766838926148951335">İzinleri kabul et</translation> <translation id="7768507955883790804">Ziyaret ettiğinizde siteler otomatik olarak bu ayarı uygular</translation> <translation id="7768770796815395237">Değiştir</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">Linux paylaşılan dizinler</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Kısayol düzenlendi</translation> +<translation id="8018298733481692628">Bu profili silinsin mi?</translation> <translation id="8018313076035239964">Web sitelerinin kullanabilecekleri bilgileri ve size gösterebilecekleri içerikleri kontrol edin</translation> <translation id="8023801379949507775">Uzantıları şimdi güncelle</translation> <translation id="8026334261755873520">Tarama verilerini temizle</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">Geçersiz PUK. <ph name="RETRIES" /> deneme hakkınız kaldı.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{İndirme işlemi devam ediyor}other{İndirme işlemleri devam ediyor}}</translation> <translation id="8213449224684199188">Fotoğraf moduna girildi</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" />, en yüksek kalitede video ve sesi sunabilmek için cihazınızı tanımlamak istiyor.</translation> <translation id="8214489666383623925">Dosya Aç...</translation> <translation id="8214962590150211830">Bu kişiyi kaldır</translation> <translation id="8216351761227087153">İzle</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Geri Yüklemeyi Onaylayın</translation> <translation id="8774934320277480003">Üst kenar boşluğu</translation> <translation id="8775144690796719618">Geçersiz URL</translation> -<translation id="8775163630211761057">Android telefonunuzun en iyi özelliklerini <ph name="DEVICE_TYPE" /> cihazınızla paylaşın</translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> cihazınız # saniye sonra otomatik olarak kilitlenecek. <ph name="DOMAIN" />, akıllı kartınızın takılı kalmasını gerektiriyor.}other{<ph name="DEVICE_TYPE" /> cihazınız # saniye sonra otomatik olarak kilitlenecek. <ph name="DOMAIN" />, akıllı kartınızın takılı kalmasını gerektiriyor.}}</translation> @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">Bu cihazı gereksinimlerinize uygun şekilde özelleştirebilirsiniz. Bu erişilebilirlik özellikleri daha sonra Ayarlar'dan değiştirilebilir.</translation> <translation id="897414447285476047">Bağlantıda olan bir sorundan dolayı hedef dosya eksik.</translation> <translation id="897525204902889653">Karantina Hizmeti</translation> +<translation id="8975396729541388937">Aldığınız e-postalardaki bağlantıyı tıklayarak istediğiniz zaman e-posta listesinden çıkabilirsiniz.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" ve 1 diğer sekme}other{"<ph name="TAB_TITLE" />" ve # diğer sekme}}</translation> <translation id="8977811652087512276">Yanlış şifre veya bozuk dosya</translation> <translation id="8978154919215542464">Açık - her şeyi senkronize et</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index 88114725..8f4a8a7 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -341,6 +341,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Немає зламаних паролів}=1{1 зламаний пароль}one{{NUM_COMPROMISED} зламаний пароль}few{{NUM_COMPROMISED} зламані паролі}many{{NUM_COMPROMISED} зламаних паролів}other{{NUM_COMPROMISED} зламаного пароля}}</translation> <translation id="1380028686461971526">Автопідключення до мережі</translation> <translation id="1380436189840894976">Усе одно вийти з режиму анонімного перегляду?</translation> +<translation id="1383597849754832576">Не вдалося завантажити файли живих субтитрів. Повторіть спробу пізніше.</translation> <translation id="1383861834909034572">Відкривати, коли завершено</translation> <translation id="1383876407941801731">Пошук</translation> <translation id="1386791642444521222">Активувати фізичну SIM-карту</translation> @@ -879,7 +880,6 @@ <translation id="1954813140452229842">Помилка підключення спільного доступу. Перевірте облікові дані та повторіть спробу.</translation> <translation id="1956050014111002555">Файл містив декілька сертифікатів, жоден із яких не було імпортовано:</translation> <translation id="1956390763342388273">Буде завантажено всі файли з папки "<ph name="FOLDER_PATH" />". Робіть це, лише якщо вважаєте сайт надійним.</translation> -<translation id="1960158217849594135">Зберегти ім'я користувача в обліковому записі Google?</translation> <translation id="196040970347962278">Спершу підключіться до Інтернету</translation> <translation id="1962233722219655970">На цій сторінці використовується програма Native Client, яка не працює на вашому комп’ютері.</translation> <translation id="1963227389609234879">Видалити всі</translation> @@ -905,6 +905,7 @@ <translation id="1984417487208496350">Захист вимкнено (не рекомендовано)</translation> <translation id="1987317783729300807">Облікові записи</translation> <translation id="1989112275319619282">Переглянути</translation> +<translation id="1990046457226896323">Файли живих субтитрів завантажено</translation> <translation id="1990512225220753005">Не показувати ярлики на цій сторінці</translation> <translation id="1992397118740194946">Не налаштовано</translation> <translation id="1992924914582925289">Видалити з пристрою</translation> @@ -1050,7 +1051,6 @@ <translation id="2157474325782140681">Щоб отримати додаткові функції, використовуйте док-станцію Dell, розроблену для цього комп'ютера Chromebook.</translation> <translation id="215753907730220065">Вийти з повноекранного режиму</translation> <translation id="2157875535253991059">Ця сторінка зараз у повноекранному режимі.</translation> -<translation id="2160589599612868242">Сповіщення з телефона надходитимуть на <ph name="DEVICE_TYPE" /></translation> <translation id="216169395504480358">Додати Wi-Fi...</translation> <translation id="2162155940152307086">Синхронізація почнеться, щойно ви вийдете з її налаштувань</translation> <translation id="2162838847352058695">Заборонити сайтам автоматично завантажувати кілька файлів</translation> @@ -1268,6 +1268,7 @@ <translation id="2399699884460174994">Сповіщення ввімкнено</translation> <translation id="2399939490305346086">Дані для входу для ключа безпеки</translation> <translation id="2400664245143453337">Потрібно негайно встановити оновлення</translation> +<translation id="2406153734066939945">Видалити профіль і його дані?</translation> <translation id="2408018932941436077">Зберігання картки</translation> <translation id="2408955596600435184">Введіть PIN-код</translation> <translation id="241082044617551207">Невідомий плагін</translation> @@ -1386,6 +1387,7 @@ <translation id="2526590354069164005">Google Desktop</translation> <translation id="2526619973349913024">Перевірити наявність оновлення</translation> <translation id="2527167509808613699">Будь-яке з’єднання</translation> +<translation id="2530166226437958497">Вирішення проблем</translation> <translation id="2532589005999780174">Режим високого контрасту</translation> <translation id="253434972992662860">&Пауза</translation> <translation id="2534460670861217804">Захищений проксі-сервер HTTP</translation> @@ -1703,7 +1705,6 @@ <translation id="2885729872133513017">Під час декодування відповіді сервера виникла проблема.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Відкрити посилання за допомогою...</translation> -<translation id="2889481634493693121">Увімкніть сповіщення на телефоні</translation> <translation id="2889925978073739256">Продовжити блокувати плагіни з неізольованим програмним середовищем</translation> <translation id="2893168226686371498">Веб-переглядач за умовчанням</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 тексту}one{# тексту}few{# текстів}many{# текстів}other{# тексту}}</translation> @@ -2563,6 +2564,7 @@ <translation id="3857807444929313943">Підніміть і знову торкніться</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: синхронізацію призупинено</translation> <translation id="3861638017150647085">Ім'я користувача "<ph name="USERNAME" />" недоступне</translation> +<translation id="3861977424605124250">Показувати під час запуску</translation> <translation id="3862693525629180217">Підтвердити через вбудований датчик</translation> <translation id="3862788408946266506">Додаток з атрибутом маніфесту "kiosk_only" потрібно встановлювати в режимі термінала ОС Chrome</translation> <translation id="3865414814144988605">Роздільна здатність</translation> @@ -2805,7 +2807,6 @@ <translation id="412730574613779332">Культурист</translation> <translation id="4130199216115862831">Журнал пристрою</translation> <translation id="4130207949184424187">Це розширення змінило сторінку, яка відкривається під час пошуку в універсальному вікні пошуку.</translation> -<translation id="4130344535649650885">Зберегти пароль в обліковому записі Google?</translation> <translation id="4130750466177569591">Приймаю</translation> <translation id="413121957363593859">Компоненти</translation> <translation id="4131410914670010031">Чорно-білий</translation> @@ -3204,6 +3205,7 @@ <translation id="4627442949885028695">Продовжити на іншому пристрої</translation> <translation id="4628757576491864469">Пристрої</translation> <translation id="4628762811416793313">Налаштування контейнера Linux не завершено. Повторіть спробу.</translation> +<translation id="4629521233550547305">Відкрити профіль "<ph name="PROFILE_NAME" />"</translation> <translation id="4633003931260532286"><ph name="IMPORT_NAME" /> з мінімальною версією <ph name="IMPORT_VERSION" /> – це обов’язковий компонент для роботи розширення, але встановлено версію <ph name="INSTALLED_VERSION" /></translation> <translation id="4633757335284074492">Створювати резервні копії на Google Диску. Легко відновлюйте дані чи переносьте їх на інші пристрої. Ця резервна копія містить дані додатків. Резервні копії завантажуються в Google і шифруються за допомогою пароля облікового запису Google вашої дитини.</translation> <translation id="4634575639321169635">Налаштуйте цей пристрій для особистого користування чи роботи</translation> @@ -3932,7 +3934,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Не вдалось отримати <ph name="ATTACHMENTS" /> з пристрою <ph name="DEVICE_NAME" />}one{Не вдалось отримати <ph name="ATTACHMENTS" /> з пристрою <ph name="DEVICE_NAME" />}few{Не вдалось отримати <ph name="ATTACHMENTS" /> з пристрою <ph name="DEVICE_NAME" />}many{Не вдалось отримати <ph name="ATTACHMENTS" /> з пристрою <ph name="DEVICE_NAME" />}other{Не вдалось отримати <ph name="ATTACHMENTS" /> з пристрою <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Імпортовано із Firefox</translation> <translation id="5502915260472117187">Дитина</translation> -<translation id="5503858713116291452">Переконайтеся, що ваш телефон поблизу й розблокований, а Bluetooth і Wi-Fi увімкнено. Щоб завершити налаштування, виконайте вказівки на телефоні.</translation> <translation id="5503982651688210506">Надалі дозволяти сайту <ph name="HOST" /> використовувати й переміщувати камеру, а також використовувати мікрофон</translation> <translation id="5505264765875738116">Сайти не можуть просити дозвіл надсилати сповіщення</translation> <translation id="5505307013568720083">Закінчилося чорнило</translation> @@ -3993,6 +3994,7 @@ <translation id="5565735124758917034">Активний клієнт</translation> <translation id="5567989639534621706">Кеші програми</translation> <translation id="5568069709869097550">Не вдалося ввійти</translation> +<translation id="5571832155627049070">Налаштуйте свій профіль</translation> <translation id="5572851009514199876">Увійдіть в обліковий запис Chrome, щоб веб-переглядач міг перевірити, чи ви маєте дозвіл відвідувати цей сайт.</translation> <translation id="5575473780076478375">Розширення в режимі анонімного перегляду: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Виникла проблема з демо-запитом на реєстрацію.</translation> @@ -5462,6 +5464,7 @@ <translation id="7280649757394340890">Налаштування голосу для синтезу мовлення</translation> <translation id="7280877790564589615">Потрібен дозвіл</translation> <translation id="7282992757463864530">Інформаційна панель</translation> +<translation id="7283555985781738399">Режим гостя</translation> <translation id="7284411326658527427">Кожен користувач може персоналізувати обліковий запис і захистити свої дані.</translation> <translation id="7287143125007575591">У доступі відмовлено.</translation> <translation id="7287411021188441799">Відновити фон за умовчанням</translation> @@ -5841,6 +5844,7 @@ <translation id="7716781361494605745">URL-адреса політики Центру сертифікації Netscape</translation> <translation id="7717014941119698257">Завантаження: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Сайти можуть запитувати ваше місцезнаходження (рекомендовано)</translation> +<translation id="771721654176725387">Дані веб-перегляду буде видалено з цього пристрою назавжди. Щоб відновити їх, увімкніть синхронізацію облікового запису</translation> <translation id="7717845620320228976">Перевірка наявності оновлень</translation> <translation id="7719367874908701697">Масштабування сторінки</translation> <translation id="7719588063158526969">Назва пристрою задовга</translation> @@ -5877,6 +5881,7 @@ <translation id="7765158879357617694">Перемістити</translation> <translation id="7765507180157272835">Потрібно ввімкнути Bluetooth і Wi-Fi</translation> <translation id="7766082757934713382">Допомагає зменшити використання мережевого трафіку, призупиняючи автоматичні оновлення додатків і системи</translation> +<translation id="7766807826975222231">Ознайомитися</translation> <translation id="7766838926148951335">Прийняти дозволи</translation> <translation id="7768507955883790804">Коли ви відвідуєте сайти, вони автоматично дотримуються цього налаштування</translation> <translation id="7768770796815395237">Змінити</translation> @@ -6121,6 +6126,7 @@ <translation id="8017176852978888182">Спільні каталоги Linux</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Ярлик змінено</translation> +<translation id="8018298733481692628">Видалити цей профіль?</translation> <translation id="8018313076035239964">Налаштуйте, яку інформацію можуть використовувати веб-сайти та який вміст вони можуть показувати</translation> <translation id="8023801379949507775">Оновити розширення зараз</translation> <translation id="8026334261755873520">Очистити історію</translation> @@ -6291,7 +6297,6 @@ <translation id="8211551284753798479">Недійсний PUK-код. Залишилося спроб: <ph name="RETRIES" />.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Триває завантаження}one{Тривають завантаження}few{Тривають завантаження}many{Тривають завантаження}other{Тривають завантаження}}</translation> <translation id="8213449224684199188">Увімкнено режим фото</translation> -<translation id="8213866992824776555">Домен <ph name="DOMAIN" /> хоче отримати унікальний ідентифікатор вашого пристрою, щоб відтворювати захищені відео й аудіо в найвищій якості.</translation> <translation id="8214489666383623925">Відкрити файл...</translation> <translation id="8214962590150211830">Видалити цього користувача</translation> <translation id="8216351761227087153">Дивитися</translation> @@ -6770,7 +6775,6 @@ <translation id="8774379074441005279">Підтвердити відновлення</translation> <translation id="8774934320277480003">Верхнє поле</translation> <translation id="8775144690796719618">Недійсна URL-адреса</translation> -<translation id="8775163630211761057">Користуйтеся найкращими функціями телефона Android на пристрої <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> буде автоматично заблоковано через # секунду. Домен <ph name="DOMAIN" /> вимагає, щоб ви не виймали розумну картку.}one{<ph name="DEVICE_TYPE" /> буде автоматично заблоковано через # секунду. Домен <ph name="DOMAIN" /> вимагає, щоб ви не виймали розумну картку.}few{<ph name="DEVICE_TYPE" /> буде автоматично заблоковано через # секунди. @@ -6962,6 +6966,7 @@ <translation id="8973596347849323817">Ви можете налаштувати цей пристрій для своїх потреб. Ці спеціальні можливості можна пізніше змінити в налаштуваннях.</translation> <translation id="897414447285476047">Через проблеми підключення кінцевий файл неповний.</translation> <translation id="897525204902889653">Сервіс для карантину</translation> +<translation id="8975396729541388937">Ви можете будь-коли скасувати підписку, натиснувши відповідне посилання в одному з отриманих листів.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" і ще 1 вкладка}one{"<ph name="TAB_TITLE" />" і ще # вкладка}few{"<ph name="TAB_TITLE" />" і ще # вкладки}many{"<ph name="TAB_TITLE" />" і ще # вкладок}other{"<ph name="TAB_TITLE" />" і ще # вкладки}}</translation> <translation id="8977811652087512276">Неправильний пароль або пошкоджений файл</translation> <translation id="8978154919215542464">Увімкнено – синхронізувати все</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index 1761cb1..b57216f 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -877,7 +877,6 @@ <translation id="1954813140452229842">اشتراک کو ماؤنٹ کرنے میں خرابی آگئی ۔ براہ کرم اپنے اسنادات چیک کریں اور دوبارہ کوشش کریں۔</translation> <translation id="1956050014111002555">فائل میں متعدد سرٹیفیکیٹس شامل ہیں، ان میں سے کسی کو درآمد نہیں کیا گیا:</translation> <translation id="1956390763342388273">اس سے "<ph name="FOLDER_PATH" />" کی سبھی فائلز اپ لوڈ ہو جائیں گی۔ سائٹ پر اعتماد ہونے پر ہی ایسا کريں۔</translation> -<translation id="1960158217849594135">آپ کے Google اکاؤنٹ میں صارف نام محفوظ کریں؟</translation> <translation id="196040970347962278">پہلے ایک انٹرنیٹ کنکشن قائم کریں</translation> <translation id="1962233722219655970">یہ صفحہ ایک Native Client ایپ استعمال کرتا ہے جو آپ کے کمپیوٹر پر کام نہیں کرتی ہے۔</translation> <translation id="1963227389609234879">سبھی کو ہٹائیں</translation> @@ -1048,7 +1047,6 @@ <translation id="2157474325782140681">اضافی خصوصیات حاصل کرنے کیلئے، اس Chromebook کے ساتھ کام کرنے کیلئے ڈیزائن کردہ ایک Dell ڈاکنگ اسٹیشن استعمال کریں۔</translation> <translation id="215753907730220065">پوری اسکرین سے خارج ہوں</translation> <translation id="2157875535253991059">یہ صفحہ اب پوری اسکرین ہے۔</translation> -<translation id="2160589599612868242">اپنے <ph name="DEVICE_TYPE" /> پر اپنے فون سے اطلاعات موصول کریں</translation> <translation id="216169395504480358">Wi-Fi شامل کریں…</translation> <translation id="2162155940152307086">آپ کی مطابقت پذیری کی ترتیبات کو چھوڑنے پر مطابقت پذیری شروع ہوگی</translation> <translation id="2162838847352058695">سائٹس کو خود بخود متعدد فائلز ڈاؤن لوڈ کرنے سے مسدود کریں</translation> @@ -1701,7 +1699,6 @@ <translation id="2885729872133513017">سرور کے جواب کو ڈیکوڈ کرنے میں ایک مسئلہ پیش آگیا۔</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">اس کے ساتھ لنک کھولیں…</translation> -<translation id="2889481634493693121">اپنے فون پر اطلاعات کو آن کریں</translation> <translation id="2889925978073739256">سینڈ باکس سے نکالے ہوئے پلگ انز کو مسدود کرنا جاری رکھیں</translation> <translation id="2893168226686371498">ڈیفالٹ براؤزر</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 ٹیکسٹ}other{# ٹیکسٹس}}</translation> @@ -2602,6 +2599,7 @@ <translation id="3900789207771372462">کچھ ایکسٹینشنز آپ کی براؤزنگ سرگرمی - بشمول ذاتی معلومات دیکھ سکتی ہیں۔</translation> <translation id="3900966090527141178">پاس ورڈز برآمد کریں</translation> <translation id="3901991538546252627"><ph name="NAME" /> سے منسلک کیا جا رہا ہے</translation> +<translation id="3903187154317825986">پہلے سے شامل کی بورڈ</translation> <translation id="3904326018476041253">مقام کی سروسز</translation> <translation id="3905761538810670789">ایپ کو درست کریں</translation> <translation id="3906232975181435906">موبائل پروفائل انسٹال ہو رہی ہے، نیٹ ورک <ph name="NETWORK_INDEX" /> از <ph name="NETWORK_COUNT" />، <ph name="NETWORK_NAME" /></translation> @@ -2802,7 +2800,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">آلے کا لاگ</translation> <translation id="4130207949184424187">آپ کی جانب سے اومنی باکس سے تلاش کرنے پر دکھائی دینے والے صفحہ کو اس ایکسٹینشن نے تبدیل کر دیا ہے۔</translation> -<translation id="4130344535649650885">آپ کے Google اکاؤنٹ میں پاس ورڈ کو محفوظ کریں؟</translation> <translation id="4130750466177569591">میں متفق ہوں</translation> <translation id="413121957363593859">اجزاء</translation> <translation id="4131410914670010031">سیاہ اور سفید</translation> @@ -2899,6 +2896,7 @@ <translation id="4267924571297947682">اجازت کے ليے والد/والدہ سے پوچھیں</translation> <translation id="4267953847983678297">سیلولر نیٹ ورک سے خودکار طور پر منسلک ہوں</translation> <translation id="4268025649754414643">کلید کی خفیہ کاری</translation> +<translation id="4268670020635416342">کوئی نام یا دفتر، ذاتی یا بچے جیسے لیبل شامل کریں</translation> <translation id="4270393598798225102">ورژن <ph name="NUMBER" /></translation> <translation id="4274667386947315930">سائن ان ڈیٹا</translation> <translation id="4275291496240508082">اسٹارٹ اپ کی آواز</translation> @@ -3928,7 +3926,6 @@ <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="5503858713116291452">یقینی بنائیں کہ آپ کا فون قریب میں ہے، غیر مقفل ہے اور اس میں بلوٹوتھ اور Wi-Fi آن ہے۔ سیٹ اپ مکمل کرنے کے لئے اپنے فون پر اقدامات کی پیروی کریں۔</translation> <translation id="5503982651688210506"><ph name="HOST" /> کو اپنا کیمرا استعمال اور منتقل کرنے کی اجازت دینا جاری رکھیں اور اپنا مائیکروفون استعمال کریں</translation> <translation id="5505264765875738116">سائٹس اطلاعات بھیجنے کے لیے نہیں کہہ سکتی ہیں</translation> <translation id="5505307013568720083">سیاہی ختم ہو گئی</translation> @@ -3989,6 +3986,7 @@ <translation id="5565735124758917034">فعال</translation> <translation id="5567989639534621706">ایپلیکیشن کیشیز</translation> <translation id="5568069709869097550">سائن نہیں کیا جا سکتا ہے</translation> +<translation id="5571832155627049070">اپنی پروفائل حسب ضرورت بنائیں</translation> <translation id="5572851009514199876">براہ کرم شروع کریں اور Chrome میں سائن ان کریں تاکہ Chrome یہ چیک کر سکے کہ آیا آپ کو اس سائٹ تک رسائی کی اجازت ہے۔</translation> <translation id="5575473780076478375">پوشیدگی ایکسٹینشن: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">ڈیمو کی رجسٹریشن کی درخواست کے ساتھ ایک مسئلہ پیش آگیا۔</translation> @@ -4614,6 +4612,7 @@ <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{آپ کے نیٹ ورک پر نیا پرنٹر}other{آپ کے نیٹ ورک پر نئے پرنٹرز}}</translation> <translation id="6285770818046456882">آپ کے ساتھ اشتراک کرنے والے آلے نے منتقلی کو منسوخ کر دیا</translation> <translation id="6290613030083731160">قریبی اشتراک کرنے والا کوئی بھی آلہ دستیاب نہیں ہے۔ <ph name="LINK_BEGIN" />مزید جانیں<ph name="LINK_END" /></translation> +<translation id="6291741848715722067">توثیقی کوڈ</translation> <translation id="6291949900244949761">جب کوئی سائٹ USB آلات تک رسائی حاصل کرنا چاہے تو پوچھیں (تجویز کردہ)</translation> <translation id="6291953229176937411">فائنڈر میں &دکھائیں</translation> <translation id="6295158916970320988">سبھی سائٹس</translation> @@ -5839,6 +5838,7 @@ <translation id="7719367874908701697">صفحہ کا زوم</translation> <translation id="7719588063158526969">آلے کا نام بہت لمبا ہے</translation> <translation id="7721179060400456005">ونڈوز کو ڈسپلیز پھیلانے کی اجازت دیں</translation> +<translation id="7721237513035801311"><ph name="SWITCH" /> (<ph name="DEVICE_TYPE" />)</translation> <translation id="7722040605881499779">اپ ڈیٹ کرنے کی ضرورت ہے: <ph name="NECESSARY_SPACE" /></translation> <translation id="7724603315864178912">کٹ کریں</translation> <translation id="7728465250249629478">آلہ کی زبان تبدیل کریں</translation> @@ -5870,6 +5870,7 @@ <translation id="7765158879357617694">منتقل کریں</translation> <translation id="7765507180157272835">بلوٹوتھ اور Wi-Fi درکار ہے</translation> <translation id="7766082757934713382">ایپس اور سسٹم کی خودکار اپ ڈیٹس کو موقوف کرنے سے نیٹ ورک ڈیٹا کے استعمال میں کمی آتی ہے</translation> +<translation id="7766807826975222231">ایک ٹؤر لیں</translation> <translation id="7766838926148951335">اجازتیں قبول کریں</translation> <translation id="7768507955883790804">آپ کے سائٹس کو ملاحظہ کرنے پر وہ خود کار طور پر اس ترتیب کی پیروی کرتی ہیں</translation> <translation id="7768770796815395237">تبدیل کریں</translation> @@ -6284,7 +6285,6 @@ <translation id="8211551284753798479">غلط PUK۔ آپ کے پاس <ph name="RETRIES" /> کوششیں بچی ہیں۔</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ڈاؤن لوڈ پیش رفت میں ہے}other{ڈاؤن لوڈز پیش رفت میں ہیں}}</translation> <translation id="8213449224684199188">تصویر کی وضع میں داخل ہو گئے</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> آپ کے آلے کی شناخت کرنا چاہتا ہے تاکہ یہ اعلی ترین معیار کی محفوظ کردہ ویڈیو اور آڈیو چلا سکے۔</translation> <translation id="8214489666383623925">فائل کھولیں…</translation> <translation id="8214962590150211830">اس شخص کو ہٹا دیں</translation> <translation id="8216351761227087153">دیکھیں</translation> @@ -6763,7 +6763,6 @@ <translation id="8774379074441005279">بحالی کی تصدیق کریں</translation> <translation id="8774934320277480003">اوپری مارجن</translation> <translation id="8775144690796719618">غلط URL</translation> -<translation id="8775163630211761057">اپنے Android فون کی بہترین چیزوں کا استعمال اپنے <ph name="DEVICE_TYPE" /> میں کریں</translation> <translation id="8775653927968399786">{0,plural, =1{آپ کا <ph name="DEVICE_TYPE" /> # سیکنڈ میں خودکار طور پر مقفل ہو جائے گا۔ <ph name="DOMAIN" /> آپ سے اپنا سمارٹ کارڈ داخل کئے رکھنے کا تقاضا کرتا ہے۔}other{آپ کا <ph name="DEVICE_TYPE" /> # سیکنڈ میں خودکار طور پر مقفل ہو جائے گا۔ <ph name="DOMAIN" /> آپ سے اپنا سمارٹ کارڈ داخل کئے رکھنے کا تقاضا کرتا ہے۔}}</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index 9d395b3a..fe05452f 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Hech qaysi parolingiz oshkor etilmagan}=1{1 ta parol oshkor etilgan}other{{NUM_COMPROMISED} ta parol oshkor etilgan}}</translation> <translation id="1380028686461971526">Tarmoqqa avtomatik ulanish</translation> <translation id="1380436189840894976">Inkognito rejimidan baribir chiqilsinmi?</translation> +<translation id="1383597849754832576">Avtomatik subtitr fayllarni yuklanmadi. Keyinroq urining.</translation> <translation id="1383861834909034572">Yuklab olingandan keyin ochish</translation> <translation id="1383876407941801731">Qidiruv</translation> <translation id="1386791642444521222">Jismoniy SIM kartani faollashtiring</translation> @@ -874,7 +875,6 @@ <translation id="1954813140452229842">Umumiy ruxsat berishda xatolik yuz berdi. Hisob axborotini tekshiring va qaytadan urining.</translation> <translation id="1956050014111002555">Fayl o‘z ichiga bir necha sertifikatlarni olgan, ulardan hech biri import qilinmadi:</translation> <translation id="1956390763342388273">“<ph name="FOLDER_PATH" />” jildidagi barcha fayllar yuklanadi. Bu saytga ishonsangiz, davom ettiring.</translation> -<translation id="1960158217849594135">Foydalanuvchi nomi Google hisobiga saqlansinmi?</translation> <translation id="196040970347962278">Avval internetga ulaning</translation> <translation id="1962233722219655970">Bu sahifa Nativ mijoz ilovasidan foydalanadi, u sizning kompyuteringizda ishlamaydi.</translation> <translation id="1963227389609234879">Hammasini o‘chirish</translation> @@ -900,6 +900,7 @@ <translation id="1984417487208496350">Himoyasiz (tavsiya etilmaydi)</translation> <translation id="1987317783729300807">Hisoblar</translation> <translation id="1989112275319619282">Tanlash</translation> +<translation id="1990046457226896323">Avtomatik subtitr fayllari yuklab olindi</translation> <translation id="1990512225220753005">Bu sahifada chiqmasin</translation> <translation id="1992397118740194946">O‘rnatilmagan</translation> <translation id="1992924914582925289">Qurilmadan olib tashlash</translation> @@ -1045,7 +1046,6 @@ <translation id="2157474325782140681">Qoʻshimcha funksiyalardan foydalanish uchun bu Chromebook bilan sinalgan Dell dok stansiyasini ishlating.</translation> <translation id="215753907730220065">To‘liq ekran rejimidan chiqish</translation> <translation id="2157875535253991059">Ushbu sahifa hozir to‘liq ekran rejimida.</translation> -<translation id="2160589599612868242">Telefoningiz bildirishnomalarini <ph name="DEVICE_TYPE" /> qurilmangizda oling</translation> <translation id="216169395504480358">Wi-Fi ulanishini qo‘shish...</translation> <translation id="2162155940152307086">Sync sozlamalaridan chiqishingiz bilan sinxronizatsiya boshlanadi</translation> <translation id="2162838847352058695">Saytlarga bir nechta faylni avtomatik yuklab olishni taqiqlash</translation> @@ -1263,6 +1263,7 @@ <translation id="2399699884460174994">Bildirishnomalar yoqildi</translation> <translation id="2399939490305346086">Elektron kalitdagi kirish maʼlumotlari</translation> <translation id="2400664245143453337">Hoziroq yangilanishi zarur</translation> +<translation id="2406153734066939945">Bu profil va undagi axborotlar oʻchirilsinmi?</translation> <translation id="2408018932941436077">Karta saqlanmoqda</translation> <translation id="2408955596600435184">PIN kodni kiriting</translation> <translation id="241082044617551207">Noma’lum plagin</translation> @@ -1381,6 +1382,7 @@ <translation id="2526590354069164005">Ish soli</translation> <translation id="2526619973349913024">Yangilanishlarni tekshirish</translation> <translation id="2527167509808613699">Har qanday ulanishlar</translation> +<translation id="2530166226437958497">Nosozliklarni tuzatish</translation> <translation id="2532589005999780174">Yuqori kontrastli rejim</translation> <translation id="253434972992662860">&Vaqtincha to‘xtatish</translation> <translation id="2534460670861217804">Xavfsiz HTTP proksi-server</translation> @@ -1698,7 +1700,6 @@ <translation id="2885729872133513017">Server javobi deshifrlanmadi.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Havolani ochish...</translation> -<translation id="2889481634493693121">Telefonda bildirishnomalarni yoqing</translation> <translation id="2889925978073739256">Sinov muhitida bo‘lmagan plaginlar har doim bloklnansin</translation> <translation id="2893168226686371498">Standart brauzer</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 ta matn}other{# ta matn}}</translation> @@ -2558,6 +2559,7 @@ <translation id="3857807444929313943">Barmoqni oling va qaytadan tekkizing</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sinxronizatsiya to‘xtatilgan</translation> <translation id="3861638017150647085">“<ph name="USERNAME" />” nomi band</translation> +<translation id="3861977424605124250">Boshlanishida koʻrsatilsin</translation> <translation id="3862693525629180217">Ichki o‘rnatilgan sensor orqali tasdiqlash</translation> <translation id="3862788408946266506">Manifest faylida “kiosk_only” atributi mavjud ilovalarni Chrome OS‘da faqatgina kiosk rejimida o‘rnatish mumkin</translation> <translation id="3865414814144988605">Piksellar sig‘imi</translation> @@ -2800,7 +2802,6 @@ <translation id="412730574613779332">Superqahramon</translation> <translation id="4130199216115862831">Qurilma jurnali</translation> <translation id="4130207949184424187">Bu kengaytma omniboks orqali qidiruv so‘rovini kiritganda ishlatiladigan birlamchi qidiruv tizimini o‘zgartirdi.</translation> -<translation id="4130344535649650885">Parol Google hisobingizga saqlansinmi?</translation> <translation id="4130750466177569591">Men roziman</translation> <translation id="413121957363593859">Komponentlar</translation> <translation id="4131410914670010031">Oq-qora</translation> @@ -3199,6 +3200,7 @@ <translation id="4627442949885028695">Ishni boshqa qurilmada davom ettirish</translation> <translation id="4628757576491864469">Qurilmalar</translation> <translation id="4628762811416793313">Linux konteyneri toʻliq sozlanmagan. Qaytadan urining.</translation> +<translation id="4629521233550547305"><ph name="PROFILE_NAME" /> profilini ochish</translation> <translation id="4633003931260532286">Kengaytmaga kamida “<ph name="IMPORT_VERSION" />” versiyadagi “<ph name="IMPORT_NAME" />” kerak, lekin hozir “<ph name="INSTALLED_VERSION" />” versiyasi o‘rnatilgan</translation> <translation id="4633757335284074492">Google Drive omboriga zaxiralash. Axborotlaringizni osongina tiklashingiz yoki qurilmangizni xohlagan vaqtda almashtirishingiz mumkin. Zaxira ichida ilova maʼlumotlari ham bor. Zaxiralar Google serverlariga yuklanadi va farzandingizning Google hisobingiz paroli bilan shifrlanadi.</translation> <translation id="4634575639321169635">Bu qurilmada ish va shaxsiy profillarni sozlash</translation> @@ -3927,7 +3929,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="DEVICE_NAME" /> qurilmasidan <ph name="ATTACHMENTS" /> qabul qilinmadi}other{<ph name="DEVICE_NAME" /> qurilmasidan <ph name="ATTACHMENTS" /> qabul qilinmadi}}</translation> <translation id="5502500733115278303">Firefox brauzeridan import qilinganlar</translation> <translation id="5502915260472117187">Bola</translation> -<translation id="5503858713116291452">Telefoningiz yoningizda, qulflanmagan va undagi Bluetooth, Wi-Fi yoniqligini tekshiring. Sozlashni yakunlash uchun telefonda quyidagi amallarni bajaring</translation> <translation id="5503982651688210506"><ph name="HOST" /> saytiga kameradan foydalanish va siljitish, mikrofondan foydalanish uchun ruxsat berish</translation> <translation id="5505264765875738116">Saytlar bildirishnoma chiqarishga ruxsat soʻray olmaydi</translation> <translation id="5505307013568720083">Siyoh tugagan</translation> @@ -3988,6 +3989,7 @@ <translation id="5565735124758917034">Faol</translation> <translation id="5567989639534621706">Ilova keshlari</translation> <translation id="5568069709869097550">Kirish amalga oshmadi</translation> +<translation id="5571832155627049070">Profilingizni moslang</translation> <translation id="5572851009514199876">Chrome brauzerini ishga tushiring va hisobingizga kiring. Shundan keyin Chrome bu saytga ruxsat berilganini tekshira oladi.</translation> <translation id="5575473780076478375">Inkognito rejimidagi kengaytma: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Demo rejimni qayd qilish vaqtida xatolik yuz berdi.</translation> @@ -5456,6 +5458,7 @@ <translation id="7280649757394340890">Nutq sintezatori uchun ovoz sozlamalari</translation> <translation id="7280877790564589615">Ruxsat so‘ralmoqda</translation> <translation id="7282992757463864530">Axborot paneli</translation> +<translation id="7283555985781738399">Mehmon rejimi</translation> <translation id="7284411326658527427">Har bir odamning hisobi alohida moslashtiriladi va ularning maʼlumotlari xavfsiz saqlanadi.</translation> <translation id="7287143125007575591">Ruxsat berilmadi.</translation> <translation id="7287411021188441799">Standart fonni tiklash</translation> @@ -5835,6 +5838,7 @@ <translation id="7716781361494605745">Netscape sertifikat markazi URL manzili</translation> <translation id="7717014941119698257">Yuklab olinmoqda: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Saytlar joylashuv axborotiga ruxsat soʻrashi mumkin (tavsiya etiladi)</translation> +<translation id="771721654176725387">Bu foydalanuvchi brauzerining tarixi ushbu qurilmadan butunlay tozalanadi. Axborotlarni tiklash uchun sinxronizatsiyani yoqing</translation> <translation id="7717845620320228976">Yangilanish borligini tekshirish</translation> <translation id="7719367874908701697">Sahifa masshtabi</translation> <translation id="7719588063158526969">Qurilma nomi juda uzun</translation> @@ -5871,6 +5875,7 @@ <translation id="7765158879357617694">Ko‘chirib o‘tkazish</translation> <translation id="7765507180157272835">Bluetooth va Wi-Fi aloqasi zarur</translation> <translation id="7766082757934713382">Tarmoq trafik sarfini avtomatik ishga tushuvchi ilovalar va tizim uchun yangilanishlarni pauza qilish orqali kamaytirish mumkin.</translation> +<translation id="7766807826975222231">Ko‘proq o‘rganish</translation> <translation id="7766838926148951335">Ruxsatlarni qabul qilish</translation> <translation id="7768507955883790804">Saytlarga tashrif vaqtida bu sozlama avtomatik tatbiq qilinadi</translation> <translation id="7768770796815395237">Oʻzgartirish</translation> @@ -6113,6 +6118,7 @@ <translation id="8016266267177410919">Vaqtinchalik saqlash jildi</translation> <translation id="8017176852978888182">Linux umumiy kataloglari</translation> <translation id="8017679124341497925">Yorliq tahrirlandi</translation> +<translation id="8018298733481692628">Bu profil oʻchirilsinmi?</translation> <translation id="8018313076035239964">Qanday saytlarni sizga ko‘rsatish mumkinligi va ularni sizning qanday ma’lumotlaringizdan foydalanishini nazorat qilish</translation> <translation id="8023801379949507775">Kengaytmalarni hoziroq yangilash</translation> <translation id="8026334261755873520">Brauzer tarixini tozalash</translation> @@ -6283,7 +6289,6 @@ <translation id="8211551284753798479">PUK kod xato. Sizda <ph name="RETRIES" /> ta urinish qoldi.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Yuklab olinmoqda}other{Yuklab olinmoqda}}</translation> <translation id="8213449224684199188">Foto rejimi yoqildi</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> himoyalangan yuqori sifatli video va audio qaysi qurilmada ijro qilinishini tanlashingizni talab qilmoqda.</translation> <translation id="8214489666383623925">Faylni ochish...</translation> <translation id="8214962590150211830">Foydalanuvchini o‘chirish</translation> <translation id="8216351761227087153">Tamosha qilish</translation> @@ -6762,7 +6767,6 @@ <translation id="8774379074441005279">Tiklashni tasdiqlang</translation> <translation id="8774934320277480003">Yuqori hoshiya</translation> <translation id="8775144690796719618">URL manzil yaroqsiz</translation> -<translation id="8775163630211761057">Android telefoningizdagi narsalarni <ph name="DEVICE_TYPE" /> qurilmangizga uzating</translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> qurilmangiz # soniyadan keyin avtomatik qulflanadi. <ph name="DOMAIN" /> smart karta kiritilishini talab qilmoqda.}other{<ph name="DEVICE_TYPE" /> qurilmangiz # soniyadan keyin avtomatik qulflanadi. <ph name="DOMAIN" /> smart karta kiritilishini talab qilmoqda.}}</translation> @@ -6951,6 +6955,7 @@ <translation id="8973596347849323817">Qurilmangizdan qulay foydalanish uchun maxsus imkoniyatlardan foydalaning. Bu parametrlarni keyinroq sozlamalar orqali o‘zgartirish mumkin.</translation> <translation id="897414447285476047">Bu fayl ulanishdagi muammo tufayli oxirgacha yuklab olinmagan.</translation> <translation id="897525204902889653">Karantinlash xizmati</translation> +<translation id="8975396729541388937">Sizga kelgan emaildagi havolaga bosib, istalgan vaqtda obunani bekor qilishingiz mumkin.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{“<ph name="TAB_TITLE" />”}=1{“<ph name="TAB_TITLE" />” va yana 1 ta varaq}other{“<ph name="TAB_TITLE" />” va yana # ta varaq}}</translation> <translation id="8977811652087512276">Parol xato yoki fayl shikastlangan</translation> <translation id="8978154919215542464">Yoniq (hamma narsani sinxronlash)</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index 146325f..b9ea82a 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Không có mật khẩu nào bị lộ}=1{1 mật khẩu bị lộ}other{{NUM_COMPROMISED} mật khẩu bị lộ}}</translation> <translation id="1380028686461971526">Tự động kết nối mạng</translation> <translation id="1380436189840894976">Bạn vẫn muốn thoát khỏi chế độ ẩn danh?</translation> +<translation id="1383597849754832576">Không thể tải tệp mã chuyển lời nói thành văn bản xuống. Hãy thử lại sau.</translation> <translation id="1383861834909034572">Mở khi hoàn tất</translation> <translation id="1383876407941801731">Tìm kiếm</translation> <translation id="1386791642444521222">Kích hoạt SIM vật lý</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">Lỗi khi kết nối với thư mục chia sẻ. Vui lòng kiểm tra thông tin đăng nhập của bạn rồi thử lại.</translation> <translation id="1956050014111002555">Tệp chứa nhiều chứng chỉ, chưa có chứng chỉ nào trong số đó được nhập:</translation> <translation id="1956390763342388273">Thao tác này sẽ tải tất cả các tệp từ "<ph name="FOLDER_PATH" />" lên. Chỉ thực hiện thao tác này nếu bạn tin tưởng trang web.</translation> -<translation id="1960158217849594135">Lưu tên người dùng vào Tài khoản Google của bạn?</translation> <translation id="196040970347962278">Thiết lập kết nối Internet trước khi tiếp tục</translation> <translation id="1962233722219655970">Trang này sử dụng ứng dụng Native Client không hoạt động trên máy tính của bạn.</translation> <translation id="1963227389609234879">Xóa Tất cả</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">Không được bảo vệ (không khuyến nghị)</translation> <translation id="1987317783729300807">Tài khoản</translation> <translation id="1989112275319619282">Duyệt qua</translation> +<translation id="1990046457226896323">Đã tải tệp mã chuyển lời nói thành văn bản xuống</translation> <translation id="1990512225220753005">Không hiển thị lối tắt trên trang này</translation> <translation id="1992397118740194946">Chưa đặt</translation> <translation id="1992924914582925289">Xóa khỏi thiết bị</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">Để có thêm tính năng, hãy sử dụng đế sạc Dell tương thích với Chromebook này.</translation> <translation id="215753907730220065">Thoát khỏi Chế độ Toàn màn hình</translation> <translation id="2157875535253991059">Trang này hiện ở chế độ toàn màn hình.</translation> -<translation id="2160589599612868242">Nhận các thông báo của điện thoại trên <ph name="DEVICE_TYPE" /> của bạn</translation> <translation id="216169395504480358">Thêm Wi-Fi...</translation> <translation id="2162155940152307086">Quá trình đồng bộ hóa sẽ bắt đầu sau khi bạn thoát khỏi trang cài đặt đồng bộ hóa</translation> <translation id="2162838847352058695">Không cho các trang web tự động tải nhiều tệp xuống</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">Đã bật thông báo</translation> <translation id="2399939490305346086">Dữ liệu đăng nhập trên khóa bảo mật</translation> <translation id="2400664245143453337">Bạn cần cập nhật ngay</translation> +<translation id="2406153734066939945">Xóa hồ sơ này và dữ liệu của hồ sơ?</translation> <translation id="2408018932941436077">Đang lưu thẻ</translation> <translation id="2408955596600435184">Nhập mã PIN của bạn</translation> <translation id="241082044617551207">Plugin không rõ</translation> @@ -1383,6 +1384,7 @@ <translation id="2526590354069164005">Màn hình nền</translation> <translation id="2526619973349913024">Kiểm tra bản cập nhật</translation> <translation id="2527167509808613699">Bất kỳ loại kết nối</translation> +<translation id="2530166226437958497">Khắc phục sự cố</translation> <translation id="2532589005999780174">Chế độ tương phản cao</translation> <translation id="253434972992662860">&Tạm dừng</translation> <translation id="2534460670861217804">Proxy HTTP bảo mật</translation> @@ -1700,7 +1702,6 @@ <translation id="2885729872133513017">Đã xảy ra lỗi khi giải mã phản hồi của máy chủ.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Mở liên kết bằng...</translation> -<translation id="2889481634493693121">Bật thông báo trên điện thoại của bạn</translation> <translation id="2889925978073739256">Tiếp tục chặn plugin không có hộp cát</translation> <translation id="2893168226686371498">Trình duyệt mặc định</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 văn bản}other{# văn bản}}</translation> @@ -2560,6 +2561,7 @@ <translation id="3857807444929313943">Nhấc ngón tay lên rồi chạm lại</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Đã tạm dừng đồng bộ hóa</translation> <translation id="3861638017150647085">Tên người dùng "<ph name="USERNAME" />" không có sẵn</translation> +<translation id="3861977424605124250">Hiển thị khi khởi động</translation> <translation id="3862693525629180217">Xác minh qua cảm biến tích hợp</translation> <translation id="3862788408946266506">Phải cài đặt ứng dụng có thuộc tính tệp kê khai 'kiosk_only' ở chế độ kiosk Chrome OS</translation> <translation id="3865414814144988605">Độ phân giải</translation> @@ -2802,7 +2804,6 @@ <translation id="412730574613779332">Spandex</translation> <translation id="4130199216115862831">Nhật ký thiết bị</translation> <translation id="4130207949184424187">Tiện ích này đã thay đổi trang nào được hiển thị khi bạn tìm kiếm từ Thanh địa chỉ.</translation> -<translation id="4130344535649650885">Lưu mật khẩu vào Tài khoản Google của bạn?</translation> <translation id="4130750466177569591">Tôi đồng ý</translation> <translation id="413121957363593859">Thành phần</translation> <translation id="4131410914670010031">Đen và trắng</translation> @@ -3201,6 +3202,7 @@ <translation id="4627442949885028695">Tiếp tục từ thiết bị khác</translation> <translation id="4628757576491864469">Thiết bị</translation> <translation id="4628762811416793313">Quá trình thiết lập vùng chứa Linux chưa hoàn tất. Vui lòng thử lại.</translation> +<translation id="4629521233550547305">Mở hồ sơ <ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Tiện ích yêu cầu "<ph name="IMPORT_NAME" />" có phiên bản tối thiểu "<ph name="IMPORT_VERSION" />" nhưng mới chỉ cài đặt được phiên bản "<ph name="INSTALLED_VERSION" />"</translation> <translation id="4633757335284074492">Sao lưu vào Google Drive. Dễ dàng khôi phục dữ liệu hoặc chuyển đổi thiết bị bất cứ lúc nào. Bản sao lưu này bao gồm cả dữ liệu ứng dụng. Các bản sao lưu được tải lên Google và mã hóa bằng mật khẩu Tài khoản Google của con bạn.</translation> <translation id="4634575639321169635">Thiết lập thiết bị này cho mục đích cá nhân hoặc công việc</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Không nhận được <ph name="ATTACHMENTS" /> từ thiết bị <ph name="DEVICE_NAME" />}other{Không nhận được <ph name="ATTACHMENTS" /> từ thiết bị <ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Đã nhập từ Firefox</translation> <translation id="5502915260472117187">Một trẻ</translation> -<translation id="5503858713116291452">Hãy đảm bảo điện thoại của bạn đang ở gần, mở khóa, đồng thời đã bật Bluetooth và Wi-Fi. Làm theo các bước trên điện thoại để hoàn tất quá trình thiết lập.</translation> <translation id="5503982651688210506">Tiếp tục cho phép <ph name="HOST" /> dùng và di chuyển máy ảnh, cũng như sử dụng micrô</translation> <translation id="5505264765875738116">Các trang web không thể xin phép gửi thông báo</translation> <translation id="5505307013568720083">Hết mực</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Đang hoạt động</translation> <translation id="5567989639534621706">Bộ nhớ đệm của ứng dụng</translation> <translation id="5568069709869097550">Không thể đăng nhập</translation> +<translation id="5571832155627049070">Tùy chỉnh hồ sơ của bạn</translation> <translation id="5572851009514199876">Vui lòng khởi động và đăng nhập vào Chrome để Chrome có thể kiểm tra xem bạn có được phép truy cập trang web này không.</translation> <translation id="5575473780076478375">Tiện ích Ẩn danh: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Đã xảy ra lỗi với yêu cầu đăng ký chế độ minh họa.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Cài đặt giọng nói của tính năng chuyển văn bản sang lời nói</translation> <translation id="7280877790564589615">Đã yêu cầu quyền</translation> <translation id="7282992757463864530">Thanh thông tin</translation> +<translation id="7283555985781738399">Chế độ khách</translation> <translation id="7284411326658527427">Mỗi người đều có thể điều chỉnh tài khoản theo cách riêng và bảo mật dữ liệu.</translation> <translation id="7287143125007575591">Truy cập bị từ chối.</translation> <translation id="7287411021188441799">Khôi phục nền mặc định</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">URL chính sách của tổ chức phát hành chứng chỉ Netscape</translation> <translation id="7717014941119698257">Đang tải xuống: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Các trang web có thể yêu cầu thông tin vị trí của bạn (khuyến nghị)</translation> +<translation id="771721654176725387">Thao tác này sẽ xóa vĩnh viễn dữ liệu duyệt web của bạn khỏi thiết bị này. Để khôi phục dữ liệu, hãy bật tùy chọn đồng bộ hóa cho địa chỉ email</translation> <translation id="7717845620320228976">Kiểm tra bản cập nhật</translation> <translation id="7719367874908701697">Thu phóng trang</translation> <translation id="7719588063158526969">Tên thiết bị quá dài</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Di chuyển</translation> <translation id="7765507180157272835">Cần có Bluetooth và Wi-Fi</translation> <translation id="7766082757934713382">Giúp giảm mức sử dụng dữ liệu mạng bằng cách tạm dừng chế độ tự động cập nhật ứng dụng và hệ thống</translation> +<translation id="7766807826975222231">Tìm hiểu thêm</translation> <translation id="7766838926148951335">Chấp nhận quyền</translation> <translation id="7768507955883790804">Các trang web sẽ tự động tuân theo chế độ cài đặt này khi bạn truy cập</translation> <translation id="7768770796815395237">Thay đổi</translation> @@ -6118,6 +6123,7 @@ <translation id="8017176852978888182">Thư mục do Linux chia sẻ</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">Đã chỉnh sửa phím tắt</translation> +<translation id="8018298733481692628">Xóa hồ sơ này?</translation> <translation id="8018313076035239964">Kiểm soát thông tin trang web có thể sử dụng và nội dung trang web có thể hiển thị cho bạn</translation> <translation id="8023801379949507775">Cập nhật tiện ích ngay bây giờ</translation> <translation id="8026334261755873520">Xóa dữ liệu duyệt web</translation> @@ -6288,7 +6294,6 @@ <translation id="8211551284753798479">Mã PUK không hợp lệ. Bạn còn <ph name="RETRIES" /> lần nhập.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Đang tải xuống}other{Đang tải xuống}}</translation> <translation id="8213449224684199188">Đã chuyển sang chế độ ảnh</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> muốn nhận dạng thiết bị của bạn để có thể phát video và âm thanh được bảo vệ với chất lượng cao nhất.</translation> <translation id="8214489666383623925">Mở Tệp...</translation> <translation id="8214962590150211830">Xóa người này</translation> <translation id="8216351761227087153">Xem</translation> @@ -6767,7 +6772,6 @@ <translation id="8774379074441005279">Xác nhận khôi phục</translation> <translation id="8774934320277480003">Lề trên</translation> <translation id="8775144690796719618">URL không hợp lệ</translation> -<translation id="8775163630211761057">Sử dụng mọi thứ có trên chiếc điện thoại Android của bạn thông qua <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> của bạn sẽ tự động khóa sau # giây. <ph name="DOMAIN" /> yêu cầu bạn không tháo thẻ thông minh.}other{<ph name="DEVICE_TYPE" /> của bạn sẽ tự động khóa sau # giây. <ph name="DOMAIN" /> yêu cầu bạn không tháo thẻ thông minh.}}</translation> @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">Bạn có thể tùy chỉnh thiết bị này cho phù hợp với nhu cầu của mình. Bạn có thể thay đổi các tính năng hỗ trợ tiếp cận này trong phần Cài đặt.</translation> <translation id="897414447285476047">Tệp đích chưa hoàn chỉnh do sự cố kết nối.</translation> <translation id="897525204902889653">Dịch vụ cách ly</translation> +<translation id="8975396729541388937">Bạn có thể hủy đăng ký bất kỳ lúc nào bằng cách nhấp vào đường liên kết trong email bạn nhận được.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{"<ph name="TAB_TITLE" />"}=1{"<ph name="TAB_TITLE" />" và 1 thẻ khác}other{"<ph name="TAB_TITLE" />" và # thẻ khác}}</translation> <translation id="8977811652087512276">Mật khẩu không chính xác hoặc tệp lỗi</translation> <translation id="8978154919215542464">Bật - đồng bộ hóa mọi thứ</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index a18f87a..f14f1cf 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -873,7 +873,6 @@ <translation id="1954813140452229842">装载共享资源时出错。请检查您的凭据,然后重试。</translation> <translation id="1956050014111002555">该文件包含多个证书,但均未导入:</translation> <translation id="1956390763342388273">此操作会上传“<ph name="FOLDER_PATH" />”下的所有文件。请仅在您信任该网站的情况下执行此操作。</translation> -<translation id="1960158217849594135">将用户名保存到您的 Google 帐号中?</translation> <translation id="196040970347962278">请先建立互联网连接</translation> <translation id="1962233722219655970">此页使用了您的计算机不支持的 Native Client 应用。</translation> <translation id="1963227389609234879">全部删除</translation> @@ -1044,7 +1043,6 @@ <translation id="2157474325782140681">要获得更多功能,请使用由戴尔专为这款 Chromebook 设计的基座。</translation> <translation id="215753907730220065">退出全屏模式</translation> <translation id="2157875535253991059">此网页现处于全屏模式。</translation> -<translation id="2160589599612868242">在 <ph name="DEVICE_TYPE" /> 上接收手机中的通知</translation> <translation id="216169395504480358">添加 Wi-Fi...</translation> <translation id="2162155940152307086">一旦您离开同步设置页面,同步功能就会启动</translation> <translation id="2162838847352058695">禁止网站自动下载多个文件</translation> @@ -1696,7 +1694,6 @@ <translation id="2885729872133513017">对服务器响应进行解码时出问题了。</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">链接打开方式...</translation> -<translation id="2889481634493693121">在手机上开启通知</translation> <translation id="2889925978073739256">继续拦截未经过沙盒屏蔽的插件</translation> <translation id="2893168226686371498">默认浏览器</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 段文字}other{# 段文字}}</translation> @@ -2797,7 +2794,6 @@ <translation id="412730574613779332">勇士</translation> <translation id="4130199216115862831">设备日志</translation> <translation id="4130207949184424187">此扩展程序更改了您通过多功能框进行搜索时系统显示的页面。</translation> -<translation id="4130344535649650885">将密码保存到您的 Google 帐号中?</translation> <translation id="4130750466177569591">我同意</translation> <translation id="413121957363593859">组件</translation> <translation id="4131410914670010031">黑白色</translation> @@ -3924,7 +3920,6 @@ <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="5503858713116291452">请确保您的手机就在附近、处于解锁状态,且已开启蓝牙和 Wi-Fi。请按照手机上的步骤完成设置。</translation> <translation id="5503982651688210506">继续允许 <ph name="HOST" /> 使用和移动您的摄像头,并允许其使用您的麦克风</translation> <translation id="5505264765875738116">网站无法询问能否向您发送通知</translation> <translation id="5505307013568720083">墨水已耗尽</translation> @@ -3985,6 +3980,7 @@ <translation id="5565735124758917034">主动</translation> <translation id="5567989639534621706">应用缓存</translation> <translation id="5568069709869097550">无法登录</translation> +<translation id="5571832155627049070">自定义您的个人资料</translation> <translation id="5572851009514199876">请启动并登录 Chrome,以便 Chrome 能够检查您是否可以访问此网站。</translation> <translation id="5575473780076478375">隐身模式下使用的应用...<ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">请求注册演示模式时出问题了。</translation> @@ -5869,6 +5865,7 @@ <translation id="7765158879357617694">移动</translation> <translation id="7765507180157272835">需要使用蓝牙和 Wi-Fi</translation> <translation id="7766082757934713382">暂停应用和系统的自动更新,帮助降低网络流量消耗</translation> +<translation id="7766807826975222231">功能导览</translation> <translation id="7766838926148951335">接受权限</translation> <translation id="7768507955883790804">网站会在您访问时自动采用此设置</translation> <translation id="7768770796815395237">更改</translation> @@ -6282,7 +6279,6 @@ <translation id="8211551284753798479">PUK 无效。您还有 <ph name="RETRIES" /> 次尝试机会。</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{有 1 项下载正在进行中}other{有多项下载正在进行中}}</translation> <translation id="8213449224684199188">已进入照片模式</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> 想识别您的设备,以便能以最高品质播放受保护的视频和音频。</translation> <translation id="8214489666383623925">打开文件...</translation> <translation id="8214962590150211830">移除此用户</translation> <translation id="8216351761227087153">观看</translation> @@ -6761,7 +6757,6 @@ <translation id="8774379074441005279">确认恢复</translation> <translation id="8774934320277480003">上边距</translation> <translation id="8775144690796719618">网址无效</translation> -<translation id="8775163630211761057">将 Android 手机上的精华功能和应用延伸到 <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{系统将在 # 秒后自动锁定您的 <ph name="DEVICE_TYPE" />。 <ph name="DOMAIN" /> 要求您使智能卡保持插入状态。}other{系统将在 # 秒后自动锁定您的 <ph name="DEVICE_TYPE" />。 <ph name="DOMAIN" /> 要求您使智能卡保持插入状态。}}</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index f2f4c37..11c4d84 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{沒有密碼被盜用}=1{1 個密碼被盜用}other{{NUM_COMPROMISED} 個密碼被盜用}}</translation> <translation id="1380028686461971526">自動連線至網絡</translation> <translation id="1380436189840894976">仍要離開無痕模式嗎?</translation> +<translation id="1383597849754832576">無法下載即時字幕檔案,請稍後再試。</translation> <translation id="1383861834909034572">完成後開啟</translation> <translation id="1383876407941801731">搜尋</translation> <translation id="1386791642444521222">啟用實體 SIM 卡</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">連接共用裝置時發生錯誤。請檢查您的憑證,然後再試一次。</translation> <translation id="1956050014111002555">檔案含有多個憑證,但全都無法匯入:</translation> <translation id="1956390763342388273">此操作會上載「<ph name="FOLDER_PATH" />」中的所有檔案。請只在您信任該網站的情況下執行此操作。</translation> -<translation id="1960158217849594135">要將使用者名稱儲存至 Google 帳戶嗎?</translation> <translation id="196040970347962278">請先建立互聯網連線</translation> <translation id="1962233722219655970">這個網頁使用無法在您電腦上運行的 Native Client 應用程式。</translation> <translation id="1963227389609234879">全部移除</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">無保護功能 (不建議)</translation> <translation id="1987317783729300807">帳戶</translation> <translation id="1989112275319619282">瀏覽</translation> +<translation id="1990046457226896323">已下載即時字幕檔案</translation> <translation id="1990512225220753005">不要在此頁面顯示捷徑</translation> <translation id="1992397118740194946">未設定</translation> <translation id="1992924914582925289">從裝置中移除</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">如要取得其他功能,請使用此 Chromebook 的專用插座。</translation> <translation id="215753907730220065">結束全螢幕</translation> <translation id="2157875535253991059">這個頁面已顯示為全螢幕。</translation> -<translation id="2160589599612868242">在 <ph name="DEVICE_TYPE" /> 上接收手機的通知</translation> <translation id="216169395504480358">新增 Wi-Fi…</translation> <translation id="2162155940152307086">當您離開同步處理設定頁面後,系統就會啟用同步處理功能</translation> <translation id="2162838847352058695">禁止網站自動下載多個檔案</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">已開啟通知</translation> <translation id="2399939490305346086">安全密鑰登入資料</translation> <translation id="2400664245143453337">必須立即更新</translation> +<translation id="2406153734066939945">要刪除此設定檔和相關資料嗎?</translation> <translation id="2408018932941436077">正在儲存信用卡</translation> <translation id="2408955596600435184">請輸入您的 PIN</translation> <translation id="241082044617551207">不明的外掛程式</translation> @@ -1382,6 +1383,7 @@ <translation id="2526590354069164005">桌面電腦</translation> <translation id="2526619973349913024">檢查更新</translation> <translation id="2527167509808613699">任何類型的連線</translation> +<translation id="2530166226437958497">解決疑難</translation> <translation id="2532589005999780174">高對比度模式</translation> <translation id="253434972992662860">暫停(&P)</translation> <translation id="2534460670861217804">安全的 HTTP Proxy</translation> @@ -1699,7 +1701,6 @@ <translation id="2885729872133513017">解碼伺服器回應時發生問題。</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">使用其他程式開啟連結…</translation> -<translation id="2889481634493693121">在手機上開啟通知功能</translation> <translation id="2889925978073739256">繼續封鎖無沙箱防護的外掛程式</translation> <translation id="2893168226686371498">預設瀏覽器</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 則短訊}other{# 則短訊}}</translation> @@ -2559,6 +2560,7 @@ <translation id="3857807444929313943">提起手指,然後再次輕觸</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />:已暫停同步處理</translation> <translation id="3861638017150647085">使用者名稱「<ph name="USERNAME" />」無法使用</translation> +<translation id="3861977424605124250">啟動時顯示</translation> <translation id="3862693525629180217">透過內置感應器驗證</translation> <translation id="3862788408946266506">含有 "kiosk_only" 資訊清單屬性的應用程式只能在 ChromeOS Kiosk 模式中安裝</translation> <translation id="3865414814144988605">解像度</translation> @@ -2801,7 +2803,6 @@ <translation id="412730574613779332">彈力俠</translation> <translation id="4130199216115862831">裝置記錄</translation> <translation id="4130207949184424187">擴充功能已變更您使用網址列搜尋時所顯示的頁面。</translation> -<translation id="4130344535649650885">要將密碼儲存至 Google 帳戶嗎?</translation> <translation id="4130750466177569591">我同意</translation> <translation id="413121957363593859">組件</translation> <translation id="4131410914670010031">黑白</translation> @@ -3200,6 +3201,7 @@ <translation id="4627442949885028695">先前在其他裝置瀏覽的網頁</translation> <translation id="4628757576491864469">裝置</translation> <translation id="4628762811416793313">未完成 Linux 容器設定。請再試一次。</translation> +<translation id="4629521233550547305">開啟 <ph name="PROFILE_NAME" /> 設定檔</translation> <translation id="4633003931260532286">此擴充程式要求 <ph name="IMPORT_NAME" /> <ph name="IMPORT_VERSION" /> 或以上,但現有版本僅為 <ph name="INSTALLED_VERSION" /></translation> <translation id="4633757335284074492">備份至「Google 雲端硬碟」。您可隨時輕鬆還原資料或改用其他裝置。備份包含應用程式資料。備份會上載至 Google,並使用您子女的 Google 帳戶密碼加密。</translation> <translation id="4634575639321169635">將此裝置設定為工作或個人使用</translation> @@ -3928,7 +3930,6 @@ <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="5503858713116291452">請確認您的手機在附近並已解鎖,且已開啟藍牙和 Wi-Fi。按照手機顯示的步驟完成設定。</translation> <translation id="5503982651688210506">繼續允許 <ph name="HOST" /> 使用和移動相機,以及使用麥克風</translation> <translation id="5505264765875738116">網站將無法要求向您傳送通知</translation> <translation id="5505307013568720083">墨水用完</translation> @@ -3989,6 +3990,7 @@ <translation id="5565735124758917034">啟用</translation> <translation id="5567989639534621706">應用程式快取</translation> <translation id="5568069709869097550">無法登入</translation> +<translation id="5571832155627049070">自訂你的設定檔</translation> <translation id="5572851009514199876">請啟動 Chrome 並登入帳戶,讓 Chrome 確認您是否擁有此網站的存取權。</translation> <translation id="5575473780076478375">無痕模式擴充功能:<ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">示範註冊要求發生問題。</translation> @@ -5458,6 +5460,7 @@ <translation id="7280649757394340890">文字轉語音聲音設定</translation> <translation id="7280877790564589615">已要求許可</translation> <translation id="7282992757463864530">資料列</translation> +<translation id="7283555985781738399">訪客模式</translation> <translation id="7284411326658527427">每位使用者都可將帳戶個人化,以確保資料私隱。</translation> <translation id="7287143125007575591">拒絕存取。</translation> <translation id="7287411021188441799">還原預設背景</translation> @@ -5837,6 +5840,7 @@ <translation id="7716781361494605745">Netscape 憑證授權原則網址</translation> <translation id="7717014941119698257">正在下載:<ph name="STATUS" /></translation> <translation id="7717134585801378441">網站可要求取得您的位置 (建議)</translation> +<translation id="771721654176725387">這會永久刪除此裝置上的瀏覽資料。如要復原資料,請開啟與以下帳戶同步的功能:</translation> <translation id="7717845620320228976">檢查更新</translation> <translation id="7719367874908701697">頁面縮放</translation> <translation id="7719588063158526969">裝置名稱過長</translation> @@ -5873,6 +5877,7 @@ <translation id="7765158879357617694">移動</translation> <translation id="7765507180157272835">需要藍牙和 Wi-Fi</translation> <translation id="7766082757934713382">暫停自動應用程式和系統更新,有助減少網絡數據用量</translation> +<translation id="7766807826975222231">觀看導覽介紹</translation> <translation id="7766838926148951335">接受權限</translation> <translation id="7768507955883790804">網頁會在您瀏覽時自動採用此設定</translation> <translation id="7768770796815395237">變更</translation> @@ -6117,6 +6122,7 @@ <translation id="8017176852978888182">Linux 共用目錄</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">已編輯捷徑</translation> +<translation id="8018298733481692628">要刪除此設定檔嗎?</translation> <translation id="8018313076035239964">控制網站可使用的資料,以及可向您顯示的內容</translation> <translation id="8023801379949507775">立即更新擴充功能</translation> <translation id="8026334261755873520">清除瀏覽數據</translation> @@ -6286,7 +6292,6 @@ <translation id="8211551284753798479">PUK 無效。您還可嘗試 <ph name="RETRIES" /> 次。</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{正在進行一項下載}other{正在進行多項下載}}</translation> <translation id="8213449224684199188">進入咗相片模式</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> 需要識別您的裝置,才能讓該裝置以最高品質播放受保護的影片和音訊。</translation> <translation id="8214489666383623925">開啟檔案…</translation> <translation id="8214962590150211830">移除這個使用者</translation> <translation id="8216351761227087153">觀看</translation> @@ -6764,7 +6769,6 @@ <translation id="8774379074441005279">確認還原</translation> <translation id="8774934320277480003">上邊界</translation> <translation id="8775144690796719618">網址無效</translation> -<translation id="8775163630211761057">將 Android 手機的最佳功能延伸至 <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> 將在 # 秒後自動鎖定。 <ph name="DOMAIN" /> 需要您繼續插入智能卡。}other{<ph name="DEVICE_TYPE" /> 將在 # 秒後自動鎖定。 <ph name="DOMAIN" /> 需要您繼續插入智能卡。}}</translation> @@ -6953,6 +6957,7 @@ <translation id="8973596347849323817">您可以根據個人需要自訂此裝置,日後也可以在「設定」中變更這些無障礙功能。</translation> <translation id="897414447285476047">由於發生連線問題,因此目標檔案並未下載完成。</translation> <translation id="897525204902889653">隔離服務</translation> +<translation id="8975396729541388937">在收到的電郵中按一下連結,即可隨時取消訂閱。</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{「<ph name="TAB_TITLE" />」}=1{「<ph name="TAB_TITLE" />」和另外 1 個標籤}other{「<ph name="TAB_TITLE" />」和另外 # 個標籤}}</translation> <translation id="8977811652087512276">密碼不正確或檔案損毀</translation> <translation id="8978154919215542464">開啟 - 同步所有內容</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index fd78726..0955d60 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -338,6 +338,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{沒有任何密碼遭外洩}=1{有 1 組密碼遭外洩}other{有 {NUM_COMPROMISED} 組密碼遭外洩}}</translation> <translation id="1380028686461971526">自動連線至網路</translation> <translation id="1380436189840894976">確定要結束無痕模式嗎?</translation> +<translation id="1383597849754832576">無法下載即時字幕檔案,請稍後再試。</translation> <translation id="1383861834909034572">完成後開啟</translation> <translation id="1383876407941801731">搜尋</translation> <translation id="1386791642444521222">啟用實體 SIM 卡</translation> @@ -876,7 +877,6 @@ <translation id="1954813140452229842">掛接共用裝置時發生錯誤。請檢查你的憑證,然後再試一次。</translation> <translation id="1956050014111002555">檔案含有多個憑證,但全都無法匯入:</translation> <translation id="1956390763342388273">你即將上傳「<ph name="FOLDER_PATH" />」中的所有檔案。除非你信任該網站,否則請勿這麼做。</translation> -<translation id="1960158217849594135">要將使用者名稱儲存至 Google 帳戶嗎?</translation> <translation id="196040970347962278">請先建立網際網路連線</translation> <translation id="1962233722219655970">這個網頁使用無法在你電腦上運行的 Native Client 應用程式。</translation> <translation id="1963227389609234879">全部移除</translation> @@ -902,6 +902,7 @@ <translation id="1984417487208496350">無防護 (不建議)</translation> <translation id="1987317783729300807">帳戶</translation> <translation id="1989112275319619282">瀏覽</translation> +<translation id="1990046457226896323">已下載即時字幕檔案</translation> <translation id="1990512225220753005">不要在這個頁面顯示捷徑</translation> <translation id="1992397118740194946">尚未設定</translation> <translation id="1992924914582925289">從裝置中移除</translation> @@ -1047,7 +1048,6 @@ <translation id="2157474325782140681">如要取得其他功能,請使用這部 Chromebook 的專用座架。</translation> <translation id="215753907730220065">結束全螢幕</translation> <translation id="2157875535253991059">這個頁面已顯示為全螢幕。</translation> -<translation id="2160589599612868242">在 <ph name="DEVICE_TYPE" /> 上接收手機的通知</translation> <translation id="216169395504480358">新增 Wi-Fi...</translation> <translation id="2162155940152307086">同步功能會在你退出同步功能設定後立即啟動</translation> <translation id="2162838847352058695">禁止網站自動下載多個檔案</translation> @@ -1265,6 +1265,7 @@ <translation id="2399699884460174994">已開啟通知功能</translation> <translation id="2399939490305346086">安全金鑰登入資料</translation> <translation id="2400664245143453337">必須立即更新</translation> +<translation id="2406153734066939945">要刪除這個設定檔和相關資料嗎?</translation> <translation id="2408018932941436077">正在儲存信用卡</translation> <translation id="2408955596600435184">請輸入你的 PIN 碼</translation> <translation id="241082044617551207">不明的外掛程式</translation> @@ -1382,6 +1383,7 @@ <translation id="2526590354069164005">桌面</translation> <translation id="2526619973349913024">檢查更新</translation> <translation id="2527167509808613699">任何類型的連線</translation> +<translation id="2530166226437958497">疑難排解</translation> <translation id="2532589005999780174">高反差模式</translation> <translation id="253434972992662860">暫停(&P)</translation> <translation id="2534460670861217804">安全 HTTP Proxy</translation> @@ -1699,7 +1701,6 @@ <translation id="2885729872133513017">解碼伺服器回應時發生問題。</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">使用其他程式開啟連結...</translation> -<translation id="2889481634493693121">開啟手機上的通知功能</translation> <translation id="2889925978073739256">繼續封鎖無沙箱防護的外掛程式</translation> <translation id="2893168226686371498">預設瀏覽器</translation> <translation id="2893917546370257247">{COUNT,plural, =1{1 段文字}other{# 段文字}}</translation> @@ -2559,6 +2560,7 @@ <translation id="3857807444929313943">移開手指,然後再次輕觸感應器</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />:已暫停同步處理</translation> <translation id="3861638017150647085">使用者名稱「<ph name="USERNAME" />」無法使用</translation> +<translation id="3861977424605124250">啟動時顯示</translation> <translation id="3862693525629180217">透過內建感應器進行驗證</translation> <translation id="3862788408946266506">含有「kiosk_only」資訊清單屬性的應用程式只能在 Chrome 作業系統 Kiosk 模式中安裝</translation> <translation id="3865414814144988605">解析度</translation> @@ -2800,7 +2802,6 @@ <translation id="412730574613779332">彈力俠</translation> <translation id="4130199216115862831">裝置記錄</translation> <translation id="4130207949184424187">這個擴充功能已變更您使用網址列搜尋時所顯示的網頁。</translation> -<translation id="4130344535649650885">要將密碼儲存至 Google 帳戶嗎?</translation> <translation id="4130750466177569591">我同意</translation> <translation id="413121957363593859">元件</translation> <translation id="4131410914670010031">黑白</translation> @@ -3199,6 +3200,7 @@ <translation id="4627442949885028695">透過其他裝置繼續瀏覽</translation> <translation id="4628757576491864469">裝置</translation> <translation id="4628762811416793313">無法完成 Linux 容器設定。請再試一次。</translation> +<translation id="4629521233550547305">開啟「<ph name="PROFILE_NAME" />」的設定檔</translation> <translation id="4633003931260532286">擴充功能要求的最低「<ph name="IMPORT_NAME" />」版本是「<ph name="IMPORT_VERSION" />」,但目前只安裝了版本「<ph name="INSTALLED_VERSION" />」</translation> <translation id="4633757335284074492">使用 Google 雲端硬碟備份你的資料。你隨時可以輕鬆還原資料或切換裝置。這個備份項目包含應用程式資料。備份內容會上傳到 Google,並使用貴子女的 Google 帳戶密碼加密。</translation> <translation id="4634575639321169635">將這部裝置設定為工作用或個人使用</translation> @@ -3927,7 +3929,6 @@ <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="5503858713116291452">請確認你的手機在附近,且已解鎖及開啟藍牙功能和 Wi-Fi。接著,按照手機上顯示的步驟完成設定。</translation> <translation id="5503982651688210506">繼續允許 <ph name="HOST" /> 使用與調整攝影機,以及存取麥克風</translation> <translation id="5505264765875738116">網站無法要求傳送通知給你</translation> <translation id="5505307013568720083">墨水已用盡</translation> @@ -3988,6 +3989,7 @@ <translation id="5565735124758917034">管理中</translation> <translation id="5567989639534621706">應用程式快取</translation> <translation id="5568069709869097550">無法登入</translation> +<translation id="5571832155627049070">自訂你的設定檔</translation> <translation id="5572851009514199876">請啟動 Chrome 並登入帳戶,Chrome 將確認你是否可存取這個網站。</translation> <translation id="5575473780076478375">無痕模式擴充功能:<ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">示範註冊要求發生問題。</translation> @@ -5457,6 +5459,7 @@ <translation id="7280649757394340890">文字轉語音聲音設定</translation> <translation id="7280877790564589615">要求權限</translation> <translation id="7282992757463864530">資訊列</translation> +<translation id="7283555985781738399">訪客模式</translation> <translation id="7284411326658527427">每位使用者都可以建立個人專屬的帳戶,並保護資料的私密性。</translation> <translation id="7287143125007575591">存取遭拒。</translation> <translation id="7287411021188441799">還原預設背景</translation> @@ -5836,6 +5839,7 @@ <translation id="7716781361494605745">Netscape 憑證授權原則網址</translation> <translation id="7717014941119698257">下載:<ph name="STATUS" /></translation> <translation id="7717134585801378441">網站可以要求取得你的位置資訊 (建議)</translation> +<translation id="771721654176725387">這項操作會將你的瀏覽資料從這部裝置中永久刪除。如要還原資料,請開啟與下列帳戶同步處理的功能:</translation> <translation id="7717845620320228976">檢查更新</translation> <translation id="7719367874908701697">頁面縮放</translation> <translation id="7719588063158526969">裝置名稱過長</translation> @@ -5872,6 +5876,7 @@ <translation id="7765158879357617694">移動</translation> <translation id="7765507180157272835">需要使用藍牙功能或 Wi-Fi</translation> <translation id="7766082757934713382">透過暫停應用程式和系統的自動更新來降低網路數據用量</translation> +<translation id="7766807826975222231">觀看導覽</translation> <translation id="7766838926148951335">接受權限</translation> <translation id="7768507955883790804">網站會在你造訪時自動套用這項設定</translation> <translation id="7768770796815395237">變更</translation> @@ -6116,6 +6121,7 @@ <translation id="8017176852978888182">Linux 共用目錄</translation> <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">已編輯捷徑</translation> +<translation id="8018298733481692628">要刪除這個設定檔嗎?</translation> <translation id="8018313076035239964">控制網站可使用的資訊,以及可對你顯示的內容</translation> <translation id="8023801379949507775">立即更新擴充功能</translation> <translation id="8026334261755873520">清除瀏覽資料</translation> @@ -6285,7 +6291,6 @@ <translation id="8211551284753798479">PUK 無效,你還有 <ph name="RETRIES" /> 次重試機會。</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{正在執行一項下載作業}other{正在執行多項下載作業}}</translation> <translation id="8213449224684199188">已進入相片模式</translation> -<translation id="8213866992824776555"><ph name="DOMAIN" /> 需要識別你的裝置,才能讓該裝置以最高品質播放受保護的影片和音訊。</translation> <translation id="8214489666383623925">開啟檔案...</translation> <translation id="8214962590150211830">移除這個使用者</translation> <translation id="8216351761227087153">觀看</translation> @@ -6764,7 +6769,6 @@ <translation id="8774379074441005279">確認還原</translation> <translation id="8774934320277480003">上邊界</translation> <translation id="8775144690796719618">網址無效</translation> -<translation id="8775163630211761057">將 Android 手機的實用功能和內容拓展至 <ph name="DEVICE_TYPE" /></translation> <translation id="8775653927968399786">{0,plural, =1{<ph name="DEVICE_TYPE" /> 將在 # 秒後自動鎖定。 <ph name="DOMAIN" /> 需要你插入智慧型卡片,不得拔出。}other{<ph name="DEVICE_TYPE" /> 將在 # 秒後自動鎖定。 <ph name="DOMAIN" /> 需要你插入智慧型卡片,不得拔出。}}</translation> @@ -6953,6 +6957,7 @@ <translation id="8973596347849323817">你可以根據個人需求自訂這個裝置,日後也可前往 [設定] 變更這些無障礙功能。</translation> <translation id="897414447285476047">發生連線問題,因此目標檔案並未下載完成。</translation> <translation id="897525204902889653">隔離服務</translation> +<translation id="8975396729541388937">你隨時可以取消訂閱,只要在收到的電子郵件中按一下相關連結即可。</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{「<ph name="TAB_TITLE" />」}=1{「<ph name="TAB_TITLE" />」和另外 1 個分頁}other{「<ph name="TAB_TITLE" />」和另外 # 個分頁}}</translation> <translation id="8977811652087512276">密碼不正確或檔案毀損</translation> <translation id="8978154919215542464">開啟 - 同步處理所有資料</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index bf56f4c..31fad381 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -339,6 +339,7 @@ <translation id="1378848228640136848">{NUM_COMPROMISED,plural, =0{Awekho amaphasiwedi onakalisiwe}=1{iphasiwedi eyonakalisiwe e-1}one{{NUM_COMPROMISED} amaphasiwedi onakalisiwe}other{{NUM_COMPROMISED} amaphasiwedi onakalisiwe}}</translation> <translation id="1380028686461971526">Xhumeka ngokuzenzakalela kunethiwekhi</translation> <translation id="1380436189840894976">Shiya imodi ye-incognito noma kunjalo?</translation> +<translation id="1383597849754832576">Ayikwazi ukulanda amafayela wenkulumo. Zama futhi emuva kwesikhathi.</translation> <translation id="1383861834909034572">Ivuleka uma iqedile</translation> <translation id="1383876407941801731">Sesha</translation> <translation id="1386791642444521222">Yenza i-SIM engokoqobo isebenze</translation> @@ -875,7 +876,6 @@ <translation id="1954813140452229842">Iphutha ukukhweza ukwabelana. Sicela uhlole imininingwane yakho bese uyazama futhi.</translation> <translation id="1956050014111002555">Ifayela beliqukethe izitifiketi eziningi, okungekho nesisodwa esingenisiwe.</translation> <translation id="1956390763342388273">Lokhu kuzolayisha onke amafayela kusukela ku-"<ph name="FOLDER_PATH" />". Yenza lokhu kuphela uma uthemba isayithi.</translation> -<translation id="1960158217849594135">Londoloza igama lomsebenzisi ku-Akhawunti yakho ye-Google?</translation> <translation id="196040970347962278">Thola ukuxhumeka kwe-inthanethi kuqala</translation> <translation id="1962233722219655970">Leli khasi lisebenzisa uhlelo lokusebenza lweklayenti yomdabu olungasebenzi kukhompyutha yakho.</translation> <translation id="1963227389609234879">Susa konke</translation> @@ -901,6 +901,7 @@ <translation id="1984417487208496350">Asikho Isivikelo (akunconywa)</translation> <translation id="1987317783729300807">Ama-Akhawunti</translation> <translation id="1989112275319619282">Dlulisa amehlo</translation> +<translation id="1990046457226896323">Amafayela wenkulumo alandiwe</translation> <translation id="1990512225220753005">Ungabonisi izinqamuleli kuleli khasi</translation> <translation id="1992397118740194946">Ayisethiwe</translation> <translation id="1992924914582925289">Susa kudivayisi</translation> @@ -1046,7 +1047,6 @@ <translation id="2157474325782140681">Ukuze uthole izici ezingeziwe, sebenzisa isiteshi sedokhu se-Dell esidizayinelwe ukusebenza nale Chromebook.</translation> <translation id="215753907730220065">Phuma kusikrini esigcwele</translation> <translation id="2157875535253991059">Leli khasi manje seliyisikrini esigcwele.</translation> -<translation id="2160589599612868242">Thola izaziso kusukela kufoni yakho ku-<ph name="DEVICE_TYPE" /> yakho</translation> <translation id="216169395504480358">Engeza i-Wi-Fi...</translation> <translation id="2162155940152307086">Ukuvumelanisa kuzoqala uma ushiya izilungiselelo zokuvumelanisa</translation> <translation id="2162838847352058695">Vimbela amasayithi kusukela ekulandeni ngokuzenzakalela amafayela amaningi</translation> @@ -1264,6 +1264,7 @@ <translation id="2399699884460174994">Izaziso zivuliwe</translation> <translation id="2399939490305346086">Idatha yokungena ngemvume yokhiye wokuqinisekisa ubunikazi</translation> <translation id="2400664245143453337">Kudingeka isibuyekezo esisheshayo</translation> +<translation id="2406153734066939945">Susa le phrofayela nedatha yayo?</translation> <translation id="2408018932941436077">Ilondoloza ikhadi</translation> <translation id="2408955596600435184">Faka iphinikhodi yakho</translation> <translation id="241082044617551207">I-plugin engaziwa</translation> @@ -1382,6 +1383,7 @@ <translation id="2526590354069164005">Ideskithophu</translation> <translation id="2526619973349913024">Hlolela isibuyekezo</translation> <translation id="2527167509808613699">Noma iyiphi inhlobo yokuxhumeka</translation> +<translation id="2530166226437958497">Ukuxazulula inkinga</translation> <translation id="2532589005999780174">Imodi yokugqala okuphezulu</translation> <translation id="253434972992662860">Misa isikhashana</translation> <translation id="2534460670861217804">Ummeleli we-HTTP ovikelekile</translation> @@ -1699,7 +1701,6 @@ <translation id="2885729872133513017">Inkinga ivelile ngenkathi ikopisha impendulo yeseva.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> <translation id="2889064240420137087">Vula isixhumanisi nge...</translation> -<translation id="2889481634493693121">Vula izaziso kufoni yakho</translation> <translation id="2889925978073739256">Qhubeka uvimbele ama-plugin we-unsandboxed</translation> <translation id="2893168226686371498">Isiphequluli esizenzakalelayo</translation> <translation id="2893917546370257247">{COUNT,plural, =1{umbhalo o-1}one{imibhalo engu-#}other{imibhalo engu-#}}</translation> @@ -2559,6 +2560,7 @@ <translation id="3857807444929313943">Phakamisa, bese uyathinta futhi</translation> <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Ukuvumelanisa kumiswe isikhashana</translation> <translation id="3861638017150647085">Igama lomsebenzisi "<ph name="USERNAME" />" alitholakali</translation> +<translation id="3861977424605124250">Bonisa ekuqaleni</translation> <translation id="3862693525629180217">Qinisekisa ngenzwa eyakhelwe phakathi</translation> <translation id="3862788408946266506">Izinhelo zokusebenza ezinesibaluli se-manifest se-'kiosk_only' kumele sifakwe kumodi yekhiyoski ye-Chrome OS</translation> <translation id="3865414814144988605">Isixazululo</translation> @@ -2800,7 +2802,6 @@ <translation id="412730574613779332">I-Spandex</translation> <translation id="4130199216115862831">Ilogu yedivayisi</translation> <translation id="4130207949184424187">Lesi sandiso siguqule ukuthi yiliphi ikhasi eliboniswayo uma usesha kusukela ku-Omnibox.</translation> -<translation id="4130344535649650885">Londoloza iphasiwedi ku-Akhawunti yakho ye-Google?</translation> <translation id="4130750466177569591">Ngiyavuma</translation> <translation id="413121957363593859">Izingxenye</translation> <translation id="4131410914670010031">Okumnyama nokumhlophe</translation> @@ -3199,6 +3200,7 @@ <translation id="4627442949885028695">Qhubeka kusuka kwenye idivayisi</translation> <translation id="4628757576491864469">Amadivayisi</translation> <translation id="4628762811416793313">Ukusetha kwesiqukathi se-Linux akuqedanga. Sicela uzame futhi.</translation> +<translation id="4629521233550547305">Vula iphrofayela le-<ph name="PROFILE_NAME" /></translation> <translation id="4633003931260532286">Kudingeka isandiso esingu-"<ph name="IMPORT_NAME" />" ngenguqulo encane engu-"<ph name="IMPORT_VERSION" />", kodwa inguqulo kuphela engu-"<ph name="INSTALLED_VERSION" />" efakiwe</translation> <translation id="4633757335284074492">Yenza isipele ku-Google Drayivu. Buyisa kalula idatha noma ushintshe idivayisi noma kunini. Lesi sipele sihlanganisa nedatha yohlelo lokusebenza. Izipele zilayishwa ku-Google futhi zibethelwe kusetshenziswa iphasiwedi ye-Akhawunti ye-Google yengane yakho.</translation> <translation id="4634575639321169635">Setha le divayisi ngokuqondene nomsebenzi noma ukuzisebenzisela yona</translation> @@ -3929,7 +3931,6 @@ <translation id="5501809658163361512">{COUNT,plural, =1{Yehlulekile ukuthola i-<ph name="ATTACHMENTS" /> ku-<ph name="DEVICE_NAME" />}one{Yehlulekile ukuthola i-<ph name="ATTACHMENTS" /> ku-<ph name="DEVICE_NAME" />}other{Yehlulekile ukuthola i-<ph name="ATTACHMENTS" /> ku-<ph name="DEVICE_NAME" />}}</translation> <translation id="5502500733115278303">Kungeniswe kusuka ku-Firefox</translation> <translation id="5502915260472117187">Ingane</translation> -<translation id="5503858713116291452">Yenza isiqinisekiso sokuthi ifoni yakho iseduze, ivuliwe, futhi ine-Bluetooth ne-Wi-Fi evuliwe. Landela izinyathelo kufoni yakho ukuze uqede ukusetha.</translation> <translation id="5503982651688210506">Qhubeka nokuvumela u-<ph name="HOST" /> ukusebenzisa nokuhambisa ikhamera yakho, nokusebenzisa imakrofoni yakho</translation> <translation id="5505264765875738116">Amasayithi awakwazi ukuthumela izaziso</translation> <translation id="5505307013568720083">Kuphele uyinki</translation> @@ -3990,6 +3991,7 @@ <translation id="5565735124758917034">Kuyasebenza</translation> <translation id="5567989639534621706">Izinqolobane zohlelo lokusebenza</translation> <translation id="5568069709869097550">Ayikwazi ukungena ngemvume</translation> +<translation id="5571832155627049070">Yenza iphrofayela lakho ngokwezifiso</translation> <translation id="5572851009514199876">Sicela uqalise futhi ungene ngemvume ku-Chrome ukuze i-Chrome ikwazi ukuhlola ukuthi ingabe uvunyelwe ukufinyelela leli sayithi.</translation> <translation id="5575473780076478375">Isandiso se-Incognito: <ph name="EXTENSION_NAME" /></translation> <translation id="5575528586625653441">Inkinga ngesicelo sokubhalisa idemo ivelile.</translation> @@ -5459,6 +5461,7 @@ <translation id="7280649757394340890">Izilungiselelo zezwi zombhalo ukuya kunkulumo</translation> <translation id="7280877790564589615">Imvume iceliwe</translation> <translation id="7282992757463864530">Ibha yolwazi</translation> +<translation id="7283555985781738399">Imodi yesihambeli</translation> <translation id="7284411326658527427">Umuntu ngamunye angenza i-akhawunti yakhe ibe ngokwakhe futhi igcine idatha iyimfihlo.</translation> <translation id="7287143125007575591">Ukufinyelela kunqatshelwe.</translation> <translation id="7287411021188441799">Buyisela ingemuva elizenzakalelayo</translation> @@ -5838,6 +5841,7 @@ <translation id="7716781361494605745">I-URL yenqubomgomo yegunya lesitifiketi se-Netscape</translation> <translation id="7717014941119698257">Iyalanda: <ph name="STATUS" /></translation> <translation id="7717134585801378441">Amasayithi angacela indawo yakho (kunconyiwe)</translation> +<translation id="771721654176725387">Lokhu kuzoyisusa ingunaphakade idatha yokuphequlula kule divayisi. Ukuze utakule idatha, vula ukuvumelanisa njenge</translation> <translation id="7717845620320228976">Hlolela izibuyekezo</translation> <translation id="7719367874908701697">Ukusondezwa kwekhasi</translation> <translation id="7719588063158526969">Igama ledivayisi lide kakhulu</translation> @@ -5874,6 +5878,7 @@ <translation id="7765158879357617694">Hambisa</translation> <translation id="7765507180157272835">I-Bluetooth ne-Wi-Fi kuyadingeka</translation> <translation id="7766082757934713382">Kusiza ukunciphisa ukusetshenziswa kwedatha yenethiwekhi ngokuphumuza uhlelo lokusebenza ngokuzenzekelayo kanye nezibuyekezo zesistimu</translation> +<translation id="7766807826975222231">Thatha uhambo</translation> <translation id="7766838926148951335">Yamukela izimvume</translation> <translation id="7768507955883790804">Amasayithi alandela le sethingi ngokuzenzekelayo lapho uwavakashela</translation> <translation id="7768770796815395237">Shintsha</translation> @@ -6117,6 +6122,7 @@ <translation id="8016266267177410919">Isitoreji sesikhashana</translation> <translation id="8017176852978888182">I-Linux yabelane ngezinkombandlela</translation> <translation id="8017679124341497925">Isinqamuleli sihleliwe</translation> +<translation id="8018298733481692628">Susa le phrofayela?</translation> <translation id="8018313076035239964">Lawula ukuthi imaphi amawebhusayithi olwazi angasebenzisa nokuthi ikuphi okuqukethwe angakubonisa khona</translation> <translation id="8023801379949507775">Buyekeza izandiso manje</translation> <translation id="8026334261755873520">Sula idatha yokudlulisa amehlo</translation> @@ -6287,7 +6293,6 @@ <translation id="8211551284753798479">I-PUK engavumelekile. Unemizamo engu-<ph name="RETRIES" /> esele.</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Ukulanda kuyaqhubeka}one{Ukulanda kuyaqhubeka}other{Ukulanda kuyaqhubeka}}</translation> <translation id="8213449224684199188">Kufakwe imodi yesithombe</translation> -<translation id="8213866992824776555">I-<ph name="DOMAIN" /> ifuna ukukhomba idivayisi yakho ukuze ikwazi ukudlala ividiyo nomsindo ovikelwe osezingeni eliphakeme.</translation> <translation id="8214489666383623925">Vula ifayela...</translation> <translation id="8214962590150211830">Susa lo muntu</translation> <translation id="8216351761227087153">Buka</translation> @@ -6766,7 +6771,6 @@ <translation id="8774379074441005279">Qinisekisa ukubuyisela</translation> <translation id="8774934320277480003">Imajini ephezulu</translation> <translation id="8775144690796719618">I-URL engavumelekile</translation> -<translation id="8775163630211761057">Nweba okungcono kwefoni yakho ye-Android ku-<ph name="DEVICE_TYPE" /> yakho</translation> <translation id="8775653927968399786">{0,plural, =1{I-<ph name="DEVICE_TYPE" /> izokhiywa ngokuzenzakalelayo kusekhondi elingu-#. I-<ph name="DOMAIN" /> idinga ukuba ugcine ikhadi lakho elimsathi lifakiwe.}one{I-<ph name="DEVICE_TYPE" /> izokhiywa ngokuzenzakalelayo kumasekhondi angu-#. I-<ph name="DOMAIN" /> idinga ukuba ugcine ikhadi lakho elimsathi lifakiwe.}other{I-<ph name="DEVICE_TYPE" /> izokhiywa ngokuzenzakalelayo kumasekhondi angu-#. @@ -6956,6 +6960,7 @@ <translation id="8973596347849323817">Ungenza ngendlela oyifisayo le divayisi ukuze ihlangabezane nezidingo zakho. Lezi zici ezingafinyeleleka zingashintshwa ngemuva kwesikhathi kuzilungiselelo.</translation> <translation id="897414447285476047">Ifayela lendawo aliphelele ngenxa yenkinga yoxhumo.</translation> <translation id="897525204902889653">Isevisi yokuvalelwa</translation> +<translation id="8975396729541388937">Zikhiphe ohlwini noma nini ngokuchofoza isixhumanisi esikuma-imeyili owatholile.</translation> <translation id="8975562453115131273">{NUM_OTHER_TABS,plural, =0{I-"<ph name="TAB_TITLE" />"}=1{I-"<ph name="TAB_TITLE" />" nenye ithebhu engu-1}one{I-"<ph name="TAB_TITLE" />" namanye amathebhu angu-#}other{I-"<ph name="TAB_TITLE" />" namanye amathebhu angu-#}}</translation> <translation id="8977811652087512276">Iphasiwedi engalungile noma ifayela elimoshekile</translation> <translation id="8978154919215542464">Kuvuliwe - vumelanisa yonke into</translation>
diff --git a/chrome/app/resources/google_chrome_strings_af.xtb b/chrome/app/resources/google_chrome_strings_af.xtb index 480cb13b..4b2e3f5 100644 --- a/chrome/app/resources/google_chrome_strings_af.xtb +++ b/chrome/app/resources/google_chrome_strings_af.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Maak skakel in 'n nuwe Chrome-oortjie oop</translation> <translation id="4953650215774548573">Stel Google Chrome as jou verstekblaaier</translation> <translation id="495931528404527476">In Chrome</translation> +<translation id="4970761609246024540">Welkom by Chrome-profiele</translation> <translation id="4990567037958725628">Google Chrome Kanarie</translation> <translation id="5062123544085870375">Herbegin Chrome OS</translation> <translation id="5132929315877954718">Ontdek wonderlike programme, speletjies, uitbreidings en temas vir Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome sal jou in kennis stel wanneer jy met 'n gekompromitteerde wagwoord aanmeld</translation> <translation id="8669527147644353129">Google Chrome-helper</translation> <translation id="8679801911857917785">Dit beheer ook watter bladsy gewys word wanneer jy Chrome begin.</translation> +<translation id="8686817260976772516">Met Chrome-profiele kan jy al jou Chrome-goed skei. Skep profiele vir vriende en familielede, of verdeel tussen werk en pret.</translation> <translation id="870251953148363156">Dateer Google Chrome op</translation> <translation id="873133009373065397">Google Chrome kan nie die verstekblaaier bepaal of stel nie</translation> <translation id="8823341990149967727">Chrome is verouderd</translation>
diff --git a/chrome/app/resources/google_chrome_strings_am.xtb b/chrome/app/resources/google_chrome_strings_am.xtb index 55952b3..4f067c0 100644 --- a/chrome/app/resources/google_chrome_strings_am.xtb +++ b/chrome/app/resources/google_chrome_strings_am.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">አገናኝ በአዲስ የChrome &ትር ውስጥ ክፈት</translation> <translation id="4953650215774548573">Google Chromeን እንደ ነባሪ አሳሽዎ አድርገው ያቀናብሩ</translation> <translation id="495931528404527476">በChrome ውስጥ</translation> +<translation id="4970761609246024540">ወደ Chrome መገለጫዎች እንኳን በደህና መጡ</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OSን ዳግም አስጀምር</translation> <translation id="5132929315877954718">ለGoogle Chrome ምርጥ መተግበሪያዎችን፣ ጨዋታዎችን፣ ቅጥያዎችን እና ገጽታዎችን ያግኙ።</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">እርስዎ በተጠለፈ የይለፍ ቅቃል ሲገቡ Chrome ያሳውቀዎታል</translation> <translation id="8669527147644353129">Google Chrome አጋዥ</translation> <translation id="8679801911857917785">እንዲሁም Chromeን ሲጀምሩት የሚታየውን ገጽ ይቆጣጠራል።</translation> +<translation id="8686817260976772516">በ Chromium መገለጫዎች ሁሉንም የ Chromium ነገሮችዎን መለየት ይችላሉ። ለጓደኞች እና ለቤተሰብ መገለጫዎችን ይፍጠሩ፣ ወይም በሥራ እና በመዝናኛ መካከል ይከፋፈሉ።</translation> <translation id="870251953148363156">&Google Chromeን አዘምን</translation> <translation id="873133009373065397">Google Chrome ነባሪ አሳሹን ማወቅ ወይም ማቀናበር አልቻለም</translation> <translation id="8823341990149967727">Chrome ጊዜው አልፎበታል</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ar.xtb b/chrome/app/resources/google_chrome_strings_ar.xtb index 079dfae..caf20c27 100644 --- a/chrome/app/resources/google_chrome_strings_ar.xtb +++ b/chrome/app/resources/google_chrome_strings_ar.xtb
@@ -148,6 +148,7 @@ <translation id="4895437082222824641">فتح الرابط في علامة تبويب جديدة في Chrome</translation> <translation id="4953650215774548573">تحديد Google Chrome المتصفح التلقائي</translation> <translation id="495931528404527476">في Chrome</translation> +<translation id="4970761609246024540">مرحبًا بك في الملفات الشخصية على Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">إعادة تشغيل نظام التشغيل Chrome</translation> <translation id="5132929315877954718">يمكنك اكتشاف تطبيقات، وألعاب، وإضافات، ومظاهر رائعة لمتصفح Google Chrome.</translation> @@ -265,6 +266,7 @@ <translation id="8641606876632989680">في حال تسجيل الدخول باستخدام كلمة مرور محتمَل تعرّضها للاختراق، سيرسل Chrome إشعارات إليك.</translation> <translation id="8669527147644353129">مساعد Google Chrome</translation> <translation id="8679801911857917785">كما أنها تتحكم في الصفحة التي تظهر عند تشغيل Chrome.</translation> +<translation id="8686817260976772516">باستخدام الملفات الشخصية على Chrome، يمكنك الفصل بين جميع بيانات Chrome. ويمكنك إنشاء ملفات شخصية للأصدقاء والعائلة أو تقسيمها للعمل وأغراض الترفيه.</translation> <translation id="870251953148363156">&تحديث Google Chrome</translation> <translation id="873133009373065397">يتعذَّر على Google Chrome تحديد المتصفح التلقائي أو تعيينه</translation> <translation id="8823341990149967727">إصدار Chrome قديم</translation>
diff --git a/chrome/app/resources/google_chrome_strings_as.xtb b/chrome/app/resources/google_chrome_strings_as.xtb index 50c3e49..d9d0944a 100644 --- a/chrome/app/resources/google_chrome_strings_as.xtb +++ b/chrome/app/resources/google_chrome_strings_as.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Chromeৰ নতুন টে&বত লিংক খোলক</translation> <translation id="4953650215774548573">আপোনাৰ ডিফ'ল্ট ব্ৰাউজাৰ হিচাপে Google Chromeক ছেট কৰক</translation> <translation id="495931528404527476">Chromeত</translation> +<translation id="4970761609246024540">Chromeৰ প্ৰ’ফাইললৈ স্বাগতম</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OS ৰিষ্টার্ট কৰক</translation> <translation id="5132929315877954718">Google Chromeৰ বাবে উত্তম এপ্, গে’ম, এক্সটেনশ্বন আৰু থীম বিচাৰক৷</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">আপুনি কোনো হেক কৰা পাছৱৰ্ডৰ জৰিয়তে ছাইন ইন কৰিলে Chromeএ আপোনাক জাননী দিব</translation> <translation id="8669527147644353129">Google Chrome সহায়ক</translation> <translation id="8679801911857917785">আপুনি Chrome আৰম্ভ কৰিলে কি পৃষ্ঠা দেখুওৱা হ’ব সেয়াও ই নিয়ন্ত্ৰণ কৰে।</translation> +<translation id="8686817260976772516">Chromeৰ প্ৰ’ফাইলৰ জৰিয়তে আপুনি নিজৰ আটাইবোৰ Chromeৰ বস্তু পৃথক কৰিব পাৰে। বন্ধুবৰ্গ আৰু পৰিয়ালৰ বাবে প্ৰ’ফাইল সৃষ্টি কৰক অথবা কৰ্মস্থান আৰু মনোৰঞ্জনৰ মাজত বিভাজন কৰক।</translation> <translation id="870251953148363156">&Google Chrome আপডে’ট কৰক</translation> <translation id="873133009373065397">Google Chromeএ ডিফ’ল্ট ব্ৰাউজাৰ নির্ধাৰণ বা ছেট কৰিব নোৱাৰে</translation> <translation id="8823341990149967727">Chromeটো অতি পুৰণি</translation>
diff --git a/chrome/app/resources/google_chrome_strings_az.xtb b/chrome/app/resources/google_chrome_strings_az.xtb index 2678875..d060f1d 100644 --- a/chrome/app/resources/google_chrome_strings_az.xtb +++ b/chrome/app/resources/google_chrome_strings_az.xtb
@@ -148,6 +148,7 @@ <translation id="4895437082222824641">Linki yeni Chrome tabında açın</translation> <translation id="4953650215774548573">Google Chrome'u defolt brauzer təyin edin</translation> <translation id="495931528404527476">Chrome'da</translation> +<translation id="4970761609246024540">Chrome profillərinə xoş gəlmisiniz</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome ƏS-ni yenidən başladın</translation> <translation id="5132929315877954718">Google Chrome üçün möhtəşəm tətbiqlər, artırmalar və temalar kəşf edin.</translation> @@ -265,6 +266,7 @@ <translation id="8641606876632989680">Oğurlanmış parol ilə daxil olduqda Chrome sizə bildiriş göndərəcək</translation> <translation id="8669527147644353129">Google Chrome Yardımçı</translation> <translation id="8679801911857917785">O, həmçinin, Chrome açılanda hansı səhifənin göstərildiyini idarə edir.</translation> +<translation id="8686817260976772516">Chrome profilləri ilə bütün Chrome elementlərinizi ayıra bilərsiniz. Dostlarınız və ailəniz üçün profillər yaradın və ya iş və əyləncə arasında bölün.</translation> <translation id="870251953148363156">Google Chrome'u güncəlləşdirin</translation> <translation id="873133009373065397">Google Chrome defolt brauzeri müəyyən edə və ya ayarlaya bilmir</translation> <translation id="8823341990149967727">Chrome'un vaxtı keçib</translation>
diff --git a/chrome/app/resources/google_chrome_strings_be.xtb b/chrome/app/resources/google_chrome_strings_be.xtb index 6fdc6de..2450a59 100644 --- a/chrome/app/resources/google_chrome_strings_be.xtb +++ b/chrome/app/resources/google_chrome_strings_be.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Адкрыць спасылку ў новай &укладцы Chrome</translation> <translation id="4953650215774548573">Зрабіць Google Chrome стандартным браўзерам</translation> <translation id="495931528404527476">У браўзеры Chrome</translation> +<translation id="4970761609246024540">Вітаем у профілях Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Перазапусціце Chrome OS</translation> <translation id="5132929315877954718">Адкрывайце для сябе выдатныя праграмы, гульні, пашырэнні і тэмы для Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome адправіць вам апавяшчэнне, калі вы ўвойдзеце ва ўліковы запіс, выкарыстаўшы раскрыты пароль</translation> <translation id="8669527147644353129">Памочнік Google Chrome</translation> <translation id="8679801911857917785">Таксама вызначае, якая старонка паказваецца пры запуску Chrome.</translation> +<translation id="8686817260976772516">Профілі Chrome патрэбны для раздзельнага выкарыстання браўзера рознымі людзьмі і ў розных мэтах. Стварайце профілі для сяброў і родных, або раздзяляйце работу і забавы.</translation> <translation id="870251953148363156">Абнавіць &Google Chrome</translation> <translation id="873133009373065397">Google Chrome не можа вызначыць або задаць стандартны браўзер</translation> <translation id="8823341990149967727">Ваша версія Chrome састарэла</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bg.xtb b/chrome/app/resources/google_chrome_strings_bg.xtb index 486a4f4..67f2e6b 100644 --- a/chrome/app/resources/google_chrome_strings_bg.xtb +++ b/chrome/app/resources/google_chrome_strings_bg.xtb
@@ -148,6 +148,7 @@ <translation id="4895437082222824641">Отваряне на връзката в нов &раздел на Chrome</translation> <translation id="4953650215774548573">Задаване на Google Chrome като браузър по подразбиране</translation> <translation id="495931528404527476">В Chrome</translation> +<translation id="4970761609246024540">Добре дошли в потребителските профили в Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Рестартиране на Chrome OS</translation> <translation id="5132929315877954718">Открийте отлични приложения, игри, разширения и теми за Google Chrome.</translation> @@ -262,6 +263,7 @@ <translation id="8641606876632989680">Chrome ще ви уведоми, когато влизате в профил с компрометирана парола</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">То също контролира коя страница се показва при стартиране на Chrome.</translation> +<translation id="8686817260976772516">С помощта на потребителските профили в Chromium можете да разделите данните си в браузъра. Създайте потребителски профили за близки и приятели или за разделяне на работата от забавленията.</translation> <translation id="870251953148363156">Актуализиране на &Google Chrome</translation> <translation id="873133009373065397">Google Chrome не може да определи или зададе браузъра по подразбиране</translation> <translation id="8823341990149967727">Chrome не е актуален</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bs.xtb b/chrome/app/resources/google_chrome_strings_bs.xtb index d98bf790..a56346a 100644 --- a/chrome/app/resources/google_chrome_strings_bs.xtb +++ b/chrome/app/resources/google_chrome_strings_bs.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Otvori link u novoj &kartici Chromea</translation> <translation id="4953650215774548573">Postavi Google Chrome kao zadani preglednik</translation> <translation id="495931528404527476">Iz Chromea</translation> +<translation id="4970761609246024540">Dobro došli u Chrome profile</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Ponovo pokrenite Chrome OS</translation> <translation id="5132929315877954718">Otkrijte odlične aplikacije, igre, ekstenzije i teme za Google Chrome.</translation> @@ -267,6 +268,7 @@ <translation id="8641606876632989680">Chrome će vas obavijestiti kada se prijavite s ugroženom lozinkom</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Također kontrolira koja stranica se prikazuje kada pokrenete Chrome.</translation> +<translation id="8686817260976772516">S Chrome profilima možete odvojiti sve svoje Chrome stvari. Kreirajte profile za prijatelje i porodicu ili razdvojite posao i zabavu.</translation> <translation id="870251953148363156">Ažuriraj &Google Chrome</translation> <translation id="873133009373065397">Google Chrome ne može odrediti ili postaviti zadani preglednik</translation> <translation id="8823341990149967727">Chrome je zastario</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ca.xtb b/chrome/app/resources/google_chrome_strings_ca.xtb index 3bc23ff..57c542e 100644 --- a/chrome/app/resources/google_chrome_strings_ca.xtb +++ b/chrome/app/resources/google_chrome_strings_ca.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Obre l'enllaç en una pes&tanya nova a Chrome</translation> <translation id="4953650215774548573">Defineix Google Chrome com a navegador predeterminat</translation> <translation id="495931528404527476">A Chrome</translation> +<translation id="4970761609246024540">Et donem la benvinguda als perfils de Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Reinicia Chrome OS</translation> <translation id="5132929315877954718">Descobriu aplicacions, jocs, extensions i temes genials per a Google Chrome.</translation> @@ -260,6 +261,7 @@ <translation id="8641606876632989680">Chrome t'enviarà una notificació quan iniciïs la sessió amb una contrasenya en perill</translation> <translation id="8669527147644353129">Aplicació d'ajuda de Google Chrome</translation> <translation id="8679801911857917785">També controla la pàgina que es mostra quan inicieu Chrome.</translation> +<translation id="8686817260976772516">Els perfils de Chrome et permeten separar tot el teu contingut de Chrome. Crea perfils per a amics i familiars, o separa la feina de la diversió.</translation> <translation id="870251953148363156">Actualitza &Google Chrome</translation> <translation id="873133009373065397">Google Chrome no pot determinar ni definir el navegador predeterminat</translation> <translation id="8823341990149967727">Chrome no està actualitzat</translation>
diff --git a/chrome/app/resources/google_chrome_strings_cs.xtb b/chrome/app/resources/google_chrome_strings_cs.xtb index 628dfee..42cf9c2 100644 --- a/chrome/app/resources/google_chrome_strings_cs.xtb +++ b/chrome/app/resources/google_chrome_strings_cs.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Otevřít odkaz na nové kar&tě Chrome</translation> <translation id="4953650215774548573">Nastavit Google Chrome jako výchozí prohlížeč</translation> <translation id="495931528404527476">V Chromu</translation> +<translation id="4970761609246024540">Vítejte v profilech Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Restartujte systém Chrome OS</translation> <translation id="5132929315877954718">Objevte skvělé aplikace, hry, rozšíření a motivy prohlížeče Google Chrome.</translation> @@ -268,6 +269,7 @@ <translation id="8641606876632989680">Pokud se přihlásíte pomocí prolomeného hesla, Chrome vám to oznámí</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Také řídí, která stránka se zobrazí při spuštění Chromu.</translation> +<translation id="8686817260976772516">Pomocí profilů Chrome můžete všechny své údaje v Chromu uchovávat odděleně. Vytvořte profily pro přátele a rodinu nebo rozdělte činnosti mezi práci a zábavu.</translation> <translation id="870251953148363156">Aktualizace aplikace &Google Chrome</translation> <translation id="873133009373065397">Google Chrome nemůže určit ani nastavit výchozí prohlížeč</translation> <translation id="8823341990149967727">Chrome je zastaralý</translation>
diff --git a/chrome/app/resources/google_chrome_strings_da.xtb b/chrome/app/resources/google_chrome_strings_da.xtb index 246ba38..84c0964 100644 --- a/chrome/app/resources/google_chrome_strings_da.xtb +++ b/chrome/app/resources/google_chrome_strings_da.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Åbn linket i en ny Chrome-&fane</translation> <translation id="4953650215774548573">Angiv Google Chrome som din standardbrowser</translation> <translation id="495931528404527476">I Chrome</translation> +<translation id="4970761609246024540">Velkommen til Chrome-profiler</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Genstart Chrome OS</translation> <translation id="5132929315877954718">Find fantastiske apps, spil, udvidelser og temaer til Google Chrome.</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">Chrome giver dig besked, når du logger ind med en kompromitteret adgangskode</translation> <translation id="8669527147644353129">Hjælp til Google Chrome</translation> <translation id="8679801911857917785">Den styrer også, hvilken side der vises, når du åbner Chrome.</translation> +<translation id="8686817260976772516">Du kan organisere alle dine ting i Chrome ved hjælp af Chrome-profiler. Opret profiler til dine venner og din familie, eller brug dem til at holde arbejde og fornøjelse adskilt.</translation> <translation id="870251953148363156">Opdater &Google Chrome</translation> <translation id="873133009373065397">Google Chrome kan ikke fastlægge eller angive standardbrowseren</translation> <translation id="8823341990149967727">Chrome er forældet</translation>
diff --git a/chrome/app/resources/google_chrome_strings_el.xtb b/chrome/app/resources/google_chrome_strings_el.xtb index 24b9d6cc..83feb47 100644 --- a/chrome/app/resources/google_chrome_strings_el.xtb +++ b/chrome/app/resources/google_chrome_strings_el.xtb
@@ -148,6 +148,7 @@ <translation id="4895437082222824641">Άνοιγμα συνδέσμου σε νέα καρτέ&λα Chrome</translation> <translation id="4953650215774548573">Ορίστε το Google Chrome ως προεπιλεγμένο πρόγραμμα περιήγησης</translation> <translation id="495931528404527476">Στο Chrome</translation> +<translation id="4970761609246024540">Καλώς ήρθατε στα προφίλ του Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Επανεκκίνηση Chrome OS</translation> <translation id="5132929315877954718">Ανακαλύψτε υπέροχες εφαρμογές, παιχνίδια, επεκτάσεις και θέματα για το Google Chrome.</translation> @@ -265,6 +266,7 @@ <translation id="8641606876632989680">Το Chrome θα σας ειδοποιήσει όταν συνδεθείτε με έναν παραβιασμένο κωδικό πρόσβαση</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Επίσης, ελέγχει τη σελίδα που εμφανίζεται κατά την εκκίνηση του Chrome.</translation> +<translation id="8686817260976772516">Με τα προφίλ του Chrome μπορείτε να διαχωρίσετε όλη τη δραστηριότητα και το περιεχόμενό σας στο Chrome. Δημιουργήστε προφίλ για φίλους και μέλη της οικογένειας ή διαχωρίστε την εργασία και τη διασκέδαση.</translation> <translation id="870251953148363156">Ενημέρωση &του Google Chrome</translation> <translation id="873133009373065397">Το Google Chrome δεν μπορεί να καθορίσει ή να ορίσει το προεπιλεγμένο πρόγραμμα περιήγησης</translation> <translation id="8823341990149967727">Το Chrome δεν είναι ενημερωμένο</translation>
diff --git a/chrome/app/resources/google_chrome_strings_en-GB.xtb b/chrome/app/resources/google_chrome_strings_en-GB.xtb index 907e9cfd..fd1b1ce 100644 --- a/chrome/app/resources/google_chrome_strings_en-GB.xtb +++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Open link in new Chrome &tab</translation> <translation id="4953650215774548573">Set Google Chrome as your default browser</translation> <translation id="495931528404527476">In Chrome</translation> +<translation id="4970761609246024540">Welcome to Chrome profiles</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Restart Chrome OS</translation> <translation id="5132929315877954718">Discover great apps, games, extensions and themes for Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome will notify you when you sign in with a compromised password</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">It also controls what page is shown when you start Chrome.</translation> +<translation id="8686817260976772516">With Chrome profiles you can separate all of your Chrome stuff. Create profiles for friends and family, or split between work and fun.</translation> <translation id="870251953148363156">Update &Google Chrome</translation> <translation id="873133009373065397">Google Chrome cannot determine or set the default browser</translation> <translation id="8823341990149967727">Chrome is Out of Date</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es-419.xtb b/chrome/app/resources/google_chrome_strings_es-419.xtb index 36e4b87d..de8f05fb 100644 --- a/chrome/app/resources/google_chrome_strings_es-419.xtb +++ b/chrome/app/resources/google_chrome_strings_es-419.xtb
@@ -146,6 +146,7 @@ <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> <translation id="495931528404527476">En Chrome</translation> +<translation id="4970761609246024540">Te damos la bienvenida a los perfiles de Chrome</translation> <translation id="4990567037958725628">Google Chrome Canario</translation> <translation id="5062123544085870375">Reiniciar el Sistema operativo Chrome</translation> <translation id="5132929315877954718">Descubre aplicaciones, juegos, extensiones y temas geniales para Google Chrome.</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">Chrome te notificará cuando accedas con una contraseña hackeada</translation> <translation id="8669527147644353129">Ayuda de Google Chrome</translation> <translation id="8679801911857917785">También controla qué página se muestra al iniciar Chrome.</translation> +<translation id="8686817260976772516">Con los perfiles de Chrome, puedes separar todo lo que tienes en Chrome. Crea perfiles para amigos y familiares o diferencia el trabajo de la diversión.</translation> <translation id="870251953148363156">Actualizar &Google Chrome</translation> <translation id="873133009373065397">Google Chrome no puede determinar ni establecer el navegador predeterminado</translation> <translation id="8823341990149967727">Chrome no actualizado</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es.xtb b/chrome/app/resources/google_chrome_strings_es.xtb index 105baf4..1c83618 100644 --- a/chrome/app/resources/google_chrome_strings_es.xtb +++ b/chrome/app/resources/google_chrome_strings_es.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Abrir enlace en una pes&taña nueva de Chrome</translation> <translation id="4953650215774548573">Establecer Google Chrome como navegador predeterminado</translation> <translation id="495931528404527476">En Chrome</translation> +<translation id="4970761609246024540">Te damos la bienvenida a los perfiles de Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Reiniciar Chrome OS</translation> <translation id="5132929315877954718">Descubre formidables aplicaciones, juegos, extensiones y temas para Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome te enviará una notificación cuando inicies sesión con una contraseña vulnerada</translation> <translation id="8669527147644353129">Ayudante de Google Chrome</translation> <translation id="8679801911857917785">También controla qué página se muestra al iniciar Chrome.</translation> +<translation id="8686817260976772516">Con los perfiles de Chrome, puedes separar todos tus elementos de Chrome. Crea perfiles para amigos y familiares, o un perfil de trabajo y otro de ocio.</translation> <translation id="870251953148363156">Actualizar &Google Chrome</translation> <translation id="873133009373065397">Google Chrome no puede determinar ni establecer el navegador predeterminado</translation> <translation id="8823341990149967727">Chrome no está actualizado</translation>
diff --git a/chrome/app/resources/google_chrome_strings_et.xtb b/chrome/app/resources/google_chrome_strings_et.xtb index 66b62f9..33f6aaf 100644 --- a/chrome/app/resources/google_chrome_strings_et.xtb +++ b/chrome/app/resources/google_chrome_strings_et.xtb
@@ -148,6 +148,7 @@ <translation id="4895437082222824641">Ava link Chrome'i uuel &vahelehel</translation> <translation id="4953650215774548573">Määra Google Chrome vaikebrauseriks</translation> <translation id="495931528404527476">Chrome'is</translation> +<translation id="4970761609246024540">Tere tulemast kasutama Chrome'i profiile</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Taaskäivitage Chrome OS</translation> <translation id="5132929315877954718">Avastage Google Chrome'i jaoks suurepäraseid rakendusi, mänge, laiendusi ja teemasid.</translation> @@ -265,6 +266,7 @@ <translation id="8641606876632989680">Chrome teavitab teid, kui logite sisse ohustatud parooliga</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Lisaks juhib see Chrome'i käivitamisel kuvatavat lehte.</translation> +<translation id="8686817260976772516">Chrome'i profiilidega saate eraldada kogu oma Chrome'i sisu. Looge profiile sõprade või pereliikmete jaoks või eraldage nende abil töö ja lõbu.</translation> <translation id="870251953148363156">Värskenda &Google Chrome'i</translation> <translation id="873133009373065397">Google Chrome ei saa määrata ega seadistada vaikebrauserit</translation> <translation id="8823341990149967727">Chrome on aegunud</translation>
diff --git a/chrome/app/resources/google_chrome_strings_eu.xtb b/chrome/app/resources/google_chrome_strings_eu.xtb index ec96344d..612d6ab 100644 --- a/chrome/app/resources/google_chrome_strings_eu.xtb +++ b/chrome/app/resources/google_chrome_strings_eu.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Ireki esteka Chrome-ko beste &fitxa batean</translation> <translation id="4953650215774548573">Ezarri Google Chrome arakatzaile lehenetsi gisa</translation> <translation id="495931528404527476">Chrome-n</translation> +<translation id="4970761609246024540">Ongi etorri Chrome-ko profiletara</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Berrabiarazi Chrome OS</translation> <translation id="5132929315877954718">Ezagutu Google Chrome-rako aplikazio, joko, luzapen eta gai bikainak.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome-k jakinarazpen bat bidaliko dizu arriskuan dagoen pasahitz batekin hasten duzunean saioa</translation> <translation id="8669527147644353129">Google Chrome laguntzailea</translation> <translation id="8679801911857917785">Chrome abiarazten duzunean erakusten den orria ere kontrolatzen du.</translation> +<translation id="8686817260976772516">Chrome-ko profilekin, Chrome-n dituzun gauza guztiak bereiz ditzakezu. Sortu profilak lagunentzat eta familiako kideentzat, edo banandu gauza pertsonalak eta lanekoak.</translation> <translation id="870251953148363156">Eguneratu &Google Chrome</translation> <translation id="873133009373065397">Google Chrome-k ezin du ezarri edo zehaztu arakatzaile lehenetsia</translation> <translation id="8823341990149967727">Chrome zaharkituta dago</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fa.xtb b/chrome/app/resources/google_chrome_strings_fa.xtb index 2b8d493..9d77c68 100644 --- a/chrome/app/resources/google_chrome_strings_fa.xtb +++ b/chrome/app/resources/google_chrome_strings_fa.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">باز کردن پیوند در &برگه جدید Chrome</translation> <translation id="4953650215774548573">تنظیم Google Chrome به عنوان مرورگر پیشفرضتان</translation> <translation id="495931528404527476">در Chrome</translation> +<translation id="4970761609246024540">به نمایههای Chrome خوشآمدید</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">بازراهاندازی سیستمعامل Chrome</translation> <translation id="5132929315877954718">برنامههای کاربردی، بازیها، افزونهها و طرحهای زمینه فوقالعاده را برای Google Chrome کاوش کنید.</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">وقتی با گذرواژهای لورفته به سیستم وارد شوید، Chrome به شما اطلاع میدهد</translation> <translation id="8669527147644353129">راهنمای Google Chrome</translation> <translation id="8679801911857917785">این برنامه همچنین صفحهای را که هنگام راهاندازی Chrome نشان داده میشود، کنترل میکند.</translation> +<translation id="8686817260976772516">با نمایههای Chrome میتوانید همه چیزتان را در Chrome جدا کنید. برای دوستان و اعضای خانوادهتان نمایه ایجاد کنید، یا کار و سرگرمی را ازهم جدا کنید.</translation> <translation id="870251953148363156">بهروزرسانی Goo&gle Chrome</translation> <translation id="873133009373065397">Google Chrome نمیتواند مرورگر پیشفرض را تعیین یا تنظیم کند</translation> <translation id="8823341990149967727">نسخه Chrome قدیمی است</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fi.xtb b/chrome/app/resources/google_chrome_strings_fi.xtb index 5b8455c..053ad2d2 100644 --- a/chrome/app/resources/google_chrome_strings_fi.xtb +++ b/chrome/app/resources/google_chrome_strings_fi.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Avaa linkki uudella Chromen välilehdellä</translation> <translation id="4953650215774548573">Aseta Google Chrome oletusselaimeksi</translation> <translation id="495931528404527476">Chromessa</translation> +<translation id="4970761609246024540">Tervetuloa Chrome-profiileihin</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Käynnistä Chrome OS uudelleen</translation> <translation id="5132929315877954718">Löydät hienoja sovelluksia, pelejä ja teemoja Google Chromelle.</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">Chrome ilmoittaa, kun kirjaudut sisään vaarantuneella salasanalla</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Määrittää myös Chromen aloitussivun.</translation> +<translation id="8686817260976772516">Kun käytät Chrome-profiileja, voit pitää kaiken Chrome-sisällön erillään. Luo profiileja kavereita ja perhettä varten tai tee ero työn ja hauskanpidon välille.</translation> <translation id="870251953148363156">Päivitä &Google Chrome</translation> <translation id="873133009373065397">Google Chrome ei voi tunnistaa tai asettaa oletusselainta.</translation> <translation id="8823341990149967727">Chrome on vanhentunut</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fil.xtb b/chrome/app/resources/google_chrome_strings_fil.xtb index 0a4a1f8e..56b3c32 100644 --- a/chrome/app/resources/google_chrome_strings_fil.xtb +++ b/chrome/app/resources/google_chrome_strings_fil.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Buksan ang link sa bagong &tab ng Chrome</translation> <translation id="4953650215774548573">Itakda ang Google Chrome bilang iyong default na browser</translation> <translation id="495931528404527476">Sa Chrome</translation> +<translation id="4970761609246024540">Welcome sa mga profile sa Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">I-restart ang Chrome OS</translation> <translation id="5132929315877954718">Tumuklas ng mahuhusay na app, laro, extension at tema para sa Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Aabisuhan ka ng Chrome kapag nag-sign in ka gamit ang nakompromisong password</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Kinokontrol din nito kung anong pahina ang ipinapakita kapag sinimulan mo ang Chrome.</translation> +<translation id="8686817260976772516">Gamit ang mga profile sa Chrome, magagawa mong paghiwalayin ang lahat ng iyong bagay-bagay sa Chrome. Gumawa ng mga profile para sa mga kaibigan at kapamilya, o gumawa ng magkahiwalay na profile para sa trabaho at kasiyahan.</translation> <translation id="870251953148363156">I-update ang &Google Chrome</translation> <translation id="873133009373065397">Hindi matukoy o maitakda ng Google Chrome ang default na browser</translation> <translation id="8823341990149967727">Luma na ang Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr.xtb b/chrome/app/resources/google_chrome_strings_fr.xtb index 7f56da27..9c311c2 100644 --- a/chrome/app/resources/google_chrome_strings_fr.xtb +++ b/chrome/app/resources/google_chrome_strings_fr.xtb
@@ -149,6 +149,7 @@ <translation id="4895437082222824641">Ouvrir le lien dans un nouvel ongle&t Chrome</translation> <translation id="4953650215774548573">Définir Google Chrome en tant que navigateur par défaut</translation> <translation id="495931528404527476">Dans Chrome</translation> +<translation id="4970761609246024540">Bienvenue sur la page de profils Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Redémarrer Chrome OS</translation> <translation id="5132929315877954718">Découvrez des applications, des jeux, des extensions et des thèmes exceptionnels pour Google Chrome.</translation> @@ -267,6 +268,7 @@ <translation id="8641606876632989680">Chrome vous avertira si vous vous connectez avec un mot de passe compromis</translation> <translation id="8669527147644353129">Application d'aide de Google Chrome</translation> <translation id="8679801911857917785">Elle contrôle également la page qui s'affiche au démarrage de Chrome.</translation> +<translation id="8686817260976772516">Utilisez les profils Chrome pour dissocier toutes vos données Chrome. Créez des profils pour vos amis et votre famille, ou créez un profil pour travailler et un autre pour vous divertir.</translation> <translation id="870251953148363156">Mettre à jour &Google Chrome</translation> <translation id="873133009373065397">Impossible d'identifier ou de définir le navigateur par défaut avec Google Chrome</translation> <translation id="8823341990149967727">Version de Chrome obsolète</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gl.xtb b/chrome/app/resources/google_chrome_strings_gl.xtb index cfc5602..055a590 100644 --- a/chrome/app/resources/google_chrome_strings_gl.xtb +++ b/chrome/app/resources/google_chrome_strings_gl.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Abrir ligazón nunha nova &pestana de Chrome</translation> <translation id="4953650215774548573">Establecer Google Chrome como navegador predeterminado</translation> <translation id="495931528404527476">En Chrome</translation> +<translation id="4970761609246024540">Dámosche a benvida aos perfís de Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Reinicia Chrome OS</translation> <translation id="5132929315877954718">Descubre aplicacións, xogos, extensións e temas fantásticos para Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome enviarache unha notificación cando inicies sesión cun contrasinal vulnerado</translation> <translation id="8669527147644353129">Axudante de Google Chrome</translation> <translation id="8679801911857917785">Tamén controla a páxina que se mostra ao iniciar Chrome.</translation> +<translation id="8686817260976772516">Cos perfís de Chromium podes separar todo o contido que teñas neste navegador. Crea perfís para os amigos e a familia ou ben crea un para o traballo e outro para o lecer.</translation> <translation id="870251953148363156">Actualizar &Google Chrome</translation> <translation id="873133009373065397">Google Chrome non pode determinar nin establecer o navegador predeterminado</translation> <translation id="8823341990149967727">Chrome está desactualizado</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gu.xtb b/chrome/app/resources/google_chrome_strings_gu.xtb index 0893a771..46e9264 100644 --- a/chrome/app/resources/google_chrome_strings_gu.xtb +++ b/chrome/app/resources/google_chrome_strings_gu.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">નવા Chrome &ટૅબમાં લિંક ખોલો</translation> <translation id="4953650215774548573">Google Chrome ને તમારા ડિફોલ્ટ બ્રાઉઝર તરીકે સેટ કરો</translation> <translation id="495931528404527476">Chrome માં</translation> +<translation id="4970761609246024540">Chrome પ્રોફાઇલમાં આપનું સ્વાગત છે</translation> <translation id="4990567037958725628">Google Chrome કૅનેરી</translation> <translation id="5062123544085870375">Chrome OS ફરી શરૂ કરો</translation> <translation id="5132929315877954718">Google Chrome માટે શ્રેષ્ઠ ઍપ્લિકેશનો, રમતો, એક્સટેન્શન્સ અને થીમ્સ શોધો</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">જ્યારે તમે ચેડાં થયેલા પાસવર્ડ વડે સાઇન ઇન કરશો ત્યારે Chrome તમને સૂચિત કરશે</translation> <translation id="8669527147644353129">Google Chrome સહાયક</translation> <translation id="8679801911857917785">જ્યારે તમે Chrome શરૂ કરો ત્યારે કયું પૃષ્ઠ બતાવવામાં આવે તે તેનું પણ નિયંત્રણ કરે છે.</translation> +<translation id="8686817260976772516">Chrome પ્રોફાઇલ વડે તમે તમારી બધી વસ્તુઓ Chrome પર અલગ-અલગ રાખી શકો છો. મિત્રો અને કુટુંબ માટે પ્રોફાઇલ બનાવો અથવા તેને ઑફિસ અને મનોરંજન વચ્ચે વિભાજિત કરો.</translation> <translation id="870251953148363156">&Google Chrome ને અપડેટ કરો</translation> <translation id="873133009373065397">Google Chrome ડિફૉલ્ટ બ્રાઉઝરને નિર્ધારિત અથવા સેટ કરી શકતું નથી</translation> <translation id="8823341990149967727">Chrome જૂનું થઈ ગયું છે</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hi.xtb b/chrome/app/resources/google_chrome_strings_hi.xtb index 59277da..08f543f4 100644 --- a/chrome/app/resources/google_chrome_strings_hi.xtb +++ b/chrome/app/resources/google_chrome_strings_hi.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">नए Chrome &टैब में लिंक खोलें</translation> <translation id="4953650215774548573">Google Chrome को अपने डिफ़ॉल्ट ब्राउज़र के रूप में सेट करना</translation> <translation id="495931528404527476">Chrome में</translation> +<translation id="4970761609246024540">Chrome प्रोफ़ाइलों में आपका स्वागत है</translation> <translation id="4990567037958725628">Google Chrome कैनरी</translation> <translation id="5062123544085870375">Chrome OS को रीस्टार्ट करें</translation> <translation id="5132929315877954718">Google Chrome के लिए बेहतरीन ऐप्स ,गेम, एक्सटेंशन और थीम खोजें.</translation> @@ -265,6 +266,7 @@ <translation id="8641606876632989680">जब आप किसी हैक या चोरी हो चुके पासवर्ड से साइन इन करेंगे, तो Chrome आपको इसकी सूचना देगा</translation> <translation id="8669527147644353129">Google Chrome सहायक</translation> <translation id="8679801911857917785">इससे यह भी नियंत्रित होता है कि जब आप Chrome प्रारंभ करते हैं तब कौन सा पेज दिखाया जाए.</translation> +<translation id="8686817260976772516">Chrome प्रोफ़ाइलों का इस्तेमाल करके, आप Chrome पर अपनी सभी चीज़ों को अलग-अलग रख सकते हैं. अपने दोस्तों और परिवार के लिए प्रोफ़ाइलें बनाएं या अपने काम और मनोरंजन की चीज़ों को अलग-अलग रखने के लिए.</translation> <translation id="870251953148363156">Google Chrome को अपडेट करें</translation> <translation id="873133009373065397">Google Chrome डिफ़ॉल्ट ब्राउज़र तय या सेट नहीं कर सकता</translation> <translation id="8823341990149967727">Chrome पुराना हो गया है</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hr.xtb b/chrome/app/resources/google_chrome_strings_hr.xtb index a6ad5d34..fb73a1b2 100644 --- a/chrome/app/resources/google_chrome_strings_hr.xtb +++ b/chrome/app/resources/google_chrome_strings_hr.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Otvori vezu na novoj &kartici Chromea</translation> <translation id="4953650215774548573">Postavite Google Chrome kao svoj zadani preglednik</translation> <translation id="495931528404527476">U Chromeu</translation> +<translation id="4970761609246024540">Dobro došli u Chromeove profile</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Ponovo pokrenite OS Chrome</translation> <translation id="5132929315877954718">Otkrijte sjajne aplikacije, igre, proširenja i teme za Google Chrome.</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">Chrome će vas obavijestiti kada se prijavite ugroženom zaporkom</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Upravlja i time koja se stranica prikazuje prilikom pokretanja Chromea.</translation> +<translation id="8686817260976772516">Chromeovi profili omogućuju vam da razdvojite sve svoje sadržaje u Chromeu. Izradite profile za prijatelje i obitelj ili odvojite posao i zabavu.</translation> <translation id="870251953148363156">Ažuriranje preglednika Google Chrome</translation> <translation id="873133009373065397">Google Chrome ne može utvrditi niti postaviti zadani preglednik</translation> <translation id="8823341990149967727">Chrome je zastario</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hu.xtb b/chrome/app/resources/google_chrome_strings_hu.xtb index 05b65e0..3bfa7c96 100644 --- a/chrome/app/resources/google_chrome_strings_hu.xtb +++ b/chrome/app/resources/google_chrome_strings_hu.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Link megnyi&tása új Chrome-lapon</translation> <translation id="4953650215774548573">A Google Chrome beállítása alapértelmezett böngészőként</translation> <translation id="495931528404527476">A Chrome-ban</translation> +<translation id="4970761609246024540">Üdvözöljük a Chrome-profiloknál!</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">A Chrome OS újraindítása</translation> <translation id="5132929315877954718">Fedezzen fel nagyszerű alkalmazásokat, játékokat, bővítményeket és témákat a Google Chrome-hoz.</translation> @@ -260,6 +261,7 @@ <translation id="8641606876632989680">A Chrome figyelmezteti Önt, amikor olyan jelszóval jelentkezik be, amelyhez illetéktelenül hozzáfértek</translation> <translation id="8669527147644353129">Google Chrome segéd</translation> <translation id="8679801911857917785">Továbbá azt is szabályozza, hogy melyik oldal jelenik meg a Chrome indításakor.</translation> +<translation id="8686817260976772516">A Chrome-profilokkal különválaszthatja minden Chrome-anyagát. Létrehozhat profilokat ismerőseinek és családtagjainak, vagy elkülönítheti egymástól a munkát és a szórakozást.</translation> <translation id="870251953148363156">A &Google Chrome frissítése</translation> <translation id="873133009373065397">A Google Chrome problémába ütközött az alapértelmezett böngésző megállapításakor vagy beállításakor</translation> <translation id="8823341990149967727">A Chrome elavult</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hy.xtb b/chrome/app/resources/google_chrome_strings_hy.xtb index 438c353c..e48869f 100644 --- a/chrome/app/resources/google_chrome_strings_hy.xtb +++ b/chrome/app/resources/google_chrome_strings_hy.xtb
@@ -148,6 +148,7 @@ <translation id="4895437082222824641">Բացել հղումը Chrome-ի նոր &ներդիրում</translation> <translation id="4953650215774548573">Դարձնել Google Chrome-ը կանխադրված դիտարկիչը</translation> <translation id="495931528404527476">Chrome-ում</translation> +<translation id="4970761609246024540">Բարի գալուստ Chrome-ի պրոֆիլներ</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OS-ի վերագործարկում</translation> <translation id="5132929315877954718">Հավելվածների, խաղերի, ընդլայնումների և թեմաների լայն ընտրանի Google Chrome-ի համար:</translation> @@ -267,6 +268,7 @@ <translation id="8641606876632989680">Chrome-ը կտեղեկացնի ձեզ, երբ կոտրված գաղտնաբառ օգտագործեք։</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Այն նաև վերահսկում է Chrome-ի մեկնարկման ժամանակ ցուցադրվող էջը:</translation> +<translation id="8686817260976772516">Chromе պրոֆիլների միջոցով դուք կարող եք օգտագործել դիտարկիչն առանձին այլ օտատերերից։ Ստեղծեք պրոֆիլներ ձեր ընկերների և ընտանիքի անդամների, կամ գործնական և անձնական նպատակների համար։</translation> <translation id="870251953148363156">Թարմացնել &Google Chrome-ը</translation> <translation id="873133009373065397">Google Chrome-ը չի կարողանում որոշել կամ սահմանել կանխադրված դիտարկիչը</translation> <translation id="8823341990149967727">Chrome-ը հնացած է</translation>
diff --git a/chrome/app/resources/google_chrome_strings_id.xtb b/chrome/app/resources/google_chrome_strings_id.xtb index a8a4da2..f268302 100644 --- a/chrome/app/resources/google_chrome_strings_id.xtb +++ b/chrome/app/resources/google_chrome_strings_id.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Buka link di &tab Chrome baru</translation> <translation id="4953650215774548573">Setel Google Chrome sebagai browser default Anda</translation> <translation id="495931528404527476">Di Chrome</translation> +<translation id="4970761609246024540">Selamat datang di profil Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Mulai ulang Chrome OS</translation> <translation id="5132929315877954718">Temukan aplikasi, game, ekstensi, dan tema yang hebat untuk Google Chrome.</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">Chrome akan memberi tahu Anda saat Anda login dengan sandi yang telah dibobol</translation> <translation id="8669527147644353129">Pembantu Google Chrome</translation> <translation id="8679801911857917785">Juga mengontrol halaman apa yang ditampilkan saat Anda memulai Chrome.</translation> +<translation id="8686817260976772516">Dengan profil Chrome, Anda dapat memisahkan semua aktivitas Chrome Anda. Buat profil untuk teman dan keluarga, atau pisahkan antara aktivitas kerja dan hiburan.</translation> <translation id="870251953148363156">Pembaruan &Google Chrome</translation> <translation id="873133009373065397">Google Chrome tidak dapat menentukan atau menyetel browser default</translation> <translation id="8823341990149967727">Chrome Terlalu Lawas</translation>
diff --git a/chrome/app/resources/google_chrome_strings_is.xtb b/chrome/app/resources/google_chrome_strings_is.xtb index c60f6be..10450d1d 100644 --- a/chrome/app/resources/google_chrome_strings_is.xtb +++ b/chrome/app/resources/google_chrome_strings_is.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Opna tengil í nýjum Chrome &flipa</translation> <translation id="4953650215774548573">Stilla Google Chrome sem sjálfgefinn vafra</translation> <translation id="495931528404527476">Í Chrome</translation> +<translation id="4970761609246024540">Velkomin(n) í Chrome prófíla</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Endurræstu Chrome OS</translation> <translation id="5132929315877954718">Uppgötvaðu frábær forrit, leiki, viðbætur og þemu fyrir Google Chrome</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome lætur þig vita þegar þú skráir þig inn með aðgangsorði sem er í hættu</translation> <translation id="8669527147644353129">Hjálparforrit Google Chrome</translation> <translation id="8679801911857917785">Þetta stýrir því einnig hvaða síða birtist þegar þú ræsir Chrome.</translation> +<translation id="8686817260976772516">Þú getur aðskilið allt efnið þitt á Chrome með Chrome prófílum. Stofnaðu prófíla fyrir vini og fjölskyldu eða skiptu á milli vinnu og afþreyingar.</translation> <translation id="870251953148363156">Uppfæra &Google Chrome</translation> <translation id="873133009373065397">Google Chrome getur ekki ákvarðað eða stillt sjálfgefinn vafra</translation> <translation id="8823341990149967727">Chrome er úrelt</translation>
diff --git a/chrome/app/resources/google_chrome_strings_it.xtb b/chrome/app/resources/google_chrome_strings_it.xtb index 2a38713..8bb96ef 100644 --- a/chrome/app/resources/google_chrome_strings_it.xtb +++ b/chrome/app/resources/google_chrome_strings_it.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Apri link in una nuova &scheda di Chrome</translation> <translation id="4953650215774548573">Imposta Google Chrome come browser predefinito</translation> <translation id="495931528404527476">In Chrome</translation> +<translation id="4970761609246024540">Ti diamo il benvenuto nei profili Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Riavvia Chrome OS</translation> <translation id="5132929315877954718">Scopri applicazioni, giochi, estensioni e temi straordinari per Google Chrome.</translation> @@ -260,6 +261,7 @@ <translation id="8641606876632989680">Chrome ti invierà una notifica quando esegui l'accesso con una password compromessa</translation> <translation id="8669527147644353129">Supporto Google Chrome</translation> <translation id="8679801911857917785">Controlla anche la pagina visualizzata all'avvio di Chrome.</translation> +<translation id="8686817260976772516">Con i profili Chrome puoi separare tutti i tuoi contenuti di Chrome. Crea profili per amici e familiari oppure dividi i dati di lavoro e i contenuti di svago.</translation> <translation id="870251953148363156">Aggiorna &Google Chrome</translation> <translation id="873133009373065397">Google Chrome non è in grado di determinare o impostare il browser predefinito</translation> <translation id="8823341990149967727">Chrome non è aggiornato</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ja.xtb b/chrome/app/resources/google_chrome_strings_ja.xtb index ccaa126..11e97d5a 100644 --- a/chrome/app/resources/google_chrome_strings_ja.xtb +++ b/chrome/app/resources/google_chrome_strings_ja.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">新しい Chrome タブでリンクを開く(&T)</translation> <translation id="4953650215774548573">Google Chrome を既定のブラウザとして設定する</translation> <translation id="495931528404527476">Chrome 専用</translation> +<translation id="4970761609246024540">Chrome プロフィールへようこそ</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OS を再起動してください</translation> <translation id="5132929315877954718">Google Chrome のすばらしいアプリ、ゲーム、拡張機能、テーマをぜひご利用ください。</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">不正使用されたパスワードでログインした場合、Chrome で通知します</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">この拡張機能では、Chrome の起動時に表示されるページも制御されます。</translation> +<translation id="8686817260976772516">Chrome プロフィールを使うと、Chrome のあらゆる項目や設定を個別に管理できます。友達や家族のプロフィールを作成したり、仕事とプライベートでプロフィールを使い分けたりできます。</translation> <translation id="870251953148363156">Google Chrome を更新(&G)</translation> <translation id="873133009373065397">Google Chrome では既定のブラウザを判定または設定できません</translation> <translation id="8823341990149967727">Chrome は古いバージョンです</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ka.xtb b/chrome/app/resources/google_chrome_strings_ka.xtb index e365c0b4..ef4c08b 100644 --- a/chrome/app/resources/google_chrome_strings_ka.xtb +++ b/chrome/app/resources/google_chrome_strings_ka.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">ბმულის გახსნა Chrome-ის ახალ ჩა&ნართში</translation> <translation id="4953650215774548573">Google Chrome-ის დაყენება ნაგულისხმევ ბრაუზერად</translation> <translation id="495931528404527476">Chrome-ში</translation> +<translation id="4970761609246024540">მოგესალმებათ Chrome პროფილები</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">გადატვირთეთ Chrome OS</translation> <translation id="5132929315877954718">აღმოაჩინეთ დიდებული აპები, თამაშები, გაფართოებები და თემები Google Chrome-ისთვის.</translation> @@ -268,6 +269,7 @@ <translation id="8641606876632989680">Chrome შეგატყობინებთ, როცა სისტემაში გატეხილი პაროლით შეხვალთ</translation> <translation id="8669527147644353129">Google Chrome-ის დახმარება</translation> <translation id="8679801911857917785">იგი, ასევე, აკონტროლებს, თუ რომელი გვერდი გამოჩნდება Chrome-ის გაშვებისას.</translation> +<translation id="8686817260976772516">Chrome პროფილები Chrome-ში არსებული თქვენი კონტენტის განცალკევების საშუალებას გაძლევთ. შექმენით პროფილები ოჯახის წევრებისა და მეგობრებისთვის, ან განაცალკევეთ სამსახურებრივი და პირადი მონაცემები.</translation> <translation id="870251953148363156">&Google Chrome-ის განახლება</translation> <translation id="873133009373065397">Google Chrome ნაგულისხმევ ბრაუზერს ვერ საზღვრავს, ან ვერ აყენებს</translation> <translation id="8823341990149967727">Chrome მოძველებულია</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kk.xtb b/chrome/app/resources/google_chrome_strings_kk.xtb index 24f81861..c954e53 100644 --- a/chrome/app/resources/google_chrome_strings_kk.xtb +++ b/chrome/app/resources/google_chrome_strings_kk.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Сілтемені жаңа Chrome қойындысында ашу</translation> <translation id="4953650215774548573">Әдепкі браузеріңіз ретінде Google Chrome орнату</translation> <translation id="495931528404527476">Chrome ішінде</translation> +<translation id="4970761609246024540">Chrome профильдеріне қош келдіңіз!</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OS жүйесін қайта қосу</translation> <translation id="5132929315877954718">Google Chrome браузеріне арналған тамаша қолданбаларды, ойындарды және тақырыптарды табыңыз.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Ұрланған құпия сөзбен кірген кезде, Chrome сізге хабарлайды.</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Сонымен қатар Chrome бастапқы бетін де бақылайды.</translation> +<translation id="8686817260976772516">Chrome профильдері арқылы Chrome-дағы материалдарыңызды бөліп қоя аласыз. Достарға және отбасыңызға арнап немесе жұмысқа не көңіл көтеруге бөлек профиль жасаңыз.</translation> <translation id="870251953148363156">OSGoogle Chrome жаңарту</translation> <translation id="873133009373065397">Google Chrome әдепкі браузерді анықтай не орната алмайды</translation> <translation id="8823341990149967727">Chrome ескірген</translation>
diff --git a/chrome/app/resources/google_chrome_strings_km.xtb b/chrome/app/resources/google_chrome_strings_km.xtb index 2dc222b..1324f91 100644 --- a/chrome/app/resources/google_chrome_strings_km.xtb +++ b/chrome/app/resources/google_chrome_strings_km.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">បើកតំណនៅក្នុងផ្ទាំង Chrome ថ្មី</translation> <translation id="4953650215774548573">កំណត់ Google Chrome ជាកម្មវិធីរុករកលំនាំដើមរបស់អ្នក</translation> <translation id="495931528404527476">នៅក្នុង Chrome</translation> +<translation id="4970761609246024540">សូមស្វាគមន៍មកកាន់កម្រងព័ត៌មាន Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">ចាប់ផ្តើម Chrome OS ឡើងវិញ</translation> <translation id="5132929315877954718">ស្វែងយល់ពីកម្មវិធី ហ្គេម កម្មវិធីបន្ថែម និងធីមដ៏អស្ចារ្យសម្រាប់ Google Chrome។</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome នឹងជូនដំណឹងទៅអ្នក នៅពេលអ្នកចូលគណនីដោយប្រើពាក្យសម្ងាត់ដែលរងការលុកលុយ</translation> <translation id="8669527147644353129">ជំនួួយការ Google Chrome</translation> <translation id="8679801911857917785">វាក៏គ្រប់គ្រងអ្វីដែលត្រូវបានបង្ហាញនៅលើទំព័រដែរ នៅពេលអ្នកចាប់ផ្តើម Chrome។</translation> +<translation id="8686817260976772516">អ្នកអាចបែងចែកព័ត៌មាននៅលើ Chrome ទាំងអស់របស់អ្នកបាន ដោយប្រើកម្រងព័ត៌មាន Chrome។ បង្កើតកម្រងព័ត៌មានសម្រាប់មិត្តភ័ក្តិ និងគ្រួសារ ឬបែងចែករវាងការងារ និងការកម្សាន្ត។</translation> <translation id="870251953148363156">ធ្វើបច្ចុប្បន្នភាព Google Chrome</translation> <translation id="873133009373065397">Google Chrome មិនអាចសម្រេចយក ឬកំណត់កម្មវិធីរុករកលំនាំដើមបានទេ</translation> <translation id="8823341990149967727">Chrome ហួសសម័យហើយ</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ko.xtb b/chrome/app/resources/google_chrome_strings_ko.xtb index d89f202..4c2aada 100644 --- a/chrome/app/resources/google_chrome_strings_ko.xtb +++ b/chrome/app/resources/google_chrome_strings_ko.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">새 Chrome 탭에서 링크 열기(&T)</translation> <translation id="4953650215774548573">Chrome을 기본 브라우저로 설정</translation> <translation id="495931528404527476">Chrome</translation> +<translation id="4970761609246024540">Chrome 프로필에 오신 것을 환영합니다</translation> <translation id="4990567037958725628">Chrome 카나리아</translation> <translation id="5062123544085870375">Chrome OS 다시 시작</translation> <translation id="5132929315877954718">Chrome에 사용할 유용한 애플리케이션, 게임, 확장 프로그램 및 테마를 찾아보세요.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">유출된 비밀번호로 로그인하면 Chrome에서 알림을 표시함</translation> <translation id="8669527147644353129">Chrome 도우미</translation> <translation id="8679801911857917785">또한 Chrome을 시작할 때 표시되는 페이지를 설정합니다.</translation> +<translation id="8686817260976772516">Chrome 프로필을 사용하면 모든 Chrome 데이터를 분리할 수 있습니다. 친구와 가족을 위한 프로필을 만들거나 업무용과 개인용 프로필을 구분하세요.</translation> <translation id="870251953148363156">Chrome 업데이트(&G)</translation> <translation id="873133009373065397">Chrome에서 기본 브라우저를 확인하거나 설정할 수 없습니다.</translation> <translation id="8823341990149967727">Chrome이 이전 버전임</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ky.xtb b/chrome/app/resources/google_chrome_strings_ky.xtb index 5ef224d..c30d272 100644 --- a/chrome/app/resources/google_chrome_strings_ky.xtb +++ b/chrome/app/resources/google_chrome_strings_ky.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Шилтемени жаңы Chrome &өтмөгүндө ачуу</translation> <translation id="4953650215774548573">Google Chrome'ду демейки серепчи катары коюу</translation> <translation id="495931528404527476">Chrome ичинде</translation> +<translation id="4970761609246024540">Chrome профилдерине кош келиңиз</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OS'ту өчүрүп-күйгүзүңүз</translation> <translation id="5132929315877954718">Google Chrome'дун мыкты колдонмолор, оюндар, кеңейтүүлөр жана темалар дүйнөсүн ачыңыз.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome уурдалган сырсөз менен киргениңизде эскертет</translation> <translation id="8669527147644353129">Google Chrome Жардамчы</translation> <translation id="8679801911857917785">Ал ошондой эле Chrome иштеп баштаганда көрүнө турган бетти көзөмөлдөйт.</translation> +<translation id="8686817260976772516">Chrome профилдери менен Chrome'догу маалыматты өзүнчө сактай аласыз. Досторуңуз менен үй-бүлөңүз үчүн профилдерди түзүңүз же жумуш менен эс алууну бири-бири менен аралаштырбаңыз.</translation> <translation id="870251953148363156">&Google Chrome'ду жаңыртуу</translation> <translation id="873133009373065397">Google Chrome демейки серепчини аныктап же коё албай жатат</translation> <translation id="8823341990149967727">Chrome эскирип калган.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lo.xtb b/chrome/app/resources/google_chrome_strings_lo.xtb index 3e7a891..011ac7ac 100644 --- a/chrome/app/resources/google_chrome_strings_lo.xtb +++ b/chrome/app/resources/google_chrome_strings_lo.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">ເປີດລິ້ງໃນແຖບ Chrome ໃໝ່</translation> <translation id="4953650215774548573">ຕັ້ງ Google Chrome ເປັນບຣາວເຊີມາດຕະຖານຂອງທ່ານ</translation> <translation id="495931528404527476">ຢູ່ໃນ Chrome</translation> +<translation id="4970761609246024540">ຍິນດີຕ້ອນຮັບສູ່ໂປຣໄຟລ໌ Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">ປິດເປີດ Chrome OS ຄືນໃໝ່</translation> <translation id="5132929315877954718">ຄົ້ນພົບແອັບຯ, ເກມ, ສ່ວນຂະຫຍາຍ ແລະ ຮູບແບບສີສັນສຳລັບ Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome ຈະແຈ້ງບອກທ່ານເມື່ອທ່ານເຂົ້າສູ່ລະບົບດ້ວຍລະຫັດຜ່ານທີ່ຖືກລະເມີດ</translation> <translation id="8669527147644353129">ຕົວຊ່ວຍ Google Chrome</translation> <translation id="8679801911857917785">ມັນຍັງຄວບຄຸມວ່າຈະໃຫ້ສະແດງໜ້າໃດຂຶ້ນ ເມື່ອທ່ານເລີ່ມຕົ້ນເປີດ Chrome.</translation> +<translation id="8686817260976772516">ດ້ວຍໂປຣໄຟລ໌ Chrome ທ່ານສາມາດແຍກເນື້ອຫາ Chrome ຂອງທ່ານທັງໝົດໄດ້. ສ້າງໂປຣໄຟລ໌ສຳລັບໝູ່ ແລະ ຄອບຄົວ ຫຼື ແຍກຈາກກັນລະຫວ່າງວຽກ ແລະ ຄວາມມ່ວນ.</translation> <translation id="870251953148363156">ອັບເດດ Google Chrome</translation> <translation id="873133009373065397">Google Chrome ບໍ່ສາມາດກຳນົດ ຫຼື ຕັ້ງໂປຣແກຣມທ່ອງເວັບເລີ່ມຕົ້ນໄດ້</translation> <translation id="8823341990149967727">Chrome ລ້າສະໄໝແລ້ວ</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lt.xtb b/chrome/app/resources/google_chrome_strings_lt.xtb index 5f12e87..563332dd 100644 --- a/chrome/app/resources/google_chrome_strings_lt.xtb +++ b/chrome/app/resources/google_chrome_strings_lt.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Atidaryti nuorodą naujame „Chrome“ &skirtuke</translation> <translation id="4953650215774548573">Nustatyti „Google Chrome“ kaip numatytąją naršyklę</translation> <translation id="495931528404527476">Naudojant „Chrome“</translation> +<translation id="4970761609246024540">Sveiki, tai – „Chrome“ profiliai</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">„Chrome“ OS paleidimas iš naujo</translation> <translation id="5132929315877954718">Suraskite puikių „Google Chrome“ programų, žaidimų, plėtinių ir temų.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">„Chrome“ praneš jums, kai prisijungsite naudodami pažeistą slaptažodį</translation> <translation id="8669527147644353129">„Google Chrome“ pagalbos priemonė</translation> <translation id="8679801911857917785">Ji taip pat kontroliuoja, koks puslapis rodomas, kai paleidžiate „Chrome“.</translation> +<translation id="8686817260976772516">Naudodami „Chrome“ profilius galite atskirti visus savo „Chrome“ duomenis. Sukurkite profilius draugams ir šeimos nariams arba atskirkite darbą ir pramogas</translation> <translation id="870251953148363156">Atnaujinti „&Google Chrome“</translation> <translation id="873133009373065397">„Google Chrome“ nepavyko aptikti arba nustatyti numatytosios naršyklės</translation> <translation id="8823341990149967727">„Chrome“ versija yra pasenusi</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lv.xtb b/chrome/app/resources/google_chrome_strings_lv.xtb index 99b37b53..a77b3685 100644 --- a/chrome/app/resources/google_chrome_strings_lv.xtb +++ b/chrome/app/resources/google_chrome_strings_lv.xtb
@@ -148,6 +148,7 @@ <translation id="4895437082222824641">Atvērt saiti jaunā Chrome &cilnē</translation> <translation id="4953650215774548573">Iestatīt Google Chrome kā manu noklusējuma pārlūku</translation> <translation id="495931528404527476">Pārlūkprogrammā Chrome</translation> +<translation id="4970761609246024540">Laipni lūdzam Chrome profilos!</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Restartējiet Chrome OS</translation> <translation id="5132929315877954718">Atklājiet lieliskas lietotnes, spēles, paplašinājumus un motīvus, ko varat izmantot pārlūkā Google Chrome.</translation> @@ -265,6 +266,7 @@ <translation id="8641606876632989680">Ja pierakstīsieties ar uzlauztu paroli, pārlūkā Chrome tiks parādīts paziņojums.</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Tas nosaka arī to, kāda lapa tiks rādīta, kad atvērsiet pārlūku Chrome.</translation> +<translation id="8686817260976772516">Izmantojot Chrome profilus, varat nodalīt visu savu Chrome saturu. Izveidojiet profilus draugiem un ģimenes locekļiem vai nodaliet darba un izklaides saturu.</translation> <translation id="870251953148363156">Atjaunināt &Google Chrome</translation> <translation id="873133009373065397">Google Chrome nevar noteikt vai iestatīt noklusējuma pārlūku.</translation> <translation id="8823341990149967727">Chrome versija ir novecojusi</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mk.xtb b/chrome/app/resources/google_chrome_strings_mk.xtb index 77e8ae3..42662ce 100644 --- a/chrome/app/resources/google_chrome_strings_mk.xtb +++ b/chrome/app/resources/google_chrome_strings_mk.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Отвори го линкот во нова &картичка на Chrome</translation> <translation id="4953650215774548573">Поставете го Google Chrome за ваш стандарден прелистувач</translation> <translation id="495931528404527476">Во Chrome</translation> +<translation id="4970761609246024540">Добре дојдовте во профили на Chrome</translation> <translation id="4990567037958725628">Google Chrome Канари</translation> <translation id="5062123544085870375">Рестартирајте го Chrome OS</translation> <translation id="5132929315877954718">Открива одлични апликации, игри, наставки и теми за Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome ќе ве извести кога ќе се најавите со компромитирана лозинка</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Контролира и која страница се прикажува кога ќе стартувате Chrome.</translation> +<translation id="8686817260976772516">Со профилите на Chrome може да ги одделите сите ваши работи на Chrome. Создајте профили за пријателите и семејството или поделете ги помеѓу работа и забава.</translation> <translation id="870251953148363156">&Google Chrome се ажурира</translation> <translation id="873133009373065397">Google Chrome не може да го одреди или постави стандардниот прелистувач</translation> <translation id="8823341990149967727">Chrome е застарен</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ml.xtb b/chrome/app/resources/google_chrome_strings_ml.xtb index 7e9f62eb..c73231d 100644 --- a/chrome/app/resources/google_chrome_strings_ml.xtb +++ b/chrome/app/resources/google_chrome_strings_ml.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">പുതിയ Chrome &ടാബിൽ ലിങ്ക് തുറക്കുക</translation> <translation id="4953650215774548573">Google Chrome-നെ നിങ്ങളുടെ ഡിഫോൾട്ട് ബ്രൗസറായി സജ്ജീകരിക്കുക</translation> <translation id="495931528404527476">Chrome-ൽ</translation> +<translation id="4970761609246024540">Chrome പ്രൊഫൈലുകളിലേക്ക് സ്വാഗതം</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OS പുനഃരാരംഭിക്കുക</translation> <translation id="5132929315877954718">Google Chrome-നായി മികച്ച അപ്ലിക്കേഷനുകളും വിപുലീകരണങ്ങളും തീമുകളും കണ്ടെത്തുക.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">അപഹരിക്കപ്പെട്ട പാസ്വേഡ് ഉപയോഗിച്ച് നിങ്ങൾ സൈൻ ഇൻ ചെയ്യുമ്പോൾ Chrome നിങ്ങളെ അറിയിക്കും</translation> <translation id="8669527147644353129">Google Chrome സഹായി</translation> <translation id="8679801911857917785">നിങ്ങൾ Chrome ആരംഭിയ്ക്കുമ്പോൾ ഏത് പേജാണ് കാണിക്കേണ്ടതെന്നും അത് നിയന്ത്രിയ്ക്കുന്നു.</translation> +<translation id="8686817260976772516">Chrome പ്രൊഫൈലുകൾ ഉപയോഗിച്ച് നിങ്ങളുടെ എല്ലാ Chrome ഉള്ളടക്കവും വേർതിരിക്കാം. സുഹൃത്തുക്കൾക്കും കുടുംബത്തിനും വ്യത്യസ്ത പ്രൊഫൈലുകൾ സൃഷ്ടിക്കൂ അല്ലെങ്കിൽ ജോലികാര്യങ്ങളും വിനോദവും പ്രത്യേകമായി തരംതിരിക്കൂ.</translation> <translation id="870251953148363156">&Google Chrome അപ്ഡേറ്റ് ചെയ്യുക</translation> <translation id="873133009373065397">Google Chrome-ന് ഡിഫോൾട്ട് ബ്രൗസർ നിർണ്ണയിക്കാനോ സജ്ജമാക്കാനോ കഴിയില്ല</translation> <translation id="8823341990149967727">Chrome കാലഹരണപ്പെട്ടതാണ്</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mn.xtb b/chrome/app/resources/google_chrome_strings_mn.xtb index 69da2706..88f4f349 100644 --- a/chrome/app/resources/google_chrome_strings_mn.xtb +++ b/chrome/app/resources/google_chrome_strings_mn.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Холбоосыг шинэ Chrome-н табад нээх</translation> <translation id="4953650215774548573">Google Chrome-ыг өөрийн анхдагч веб хөтөч болгон тохируулна уу</translation> <translation id="495931528404527476">Chrome-д</translation> +<translation id="4970761609246024540">Chrome профайлд тавтай морилно уу</translation> <translation id="4990567037958725628">Google Chrome цайвар шаргал өнгө</translation> <translation id="5062123544085870375">Chrome OS-г дахин эхлүүлэх</translation> <translation id="5132929315877954718">Google Кромын шилдэг апп, тоглоом, өргөтгөл болон загварыг ашиглах боломжтой.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome нь таныг алдагдсан нууц үгээр нэвтрэх үед танд мэдэгдэнэ</translation> <translation id="8669527147644353129">Google Chrome Туслагч</translation> <translation id="8679801911857917785">Энэ нь мөн таныг Chrome-ыг эхлүүлэх үед гарч ирдэг хуудсыг хянадаг.</translation> +<translation id="8686817260976772516">Та Chrome профайлаар Chrome-н бүх зүйлээ тусгаарлах боломжтой. Найзууд, гэр бүлдээ профайл үүсгэх эсвэл ажил болон дуртай зүйлээ хооронд нь хуваагаарай.</translation> <translation id="870251953148363156">Google Chrome-г шинэчлэх</translation> <translation id="873133009373065397">Google Chrome өгөгдмөл хөтчийг тодорхойлох эсвэл тохируулах боломжгүй</translation> <translation id="8823341990149967727">Chrome хуучирсан байна.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ms.xtb b/chrome/app/resources/google_chrome_strings_ms.xtb index 7a74ac0..7230cd2 100644 --- a/chrome/app/resources/google_chrome_strings_ms.xtb +++ b/chrome/app/resources/google_chrome_strings_ms.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Buka pautan dalam &tab Chrome baharu</translation> <translation id="4953650215774548573">Tetapkan Google Chrome sebagai penyemak imbas lalai anda</translation> <translation id="495931528404527476">Dalam Chrome</translation> +<translation id="4970761609246024540">Selamat datang ke profil Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Mulakan semula OS Chrome</translation> <translation id="5132929315877954718">Temui apl, permainan, sambungan dan tema hebat untuk Google Chrome.</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">Chrome akan memaklumkan kepada anda apabila anda log masuk menggunakan kata laluan yang terjejas</translation> <translation id="8669527147644353129">Pembantu Google Chrome</translation> <translation id="8679801911857917785">Sambungan turut mengawal halaman yang ditunjukkan apabila anda memulakan Chrome.</translation> +<translation id="8686817260976772516">Dengan profil Chrome anda dapat mengasingkan semua bahan Chrome anda. Buat profil untuk rakan dan keluarga atau asingkan antara bahan kerja dengan bahan untuk keseronokan.</translation> <translation id="870251953148363156">Kemas kini &Google Chrome</translation> <translation id="873133009373065397">Google Chrome tidak dapat menentukan atau menetapkan penyemak imbas lalai</translation> <translation id="8823341990149967727">Chrome sudah Usang</translation>
diff --git a/chrome/app/resources/google_chrome_strings_my.xtb b/chrome/app/resources/google_chrome_strings_my.xtb index 0a5ee484..4d1240d8 100644 --- a/chrome/app/resources/google_chrome_strings_my.xtb +++ b/chrome/app/resources/google_chrome_strings_my.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Chrome တဘ်အသစ်တွင် လင့်ခ်ကို ဖွင့်ရန်</translation> <translation id="4953650215774548573">Google Chrome ကို သင်၏ ပုံသေ ဘရောင်ဇာ အဖြစ် သတ်မှတ်ရန်</translation> <translation id="495931528404527476">Chrome ထဲမှာ</translation> +<translation id="4970761609246024540">Chrome ပရိုဖိုင်များမှ ကြိုဆိုပါသည်</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OS ကို ပြန်လည်စတင်ပါ</translation> <translation id="5132929315877954718">Google Chrome အတွက် ဧရာမ အက်ပ်များ၊ ဂိမ်းများ၊ တိုးချဲ့မှုများ နှင့် အပြင်အဆင်များကို ရှာကြည့်ပါ</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">ကျိုးပေါက်ထားသည့် စကားဝှက်ဖြင့် လက်မှတ်ထိုးဝင်သည့်အခါ Chrome က သင့်ကို အကြောင်းကြားပါမည်</translation> <translation id="8669527147644353129">Google Chrome ကူညီပေးသူ</translation> <translation id="8679801911857917785">သင်က Chrome ကို စတင်စဉ် ဘယ်စာမျက်နှာ ပြကြောင်းကိုပါ ၎င်းက ထိန်းချုပ်ပါသည်။</translation> +<translation id="8686817260976772516">သင်၏ Chrome လုပ်ဆောင်ချက်အားလုံးကို Chrome ပရိုဖိုင်များဖြင့် သီးသန့်ခွဲခြားနိုင်သည်။ မိတ်ဆွေများနှင့် မိသားစုတို့အတွက် ပရိုဖိုင်များပြုလုပ်ပါ (သို့) အလုပ်နှင့် ပျော်စရာအကြား ခွဲခြားအသုံးပြုပါ။</translation> <translation id="870251953148363156">&Google Chrome ကို အဆင့်မြှင့်ရန်</translation> <translation id="873133009373065397">Google Chrome သည် မူရင်းဘရောင်ဇာကို ဆုံးဖြတ်ပေးခြင်းသော်လည်းကောင်း သတ်မှတ်ခြင်းသော်လည်းကောင်း လုပ်၍မရပါ</translation> <translation id="8823341990149967727">Chrome မှာ ဟောင်းသွားပြီ</translation>
diff --git a/chrome/app/resources/google_chrome_strings_nl.xtb b/chrome/app/resources/google_chrome_strings_nl.xtb index 08c9d11e..08b646ae 100644 --- a/chrome/app/resources/google_chrome_strings_nl.xtb +++ b/chrome/app/resources/google_chrome_strings_nl.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Link openen op een nieuw Chrome-&tabblad</translation> <translation id="4953650215774548573">Google Chrome instellen als je standaardbrowser</translation> <translation id="495931528404527476">In Chrome</translation> +<translation id="4970761609246024540">Welkom bij Chrome-profielen</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OS opnieuw opstarten</translation> <translation id="5132929315877954718">Ontdek fantastische apps, games, extensies en thema's voor Google Chrome.</translation> @@ -266,6 +267,7 @@ <translation id="8641606876632989680">Chrome laat het je weten als je inlogt met een gehackt wachtwoord</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Hiermee wordt ook gecontroleerd welke pagina wordt weergegeven wanneer je Chrome start.</translation> +<translation id="8686817260976772516">Met Chrome-profielen kun je alle Chrome-gegevens gescheiden houden. Maak profielen voor vrienden en familie of maak onderscheid tussen werk en privé.</translation> <translation id="870251953148363156">&Google Chrome updaten</translation> <translation id="873133009373065397">Google Chrome kan de standaardbrowser niet bepalen of instellen</translation> <translation id="8823341990149967727">Chrome is verouderd</translation>
diff --git a/chrome/app/resources/google_chrome_strings_no.xtb b/chrome/app/resources/google_chrome_strings_no.xtb index 24e8e04..322519c6 100644 --- a/chrome/app/resources/google_chrome_strings_no.xtb +++ b/chrome/app/resources/google_chrome_strings_no.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Åpne linken i en ny &fane i Chrome</translation> <translation id="4953650215774548573">Bruk Google Chrome som standard nettleser</translation> <translation id="495931528404527476">I Chrome</translation> +<translation id="4970761609246024540">Velkommen til Chrome-profiler</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Start Chrome OS på nytt</translation> <translation id="5132929315877954718">Oppdag flotte apper, spill, utvidelser og temaer for Google Chrome.</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">Chrome varsler deg når du logger på med passord som er utsatt for sikkerhetsbrudd</translation> <translation id="8669527147644353129">Google Chrome-hjelper</translation> <translation id="8679801911857917785">Den styrer også hvilken side som vises når du starter Chrome.</translation> +<translation id="8686817260976772516">Med Chrome-profiler kan du holde alle Chrome-tingene dine atskilt. Opprett profiler for venner og familie, eller skill mellom arbeid og fritid.</translation> <translation id="870251953148363156">Oppdater &Google Chrome</translation> <translation id="873133009373065397">Google Chrome kan ikke fastslå eller angi standardnettleseren</translation> <translation id="8823341990149967727">Chrome er utdatert</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pl.xtb b/chrome/app/resources/google_chrome_strings_pl.xtb index f7cea7c..d947c5b 100644 --- a/chrome/app/resources/google_chrome_strings_pl.xtb +++ b/chrome/app/resources/google_chrome_strings_pl.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">O&twórz link w nowej karcie Chrome</translation> <translation id="4953650215774548573">Ustaw Google Chrome jako domyślną przeglądarkę</translation> <translation id="495931528404527476">W Chrome</translation> +<translation id="4970761609246024540">Witamy w profilach Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Uruchom ponownie Chrome OS</translation> <translation id="5132929315877954718">Odkryj znakomite aplikacje, gry, rozszerzenia i motywy do przeglądarki Google Chrome.</translation> @@ -260,6 +261,7 @@ <translation id="8641606876632989680">Chrome powiadomi Cię w razie logowania za pomocą przejętego hasła</translation> <translation id="8669527147644353129">Pomoc Google Chrome</translation> <translation id="8679801911857917785">Kontroluje także to, jaka strona wyświetla się po uruchomieniu Chrome.</translation> +<translation id="8686817260976772516">Dzięki profilom Chrome wszystkie swoje rzeczy z tej przeglądarki możesz przechowywać osobno. Utwórz profile dla znajomych i rodziny albo oddziel pracę od rozrywki.</translation> <translation id="870251953148363156">Aktualizuj &Google Chrome</translation> <translation id="873133009373065397">Google Chrome nie może określić ani ustawić domyślnej przeglądarki</translation> <translation id="8823341990149967727">Chrome jest nieaktualny</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-BR.xtb b/chrome/app/resources/google_chrome_strings_pt-BR.xtb index 1c48535..96786b6 100644 --- a/chrome/app/resources/google_chrome_strings_pt-BR.xtb +++ b/chrome/app/resources/google_chrome_strings_pt-BR.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Abrir link em nova &guia do Chrome</translation> <translation id="4953650215774548573">Definir o Google Chrome como seu navegador padrão</translation> <translation id="495931528404527476">No Google Chrome</translation> +<translation id="4970761609246024540">Conheça os perfis do Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Reiniciar o Chrome OS</translation> <translation id="5132929315877954718">Descubra ótimos aplicativos, jogos, extensões e temas para o Google Chrome.</translation> @@ -260,6 +261,7 @@ <translation id="8641606876632989680">O Chrome enviará uma notificação quando você fizer login com uma senha comprometida</translation> <translation id="8669527147644353129">Auxiliar do Google Chrome</translation> <translation id="8679801911857917785">Controla também qual página deve ser exibida quando você inicia o Chrome.</translation> +<translation id="8686817260976772516">Você pode usar os perfis do Chrome para separar todos seus dados nele. Crie perfis para amigos e familiares ou separe trabalho e lazer.</translation> <translation id="870251953148363156">Atualizar o Google Chrome</translation> <translation id="873133009373065397">O Google Chrome não pode determinar ou definir o navegador padrão</translation> <translation id="8823341990149967727">O Google Chrome está desatualizado</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-PT.xtb b/chrome/app/resources/google_chrome_strings_pt-PT.xtb index b399e53..9313104f 100644 --- a/chrome/app/resources/google_chrome_strings_pt-PT.xtb +++ b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Abrir link num novo &separador do Chrome</translation> <translation id="4953650215774548573">Definir o Google Chrome como o navegador predefinido</translation> <translation id="495931528404527476">No Chrome</translation> +<translation id="4970761609246024540">Damos-lhe as boas-vindas aos perfis do Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Reiniciar o Chrome OS</translation> <translation id="5132929315877954718">Descubra fantásticas aplicações, jogos, extensões e temas para o Google Chrome.</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">O Chrome envia-lhe uma notificação quando iniciar sessão com uma palavra-passe comprometida.</translation> <translation id="8669527147644353129">Ajudante do Google Chrome</translation> <translation id="8679801911857917785">Também controla a página apresentada quando inicia o Chrome.</translation> +<translation id="8686817260976772516">Com os perfis do Chrome, pode separar todos os seus itens do Chrome. Crie perfis para amigos e familiares ou separe o trabalho da diversão.</translation> <translation id="870251953148363156">Atualizar o &Google Chrome</translation> <translation id="873133009373065397">O Google Chrome não consegue determinar ou definir o navegador predefinido</translation> <translation id="8823341990149967727">O Chrome Está Desatualizado</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ro.xtb b/chrome/app/resources/google_chrome_strings_ro.xtb index 0fcf8d2..3625e16 100644 --- a/chrome/app/resources/google_chrome_strings_ro.xtb +++ b/chrome/app/resources/google_chrome_strings_ro.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Deschide linkul într-o &filă Chrome nouă</translation> <translation id="4953650215774548573">Setați Google Chrome ca browser prestabilit</translation> <translation id="495931528404527476">În Chrome</translation> +<translation id="4970761609246024540">Bun venit la profilurile Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Repornește sistemul de operare Chrome</translation> <translation id="5132929315877954718">Descoperă aplicații, jocuri, extensii și teme extraordinare pentru Google Chrome.</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">Chrome te va anunța dacă te conectezi folosind o parolă compromisă</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Stabilește și ce pagină se afișează când porniți Chrome.</translation> +<translation id="8686817260976772516">Cu ajutorul profilurilor Chrome, poți păstra separat toate informațiile din Chrome. Creează profiluri pentru prieteni și familie sau pentru muncă și timp liber.</translation> <translation id="870251953148363156">Actualizați &Google Chrome</translation> <translation id="873133009373065397">Google Chrome nu poate determina sau seta browserul prestabilit</translation> <translation id="8823341990149967727">Chrome nu este actualizat</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ru.xtb b/chrome/app/resources/google_chrome_strings_ru.xtb index 0d9d2c0..7af678e 100644 --- a/chrome/app/resources/google_chrome_strings_ru.xtb +++ b/chrome/app/resources/google_chrome_strings_ru.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Открыть ссылку в новой вкладке браузера Chrome</translation> <translation id="4953650215774548573">Сделать Google Chrome браузером по умолчанию</translation> <translation id="495931528404527476">В Chrome</translation> +<translation id="4970761609246024540">Представляем профили Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Перезапуск Chrome OS</translation> <translation id="5132929315877954718">Широкий выбор приложений, игр, расширений и тем для Google Chrome.</translation> @@ -260,6 +261,7 @@ <translation id="8641606876632989680">Вы получите уведомление от Chrome, если войдете в аккаунт с паролем, который был раскрыт.</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Кроме того, расширение изменило стартовую страницу Chrome.</translation> +<translation id="8686817260976772516">Профили Chrome нужны для раздельного использования браузера, например разными людьми или в разных целях.</translation> <translation id="870251953148363156">Обновить &Google Chrome</translation> <translation id="873133009373065397">Google Chrome не удалось определить или задать браузер по умолчанию</translation> <translation id="8823341990149967727">Версия Chrome устарела</translation>
diff --git a/chrome/app/resources/google_chrome_strings_si.xtb b/chrome/app/resources/google_chrome_strings_si.xtb index 2fa2fa8c..5c0018c 100644 --- a/chrome/app/resources/google_chrome_strings_si.xtb +++ b/chrome/app/resources/google_chrome_strings_si.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">සබැඳිය නව Chrome ප&ටිත්තක විවෘත කරන්න</translation> <translation id="4953650215774548573">ඔබේ පෙරනිමි බ්රව්සරය ලෙස Google Chrome සකසන්න</translation> <translation id="495931528404527476">Chrome තුළ</translation> +<translation id="4970761609246024540">Chrome පැතිකඩවල් වෙත සාදරයෙන් පිළිගනිමු</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OS යළි අරඹන්න</translation> <translation id="5132929315877954718">Google Chrome සඳහා විශිෂ්ට යෙදුම්, ක්රීඩා, දිගු සහ තේමා සොයා ගන්න.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">ඔබ සමථයට පත් වූ මුරපදයක් සමඟ පුරන විට Chrome ඔබට දැනුම් දෙයි</translation> <translation id="8669527147644353129">Google Chrome උදව් කරන්නා</translation> <translation id="8679801911857917785">තවද එය ඔබ Chrome ආරම්භයේදී දකින පිටුවද වෙනස් කරයි.</translation> +<translation id="8686817260976772516">Chrome පැතිකඩවල් සමඟ ඔබට ඔබගේ සියලු Chrome දේවල් වෙන් කළ හැකිය. මිතුරන් සහ පවුලේ අය සඳහා පැතිකඩ තනන්න, නැතහොත් රැකියාව සහ විනෝදය අතර බෙදන්න.</translation> <translation id="870251953148363156">Google Chrome යාවත්කාලීන කරන්න</translation> <translation id="873133009373065397">Google Chrome හට පෙරනිමි බ්රව්සරය නිර්ණය කිරීමට හෝ සැකසීමට නොහැකිය</translation> <translation id="8823341990149967727">Chrome යල් පැන ගොස් ඇත</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sk.xtb b/chrome/app/resources/google_chrome_strings_sk.xtb index 2213e69..d3eaea44 100644 --- a/chrome/app/resources/google_chrome_strings_sk.xtb +++ b/chrome/app/resources/google_chrome_strings_sk.xtb
@@ -148,6 +148,7 @@ <translation id="4895437082222824641">Otvoriť odkaz na novej &karte Chromu</translation> <translation id="4953650215774548573">Nastaviť Google Chrome ako predvolený prehliadač</translation> <translation id="495931528404527476">V prehliadači Chrome</translation> +<translation id="4970761609246024540">Vitajte v profiloch Chromu</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Reštartovanie Chrome OS</translation> <translation id="5132929315877954718">Objavte skvelé aplikácie, hry, rozšírenia a motívy pre prehliadač Google Chrome.</translation> @@ -266,6 +267,7 @@ <translation id="8641606876632989680">Chrome vás upozorní, keď sa prihlásite pomocou prelomeného hesla</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Tiež určuje, ktorá stránka sa zobrazí pri spustení prehliadača Chrome.</translation> +<translation id="8686817260976772516">Profilmi Chromu môžete oddeliť všetok svoj obsah v Chrome. Vytvorte profily pre rodinu aj priateľov alebo si rozdeľte obsah na prácu a zábavu.</translation> <translation id="870251953148363156">Aktualizácia prehliadača &Google Chrome</translation> <translation id="873133009373065397">Google Chrome nedokáže určiť alebo nastaviť predvolený prehliadač</translation> <translation id="8823341990149967727">Prehliadač Chrome je zastaraný</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sl.xtb b/chrome/app/resources/google_chrome_strings_sl.xtb index a217b3c7..5b4a34f 100644 --- a/chrome/app/resources/google_chrome_strings_sl.xtb +++ b/chrome/app/resources/google_chrome_strings_sl.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Odpiranje povezave na novem &zavihku v Chromu</translation> <translation id="4953650215774548573">Nastavitev Google Chroma za privzeti brskalnik</translation> <translation id="495931528404527476">V Chromu</translation> +<translation id="4970761609246024540">Pozdravljeni v profilih v Chromu</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Vnovičen zagon OS-a Chrome</translation> <translation id="5132929315877954718">Odkrijte zanimive aplikacije, igre, razširitve in teme za Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome vas bo obvestil, če se prijavite z ogroženim geslom</translation> <translation id="8669527147644353129">Pomočnik za Google Chrome</translation> <translation id="8679801911857917785">Določa tudi, katera stran je prikazana, ko zaženete Chrome.</translation> +<translation id="8686817260976772516">S profili v Chromu lahko ločite vse stvari v Chromu. Ustvarite profile za prijatelje in svojce ali ustvarite ločene za delo in zabavo.</translation> <translation id="870251953148363156">Posodabljanje &Google Chroma</translation> <translation id="873133009373065397">Google Chrome ne more določiti ali nastaviti privzetega brskalnika</translation> <translation id="8823341990149967727">Chrome je zastarel</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sq.xtb b/chrome/app/resources/google_chrome_strings_sq.xtb index 8b89829..00eecee 100644 --- a/chrome/app/resources/google_chrome_strings_sq.xtb +++ b/chrome/app/resources/google_chrome_strings_sq.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Hape lidhjen në një &skedë të re të Chrome</translation> <translation id="4953650215774548573">Caktoje Google Chrome si shfletuesin tënd të parazgjedhur</translation> <translation id="495931528404527476">Në Chrome</translation> +<translation id="4970761609246024540">Mirë se vjen në profilet e Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Rinis Chrome OS</translation> <translation id="5132929315877954718">Zbulo aplikacione, lojëra, shtesa dhe tema të mrekullueshme për Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome do të të njoftojë kur të identifikohesh me një fjalëkalim të komprometuar</translation> <translation id="8669527147644353129">Ndihmësi i Google Chrome</translation> <translation id="8679801911857917785">Kontrollon gjithashtu se cila faqe shfaqet kur fillon Chrome.</translation> +<translation id="8686817260976772516">Me profilet e Chrome mund t'i mbash të ndara të gjitha gjërat e tua të Chrome. Krijo profile për miqtë dhe familjen ose ndaje punën nga argëtimi.</translation> <translation id="870251953148363156">Përditëso Google Chrome</translation> <translation id="873133009373065397">Google Chrome nuk mund të përcaktojë ose të vendosë shfletuesin e parazgjedhur</translation> <translation id="8823341990149967727">Sistemi operativ Chrome nuk është i përditësuar</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb index bea2a84..b793e206 100644 --- a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb +++ b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Otvori link u novoj Chrome &kartici</translation> <translation id="4953650215774548573">Podesi Google Chrome kao podrazumevani pregledač</translation> <translation id="495931528404527476">U Chrome-u</translation> +<translation id="4970761609246024540">Dobro došli u Chrome profile</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Restartujte Chrome OS</translation> <translation id="5132929315877954718">Otkrijte odlične aplikacije, igre, dodatke i teme za Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome će vas obavestiti kada se prijavite pomoću ugrožene lozinke</translation> <translation id="8669527147644353129">Google Chrome pomoćnik</translation> <translation id="8679801911857917785">Kontroliše i stranicu koja se prikazuje kada pokrenete Chrome.</translation> +<translation id="8686817260976772516">Pomoću Chrome profila možete da razdvojite sve Chrome sadržaje. Napravite profile za prijatelje i porodicu ili razdvojite posao i zabavu.</translation> <translation id="870251953148363156">Ažuriraj &Google Chrome</translation> <translation id="873133009373065397">Google Chrome ne može da odredi ni da podesi podrazumevani pregledač</translation> <translation id="8823341990149967727">Chrome je zastareo</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr.xtb b/chrome/app/resources/google_chrome_strings_sr.xtb index 746336f..240071a 100644 --- a/chrome/app/resources/google_chrome_strings_sr.xtb +++ b/chrome/app/resources/google_chrome_strings_sr.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Отвори линк у новој Chrome &картици</translation> <translation id="4953650215774548573">Подеси Google Chrome као подразумевани прегледач</translation> <translation id="495931528404527476">У Chrome-у</translation> +<translation id="4970761609246024540">Добро дошли у Chrome профиле</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Рестартујте Chrome ОС</translation> <translation id="5132929315877954718">Откријте одличне апликације, игре, додатке и теме за Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome ће вас обавестити када се пријавите помоћу угрожене лозинке</translation> <translation id="8669527147644353129">Google Chrome помоћник</translation> <translation id="8679801911857917785">Контролише и страницу која се приказује када покренете Chrome.</translation> +<translation id="8686817260976772516">Помоћу Chrome профила можете да раздвојите све Chrome садржаје. Направите профиле за пријатеље и породицу или раздвојите посао и забаву.</translation> <translation id="870251953148363156">Ажурирај &Google Chrome</translation> <translation id="873133009373065397">Google Chrome не може да одреди ни да подеси подразумевани прегледач</translation> <translation id="8823341990149967727">Chrome је застарео</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sv.xtb b/chrome/app/resources/google_chrome_strings_sv.xtb index 383136f..5de7c52 100644 --- a/chrome/app/resources/google_chrome_strings_sv.xtb +++ b/chrome/app/resources/google_chrome_strings_sv.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Öppna länkar i en ny flik i Chrome</translation> <translation id="4953650215774548573">Ange Google Chrome som standardwebbläsare</translation> <translation id="495931528404527476">I Chrome</translation> +<translation id="4970761609246024540">Välkommen till Chrome-profiler</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Starta om Chrome OS</translation> <translation id="5132929315877954718">Upptäck fantastiska program, spel, tillägg och teman för Google Chrome.</translation> @@ -270,6 +271,7 @@ <translation id="8641606876632989680">Chrome aviserar dig om du loggar in med ett utsatt lösenord</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Det styr också vilken sida som visas när du startar Chrome.</translation> +<translation id="8686817260976772516">Du kan hålla dina saker i Chrome åtskilda med hjälp av Chrome-profiler. Skapa profiler för vänner och familjemedlemmar eller dela upp jobb och nöje.</translation> <translation id="870251953148363156">Uppdatera &Google Chrome</translation> <translation id="873133009373065397">Google Chrome kan inte fastställa eller ange standardwebbläsaren</translation> <translation id="8823341990149967727">Den här versionen av Chrome är inaktuell</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sw.xtb b/chrome/app/resources/google_chrome_strings_sw.xtb index 59f16e3..f2c935f 100644 --- a/chrome/app/resources/google_chrome_strings_sw.xtb +++ b/chrome/app/resources/google_chrome_strings_sw.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Fungua kiungo katika kichupo kipya cha Chrome</translation> <translation id="4953650215774548573">Weka Google Chrome iwe kivinjari chako chaguomsingi</translation> <translation id="495931528404527476">Katika Chrome</translation> +<translation id="4970761609246024540">Karibu kwenye kipengele cha wasifu kwenye Chrome</translation> <translation id="4990567037958725628">Kanari ya Google Chrome</translation> <translation id="5062123544085870375">Zima kisha uwashe mfumo wa uendeshaji wa Chrome</translation> <translation id="5132929315877954718">Gundua programu, michezo, viendelezi na mandhari bora ya Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">Chrome itakuarifu ukiingia katika akaunti ukitumia nenosiri lililoathiriwa</translation> <translation id="8669527147644353129">Msaidizi wa Google Chrome</translation> <translation id="8679801911857917785">Pia inadhibiti ukurasa unaoonyeshwa unapoanzisha Chrome.</translation> +<translation id="8686817260976772516">Ukitumia kipengele cha wasifu kwenye Chrome unaweza kutenganisha vitu vyako vyote vya Chrome. Tengeneza wasifu wa marafiki na familia au utenganishe kazi na burudani.</translation> <translation id="870251953148363156">Sasisha &Google Chrome</translation> <translation id="873133009373065397">Google Chrome haijafaulu kubainisha wala kuweka kivinjari chaguomsingi</translation> <translation id="8823341990149967727">Toleo hili la Chrome Limepitwa na Wakati</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ta.xtb b/chrome/app/resources/google_chrome_strings_ta.xtb index c42376d0..3339947 100644 --- a/chrome/app/resources/google_chrome_strings_ta.xtb +++ b/chrome/app/resources/google_chrome_strings_ta.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">புதிய Chrome &தாவலில் இணைப்பைத் திற</translation> <translation id="4953650215774548573">Google Chrome ஐ உங்கள் இயல்புநிலை உலாவியாக அமைக்கவும்</translation> <translation id="495931528404527476">Chrome இல்</translation> +<translation id="4970761609246024540">Chrome சுயவிவரங்களுக்கு வரவேற்கிறோம்</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OSஸை மீண்டும் தொடங்கவும்</translation> <translation id="5132929315877954718">Google Chrome க்கான சிறந்த ஆப்ஸ், கேம்ஸ், நீட்டிப்புகள் மற்றும் தீம்களைக் கண்டறியவும்.</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">களவாடப்பட்ட கடவுச்சொல் முலம் நீங்கள் உள்நுழையும்போது Chrome உங்களுக்குத் தெரியப்படுத்தும்</translation> <translation id="8669527147644353129">Google Chrome உதவி</translation> <translation id="8679801911857917785">Chrome ஐத் தொடங்கும்போது காண்பிக்கப்படும் பக்கத்தையும் இது கட்டுப்படுத்துகிறது.</translation> +<translation id="8686817260976772516">Chrome சுயவிவரங்களைப் பயன்படுத்தி உங்கள் Chrome தொடர்பான அனைத்தையும் தனித்தனியாக வைத்துக்கொள்ளலாம். நண்பர்களுக்காகவும் குடும்பத்திற்காகவும் சுயவிவரங்களை உருவாக்கலாம் அல்லது பணி மற்றும் பொழுதுபோக்கிற்காக அவற்றைத் தனித்தனியாக வைத்துக்கொள்ளலாம்.</translation> <translation id="870251953148363156">&Google Chrome ஐப் புதுப்பி</translation> <translation id="873133009373065397">இயல்புநிலை உலாவியைக் கண்டறியவோ அமைக்கவோ Google Chrome ஆல் முடியவில்லை</translation> <translation id="8823341990149967727">Chrome காலாவதியானது</translation>
diff --git a/chrome/app/resources/google_chrome_strings_th.xtb b/chrome/app/resources/google_chrome_strings_th.xtb index ce15c4f..a75dcb4 100644 --- a/chrome/app/resources/google_chrome_strings_th.xtb +++ b/chrome/app/resources/google_chrome_strings_th.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">เปิดลิงก์ใน Chrome แท็บใหม่</translation> <translation id="4953650215774548573">ตั้ง Google Chrome เป็นเบราว์เซอร์เริ่มต้นของคุณ</translation> <translation id="495931528404527476">ใน Chrome</translation> +<translation id="4970761609246024540">ยินดีต้อนรับสู่โปรไฟล์ Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">รีสตาร์ท Chrome OS</translation> <translation id="5132929315877954718">พบกับแอป เกม ส่วนขยาย และธีมเด็ดๆ สำหรับ Google Chrome</translation> @@ -260,6 +261,7 @@ <translation id="8641606876632989680">Chrome จะแจ้งให้คุณทราบเมื่อคุณลงชื่อเข้าใช้ด้วยรหัสผ่านที่ไม่รัดกุม</translation> <translation id="8669527147644353129">ตัวช่วยเหลือของ Google Chrome</translation> <translation id="8679801911857917785">อีกทั้งยังควบคุมหน้าที่จะแสดงเมื่อคุณเปิด Chrome ด้วย</translation> +<translation id="8686817260976772516">โปรไฟล์ Chrome ช่วยให้คุณแยกข้อมูลต่างๆ ใน Chrome ออกจากกัน สร้างโปรไฟล์สำหรับเพื่อนและครอบครัว หรือแยกการทำงานออกจากความบันเทิง</translation> <translation id="870251953148363156">อัปเดต &Google Chrome</translation> <translation id="873133009373065397">Google Chrome ไม่สามารถกำหนดหรือตั้งค่าเบราว์เซอร์เริ่มต้น</translation> <translation id="8823341990149967727">Chrome ล้าสมัย</translation>
diff --git a/chrome/app/resources/google_chrome_strings_tr.xtb b/chrome/app/resources/google_chrome_strings_tr.xtb index 5b94bab3..762bb99 100644 --- a/chrome/app/resources/google_chrome_strings_tr.xtb +++ b/chrome/app/resources/google_chrome_strings_tr.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Bağlantıyı yeni Chrome &sekmesinde aç</translation> <translation id="4953650215774548573">Google Chrome'u varsayılan tarayıcım olarak ayarla</translation> <translation id="495931528404527476">Chrome'da</translation> +<translation id="4970761609246024540">Chrome profillerine hoş geldiniz</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OS'i yeniden başlat</translation> <translation id="5132929315877954718">Google Chrome'a özgü harika uygulamaları, oyunları, uzantıları ve temaları keşfedin.</translation> @@ -263,6 +264,7 @@ <translation id="8641606876632989680">Chrome, güvenliği ihlal edilmiş bir şifreyle oturum açtığınızda size haber verir</translation> <translation id="8669527147644353129">Google Chrome Helper</translation> <translation id="8679801911857917785">Ayrıca Chrome'u başlattığınızda gösterilecek sayfayı da denetler.</translation> +<translation id="8686817260976772516">Chrome profilleri ile tüm Chrome öğelerinizi ayırabilirsiniz. Arkadaşlar ve aile için profil oluşturun veya iş ile eğlenceyi ayırın.</translation> <translation id="870251953148363156">&Google Chrome'u güncelle</translation> <translation id="873133009373065397">Google Chrome, varsayılan tarayıcıyı tespit edemiyor veya ayarlayamıyor</translation> <translation id="8823341990149967727">Chrome Sürümü Eski</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uk.xtb b/chrome/app/resources/google_chrome_strings_uk.xtb index 6b497ad..3fb8252c 100644 --- a/chrome/app/resources/google_chrome_strings_uk.xtb +++ b/chrome/app/resources/google_chrome_strings_uk.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">Відкрити посилання в новій &вкладці Chrome</translation> <translation id="4953650215774548573">Зробити Google Chrome веб-переглядачем за умовчанням</translation> <translation id="495931528404527476">У Chrome</translation> +<translation id="4970761609246024540">Представляємо профілі Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Перезапустіть ОС Chrome</translation> <translation id="5132929315877954718">Знаходьте чудові додатки, ігри, розширення й теми для Google Chrome.</translation> @@ -261,6 +262,7 @@ <translation id="8641606876632989680">Chrome сповістить, коли ви ввійдете в обліковий запис за допомогою зламаного пароля</translation> <translation id="8669527147644353129">Помічник Google Chrome</translation> <translation id="8679801911857917785">Розширення також змінило сторінку, яка відкривається під час запуску Chrome.</translation> +<translation id="8686817260976772516">Створюйте різні профілі Chrome для різних цілей (наприклад, робочий і особистий) і для різних людей (як-от друзів і членів сім'ї).</translation> <translation id="870251953148363156">Оновити &Google Chrome</translation> <translation id="873133009373065397">Google Chrome не може визначити чи встановити веб-переглядач за умовчанням</translation> <translation id="8823341990149967727">Версія Chrome застаріла</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uz.xtb b/chrome/app/resources/google_chrome_strings_uz.xtb index cb67363f..5d0e8c8a 100644 --- a/chrome/app/resources/google_chrome_strings_uz.xtb +++ b/chrome/app/resources/google_chrome_strings_uz.xtb
@@ -147,6 +147,7 @@ <translation id="4895437082222824641">&Havolani yangi varaqda ochish</translation> <translation id="4953650215774548573">Google Chrome‘ni standart brauzer etib tayinlash</translation> <translation id="495931528404527476">Chrome brauzerida</translation> +<translation id="4970761609246024540">Chrome profillariga xush kelibsiz</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Chrome OS tizimini qayta ishga tushirish</translation> <translation id="5132929315877954718">Google Chrome uchun zo‘r ilovalar, o‘yinlar, kengaytmalar va mavzular bilan tanishing.</translation> @@ -266,6 +267,7 @@ <translation id="8641606876632989680">Google hisobingizga kirsangiz, Chrome oshkor qilingan parollar haqida xabar qiladi</translation> <translation id="8669527147644353129">Google Chrome yordamchisi</translation> <translation id="8679801911857917785">Bundan tashqari, kengaytma Chrome bosh sahifasini o‘zgarib qo‘ydi.</translation> +<translation id="8686817260976772516">Chrome profillari brauzerdan alohida foydalanish uchun kerak. Doʻstlar va oila uchun profillar yarating yoki ish va kulgiga ajrating</translation> <translation id="870251953148363156">&Google Chrome’ni yangilash</translation> <translation id="873133009373065397">Google Chrome asosiy brauzerni aniqlay olmadi yoki tayinlay olmadi</translation> <translation id="8823341990149967727">Chrome versiyasi eskirdi</translation>
diff --git a/chrome/app/resources/google_chrome_strings_vi.xtb b/chrome/app/resources/google_chrome_strings_vi.xtb index 85246f5..d98d956 100644 --- a/chrome/app/resources/google_chrome_strings_vi.xtb +++ b/chrome/app/resources/google_chrome_strings_vi.xtb
@@ -148,6 +148,7 @@ <translation id="4895437082222824641">Mở liên kết trong thẻ mới của Chrome</translation> <translation id="4953650215774548573">Đặt Google Chrome làm trình duyệt mặc định của bạn</translation> <translation id="495931528404527476">Trong Chrome</translation> +<translation id="4970761609246024540">Chào mừng bạn đến với hồ sơ trên Chrome</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">Khởi động lại Chrome OS</translation> <translation id="5132929315877954718">Khám phá các ứng dụng, trò chơi, tiện ích và chủ đề tuyệt vời cho Google Chrome.</translation> @@ -265,6 +266,7 @@ <translation id="8641606876632989680">Chrome sẽ thông báo khi mật khẩu bạn dùng để đăng nhập đã bị lộ</translation> <translation id="8669527147644353129">Trình trợ giúp của Google Chrome</translation> <translation id="8679801911857917785">Tiện ích này cũng điều khiển trang nào được hiển thị khi bạn khởi động Chrome.</translation> +<translation id="8686817260976772516">Với các hồ sơ trên Chrome, bạn có thể tách biệt mọi nội dung của mình khi dùng trình duyệt này. Tạo hồ sơ cho bạn bè và gia đình hoặc phân tách nội dung công việc với nội dung giải trí.</translation> <translation id="870251953148363156">Cập nhật &Google Chrome</translation> <translation id="873133009373065397">Google Chrome không thể xác định hoặc đặt trình duyệt mặc định</translation> <translation id="8823341990149967727">Chrome đã lỗi thời</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-HK.xtb b/chrome/app/resources/google_chrome_strings_zh-HK.xtb index 364dbfc..2662088 100644 --- a/chrome/app/resources/google_chrome_strings_zh-HK.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">在 Chrome 新分頁中開啟連結(&T)</translation> <translation id="4953650215774548573">將 Google Chrome 設為預設瀏覽器</translation> <translation id="495931528404527476">在 Chrome 中</translation> +<translation id="4970761609246024540">歡迎使用 Chrome 設定檔</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">重新啟動 Chrome 作業系統</translation> <translation id="5132929315877954718">為您的 Google Chrome 探索各種實用有趣的應用程式、遊戲、擴充功能和主題。</translation> @@ -268,6 +269,7 @@ <translation id="8641606876632989680">如果您使用被盜用的密碼登入帳戶,Chrome 會通知您</translation> <translation id="8669527147644353129">Google Chrome 輔助工具</translation> <translation id="8679801911857917785">這個擴充功能也會管制 Chrome 啟動時所顯示的網頁。</translation> +<translation id="8686817260976772516">透過 Chrome 設定檔,您可將所有 Chrome 內容分門別類,例如建立親朋好友專屬的設定檔,或劃分工作和娛樂內容。</translation> <translation id="870251953148363156">更新 Google Chrome(&G)</translation> <translation id="873133009373065397">Google Chrome 無法偵測或設定預設瀏覽器</translation> <translation id="8823341990149967727">Chrome 版本過舊</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-TW.xtb b/chrome/app/resources/google_chrome_strings_zh-TW.xtb index 398e897..36a5ce7b5b 100644 --- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -146,6 +146,7 @@ <translation id="4895437082222824641">在新的 Chrome 分頁中開啟連結(&T)</translation> <translation id="4953650215774548573">將 Google Chrome 設為預設瀏覽器</translation> <translation id="495931528404527476">在 Chrome 中</translation> +<translation id="4970761609246024540">歡迎使用 Chrome 設定檔</translation> <translation id="4990567037958725628">Google Chrome Canary</translation> <translation id="5062123544085870375">重新啟動 Chrome 作業系統</translation> <translation id="5132929315877954718">幫你的 Google Chrome 物色各種實用有趣的應用程式、遊戲、擴充功能和主題。</translation> @@ -263,6 +264,7 @@ <translation id="8641606876632989680">如果你使用遭外洩的密碼登入帳戶,Chrome 會通知你</translation> <translation id="8669527147644353129">Google Chrome 小幫手</translation> <translation id="8679801911857917785">這個擴充功能也會控管 Chrome 啟動時所顯示的網頁。</translation> +<translation id="8686817260976772516">你可以運用 Chrome 設定檔區隔各種 Chrome 資料,例如建立親朋好友的專屬設定檔,或是依工作和娛樂需要建立不同設定檔。</translation> <translation id="870251953148363156">更新 Google Chrome(&G)</translation> <translation id="873133009373065397">Google Chrome 無法偵測或設定預設瀏覽器</translation> <translation id="8823341990149967727">Chrome 版本過舊</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zu.xtb b/chrome/app/resources/google_chrome_strings_zu.xtb index cea5a8a..fca52ca 100644 --- a/chrome/app/resources/google_chrome_strings_zu.xtb +++ b/chrome/app/resources/google_chrome_strings_zu.xtb
@@ -150,6 +150,7 @@ <translation id="4895437082222824641">Vula isixhumanisi ku&thebhu entsha ye-Chrome</translation> <translation id="4953650215774548573">Setha i-Google Chrome njengesiphequluli sakho sokuzenzakalelayo</translation> <translation id="495931528404527476">Ku-Chrome</translation> +<translation id="4970761609246024540">Siyakwamukela kumaphrofayela we-Chrome</translation> <translation id="4990567037958725628">I-Canary ye-Google Chrome</translation> <translation id="5062123544085870375">Qalisa kabusha i-Chrome OS</translation> <translation id="5132929315877954718">Thola izinhlelo zokusebenza ezinhle, amageyimu, izandiso namatimu e-Google Chrome.</translation> @@ -269,6 +270,7 @@ <translation id="8641606876632989680">I-Chrome izokwazisa uma ungena ngemvume ngephasiwedi eyonakalisiwe</translation> <translation id="8669527147644353129">Isisizi se-Google Chrome</translation> <translation id="8679801911857917785">Iphinda ilawule ukuthi yiliphi ikhasi eliboniswayo uma uqala i-Chrome.</translation> +<translation id="8686817260976772516">Ngamaphrofayela we-Chrome ungahlukanisa zonke izinto zakho ze-Chrome. Dala amaphrofayela wabangane nomndeni, noma uhlukanise phakathi komsebenzi nobumnandi.</translation> <translation id="870251953148363156">Buyekeza i-&Google Chrome</translation> <translation id="873133009373065397">I-Google Chrome ayikwazi ukunquma noma isethe isiphequluli esizenzakalelayo</translation> <translation id="8823341990149967727">I-Chrome ingaphandle kwedethi</translation>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index a81a7d8..d5f563b53 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -3295,6 +3295,9 @@ <message name="IDS_SETTINGS_SECURITY_KEYS_PIN_INCORRECT_RETRIES_PL" desc="A message shown to the user when they enter an incorrect PIN for a security key. PINs, in this context, are short, often numeric codes that are often used with, for example, ATM cards. Security keys are external devices used to authenticate people."> Incorrect PIN. You have <ph name="RETRIES">$1<ex>8</ex></ph> attempts remaining. </message> + <message name="IDS_SETTINGS_SECURITY_KEYS_SAME_PIN_AS_CURRENT" desc="Error message. Displayed when the user attempts to set a new PIN for their security key, and the new PIN is the same as the currently set PIN. PINs, in this context, are short, often numeric codes that are often used with, for example, ATM cards. Security keys are external devices used to authenticate people."> + Create a new PIN that's different from your current PIN + </message> <message name="IDS_SETTINGS_SECURITY_KEYS_NEW_PIN" desc="A message shown when a user is trying to set a PIN on a security key. PINs, in this context, are short, often numeric codes that are often used with, for example, ATM cards. Security keys are external devices used to authenticate people."> {MIN_PIN_LENGTH, plural, =1 {Enter your new PIN. A PIN must be at least one character long and can contain letters, numbers, and other characters.}
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_SECURITY_KEYS_SAME_PIN_AS_CURRENT.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SECURITY_KEYS_SAME_PIN_AS_CURRENT.png.sha1 new file mode 100644 index 0000000..4eea6988 --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SECURITY_KEYS_SAME_PIN_AS_CURRENT.png.sha1
@@ -0,0 +1 @@ +a775ab5fe5a6302c4f83dc1b4863d21ff7b20ff0 \ No newline at end of file
diff --git a/chrome/app/sharesheet_strings_grdp/DIR_METADATA b/chrome/app/sharesheet_strings_grdp/DIR_METADATA index 03315ae5..00289ad 100644 --- a/chrome/app/sharesheet_strings_grdp/DIR_METADATA +++ b/chrome/app/sharesheet_strings_grdp/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Apps>Foundation" +monorail: { + component: "Platform>Apps>Foundation" }
diff --git a/chrome/app/vector_icons/webauthn/DIR_METADATA b/chrome/app/vector_icons/webauthn/DIR_METADATA index 5f27205..945303c 100644 --- a/chrome/app/vector_icons/webauthn/DIR_METADATA +++ b/chrome/app/vector_icons/webauthn/DIR_METADATA
@@ -1 +1 @@ -team_email: "identity-dev@chromium.org" +team_email: "identity-dev@chromium.org"
diff --git a/chrome/app_shim/DIR_METADATA b/chrome/app_shim/DIR_METADATA index 32b215c..c8b762a 100644 --- a/chrome/app_shim/DIR_METADATA +++ b/chrome/app_shim/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>WebAppInstalls" +monorail: { + component: "UI>Browser>WebAppInstalls" } -team_email: "pwa-dev@chromium.org" +team_email: "pwa-dev@chromium.org"
diff --git a/chrome/app_shim/OWNERS b/chrome/app_shim/OWNERS index 0269cd30..9138d28 100644 --- a/chrome/app_shim/OWNERS +++ b/chrome/app_shim/OWNERS
@@ -1,3 +1,6 @@ ccameron@chromium.org +cmp@chromium.org +dmurph@chromium.org dominickn@chromium.org +msw@chromium.org tapted@chromium.org
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 68079aa3..c088f959 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -2468,7 +2468,7 @@ "tflite_experiment/tflite_experiment_switches.h", ] - deps += [ "//chrome/services/machine_learning" ] + public_deps += [ "//chrome/services/machine_learning" ] } # Platforms that have a network diagnostics dialog. All others fall through @@ -3495,10 +3495,8 @@ "component_updater/intervention_policy_database_component_installer.h", "component_updater/soda_component_installer.cc", "component_updater/soda_component_installer.h", - "component_updater/soda_en_us_component_installer.cc", - "component_updater/soda_en_us_component_installer.h", - "component_updater/soda_ja_jp_component_installer.cc", - "component_updater/soda_ja_jp_component_installer.h", + "component_updater/soda_language_pack_component_installer.cc", + "component_updater/soda_language_pack_component_installer.h", "content_settings/generated_cookie_prefs.cc", "content_settings/generated_cookie_prefs.h", "content_settings/generated_notification_pref.cc", @@ -6160,6 +6158,8 @@ "sessions/session_service.h", "sessions/session_service_factory.cc", "sessions/session_service_factory.h", + "sessions/session_service_log.cc", + "sessions/session_service_log.h", "sessions/session_service_utils.cc", "sessions/session_service_utils.h", "sessions/tab_loader.cc",
diff --git a/chrome/browser/DIR_METADATA b/chrome/browser/DIR_METADATA index 717882b..5d4a5f02 100644 --- a/chrome/browser/DIR_METADATA +++ b/chrome/browser/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser" +monorail: { + component: "UI>Browser" } -team_email: "chromium-reviews@chromium.org" +team_email: "chromium-reviews@chromium.org"
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index dbc6d0c..eb2810c9 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -958,11 +958,9 @@ {"server and client scores", kOmniboxDocumentProviderServerAndClientScoring, base::size(kOmniboxDocumentProviderServerAndClientScoring), nullptr}}; -// The variations include 13 of the 16 possible permutations of "Title UI", -// "2-Line UI", "Title AC", and "Non-Prefix AC". The remaining 3 permutations -// would effectively be no-ops. -// - Title UI: Displays suggestion titles in the omnibox. -// E.g. en.wikipe | [dia.org/wiki/Space_Shuttle] (Space Shuttle - Wikipedia) +// The variations include 5 of the 8 possible permutations of "2-Line UI", +// "Title AC", and "Non-Prefix AC". The remaining 3 permutations would +// effectively be no-ops. // - 2-Line UI: Stretches the omnibox vertically to fit 2 lines and displays // titles on a 2nd line // E.g. en.wikipe | [dia.org/wiki/Space_Shuttle] @@ -975,22 +973,6 @@ // Wikipedia) const FeatureEntry::FeatureVariation kOmniboxRichAutocompletionVariations[] = { { - "Title UI", - (FeatureEntry::FeatureParam[]){ - {"RichAutocompletionShowTitles", "true"}}, - 1, - nullptr, - }, - // Skipping "2-Line UI" as that would be a no-op - { - "Title UI & 2-Line UI", - (FeatureEntry::FeatureParam[]){ - {"RichAutocompletionShowTitles", "true"}, - {"RichAutocompletionTwoLineOmnibox", "true"}}, - 2, - nullptr, - }, - { "Title AC", (FeatureEntry::FeatureParam[]){ {"RichAutocompletionAutocompleteTitles", "true"}}, @@ -998,14 +980,6 @@ nullptr, }, { - "Title UI & Title AC", - (FeatureEntry::FeatureParam[]){ - {"RichAutocompletionShowTitles", "true"}, - {"RichAutocompletionAutocompleteTitles", "true"}}, - 2, - nullptr, - }, - { "2-Line UI & Title AC", (FeatureEntry::FeatureParam[]){ {"RichAutocompletionTwoLineOmnibox", "true"}, @@ -1014,40 +988,14 @@ nullptr, }, { - "Title UI , 2-Line UI, & Title AC", - (FeatureEntry::FeatureParam[]){ - {"RichAutocompletionShowTitles", "true"}, - {"RichAutocompletionAutocompleteTitles", "true"}, - {"RichAutocompletionTwoLineOmnibox", "true"}}, - 3, - nullptr, - }, - { "Non-Prefix AC", (FeatureEntry::FeatureParam[]){ {"RichAutocompletionAutocompleteNonPrefixAll", "true"}}, 1, nullptr, }, - { - "Title UI & Non-Prefix AC", - (FeatureEntry::FeatureParam[]){ - {"RichAutocompletionShowTitles", "true"}, - {"RichAutocompletionAutocompleteNonPrefixAll", "true"}}, - 2, - nullptr, - }, // Skipping "2-Line UI & Non-Prefix AC" as that would be a no-op { - "Title UI, 2-Line UI, & Non-Prefix AC", - (FeatureEntry::FeatureParam[]){ - {"RichAutocompletionShowTitles", "true"}, - {"RichAutocompletionTwoLineOmnibox", "true"}, - {"RichAutocompletionAutocompleteNonPrefixAll", "true"}}, - 3, - nullptr, - }, - { "Title AC & Non-Prefix AC", (FeatureEntry::FeatureParam[]){ {"RichAutocompletionAutocompleteTitles", "true"}, @@ -1056,15 +1004,6 @@ nullptr, }, { - "Title UI, Title AC, & Non-Prefix AC", - (FeatureEntry::FeatureParam[]){ - {"RichAutocompletionShowTitles", "true"}, - {"RichAutocompletionAutocompleteTitles", "true"}, - {"RichAutocompletionAutocompleteNonPrefixAll", "true"}}, - 3, - nullptr, - }, - { "2-Line UI, Title AC, & Non-Prefix AC", (FeatureEntry::FeatureParam[]){ {"RichAutocompletionTwoLineOmnibox", "true"}, @@ -1072,16 +1011,6 @@ {"RichAutocompletionAutocompleteNonPrefixAll", "true"}}, 3, nullptr, - }, - { - "Title UI, 2-Line UI, Title AC, & Non-Prefix AC", - (FeatureEntry::FeatureParam[]){ - {"RichAutocompletionAutocompleteNonPrefixAll", "true"}, - {"RichAutocompletionShowTitles", "true"}, - {"RichAutocompletionAutocompleteTitles", "true"}, - {"RichAutocompletionTwoLineOmnibox", "true"}}, - 4, - nullptr, }}; const FeatureEntry::FeatureVariation @@ -2880,6 +2809,10 @@ {"cellular-use-attach-apn", flag_descriptions::kCellularUseAttachApnName, flag_descriptions::kCellularUseAttachApnDescription, kOsCrOS, FEATURE_VALUE_TYPE(chromeos::features::kCellularUseAttachApn)}, + {"cellular-use-external-euicc", + flag_descriptions::kCellularUseExternalEuiccName, + flag_descriptions::kCellularUseExternalEuiccDescription, kOsCrOS, + FEATURE_VALUE_TYPE(chromeos::features::kCellularUseExternalEuicc)}, {"cryptauth-v2-device-activity-status", flag_descriptions::kCryptAuthV2DeviceActivityStatusName, flag_descriptions::kCryptAuthV2DeviceActivityStatusDescription, kOsCrOS, @@ -3211,6 +3144,10 @@ flag_descriptions::kAssistantIntentPageUrlName, flag_descriptions::kAssistantIntentPageUrlDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kAssistantIntentPageUrl)}, + {"assistant-intent-translate-info", + flag_descriptions::kAssistantIntentTranslateInfoName, + flag_descriptions::kAssistantIntentTranslateInfoDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kAssistantIntentTranslateInfo)}, {"share-button-in-top-toolbar", flag_descriptions::kShareButtonInTopToolbarName, flag_descriptions::kShareButtonInTopToolbarDescription, kOsAndroid, @@ -3697,6 +3634,9 @@ {"interest-feed-v2", flag_descriptions::kInterestFeedV2Name, flag_descriptions::kInterestFeedV2Description, kOsAndroid, FEATURE_VALUE_TYPE(feed::kInterestFeedV2)}, + {"feed-v2-hearts", flag_descriptions::kInterestFeedV2HeartsName, + flag_descriptions::kInterestFeedV2HeartsDescription, kOsAndroid, + FEATURE_VALUE_TYPE(feed::kInterestFeedV2Hearts)}, {"web-feed", flag_descriptions::kWebFeedName, flag_descriptions::kWebFeedDescription, kOsAndroid, FEATURE_VALUE_TYPE(feed::kWebFeed)},
diff --git a/chrome/browser/accessibility/DIR_METADATA b/chrome/browser/accessibility/DIR_METADATA index 665fdf9..6849a4f8 100644 --- a/chrome/browser/accessibility/DIR_METADATA +++ b/chrome/browser/accessibility/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Accessibility" +monorail: { + component: "UI>Accessibility" } -team_email: "chromium-accessibility@chromium.org" +team_email: "chromium-accessibility@chromium.org"
diff --git a/chrome/browser/accessibility/accessibility_extension_api.cc b/chrome/browser/accessibility/accessibility_extension_api.cc index c153abf..8c9d755 100644 --- a/chrome/browser/accessibility/accessibility_extension_api.cc +++ b/chrome/browser/accessibility/accessibility_extension_api.cc
@@ -15,7 +15,6 @@ #include "base/values.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" #include "chrome/browser/extensions/api/tabs/tabs_constants.h" #include "chrome/browser/extensions/chrome_extension_function_details.h" #include "chrome/browser/extensions/extension_service.h" @@ -45,7 +44,8 @@ #include "ash/public/cpp/accessibility_focus_ring_info.h" #include "ash/public/cpp/event_rewriter_controller.h" #include "ash/public/cpp/window_tree_host_lookup.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/ui/webui/settings/chromeos/constants/routes_util.h"
diff --git a/chrome/browser/accessibility/accessibility_extension_api_browsertest.cc b/chrome/browser/accessibility/accessibility_extension_api_browsertest.cc index 3e8e1f26..686f970 100644 --- a/chrome/browser/accessibility/accessibility_extension_api_browsertest.cc +++ b/chrome/browser/accessibility/accessibility_extension_api_browsertest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/chrome_pages.h"
diff --git a/chrome/browser/accessibility/accessibility_labels_service_browsertest.cc b/chrome/browser/accessibility/accessibility_labels_service_browsertest.cc index ab070aa..7a9aa93 100644 --- a/chrome/browser/accessibility/accessibility_labels_service_browsertest.cc +++ b/chrome/browser/accessibility/accessibility_labels_service_browsertest.cc
@@ -16,7 +16,7 @@ #include "content/public/common/content_features.h" #include "content/public/test/browser_test.h" #if BUILDFLAG(IS_CHROMEOS_ASH) -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #else #include "content/public/browser/browser_accessibility_state.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/accessibility/accessibility_state_utils.cc b/chrome/browser/accessibility/accessibility_state_utils.cc index e0e8970..c768e431 100644 --- a/chrome/browser/accessibility/accessibility_state_utils.cc +++ b/chrome/browser/accessibility/accessibility_state_utils.cc
@@ -7,7 +7,7 @@ #include "build/chromeos_buildflags.h" #if BUILDFLAG(IS_CHROMEOS_ASH) -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #else #include <stdint.h> #include "content/public/browser/browser_accessibility_state.h"
diff --git a/chrome/browser/accessibility/soda_installer_impl.cc b/chrome/browser/accessibility/soda_installer_impl.cc index 03b10524..1425d04 100644 --- a/chrome/browser/accessibility/soda_installer_impl.cc +++ b/chrome/browser/accessibility/soda_installer_impl.cc
@@ -10,13 +10,13 @@ #include "base/bind.h" #include "base/check_op.h" +#include "base/containers/flat_set.h" #include "base/feature_list.h" #include "base/no_destructor.h" #include "base/numerics/ranges.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/component_updater/soda_component_installer.h" -#include "chrome/browser/component_updater/soda_en_us_component_installer.h" -#include "chrome/browser/component_updater/soda_ja_jp_component_installer.h" +#include "chrome/browser/component_updater/soda_language_pack_component_installer.h" #include "chrome/common/pref_names.h" #include "components/prefs/pref_service.h" #include "components/update_client/crx_update_item.h" @@ -89,30 +89,26 @@ bool SodaInstallerImpl::IsSodaRegistered() { if (!base::FeatureList::IsEnabled(media::kUseSodaForLiveCaption)) return true; - std::vector<std::string> component_ids = - g_browser_process->component_updater()->GetComponentIDs(); - bool has_soda = false; - bool has_language_pack = false; - for (std::string id : component_ids) { - if (id == component_updater::SodaComponentInstallerPolicy::GetExtensionId()) - has_soda = true; - if (id == component_updater::SodaEnUsComponentInstallerPolicy:: - GetExtensionId() || - id == component_updater::SodaJaJpComponentInstallerPolicy:: - GetExtensionId()) { - has_language_pack = true; - } - } + base::flat_set<std::string> component_ids = component_updater:: + SodaLanguagePackComponentInstallerPolicy::GetExtensionIds(); + const bool has_soda = component_ids.contains( + component_updater::SodaComponentInstallerPolicy::GetExtensionId()); + const bool has_language_pack = + std::any_of(component_ids.begin(), component_ids.end(), + [&component_ids](const std::string& id) { + return component_ids.contains(id); + }); + return has_soda && has_language_pack; } void SodaInstallerImpl::OnEvent(Events event, const std::string& id) { - if (id != component_updater::SodaComponentInstallerPolicy::GetExtensionId() && - id != component_updater::SodaEnUsComponentInstallerPolicy:: - GetExtensionId() && - id != - component_updater::SodaJaJpComponentInstallerPolicy::GetExtensionId()) + if (!component_updater::SodaLanguagePackComponentInstallerPolicy:: + GetExtensionIds() + .contains(id) && + id != component_updater::SodaComponentInstallerPolicy::GetExtensionId()) { return; + } switch (event) { case Events::COMPONENT_UPDATE_FOUND:
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc index 4b1ef074..6f3afd0 100644 --- a/chrome/browser/android/bookmarks/bookmark_bridge.cc +++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
@@ -826,12 +826,12 @@ JNIEnv* env, const JavaParamRef<jobject>& obj, const JavaParamRef<jstring>& j_title, - const JavaParamRef<jstring>& j_url) { + const JavaParamRef<jobject>& j_url) { DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(IsLoaded()); const BookmarkNode* node = reading_list_manager_->Add( - GURL(base::android::ConvertJavaStringToUTF16(env, j_url)), + *url::GURLAndroid::ToNativeGURL(env, j_url), base::android::ConvertJavaStringToUTF8(env, j_title)); return node ? JavaBookmarkIdCreateBookmarkId(env, node->id(), GetBookmarkType(node))
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser/android/bookmarks/bookmark_bridge.h index 4e7b6e4..774337f 100644 --- a/chrome/browser/android/bookmarks/bookmark_bridge.h +++ b/chrome/browser/android/bookmarks/bookmark_bridge.h
@@ -218,7 +218,7 @@ JNIEnv* env, const base::android::JavaParamRef<jobject>& obj, const base::android::JavaParamRef<jstring>& j_title, - const base::android::JavaParamRef<jstring>& j_url); + const base::android::JavaParamRef<jobject>& j_url); base::android::ScopedJavaLocalRef<jobject> GetReadingListItem( JNIEnv* env,
diff --git a/chrome/browser/android/webapps/OWNERS b/chrome/browser/android/webapps/OWNERS index 664bb1d..c89654e 100644 --- a/chrome/browser/android/webapps/OWNERS +++ b/chrome/browser/android/webapps/OWNERS
@@ -1,3 +1,4 @@ dominickn@chromium.org hanxi@chromium.org +hartmanng@chromium.org pkotwicz@chromium.org
diff --git a/chrome/browser/app_mode/DIR_METADATA b/chrome/browser/app_mode/DIR_METADATA index aa6bd3e..a940a13 100644 --- a/chrome/browser/app_mode/DIR_METADATA +++ b/chrome/browser/app_mode/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Shell>Kiosk" +monorail: { + component: "UI>Shell>Kiosk" }
diff --git a/chrome/browser/apps/DIR_METADATA b/chrome/browser/apps/DIR_METADATA index 03315ae5..00289ad 100644 --- a/chrome/browser/apps/DIR_METADATA +++ b/chrome/browser/apps/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Apps>Foundation" +monorail: { + component: "Platform>Apps>Foundation" }
diff --git a/chrome/browser/apps/app_service/OWNERS b/chrome/browser/apps/app_service/OWNERS index 12c4be0..19026f35 100644 --- a/chrome/browser/apps/app_service/OWNERS +++ b/chrome/browser/apps/app_service/OWNERS
@@ -2,4 +2,7 @@ # For Web Applications system: per-file web_app*=loyso@chromium.org +per-file web_app*=cmp@chromium.org +per-file web_app*=dmurph@chromium.org +per-file web_app*=msw@chromium.org per-file plugin_vm*=file://chrome/browser/chromeos/guest_os/OWNERS
diff --git a/chrome/browser/apps/app_service/arc_apps.cc b/chrome/browser/apps/app_service/arc_apps.cc index bfcc5a2e..4309472d 100644 --- a/chrome/browser/apps/app_service/arc_apps.cc +++ b/chrome/browser/apps/app_service/arc_apps.cc
@@ -812,8 +812,8 @@ if (intent->mime_type.has_value() && intent->file_urls.has_value()) { const auto file_urls = intent->file_urls.value(); - file_manager::util::ConvertToContentUrls( - apps::GetFileSystemURL(profile_, file_urls), + arc::ConvertToContentUrlsAndShare( + profile_, apps::GetFileSystemURL(profile_, file_urls), base::BindOnce(&OnContentUrlResolved, profile_->GetPath(), app_id, event_flags, display_id, std::move(intent), std::move(activity)));
diff --git a/chrome/browser/apps/app_shim/OWNERS b/chrome/browser/apps/app_shim/OWNERS index 0269cd30..81901620 100644 --- a/chrome/browser/apps/app_shim/OWNERS +++ b/chrome/browser/apps/app_shim/OWNERS
@@ -1,3 +1 @@ -ccameron@chromium.org -dominickn@chromium.org -tapted@chromium.org +file://chrome/app_shim/OWNERS
diff --git a/chrome/browser/apps/digital_goods/DIR_METADATA b/chrome/browser/apps/digital_goods/DIR_METADATA index 03315ae5..00289ad 100644 --- a/chrome/browser/apps/digital_goods/DIR_METADATA +++ b/chrome/browser/apps/digital_goods/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Apps>Foundation" +monorail: { + component: "Platform>Apps>Foundation" }
diff --git a/chrome/browser/apps/guest_view/DIR_METADATA b/chrome/browser/apps/guest_view/DIR_METADATA index 65db724..df25159e 100644 --- a/chrome/browser/apps/guest_view/DIR_METADATA +++ b/chrome/browser/apps/guest_view/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Apps>BrowserTag" +monorail: { + component: "Platform>Apps>BrowserTag" }
diff --git a/chrome/browser/apps/platform_apps/api/sync_file_system/DIR_METADATA b/chrome/browser/apps/platform_apps/api/sync_file_system/DIR_METADATA index e898987..b2811d9 100644 --- a/chrome/browser/apps/platform_apps/api/sync_file_system/DIR_METADATA +++ b/chrome/browser/apps/platform_apps/api/sync_file_system/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>Storage>FileSystem" +monorail: { + component: "Blink>Storage>FileSystem" } -team_email: "storage-dev@chromium.org" +team_email: "storage-dev@chromium.org"
diff --git a/chrome/browser/ash/DEPS b/chrome/browser/ash/DEPS index dcb3c17..f3adabc 100644 --- a/chrome/browser/ash/DEPS +++ b/chrome/browser/ash/DEPS
@@ -1,4 +1,9 @@ include_rules = [ + # //chrome/browser/ash is conceptually part of "ash". See the "Lacros: + # ChromeOS source code directory migration" design doc at + # https://docs.google.com/document/d/1g-98HpzA8XcoGBWUv1gQNr4rbnD5yfvbtYZyPDDbkaE + "+ash", + "+chrome/browser/image_decoder", # TODO(ananta): Remove this when we move files which display UI in # chrome/browser/chromeos to chrome/browser/ui/views/chromeos @@ -30,20 +35,12 @@ ".*fuzz.*": [ "+third_party/libFuzzer/src/utils", # This contains FuzzedDataProvider. ], - ".*test.*": [ - "!ash", - "+ash/public", - ], "assistant_util_unittest\.cc": [ "+ui/events/devices/device_data_manager.h", ], "child_status_collector_browsertest.cc": [ "+mojo/core/embedder/embedder.h", ], - "chrome_browser_main_chromeos\.cc": [ - "+ash/shell.h", - "+ash/sticky_keys/sticky_keys_controller.h", - ], "device_status_collector_browsertest.cc": [ "+mojo/core/embedder/embedder.h", ],
diff --git a/chrome/browser/ash/accessibility/DEPS b/chrome/browser/ash/accessibility/DEPS new file mode 100644 index 0000000..262ffdcc --- /dev/null +++ b/chrome/browser/ash/accessibility/DEPS
@@ -0,0 +1,6 @@ +specific_include_rules = { + # Testing + "speech_monitor\.(cc|h)": [ + "+content/public/browser/tts_controller.h", + ], +}
diff --git a/chrome/browser/chromeos/accessibility/DIR_METADATA b/chrome/browser/ash/accessibility/DIR_METADATA similarity index 100% rename from chrome/browser/chromeos/accessibility/DIR_METADATA rename to chrome/browser/ash/accessibility/DIR_METADATA
diff --git a/chrome/browser/chromeos/accessibility/OWNERS b/chrome/browser/ash/accessibility/OWNERS similarity index 100% rename from chrome/browser/chromeos/accessibility/OWNERS rename to chrome/browser/ash/accessibility/OWNERS
diff --git a/chrome/browser/chromeos/accessibility/accessibility_common_browsertest.cc b/chrome/browser/ash/accessibility/accessibility_common_browsertest.cc similarity index 97% rename from chrome/browser/chromeos/accessibility/accessibility_common_browsertest.cc rename to chrome/browser/ash/accessibility/accessibility_common_browsertest.cc index db8aa84..bbd52392 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_common_browsertest.cc +++ b/chrome/browser/ash/accessibility/accessibility_common_browsertest.cc
@@ -3,7 +3,7 @@ // found in the LICENSE file. #include "ash/public/cpp/ash_pref_names.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/extensions/component_loader.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/common/extensions/extension_constants.h"
diff --git a/chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.cc b/chrome/browser/ash/accessibility/accessibility_event_rewriter_delegate.cc similarity index 96% rename from chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.cc rename to chrome/browser/ash/accessibility/accessibility_event_rewriter_delegate.cc index 2de0456..5355c723 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.cc +++ b/chrome/browser/ash/accessibility/accessibility_event_rewriter_delegate.cc
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.h" +#include "chrome/browser/ash/accessibility/accessibility_event_rewriter_delegate.h" #include "ash/public/cpp/accessibility_controller_enums.h" #include "ash/public/cpp/app_types.h" #include "ash/public/cpp/event_rewriter_controller.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/event_handler_common.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/event_handler_common.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h" #include "chrome/common/extensions/api/accessibility_private.h"
diff --git a/chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.h b/chrome/browser/ash/accessibility/accessibility_event_rewriter_delegate.h similarity index 89% rename from chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.h rename to chrome/browser/ash/accessibility/accessibility_event_rewriter_delegate.h index 87c3b7e2..55d1943e 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.h +++ b/chrome/browser/ash/accessibility/accessibility_event_rewriter_delegate.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_EVENT_REWRITER_DELEGATE_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_EVENT_REWRITER_DELEGATE_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_EVENT_REWRITER_DELEGATE_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_EVENT_REWRITER_DELEGATE_H_ #include <memory> @@ -59,4 +59,4 @@ bool is_arc_window_active_ = false; }; -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_EVENT_REWRITER_DELEGATE_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_EVENT_REWRITER_DELEGATE_H_
diff --git a/chrome/browser/chromeos/accessibility/accessibility_extension_loader.cc b/chrome/browser/ash/accessibility/accessibility_extension_loader.cc similarity index 97% rename from chrome/browser/chromeos/accessibility/accessibility_extension_loader.cc rename to chrome/browser/ash/accessibility/accessibility_extension_loader.cc index 359f650..206369b 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_extension_loader.cc +++ b/chrome/browser/ash/accessibility/accessibility_extension_loader.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/accessibility_extension_loader.h" +#include "chrome/browser/ash/accessibility/accessibility_extension_loader.h" #include "base/callback.h" #include "chrome/browser/chromeos/profiles/profile_helper.h"
diff --git a/chrome/browser/chromeos/accessibility/accessibility_extension_loader.h b/chrome/browser/ash/accessibility/accessibility_extension_loader.h similarity index 87% rename from chrome/browser/chromeos/accessibility/accessibility_extension_loader.h rename to chrome/browser/ash/accessibility/accessibility_extension_loader.h index 363c46d4..68fa68d 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_extension_loader.h +++ b/chrome/browser/ash/accessibility/accessibility_extension_loader.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_EXTENSION_LOADER_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_EXTENSION_LOADER_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_EXTENSION_LOADER_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_EXTENSION_LOADER_H_ #include "base/callback.h" #include "base/files/file_path.h" @@ -59,4 +59,4 @@ } // namespace chromeos -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_EXTENSION_LOADER_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_EXTENSION_LOADER_H_
diff --git a/chrome/browser/chromeos/accessibility/accessibility_input_method_observer.cc b/chrome/browser/ash/accessibility/accessibility_input_method_observer.cc similarity index 91% rename from chrome/browser/chromeos/accessibility/accessibility_input_method_observer.cc rename to chrome/browser/ash/accessibility/accessibility_input_method_observer.cc index 51d6e88..2b5eed59 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_input_method_observer.cc +++ b/chrome/browser/ash/accessibility/accessibility_input_method_observer.cc
@@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/accessibility_input_method_observer.h" +#include "chrome/browser/ash/accessibility/accessibility_input_method_observer.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "ui/base/ime/input_method.h" #include "ui/base/ime/text_input_client.h" #include "ui/base/ime/text_input_type.h"
diff --git a/chrome/browser/chromeos/accessibility/accessibility_input_method_observer.h b/chrome/browser/ash/accessibility/accessibility_input_method_observer.h similarity index 83% rename from chrome/browser/chromeos/accessibility/accessibility_input_method_observer.h rename to chrome/browser/ash/accessibility/accessibility_input_method_observer.h index 62e69eac..aa81f533 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_input_method_observer.h +++ b/chrome/browser/ash/accessibility/accessibility_input_method_observer.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_INPUT_METHOD_OBSERVER_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_INPUT_METHOD_OBSERVER_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_INPUT_METHOD_OBSERVER_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_INPUT_METHOD_OBSERVER_H_ #include "base/macros.h" #include "ui/base/ime/input_method_observer.h" @@ -41,4 +41,4 @@ DISALLOW_COPY_AND_ASSIGN(AccessibilityInputMethodObserver); }; -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_INPUT_METHOD_OBSERVER_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_INPUT_METHOD_OBSERVER_H_
diff --git a/chrome/browser/chromeos/accessibility/accessibility_live_site_browsertest.cc b/chrome/browser/ash/accessibility/accessibility_live_site_browsertest.cc similarity index 96% rename from chrome/browser/chromeos/accessibility/accessibility_live_site_browsertest.cc rename to chrome/browser/ash/accessibility/accessibility_live_site_browsertest.cc index a9339d5..7223cb8 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_live_site_browsertest.cc +++ b/chrome/browser/ash/accessibility/accessibility_live_site_browsertest.cc
@@ -4,8 +4,8 @@ #include "ash/shell.h" #include "base/strings/pattern.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/speech_monitor.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/speech_monitor.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.cc b/chrome/browser/ash/accessibility/accessibility_manager.cc similarity index 99% rename from chrome/browser/chromeos/accessibility/accessibility_manager.cc rename to chrome/browser/ash/accessibility/accessibility_manager.cc index e5b0391..98843e90 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_manager.cc +++ b/chrome/browser/ash/accessibility/accessibility_manager.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include <stddef.h> #include <stdint.h> @@ -36,12 +36,12 @@ #include "base/strings/stringprintf.h" #include "base/values.h" #include "chrome/browser/accessibility/accessibility_extension_api.h" +#include "chrome/browser/ash/accessibility/accessibility_extension_loader.h" +#include "chrome/browser/ash/accessibility/dictation_chromeos.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/select_to_speak_event_handler_delegate.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/accessibility/accessibility_extension_loader.h" -#include "chrome/browser/chromeos/accessibility/dictation_chromeos.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" -#include "chrome/browser/chromeos/accessibility/select_to_speak_event_handler_delegate.h" #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" #include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.h b/chrome/browser/ash/accessibility/accessibility_manager.h similarity index 98% rename from chrome/browser/chromeos/accessibility/accessibility_manager.h rename to chrome/browser/ash/accessibility/accessibility_manager.h index 5a93c0d4..ed5a088 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_manager.h +++ b/chrome/browser/ash/accessibility/accessibility_manager.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_MANAGER_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_MANAGER_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_MANAGER_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_MANAGER_H_ #include <map> #include <memory> @@ -17,7 +17,7 @@ #include "base/memory/weak_ptr.h" #include "base/scoped_observer.h" #include "base/time/time.h" -#include "chrome/browser/chromeos/accessibility/chromevox_panel.h" +#include "chrome/browser/ash/accessibility/chromevox_panel.h" #include "chrome/browser/extensions/api/braille_display_private/braille_controller.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_observer.h" @@ -511,4 +511,4 @@ } // namespace chromeos -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_MANAGER_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_MANAGER_H_
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager_browsertest.cc b/chrome/browser/ash/accessibility/accessibility_manager_browsertest.cc similarity index 99% rename from chrome/browser/chromeos/accessibility/accessibility_manager_browsertest.cc rename to chrome/browser/ash/accessibility/accessibility_manager_browsertest.cc index f99eecb..e88925a 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_manager_browsertest.cc +++ b/chrome/browser/ash/accessibility/accessibility_manager_browsertest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "ash/public/cpp/ash_pref_names.h" #include "ash/public/cpp/test/accessibility_controller_test_api.h"
diff --git a/chrome/browser/chromeos/accessibility/accessibility_panel.cc b/chrome/browser/ash/accessibility/accessibility_panel.cc similarity index 97% rename from chrome/browser/chromeos/accessibility/accessibility_panel.cc rename to chrome/browser/ash/accessibility/accessibility_panel.cc index daf6bcb1..2028de0d 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_panel.cc +++ b/chrome/browser/ash/accessibility/accessibility_panel.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/accessibility_panel.h" +#include "chrome/browser/ash/accessibility/accessibility_panel.h" #include "ash/public/cpp/shell_window_ids.h" #include "base/macros.h"
diff --git a/chrome/browser/chromeos/accessibility/accessibility_panel.h b/chrome/browser/ash/accessibility/accessibility_panel.h similarity index 89% rename from chrome/browser/chromeos/accessibility/accessibility_panel.h rename to chrome/browser/ash/accessibility/accessibility_panel.h index b4edbf5..f4c3ad18 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_panel.h +++ b/chrome/browser/ash/accessibility/accessibility_panel.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_PANEL_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_PANEL_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_PANEL_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_PANEL_H_ #include <stdint.h> @@ -64,4 +64,4 @@ DISALLOW_COPY_AND_ASSIGN(AccessibilityPanel); }; -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_PANEL_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_ACCESSIBILITY_PANEL_H_
diff --git a/chrome/browser/chromeos/accessibility/chromevox_panel.cc b/chrome/browser/ash/accessibility/chromevox_panel.cc similarity index 95% rename from chrome/browser/chromeos/accessibility/chromevox_panel.cc rename to chrome/browser/ash/accessibility/chromevox_panel.cc index a1b2c339..9487f6d 100644 --- a/chrome/browser/chromeos/accessibility/chromevox_panel.cc +++ b/chrome/browser/ash/accessibility/chromevox_panel.cc
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/chromevox_panel.h" +#include "chrome/browser/ash/accessibility/chromevox_panel.h" #include "ash/public/cpp/accessibility_controller.h" #include "ash/public/cpp/accessibility_controller_enums.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "content/public/browser/web_contents_observer.h" #include "extensions/common/constants.h" #include "ui/views/widget/widget.h"
diff --git a/chrome/browser/chromeos/accessibility/chromevox_panel.h b/chrome/browser/ash/accessibility/chromevox_panel.h similarity index 76% rename from chrome/browser/chromeos/accessibility/chromevox_panel.h rename to chrome/browser/ash/accessibility/chromevox_panel.h index 46824b6..fd8325b 100644 --- a/chrome/browser/chromeos/accessibility/chromevox_panel.h +++ b/chrome/browser/ash/accessibility/chromevox_panel.h
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_CHROMEVOX_PANEL_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_CHROMEVOX_PANEL_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_CHROMEVOX_PANEL_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_CHROMEVOX_PANEL_H_ #include "base/macros.h" -#include "chrome/browser/chromeos/accessibility/accessibility_panel.h" +#include "chrome/browser/ash/accessibility/accessibility_panel.h" // Displays spoken feedback UI controls for the ChromeVox component extension class ChromeVoxPanel : public AccessibilityPanel { @@ -32,4 +32,4 @@ DISALLOW_COPY_AND_ASSIGN(ChromeVoxPanel); }; -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_CHROMEVOX_PANEL_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_CHROMEVOX_PANEL_H_
diff --git a/chrome/browser/chromeos/accessibility/dictation_chromeos.cc b/chrome/browser/ash/accessibility/dictation_chromeos.cc similarity index 97% rename from chrome/browser/chromeos/accessibility/dictation_chromeos.cc rename to chrome/browser/ash/accessibility/dictation_chromeos.cc index b8703d6..4cadb6f 100644 --- a/chrome/browser/chromeos/accessibility/dictation_chromeos.cc +++ b/chrome/browser/ash/accessibility/dictation_chromeos.cc
@@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/dictation_chromeos.h" +#include "chrome/browser/ash/accessibility/dictation_chromeos.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/speech/speech_recognizer.h" #include "chrome/common/pref_names.h"
diff --git a/chrome/browser/chromeos/accessibility/dictation_chromeos.h b/chrome/browser/ash/accessibility/dictation_chromeos.h similarity index 90% rename from chrome/browser/chromeos/accessibility/dictation_chromeos.h rename to chrome/browser/ash/accessibility/dictation_chromeos.h index 123fc01..39860a7 100644 --- a/chrome/browser/chromeos/accessibility/dictation_chromeos.h +++ b/chrome/browser/ash/accessibility/dictation_chromeos.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_DICTATION_CHROMEOS_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_DICTATION_CHROMEOS_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_DICTATION_CHROMEOS_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_DICTATION_CHROMEOS_H_ #include <memory> #include <string> @@ -67,4 +67,4 @@ } // namespace chromeos -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_DICTATION_CHROMEOS_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_DICTATION_CHROMEOS_H_
diff --git a/chrome/browser/chromeos/accessibility/dictation_chromeos_browsertest.cc b/chrome/browser/ash/accessibility/dictation_chromeos_browsertest.cc similarity index 97% rename from chrome/browser/chromeos/accessibility/dictation_chromeos_browsertest.cc rename to chrome/browser/ash/accessibility/dictation_chromeos_browsertest.cc index bf26f65..64eab32 100644 --- a/chrome/browser/chromeos/accessibility/dictation_chromeos_browsertest.cc +++ b/chrome/browser/ash/accessibility/dictation_chromeos_browsertest.cc
@@ -3,8 +3,8 @@ // found in the LICENSE file. #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/dictation_chromeos.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/dictation_chromeos.h" #include "chrome/test/base/in_process_browser_test.h" #include "content/public/test/browser_test.h" #include "ui/base/ime/chromeos/ime_bridge.h"
diff --git a/chrome/browser/chromeos/accessibility/event_handler_common.cc b/chrome/browser/ash/accessibility/event_handler_common.cc similarity index 94% rename from chrome/browser/chromeos/accessibility/event_handler_common.cc rename to chrome/browser/ash/accessibility/event_handler_common.cc index 704486a..190723a 100644 --- a/chrome/browser/chromeos/accessibility/event_handler_common.cc +++ b/chrome/browser/ash/accessibility/event_handler_common.cc
@@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/event_handler_common.h" +#include "chrome/browser/ash/accessibility/event_handler_common.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/profiles/profile_manager.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/render_widget_host.h"
diff --git a/chrome/browser/chromeos/accessibility/event_handler_common.h b/chrome/browser/ash/accessibility/event_handler_common.h similarity index 80% rename from chrome/browser/chromeos/accessibility/event_handler_common.h rename to chrome/browser/ash/accessibility/event_handler_common.h index 184c243..de1071a 100644 --- a/chrome/browser/chromeos/accessibility/event_handler_common.h +++ b/chrome/browser/ash/accessibility/event_handler_common.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_EVENT_HANDLER_COMMON_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_EVENT_HANDLER_COMMON_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_EVENT_HANDLER_COMMON_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_EVENT_HANDLER_COMMON_H_ #include "extensions/browser/extension_host.h" #include "ui/events/event_handler.h" @@ -26,4 +26,4 @@ } // namespace chromeos -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_EVENT_HANDLER_COMMON_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_EVENT_HANDLER_COMMON_H_
diff --git a/chrome/browser/chromeos/accessibility/magnification_controller_browsertest.cc b/chrome/browser/ash/accessibility/magnification_controller_browsertest.cc similarity index 98% rename from chrome/browser/chromeos/accessibility/magnification_controller_browsertest.cc rename to chrome/browser/ash/accessibility/magnification_controller_browsertest.cc index bbc5030e..401a18d 100644 --- a/chrome/browser/chromeos/accessibility/magnification_controller_browsertest.cc +++ b/chrome/browser/ash/accessibility/magnification_controller_browsertest.cc
@@ -12,8 +12,8 @@ #include "base/timer/timer.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/common/chrome_switches.h"
diff --git a/chrome/browser/chromeos/accessibility/magnification_manager.cc b/chrome/browser/ash/accessibility/magnification_manager.cc similarity index 98% rename from chrome/browser/chromeos/accessibility/magnification_manager.cc rename to chrome/browser/ash/accessibility/magnification_manager.cc index f1d762b..40600a8 100644 --- a/chrome/browser/chromeos/accessibility/magnification_manager.cc +++ b/chrome/browser/ash/accessibility/magnification_manager.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include <limits> #include <memory> @@ -12,8 +12,8 @@ #include "ash/public/cpp/docked_magnifier_controller.h" #include "ash/shell.h" #include "base/bind.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/profiles/profile_manager.h" #include "components/prefs/pref_change_registrar.h"
diff --git a/chrome/browser/chromeos/accessibility/magnification_manager.h b/chrome/browser/ash/accessibility/magnification_manager.h similarity index 95% rename from chrome/browser/chromeos/accessibility/magnification_manager.h rename to chrome/browser/ash/accessibility/magnification_manager.h index 07ccf931..8b934b1 100644 --- a/chrome/browser/chromeos/accessibility/magnification_manager.h +++ b/chrome/browser/ash/accessibility/magnification_manager.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_MAGNIFICATION_MANAGER_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_MAGNIFICATION_MANAGER_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_MAGNIFICATION_MANAGER_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_MAGNIFICATION_MANAGER_H_ #include "base/macros.h" #include "base/memory/weak_ptr.h" @@ -131,4 +131,4 @@ } // namespace chromeos -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_MAGNIFICATION_MANAGER_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_MAGNIFICATION_MANAGER_H_
diff --git a/chrome/browser/chromeos/accessibility/magnification_manager_browsertest.cc b/chrome/browser/ash/accessibility/magnification_manager_browsertest.cc similarity index 98% rename from chrome/browser/chromeos/accessibility/magnification_manager_browsertest.cc rename to chrome/browser/ash/accessibility/magnification_manager_browsertest.cc index f526b3a0..c475d35 100644 --- a/chrome/browser/chromeos/accessibility/magnification_manager_browsertest.cc +++ b/chrome/browser/ash/accessibility/magnification_manager_browsertest.cc
@@ -10,10 +10,10 @@ #include "base/bind.h" #include "base/command_line.h" #include "base/macros.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/login/helper.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/chromeos/accessibility/magnifier_type.h b/chrome/browser/ash/accessibility/magnifier_type.h similarity index 70% rename from chrome/browser/chromeos/accessibility/magnifier_type.h rename to chrome/browser/ash/accessibility/magnifier_type.h index 3196bc56..7774d2d 100644 --- a/chrome/browser/chromeos/accessibility/magnifier_type.h +++ b/chrome/browser/ash/accessibility/magnifier_type.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_MAGNIFIER_TYPE_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_MAGNIFIER_TYPE_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_MAGNIFIER_TYPE_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_MAGNIFIER_TYPE_H_ namespace chromeos { @@ -18,4 +18,4 @@ } // namespace chromeos -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_MAGNIFIER_TYPE_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_MAGNIFIER_TYPE_H_
diff --git a/chrome/browser/chromeos/accessibility/select_to_speak_browsertest.cc b/chrome/browser/ash/accessibility/select_to_speak_browsertest.cc similarity index 93% rename from chrome/browser/chromeos/accessibility/select_to_speak_browsertest.cc rename to chrome/browser/ash/accessibility/select_to_speak_browsertest.cc index 092d6e0..6c5f927 100644 --- a/chrome/browser/chromeos/accessibility/select_to_speak_browsertest.cc +++ b/chrome/browser/ash/accessibility/select_to_speak_browsertest.cc
@@ -18,8 +18,8 @@ #include "base/command_line.h" #include "base/memory/weak_ptr.h" #include "build/branding_buildflags.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/speech_monitor.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/speech_monitor.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" @@ -69,12 +69,34 @@ AccessibilityManager::Get()->SetSelectToSpeakEnabled(true); extension_load_waiter.Wait(); + extensions::ExtensionHost* host = + extensions::ProcessManager::Get(browser()->profile()) + ->GetBackgroundHostForExtension( + extension_misc::kSelectToSpeakExtensionId); + console_observer_ = std::make_unique<content::WebContentsConsoleObserver>( + host->host_contents()); + // STS should not log warnings or errors: these should cause test failures. + auto filter = + [](const content::WebContentsConsoleObserver::Message& message) { + return message.log_level == + blink::mojom::ConsoleMessageLevel::kWarning || + message.log_level == blink::mojom::ConsoleMessageLevel::kError; + }; + console_observer_->SetFilter(base::BindRepeating(filter)); + aura::Window* root_window = ash::Shell::Get()->GetPrimaryRootWindow(); generator_.reset(new ui::test::EventGenerator(root_window)); ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); } + void TearDownOnMainThread() override { + // Check STS has not generated any errors. + EXPECT_EQ(0u, console_observer_->messages().size()) + << "Found console.log or console.warn with message: " + << console_observer_->GetMessageAt(0); + } + test::SpeechMonitor sm_; std::unique_ptr<ui::test::EventGenerator> generator_; std::unique_ptr<ash::SystemTrayTestApi> tray_test_api_; @@ -149,6 +171,7 @@ private: scoped_refptr<content::MessageLoopRunner> loop_runner_; scoped_refptr<content::MessageLoopRunner> tray_loop_runner_; + std::unique_ptr<content::WebContentsConsoleObserver> console_observer_; base::WeakPtrFactory<SelectToSpeakTest> weak_ptr_factory_{this}; DISALLOW_COPY_AND_ASSIGN(SelectToSpeakTest); };
diff --git a/chrome/browser/chromeos/accessibility/select_to_speak_event_handler_delegate.cc b/chrome/browser/ash/accessibility/select_to_speak_event_handler_delegate.cc similarity index 93% rename from chrome/browser/chromeos/accessibility/select_to_speak_event_handler_delegate.cc rename to chrome/browser/ash/accessibility/select_to_speak_event_handler_delegate.cc index b57382c..3ec2a01f 100644 --- a/chrome/browser/chromeos/accessibility/select_to_speak_event_handler_delegate.cc +++ b/chrome/browser/ash/accessibility/select_to_speak_event_handler_delegate.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/select_to_speak_event_handler_delegate.h" +#include "chrome/browser/ash/accessibility/select_to_speak_event_handler_delegate.h" #include <memory> #include "ash/public/cpp/accessibility_controller.h" -#include "chrome/browser/chromeos/accessibility/event_handler_common.h" +#include "chrome/browser/ash/accessibility/event_handler_common.h" #include "chrome/common/extensions/extension_constants.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_view_host.h"
diff --git a/chrome/browser/chromeos/accessibility/select_to_speak_event_handler_delegate.h b/chrome/browser/ash/accessibility/select_to_speak_event_handler_delegate.h similarity index 77% rename from chrome/browser/chromeos/accessibility/select_to_speak_event_handler_delegate.h rename to chrome/browser/ash/accessibility/select_to_speak_event_handler_delegate.h index 37b375de..2c4402b 100644 --- a/chrome/browser/chromeos/accessibility/select_to_speak_event_handler_delegate.h +++ b/chrome/browser/ash/accessibility/select_to_speak_event_handler_delegate.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SELECT_TO_SPEAK_EVENT_HANDLER_DELEGATE_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SELECT_TO_SPEAK_EVENT_HANDLER_DELEGATE_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_SELECT_TO_SPEAK_EVENT_HANDLER_DELEGATE_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_SELECT_TO_SPEAK_EVENT_HANDLER_DELEGATE_H_ #include "ash/public/cpp/select_to_speak_event_handler_delegate.h" #include "base/macros.h" @@ -28,4 +28,4 @@ } // namespace chromeos -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SELECT_TO_SPEAK_EVENT_HANDLER_DELEGATE_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_SELECT_TO_SPEAK_EVENT_HANDLER_DELEGATE_H_
diff --git a/chrome/browser/chromeos/accessibility/soda_installer_impl_chromeos.cc b/chrome/browser/ash/accessibility/soda_installer_impl_chromeos.cc similarity index 95% rename from chrome/browser/chromeos/accessibility/soda_installer_impl_chromeos.cc rename to chrome/browser/ash/accessibility/soda_installer_impl_chromeos.cc index c26540f1..e2d500c 100644 --- a/chrome/browser/chromeos/accessibility/soda_installer_impl_chromeos.cc +++ b/chrome/browser/ash/accessibility/soda_installer_impl_chromeos.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/soda_installer_impl_chromeos.h" +#include "chrome/browser/ash/accessibility/soda_installer_impl_chromeos.h" #include "base/bind.h" #include "base/feature_list.h"
diff --git a/chrome/browser/chromeos/accessibility/soda_installer_impl_chromeos.h b/chrome/browser/ash/accessibility/soda_installer_impl_chromeos.h similarity index 83% rename from chrome/browser/chromeos/accessibility/soda_installer_impl_chromeos.h rename to chrome/browser/ash/accessibility/soda_installer_impl_chromeos.h index 7c5f418b..81103c2 100644 --- a/chrome/browser/chromeos/accessibility/soda_installer_impl_chromeos.h +++ b/chrome/browser/ash/accessibility/soda_installer_impl_chromeos.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SODA_INSTALLER_IMPL_CHROMEOS_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SODA_INSTALLER_IMPL_CHROMEOS_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_SODA_INSTALLER_IMPL_CHROMEOS_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_SODA_INSTALLER_IMPL_CHROMEOS_H_ #include "chrome/browser/accessibility/soda_installer.h" #include "chromeos/dbus/dlcservice/dlcservice_client.h" @@ -38,4 +38,4 @@ } // namespace speech -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SODA_INSTALLER_IMPL_CHROMEOS_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_SODA_INSTALLER_IMPL_CHROMEOS_H_
diff --git a/chrome/browser/chromeos/accessibility/speech_monitor.cc b/chrome/browser/ash/accessibility/speech_monitor.cc similarity index 98% rename from chrome/browser/chromeos/accessibility/speech_monitor.cc rename to chrome/browser/ash/accessibility/speech_monitor.cc index 076e471..64bacd17 100644 --- a/chrome/browser/chromeos/accessibility/speech_monitor.cc +++ b/chrome/browser/ash/accessibility/speech_monitor.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/speech_monitor.h" +#include "chrome/browser/ash/accessibility/speech_monitor.h" #include "base/strings/pattern.h" #include "chrome/common/extensions/extension_constants.h"
diff --git a/chrome/browser/chromeos/accessibility/speech_monitor.h b/chrome/browser/ash/accessibility/speech_monitor.h similarity index 95% rename from chrome/browser/chromeos/accessibility/speech_monitor.h rename to chrome/browser/ash/accessibility/speech_monitor.h index b5d2fea6..63d2823 100644 --- a/chrome/browser/chromeos/accessibility/speech_monitor.h +++ b/chrome/browser/ash/accessibility/speech_monitor.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SPEECH_MONITOR_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SPEECH_MONITOR_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_SPEECH_MONITOR_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_SPEECH_MONITOR_H_ #include <chrono> @@ -133,4 +133,4 @@ } // namespace test } // namespace chromeos -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SPEECH_MONITOR_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_SPEECH_MONITOR_H_
diff --git a/chrome/browser/chromeos/accessibility/spoken_feedback_app_list_browsertest.cc b/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc similarity index 99% rename from chrome/browser/chromeos/accessibility/spoken_feedback_app_list_browsertest.cc rename to chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc index 34d025a..f3abee97 100644 --- a/chrome/browser/chromeos/accessibility/spoken_feedback_app_list_browsertest.cc +++ b/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc
@@ -13,7 +13,7 @@ #include "ash/shell.h" #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_feature_list.h" -#include "chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.h" +#include "chrome/browser/ash/accessibility/spoken_feedback_browsertest.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/browser.h"
diff --git a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc similarity index 99% rename from chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc rename to chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc index 9f896b2..3f9af88a 100644 --- a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc +++ b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.h" +#include "chrome/browser/ash/accessibility/spoken_feedback_browsertest.h" #include <queue> @@ -24,7 +24,7 @@ #include "chrome/app/chrome_command_ids.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.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"
diff --git a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.h b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.h similarity index 86% rename from chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.h rename to chrome/browser/ash/accessibility/spoken_feedback_browsertest.h index e6b4775..9b8b123 100644 --- a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.h +++ b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.h
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SPOKEN_FEEDBACK_BROWSERTEST_H_ -#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SPOKEN_FEEDBACK_BROWSERTEST_H_ +#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_SPOKEN_FEEDBACK_BROWSERTEST_H_ +#define CHROME_BROWSER_ASH_ACCESSIBILITY_SPOKEN_FEEDBACK_BROWSERTEST_H_ #include "ash/public/cpp/accelerators.h" -#include "chrome/browser/chromeos/accessibility/speech_monitor.h" +#include "chrome/browser/ash/accessibility/speech_monitor.h" #include "chrome/browser/extensions/api/braille_display_private/stub_braille_controller.h" #include "chrome/test/base/in_process_browser_test.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" @@ -61,4 +61,4 @@ } // namespace chromeos -#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SPOKEN_FEEDBACK_BROWSERTEST_H_ +#endif // CHROME_BROWSER_ASH_ACCESSIBILITY_SPOKEN_FEEDBACK_BROWSERTEST_H_
diff --git a/chrome/browser/chromeos/accessibility/sticky_keys_browsertest.cc b/chrome/browser/ash/accessibility/sticky_keys_browsertest.cc similarity index 98% rename from chrome/browser/chromeos/accessibility/sticky_keys_browsertest.cc rename to chrome/browser/ash/accessibility/sticky_keys_browsertest.cc index d20517a..ae073a0 100644 --- a/chrome/browser/chromeos/accessibility/sticky_keys_browsertest.cc +++ b/chrome/browser/ash/accessibility/sticky_keys_browsertest.cc
@@ -12,7 +12,7 @@ #include "ash/system/unified/unified_system_tray.h" #include "base/macros.h" #include "base/run_loop.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h"
diff --git a/chrome/browser/chromeos/accessibility/switch_access_browsertest.cc b/chrome/browser/ash/accessibility/switch_access_browsertest.cc similarity index 98% rename from chrome/browser/chromeos/accessibility/switch_access_browsertest.cc rename to chrome/browser/ash/accessibility/switch_access_browsertest.cc index f481a44..cbdb1c0 100644 --- a/chrome/browser/chromeos/accessibility/switch_access_browsertest.cc +++ b/chrome/browser/ash/accessibility/switch_access_browsertest.cc
@@ -7,7 +7,7 @@ #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/path_service.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ui/browser.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/test/base/extension_load_waiter_one_shot.h"
diff --git a/chrome/browser/chromeos/accessibility/touch_exploration_controller_browsertest.cc b/chrome/browser/ash/accessibility/touch_exploration_controller_browsertest.cc similarity index 99% rename from chrome/browser/chromeos/accessibility/touch_exploration_controller_browsertest.cc rename to chrome/browser/ash/accessibility/touch_exploration_controller_browsertest.cc index 5e31644..b3516699 100644 --- a/chrome/browser/chromeos/accessibility/touch_exploration_controller_browsertest.cc +++ b/chrome/browser/ash/accessibility/touch_exploration_controller_browsertest.cc
@@ -11,7 +11,7 @@ #include "base/time/time.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/test/base/in_process_browser_test.h"
diff --git a/chrome/browser/assist_ranker/DIR_METADATA b/chrome/browser/assist_ranker/DIR_METADATA index c273112..51705e2 100644 --- a/chrome/browser/assist_ranker/DIR_METADATA +++ b/chrome/browser/assist_ranker/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Search>ContextualSearch" +monorail: { + component: "UI>Browser>Search>ContextualSearch" }
diff --git a/chrome/browser/autocomplete/DIR_METADATA b/chrome/browser/autocomplete/DIR_METADATA index e62a401d..74265378 100644 --- a/chrome/browser/autocomplete/DIR_METADATA +++ b/chrome/browser/autocomplete/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Omnibox" +monorail: { + component: "UI>Browser>Omnibox" }
diff --git a/chrome/browser/availability/DIR_METADATA b/chrome/browser/availability/DIR_METADATA index a3eb23b..d243b83 100644 --- a/chrome/browser/availability/DIR_METADATA +++ b/chrome/browser/availability/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Blink>Previews" +monorail: { + component: "Blink>Previews" }
diff --git a/chrome/browser/background/DIR_METADATA b/chrome/browser/background/DIR_METADATA index ef5785d..7db5a8a 100644 --- a/chrome/browser/background/DIR_METADATA +++ b/chrome/browser/background/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Apps>BackgroundPage" +monorail: { + component: "Platform>Apps>BackgroundPage" }
diff --git a/chrome/browser/background_fetch/DIR_METADATA b/chrome/browser/background_fetch/DIR_METADATA index 1453f4b1..774edd1 100644 --- a/chrome/browser/background_fetch/DIR_METADATA +++ b/chrome/browser/background_fetch/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>BackgroundFetch" +monorail: { + component: "Blink>BackgroundFetch" } -team_email: "platform-capabilities@chromium.org" +team_email: "platform-capabilities@chromium.org"
diff --git a/chrome/browser/badging/DIR_METADATA b/chrome/browser/badging/DIR_METADATA index 32b215c..c8b762a 100644 --- a/chrome/browser/badging/DIR_METADATA +++ b/chrome/browser/badging/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>WebAppInstalls" +monorail: { + component: "UI>Browser>WebAppInstalls" } -team_email: "pwa-dev@chromium.org" +team_email: "pwa-dev@chromium.org"
diff --git a/chrome/browser/banners/DIR_METADATA b/chrome/browser/banners/DIR_METADATA index 32b215c..c8b762a 100644 --- a/chrome/browser/banners/DIR_METADATA +++ b/chrome/browser/banners/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>WebAppInstalls" +monorail: { + component: "UI>Browser>WebAppInstalls" } -team_email: "pwa-dev@chromium.org" +team_email: "pwa-dev@chromium.org"
diff --git a/chrome/browser/banners/OWNERS b/chrome/browser/banners/OWNERS index def6133f..c9e849c 100644 --- a/chrome/browser/banners/OWNERS +++ b/chrome/browser/banners/OWNERS
@@ -1,2 +1,5 @@ benwells@chromium.org +cmp@chromium.org +dmurph@chromium.org dominickn@chromium.org +msw@chromium.org
diff --git a/chrome/browser/battery/DIR_METADATA b/chrome/browser/battery/DIR_METADATA index fe82ff61..eaf73c7 100644 --- a/chrome/browser/battery/DIR_METADATA +++ b/chrome/browser/battery/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Preload" +monorail: { + component: "Internals>Preload" }
diff --git a/chrome/browser/bitmap_fetcher/DIR_METADATA b/chrome/browser/bitmap_fetcher/DIR_METADATA index 6bae767..a830984f5 100644 --- a/chrome/browser/bitmap_fetcher/DIR_METADATA +++ b/chrome/browser/bitmap_fetcher/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Services>Network" +monorail: { + component: "Internals>Services>Network" }
diff --git a/chrome/browser/bluetooth/DIR_METADATA b/chrome/browser/bluetooth/DIR_METADATA index 1252c75..d8105565 100644 --- a/chrome/browser/bluetooth/DIR_METADATA +++ b/chrome/browser/bluetooth/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>Bluetooth" +monorail: { + component: "Blink>Bluetooth" } -team_email: "web-bluetooth@chromium.org" +team_email: "web-bluetooth@chromium.org"
diff --git a/chrome/browser/bookmarks/DIR_METADATA b/chrome/browser/bookmarks/DIR_METADATA index 4bacfe2..a66947e 100644 --- a/chrome/browser/bookmarks/DIR_METADATA +++ b/chrome/browser/bookmarks/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Bookmarks" +monorail: { + component: "UI>Browser>Bookmarks" }
diff --git a/chrome/browser/browser_controls/android/DIR_METADATA b/chrome/browser/browser_controls/android/DIR_METADATA index fcb5352..c51c729 100644 --- a/chrome/browser/browser_controls/android/DIR_METADATA +++ b/chrome/browser/browser_controls/android/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Mobile" +monorail: { + component: "UI>Browser>Mobile" }
diff --git a/chrome/browser/browser_switcher/DIR_METADATA b/chrome/browser/browser_switcher/DIR_METADATA index 18cb08e..a92f904 100644 --- a/chrome/browser/browser_switcher/DIR_METADATA +++ b/chrome/browser/browser_switcher/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise>BrowserSwitcher" +monorail: { + component: "Enterprise>BrowserSwitcher" }
diff --git a/chrome/browser/browsing_data/DIR_METADATA b/chrome/browser/browsing_data/DIR_METADATA index 56d470a..ff46333 100644 --- a/chrome/browser/browsing_data/DIR_METADATA +++ b/chrome/browser/browsing_data/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Privacy" +monorail: { + component: "Privacy" }
diff --git a/chrome/browser/browsing_data/browsing_data_quota_helper_unittest.cc b/chrome/browser/browsing_data/browsing_data_quota_helper_unittest.cc index 01e286c1..0dd2fcb9 100644 --- a/chrome/browser/browsing_data/browsing_data_quota_helper_unittest.cc +++ b/chrome/browser/browsing_data/browsing_data_quota_helper_unittest.cc
@@ -17,6 +17,8 @@ #include "content/public/browser/browser_thread.h" #include "content/public/test/browser_task_environment.h" #include "content/public/test/test_utils.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "storage/browser/quota/quota_client_type.h" #include "storage/browser/quota/quota_manager.h" #include "storage/browser/quota/quota_manager_proxy.h" @@ -70,15 +72,20 @@ } void RegisterClient(base::span<const storage::MockOriginData> origin_data) { - auto client = base::MakeRefCounted<storage::MockQuotaClient>( + auto mock_quota_client = std::make_unique<storage::MockQuotaClient>( quota_manager_->proxy(), origin_data, storage::QuotaClientType::kFileSystem); + storage::MockQuotaClient* mock_quota_client_ptr = mock_quota_client.get(); + + mojo::PendingRemote<storage::mojom::QuotaClient> quota_client; + mojo::MakeSelfOwnedReceiver(std::move(mock_quota_client), + quota_client.InitWithNewPipeAndPassReceiver()); quota_manager_->proxy()->RegisterClient( - client, storage::QuotaClientType::kFileSystem, + std::move(quota_client), storage::QuotaClientType::kFileSystem, {blink::mojom::StorageType::kTemporary, blink::mojom::StorageType::kPersistent, blink::mojom::StorageType::kSyncable}); - client->TouchAllOriginsAndNotify(); + mock_quota_client_ptr->TouchAllOriginsAndNotify(); } void SetPersistentHostQuota(const std::string& host, int64_t quota) {
diff --git a/chrome/browser/captive_portal/DIR_METADATA b/chrome/browser/captive_portal/DIR_METADATA index f0b059d..2ba70d2 100644 --- a/chrome/browser/captive_portal/DIR_METADATA +++ b/chrome/browser/captive_portal/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Network" +monorail: { + component: "Internals>Network" } -team_email: "net-dev@chromium.org" +team_email: "net-dev@chromium.org"
diff --git a/chrome/browser/cart/cart_db.cc b/chrome/browser/cart/cart_db.cc index deb44337..8aa0f9a 100644 --- a/chrome/browser/cart/cart_db.cc +++ b/chrome/browser/cart/cart_db.cc
@@ -12,3 +12,25 @@ ProfileProtoDBFactory<cart_db::ChromeCartContentProto>::GetInstance() ->GetForProfile(browser_context)) {} CartDB::~CartDB() = default; + +void CartDB::LoadCart(const std::string& domain, LoadCallback callback) { + proto_db_->LoadOneEntry(domain, std::move(callback)); +} + +void CartDB::LoadAllCarts(LoadCallback callback) { + proto_db_->LoadAllEntries(std::move(callback)); +} + +void CartDB::AddCart(const std::string& domain, + const cart_db::ChromeCartContentProto& proto, + OperationCallback callback) { + proto_db_->InsertContent(domain, proto, std::move(callback)); +} + +void CartDB::DeleteCart(const std::string& domain, OperationCallback callback) { + proto_db_->DeleteOneEntry(domain, std::move(callback)); +} + +void CartDB::DeleteAllCarts(OperationCallback callback) { + proto_db_->DeleteAllContent(std::move(callback)); +}
diff --git a/chrome/browser/cart/cart_db.h b/chrome/browser/cart/cart_db.h index f97b6782..2b43fd90 100644 --- a/chrome/browser/cart/cart_db.h +++ b/chrome/browser/cart/cart_db.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_CART_CART_DB_H_ #define CHROME_BROWSER_CART_CART_DB_H_ +#include "base/callback_helpers.h" #include "base/memory/weak_ptr.h" namespace content { @@ -20,11 +21,37 @@ class CartDB { public: + using KeyAndValue = std::pair<std::string, cart_db::ChromeCartContentProto>; + + // Callback which is used when cart content is acquired. + using LoadCallback = base::OnceCallback<void(bool, std::vector<KeyAndValue>)>; + + // Used for confirming an operation was completed successfully (e.g. + // insert, delete). + using OperationCallback = base::OnceCallback<void(bool)>; + explicit CartDB(content::BrowserContext* browser_context); CartDB(const CartDB&) = delete; CartDB& operator=(const CartDB&) = delete; ~CartDB(); + // Load the cart for a domain. + void LoadCart(const std::string& domain, LoadCallback callback); + + // Load all carts in the database. + void LoadAllCarts(LoadCallback callback); + + // Add a cart to the database. + void AddCart(const std::string& domain, + const cart_db::ChromeCartContentProto& proto, + OperationCallback callback); + + // Delete the cart from certain domain in the database. + void DeleteCart(const std::string& domain, OperationCallback callback); + + // Delete all carts in the database. + void DeleteAllCarts(OperationCallback callback); + private: ProfileProtoDB<cart_db::ChromeCartContentProto>* proto_db_; base::WeakPtrFactory<CartDB> weak_ptr_factory_{this};
diff --git a/chrome/browser/cart/cart_handler.cc b/chrome/browser/cart/cart_handler.cc index 8c05fcd2..013b65d 100644 --- a/chrome/browser/cart/cart_handler.cc +++ b/chrome/browser/cart/cart_handler.cc
@@ -3,14 +3,14 @@ // found in the LICENSE file. #include "chrome/browser/cart/cart_handler.h" -#include "chrome/browser/cart/cart_service.h" #include "chrome/browser/cart/cart_service_factory.h" #include "components/search/ntp_features.h" CartHandler::CartHandler( mojo::PendingReceiver<chrome_cart::mojom::CartHandler> handler, Profile* profile) - : handler_(this, std::move(handler)), profile_(profile) {} + : handler_(this, std::move(handler)), + cart_service_(CartServiceFactory::GetForProfile(profile)) {} CartHandler::~CartHandler() = default; @@ -47,10 +47,18 @@ std::move(callback).Run(std::move(carts)); } -void CartHandler::DismissCartModule() { - CartServiceFactory::GetForProfile(profile_)->Dismiss(); +void CartHandler::HideCartModule() { + cart_service_->Hide(); } -void CartHandler::RestoreCartModule() { - CartServiceFactory::GetForProfile(profile_)->Restore(); +void CartHandler::RestoreHiddenCartModule() { + cart_service_->RestoreHidden(); +} + +void CartHandler::RemoveCartModule() { + cart_service_->Remove(); +} + +void CartHandler::RestoreRemovedCartModule() { + cart_service_->RestoreRemoved(); }
diff --git a/chrome/browser/cart/cart_handler.h b/chrome/browser/cart/cart_handler.h index 8cda3be..45b28f4e 100644 --- a/chrome/browser/cart/cart_handler.h +++ b/chrome/browser/cart/cart_handler.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_CART_CART_HANDLER_H_ #define CHROME_BROWSER_CART_CART_HANDLER_H_ +#include "chrome/browser/cart/cart_service.h" #include "chrome/browser/cart/chrome_cart.mojom.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/receiver.h" @@ -20,12 +21,14 @@ // chrome_cart::mojom::CartHandler: void GetMerchantCarts(GetMerchantCartsCallback callback) override; - void DismissCartModule() override; - void RestoreCartModule() override; + void HideCartModule() override; + void RestoreHiddenCartModule() override; + void RemoveCartModule() override; + void RestoreRemovedCartModule() override; private: mojo::Receiver<chrome_cart::mojom::CartHandler> handler_; - Profile* profile_; + CartService* cart_service_; }; #endif // CHROME_BROWSER_CART_CART_HANDLER_H_
diff --git a/chrome/browser/cart/cart_service.cc b/chrome/browser/cart/cart_service.cc index f3a06a3..508d6bad 100644 --- a/chrome/browser/cart/cart_service.cc +++ b/chrome/browser/cart/cart_service.cc
@@ -3,26 +3,71 @@ // found in the LICENSE file. #include "chrome/browser/cart/cart_service.h" +#include "chrome/browser/history/history_service_factory.h" #include "chrome/common/pref_names.h" #include "components/prefs/pref_service.h" #include "components/search/ntp_features.h" CartService::CartService(Profile* profile) - : profile_(profile), cart_db_(std::make_unique<CartDB>(profile_)) {} + : profile_(profile), + cart_db_(std::make_unique<CartDB>(profile_)), + history_service_(HistoryServiceFactory::GetForProfile( + profile_, + ServiceAccessType::EXPLICIT_ACCESS)) { + if (history_service_) { + history_service_->AddObserver(this); + } +} + CartService::~CartService() = default; void CartService::RegisterProfilePrefs(PrefRegistrySimple* registry) { - registry->RegisterBooleanPref(prefs::kCartModuleDismissed, false); + registry->RegisterBooleanPref(prefs::kCartModuleHidden, false); + registry->RegisterBooleanPref(prefs::kCartModuleRemoved, false); } -void CartService::Dismiss() { - profile_->GetPrefs()->SetBoolean(prefs::kCartModuleDismissed, true); +void CartService::Hide() { + profile_->GetPrefs()->SetBoolean(prefs::kCartModuleHidden, true); } -void CartService::Restore() { - profile_->GetPrefs()->SetBoolean(prefs::kCartModuleDismissed, false); +void CartService::RestoreHidden() { + profile_->GetPrefs()->SetBoolean(prefs::kCartModuleHidden, false); } -bool CartService::IsDismissed() { - return profile_->GetPrefs()->GetBoolean(prefs::kCartModuleDismissed); +bool CartService::IsHidden() { + return profile_->GetPrefs()->GetBoolean(prefs::kCartModuleHidden); +} + +void CartService::Remove() { + profile_->GetPrefs()->SetBoolean(prefs::kCartModuleRemoved, true); +} + +void CartService::RestoreRemoved() { + profile_->GetPrefs()->SetBoolean(prefs::kCartModuleRemoved, false); +} + +bool CartService::IsRemoved() { + return profile_->GetPrefs()->GetBoolean(prefs::kCartModuleRemoved); +} + +void CartService::OnOperationFinished(bool success) { + DCHECK(success) << "database operation failed."; +} + +void CartService::Shutdown() { + if (history_service_) { + history_service_->RemoveObserver(this); + } +} + +void CartService::OnURLsDeleted(history::HistoryService* history_service, + const history::DeletionInfo& deletion_info) { + // TODO(crbug.com/1157892): Add more fine-grained deletion of cart data when + // history deletion happens. + cart_db_->DeleteAllCarts(base::BindOnce(&CartService::OnOperationFinished, + weak_ptr_factory_.GetWeakPtr())); +} + +CartDB* CartService::GetDB() { + return cart_db_.get(); }
diff --git a/chrome/browser/cart/cart_service.h b/chrome/browser/cart/cart_service.h index b7ee0f7..727b940 100644 --- a/chrome/browser/cart/cart_service.h +++ b/chrome/browser/cart/cart_service.h
@@ -4,29 +4,46 @@ #ifndef CHROME_BROWSER_CART_CART_SERVICE_H_ #define CHROME_BROWSER_CART_CART_SERVICE_H_ +#include "base/callback_helpers.h" #include "base/memory/weak_ptr.h" #include "chrome/browser/cart/cart_db.h" #include "chrome/browser/cart/cart_service_factory.h" #include "chrome/browser/profiles/profile.h" +#include "components/history/core/browser/history_service.h" +#include "components/history/core/browser/history_service_observer.h" #include "components/keyed_service/core/keyed_service.h" #include "components/prefs/pref_registry_simple.h" // Service to maintain and read/write data for chrome cart module. // TODO(crbug.com/1157892) Make this BrowserContext-based and get rid of Profile // usage so that we can modularize this. -class CartService : public KeyedService { +class CartService : public history::HistoryServiceObserver, + public KeyedService { public: CartService(const CartService&) = delete; CartService& operator=(const CartService&) = delete; ~CartService() override; static void RegisterProfilePrefs(PrefRegistrySimple* registry); - // Gets called when cart module is dismissed. - void Dismiss(); - // Gets called when the dismiss of cart module is restored. - void Restore(); - // Returns the current dismiss status of cart module. - bool IsDismissed(); + // Gets called when cart module is temporarily hidden. + void Hide(); + // Gets called when restoring the temporarily hidden cart module. + void RestoreHidden(); + // Returns whether cart module has been temporarily hidden. + bool IsHidden(); + // Gets called when cart module is permanently removed. + void Remove(); + // Gets called when restoring the permanently removed cart module. + void RestoreRemoved(); + // Returns whether cart module has been permanently removed. + bool IsRemoved(); + // Get the proto database owned by the service. + CartDB* GetDB(); + // history::HistoryServiceObserver: + void OnURLsDeleted(history::HistoryService* history_service, + const history::DeletionInfo& deletion_info) override; + // KeyedService: + void Shutdown() override; private: friend class CartServiceFactory; @@ -34,8 +51,12 @@ // Use |CartServiceFactory::GetForProfile(...)| to get an instance of this // service. explicit CartService(Profile* profile); + // Callback when a database operation (e.g. insert or delete) is finished. + void OnOperationFinished(bool success); + Profile* profile_; std::unique_ptr<CartDB> cart_db_; + history::HistoryService* history_service_; base::WeakPtrFactory<CartService> weak_ptr_factory_{this}; };
diff --git a/chrome/browser/cart/cart_service_unittest.cc b/chrome/browser/cart/cart_service_unittest.cc index f54750a..1f89ff5 100644 --- a/chrome/browser/cart/cart_service_unittest.cc +++ b/chrome/browser/cart/cart_service_unittest.cc
@@ -3,11 +3,31 @@ // found in the LICENSE file. #include "chrome/browser/cart/cart_service.h" +#include "chrome/browser/cart/cart_db_content.pb.h" #include "chrome/browser/cart/cart_service_factory.h" +#include "chrome/browser/history/history_service_factory.h" +#include "chrome/browser/persisted_state_db/profile_proto_db.h" +#include "chrome/browser/persisted_state_db/profile_proto_db_factory.h" #include "chrome/test/base/testing_profile.h" #include "content/public/test/browser_task_environment.h" #include "testing/gtest/include/gtest/gtest.h" +namespace { +cart_db::ChromeCartContentProto BuildProto(const char* domain) { + cart_db::ChromeCartContentProto proto; + proto.set_key(domain); + proto.set_merchant_cart_url("www.foo.com"); + return proto; +} + +const char kMockMerchantA[] = "A_merchant"; +const cart_db::ChromeCartContentProto kMockProtoA = BuildProto(kMockMerchantA); +const std::vector<ProfileProtoDB<cart_db::ChromeCartContentProto>::KeyAndValue> + kExpectedA = {{kMockMerchantA, kMockProtoA}}; +const std::vector<ProfileProtoDB<cart_db::ChromeCartContentProto>::KeyAndValue> + kEmptyExpected = {}; +} // namespace + class CartServiceTest : public testing::Test { public: CartServiceTest() @@ -17,6 +37,30 @@ testing::Test::SetUp(); service_ = CartServiceFactory::GetForProfile(&profile_); + DCHECK(profile_.CreateHistoryService()); + } + + void OperationEvaluation(base::OnceClosure closure, + bool expected_success, + bool actual_success) { + EXPECT_EQ(expected_success, actual_success); + std::move(closure).Run(); + } + + void GetEvaluationPersistedStateDB( + base::OnceClosure closure, + std::vector<ProfileProtoDB<cart_db::ChromeCartContentProto>::KeyAndValue> + expected, + bool result, + std::vector<ProfileProtoDB<cart_db::ChromeCartContentProto>::KeyAndValue> + found) { + EXPECT_EQ(found.size(), expected.size()); + for (size_t i = 0; i < expected.size(); i++) { + EXPECT_EQ(found[i].first, expected[i].first); + EXPECT_EQ(found[i].second.merchant_cart_url(), + expected[i].second.merchant_cart_url()); + } + std::move(closure).Run(); } void TearDown() override {} @@ -28,13 +72,55 @@ CartService* service_; }; -// Verifies the dismiss status is flipped by dismiss and restore. -TEST_F(CartServiceTest, TestDismissStatusChange) { - ASSERT_FALSE(service_->IsDismissed()); +// Verifies the hide status is flipped by hiding and restoring. +TEST_F(CartServiceTest, TestHideStatusChange) { + ASSERT_FALSE(service_->IsHidden()); - service_->Dismiss(); - ASSERT_TRUE(service_->IsDismissed()); + service_->Hide(); + ASSERT_TRUE(service_->IsHidden()); - service_->Restore(); - ASSERT_FALSE(service_->IsDismissed()); + service_->RestoreHidden(); + ASSERT_FALSE(service_->IsHidden()); +} + +// Verifies the remove status is flipped by removing and restoring. +TEST_F(CartServiceTest, TestRemoveStatusChange) { + ASSERT_FALSE(service_->IsRemoved()); + + service_->Remove(); + ASSERT_TRUE(service_->IsRemoved()); + + service_->RestoreRemoved(); + ASSERT_FALSE(service_->IsRemoved()); +} + +// Verifies the database is cleared when detected history deletion. +TEST_F(CartServiceTest, TestOnHistoryDeletion) { + CartDB* cart_db_ = service_->GetDB(); + base::RunLoop run_loop[3]; + cart_db_->AddCart( + kMockMerchantA, kMockProtoA, + base::BindOnce(&CartServiceTest::OperationEvaluation, + base::Unretained(this), run_loop[0].QuitClosure(), true)); + task_environment_.RunUntilIdle(); + run_loop[0].Run(); + + cart_db_->LoadAllCarts(base::BindOnce( + &CartServiceTest::GetEvaluationPersistedStateDB, base::Unretained(this), + run_loop[1].QuitClosure(), kExpectedA)); + task_environment_.RunUntilIdle(); + run_loop[1].Run(); + + service_->OnURLsDeleted( + HistoryServiceFactory::GetForProfile(&profile_, + ServiceAccessType::EXPLICIT_ACCESS), + history::DeletionInfo(history::DeletionTimeRange::Invalid(), false, + history::URLRows(), std::set<GURL>(), + base::nullopt)); + + cart_db_->LoadAllCarts(base::BindOnce( + &CartServiceTest::GetEvaluationPersistedStateDB, base::Unretained(this), + run_loop[2].QuitClosure(), kEmptyExpected)); + task_environment_.RunUntilIdle(); + run_loop[2].Run(); }
diff --git a/chrome/browser/cart/chrome_cart.mojom b/chrome/browser/cart/chrome_cart.mojom index 045eea3..9eeca883 100644 --- a/chrome/browser/cart/chrome_cart.mojom +++ b/chrome/browser/cart/chrome_cart.mojom
@@ -20,8 +20,12 @@ interface CartHandler { // Returns the merchant carts in chrome cart. GetMerchantCarts() => (array<MerchantCart> carts); - // Dismisses the cart module. - DismissCartModule(); - // Restores the cart module. - RestoreCartModule(); + // Temporarily hide the cart module. + HideCartModule(); + // Restores the cart module that has been temporarily hidden. + RestoreHiddenCartModule(); + // Permanently remove the cart module. + RemoveCartModule(); + // Restore the cart module that has been permanently removed. + RestoreRemovedCartModule(); }; \ No newline at end of file
diff --git a/chrome/browser/chooser_controller/DIR_METADATA b/chrome/browser/chooser_controller/DIR_METADATA index 29113c5..738fe70 100644 --- a/chrome/browser/chooser_controller/DIR_METADATA +++ b/chrome/browser/chooser_controller/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Permissions" +monorail: { + component: "Internals>Permissions" }
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc index 48ac613..26dfea2 100644 --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc
@@ -348,7 +348,7 @@ const base::FilePath& user_data_dir, const base::FilePath& cur_dir, const base::CommandLine& parsed_command_line) { - TRACE_EVENT0("startup", "ChromeBrowserMainParts::CreateProfile") + TRACE_EVENT0("startup", "ChromeBrowserMainParts::CreateProfile"); base::Time start = base::Time::Now(); bool last_used_profile_set = false; @@ -856,7 +856,7 @@ } int ChromeBrowserMainParts::PreCreateThreadsImpl() { - TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreCreateThreadsImpl") + TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreCreateThreadsImpl"); run_message_loop_ = false; if (browser_process_->GetApplicationLocale().empty()) {
diff --git a/chrome/browser/chrome_browser_main_android.cc b/chrome/browser/chrome_browser_main_android.cc index 218ec43..2f55b17 100644 --- a/chrome/browser/chrome_browser_main_android.cc +++ b/chrome/browser/chrome_browser_main_android.cc
@@ -37,7 +37,7 @@ } int ChromeBrowserMainPartsAndroid::PreCreateThreads() { - TRACE_EVENT0("startup", "ChromeBrowserMainPartsAndroid::PreCreateThreads") + TRACE_EVENT0("startup", "ChromeBrowserMainPartsAndroid::PreCreateThreads"); int result_code = ChromeBrowserMainParts::PreCreateThreads(); @@ -74,7 +74,7 @@ int ChromeBrowserMainPartsAndroid::PreEarlyInitialization() { TRACE_EVENT0("startup", - "ChromeBrowserMainPartsAndroid::PreEarlyInitialization") + "ChromeBrowserMainPartsAndroid::PreEarlyInitialization"); content::Compositor::Initialize(); CHECK(base::CurrentThread::IsSet());
diff --git a/chrome/browser/chrome_browser_main_linux.cc b/chrome/browser/chrome_browser_main_linux.cc index 441a46a..d8cb7a6 100644 --- a/chrome/browser/chrome_browser_main_linux.cc +++ b/chrome/browser/chrome_browser_main_linux.cc
@@ -25,9 +25,11 @@ #include "media/audio/audio_manager.h" #include "ui/base/l10n/l10n_util.h" -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) #include "chrome/installer/util/google_update_settings.h" -#else +#endif + +#if !BUILDFLAG(IS_CHROMEOS_ASH) #include "base/command_line.h" #include "base/linux_util.h" #include "chrome/common/chrome_paths_internal.h" @@ -89,7 +91,7 @@ // true all the time isn't useful, we overload the meaning of the breakpad // registration metric to mean "is crash reporting enabled", since that's // what breakpad registration effectively meant in the days before crashpad. -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) breakpad_registered = GoogleUpdateSettings::GetCollectStatsConsent(); #else breakpad_registered = crash_reporter::GetUploadsEnabled();
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index ab2850bc..08ea6d9 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -3288,10 +3288,10 @@ } void ChromeContentBrowserClient::OverrideWebkitPrefs( - RenderViewHost* rvh, + WebContents* web_contents, WebPreferences* web_prefs) { Profile* profile = - Profile::FromBrowserContext(rvh->GetProcess()->GetBrowserContext()); + Profile::FromBrowserContext(web_contents->GetBrowserContext()); PrefService* prefs = profile->GetPrefs(); // Fill font preferences. These are not registered on Android @@ -3421,12 +3421,11 @@ base::GetFieldTrialParamByFeatureAsBool(features::kDataSaverHoldback, "holdback_web", false); - auto* contents = content::WebContents::FromRenderViewHost(rvh); - if (contents) { + if (web_contents) { #if defined(OS_ANDROID) - auto* delegate = TabAndroid::FromWebContents(contents) + auto* delegate = TabAndroid::FromWebContents(web_contents) ? static_cast<android::TabWebContentsDelegateAndroid*>( - contents->GetDelegate()) + web_contents->GetDelegate()) : nullptr; if (delegate) { web_prefs->embedded_media_experience_enabled = @@ -3449,7 +3448,7 @@ // if the app navigates off scope. This is not a problem because we still // want to use the scope of the app associated with the window, not the // WebContents. - Browser* browser = chrome::FindBrowserWithWebContents(contents); + Browser* browser = chrome::FindBrowserWithWebContents(web_contents); if (browser && browser->app_controller() && browser->app_controller()->HasAppId()) { const web_app::AppId& app_id = browser->app_controller()->GetAppId(); @@ -3461,11 +3460,12 @@ } #endif - web_prefs->immersive_mode_enabled = vr::VrTabHelper::IsInVr(contents); + web_prefs->immersive_mode_enabled = vr::VrTabHelper::IsInVr(web_contents); } - web_prefs->lazy_load_enabled = !contents || !contents->GetDelegate() || - contents->GetDelegate()->ShouldAllowLazyLoad(); + web_prefs->lazy_load_enabled = + !web_contents || !web_contents->GetDelegate() || + web_contents->GetDelegate()->ShouldAllowLazyLoad(); if (base::FeatureList::IsEnabled(features::kLazyFrameLoading)) { const char* param_name = @@ -3555,7 +3555,7 @@ } #if !defined(OS_ANDROID) - if (IsAutoplayAllowedByPolicy(contents, prefs)) { + if (IsAutoplayAllowedByPolicy(web_contents, prefs)) { // If autoplay is allowed by policy then force the no user gesture required // autoplay policy. web_prefs->autoplay_policy = @@ -3587,8 +3587,9 @@ break; } - UpdatePreferredColorScheme(web_prefs, rvh->GetSiteInstance()->GetSiteURL(), - contents, GetWebTheme()); + UpdatePreferredColorScheme( + web_prefs, web_contents->GetMainFrame()->GetSiteInstance()->GetSiteURL(), + web_contents, GetWebTheme()); web_prefs->translate_service_available = TranslateService::IsAvailable(prefs); @@ -3608,7 +3609,7 @@ } for (size_t i = 0; i < extra_parts_.size(); ++i) - extra_parts_[i]->OverrideWebkitPrefs(rvh, web_prefs); + extra_parts_[i]->OverrideWebkitPrefs(web_contents, web_prefs); } bool ChromeContentBrowserClient::OverrideWebPreferencesAfterNavigation(
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h index 743a6e1..038aab9 100644 --- a/chrome/browser/chrome_content_browser_client.h +++ b/chrome/browser/chrome_content_browser_client.h
@@ -354,7 +354,7 @@ content::TtsControllerDelegate* GetTtsControllerDelegate() override; #endif content::TtsPlatform* GetTtsPlatform() override; - void OverrideWebkitPrefs(content::RenderViewHost* rvh, + void OverrideWebkitPrefs(content::WebContents* web_contents, blink::web_pref::WebPreferences* prefs) override; bool OverrideWebPreferencesAfterNavigation( content::WebContents* web_contents,
diff --git a/chrome/browser/chrome_content_browser_client_parts.h b/chrome/browser/chrome_content_browser_client_parts.h index 00e2a85..c4883593 100644 --- a/chrome/browser/chrome_content_browser_client_parts.h +++ b/chrome/browser/chrome_content_browser_client_parts.h
@@ -27,8 +27,8 @@ class BrowserContext; class BrowserURLHandler; class RenderProcessHost; -class RenderViewHost; class SiteInstance; +class WebContents; } namespace storage { @@ -47,7 +47,7 @@ virtual void RenderProcessWillLaunch(content::RenderProcessHost* host) {} virtual void SiteInstanceGotProcess(content::SiteInstance* site_instance) {} virtual void SiteInstanceDeleting(content::SiteInstance* site_instance) {} - virtual void OverrideWebkitPrefs(content::RenderViewHost* rvh, + virtual void OverrideWebkitPrefs(content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) { } virtual void BrowserURLHandlerCreated(content::BrowserURLHandler* handler) {}
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index 65cc141..8611080 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -422,29 +422,29 @@ ] sources = [ - "accessibility/accessibility_event_rewriter_delegate.cc", - "accessibility/accessibility_event_rewriter_delegate.h", - "accessibility/accessibility_extension_loader.cc", - "accessibility/accessibility_extension_loader.h", - "accessibility/accessibility_input_method_observer.cc", - "accessibility/accessibility_input_method_observer.h", - "accessibility/accessibility_manager.cc", - "accessibility/accessibility_manager.h", - "accessibility/accessibility_panel.cc", - "accessibility/accessibility_panel.h", - "accessibility/chromevox_panel.cc", - "accessibility/chromevox_panel.h", - "accessibility/dictation_chromeos.cc", - "accessibility/dictation_chromeos.h", - "accessibility/event_handler_common.cc", - "accessibility/event_handler_common.h", - "accessibility/magnification_manager.cc", - "accessibility/magnification_manager.h", - "accessibility/magnifier_type.h", - "accessibility/select_to_speak_event_handler_delegate.cc", - "accessibility/select_to_speak_event_handler_delegate.h", - "accessibility/soda_installer_impl_chromeos.cc", - "accessibility/soda_installer_impl_chromeos.h", + "../ash/accessibility/accessibility_event_rewriter_delegate.cc", + "../ash/accessibility/accessibility_event_rewriter_delegate.h", + "../ash/accessibility/accessibility_extension_loader.cc", + "../ash/accessibility/accessibility_extension_loader.h", + "../ash/accessibility/accessibility_input_method_observer.cc", + "../ash/accessibility/accessibility_input_method_observer.h", + "../ash/accessibility/accessibility_manager.cc", + "../ash/accessibility/accessibility_manager.h", + "../ash/accessibility/accessibility_panel.cc", + "../ash/accessibility/accessibility_panel.h", + "../ash/accessibility/chromevox_panel.cc", + "../ash/accessibility/chromevox_panel.h", + "../ash/accessibility/dictation_chromeos.cc", + "../ash/accessibility/dictation_chromeos.h", + "../ash/accessibility/event_handler_common.cc", + "../ash/accessibility/event_handler_common.h", + "../ash/accessibility/magnification_manager.cc", + "../ash/accessibility/magnification_manager.h", + "../ash/accessibility/magnifier_type.h", + "../ash/accessibility/select_to_speak_event_handler_delegate.cc", + "../ash/accessibility/select_to_speak_event_handler_delegate.h", + "../ash/accessibility/soda_installer_impl_chromeos.cc", + "../ash/accessibility/soda_installer_impl_chromeos.h", "account_manager/account_manager_edu_coexistence_controller.cc", "account_manager/account_manager_edu_coexistence_controller.h", "account_manager/account_manager_facade_factory_ash.cc",
diff --git a/chrome/browser/chromeos/accessibility/DEPS b/chrome/browser/chromeos/accessibility/DEPS deleted file mode 100644 index 8d58d99..0000000 --- a/chrome/browser/chromeos/accessibility/DEPS +++ /dev/null
@@ -1,27 +0,0 @@ -specific_include_rules = { - "accessibility_manager\.cc": [ - "+ash/root_window_controller.h", - "+ash/shell.h", - "+ash/sticky_keys/sticky_keys_controller.h", - ], - "magnification_manager\.cc": [ - "+ash/magnifier/magnification_controller.h", - "+ash/shell.h", - ], - "switch_access_event_handler\.cc": [ - "+ash/shell.h", - ], - - # Testing - ".*browsertest\.cc": [ - "+ash/root_window_controller.h", - "+ash/system/status_area_widget.h", - "+ash/system/unified/unified_system_tray.h", - ], - "speech_monitor\.(cc|h)": [ - "+content/public/browser/tts_controller.h", - ], - "accessibility_live_site_browsertest\.cc": [ - "+ash/shell.h", - ], -}
diff --git a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.cc b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.cc index 1c0db22..b9b9c64 100644 --- a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.cc +++ b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.cc
@@ -14,7 +14,7 @@ #include "base/command_line.h" #include "base/memory/singleton.h" #include "base/metrics/histogram_functions.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_util.h" #include "chrome/browser/chromeos/arc/accessibility/geometry_util.h" #include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.h b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.h index 2ba43bb..acfa69f 100644 --- a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.h +++ b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.h
@@ -12,7 +12,7 @@ #include <tuple> #include "ash/public/cpp/external_arc/message_center/arc_notification_surface_manager.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.h" #include "chrome/browser/chromeos/arc/input_method_manager/arc_input_method_manager_service.h" #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
diff --git a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge_browsertest.cc b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge_browsertest.cc index 3d4da49..0cc8127 100644 --- a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge_browsertest.cc +++ b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge_browsertest.cc
@@ -9,7 +9,7 @@ #include "ash/shell.h" #include "base/feature_list.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/ash/launcher/app_service/exo_app_type_resolver.h" #include "chrome/browser/ui/browser.h"
diff --git a/chrome/browser/chromeos/arc/arc_util.cc b/chrome/browser/chromeos/arc/arc_util.cc index 5878d4c6..e52ca4a 100644 --- a/chrome/browser/chromeos/arc/arc_util.cc +++ b/chrome/browser/chromeos/arc/arc_util.cc
@@ -27,6 +27,8 @@ #include "chrome/browser/chromeos/arc/arc_web_contents_data.h" #include "chrome/browser/chromeos/arc/policy/arc_policy_util.h" #include "chrome/browser/chromeos/arc/session/arc_session_manager.h" +#include "chrome/browser/chromeos/file_manager/path_util.h" +#include "chrome/browser/chromeos/guest_os/guest_os_share_path.h" #include "chrome/browser/chromeos/login/configuration_keys.h" #include "chrome/browser/chromeos/login/demo_mode/demo_session.h" #include "chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h" @@ -215,6 +217,41 @@ l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_CONTACT_ADMIN_CONTEXT)); } +void SharePathIfRequired(ConvertToContentUrlsAndShareCallback callback, + const std::vector<GURL>& content_urls, + const std::vector<base::FilePath>& paths_to_share) { + DCHECK(arc::IsArcVmEnabled() || paths_to_share.empty()); + std::vector<base::FilePath> path_list; + for (const auto& path : paths_to_share) { + if (!guest_os::GuestOsSharePath::GetForProfile( + ProfileManager::GetPrimaryUserProfile()) + ->IsPathShared(arc::kArcVmName, path)) { + path_list.push_back(path); + } + } + if (path_list.empty()) { + std::move(callback).Run(content_urls); + return; + } + + guest_os::GuestOsSharePath::GetForProfile( + ProfileManager::GetPrimaryUserProfile()) + ->SharePaths(arc::kArcVmName, path_list, /*persist=*/false, + base::BindOnce( + [](ConvertToContentUrlsAndShareCallback callback, + const std::vector<GURL>& content_urls, bool success, + const std::string& failure_reason) { + if (success) { + std::move(callback).Run(content_urls); + } else { + LOG(ERROR) << "Error sharing ARC content URLs: " + << failure_reason; + std::move(callback).Run(std::vector<GURL>()); + } + }, + std::move(callback), content_urls)); +} + } // namespace bool IsRealUserProfile(const Profile* profile) { @@ -676,4 +713,13 @@ return GetHistogramNameByUserType(base_name, /*profile=*/nullptr); } +void ConvertToContentUrlsAndShare( + Profile* profile, + const std::vector<storage::FileSystemURL>& file_system_urls, + ConvertToContentUrlsAndShareCallback callback) { + file_manager::util::ConvertToContentUrls( + profile, std::move(file_system_urls), + base::BindOnce(&SharePathIfRequired, std::move(callback))); +} + } // namespace arc
diff --git a/chrome/browser/chromeos/arc/arc_util.h b/chrome/browser/chromeos/arc/arc_util.h index 57a0a3f..0263d1f 100644 --- a/chrome/browser/chromeos/arc/arc_util.h +++ b/chrome/browser/chromeos/arc/arc_util.h
@@ -11,6 +11,7 @@ #include "base/callback_forward.h" #include "chrome/browser/chromeos/login/demo_mode/demo_session.h" #include "components/arc/session/arc_supervision_transition.h" +#include "storage/browser/file_system/file_system_url.h" // Most utility should be put in components/arc/arc_util.{h,cc}, rather than // here. However, some utility implementation requires other modules defined in @@ -202,6 +203,19 @@ // profile. std::string GetHistogramNameByUserTypeForPrimaryProfile( const std::string& base_name); + +using ConvertToContentUrlsAndShareCallback = + base::OnceCallback<void(const std::vector<GURL>& content_urls)>; + +// Asynchronously converts Chrome OS file system URLs to content:// URLs +// using file_manager::util::ConvertToContentUrls with the supplied profile. +// Subsequently, if the URLS needs to be made available for ARCVM, it will +// be shared by Seneschal. +void ConvertToContentUrlsAndShare( + Profile* profile, + const std::vector<storage::FileSystemURL>& file_system_urls, + ConvertToContentUrlsAndShareCallback callback); + } // namespace arc #endif // CHROME_BROWSER_CHROMEOS_ARC_ARC_UTIL_H_
diff --git a/chrome/browser/chromeos/arc/fileapi/arc_select_files_handler.cc b/chrome/browser/chromeos/arc/fileapi/arc_select_files_handler.cc index e741186..e624b81 100644 --- a/chrome/browser/chromeos/arc/fileapi/arc_select_files_handler.cc +++ b/chrome/browser/chromeos/arc/fileapi/arc_select_files_handler.cc
@@ -11,6 +11,7 @@ #include "base/logging.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" +#include "chrome/browser/chromeos/arc/arc_util.h" #include "chrome/browser/chromeos/arc/fileapi/arc_content_file_system_url_util.h" #include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_util.h" #include "chrome/browser/chromeos/arc/fileapi/arc_select_files_util.h" @@ -18,6 +19,7 @@ #include "chrome/browser/chromeos/file_manager/fileapi_util.h" #include "chrome/browser/chromeos/file_manager/path_util.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" #include "chrome/browser/ui/chrome_select_file_policy.h" #include "chrome/browser/ui/views/select_file_dialog_extension.h" @@ -312,8 +314,8 @@ file_system_urls.push_back(file_system_context->CrackURL(gurl)); } - file_manager::util::ConvertToContentUrls( - file_system_urls, + arc::ConvertToContentUrlsAndShare( + ProfileManager::GetPrimaryUserProfile(), file_system_urls, base::BindOnce(&ContentUrlsResolved, std::move(callback_))); }
diff --git a/chrome/browser/chromeos/arc/input_method_manager/arc_input_method_manager_service.h b/chrome/browser/chromeos/arc/input_method_manager/arc_input_method_manager_service.h index 9da1dc5..05b8192 100644 --- a/chrome/browser/chromeos/arc/input_method_manager/arc_input_method_manager_service.h +++ b/chrome/browser/chromeos/arc/input_method_manager/arc_input_method_manager_service.h
@@ -12,7 +12,7 @@ #include "base/macros.h" #include "base/observer_list_types.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/arc/input_method_manager/arc_input_method_manager_bridge.h" #include "chrome/browser/chromeos/arc/input_method_manager/arc_input_method_state.h" #include "chrome/browser/chromeos/arc/input_method_manager/input_connection_impl.h"
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc index 5b69875d..f79f50f 100644 --- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc +++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -31,12 +31,12 @@ #include "base/task/thread_pool.h" #include "base/task/thread_pool/thread_pool_instance.h" #include "build/branding_buildflags.h" +#include "chrome/browser/ash/accessibility/accessibility_event_rewriter_delegate.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process_platform_part_chromeos.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.h" #include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h" #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
diff --git a/chrome/browser/chromeos/chrome_content_browser_client_chromeos_part.cc b/chrome/browser/chromeos/chrome_content_browser_client_chromeos_part.cc index f986c2ba..d43f80d9 100644 --- a/chrome/browser/chromeos/chrome_content_browser_client_chromeos_part.cc +++ b/chrome/browser/chromeos/chrome_content_browser_client_chromeos_part.cc
@@ -119,18 +119,15 @@ ~ChromeContentBrowserClientChromeOsPart() = default; void ChromeContentBrowserClientChromeOsPart::OverrideWebkitPrefs( - content::RenderViewHost* rvh, + content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) { - content::WebContents* contents = - content::WebContents::FromRenderViewHost(rvh); - // A webcontents may not be the delegate of the render view host such as in // the case of interstitial pages. - if (!contents) + if (!web_contents) return; - OverrideWebkitPrefsForTabletMode(contents, web_prefs); - OverrideFontSize(contents, web_prefs); + OverrideWebkitPrefsForTabletMode(web_contents, web_prefs); + OverrideFontSize(web_contents, web_prefs); } // static
diff --git a/chrome/browser/chromeos/chrome_content_browser_client_chromeos_part.h b/chrome/browser/chromeos/chrome_content_browser_client_chromeos_part.h index 4a6345f..eea4b98 100644 --- a/chrome/browser/chromeos/chrome_content_browser_client_chromeos_part.h +++ b/chrome/browser/chromeos/chrome_content_browser_client_chromeos_part.h
@@ -17,7 +17,7 @@ ~ChromeContentBrowserClientChromeOsPart() override; // ChromeContentBrowserClientParts: - void OverrideWebkitPrefs(content::RenderViewHost* rvh, + void OverrideWebkitPrefs(content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) override; static bool UseDefaultFontSizeForTest(const GURL& url);
diff --git a/chrome/browser/chromeos/crosapi/browser_util.cc b/chrome/browser/chromeos/crosapi/browser_util.cc index 5503947..3424a3d 100644 --- a/chrome/browser/chromeos/crosapi/browser_util.cc +++ b/chrome/browser/chromeos/crosapi/browser_util.cc
@@ -180,11 +180,6 @@ return false; } - // TODO(https://crbug.com/1135494): Remove the free ticket for - // Channel::UNKNOWN after the policy is set on server side for developers. - if (channel == Channel::UNKNOWN) - return true; - if (!g_browser_process->local_state()->GetBoolean(prefs::kLacrosAllowed)) { LOG(WARNING) << "Lacros-chrome is not allowed by policy"; return false;
diff --git a/chrome/browser/chromeos/crosapi/browser_util_unittest.cc b/chrome/browser/chromeos/crosapi/browser_util_unittest.cc index 4a639995..52ad4c3 100644 --- a/chrome/browser/chromeos/crosapi/browser_util_unittest.cc +++ b/chrome/browser/chromeos/crosapi/browser_util_unittest.cc
@@ -90,7 +90,10 @@ true); g_browser_process->local_state()->SetBoolean(prefs::kLacrosAllowed, true); + EXPECT_TRUE(browser_util::IsLacrosEnabled(Channel::UNKNOWN)); EXPECT_TRUE(browser_util::IsLacrosEnabled(Channel::CANARY)); + EXPECT_TRUE(browser_util::IsLacrosEnabled(Channel::DEV)); + EXPECT_TRUE(browser_util::IsLacrosEnabled(Channel::BETA)); } TEST_F(BrowserUtilTest, ManagedAccountLacrosDisabled) { @@ -101,7 +104,10 @@ true); g_browser_process->local_state()->SetBoolean(prefs::kLacrosAllowed, false); + EXPECT_FALSE(browser_util::IsLacrosEnabled(Channel::UNKNOWN)); EXPECT_FALSE(browser_util::IsLacrosEnabled(Channel::CANARY)); + EXPECT_FALSE(browser_util::IsLacrosEnabled(Channel::DEV)); + EXPECT_FALSE(browser_util::IsLacrosEnabled(Channel::BETA)); } TEST_F(BrowserUtilTest, BlockedForChildUser) {
diff --git a/chrome/browser/chromeos/crostini/crostini_unsupported_action_notifier.cc b/chrome/browser/chromeos/crostini/crostini_unsupported_action_notifier.cc index 780c2a5b..490540f 100644 --- a/chrome/browser/chromeos/crostini/crostini_unsupported_action_notifier.cc +++ b/chrome/browser/chromeos/crostini/crostini_unsupported_action_notifier.cc
@@ -14,7 +14,7 @@ #include "base/metrics/histogram_macros.h" #include "base/optional.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/grit/generated_resources.h" #include "components/exo/wm_helper.h" #include "ui/aura/client/aura_constants.h"
diff --git a/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.cc b/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.cc index eb18566..ea88942 100644 --- a/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.cc +++ b/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.cc
@@ -17,6 +17,7 @@ #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" +#include "chrome/browser/chromeos/arc/arc_util.h" #include "chrome/browser/chromeos/borealis/borealis_window_manager.h" #include "chrome/browser/chromeos/crostini/crostini_util.h" #include "chrome/browser/chromeos/extensions/file_manager/event_router.h" @@ -29,6 +30,7 @@ #include "chrome/browser/chromeos/plugin_vm/plugin_vm_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" +#include "components/arc/arc_util.h" #include "content/public/common/drop_data.h" #include "storage/browser/file_system/external_mount_points.h" #include "storage/browser/file_system/file_system_context.h" @@ -165,12 +167,17 @@ exo::DataExchangeDelegate::SendDataCallback callback) { Profile* primary_profile = ProfileManager::GetPrimaryUserProfile(); aura::Window* toplevel = target->GetToplevelWindow(); + bool is_arc = ash::IsArcWindow(target->GetToplevelWindow()); bool is_crostini = crostini::IsCrostiniWindow(toplevel); bool is_plugin_vm = plugin_vm::IsPluginVmAppWindow(toplevel); base::FilePath vm_mount; std::string vm_name; - if (is_crostini) { + if (is_arc) { + // For ARC, |share_required| below will always be false and |vm_name| will + // not be used. Setting it to arc::kArcVmName has no effect. + vm_name = arc::kArcVmName; + } else if (is_crostini) { vm_mount = crostini::ContainerChromeOSBaseDirectory(); vm_name = crostini::kCrostiniDefaultVmName; } else if (is_plugin_vm) { @@ -185,29 +192,52 @@ std::vector<base::FilePath> paths_to_share; for (auto& info : files) { - base::FilePath path_to_send = info.path; - if (is_crostini || is_plugin_vm) { + std::string line_to_send; + bool share_required = false; + if (is_arc) { + GURL arc_url; + if (!file_manager::util::ConvertPathToArcUrl(info.path, &arc_url, + &share_required)) { + LOG(WARNING) << "Could not convert arc path " << info.path; + continue; + } + line_to_send = arc_url.spec(); + } else if (is_crostini || is_plugin_vm) { + base::FilePath path; // Check if it is a path inside the VM: 'vmfile:<vm_name>:'. if (base::StartsWith(info.path.value(), vm_prefix, base::CompareCase::SENSITIVE)) { - path_to_send = - base::FilePath(info.path.value().substr(vm_prefix.size())); + line_to_send = PathToURL( + base::FilePath(info.path.value().substr(vm_prefix.size())).value()); } else if (file_manager::util::ConvertFileSystemURLToPathInsideVM( primary_profile, info.url, vm_mount, - /*map_crostini_home=*/is_crostini, &path_to_send)) { - // Convert to path inside the VM and check if the path needs sharing. - if (!share_path->IsPathShared(vm_name, info.path)) - paths_to_share.emplace_back(info.path); + /*map_crostini_home=*/is_crostini, &path)) { + // Convert to path inside the VM. + line_to_send = PathToURL(path.value()); + share_required = true; } else { - LOG(WARNING) << "Could not convert path " << info.path; + LOG(WARNING) << "Could not convert into VM path " << info.path; continue; } + } else { + // Use path without conversion as default. + line_to_send = PathToURL(info.path.value()); } - lines_to_send.emplace_back(PathToURL(path_to_send.value())); + lines_to_send.emplace_back(line_to_send); + if (share_required && !share_path->IsPathShared(vm_name, info.path)) + paths_to_share.emplace_back(info.path); } + // Arc uses utf-16 data. std::string joined = base::JoinString(lines_to_send, kUriListSeparator); - auto data = base::RefCountedString::TakeString(&joined); + scoped_refptr<base::RefCountedMemory> data; + if (is_arc) { + base::string16 utf16 = base::UTF8ToUTF16(joined); + data = base::RefCountedString16::TakeString(&utf16); + } else { + data = base::RefCountedString::TakeString(&joined); + } + if (!paths_to_share.empty()) { if (!is_plugin_vm) { share_path->SharePaths( @@ -328,20 +358,6 @@ aura::Window* target, const std::vector<ui::FileInfo>& files, SendDataCallback callback) const { - // ARC converts to ArcUrl and uses utf-16. - if (ash::IsArcWindow(target->GetToplevelWindow())) { - std::vector<std::string> lines; - GURL url; - for (const auto& info : files) { - if (file_manager::util::ConvertPathToArcUrl(info.path, &url)) - lines.emplace_back(url.spec()); - } - base::string16 data = - base::UTF8ToUTF16(base::JoinString(lines, kUriListSeparator)); - std::move(callback).Run(base::RefCountedString16::TakeString(&data)); - return; - } - storage::ExternalMountPoints* mount_points = storage::ExternalMountPoints::GetSystemInstance(); base::FilePath virtual_path; @@ -379,8 +395,9 @@ std::move(callback).Run(nullptr); return; } - file_manager::util::ConvertToContentUrls( - file_system_urls, base::BindOnce(&SendArcUrls, std::move(callback))); + arc::ConvertToContentUrlsAndShare( + ProfileManager::GetPrimaryUserProfile(), file_system_urls, + base::BindOnce(&SendArcUrls, std::move(callback))); return; }
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_thumbnail.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_thumbnail.cc index 6e626d7..5b447a29 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_thumbnail.cc +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_thumbnail.cc
@@ -339,11 +339,19 @@ } void FileManagerPrivateInternalGetArcDocumentsProviderThumbnailFunction:: - GotContentUrls(const gfx::Size& size_hint, const std::vector<GURL>& urls) { + GotContentUrls(const gfx::Size& size_hint, + const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { if (urls.size() != 1 || urls[0] == GURL()) { Respond(Error("Failed to resolve to countent URL")); return; } + if (!paths_to_share.empty()) { + Respond( + Error("paths_to_share should be empty when getting " + "ArcDocumentsProviderThumbnail URL")); + return; + } const auto& url = urls[0]; auto* runner = arc::ArcFileSystemOperationRunner::GetForBrowserContext(
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_thumbnail.h b/chrome/browser/chromeos/extensions/file_manager/private_api_thumbnail.h index 6ef283f64..d6c194d 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_thumbnail.h +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_thumbnail.h
@@ -121,8 +121,12 @@ const arc::ArcDocumentsProviderRoot::ExtraFileMetadata& metadata); // A callback invoked when a FilesystemURL is resolved to content URLs. + // |paths_to_share| is always expected to be empty because + // ArcDocumentsProviderThumbnail related functions do not share path + // to ARCVM via Seneschal. void GotContentUrls(const gfx::Size& size_hint, - const std::vector<GURL>& urls); + const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share); // A callback invoked when ARC thumbnail file has been opened. void GotArcThumbnailFileHandle(mojo::ScopedHandle handle);
diff --git a/chrome/browser/chromeos/file_manager/arc_file_tasks.cc b/chrome/browser/chromeos/file_manager/arc_file_tasks.cc index 1698bd9..37b75f40 100644 --- a/chrome/browser/chromeos/file_manager/arc_file_tasks.cc +++ b/chrome/browser/chromeos/file_manager/arc_file_tasks.cc
@@ -17,12 +17,14 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/threading/thread_restrictions.h" +#include "chrome/browser/chromeos/arc/arc_util.h" #include "chrome/browser/chromeos/arc/fileapi/arc_content_file_system_url_util.h" #include "chrome/browser/chromeos/file_manager/app_id.h" #include "chrome/browser/chromeos/file_manager/fileapi_util.h" #include "chrome/browser/chromeos/file_manager/path_util.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_manager.h" #include "chrome/common/chrome_features.h" #include "chrome/common/extensions/api/file_manager_private.h" #include "components/arc/arc_service_manager.h" @@ -191,12 +193,16 @@ std::move(callback).Run(std::move(result_list)); } +// |ignore_paths_to_share| contains the paths to be shared to +// ARCVM via Seneschal. For FindArcTasksAfterContentUrlsResolved(), +// this can be ignored because the paths are not yet accessed. void FindArcTasksAfterContentUrlsResolved( Profile* profile, const std::vector<extensions::EntryInfo>& entries, std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, FindTasksCallback callback, - const std::vector<GURL>& content_urls) { + const std::vector<GURL>& content_urls, + const std::vector<base::FilePath>& ignore_paths_to_share) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_EQ(entries.size(), content_urls.size()); @@ -326,7 +332,7 @@ // Using base::Unretained(profile) is safe because callback will be invoked on // UI thread, where |profile| should be alive. file_manager::util::ConvertToContentUrls( - file_system_urls, + ProfileManager::GetPrimaryUserProfile(), file_system_urls, base::BindOnce(&FindArcTasksAfterContentUrlsResolved, base::Unretained(profile), entries, std::move(result_list), std::move(callback))); @@ -342,10 +348,11 @@ // Using base::Unretained(profile) is safe because callback will be invoked on // UI thread, where |profile| should be alive. - file_manager::util::ConvertToContentUrls( - file_system_urls, base::BindOnce(&ExecuteArcTaskAfterContentUrlsResolved, - base::Unretained(profile), task, - mime_types, std::move(done))); + arc::ConvertToContentUrlsAndShare( + ProfileManager::GetPrimaryUserProfile(), file_system_urls, + base::BindOnce(&ExecuteArcTaskAfterContentUrlsResolved, + base::Unretained(profile), task, mime_types, + std::move(done))); } } // namespace file_tasks
diff --git a/chrome/browser/chromeos/file_manager/path_util.cc b/chrome/browser/chromeos/file_manager/path_util.cc index 2acb330d..785996f 100644 --- a/chrome/browser/chromeos/file_manager/path_util.cc +++ b/chrome/browser/chromeos/file_manager/path_util.cc
@@ -24,7 +24,6 @@ #include "chrome/browser/chromeos/drive/file_system_util.h" #include "chrome/browser/chromeos/fileapi/external_file_url_util.h" #include "chrome/browser/chromeos/fileapi/file_system_backend.h" -#include "chrome/browser/chromeos/guest_os/guest_os_share_path.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/chromeos/smb_client/smb_service.h" #include "chrome/browser/chromeos/smb_client/smb_service_factory.h" @@ -94,9 +93,11 @@ } // Helper function for |ConvertToContentUrls|. -void OnAllContentUrlsResolved(ConvertToContentUrlsCallback callback, - std::unique_ptr<std::vector<GURL>> urls) { - std::move(callback).Run(*urls); +void OnAllContentUrlsResolved( + ConvertToContentUrlsCallback callback, + std::unique_ptr<std::vector<GURL>> urls, + std::unique_ptr<std::vector<base::FilePath>> paths_to_share) { + std::move(callback).Run(*urls, *paths_to_share); } // On non-ChromeOS system (test+development), the primary profile uses @@ -548,8 +549,11 @@ return file_system_url->is_valid(); } -bool ConvertPathToArcUrl(const base::FilePath& path, GURL* arc_url_out) { +bool ConvertPathToArcUrl(const base::FilePath& path, + GURL* arc_url_out, + bool* requires_sharing_out) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + *requires_sharing_out = false; // Obtain the primary profile. This information is required because currently // only the file systems for the primary profile is exposed to ARC. @@ -618,9 +622,7 @@ integration_service->GetMountPointPath().AppendRelativePath( path, &relative_path)) { if (arc::IsArcVmEnabled()) { - guest_os::GuestOsSharePath::GetForProfile(primary_profile) - ->SharePath(arc::kArcVmName, path, /*persist=*/false, - base::DoNothing()); + *requires_sharing_out = true; *arc_url_out = GURL(kArcDriveContentUrlPrefix) .Resolve(net::EscapePath(relative_path.AsUTF8Unsafe())); @@ -675,7 +677,7 @@ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); if (file_system_urls.empty()) { - std::move(callback).Run(std::vector<GURL>()); + std::move(callback).Run(std::vector<GURL>(), std::vector<base::FilePath>()); return; } @@ -687,10 +689,12 @@ // specify index when updating it like (*out_urls)[index] = url. auto out_urls = std::make_unique<std::vector<GURL>>(file_system_urls.size()); auto* out_urls_ptr = out_urls.get(); + auto paths_to_share = std::make_unique<std::vector<base::FilePath>>(); + auto* paths_to_share_ptr = paths_to_share.get(); auto barrier = base::BarrierClosure( file_system_urls.size(), base::BindOnce(&OnAllContentUrlsResolved, std::move(callback), - std::move(out_urls))); + std::move(out_urls), std::move(paths_to_share))); auto single_content_url_callback = base::BindRepeating(&OnSingleContentUrlResolved, barrier, out_urls_ptr); @@ -713,8 +717,13 @@ } GURL arc_url; + bool requires_sharing = false; if (file_system_url.mount_type() == storage::kFileSystemTypeExternal && - ConvertPathToArcUrl(file_system_url.path(), &arc_url)) { + ConvertPathToArcUrl(file_system_url.path(), &arc_url, + &requires_sharing)) { + if (requires_sharing) { + paths_to_share_ptr->push_back(file_system_url.path()); + } single_content_url_callback.Run(index, arc_url); continue; } @@ -723,13 +732,6 @@ } } -void ConvertToContentUrls( - const std::vector<storage::FileSystemURL>& file_system_urls, - ConvertToContentUrlsCallback callback) { - ConvertToContentUrls(ProfileManager::GetPrimaryUserProfile(), - file_system_urls, std::move(callback)); -} - bool ReplacePrefix(std::string* s, const std::string& prefix, const std::string& replacement) {
diff --git a/chrome/browser/chromeos/file_manager/path_util.h b/chrome/browser/chromeos/file_manager/path_util.h index b9b3048..95ce841 100644 --- a/chrome/browser/chromeos/file_manager/path_util.h +++ b/chrome/browser/chromeos/file_manager/path_util.h
@@ -134,10 +134,17 @@ // and /special/drive, this CANNOT convert paths under ARC media directories // (/special/arc-documents-provider). // TODO(crbug.com/811679): Migrate all callers and remove this. -bool ConvertPathToArcUrl(const base::FilePath& path, GURL* arc_url_out); +// |requires_sharing_out| will be set to true if |path| needs to be made +// available to ARCVM by sharing via Seneschal. +bool ConvertPathToArcUrl(const base::FilePath& path, + GURL* arc_url_out, + bool* requires_sharing_out); +// |paths_to_share| is a list of paths to be made available to ARCVM by sharing +// them via Seneschal. using ConvertToContentUrlsCallback = - base::OnceCallback<void(const std::vector<GURL>& content_urls)>; + base::OnceCallback<void(const std::vector<GURL>& content_urls, + const std::vector<base::FilePath>& paths_to_share)>; // Asynchronously converts Chrome OS file system URLs to content:// URLs. // Always returns a vector of the same size as |file_system_urls|. @@ -147,11 +154,6 @@ const std::vector<storage::FileSystemURL>& file_system_urls, ConvertToContentUrlsCallback callback); -// Convers Chrome OS file system URLs using a primary profile. -void ConvertToContentUrls( - const std::vector<storage::FileSystemURL>& file_system_urls, - ConvertToContentUrlsCallback callback); - // Convert path into a string suitable for display in settings. // Replacements: // * /home/chronos/user/Downloads => Downloads
diff --git a/chrome/browser/chromeos/file_manager/path_util_unittest.cc b/chrome/browser/chromeos/file_manager/path_util_unittest.cc index b151505..4001e152 100644 --- a/chrome/browser/chromeos/file_manager/path_util_unittest.cc +++ b/chrome/browser/chromeos/file_manager/path_util_unittest.cc
@@ -23,6 +23,7 @@ #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/download/download_prefs.h" +#include "chrome/browser/profiles/profile_manager.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" #include "chrome/test/base/testing_profile_manager.h" @@ -674,56 +675,71 @@ TEST_F(FileManagerPathUtilConvertUrlTest, ConvertPathToArcUrl_Removable) { GURL url; + bool requires_sharing = false; EXPECT_TRUE(ConvertPathToArcUrl( - base::FilePath::FromUTF8Unsafe("/media/removable/a/b/c"), &url)); + base::FilePath::FromUTF8Unsafe("/media/removable/a/b/c"), &url, + &requires_sharing)); EXPECT_EQ(GURL("content://org.chromium.arc.volumeprovider/0123-abcd/b/c"), url); + EXPECT_FALSE(requires_sharing); } TEST_F(FileManagerPathUtilConvertUrlTest, ConvertPathToArcUrl_MyFiles) { base::test::ScopedRunningOnChromeOS running_on_chromeos; GURL url; + bool requires_sharing = false; const base::FilePath myfiles = GetMyFilesFolderForProfile( chromeos::ProfileHelper::Get()->GetProfileByUserIdHashForTest( "user@gmail.com-hash")); - EXPECT_TRUE(ConvertPathToArcUrl(myfiles.AppendASCII("a/b/c"), &url)); + EXPECT_TRUE(ConvertPathToArcUrl(myfiles.AppendASCII("a/b/c"), &url, + &requires_sharing)); EXPECT_EQ(GURL("content://org.chromium.arc.volumeprovider/" "0000000000000000000000000000CAFEF00D2019/" "a/b/c"), url); + EXPECT_FALSE(requires_sharing); } TEST_F(FileManagerPathUtilConvertUrlTest, ConvertPathToArcUrl_InvalidRemovable) { GURL url; + bool requires_sharing = false; EXPECT_FALSE(ConvertPathToArcUrl( - base::FilePath::FromUTF8Unsafe("/media/removable_foobar"), &url)); + base::FilePath::FromUTF8Unsafe("/media/removable_foobar"), &url, + &requires_sharing)); + EXPECT_FALSE(requires_sharing); } TEST_F(FileManagerPathUtilConvertUrlTest, ConvertPathToArcUrl_InvalidDownloads) { // Non-primary profile's downloads folder is not supported for ARC yet. GURL url; + bool requires_sharing = false; const base::FilePath downloads2 = GetDownloadsFolderForProfile( chromeos::ProfileHelper::Get()->GetProfileByUserIdHashForTest( "user2@gmail.com-hash")); - EXPECT_FALSE(ConvertPathToArcUrl(downloads2.AppendASCII("a/b/c"), &url)); + EXPECT_FALSE(ConvertPathToArcUrl(downloads2.AppendASCII("a/b/c"), &url, + &requires_sharing)); + EXPECT_FALSE(requires_sharing); } TEST_F(FileManagerPathUtilConvertUrlTest, ConvertPathToArcUrl_Crostini) { GURL url; - EXPECT_TRUE( - ConvertPathToArcUrl(crostini_mount_point_.AppendASCII("a/b/c"), &url)); + bool requires_sharing = false; + EXPECT_TRUE(ConvertPathToArcUrl(crostini_mount_point_.AppendASCII("a/b/c"), + &url, &requires_sharing)); EXPECT_EQ(GURL("content://org.chromium.arc.chromecontentprovider/" "externalfile%3A" "crostini_user%40gmail.com-hash_termina_penguin%2Fa%2Fb%2Fc"), url); + EXPECT_FALSE(requires_sharing); } TEST_F(FileManagerPathUtilConvertUrlTest, ConvertPathToArcUrl_MyDriveLegacy) { GURL url; - EXPECT_TRUE( - ConvertPathToArcUrl(drive_mount_point_.AppendASCII("a/b/c"), &url)); + bool requires_sharing = false; + EXPECT_TRUE(ConvertPathToArcUrl(drive_mount_point_.AppendASCII("a/b/c"), &url, + &requires_sharing)); // "@" appears escaped 3 times here because escaping happens when: // - creating drive mount point name for user // - creating externalfile: URL from the path @@ -732,6 +748,7 @@ "externalfile%3Adrivefs-b1f44746e7144c3caafeacaa8bb5c569%2Fa" "%2Fb%2Fc"), url); + EXPECT_FALSE(requires_sharing); } TEST_F(FileManagerPathUtilConvertUrlTest, ConvertPathToArcUrl_MyDriveArcvm) { @@ -740,22 +757,26 @@ command_line->InitFromArgv({"", "--enable-arcvm"}); EXPECT_TRUE(arc::IsArcVmEnabled()); GURL url; - EXPECT_TRUE( - ConvertPathToArcUrl(drive_mount_point_.AppendASCII("a/b/c"), &url)); + bool requires_sharing = false; + EXPECT_TRUE(ConvertPathToArcUrl(drive_mount_point_.AppendASCII("a/b/c"), &url, + &requires_sharing)); EXPECT_EQ(GURL("content://org.chromium.arc.volumeprovider/" "MyDrive/a/b/c"), url); + EXPECT_TRUE(requires_sharing); } TEST_F(FileManagerPathUtilConvertUrlTest, ConvertToContentUrls_InvalidMountType) { base::RunLoop run_loop; ConvertToContentUrls( + ProfileManager::GetPrimaryUserProfile(), std::vector<FileSystemURL>{FileSystemURL::CreateForTest( url::Origin(), storage::kFileSystemTypeTest, base::FilePath::FromUTF8Unsafe("/media/removable/a/b/c"))}, base::BindOnce( - [](base::RunLoop* run_loop, const std::vector<GURL>& urls) { + [](base::RunLoop* run_loop, const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { run_loop->Quit(); ASSERT_EQ(1U, urls.size()); EXPECT_EQ(GURL(), urls[0]); @@ -767,10 +788,12 @@ TEST_F(FileManagerPathUtilConvertUrlTest, ConvertToContentUrls_Removable) { base::RunLoop run_loop; ConvertToContentUrls( + ProfileManager::GetPrimaryUserProfile(), std::vector<FileSystemURL>{CreateExternalURL( base::FilePath::FromUTF8Unsafe("/media/removable/a/b/c"))}, base::BindOnce( - [](base::RunLoop* run_loop, const std::vector<GURL>& urls) { + [](base::RunLoop* run_loop, const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { run_loop->Quit(); ASSERT_EQ(1U, urls.size()); EXPECT_EQ( @@ -788,10 +811,12 @@ "user@gmail.com-hash")); base::RunLoop run_loop; ConvertToContentUrls( + ProfileManager::GetPrimaryUserProfile(), std::vector<FileSystemURL>{ CreateExternalURL(myfiles.AppendASCII("a/b/c"))}, base::BindOnce( - [](base::RunLoop* run_loop, const std::vector<GURL>& urls) { + [](base::RunLoop* run_loop, const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { run_loop->Quit(); ASSERT_EQ(1U, urls.size()); EXPECT_EQ(GURL("content://org.chromium.arc.volumeprovider/" @@ -807,10 +832,12 @@ ConvertToContentUrls_InvalidRemovable) { base::RunLoop run_loop; ConvertToContentUrls( + ProfileManager::GetPrimaryUserProfile(), std::vector<FileSystemURL>{CreateExternalURL( base::FilePath::FromUTF8Unsafe("/media/removable_foobar"))}, base::BindOnce( - [](base::RunLoop* run_loop, const std::vector<GURL>& urls) { + [](base::RunLoop* run_loop, const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { run_loop->Quit(); ASSERT_EQ(1U, urls.size()); EXPECT_EQ(GURL(), urls[0]); @@ -825,10 +852,12 @@ "user@gmail.com-hash")); base::RunLoop run_loop; ConvertToContentUrls( + ProfileManager::GetPrimaryUserProfile(), std::vector<FileSystemURL>{ CreateExternalURL(downloads.AppendASCII("a/b/c"))}, base::BindOnce( - [](base::RunLoop* run_loop, const std::vector<GURL>& urls) { + [](base::RunLoop* run_loop, const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { run_loop->Quit(); ASSERT_EQ(1U, urls.size()); EXPECT_EQ( @@ -847,10 +876,12 @@ "user2@gmail.com-hash")); base::RunLoop run_loop; ConvertToContentUrls( + ProfileManager::GetPrimaryUserProfile(), std::vector<FileSystemURL>{ CreateExternalURL(downloads.AppendASCII("a/b/c"))}, base::BindOnce( - [](base::RunLoop* run_loop, const std::vector<GURL>& urls) { + [](base::RunLoop* run_loop, const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { run_loop->Quit(); ASSERT_EQ(1U, urls.size()); EXPECT_EQ(GURL(), urls[0]); @@ -862,10 +893,12 @@ TEST_F(FileManagerPathUtilConvertUrlTest, ConvertToContentUrls_Special) { base::RunLoop run_loop; ConvertToContentUrls( + ProfileManager::GetPrimaryUserProfile(), std::vector<FileSystemURL>{ CreateExternalURL(drive_mount_point_.AppendASCII("a/b/c"))}, base::BindOnce( - [](base::RunLoop* run_loop, const std::vector<GURL>& urls) { + [](base::RunLoop* run_loop, const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { run_loop->Quit(); ASSERT_EQ(1U, urls.size()); EXPECT_EQ(GURL("content://org.chromium.arc.chromecontentprovider/" @@ -892,6 +925,7 @@ base::RunLoop run_loop; ConvertToContentUrls( + ProfileManager::GetPrimaryUserProfile(), std::vector<FileSystemURL>{FileSystemURL::CreateForTest( url::Origin(), storage::kFileSystemTypeArcDocumentsProvider, base::FilePath::FromUTF8Unsafe( @@ -899,7 +933,8 @@ "com.android.providers.media.documents/" "images_root/Download/photo.jpg"))}, base::BindOnce( - [](base::RunLoop* run_loop, const std::vector<GURL>& urls) { + [](base::RunLoop* run_loop, const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { run_loop->Quit(); ASSERT_EQ(1U, urls.size()); EXPECT_EQ(GURL("content://com.android.providers.media.documents/" @@ -914,6 +949,7 @@ ConvertToContentUrls_ArcDocumentsProviderFileNotFound) { base::RunLoop run_loop; ConvertToContentUrls( + ProfileManager::GetPrimaryUserProfile(), std::vector<FileSystemURL>{FileSystemURL::CreateForTest( url::Origin(), storage::kFileSystemTypeArcDocumentsProvider, base::FilePath::FromUTF8Unsafe( @@ -921,7 +957,8 @@ "com.android.providers.media.documents/" "images_root/Download/photo.jpg"))}, base::BindOnce( - [](base::RunLoop* run_loop, const std::vector<GURL>& urls) { + [](base::RunLoop* run_loop, const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { run_loop->Quit(); ASSERT_EQ(1U, urls.size()); EXPECT_EQ(GURL(""), urls[0]); @@ -933,11 +970,13 @@ TEST_F(FileManagerPathUtilConvertUrlTest, ConvertToContentUrls_AndroidFiles) { base::RunLoop run_loop; ConvertToContentUrls( + ProfileManager::GetPrimaryUserProfile(), std::vector<FileSystemURL>{ CreateExternalURL(base::FilePath::FromUTF8Unsafe( "/run/arc/sdcard/write/emulated/0/Pictures/a/b.jpg"))}, base::BindOnce( - [](base::RunLoop* run_loop, const std::vector<GURL>& urls) { + [](base::RunLoop* run_loop, const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { run_loop->Quit(); ASSERT_EQ(1U, urls.size()); EXPECT_EQ( @@ -952,11 +991,13 @@ ConvertToContentUrls_InvalidAndroidFiles) { base::RunLoop run_loop; ConvertToContentUrls( + ProfileManager::GetPrimaryUserProfile(), std::vector<FileSystemURL>{ CreateExternalURL(base::FilePath::FromUTF8Unsafe( "/run/arc/sdcard/read/emulated/0/a/b/c"))}, base::BindOnce( - [](base::RunLoop* run_loop, const std::vector<GURL>& urls) { + [](base::RunLoop* run_loop, const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { run_loop->Quit(); ASSERT_EQ(1U, urls.size()); EXPECT_EQ(GURL(), urls[0]); // Invalid URL. @@ -967,6 +1008,7 @@ TEST_F(FileManagerPathUtilConvertUrlTest, ConvertToContentUrls_MultipleUrls) { base::RunLoop run_loop; ConvertToContentUrls( + ProfileManager::GetPrimaryUserProfile(), std::vector<FileSystemURL>{ CreateExternalURL(base::FilePath::FromUTF8Unsafe("/invalid")), CreateExternalURL( @@ -975,7 +1017,8 @@ CreateExternalURL(base::FilePath::FromUTF8Unsafe( "/run/arc/sdcard/write/emulated/0/a/b/c"))}, base::BindOnce( - [](base::RunLoop* run_loop, const std::vector<GURL>& urls) { + [](base::RunLoop* run_loop, const std::vector<GURL>& urls, + const std::vector<base::FilePath>& paths_to_share) { run_loop->Quit(); ASSERT_EQ(4U, urls.size()); EXPECT_EQ(GURL(), urls[0]); // Invalid URL.
diff --git a/chrome/browser/chromeos/login/accessibility_browsertest.cc b/chrome/browser/chromeos/login/accessibility_browsertest.cc index 6174889a..e38dc13 100644 --- a/chrome/browser/chromeos/login/accessibility_browsertest.cc +++ b/chrome/browser/chromeos/login/accessibility_browsertest.cc
@@ -4,8 +4,8 @@ #include "ash/public/cpp/docked_magnifier_controller.h" #include "ash/public/cpp/keyboard/keyboard_controller.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/login/test/oobe_base_test.h" #include "chrome/browser/chromeos/login/ui/login_display_host.h" #include "chrome/browser/chromeos/login/ui/webui_login_view.h"
diff --git a/chrome/browser/chromeos/login/app_mode/kiosk_browsertest.cc b/chrome/browser/chromeos/login/app_mode/kiosk_browsertest.cc index acc0f101..33072107 100644 --- a/chrome/browser/chromeos/login/app_mode/kiosk_browsertest.cc +++ b/chrome/browser/chromeos/login/app_mode/kiosk_browsertest.cc
@@ -26,10 +26,10 @@ #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/system/sys_info.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/speech_monitor.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/speech_monitor.h" #include "chrome/browser/chromeos/app_mode/app_session.h" #include "chrome/browser/chromeos/app_mode/fake_cws.h" #include "chrome/browser/chromeos/app_mode/kiosk_app_data.h"
diff --git a/chrome/browser/chromeos/login/lock/screen_locker.cc b/chrome/browser/chromeos/login/lock/screen_locker.cc index a1880d3..9f667eb5 100644 --- a/chrome/browser/chromeos/login/lock/screen_locker.cc +++ b/chrome/browser/chromeos/login/lock/screen_locker.cc
@@ -24,8 +24,8 @@ #include "base/strings/string_util.h" #include "base/task/current_thread.h" #include "base/threading/thread_task_runner_handle.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/authpolicy/authpolicy_helper.h" #include "chrome/browser/chromeos/certificate_provider/certificate_provider_service.h" #include "chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.h"
diff --git a/chrome/browser/chromeos/login/lock/screen_locker_unittest.cc b/chrome/browser/chromeos/login/lock/screen_locker_unittest.cc index e3704495..4a90ea6d 100644 --- a/chrome/browser/chromeos/login/lock/screen_locker_unittest.cc +++ b/chrome/browser/chromeos/login/lock/screen_locker_unittest.cc
@@ -12,7 +12,7 @@ #include "base/callback_helpers.h" #include "base/macros.h" #include "base/memory/ptr_util.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/certificate_provider/certificate_provider_service.h" #include "chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.h" #include "chrome/browser/chromeos/input_method/mock_input_method_manager_impl.h"
diff --git a/chrome/browser/chromeos/login/screens/gesture_navigation_screen.cc b/chrome/browser/chromeos/login/screens/gesture_navigation_screen.cc index f08cf36..04ebe2d 100644 --- a/chrome/browser/chromeos/login/screens/gesture_navigation_screen.cc +++ b/chrome/browser/chromeos/login/screens/gesture_navigation_screen.cc
@@ -8,7 +8,7 @@ #include "ash/public/cpp/ash_pref_names.h" #include "ash/public/cpp/tablet_mode.h" #include "base/metrics/histogram_functions.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/login/users/chrome_user_manager_util.h" #include "chrome/browser/profiles/profile_manager.h" #include "chromeos/constants/chromeos_switches.h"
diff --git a/chrome/browser/chromeos/login/screens/gesture_navigation_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/gesture_navigation_screen_browsertest.cc index ab4411b5..809279c5 100644 --- a/chrome/browser/chromeos/login/screens/gesture_navigation_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/screens/gesture_navigation_screen_browsertest.cc
@@ -13,7 +13,7 @@ #include "base/bind.h" #include "base/run_loop.h" #include "base/test/metrics/histogram_tester.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/login/screen_manager.h" #include "chrome/browser/chromeos/login/test/js_checker.h" #include "chrome/browser/chromeos/login/test/oobe_base_test.h"
diff --git a/chrome/browser/chromeos/login/screens/marketing_opt_in_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/marketing_opt_in_screen_browsertest.cc index 966dc85f..111cd00 100644 --- a/chrome/browser/chromeos/login/screens/marketing_opt_in_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/screens/marketing_opt_in_screen_browsertest.cc
@@ -17,8 +17,8 @@ #include "base/command_line.h" #include "base/run_loop.h" #include "base/test/metrics/histogram_tester.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/login/login_pref_names.h" #include "chrome/browser/chromeos/login/marketing_backend_connector.h" #include "chrome/browser/chromeos/login/test/fake_gaia_mixin.h"
diff --git a/chrome/browser/chromeos/login/screens/welcome_screen.cc b/chrome/browser/chromeos/login/screens/welcome_screen.cc index cf8c6106..f463d28 100644 --- a/chrome/browser/chromeos/login/screens/welcome_screen.cc +++ b/chrome/browser/chromeos/login/screens/welcome_screen.cc
@@ -13,9 +13,9 @@ #include "base/logging.h" #include "base/metrics/histogram_functions.h" #include "base/time/default_tick_clock.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/base/locale_util.h" #include "chrome/browser/chromeos/customization/customization_document.h" #include "chrome/browser/chromeos/login/configuration_keys.h"
diff --git a/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc index aff72f6..e50a6a7 100644 --- a/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc
@@ -11,10 +11,10 @@ #include "base/test/scoped_path_override.h" #include "base/test/task_environment.h" #include "build/build_config.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/speech_monitor.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" -#include "chrome/browser/chromeos/accessibility/speech_monitor.h" #include "chrome/browser/chromeos/login/login_wizard.h" #include "chrome/browser/chromeos/login/screens/welcome_screen.h" #include "chrome/browser/chromeos/login/test/js_checker.h"
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc index 107b5ed..12a457e7 100644 --- a/chrome/browser/chromeos/login/session/user_session_manager.cc +++ b/chrome/browser/chromeos/login/session/user_session_manager.cc
@@ -14,7 +14,6 @@ #include <vector> #include "ash/public/cpp/ash_features.h" -#include "ash/public/cpp/notification_utils.h" #include "base/base_paths.h" #include "base/bind.h" #include "base/command_line.h" @@ -86,7 +85,6 @@ #include "chrome/browser/first_run/first_run.h" #include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/lifetime/browser_shutdown.h" -#include "chrome/browser/notifications/notification_display_service.h" #include "chrome/browser/password_manager/password_store_factory.h" #include "chrome/browser/prefs/session_startup_pref.h" #include "chrome/browser/profiles/profile.h" @@ -96,8 +94,6 @@ #include "chrome/browser/supervised_user/child_accounts/child_account_service_factory.h" #include "chrome/browser/sync/profile_sync_service_factory.h" #include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/browser_navigator.h" -#include "chrome/browser/ui/browser_navigator_params.h" #include "chrome/browser/ui/startup/launch_mode_recorder.h" #include "chrome/browser/ui/startup/startup_browser_creator.h" #include "chrome/common/channel_info.h" @@ -106,7 +102,6 @@ #include "chrome/common/chrome_switches.h" #include "chrome/common/logging_chrome.h" #include "chrome/common/pref_names.h" -#include "chrome/grit/generated_resources.h" #include "chromeos/assistant/buildflags.h" #include "chromeos/components/account_manager/account_manager.h" #include "chromeos/components/account_manager/account_manager_factory.h" @@ -163,9 +158,6 @@ #include "ui/base/ime/chromeos/input_method_descriptor.h" #include "ui/base/ime/chromeos/input_method_manager.h" #include "ui/base/ime/chromeos/input_method_util.h" -#include "ui/base/l10n/l10n_util.h" -#include "ui/message_center/public/cpp/notification.h" -#include "ui/message_center/public/cpp/notifier_id.h" #include "url/gurl.h" using signin::ConsentLevel; @@ -174,10 +166,6 @@ namespace { -// http://crbug/866790: After Supervised Users are deprecated, remove this. -const char kUserSessionManagerNotifier[] = "chrome://settings/people"; -const char kSupervisedUserDeprecated[] = "supervised_user_deprecated"; - // Time to wait for child policy refresh. If that time is exceeded session // should start with cached policy. constexpr base::TimeDelta kWaitForChildPolicyTimeout = @@ -1183,64 +1171,6 @@ } } -// http://crbug/866790: After Supervised Users are deprecated, remove this. -void ShowSupervisedUserDeprecationNotification(Profile* profile, - bool is_manager) { - base::string16 title; - base::string16 message; - - if (is_manager) { - title = l10n_util::GetStringUTF16( - IDS_MANAGER_SUPERVISED_USER_EXPIRING_NOTIFICATION_TITLE); - message = l10n_util::GetStringUTF16( - IDS_MANAGER_SUPERVISED_USER_EXPIRING_NOTIFICATION_BODY); - } else { - title = l10n_util::GetStringUTF16( - IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_TITLE); - message = l10n_util::GetStringUTF16( - IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_BODY); - } - - auto delegate = - base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( - base::BindRepeating([](base::Optional<int> button_index) { - if (button_index) { - user_manager::UserManager* user_manager = - user_manager::UserManager::Get(); - Profile* profile = ProfileHelper::Get()->GetProfileByUser( - user_manager->GetPrimaryUser()); - - NavigateParams params( - profile, - GURL("https://support.google.com/chromebook/?p=new_account"), - ui::PAGE_TRANSITION_AUTO_TOPLEVEL); - params.disposition = WindowOpenDisposition::NEW_WINDOW; - Navigate(¶ms); - } - })); - - message_center::RichNotificationData rich_notification_data; - rich_notification_data.buttons.push_back( - message_center::ButtonInfo(l10n_util::GetStringUTF16( - IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_LEARN_MORE))); - - std::unique_ptr<message_center::Notification> notification = - ash::CreateSystemNotification( - message_center::NOTIFICATION_TYPE_SIMPLE, kSupervisedUserDeprecated, - title, message, base::string16(), GURL(), - message_center::NotifierId( - message_center::NotifierType::SYSTEM_COMPONENT, - kUserSessionManagerNotifier), - rich_notification_data, std::move(delegate), - chromeos::kNotificationWarningIcon, - message_center::SystemNotificationWarningLevel::NORMAL); - notification->set_priority(message_center::SYSTEM_PRIORITY); - - NotificationDisplayService::GetForProfile(profile)->Display( - NotificationHandler::Type::TRANSIENT, *notification, - /*metadata=*/nullptr); -} - void UserSessionManager::InitProfilePreferences( Profile* profile, const UserContext& user_context) {
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_webui.cc b/chrome/browser/chromeos/login/ui/login_display_host_webui.cc index 1c18307e..0cccd3df 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_webui.cc +++ b/chrome/browser/chromeos/login/ui/login_display_host_webui.cc
@@ -28,10 +28,10 @@ #include "base/time/time.h" #include "base/timer/elapsed_timer.h" #include "base/trace_event/trace_event.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process_platform_part.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.h" #include "chrome/browser/chromeos/app_mode/web_app/web_kiosk_app_manager.h" #include "chrome/browser/chromeos/base/locale_util.h"
diff --git a/chrome/browser/chromeos/login/ui/login_display_mojo.cc b/chrome/browser/chromeos/login/ui/login_display_mojo.cc index fa9f41b..1e954e4 100644 --- a/chrome/browser/chromeos/login/ui/login_display_mojo.cc +++ b/chrome/browser/chromeos/login/ui/login_display_mojo.cc
@@ -8,9 +8,9 @@ #include "ash/public/cpp/login_screen_model.h" #include "ash/public/cpp/login_types.h" #include "base/bind.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" #include "chrome/browser/chromeos/login/challenge_response_auth_keys_loader.h" #include "chrome/browser/chromeos/login/existing_user_controller.h"
diff --git a/chrome/browser/chromeos/login/ui/login_display_webui.cc b/chrome/browser/chromeos/login/ui/login_display_webui.cc index 35129c2..b6e8c7b 100644 --- a/chrome/browser/chromeos/login/ui/login_display_webui.cc +++ b/chrome/browser/chromeos/login/ui/login_display_webui.cc
@@ -4,7 +4,7 @@ #include "chrome/browser/chromeos/login/ui/login_display_webui.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/login/lock/screen_locker.h" #include "chrome/browser/chromeos/login/screens/chrome_user_selection_screen.h" #include "chrome/browser/chromeos/login/startup_utils.h"
diff --git a/chrome/browser/chromeos/login/users/supervised_user_manager_impl.cc b/chrome/browser/chromeos/login/users/supervised_user_manager_impl.cc index d89e80c9..4e462f94 100644 --- a/chrome/browser/chromeos/login/users/supervised_user_manager_impl.cc +++ b/chrome/browser/chromeos/login/users/supervised_user_manager_impl.cc
@@ -260,26 +260,4 @@ return prefs_new_users_update->Remove(base::Value(user_id), NULL); } -void SupervisedUserManagerImpl::UpdateManagerName( - const std::string& manager_id, - const base::string16& new_display_name) { - PrefService* local_state = g_browser_process->local_state(); - - const base::DictionaryValue* manager_ids = - local_state->GetDictionary(kSupervisedUserManagers); - - DictionaryPrefUpdate manager_name_update(local_state, - kSupervisedUserManagerNames); - for (base::DictionaryValue::Iterator it(*manager_ids); !it.IsAtEnd(); - it.Advance()) { - std::string user_id; - bool has_manager_id = it.value().GetAsString(&user_id); - DCHECK(has_manager_id); - if (user_id == manager_id) { - manager_name_update->SetWithoutPathExpansion( - it.key(), std::make_unique<base::Value>(new_display_name)); - } - } -} - } // namespace chromeos
diff --git a/chrome/browser/chromeos/login/users/supervised_user_manager_impl.h b/chrome/browser/chromeos/login/users/supervised_user_manager_impl.h index d1feec8..637bace 100644 --- a/chrome/browser/chromeos/login/users/supervised_user_manager_impl.h +++ b/chrome/browser/chromeos/login/users/supervised_user_manager_impl.h
@@ -17,6 +17,8 @@ class CrosSettings; class SupervisedUserTestBase; +// TODO(crbug.com/1155729): Check this entire class is not used anymore for +// deprecated supervised users and remove it with all dependencies. // Implementation of the UserManager. class SupervisedUserManagerImpl : public SupervisedUserManager { public: @@ -44,12 +46,6 @@ bool CheckForFirstRun(const std::string& user_id); - // TODO(crbug.com/866790): Check it is not used anymore and remove it with - // all dependencies. - // Update name if this user is manager of some managed users. - void UpdateManagerName(const std::string& manager_id, - const base::string16& new_display_name); - bool GetUserStringValue(const std::string& user_id, const char* key, std::string* out_value) const;
diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc index a4c7729a..ffc0667 100644 --- a/chrome/browser/chromeos/login/wizard_controller.cc +++ b/chrome/browser/chromeos/login/wizard_controller.cc
@@ -29,10 +29,10 @@ #include "base/task/thread_pool.h" #include "base/threading/thread_task_runner_handle.h" #include "build/branding_buildflags.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process_platform_part.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.h" #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" #include "chrome/browser/chromeos/app_mode/web_app/web_kiosk_app_manager.h"
diff --git a/chrome/browser/chromeos/login/wizard_controller.h b/chrome/browser/chromeos/login/wizard_controller.h index 7910275..61d808f1 100644 --- a/chrome/browser/chromeos/login/wizard_controller.h +++ b/chrome/browser/chromeos/login/wizard_controller.h
@@ -17,7 +17,7 @@ #include "base/optional.h" #include "base/time/time.h" #include "base/timer/timer.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/login/demo_mode/demo_session.h" #include "chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h" #include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h"
diff --git a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc index bb0fee0..a6fd7a03 100644 --- a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc +++ b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
@@ -17,9 +17,9 @@ #include "base/test/metrics/histogram_tester.h" #include "base/test/test_mock_time_task_runner.h" #include "base/time/time.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/base/locale_util.h" #include "chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h" #include "chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h"
diff --git a/chrome/browser/chromeos/note_taking_helper.cc b/chrome/browser/chromeos/note_taking_helper.cc index 08b4140..4d1566d3 100644 --- a/chrome/browser/chromeos/note_taking_helper.cc +++ b/chrome/browser/chromeos/note_taking_helper.cc
@@ -547,12 +547,20 @@ return LaunchResult::ANDROID_NOT_RUNNING; GURL clip_data_uri; + bool requires_sharing = false; if (!path.empty()) { - if (!file_manager::util::ConvertPathToArcUrl(path, &clip_data_uri) || + if (!file_manager::util::ConvertPathToArcUrl(path, &clip_data_uri, + &requires_sharing) || !clip_data_uri.is_valid()) { LOG(WARNING) << "Failed to convert " << path.value() << " to ARC URI"; return LaunchResult::ANDROID_FAILED_TO_CONVERT_PATH; } + // TODO(b/177651157): To support annotating image from Google Drive. + if (requires_sharing) { + LOG(ERROR) << "Can't launch Android app with path " << path.value() + << ". NoteTakingHelper does not handle path sharing yet."; + return LaunchResult::ANDROID_FAILED_TO_CONVERT_PATH; + } } // Only set the package name: leaving the activity name unset enables the
diff --git a/chrome/browser/chromeos/note_taking_helper_unittest.cc b/chrome/browser/chromeos/note_taking_helper_unittest.cc index 816b084..13fd4b8 100644 --- a/chrome/browser/chromeos/note_taking_helper_unittest.cc +++ b/chrome/browser/chromeos/note_taking_helper_unittest.cc
@@ -99,7 +99,9 @@ // Converts a filesystem path to an ARC URL. std::string GetArcUrl(const base::FilePath& path) { GURL url; - EXPECT_TRUE(file_manager::util::ConvertPathToArcUrl(path, &url)); + bool requires_sharing = false; + EXPECT_TRUE( + file_manager::util::ConvertPathToArcUrl(path, &url, &requires_sharing)); return url.spec(); }
diff --git a/chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.cc b/chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.cc index d6405ad..a4a5a4d 100644 --- a/chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.cc +++ b/chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.cc
@@ -21,7 +21,7 @@ #include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/values.h" -#include "chrome/browser/chromeos/accessibility/magnifier_type.h" +#include "chrome/browser/ash/accessibility/magnifier_type.h" #include "chrome/browser/ui/ash/chrome_launcher_prefs.h" #include "chrome/common/pref_names.h" #include "chromeos/dbus/power/power_policy_controller.h"
diff --git a/chrome/browser/chromeos/policy/device_login_screen_policy_browsertest.cc b/chrome/browser/chromeos/policy/device_login_screen_policy_browsertest.cc index 728aacd..d1f449f 100644 --- a/chrome/browser/chromeos/policy/device_login_screen_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/device_login_screen_policy_browsertest.cc
@@ -16,8 +16,8 @@ #include "base/single_thread_task_runner.h" #include "base/threading/thread_task_runner_handle.h" #include "base/values.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/login/test/oobe_base_test.h" #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h" #include "chrome/browser/chromeos/login/test/test_predicate_waiter.h"
diff --git a/chrome/browser/chromeos/policy/login_screen_accessibility_policy_browsertest.cc b/chrome/browser/chromeos/policy/login_screen_accessibility_policy_browsertest.cc index cec1fe0..7da00fe 100644 --- a/chrome/browser/chromeos/policy/login_screen_accessibility_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/login_screen_accessibility_policy_browsertest.cc
@@ -16,8 +16,8 @@ #include "base/single_thread_task_runner.h" #include "base/threading/thread_task_runner_handle.h" #include "base/values.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/chromeos/profiles/profile_helper.h"
diff --git a/chrome/browser/chromeos/policy/login_screen_default_policy_browsertest.cc b/chrome/browser/chromeos/policy/login_screen_default_policy_browsertest.cc index ad346c50..0122f1dd1 100644 --- a/chrome/browser/chromeos/policy/login_screen_default_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/login_screen_default_policy_browsertest.cc
@@ -15,8 +15,8 @@ #include "base/single_thread_task_runner.h" #include "base/threading/thread_task_runner_handle.h" #include "base/values.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/chromeos/profiles/profile_helper.h"
diff --git a/chrome/browser/chromeos/policy/status_collector/child_status_collector.cc b/chrome/browser/chromeos/policy/status_collector/child_status_collector.cc index f66a5e8..7bd934a 100644 --- a/chrome/browser/chromeos/policy/status_collector/child_status_collector.cc +++ b/chrome/browser/chromeos/policy/status_collector/child_status_collector.cc
@@ -70,7 +70,7 @@ base::TimeDelta::FromSeconds(30); bool ReadAndroidStatus( - const policy::ChildStatusCollector::AndroidStatusReceiver& receiver) { + policy::ChildStatusCollector::AndroidStatusReceiver receiver) { auto* const arc_service_manager = arc::ArcServiceManager::Get(); if (!arc_service_manager) return false; @@ -82,7 +82,7 @@ ARC_GET_INSTANCE_FOR_METHOD(instance_holder, GetStatus); if (!instance) return false; - instance->GetStatus(receiver); + instance->GetStatus(std::move(receiver)); return true; } @@ -99,7 +99,7 @@ bool FetchAndroidStatus( const StatusCollector::AndroidStatusFetcher& android_status_fetcher) { - return android_status_fetcher.Run(base::BindRepeating( + return android_status_fetcher.Run(base::BindOnce( &ChildStatusCollectorState::OnAndroidInfoReceived, this)); }
diff --git a/chrome/browser/chromeos/policy/status_collector/child_status_collector.h b/chrome/browser/chromeos/policy/status_collector/child_status_collector.h index d695abd..a8f31a6 100644 --- a/chrome/browser/chromeos/policy/status_collector/child_status_collector.h +++ b/chrome/browser/chromeos/policy/status_collector/child_status_collector.h
@@ -47,17 +47,6 @@ class ChildStatusCollector : public StatusCollector, public chromeos::UsageTimeStateNotifier::Observer { public: - // Passed into asynchronous mojo interface for communicating with Android. - using AndroidStatusReceiver = - base::Callback<void(const std::string&, const std::string&)>; - - // Calls the reporting mojo interface, passing over the AndroidStatusReceiver. - // Returns false if the mojo interface isn't available, in which case no - // asynchronous query is emitted and the android status query fails - // synchronously. The |AndroidStatusReceiver| is not called in this case. - using AndroidStatusFetcher = - base::Callback<bool(const AndroidStatusReceiver&)>; - // Constructor. Callers can inject their own *Fetcher callbacks, e.g. for unit // testing. A null callback can be passed for any *Fetcher parameter, to use // the default implementation. These callbacks are always executed on Blocking
diff --git a/chrome/browser/chromeos/policy/status_collector/child_status_collector_browsertest.cc b/chrome/browser/chromeos/policy/status_collector/child_status_collector_browsertest.cc index 4088582c..1ab7d44 100644 --- a/chrome/browser/chromeos/policy/status_collector/child_status_collector_browsertest.cc +++ b/chrome/browser/chromeos/policy/status_collector/child_status_collector_browsertest.cc
@@ -142,28 +142,29 @@ } void CallAndroidStatusReceiver( - const policy::ChildStatusCollector::AndroidStatusReceiver& receiver, + policy::ChildStatusCollector::AndroidStatusReceiver receiver, const std::string& status, const std::string& droid_guard_info) { - receiver.Run(status, droid_guard_info); + std::move(receiver).Run(status, droid_guard_info); } bool GetEmptyAndroidStatus( - const policy::StatusCollector::AndroidStatusReceiver& receiver) { + policy::StatusCollector::AndroidStatusReceiver receiver) { // Post it to the thread because this call is expected to be asynchronous. base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(&CallAndroidStatusReceiver, receiver, "", "")); + FROM_HERE, + base::BindOnce(&CallAndroidStatusReceiver, std::move(receiver), "", "")); return true; } bool GetFakeAndroidStatus( const std::string& status, const std::string& droid_guard_info, - const policy::StatusCollector::AndroidStatusReceiver& receiver) { + policy::StatusCollector::AndroidStatusReceiver receiver) { // Post it to the thread because this call is expected to be asynchronous. base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(&CallAndroidStatusReceiver, receiver, status, - droid_guard_info)); + FROM_HERE, base::BindOnce(&CallAndroidStatusReceiver, std::move(receiver), + status, droid_guard_info)); return true; }
diff --git a/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc b/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc index 36da4fed..2bca721 100644 --- a/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc +++ b/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc
@@ -421,7 +421,7 @@ } bool ReadAndroidStatus( - const policy::StatusCollector::AndroidStatusReceiver& receiver) { + policy::StatusCollector::AndroidStatusReceiver receiver) { auto* const arc_service_manager = arc::ArcServiceManager::Get(); if (!arc_service_manager) return false; @@ -433,7 +433,7 @@ ARC_GET_INSTANCE_FOR_METHOD(instance_holder, GetStatus); if (!instance) return false; - instance->GetStatus(receiver); + instance->GetStatus(std::move(receiver)); return true; } @@ -674,8 +674,8 @@ bool FetchAndroidStatus( const StatusCollector::AndroidStatusFetcher& android_status_fetcher) { - return android_status_fetcher.Run( - base::Bind(&DeviceStatusCollectorState::OnAndroidInfoReceived, this)); + return android_status_fetcher.Run(base::BindOnce( + &DeviceStatusCollectorState::OnAndroidInfoReceived, this)); } void FetchTpmStatus( @@ -1348,16 +1348,16 @@ task_runner_ = base::SequencedTaskRunnerHandle::Get(); if (volume_info_fetcher_.is_null()) - volume_info_fetcher_ = base::Bind(&GetVolumeInfo); + volume_info_fetcher_ = base::BindRepeating(&GetVolumeInfo); if (cpu_statistics_fetcher_.is_null()) - cpu_statistics_fetcher_ = base::Bind(&ReadCPUStatistics); + cpu_statistics_fetcher_ = base::BindRepeating(&ReadCPUStatistics); if (cpu_temp_fetcher_.is_null()) - cpu_temp_fetcher_ = base::Bind(&ReadCPUTempInfo); + cpu_temp_fetcher_ = base::BindRepeating(&ReadCPUTempInfo); if (android_status_fetcher_.is_null()) - android_status_fetcher_ = base::Bind(&ReadAndroidStatus); + android_status_fetcher_ = base::BindRepeating(&ReadAndroidStatus); if (tpm_status_fetcher_.is_null()) tpm_status_fetcher_ = base::BindRepeating(&ReadTpmStatus); @@ -1365,8 +1365,10 @@ if (emmc_lifetime_fetcher_.is_null()) emmc_lifetime_fetcher_ = base::BindRepeating(&ReadDiskLifeTimeEstimation); - if (stateful_partition_info_fetcher_.is_null()) - stateful_partition_info_fetcher_ = base::Bind(&ReadStatefulPartitionInfo); + if (stateful_partition_info_fetcher_.is_null()) { + stateful_partition_info_fetcher_ = + base::BindRepeating(&ReadStatefulPartitionInfo); + } if (cros_healthd_data_fetcher_.is_null()) { cros_healthd_data_fetcher_ = @@ -1388,7 +1390,7 @@ // Watch for changes to the individual policies that control what the status // reports contain. - base::Closure callback = base::Bind( + base::Closure callback = base::BindRepeating( &DeviceStatusCollector::UpdateReportingSettings, base::Unretained(this)); version_info_subscription_ = cros_settings_->AddSettingsObserver( chromeos::kReportDeviceVersionInfo, callback);
diff --git a/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc b/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc index f142e23..bc240e3d 100644 --- a/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc +++ b/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc
@@ -433,28 +433,29 @@ } void CallAndroidStatusReceiver( - const policy::StatusCollector::AndroidStatusReceiver& receiver, + policy::StatusCollector::AndroidStatusReceiver receiver, const std::string& status, const std::string& droid_guard_info) { - receiver.Run(status, droid_guard_info); + std::move(receiver).Run(status, droid_guard_info); } bool GetEmptyAndroidStatus( - const policy::StatusCollector::AndroidStatusReceiver& receiver) { + policy::StatusCollector::AndroidStatusReceiver receiver) { // Post it to the thread because this call is expected to be asynchronous. base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(&CallAndroidStatusReceiver, receiver, "", "")); + FROM_HERE, + base::BindOnce(&CallAndroidStatusReceiver, std::move(receiver), "", "")); return true; } bool GetFakeAndroidStatus( const std::string& status, const std::string& droid_guard_info, - const policy::StatusCollector::AndroidStatusReceiver& receiver) { + policy::StatusCollector::AndroidStatusReceiver receiver) { // Post it to the thread because this call is expected to be asynchronous. base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(&CallAndroidStatusReceiver, receiver, status, - droid_guard_info)); + FROM_HERE, base::BindOnce(&CallAndroidStatusReceiver, std::move(receiver), + status, droid_guard_info)); return true; }
diff --git a/chrome/browser/chromeos/policy/status_collector/status_collector.h b/chrome/browser/chromeos/policy/status_collector/status_collector.h index b85a664..04d57ec 100644 --- a/chrome/browser/chromeos/policy/status_collector/status_collector.h +++ b/chrome/browser/chromeos/policy/status_collector/status_collector.h
@@ -69,14 +69,14 @@ public: // Passed into asynchronous mojo interface for communicating with Android. using AndroidStatusReceiver = - base::Callback<void(const std::string&, const std::string&)>; + base::OnceCallback<void(const std::string&, const std::string&)>; // Calls the enterprise reporting mojo interface, passing over the // AndroidStatusReceiver. Returns false if the mojo interface isn't available, // in which case no asynchronous query is emitted and the android status query // fails synchronously. The |AndroidStatusReceiver| is not called in this // case. using AndroidStatusFetcher = - base::Callback<bool(const AndroidStatusReceiver&)>; + base::RepeatingCallback<bool(AndroidStatusReceiver)>; static void RegisterProfilePrefs(PrefRegistrySimple* registry);
diff --git a/chrome/browser/chromeos/power/ml/adaptive_screen_brightness_manager.cc b/chrome/browser/chromeos/power/ml/adaptive_screen_brightness_manager.cc index 6a7c149..6923589 100644 --- a/chrome/browser/chromeos/power/ml/adaptive_screen_brightness_manager.cc +++ b/chrome/browser/chromeos/power/ml/adaptive_screen_brightness_manager.cc
@@ -13,8 +13,8 @@ #include "base/task/post_task.h" #include "base/time/time.h" #include "base/timer/timer.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/power/ml/adaptive_screen_brightness_ukm_logger.h" #include "chrome/browser/chromeos/power/ml/adaptive_screen_brightness_ukm_logger_impl.h" #include "chrome/browser/chromeos/power/ml/recent_events_counter.h"
diff --git a/chrome/browser/chromeos/power/ml/adaptive_screen_brightness_manager_unittest.cc b/chrome/browser/chromeos/power/ml/adaptive_screen_brightness_manager_unittest.cc index 1afe745..d3b80d7 100644 --- a/chrome/browser/chromeos/power/ml/adaptive_screen_brightness_manager_unittest.cc +++ b/chrome/browser/chromeos/power/ml/adaptive_screen_brightness_manager_unittest.cc
@@ -9,8 +9,8 @@ #include "base/test/test_mock_time_task_runner.h" #include "base/timer/timer.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" #include "chrome/browser/chromeos/power/ml/adaptive_screen_brightness_ukm_logger.h" #include "chrome/browser/chromeos/power/ml/screen_brightness_event.pb.h"
diff --git a/chrome/browser/chromeos/preferences.cc b/chrome/browser/chromeos/preferences.cc index 4ade822..fad68fe 100644 --- a/chrome/browser/chromeos/preferences.cc +++ b/chrome/browser/chromeos/preferences.cc
@@ -21,10 +21,10 @@ #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process_platform_part.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/base/locale_util.h" #include "chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_service.h" #include "chrome/browser/chromeos/crosapi/browser_util.h"
diff --git a/chrome/browser/chromeos/system/tray_accessibility_browsertest.cc b/chrome/browser/chromeos/system/tray_accessibility_browsertest.cc index bde0c9f..65201de 100644 --- a/chrome/browser/chromeos/system/tray_accessibility_browsertest.cc +++ b/chrome/browser/chromeos/system/tray_accessibility_browsertest.cc
@@ -7,10 +7,10 @@ #include "ash/public/cpp/system_tray_test_api.h" #include "base/callback.h" #include "base/run_loop.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/login/helper.h" #include "chrome/browser/chromeos/login/startup_utils.h" #include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/chromeos/web_applications/chrome_camera_app_ui_delegate.cc b/chrome/browser/chromeos/web_applications/chrome_camera_app_ui_delegate.cc index 5415cddb..c5b4716 100644 --- a/chrome/browser/chromeos/web_applications/chrome_camera_app_ui_delegate.cc +++ b/chrome/browser/chromeos/web_applications/chrome_camera_app_ui_delegate.cc
@@ -8,6 +8,7 @@ #include "ash/public/cpp/tablet_mode.h" #include "base/files/file_path.h" +#include "base/logging.h" #include "base/system/sys_info.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" @@ -155,10 +156,17 @@ } GURL arc_url_out; - if (!file_manager::util::ConvertPathToArcUrl(path, &arc_url_out) || + bool requires_sharing = false; + if (!file_manager::util::ConvertPathToArcUrl(path, &arc_url_out, + &requires_sharing) || !arc_url_out.is_valid()) { return std::string(); } + if (requires_sharing) { + LOG(ERROR) << "File path should be in MyFiles and not require any sharing"; + NOTREACHED(); + return std::string(); + } return arc_url_out.spec(); }
diff --git a/chrome/browser/chromeos/web_applications/chrome_help_app_ui_delegate.cc b/chrome/browser/chromeos/web_applications/chrome_help_app_ui_delegate.cc index d6ee40b1b..e13f1f5 100644 --- a/chrome/browser/chromeos/web_applications/chrome_help_app_ui_delegate.cc +++ b/chrome/browser/chromeos/web_applications/chrome_help_app_ui_delegate.cc
@@ -9,8 +9,8 @@ #include "ash/public/cpp/assistant/assistant_state.h" #include "ash/public/cpp/tablet_mode.h" #include "base/system/sys_info.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/arc/arc_util.h" #include "chrome/browser/chromeos/assistant/assistant_util.h" #include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_utils.h"
diff --git a/chrome/browser/client_hints/DIR_METADATA b/chrome/browser/client_hints/DIR_METADATA index ccbaa44..1211dd41 100644 --- a/chrome/browser/client_hints/DIR_METADATA +++ b/chrome/browser/client_hints/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Blink>Loader" +monorail: { + component: "Blink>Loader" }
diff --git a/chrome/browser/clipboard/DIR_METADATA b/chrome/browser/clipboard/DIR_METADATA index 29113c5..738fe70 100644 --- a/chrome/browser/clipboard/DIR_METADATA +++ b/chrome/browser/clipboard/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Permissions" +monorail: { + component: "Internals>Permissions" }
diff --git a/chrome/browser/component_updater/DIR_METADATA b/chrome/browser/component_updater/DIR_METADATA index d8b71053..564340d8 100644 --- a/chrome/browser/component_updater/DIR_METADATA +++ b/chrome/browser/component_updater/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Installer>Components" +monorail: { + component: "Internals>Installer>Components" } -team_email: "chrome-updates-dev@chromium.org" +team_email: "chrome-updates-dev@chromium.org"
diff --git a/chrome/browser/component_updater/soda_component_installer.cc b/chrome/browser/component_updater/soda_component_installer.cc index 18de4d5..0335c06 100644 --- a/chrome/browser/component_updater/soda_component_installer.cc +++ b/chrome/browser/component_updater/soda_component_installer.cc
@@ -8,8 +8,7 @@ #include "base/files/file_util.h" #include "build/build_config.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/component_updater/soda_en_us_component_installer.h" -#include "chrome/browser/component_updater/soda_ja_jp_component_installer.h" +#include "chrome/browser/component_updater/soda_language_pack_component_installer.h" #include "chrome/common/pref_names.h" #include "components/component_updater/component_updater_service.h" #include "components/crx_file/id_util.h" @@ -178,8 +177,12 @@ void RegisterPrefsForSodaComponent(PrefRegistrySimple* registry) { registry->RegisterTimePref(prefs::kSodaScheduledDeletionTime, base::Time()); registry->RegisterFilePathPref(prefs::kSodaBinaryPath, base::FilePath()); - registry->RegisterFilePathPref(prefs::kSodaEnUsConfigPath, base::FilePath()); - registry->RegisterFilePathPref(prefs::kSodaJaJpConfigPath, base::FilePath()); + + // Register language pack config path preferences. + for (const component_updater::SodaLanguagePackComponentConfig& config : + kLanguageComponentConfigs) { + registry->RegisterFilePathPref(config.config_path_pref, base::FilePath()); + } } void RegisterSodaComponent(ComponentUpdateService* cus, @@ -206,7 +209,7 @@ installer->Register(cus, std::move(callback)); } else { - auto deletion_time = + base::Time deletion_time = global_prefs->GetTime(prefs::kSodaScheduledDeletionTime); if (!deletion_time.is_null() && deletion_time < base::Time::Now()) { base::DeletePathRecursively(speech::GetSodaDirectory()); @@ -225,24 +228,12 @@ if (base::FeatureList::IsEnabled(media::kUseSodaForLiveCaption) && base::FeatureList::IsEnabled(media::kLiveCaption)) { if (profile_prefs->GetBoolean(prefs::kLiveCaptionEnabled)) { - speech::LanguageCode language = speech::GetLanguageCode( - profile_prefs->GetString(prefs::kLiveCaptionLanguageCode)); - switch (language) { - case speech::LanguageCode::kNone: - // Do nothing. - break; - case speech::LanguageCode::kEnUs: - RegisterSodaEnUsComponent( - cus, global_prefs, - base::BindOnce(&SodaEnUsComponentInstallerPolicy:: - UpdateSodaEnUsComponentOnDemand)); - break; - case speech::LanguageCode::kJaJp: - RegisterSodaJaJpComponent( - cus, global_prefs, - base::BindOnce(&SodaJaJpComponentInstallerPolicy:: - UpdateSodaJaJpComponentOnDemand)); - break; + base::Optional<component_updater::SodaLanguagePackComponentConfig> + config = SodaLanguagePackComponentInstallerPolicy:: + GetLanguageComponentConfig( + profile_prefs->GetString(prefs::kLiveCaptionLanguageCode)); + if (config) { + RegisterSodaLanguagePackComponent(config.value(), cus, global_prefs); } } }
diff --git a/chrome/browser/component_updater/soda_en_us_component_installer.cc b/chrome/browser/component_updater/soda_en_us_component_installer.cc deleted file mode 100644 index af28b9d..0000000 --- a/chrome/browser/component_updater/soda_en_us_component_installer.cc +++ /dev/null
@@ -1,154 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/component_updater/soda_en_us_component_installer.h" - -#include "base/bind.h" -#include "base/files/file_util.h" -#include "build/build_config.h" -#include "chrome/browser/browser_process.h" -#include "chrome/browser/component_updater/soda_component_installer.h" -#include "chrome/common/pref_names.h" -#include "components/component_updater/component_updater_service.h" -#include "components/crx_file/id_util.h" -#include "components/soda/constants.h" -#include "components/update_client/update_client_errors.h" -#include "content/public/browser/browser_task_traits.h" -#include "content/public/browser/browser_thread.h" -#include "crypto/sha2.h" -#include "media/base/media_switches.h" - -using content::BrowserThread; - -namespace component_updater { - -namespace { - -// The SHA256 of the SubjectPublicKeyInfo used to sign the component. -// The component id is: oegebmmcimckjhkhbggblnkjloogjdfg -constexpr uint8_t kSodaEnUsPublicKeySHA256[32] = { - 0xe4, 0x64, 0x1c, 0xc2, 0x8c, 0x2a, 0x97, 0xa7, 0x16, 0x61, 0xbd, - 0xa9, 0xbe, 0xe6, 0x93, 0x56, 0xf5, 0x05, 0x33, 0x9b, 0x8b, 0x0b, - 0x02, 0xe2, 0x6b, 0x7e, 0x6c, 0x40, 0xa1, 0xd2, 0x7e, 0x18}; - -static_assert(base::size(kSodaEnUsPublicKeySHA256) == crypto::kSHA256Length, - "Wrong hash length"); - -constexpr char kSodaEnUsManifestName[] = "SODA en-US Models"; - -} // namespace - -SodaEnUsComponentInstallerPolicy::SodaEnUsComponentInstallerPolicy( - OnSodaEnUsComponentReadyCallback callback) - : on_component_ready_callback_(callback) {} - -SodaEnUsComponentInstallerPolicy::~SodaEnUsComponentInstallerPolicy() = default; - -const std::string SodaEnUsComponentInstallerPolicy::GetExtensionId() { - return crx_file::id_util::GenerateIdFromHash( - kSodaEnUsPublicKeySHA256, sizeof(kSodaEnUsPublicKeySHA256)); -} - -void SodaEnUsComponentInstallerPolicy::UpdateSodaEnUsComponentOnDemand() { - const std::string crx_id = - component_updater::SodaEnUsComponentInstallerPolicy::GetExtensionId(); - g_browser_process->component_updater()->GetOnDemandUpdater().OnDemandUpdate( - crx_id, component_updater::OnDemandUpdater::Priority::FOREGROUND, - base::BindOnce([](update_client::Error error) { - if (error != update_client::Error::NONE && - error != update_client::Error::UPDATE_IN_PROGRESS) - LOG(ERROR) << "On demand update of the SODA en-US component failed " - "with error: " - << static_cast<int>(error); - })); -} - -bool SodaEnUsComponentInstallerPolicy::VerifyInstallation( - const base::DictionaryValue& manifest, - const base::FilePath& install_dir) const { - return base::PathExists( - install_dir.Append(speech::kSodaLanguagePackDirectoryRelativePath)); -} - -bool SodaEnUsComponentInstallerPolicy:: - SupportsGroupPolicyEnabledComponentUpdates() const { - return true; -} - -bool SodaEnUsComponentInstallerPolicy::RequiresNetworkEncryption() const { - return true; -} - -update_client::CrxInstaller::Result -SodaEnUsComponentInstallerPolicy::OnCustomInstall( - const base::DictionaryValue& manifest, - const base::FilePath& install_dir) { - return SodaComponentInstallerPolicy::SetComponentDirectoryPermission( - install_dir); -} - -void SodaEnUsComponentInstallerPolicy::OnCustomUninstall() {} - -void SodaEnUsComponentInstallerPolicy::ComponentReady( - const base::Version& version, - const base::FilePath& install_dir, - std::unique_ptr<base::DictionaryValue> manifest) { - VLOG(1) << "Component ready, version " << version.GetString() << " in " - << install_dir.value(); - - on_component_ready_callback_.Run(install_dir); -} - -base::FilePath SodaEnUsComponentInstallerPolicy::GetRelativeInstallDir() const { - return base::FilePath(speech::kSodaEnUsInstallationRelativePath); -} - -void SodaEnUsComponentInstallerPolicy::GetHash( - std::vector<uint8_t>* hash) const { - hash->assign(kSodaEnUsPublicKeySHA256, - kSodaEnUsPublicKeySHA256 + base::size(kSodaEnUsPublicKeySHA256)); -} - -std::string SodaEnUsComponentInstallerPolicy::GetName() const { - return kSodaEnUsManifestName; -} - -update_client::InstallerAttributes -SodaEnUsComponentInstallerPolicy::GetInstallerAttributes() const { - return update_client::InstallerAttributes(); -} - -std::vector<std::string> SodaEnUsComponentInstallerPolicy::GetMimeTypes() - const { - return std::vector<std::string>(); -} - -void UpdateSodaEnUsInstallDirPref(PrefService* prefs, - const base::FilePath& install_dir) { -#if !defined(OS_ANDROID) - prefs->SetFilePath( - prefs::kSodaEnUsConfigPath, - install_dir.Append(speech::kSodaLanguagePackDirectoryRelativePath)); -#endif -} - -void RegisterSodaEnUsComponent(ComponentUpdateService* cus, - PrefService* prefs, - base::OnceClosure callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - auto installer = base::MakeRefCounted<ComponentInstaller>( - std::make_unique<SodaEnUsComponentInstallerPolicy>(base::BindRepeating( - [](ComponentUpdateService* cus, PrefService* prefs, - const base::FilePath& install_dir) { - content::GetUIThreadTaskRunner({base::TaskPriority::BEST_EFFORT}) - ->PostTask(FROM_HERE, - base::BindOnce(&UpdateSodaEnUsInstallDirPref, - prefs, install_dir)); - }, - cus, prefs))); - - installer->Register(cus, std::move(callback)); -} - -} // namespace component_updater
diff --git a/chrome/browser/component_updater/soda_en_us_component_installer.h b/chrome/browser/component_updater/soda_en_us_component_installer.h deleted file mode 100644 index a25dce5b..0000000 --- a/chrome/browser/component_updater/soda_en_us_component_installer.h +++ /dev/null
@@ -1,67 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_COMPONENT_UPDATER_SODA_EN_US_COMPONENT_INSTALLER_H_ -#define CHROME_BROWSER_COMPONENT_UPDATER_SODA_EN_US_COMPONENT_INSTALLER_H_ - -#include <string> - -#include "components/component_updater/component_installer.h" -#include "components/prefs/pref_service.h" -#include "components/update_client/update_client.h" - -namespace component_updater { - -// Success callback to be run after the component is downloaded. -using OnSodaEnUsComponentReadyCallback = - base::RepeatingCallback<void(const base::FilePath&)>; - -class SodaEnUsComponentInstallerPolicy : public ComponentInstallerPolicy { - public: - explicit SodaEnUsComponentInstallerPolicy( - OnSodaEnUsComponentReadyCallback callback); - ~SodaEnUsComponentInstallerPolicy() override; - - SodaEnUsComponentInstallerPolicy(const SodaEnUsComponentInstallerPolicy&) = - delete; - SodaEnUsComponentInstallerPolicy& operator=( - const SodaEnUsComponentInstallerPolicy&) = delete; - - static const std::string GetExtensionId(); - static void UpdateSodaEnUsComponentOnDemand(); - - private: - FRIEND_TEST_ALL_PREFIXES(SodaEnUsComponentInstallerTest, - ComponentReady_CallsLambda); - - // The following methods override ComponentInstallerPolicy. - bool SupportsGroupPolicyEnabledComponentUpdates() const override; - bool RequiresNetworkEncryption() const override; - update_client::CrxInstaller::Result OnCustomInstall( - const base::DictionaryValue& manifest, - const base::FilePath& install_dir) override; - void OnCustomUninstall() override; - bool VerifyInstallation(const base::DictionaryValue& manifest, - const base::FilePath& install_dir) const override; - void ComponentReady(const base::Version& version, - const base::FilePath& install_dir, - std::unique_ptr<base::DictionaryValue> manifest) override; - base::FilePath GetRelativeInstallDir() const override; - void GetHash(std::vector<uint8_t>* hash) const override; - std::string GetName() const override; - update_client::InstallerAttributes GetInstallerAttributes() const override; - std::vector<std::string> GetMimeTypes() const override; - - OnSodaEnUsComponentReadyCallback on_component_ready_callback_; -}; - -// Call once during startup to make the component update service aware of -// the File Type Policies component. -void RegisterSodaEnUsComponent(ComponentUpdateService* cus, - PrefService* prefs, - base::OnceClosure callback); - -} // namespace component_updater - -#endif // CHROME_BROWSER_COMPONENT_UPDATER_SODA_EN_US_COMPONENT_INSTALLER_H_
diff --git a/chrome/browser/component_updater/soda_en_us_component_installer_unittest.cc b/chrome/browser/component_updater/soda_en_us_component_installer_unittest.cc deleted file mode 100644 index 204b0a83..0000000 --- a/chrome/browser/component_updater/soda_en_us_component_installer_unittest.cc +++ /dev/null
@@ -1,38 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/component_updater/soda_en_us_component_installer.h" - -#include "base/files/file_path.h" -#include "base/test/bind.h" -#include "base/version.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace component_updater { - -class SodaEnUsComponentInstallerTest : public ::testing::Test { - public: - SodaEnUsComponentInstallerTest() - : fake_install_dir_(FILE_PATH_LITERAL("base/install/dir/")), - fake_version_("0.0.1") {} - - protected: - base::FilePath fake_install_dir_; - base::Version fake_version_; -}; - -TEST_F(SodaEnUsComponentInstallerTest, ComponentReady_CallsLambda) { - base::FilePath given_path; - OnSodaEnUsComponentReadyCallback lambda = base::BindLambdaForTesting( - [&](const base::FilePath& path) { given_path = path; }); - - SodaEnUsComponentInstallerPolicy policy(std::move(lambda)); - - policy.ComponentReady(fake_version_, fake_install_dir_, - std::make_unique<base::DictionaryValue>()); - - ASSERT_EQ(fake_install_dir_, given_path); -} - -} // namespace component_updater
diff --git a/chrome/browser/component_updater/soda_ja_jp_component_installer.cc b/chrome/browser/component_updater/soda_ja_jp_component_installer.cc deleted file mode 100644 index 2c2a13c..0000000 --- a/chrome/browser/component_updater/soda_ja_jp_component_installer.cc +++ /dev/null
@@ -1,154 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/component_updater/soda_ja_jp_component_installer.h" - -#include "base/bind.h" -#include "base/files/file_util.h" -#include "build/build_config.h" -#include "chrome/browser/browser_process.h" -#include "chrome/browser/component_updater/soda_component_installer.h" -#include "chrome/common/pref_names.h" -#include "components/component_updater/component_updater_service.h" -#include "components/crx_file/id_util.h" -#include "components/soda/constants.h" -#include "components/update_client/update_client_errors.h" -#include "content/public/browser/browser_task_traits.h" -#include "content/public/browser/browser_thread.h" -#include "crypto/sha2.h" -#include "media/base/media_switches.h" - -using content::BrowserThread; - -namespace component_updater { - -namespace { - -// The SHA256 of the SubjectPublicKeyInfo used to sign the component. -// The component id is: onhpjgkfgajmkkeniaoflicgokpaebfa -constexpr uint8_t kSodaJaJpPublicKeySHA256[32] = { - 0xed, 0x7f, 0x96, 0xa5, 0x60, 0x9c, 0xaa, 0x4d, 0x80, 0xe5, 0xb8, - 0x26, 0xea, 0xf0, 0x41, 0x50, 0x09, 0x52, 0xa4, 0xb3, 0x1e, 0x6a, - 0x8e, 0x24, 0x99, 0xde, 0x51, 0x14, 0xc4, 0x3c, 0xfa, 0x48}; - -static_assert(base::size(kSodaJaJpPublicKeySHA256) == crypto::kSHA256Length, - "Wrong hash length"); - -constexpr char kSodaJaJpManifestName[] = "SODA ja-JP Models"; - -} // namespace - -SodaJaJpComponentInstallerPolicy::SodaJaJpComponentInstallerPolicy( - OnSodaJaJpComponentReadyCallback callback) - : on_component_ready_callback_(callback) {} - -SodaJaJpComponentInstallerPolicy::~SodaJaJpComponentInstallerPolicy() = default; - -const std::string SodaJaJpComponentInstallerPolicy::GetExtensionId() { - return crx_file::id_util::GenerateIdFromHash( - kSodaJaJpPublicKeySHA256, sizeof(kSodaJaJpPublicKeySHA256)); -} - -void SodaJaJpComponentInstallerPolicy::UpdateSodaJaJpComponentOnDemand() { - const std::string crx_id = - component_updater::SodaJaJpComponentInstallerPolicy::GetExtensionId(); - g_browser_process->component_updater()->GetOnDemandUpdater().OnDemandUpdate( - crx_id, component_updater::OnDemandUpdater::Priority::FOREGROUND, - base::BindOnce([](update_client::Error error) { - if (error != update_client::Error::NONE && - error != update_client::Error::UPDATE_IN_PROGRESS) - LOG(ERROR) << "On demand update of the SODA ja-JP component failed " - "with error: " - << static_cast<int>(error); - })); -} - -bool SodaJaJpComponentInstallerPolicy::VerifyInstallation( - const base::DictionaryValue& manifest, - const base::FilePath& install_dir) const { - return base::PathExists( - install_dir.Append(speech::kSodaLanguagePackDirectoryRelativePath)); -} - -bool SodaJaJpComponentInstallerPolicy:: - SupportsGroupPolicyEnabledComponentUpdates() const { - return true; -} - -bool SodaJaJpComponentInstallerPolicy::RequiresNetworkEncryption() const { - return true; -} - -update_client::CrxInstaller::Result -SodaJaJpComponentInstallerPolicy::OnCustomInstall( - const base::DictionaryValue& manifest, - const base::FilePath& install_dir) { - return SodaComponentInstallerPolicy::SetComponentDirectoryPermission( - install_dir); -} - -void SodaJaJpComponentInstallerPolicy::OnCustomUninstall() {} - -void SodaJaJpComponentInstallerPolicy::ComponentReady( - const base::Version& version, - const base::FilePath& install_dir, - std::unique_ptr<base::DictionaryValue> manifest) { - VLOG(1) << "Component ready, version " << version.GetString() << " in " - << install_dir.value(); - - on_component_ready_callback_.Run(install_dir); -} - -base::FilePath SodaJaJpComponentInstallerPolicy::GetRelativeInstallDir() const { - return base::FilePath(speech::kSodaJaJpInstallationRelativePath); -} - -void SodaJaJpComponentInstallerPolicy::GetHash( - std::vector<uint8_t>* hash) const { - hash->assign(kSodaJaJpPublicKeySHA256, - kSodaJaJpPublicKeySHA256 + base::size(kSodaJaJpPublicKeySHA256)); -} - -std::string SodaJaJpComponentInstallerPolicy::GetName() const { - return kSodaJaJpManifestName; -} - -update_client::InstallerAttributes -SodaJaJpComponentInstallerPolicy::GetInstallerAttributes() const { - return update_client::InstallerAttributes(); -} - -std::vector<std::string> SodaJaJpComponentInstallerPolicy::GetMimeTypes() - const { - return std::vector<std::string>(); -} - -void UpdateSodaJaJpInstallDirPref(PrefService* prefs, - const base::FilePath& install_dir) { -#if !defined(OS_ANDROID) - prefs->SetFilePath( - prefs::kSodaJaJpConfigPath, - install_dir.Append(speech::kSodaLanguagePackDirectoryRelativePath)); -#endif -} - -void RegisterSodaJaJpComponent(ComponentUpdateService* cus, - PrefService* prefs, - base::OnceClosure callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - auto installer = base::MakeRefCounted<ComponentInstaller>( - std::make_unique<SodaJaJpComponentInstallerPolicy>(base::BindRepeating( - [](ComponentUpdateService* cus, PrefService* prefs, - const base::FilePath& install_dir) { - content::GetUIThreadTaskRunner({base::TaskPriority::BEST_EFFORT}) - ->PostTask(FROM_HERE, - base::BindOnce(&UpdateSodaJaJpInstallDirPref, - prefs, install_dir)); - }, - cus, prefs))); - - installer->Register(cus, std::move(callback)); -} - -} // namespace component_updater
diff --git a/chrome/browser/component_updater/soda_ja_jp_component_installer.h b/chrome/browser/component_updater/soda_ja_jp_component_installer.h deleted file mode 100644 index df42190b..0000000 --- a/chrome/browser/component_updater/soda_ja_jp_component_installer.h +++ /dev/null
@@ -1,67 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_COMPONENT_UPDATER_SODA_JA_JP_COMPONENT_INSTALLER_H_ -#define CHROME_BROWSER_COMPONENT_UPDATER_SODA_JA_JP_COMPONENT_INSTALLER_H_ - -#include <string> - -#include "components/component_updater/component_installer.h" -#include "components/prefs/pref_service.h" -#include "components/update_client/update_client.h" - -namespace component_updater { - -// Success callback to be run after the component is downloaded. -using OnSodaJaJpComponentReadyCallback = - base::RepeatingCallback<void(const base::FilePath&)>; - -class SodaJaJpComponentInstallerPolicy : public ComponentInstallerPolicy { - public: - explicit SodaJaJpComponentInstallerPolicy( - OnSodaJaJpComponentReadyCallback callback); - ~SodaJaJpComponentInstallerPolicy() override; - - SodaJaJpComponentInstallerPolicy(const SodaJaJpComponentInstallerPolicy&) = - delete; - SodaJaJpComponentInstallerPolicy& operator=( - const SodaJaJpComponentInstallerPolicy&) = delete; - - static const std::string GetExtensionId(); - static void UpdateSodaJaJpComponentOnDemand(); - - private: - FRIEND_TEST_ALL_PREFIXES(SodaJaJpComponentInstallerTest, - ComponentReady_CallsLambda); - - // The following methods override ComponentInstallerPolicy. - bool SupportsGroupPolicyEnabledComponentUpdates() const override; - bool RequiresNetworkEncryption() const override; - update_client::CrxInstaller::Result OnCustomInstall( - const base::DictionaryValue& manifest, - const base::FilePath& install_dir) override; - void OnCustomUninstall() override; - bool VerifyInstallation(const base::DictionaryValue& manifest, - const base::FilePath& install_dir) const override; - void ComponentReady(const base::Version& version, - const base::FilePath& install_dir, - std::unique_ptr<base::DictionaryValue> manifest) override; - base::FilePath GetRelativeInstallDir() const override; - void GetHash(std::vector<uint8_t>* hash) const override; - std::string GetName() const override; - update_client::InstallerAttributes GetInstallerAttributes() const override; - std::vector<std::string> GetMimeTypes() const override; - - OnSodaJaJpComponentReadyCallback on_component_ready_callback_; -}; - -// Call once during startup to make the component update service aware of -// the File Type Policies component. -void RegisterSodaJaJpComponent(ComponentUpdateService* cus, - PrefService* prefs, - base::OnceClosure callback); - -} // namespace component_updater - -#endif // CHROME_BROWSER_COMPONENT_UPDATER_SODA_JA_JP_COMPONENT_INSTALLER_H_
diff --git a/chrome/browser/component_updater/soda_ja_jp_component_installer_unittest.cc b/chrome/browser/component_updater/soda_ja_jp_component_installer_unittest.cc deleted file mode 100644 index a4d12dc..0000000 --- a/chrome/browser/component_updater/soda_ja_jp_component_installer_unittest.cc +++ /dev/null
@@ -1,38 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/component_updater/soda_ja_jp_component_installer.h" - -#include "base/files/file_path.h" -#include "base/test/bind.h" -#include "base/version.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace component_updater { - -class SodaJaJpComponentInstallerTest : public ::testing::Test { - public: - SodaJaJpComponentInstallerTest() - : fake_install_dir_(FILE_PATH_LITERAL("base/install/dir/")), - fake_version_("0.0.1") {} - - protected: - base::FilePath fake_install_dir_; - base::Version fake_version_; -}; - -TEST_F(SodaJaJpComponentInstallerTest, ComponentReady_CallsLambda) { - base::FilePath given_path; - OnSodaJaJpComponentReadyCallback lambda = base::BindLambdaForTesting( - [&](const base::FilePath& path) { given_path = path; }); - - SodaJaJpComponentInstallerPolicy policy(std::move(lambda)); - - policy.ComponentReady(fake_version_, fake_install_dir_, - std::make_unique<base::DictionaryValue>()); - - ASSERT_EQ(fake_install_dir_, given_path); -} - -} // namespace component_updater
diff --git a/chrome/browser/component_updater/soda_language_pack_component_installer.cc b/chrome/browser/component_updater/soda_language_pack_component_installer.cc new file mode 100644 index 0000000..bd509811 --- /dev/null +++ b/chrome/browser/component_updater/soda_language_pack_component_installer.cc
@@ -0,0 +1,228 @@ +// 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/component_updater/soda_language_pack_component_installer.h" + +#include <iterator> +#include <memory> +#include <string> +#include <vector> + +#include "base/bind.h" +#include "base/callback.h" +#include "base/containers/flat_set.h" +#include "base/files/file_path.h" +#include "base/files/file_util.h" +#include "base/logging.h" +#include "base/notreached.h" +#include "base/strings/stringprintf.h" +#include "base/values.h" +#include "base/version.h" +#include "build/build_config.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/component_updater/soda_component_installer.h" +#include "components/component_updater/component_updater_service.h" +#include "components/crx_file/id_util.h" +#include "components/prefs/pref_service.h" +#include "components/soda/constants.h" +#include "components/update_client/update_client_errors.h" +#include "content/public/browser/browser_task_traits.h" +#include "content/public/browser/browser_thread.h" + +namespace component_updater { + +namespace { + +constexpr char kLanguagePackManifestName[] = "SODA %s Models"; + +} // namespace + +SodaLanguagePackComponentInstallerPolicy:: + SodaLanguagePackComponentInstallerPolicy( + SodaLanguagePackComponentConfig language_config, + OnSodaLanguagePackComponentReadyCallback callback) + : language_config_(language_config), + on_component_ready_callback_(callback) {} + +SodaLanguagePackComponentInstallerPolicy:: + ~SodaLanguagePackComponentInstallerPolicy() = default; + +std::string SodaLanguagePackComponentInstallerPolicy::GetExtensionId( + speech::LanguageCode language_code) { + base::Optional<SodaLanguagePackComponentConfig> config = + SodaLanguagePackComponentInstallerPolicy::GetLanguageComponentConfig( + language_code); + + if (config) { + return crx_file::id_util::GenerateIdFromHash( + config.value().public_key_sha, sizeof(config.value().public_key_sha)); + } + + return std::string(); +} + +base::flat_set<std::string> +SodaLanguagePackComponentInstallerPolicy::GetExtensionIds() { + base::flat_set<std::string> ids; + for (const SodaLanguagePackComponentConfig& config : + kLanguageComponentConfigs) { + ids.insert(crx_file::id_util::GenerateIdFromHash( + config.public_key_sha, sizeof(config.public_key_sha))); + } + + return ids; +} + +void SodaLanguagePackComponentInstallerPolicy:: + UpdateSodaLanguagePackComponentOnDemand( + speech::LanguageCode language_code) { + const std::string crx_id = + SodaLanguagePackComponentInstallerPolicy::GetExtensionId(language_code); + g_browser_process->component_updater()->GetOnDemandUpdater().OnDemandUpdate( + crx_id, OnDemandUpdater::Priority::FOREGROUND, + base::BindOnce([](update_client::Error error) { + if (error != update_client::Error::NONE && + error != update_client::Error::UPDATE_IN_PROGRESS) + LOG(ERROR) + << "On demand update of the SODA language component failed " + "with error: " + << static_cast<int>(error); + })); +} + +base::Optional<SodaLanguagePackComponentConfig> +SodaLanguagePackComponentInstallerPolicy::GetLanguageComponentConfig( + speech::LanguageCode language_code) { + for (const SodaLanguagePackComponentConfig& config : + kLanguageComponentConfigs) { + if (config.language_code == language_code) { + return config; + } + } + + return base::nullopt; +} + +base::Optional<SodaLanguagePackComponentConfig> +SodaLanguagePackComponentInstallerPolicy::GetLanguageComponentConfig( + const std::string& language_name) { + for (const SodaLanguagePackComponentConfig& config : + kLanguageComponentConfigs) { + if (config.language_name == language_name) { + return config; + } + } + + return base::nullopt; +} + +bool SodaLanguagePackComponentInstallerPolicy::VerifyInstallation( + const base::DictionaryValue& manifest, + const base::FilePath& install_dir) const { + return base::PathExists( + install_dir.Append(speech::kSodaLanguagePackDirectoryRelativePath)); +} + +bool SodaLanguagePackComponentInstallerPolicy:: + SupportsGroupPolicyEnabledComponentUpdates() const { + return true; +} + +bool SodaLanguagePackComponentInstallerPolicy::RequiresNetworkEncryption() + const { + return true; +} + +update_client::CrxInstaller::Result +SodaLanguagePackComponentInstallerPolicy::OnCustomInstall( + const base::DictionaryValue& manifest, + const base::FilePath& install_dir) { + return SodaComponentInstallerPolicy::SetComponentDirectoryPermission( + install_dir); +} + +void SodaLanguagePackComponentInstallerPolicy::OnCustomUninstall() {} + +void SodaLanguagePackComponentInstallerPolicy::ComponentReady( + const base::Version& version, + const base::FilePath& install_dir, + std::unique_ptr<base::DictionaryValue> manifest) { + VLOG(1) << "Component ready, version " << version.GetString() << " in " + << install_dir.value(); + + on_component_ready_callback_.Run(install_dir); +} + +base::FilePath SodaLanguagePackComponentInstallerPolicy::GetRelativeInstallDir() + const { + return base::FilePath(speech::kSodaLanguagePacksRelativePath) + .AppendASCII(language_config_.language_name); +} + +void SodaLanguagePackComponentInstallerPolicy::GetHash( + std::vector<uint8_t>* hash) const { + hash->assign(std::begin(language_config_.public_key_sha), + std::end(language_config_.public_key_sha)); +} + +std::string SodaLanguagePackComponentInstallerPolicy::GetName() const { + return base::StringPrintf(kLanguagePackManifestName, + language_config_.language_name); +} + +update_client::InstallerAttributes +SodaLanguagePackComponentInstallerPolicy::GetInstallerAttributes() const { + return update_client::InstallerAttributes(); +} + +std::vector<std::string> +SodaLanguagePackComponentInstallerPolicy::GetMimeTypes() const { + return std::vector<std::string>(); +} + +void UpdateSodaLanguagePackInstallDirPref(speech::LanguageCode language_code, + PrefService* prefs, + const base::FilePath& install_dir) { +#if !defined(OS_ANDROID) + base::Optional<SodaLanguagePackComponentConfig> config = + SodaLanguagePackComponentInstallerPolicy::GetLanguageComponentConfig( + language_code); + if (config) { + prefs->SetFilePath( + config.value().config_path_pref, + install_dir.Append(speech::kSodaLanguagePackDirectoryRelativePath)); + } +#endif +} + +void RegisterSodaLanguagePackComponent( + SodaLanguagePackComponentConfig language_config, + ComponentUpdateService* cus, + PrefService* prefs) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + + auto installer = base::MakeRefCounted<ComponentInstaller>( + std::make_unique<SodaLanguagePackComponentInstallerPolicy>( + language_config, + base::BindRepeating( + [](SodaLanguagePackComponentConfig language_config, + ComponentUpdateService* cus, PrefService* prefs, + const base::FilePath& install_dir) { + content::GetUIThreadTaskRunner( + {base::TaskPriority::BEST_EFFORT}) + ->PostTask( + FROM_HERE, + base::BindOnce(&UpdateSodaLanguagePackInstallDirPref, + language_config.language_code, prefs, + install_dir)); + }, + language_config, cus, prefs))); + + installer->Register( + cus, base::BindOnce(&SodaLanguagePackComponentInstallerPolicy:: + UpdateSodaLanguagePackComponentOnDemand, + language_config.language_code)); +} + +} // namespace component_updater
diff --git a/chrome/browser/component_updater/soda_language_pack_component_installer.h b/chrome/browser/component_updater/soda_language_pack_component_installer.h new file mode 100644 index 0000000..9e396b0c --- /dev/null +++ b/chrome/browser/component_updater/soda_language_pack_component_installer.h
@@ -0,0 +1,142 @@ +// 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_COMPONENT_UPDATER_SODA_LANGUAGE_PACK_COMPONENT_INSTALLER_H_ +#define CHROME_BROWSER_COMPONENT_UPDATER_SODA_LANGUAGE_PACK_COMPONENT_INSTALLER_H_ + +#include <string> +#include <vector> + +#include "base/callback.h" +#include "base/containers/flat_set.h" +#include "base/optional.h" +#include "chrome/common/pref_names.h" +#include "components/component_updater/component_installer.h" +#include "components/soda/constants.h" +#include "components/update_client/update_client.h" + +class PrefService; + +namespace base { +class FilePath; +} // namespace base + +namespace component_updater { + +// Success callback to be run after the component is downloaded. +using OnSodaLanguagePackComponentReadyCallback = + base::RepeatingCallback<void(const base::FilePath&)>; + +// Describes all metadata needed to dynamically install ChromeOS components. +struct SodaLanguagePackComponentConfig { + // The language code of the language pack component. + speech::LanguageCode language_code = speech::LanguageCode::kNone; + + // The language name for the language component (e.g. "en-US"). + const char* language_name = nullptr; + + // The name of the config file path pref for the language pack. + const char* config_path_pref = nullptr; + + // The SHA256 of the SubjectPublicKeyInfo used to sign the language pack + // component. + const uint8_t public_key_sha[32] = {}; +}; + +constexpr SodaLanguagePackComponentConfig kLanguageComponentConfigs[] = { + {speech::LanguageCode::kEnUs, + "en-US", + prefs::kSodaEnUsConfigPath, + {0xe4, 0x64, 0x1c, 0xc2, 0x8c, 0x2a, 0x97, 0xa7, 0x16, 0x61, 0xbd, + 0xa9, 0xbe, 0xe6, 0x93, 0x56, 0xf5, 0x05, 0x33, 0x9b, 0x8b, 0x0b, + 0x02, 0xe2, 0x6b, 0x7e, 0x6c, 0x40, 0xa1, 0xd2, 0x7e, 0x18}}, + {speech::LanguageCode::kDeDe, + "de-DE", + prefs::kSodaDeDeConfigPath, + {0x92, 0xb6, 0xd8, 0xa3, 0x0b, 0x09, 0xce, 0x21, 0xdb, 0x68, 0x48, + 0x15, 0xcb, 0x49, 0xd7, 0xc6, 0x21, 0x3f, 0xe5, 0x96, 0x10, 0x97, + 0x6e, 0x0f, 0x08, 0x31, 0xec, 0xe4, 0x7f, 0xed, 0xef, 0x3d}}, + {speech::LanguageCode::kEsEs, + "es-ES", + prefs::kSodaEsEsConfigPath, + {0x9a, 0x22, 0xac, 0x04, 0x97, 0xc1, 0x70, 0x61, 0x24, 0x1f, 0x49, + 0x18, 0x72, 0xd8, 0x67, 0x31, 0x72, 0x7a, 0xf9, 0x77, 0x04, 0xf0, + 0x17, 0xb5, 0xfe, 0x88, 0xac, 0x60, 0xdd, 0x8a, 0x67, 0xdd}}, + {speech::LanguageCode::kFrFr, + "fr-FR", + prefs::kSodaFrFrConfigPath, + {0x6e, 0x0e, 0x2b, 0xd3, 0xc6, 0xe5, 0x1b, 0x5e, 0xfa, 0xef, 0x42, + 0x3f, 0x57, 0xb9, 0x2b, 0x13, 0x56, 0x47, 0x58, 0xdb, 0x76, 0x89, + 0x71, 0xeb, 0x1f, 0xed, 0x48, 0x6c, 0xac, 0xd5, 0x31, 0xa0}}, + {speech::LanguageCode::kItIt, + "it-IT", + prefs::kSodaItItConfigPath, + {0x97, 0x45, 0xd7, 0xbc, 0xf0, 0x61, 0x24, 0xb3, 0x0e, 0x13, 0xf2, + 0x97, 0xaa, 0xd5, 0x9e, 0x78, 0xa5, 0x81, 0x35, 0x75, 0xb5, 0x9d, + 0x3b, 0xbb, 0xde, 0xba, 0x0e, 0xf7, 0xf0, 0x48, 0x56, 0x01}}, + {speech::LanguageCode::kJaJp, + "ja-JP", + prefs::kSodaJaJpConfigPath, + {0xed, 0x7f, 0x96, 0xa5, 0x60, 0x9c, 0xaa, 0x4d, 0x80, 0xe5, 0xb8, + 0x26, 0xea, 0xf0, 0x41, 0x50, 0x09, 0x52, 0xa4, 0xb3, 0x1e, 0x6a, + 0x8e, 0x24, 0x99, 0xde, 0x51, 0x14, 0xc4, 0x3c, 0xfa, 0x48}}, +}; + +class SodaLanguagePackComponentInstallerPolicy + : public ComponentInstallerPolicy { + public: + SodaLanguagePackComponentInstallerPolicy( + SodaLanguagePackComponentConfig language_config, + OnSodaLanguagePackComponentReadyCallback callback); + ~SodaLanguagePackComponentInstallerPolicy() override; + + SodaLanguagePackComponentInstallerPolicy( + const SodaLanguagePackComponentInstallerPolicy&) = delete; + SodaLanguagePackComponentInstallerPolicy& operator=( + const SodaLanguagePackComponentInstallerPolicy&) = delete; + + static std::string GetExtensionId(speech::LanguageCode language_code); + static base::flat_set<std::string> GetExtensionIds(); + static void UpdateSodaLanguagePackComponentOnDemand( + speech::LanguageCode language_code); + static base::Optional<SodaLanguagePackComponentConfig> + GetLanguageComponentConfig(speech::LanguageCode language_code); + static base::Optional<SodaLanguagePackComponentConfig> + GetLanguageComponentConfig(const std::string& language_name); + + private: + FRIEND_TEST_ALL_PREFIXES(SodaLanguagePackComponentInstallerTest, + ComponentReady_CallsLambda); + + // The following methods override ComponentInstallerPolicy. + bool SupportsGroupPolicyEnabledComponentUpdates() const override; + bool RequiresNetworkEncryption() const override; + update_client::CrxInstaller::Result OnCustomInstall( + const base::DictionaryValue& manifest, + const base::FilePath& install_dir) override; + void OnCustomUninstall() override; + bool VerifyInstallation(const base::DictionaryValue& manifest, + const base::FilePath& install_dir) const override; + void ComponentReady(const base::Version& version, + const base::FilePath& install_dir, + std::unique_ptr<base::DictionaryValue> manifest) override; + base::FilePath GetRelativeInstallDir() const override; + void GetHash(std::vector<uint8_t>* hash) const override; + std::string GetName() const override; + update_client::InstallerAttributes GetInstallerAttributes() const override; + std::vector<std::string> GetMimeTypes() const override; + + SodaLanguagePackComponentConfig language_config_; + + OnSodaLanguagePackComponentReadyCallback on_component_ready_callback_; +}; + +void RegisterSodaLanguagePackComponent( + SodaLanguagePackComponentConfig language_config, + ComponentUpdateService* cus, + PrefService* prefs); + +} // namespace component_updater + +#endif // CHROME_BROWSER_COMPONENT_UPDATER_SODA_LANGUAGE_PACK_COMPONENT_INSTALLER_H_
diff --git a/chrome/browser/component_updater/soda_language_pack_component_installer_unittest.cc b/chrome/browser/component_updater/soda_language_pack_component_installer_unittest.cc new file mode 100644 index 0000000..d46b401 --- /dev/null +++ b/chrome/browser/component_updater/soda_language_pack_component_installer_unittest.cc
@@ -0,0 +1,41 @@ +// 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/component_updater/soda_language_pack_component_installer.h" + +#include "base/files/file_path.h" +#include "base/test/bind.h" +#include "base/values.h" +#include "base/version.h" +#include "components/soda/constants.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace component_updater { + +class SodaLanguagePackComponentInstallerTest : public ::testing::Test { + public: + SodaLanguagePackComponentInstallerTest() + : fake_install_dir_(FILE_PATH_LITERAL("base/install/dir/")), + fake_version_("0.0.1") {} + + protected: + base::FilePath fake_install_dir_; + base::Version fake_version_; +}; + +TEST_F(SodaLanguagePackComponentInstallerTest, ComponentReady_CallsLambda) { + base::FilePath given_path; + OnSodaLanguagePackComponentReadyCallback lambda = base::BindLambdaForTesting( + [&](const base::FilePath& path) { given_path = path; }); + + SodaLanguagePackComponentConfig config {speech::LanguageCode::kEnUs}; + SodaLanguagePackComponentInstallerPolicy policy(config, std::move(lambda)); + + policy.ComponentReady(fake_version_, fake_install_dir_, + std::make_unique<base::DictionaryValue>()); + + ASSERT_EQ(fake_install_dir_, given_path); +} + +} // namespace component_updater
diff --git a/chrome/browser/consent_auditor/DIR_METADATA b/chrome/browser/consent_auditor/DIR_METADATA index 56d470a..ff46333 100644 --- a/chrome/browser/consent_auditor/DIR_METADATA +++ b/chrome/browser/consent_auditor/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Privacy" +monorail: { + component: "Privacy" }
diff --git a/chrome/browser/content_settings/DIR_METADATA b/chrome/browser/content_settings/DIR_METADATA index fd501120..e783e5b 100644 --- a/chrome/browser/content_settings/DIR_METADATA +++ b/chrome/browser/content_settings/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Permissions>Model" +monorail: { + component: "Internals>Permissions>Model" }
diff --git a/chrome/browser/contextmenu/DIR_METADATA b/chrome/browser/contextmenu/DIR_METADATA index d4a7ddd4..f61076e 100644 --- a/chrome/browser/contextmenu/DIR_METADATA +++ b/chrome/browser/contextmenu/DIR_METADATA
@@ -1,5 +1,5 @@ -monorail: { - component: "UI>Browser>Mobile>ContextMenu" +monorail: { + component: "UI>Browser>Mobile>ContextMenu" } -team_email: "clank-modularization@chromium.org" -os: ANDROID +team_email: "clank-modularization@chromium.org" +os: ANDROID
diff --git a/chrome/browser/continuous_search/DIR_METADATA b/chrome/browser/continuous_search/DIR_METADATA index ade0a25..bbd68e2 100644 --- a/chrome/browser/continuous_search/DIR_METADATA +++ b/chrome/browser/continuous_search/DIR_METADATA
@@ -1,5 +1,5 @@ -monorail: { - component: "TODO" +monorail: { + component: "TODO" } -team_email: "TODO" -os: ANDROID +team_email: "TODO" +os: ANDROID
diff --git a/chrome/browser/crash_upload_list/DIR_METADATA b/chrome/browser/crash_upload_list/DIR_METADATA index 1c12060e..bc8a585e 100644 --- a/chrome/browser/crash_upload_list/DIR_METADATA +++ b/chrome/browser/crash_upload_list/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>CrashReporting" +monorail: { + component: "Internals>CrashReporting" }
diff --git a/chrome/browser/crash_upload_list/crash_upload_list.cc b/chrome/browser/crash_upload_list/crash_upload_list.cc index d63e3508..b149a46 100644 --- a/chrome/browser/crash_upload_list/crash_upload_list.cc +++ b/chrome/browser/crash_upload_list/crash_upload_list.cc
@@ -39,7 +39,7 @@ // ChromeOS uses crash_sender as its uploader even when Crashpad is enabled, // which isn't compatible with CrashUploadListCrashpad. crash_sender continues // to log uploads in CrashUploadList::kReporterLogFilename. -#if !BUILDFLAG(IS_CHROMEOS_ASH) +#if !(BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)) if (crash_reporter::IsCrashpadEnabled()) { return new CrashUploadListCrashpad(); }
diff --git a/chrome/browser/custom_handlers/DIR_METADATA b/chrome/browser/custom_handlers/DIR_METADATA index 32b215c..c8b762a 100644 --- a/chrome/browser/custom_handlers/DIR_METADATA +++ b/chrome/browser/custom_handlers/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>WebAppInstalls" +monorail: { + component: "UI>Browser>WebAppInstalls" } -team_email: "pwa-dev@chromium.org" +team_email: "pwa-dev@chromium.org"
diff --git a/chrome/browser/data_reduction_proxy/DIR_METADATA b/chrome/browser/data_reduction_proxy/DIR_METADATA index b0650c8..ce14958 100644 --- a/chrome/browser/data_reduction_proxy/DIR_METADATA +++ b/chrome/browser/data_reduction_proxy/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Network>DataProxy" +monorail: { + component: "Internals>Network>DataProxy" }
diff --git a/chrome/browser/data_saver/DIR_METADATA b/chrome/browser/data_saver/DIR_METADATA index b0650c8..ce14958 100644 --- a/chrome/browser/data_saver/DIR_METADATA +++ b/chrome/browser/data_saver/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Network>DataProxy" +monorail: { + component: "Internals>Network>DataProxy" }
diff --git a/chrome/browser/data_use_measurement/DIR_METADATA b/chrome/browser/data_use_measurement/DIR_METADATA index 5e09cff..3c8435d 100644 --- a/chrome/browser/data_use_measurement/DIR_METADATA +++ b/chrome/browser/data_use_measurement/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Network>DataUse" +monorail: { + component: "Internals>Network>DataUse" }
diff --git a/chrome/browser/device/DIR_METADATA b/chrome/browser/device/DIR_METADATA index 3ee08c0..b8226e2 100644 --- a/chrome/browser/device/DIR_METADATA +++ b/chrome/browser/device/DIR_METADATA
@@ -1,5 +1,5 @@ -monorail: { - component: "Internals>Flags" +monorail: { + component: "Internals>Flags" } -team_email: "clank-app-team@google.com" -os: ANDROID +team_email: "clank-app-team@google.com" +os: ANDROID
diff --git a/chrome/browser/device_identity/DIR_METADATA b/chrome/browser/device_identity/DIR_METADATA index 4c21d96..f37723a 100644 --- a/chrome/browser/device_identity/DIR_METADATA +++ b/chrome/browser/device_identity/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise" +monorail: { + component: "Enterprise" }
diff --git a/chrome/browser/devtools/DIR_METADATA b/chrome/browser/devtools/DIR_METADATA index c5dbaab6..7015339 100644 --- a/chrome/browser/devtools/DIR_METADATA +++ b/chrome/browser/devtools/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>DevTools" +monorail: { + component: "Platform>DevTools" }
diff --git a/chrome/browser/devtools/device/adb/adb_client_socket.cc b/chrome/browser/devtools/device/adb/adb_client_socket.cc index 723c91ea..826b699d 100644 --- a/chrome/browser/devtools/device/adb/adb_client_socket.cc +++ b/chrome/browser/devtools/device/adb/adb_client_socket.cc
@@ -126,8 +126,9 @@ return; } bool is_void = current_query_ < queries_.size() - 1; - SendCommand(query, is_void, - base::Bind(&AdbQuerySocket::OnResponse, base::Unretained(this))); + SendCommand( + query, is_void, + base::BindOnce(&AdbQuerySocket::OnResponse, base::Unretained(this))); } void OnResponse(int result, const std::string& response) {
diff --git a/chrome/browser/devtools/device/adb/adb_client_socket.h b/chrome/browser/devtools/device/adb/adb_client_socket.h index f162580a..e53919dba 100644 --- a/chrome/browser/devtools/device/adb/adb_client_socket.h +++ b/chrome/browser/devtools/device/adb/adb_client_socket.h
@@ -14,10 +14,9 @@ class AdbClientSocket { public: - typedef base::OnceCallback<void(int, const std::string&)> CommandCallback; - typedef base::OnceCallback<void(int result, - std::unique_ptr<net::StreamSocket>)> - SocketCallback; + using CommandCallback = base::OnceCallback<void(int, const std::string&)>; + using SocketCallback = + base::OnceCallback<void(int result, std::unique_ptr<net::StreamSocket>)>; static void AdbQuery(int port, const std::string& query,
diff --git a/chrome/browser/devtools/device/adb/adb_device_provider.cc b/chrome/browser/devtools/device/adb/adb_device_provider.cc index fc21b61..5488234 100644 --- a/chrome/browser/devtools/device/adb/adb_device_provider.cc +++ b/chrome/browser/devtools/device/adb/adb_device_provider.cc
@@ -53,9 +53,9 @@ } void AdbDeviceProvider::QueryDeviceInfo(const std::string& serial, - const DeviceInfoCallback& callback) { + DeviceInfoCallback callback) { AndroidDeviceManager::QueryDeviceInfo(base::BindOnce(&RunCommand, serial), - callback); + std::move(callback)); } void AdbDeviceProvider::OpenSocket(const std::string& serial,
diff --git a/chrome/browser/devtools/device/adb/adb_device_provider.h b/chrome/browser/devtools/device/adb/adb_device_provider.h index 91c05fcf..287f87e 100644 --- a/chrome/browser/devtools/device/adb/adb_device_provider.h +++ b/chrome/browser/devtools/device/adb/adb_device_provider.h
@@ -12,7 +12,7 @@ void QueryDevices(SerialsCallback callback) override; void QueryDeviceInfo(const std::string& serial, - const DeviceInfoCallback& callback) override; + DeviceInfoCallback callback) override; void OpenSocket(const std::string& serial, const std::string& socket_name,
diff --git a/chrome/browser/devtools/device/adb/mock_adb_server.h b/chrome/browser/devtools/device/adb/mock_adb_server.h index d18c5a27..5491cf6 100644 --- a/chrome/browser/devtools/device/adb/mock_adb_server.h +++ b/chrome/browser/devtools/device/adb/mock_adb_server.h
@@ -31,7 +31,7 @@ virtual void Close() {} virtual ~Delegate() {} }; - using Callback = base::Callback<void(const std::string&)>; + MockAndroidConnection(Delegate* delegate, const std::string& serial, const std::string& command);
diff --git a/chrome/browser/devtools/device/android_device_info_query.cc b/chrome/browser/devtools/device/android_device_info_query.cc index 3454e192..9b6f190 100644 --- a/chrome/browser/devtools/device/android_device_info_query.cc +++ b/chrome/browser/devtools/device/android_device_info_query.cc
@@ -270,18 +270,18 @@ return AndroidDeviceManager::BrowserInfo::kTypeOther; } -void ReceivedResponse(const AndroidDeviceManager::DeviceInfoCallback& callback, +void ReceivedResponse(AndroidDeviceManager::DeviceInfoCallback callback, int result, const std::string& response) { AndroidDeviceManager::DeviceInfo device_info; if (result < 0) { - callback.Run(device_info); + std::move(callback).Run(device_info); return; } std::vector<std::string> outputs = base::SplitStringUsingSubstr( response, kSeparator, base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); if (outputs.size() != 5) { - callback.Run(device_info); + std::move(callback).Run(device_info); return; } device_info.connected = true; @@ -329,7 +329,7 @@ std::sort(device_info.browser_info.begin(), device_info.browser_info.end(), &BrowserCompare); - callback.Run(device_info); + std::move(callback).Run(device_info); } } // namespace @@ -357,7 +357,8 @@ // static void AndroidDeviceManager::QueryDeviceInfo(RunCommandCallback command_callback, - const DeviceInfoCallback& callback) { + DeviceInfoCallback callback) { std::move(command_callback) - .Run(kAllCommands, base::BindOnce(&ReceivedResponse, callback)); + .Run(kAllCommands, + base::BindOnce(&ReceivedResponse, std::move(callback))); }
diff --git a/chrome/browser/devtools/device/android_device_manager.cc b/chrome/browser/devtools/device/android_device_manager.cc index bb05498..afc1f83 100644 --- a/chrome/browser/devtools/device/android_device_manager.cc +++ b/chrome/browser/devtools/device/android_device_manager.cc
@@ -66,10 +66,10 @@ static void PostDeviceInfoCallback( scoped_refptr<base::SingleThreadTaskRunner> response_task_runner, - const AndroidDeviceManager::DeviceInfoCallback& callback, + AndroidDeviceManager::DeviceInfoCallback callback, const AndroidDeviceManager::DeviceInfo& device_info) { - response_task_runner->PostTask(FROM_HERE, - base::BindOnce(callback, device_info)); + response_task_runner->PostTask( + FROM_HERE, base::BindOnce(std::move(callback), device_info)); } static void PostCommandCallback( @@ -329,43 +329,44 @@ class DevicesRequest : public base::RefCountedThreadSafe<DevicesRequest> { public: - typedef AndroidDeviceManager::DeviceInfo DeviceInfo; - typedef AndroidDeviceManager::DeviceProvider DeviceProvider; - typedef AndroidDeviceManager::DeviceProviders DeviceProviders; - typedef AndroidDeviceManager::DeviceDescriptors DeviceDescriptors; - typedef base::Callback<void(std::unique_ptr<DeviceDescriptors>)> - DescriptorsCallback; + using DeviceInfo = AndroidDeviceManager::DeviceInfo; + using DeviceProvider = AndroidDeviceManager::DeviceProvider; + using DeviceProviders = AndroidDeviceManager::DeviceProviders; + using DeviceDescriptors = AndroidDeviceManager::DeviceDescriptors; + using DescriptorsCallback = + base::OnceCallback<void(std::unique_ptr<DeviceDescriptors>)>; static void Start( scoped_refptr<base::SingleThreadTaskRunner> device_task_runner, const DeviceProviders& providers, - const DescriptorsCallback& callback) { + DescriptorsCallback callback) { // Don't keep counted reference on calling thread; scoped_refptr<DevicesRequest> request = - base::WrapRefCounted(new DevicesRequest(callback)); - for (auto it = providers.begin(); it != providers.end(); ++it) { + base::WrapRefCounted(new DevicesRequest(std::move(callback))); + for (const auto& provider : providers) { device_task_runner->PostTask( FROM_HERE, - base::BindOnce( - &DeviceProvider::QueryDevices, *it, - base::BindOnce(&DevicesRequest::ProcessSerials, request, *it))); + base::BindOnce(&DeviceProvider::QueryDevices, provider, + base::BindOnce(&DevicesRequest::ProcessSerials, + request, provider))); } device_task_runner->ReleaseSoon(FROM_HERE, std::move(request)); } private: - explicit DevicesRequest(const DescriptorsCallback& callback) + explicit DevicesRequest(DescriptorsCallback callback) : response_task_runner_(base::ThreadTaskRunnerHandle::Get()), - callback_(callback), + callback_(std::move(callback)), descriptors_(new DeviceDescriptors()) {} friend class base::RefCountedThreadSafe<DevicesRequest>; ~DevicesRequest() { response_task_runner_->PostTask( - FROM_HERE, base::BindOnce(callback_, std::move(descriptors_))); + FROM_HERE, + base::BindOnce(std::move(callback_), std::move(descriptors_))); } - typedef std::vector<std::string> Serials; + using Serials = std::vector<std::string>; void ProcessSerials(scoped_refptr<DeviceProvider> provider, Serials serials) { for (auto it = serials.begin(); it != serials.end(); ++it) { @@ -380,10 +381,9 @@ std::unique_ptr<DeviceDescriptors> descriptors_; }; -void OnCountDevices(const base::Callback<void(int)>& callback, - int device_count) { +void OnCountDevices(base::OnceCallback<void(int)> callback, int device_count) { content::GetUIThreadTaskRunner({})->PostTask( - FROM_HERE, base::BindOnce(callback, device_count)); + FROM_HERE, base::BindOnce(std::move(callback), device_count)); } } // namespace @@ -445,13 +445,13 @@ } void AndroidDeviceManager::Device::QueryDeviceInfo( - const DeviceInfoCallback& callback) { + DeviceInfoCallback callback) { task_runner_->PostTask( FROM_HERE, - base::BindOnce( - &DeviceProvider::QueryDeviceInfo, provider_, serial_, - base::Bind(&PostDeviceInfoCallback, - base::ThreadTaskRunnerHandle::Get(), callback))); + base::BindOnce(&DeviceProvider::QueryDeviceInfo, provider_, serial_, + base::BindOnce(&PostDeviceInfoCallback, + base::ThreadTaskRunnerHandle::Get(), + std::move(callback)))); } void AndroidDeviceManager::Device::OpenSocket(const std::string& socket_name, @@ -562,18 +562,20 @@ providers_ = providers; } -void AndroidDeviceManager::QueryDevices(const DevicesCallback& callback) { - DevicesRequest::Start(handler_thread_->message_loop(), providers_, - base::Bind(&AndroidDeviceManager::UpdateDevices, - weak_factory_.GetWeakPtr(), callback)); +void AndroidDeviceManager::QueryDevices(DevicesCallback callback) { + DevicesRequest::Start( + handler_thread_->message_loop(), providers_, + base::BindOnce(&AndroidDeviceManager::UpdateDevices, + weak_factory_.GetWeakPtr(), std::move(callback))); } void AndroidDeviceManager::CountDevices( - const base::Callback<void(int)>& callback) { + base::OnceCallback<void(int)> callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); handler_thread_->message_loop()->PostTask( - FROM_HERE, base::BindOnce(&UsbDeviceManagerHelper::CountDevices, - base::BindOnce(&OnCountDevices, callback))); + FROM_HERE, + base::BindOnce(&UsbDeviceManagerHelper::CountDevices, + base::BindOnce(&OnCountDevices, std::move(callback)))); } void AndroidDeviceManager::set_usb_device_manager_for_test( @@ -594,7 +596,7 @@ } void AndroidDeviceManager::UpdateDevices( - const DevicesCallback& callback, + DevicesCallback callback, std::unique_ptr<DeviceDescriptors> descriptors) { Devices response; DeviceWeakMap new_devices; @@ -614,5 +616,5 @@ new_devices[it->serial] = device->weak_factory_.GetWeakPtr(); } devices_.swap(new_devices); - callback.Run(response); + std::move(callback).Run(response); }
diff --git a/chrome/browser/devtools/device/android_device_manager.h b/chrome/browser/devtools/device/android_device_manager.h index 120d9419..e0f4f807 100644 --- a/chrome/browser/devtools/device/android_device_manager.h +++ b/chrome/browser/devtools/device/android_device_manager.h
@@ -67,7 +67,7 @@ std::vector<BrowserInfo> browser_info; }; - typedef base::Callback<void(const DeviceInfo&)> DeviceInfoCallback; + using DeviceInfoCallback = base::OnceCallback<void(const DeviceInfo&)>; class Device; class AndroidWebSocket { @@ -113,7 +113,7 @@ class Device final : public base::RefCountedDeleteOnSequence<Device> { public: - void QueryDeviceInfo(const DeviceInfoCallback& callback); + void QueryDeviceInfo(DeviceInfoCallback callback); void OpenSocket(const std::string& socket_name, SocketCallback callback); @@ -152,20 +152,20 @@ DISALLOW_COPY_AND_ASSIGN(Device); }; - typedef std::vector<scoped_refptr<Device> > Devices; - typedef base::Callback<void(const Devices&)> DevicesCallback; + using Devices = std::vector<scoped_refptr<Device>>; + using DevicesCallback = base::OnceCallback<void(const Devices&)>; class DeviceProvider : public base::RefCountedThreadSafe<DeviceProvider> { public: - typedef AndroidDeviceManager::SerialsCallback SerialsCallback; - typedef AndroidDeviceManager::DeviceInfoCallback DeviceInfoCallback; - typedef AndroidDeviceManager::SocketCallback SocketCallback; - typedef AndroidDeviceManager::CommandCallback CommandCallback; + using SerialsCallback = AndroidDeviceManager::SerialsCallback; + using DeviceInfoCallback = AndroidDeviceManager::DeviceInfoCallback; + using SocketCallback = AndroidDeviceManager::SocketCallback; + using CommandCallback = AndroidDeviceManager::CommandCallback; virtual void QueryDevices(SerialsCallback callback) = 0; virtual void QueryDeviceInfo(const std::string& serial, - const DeviceInfoCallback& callback) = 0; + DeviceInfoCallback callback) = 0; virtual void OpenSocket(const std::string& serial, const std::string& socket_name, @@ -198,8 +198,8 @@ void SetDeviceProviders(const DeviceProviders& providers); - void QueryDevices(const DevicesCallback& callback); - void CountDevices(const base::Callback<void(int)>& callback); + void QueryDevices(DevicesCallback callback); + void CountDevices(base::OnceCallback<void(int)> callback); void set_usb_device_manager_for_test( mojo::PendingRemote<device::mojom::UsbDeviceManager> fake_usb_manager); @@ -210,7 +210,7 @@ base::OnceCallback<void(const std::string&, CommandCallback)>; static void QueryDeviceInfo(RunCommandCallback command_callback, - const DeviceInfoCallback& callback); + DeviceInfoCallback callback); struct DeviceDescriptor { DeviceDescriptor(); @@ -241,7 +241,7 @@ AndroidDeviceManager(); - void UpdateDevices(const DevicesCallback& callback, + void UpdateDevices(DevicesCallback callback, std::unique_ptr<DeviceDescriptors> descriptors); typedef std::map<std::string, base::WeakPtr<Device> > DeviceWeakMap;
diff --git a/chrome/browser/devtools/device/android_web_socket.cc b/chrome/browser/devtools/device/android_web_socket.cc index 802104c..681f133 100644 --- a/chrome/browser/devtools/device/android_web_socket.cc +++ b/chrome/browser/devtools/device/android_web_socket.cc
@@ -200,7 +200,7 @@ DCHECK(device_); device_->HttpUpgrade( socket_name, path, net::WebSocketEncoder::kClientExtensions, - base::Bind(&AndroidWebSocket::Connected, weak_factory_.GetWeakPtr())); + base::BindOnce(&AndroidWebSocket::Connected, weak_factory_.GetWeakPtr())); } AndroidDeviceManager::AndroidWebSocket::~AndroidWebSocket() = default;
diff --git a/chrome/browser/devtools/device/cast_device_provider.cc b/chrome/browser/devtools/device/cast_device_provider.cc index 57058a60..680b8e9 100644 --- a/chrome/browser/devtools/device/cast_device_provider.cc +++ b/chrome/browser/devtools/device/cast_device_provider.cc
@@ -167,11 +167,11 @@ } void CastDeviceProvider::QueryDeviceInfo(const std::string& serial, - const DeviceInfoCallback& callback) { + DeviceInfoCallback callback) { auto it_device = device_info_map_.find(serial); if (it_device == device_info_map_.end()) return; - callback.Run(it_device->second); + std::move(callback).Run(it_device->second); } void CastDeviceProvider::OpenSocket(const std::string& serial,
diff --git a/chrome/browser/devtools/device/cast_device_provider.h b/chrome/browser/devtools/device/cast_device_provider.h index 24c670d..50a97e0 100644 --- a/chrome/browser/devtools/device/cast_device_provider.h +++ b/chrome/browser/devtools/device/cast_device_provider.h
@@ -28,7 +28,7 @@ // DeviceProvider implementation: void QueryDevices(SerialsCallback callback) override; void QueryDeviceInfo(const std::string& serial, - const DeviceInfoCallback& callback) override; + DeviceInfoCallback callback) override; void OpenSocket(const std::string& serial, const std::string& socket_name, SocketCallback callback) override;
diff --git a/chrome/browser/devtools/device/cast_device_provider_unittest.cc b/chrome/browser/devtools/device/cast_device_provider_unittest.cc index 88e37b9..98a5e73 100644 --- a/chrome/browser/devtools/device/cast_device_provider_unittest.cc +++ b/chrome/browser/devtools/device/cast_device_provider_unittest.cc
@@ -70,7 +70,7 @@ // Callback should be run, and the queried service should match the expected. device_provider_->QueryDeviceInfo( cast_service.address.host(), - base::Bind(&CompareDeviceInfo, &was_run, expected)); + base::BindOnce(&CompareDeviceInfo, &was_run, expected)); ASSERT_TRUE(was_run); was_run = false; @@ -90,7 +90,7 @@ // Callback should not be run, since this service is not yet discovered. device_provider_->QueryDeviceInfo(other_service.address.host(), - base::Bind(&DummyCallback, &was_run)); + base::BindOnce(&DummyCallback, &was_run)); ASSERT_FALSE(was_run); device_provider_->OnDeviceChanged(cast_service_type, true, other_service); @@ -98,7 +98,7 @@ // Callback should not be run, since non-cast services are not discovered by // this device provider. device_provider_->QueryDeviceInfo(other_service.address.host(), - base::Bind(&DummyCallback, &was_run)); + base::BindOnce(&DummyCallback, &was_run)); ASSERT_FALSE(was_run); // Remove the cast service. @@ -107,6 +107,6 @@ // Callback should not be run, since the cast service has been removed. device_provider_->QueryDeviceInfo(cast_service.address.host(), - base::Bind(&DummyCallback, &was_run)); + base::BindOnce(&DummyCallback, &was_run)); ASSERT_FALSE(was_run); }
diff --git a/chrome/browser/devtools/device/devtools_android_bridge.cc b/chrome/browser/devtools/device/devtools_android_bridge.cc index 5e1a929..c6c9916 100644 --- a/chrome/browser/devtools/device/devtools_android_bridge.cc +++ b/chrome/browser/devtools/device/devtools_android_bridge.cc
@@ -7,6 +7,7 @@ #include <stddef.h> #include <algorithm> #include <map> +#include <memory> #include <set> #include <utility> #include <vector> @@ -155,15 +156,18 @@ port_forwarding_controller_(new PortForwardingController(profile)) { DCHECK_CURRENTLY_ON(BrowserThread::UI); pref_change_registrar_.Init(profile_->GetPrefs()); - pref_change_registrar_.Add(prefs::kDevToolsDiscoverUsbDevicesEnabled, - base::Bind(&DevToolsAndroidBridge::CreateDeviceProviders, - base::Unretained(this))); - pref_change_registrar_.Add(prefs::kDevToolsTCPDiscoveryConfig, - base::Bind(&DevToolsAndroidBridge::CreateDeviceProviders, - base::Unretained(this))); - pref_change_registrar_.Add(prefs::kDevToolsDiscoverTCPTargetsEnabled, - base::Bind(&DevToolsAndroidBridge::CreateDeviceProviders, - base::Unretained(this))); + pref_change_registrar_.Add( + prefs::kDevToolsDiscoverUsbDevicesEnabled, + base::BindRepeating(&DevToolsAndroidBridge::CreateDeviceProviders, + base::Unretained(this))); + pref_change_registrar_.Add( + prefs::kDevToolsTCPDiscoveryConfig, + base::BindRepeating(&DevToolsAndroidBridge::CreateDeviceProviders, + base::Unretained(this))); + pref_change_registrar_.Add( + prefs::kDevToolsDiscoverTCPTargetsEnabled, + base::BindRepeating(&DevToolsAndroidBridge::CreateDeviceProviders, + base::Unretained(this))); base::Value target_discovery(base::Value::Type::LIST); target_discovery.Append(kChromeDiscoveryURL); target_discovery.Append(kNodeDiscoveryURL); @@ -236,9 +240,10 @@ } void DevToolsAndroidBridge::StartDeviceListPolling() { - device_discovery_.reset(new DevToolsDeviceDiscovery(device_manager_.get(), - base::Bind(&DevToolsAndroidBridge::ReceivedDeviceList, - base::Unretained(this)))); + device_discovery_ = std::make_unique<DevToolsDeviceDiscovery>( + device_manager_.get(), + base::BindRepeating(&DevToolsAndroidBridge::ReceivedDeviceList, + base::Unretained(this))); if (!task_scheduler_.is_null()) device_discovery_->SetScheduler(task_scheduler_); } @@ -278,8 +283,8 @@ } void DevToolsAndroidBridge::StartDeviceCountPolling() { - device_count_callback_.Reset( - base::Bind(&DevToolsAndroidBridge::ReceivedDeviceCount, AsWeakPtr())); + device_count_callback_.Reset(base::BindRepeating( + &DevToolsAndroidBridge::ReceivedDeviceCount, AsWeakPtr())); RequestDeviceCount(device_count_callback_.callback()); } @@ -288,13 +293,13 @@ } void DevToolsAndroidBridge::RequestDeviceCount( - const base::Callback<void(int)>& callback) { + base::RepeatingCallback<void(int)> callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); if (device_count_listeners_.empty() || callback.IsCancelled()) return; - device_manager_->CountDevices(callback); + device_manager_->CountDevices(std::move(callback)); } void DevToolsAndroidBridge::ReceivedDeviceCount(int count) { @@ -394,7 +399,7 @@ void DevToolsAndroidBridge::set_tcp_provider_callback_for_test( TCPProviderCallback callback) { - tcp_provider_callback_ = callback; + tcp_provider_callback_ = std::move(callback); CreateDeviceProviders(); }
diff --git a/chrome/browser/devtools/device/devtools_android_bridge.h b/chrome/browser/devtools/device/devtools_android_bridge.h index 8c4f11c..57f297c 100644 --- a/chrome/browser/devtools/device/devtools_android_bridge.h +++ b/chrome/browser/devtools/device/devtools_android_bridge.h
@@ -121,7 +121,6 @@ task_scheduler_ = scheduler; } - using RemotePageCallback = base::Callback<void(scoped_refptr<RemotePage>)>; void OpenRemotePage(scoped_refptr<RemoteBrowser> browser, const std::string& url); @@ -133,7 +132,7 @@ JsonRequestCallback callback); using TCPProviderCallback = - base::Callback<void(scoped_refptr<TCPDeviceProvider>)>; + base::RepeatingCallback<void(scoped_refptr<TCPDeviceProvider>)>; void set_tcp_provider_callback_for_test(TCPProviderCallback callback); void set_usb_device_manager_for_test( mojo::PendingRemote<device::mojom::UsbDeviceManager> fake_usb_manager); @@ -155,7 +154,7 @@ void StartDeviceCountPolling(); void StopDeviceCountPolling(); - void RequestDeviceCount(const base::Callback<void(int)>& callback); + void RequestDeviceCount(base::RepeatingCallback<void(int)> callback); void ReceivedDeviceCount(int count); void CreateDeviceProviders(); @@ -176,7 +175,7 @@ using DeviceCountListeners = std::vector<DeviceCountListener*>; DeviceCountListeners device_count_listeners_; - base::CancelableCallback<void(int)> device_count_callback_; + base::CancelableRepeatingCallback<void(int)> device_count_callback_; base::RepeatingCallback<void(base::OnceClosure)> task_scheduler_; using PortForwardingListeners = std::vector<PortForwardingListener*>;
diff --git a/chrome/browser/devtools/device/devtools_android_bridge_browsertest.cc b/chrome/browser/devtools/device/devtools_android_bridge_browsertest.cc index 69c1cab..30ae2f7a0 100644 --- a/chrome/browser/devtools/device/devtools_android_bridge_browsertest.cc +++ b/chrome/browser/devtools/device/devtools_android_bridge_browsertest.cc
@@ -56,7 +56,7 @@ scoped_refptr<TCPDeviceProvider> provider; int called = 0; bridge->set_tcp_provider_callback_for_test( - base::Bind(assign_from_callback, &provider, &called)); + base::BindRepeating(assign_from_callback, &provider, &called)); EXPECT_LT(0, called); EXPECT_NE(nullptr, provider); @@ -130,7 +130,7 @@ scoped_refptr<TCPDeviceProvider> provider; int called = 0; bridge->set_tcp_provider_callback_for_test( - base::Bind(assign_from_callback, &provider, &called)); + base::BindRepeating(assign_from_callback, &provider, &called)); EXPECT_NE(nullptr, provider);
diff --git a/chrome/browser/devtools/device/devtools_device_discovery.cc b/chrome/browser/devtools/device/devtools_device_discovery.cc index d75808d..fb700c13 100644 --- a/chrome/browser/devtools/device/devtools_device_discovery.cc +++ b/chrome/browser/devtools/device/devtools_device_discovery.cc
@@ -405,7 +405,7 @@ auto request = base::WrapRefCounted(new DiscoveryRequest(std::move(callback))); device_manager->QueryDevices( - base::Bind(&DiscoveryRequest::ReceivedDevices, request)); + base::BindOnce(&DiscoveryRequest::ReceivedDevices, request)); } DevToolsDeviceDiscovery::DiscoveryRequest::DiscoveryRequest( @@ -424,7 +424,7 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); for (const auto& device : devices) { device->QueryDeviceInfo( - base::Bind(&DiscoveryRequest::ReceivedDeviceInfo, this, device)); + base::BindOnce(&DiscoveryRequest::ReceivedDeviceInfo, this, device)); } } @@ -439,7 +439,7 @@ it != remote_device->browsers().end(); ++it) { device->SendJsonRequest( (*it)->socket(), kVersionRequest, - base::Bind(&DiscoveryRequest::ReceivedVersion, this, device, *it)); + base::BindOnce(&DiscoveryRequest::ReceivedVersion, this, device, *it)); } } @@ -452,7 +452,7 @@ device->SendJsonRequest( browser->socket(), kPageListRequest, - base::Bind(&DiscoveryRequest::ReceivedPages, this, device, browser)); + base::BindOnce(&DiscoveryRequest::ReceivedPages, this, device, browser)); if (result < 0) return;
diff --git a/chrome/browser/devtools/device/port_forwarding_controller.cc b/chrome/browser/devtools/device/port_forwarding_controller.cc index 4ee5b2e..43a3574 100644 --- a/chrome/browser/devtools/device/port_forwarding_controller.cc +++ b/chrome/browser/devtools/device/port_forwarding_controller.cc
@@ -398,9 +398,9 @@ content::BrowserThread::UI>; friend class base::DeleteHelper<Connection>; - typedef std::map<int, std::string> ForwardingMap; - typedef base::Callback<void(PortStatus)> CommandCallback; - typedef std::map<int, CommandCallback> CommandCallbackMap; + using ForwardingMap = std::map<int, std::string>; + using CommandCallback = base::OnceCallback<void(PortStatus)>; + using CommandCallbackMap = std::map<int, CommandCallback>; void SerializeChanges(const std::string& method, const ForwardingMap& old_map, @@ -491,9 +491,8 @@ int id = ++command_id_; if (method == kBindMethod) { - pending_responses_[id] = - base::Bind(&Connection::ProcessBindResponse, - base::Unretained(this), port); + pending_responses_[id] = base::BindOnce(&Connection::ProcessBindResponse, + base::Unretained(this), port); } else { auto it = port_status_.find(port); if (it != port_status_.end() && it->second == kStatusError) { @@ -502,9 +501,8 @@ return; } - pending_responses_[id] = - base::Bind(&Connection::ProcessUnbindResponse, - base::Unretained(this), port); + pending_responses_[id] = base::BindOnce(&Connection::ProcessUnbindResponse, + base::Unretained(this), port); } web_socket_->SendFrame(SerializeCommand(id, method, std::move(params))); @@ -521,7 +519,7 @@ if (it == pending_responses_.end()) return false; - it->second.Run(error_code ? kStatusError : kStatusOK); + std::move(it->second).Run(error_code ? kStatusError : kStatusOK); pending_responses_.erase(it); return true; } @@ -592,14 +590,14 @@ std::string destination_host = tokens[0]; device_->OpenSocket(*connection_id, - base::Bind(&SocketTunnel::StartTunnel, profile_, - destination_host, destination_port)); + base::BindOnce(&SocketTunnel::StartTunnel, profile_, + destination_host, destination_port)); } PortForwardingController::PortForwardingController(Profile* profile) : profile_(profile), pref_service_(profile->GetPrefs()) { pref_change_registrar_.Init(pref_service_); - base::Closure callback = base::Bind( + base::RepeatingClosure callback = base::BindRepeating( &PortForwardingController::OnPrefsChange, base::Unretained(this)); pref_change_registrar_.Add(prefs::kDevToolsPortForwardingEnabled, callback); pref_change_registrar_.Add(prefs::kDevToolsPortForwardingConfig, callback);
diff --git a/chrome/browser/devtools/device/tcp_device_provider.cc b/chrome/browser/devtools/device/tcp_device_provider.cc index cefef7b..bb2a0b7 100644 --- a/chrome/browser/devtools/device/tcp_device_provider.cc +++ b/chrome/browser/devtools/device/tcp_device_provider.cc
@@ -120,7 +120,7 @@ } void TCPDeviceProvider::QueryDeviceInfo(const std::string& serial, - const DeviceInfoCallback& callback) { + DeviceInfoCallback callback) { AndroidDeviceManager::DeviceInfo device_info; device_info.model = kDeviceModel; device_info.connected = true; @@ -137,7 +137,7 @@ } base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(callback, device_info)); + FROM_HERE, base::BindOnce(std::move(callback), device_info)); } void TCPDeviceProvider::OpenSocket(const std::string& serial,
diff --git a/chrome/browser/devtools/device/tcp_device_provider.h b/chrome/browser/devtools/device/tcp_device_provider.h index 383fbc73..87b0602 100644 --- a/chrome/browser/devtools/device/tcp_device_provider.h +++ b/chrome/browser/devtools/device/tcp_device_provider.h
@@ -25,7 +25,7 @@ void QueryDevices(SerialsCallback callback) override; void QueryDeviceInfo(const std::string& serial, - const DeviceInfoCallback& callback) override; + DeviceInfoCallback callback) override; void OpenSocket(const std::string& serial, const std::string& socket_name,
diff --git a/chrome/browser/devtools/device/usb/usb_device_provider.cc b/chrome/browser/devtools/device/usb/usb_device_provider.cc index 723eb18..351f059 100644 --- a/chrome/browser/devtools/device/usb/usb_device_provider.cc +++ b/chrome/browser/devtools/device/usb/usb_device_provider.cc
@@ -99,15 +99,15 @@ } void UsbDeviceProvider::QueryDeviceInfo(const std::string& serial, - const DeviceInfoCallback& callback) { + DeviceInfoCallback callback) { auto it = device_map_.find(serial); if (it == device_map_.end() || !it->second->is_connected()) { AndroidDeviceManager::DeviceInfo offline_info; - callback.Run(offline_info); + std::move(callback).Run(offline_info); return; } AndroidDeviceManager::QueryDeviceInfo(base::BindOnce(&RunCommand, it->second), - callback); + std::move(callback)); } void UsbDeviceProvider::OpenSocket(const std::string& serial,
diff --git a/chrome/browser/devtools/device/usb/usb_device_provider.h b/chrome/browser/devtools/device/usb/usb_device_provider.h index 830adc3..7712b06 100644 --- a/chrome/browser/devtools/device/usb/usb_device_provider.h +++ b/chrome/browser/devtools/device/usb/usb_device_provider.h
@@ -26,7 +26,7 @@ void QueryDevices(SerialsCallback callback) override; void QueryDeviceInfo(const std::string& serial, - const DeviceInfoCallback& callback) override; + DeviceInfoCallback callback) override; void OpenSocket(const std::string& serial, const std::string& socket_name,
diff --git a/chrome/browser/devtools/devtools_sanity_browsertest.cc b/chrome/browser/devtools/devtools_sanity_browsertest.cc index 69ea9c7e..8d17457 100644 --- a/chrome/browser/devtools/devtools_sanity_browsertest.cc +++ b/chrome/browser/devtools/devtools_sanity_browsertest.cc
@@ -1864,7 +1864,7 @@ }; // TODO(https://crbug.com/1167158): Flaky on debug builds. -#if defined(NDEBUG) +#if !defined(NDEBUG) #define MAYBE_TestAutoOpenForTabs DISABLED_TestAutoOpenForTabs #else #define MAYBE_TestAutoOpenForTabs TestAutoOpenForTabs
diff --git a/chrome/browser/diagnostics/DIR_METADATA b/chrome/browser/diagnostics/DIR_METADATA index 87a0c4f8..d00c923 100644 --- a/chrome/browser/diagnostics/DIR_METADATA +++ b/chrome/browser/diagnostics/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>PlatformIntegration" +monorail: { + component: "Internals>PlatformIntegration" }
diff --git a/chrome/browser/display_capture/DIR_METADATA b/chrome/browser/display_capture/DIR_METADATA index 29113c5..738fe70 100644 --- a/chrome/browser/display_capture/DIR_METADATA +++ b/chrome/browser/display_capture/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Permissions" +monorail: { + component: "Internals>Permissions" }
diff --git a/chrome/browser/dom_distiller/DIR_METADATA b/chrome/browser/dom_distiller/DIR_METADATA index 9d55bdc2..e1577fe 100644 --- a/chrome/browser/dom_distiller/DIR_METADATA +++ b/chrome/browser/dom_distiller/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>ReaderMode" +monorail: { + component: "UI>Browser>ReaderMode" }
diff --git a/chrome/browser/dom_distiller/tab_utils_android.cc b/chrome/browser/dom_distiller/tab_utils_android.cc index 53b20fc..3e4c8c8 100644 --- a/chrome/browser/dom_distiller/tab_utils_android.cc +++ b/chrome/browser/dom_distiller/tab_utils_android.cc
@@ -14,6 +14,7 @@ #include "components/url_formatter/url_formatter.h" #include "content/public/browser/web_contents.h" #include "content/public/common/content_constants.h" +#include "url/android/gurl_android.h" #include "url/gurl.h" using base::android::JavaParamRef; @@ -51,8 +52,8 @@ ScopedJavaLocalRef<jstring> JNI_DomDistillerTabUtils_GetFormattedUrlFromOriginalDistillerUrl( JNIEnv* env, - const JavaParamRef<jstring>& j_url) { - GURL url(base::android::ConvertJavaStringToUTF8(env, j_url)); + const JavaParamRef<jobject>& j_url) { + auto url = *url::GURLAndroid::ToNativeGURL(env, j_url); if (url.spec().length() > content::kMaxURLDisplayChars) url = url.IsStandard() ? url.GetOrigin() : GURL(url.scheme() + ":");
diff --git a/chrome/browser/domain_reliability/DIR_METADATA b/chrome/browser/domain_reliability/DIR_METADATA index b087793c..f1b0913 100644 --- a/chrome/browser/domain_reliability/DIR_METADATA +++ b/chrome/browser/domain_reliability/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Network>ReportingAndNEL" +monorail: { + component: "Internals>Network>ReportingAndNEL" } -team_email: "net-dev@chromium.org" +team_email: "net-dev@chromium.org"
diff --git a/chrome/browser/downgrade/DIR_METADATA b/chrome/browser/downgrade/DIR_METADATA index 4c21d96..f37723a 100644 --- a/chrome/browser/downgrade/DIR_METADATA +++ b/chrome/browser/downgrade/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise" +monorail: { + component: "Enterprise" }
diff --git a/chrome/browser/download/DIR_METADATA b/chrome/browser/download/DIR_METADATA index 7b50c8db..fc36dcd 100644 --- a/chrome/browser/download/DIR_METADATA +++ b/chrome/browser/download/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Downloads" +monorail: { + component: "UI>Browser>Downloads" }
diff --git a/chrome/browser/download/android/java/res/DIR_METADATA b/chrome/browser/download/android/java/res/DIR_METADATA index b73916d..51631587 100644 --- a/chrome/browser/download/android/java/res/DIR_METADATA +++ b/chrome/browser/download/android/java/res/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>Downloads" +monorail: { + component: "UI>Browser>Downloads" } -os: ANDROID +os: ANDROID
diff --git a/chrome/browser/drive/DIR_METADATA b/chrome/browser/drive/DIR_METADATA index 15b7c27..5345fc2 100644 --- a/chrome/browser/drive/DIR_METADATA +++ b/chrome/browser/drive/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Apps>FileManager" +monorail: { + component: "Platform>Apps>FileManager" }
diff --git a/chrome/browser/engagement/DIR_METADATA b/chrome/browser/engagement/DIR_METADATA index f0a3d39..bd5759d 100644 --- a/chrome/browser/engagement/DIR_METADATA +++ b/chrome/browser/engagement/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Permissions>SiteEngagement" +monorail: { + component: "Internals>Permissions>SiteEngagement" }
diff --git a/chrome/browser/enterprise/DIR_METADATA b/chrome/browser/enterprise/DIR_METADATA index 4c21d96..f37723a 100644 --- a/chrome/browser/enterprise/DIR_METADATA +++ b/chrome/browser/enterprise/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise" +monorail: { + component: "Enterprise" }
diff --git a/chrome/browser/enterprise/reporting/DIR_METADATA b/chrome/browser/enterprise/reporting/DIR_METADATA index 4c21d96..f37723a 100644 --- a/chrome/browser/enterprise/reporting/DIR_METADATA +++ b/chrome/browser/enterprise/reporting/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise" +monorail: { + component: "Enterprise" }
diff --git a/chrome/browser/error_reporting/DIR_METADATA b/chrome/browser/error_reporting/DIR_METADATA index 1c12060e..bc8a585e 100644 --- a/chrome/browser/error_reporting/DIR_METADATA +++ b/chrome/browser/error_reporting/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>CrashReporting" +monorail: { + component: "Internals>CrashReporting" }
diff --git a/chrome/browser/extensions/api/automation/automation_apitest.cc b/chrome/browser/extensions/api/automation/automation_apitest.cc index c0cd4bdb..1746de0 100644 --- a/chrome/browser/extensions/api/automation/automation_apitest.cc +++ b/chrome/browser/extensions/api/automation/automation_apitest.cc
@@ -475,7 +475,7 @@ << message_; } -#if BUILDFLAG(IS_CHROMEOS_ASH) && defined(MEMORY_SANITIZER) +#if defined(OS_CHROMEOS) // TODO(http://crbug.com/1162238): flaky on ChromeOS. #define MAYBE_TextareaAppendPerf DISABLED_TextareaAppendPerf #else
diff --git a/chrome/browser/extensions/api/braille_display_private/braille_display_private_api.cc b/chrome/browser/extensions/api/braille_display_private/braille_display_private_api.cc index 6ebfda56..27f1ef8c 100644 --- a/chrome/browser/extensions/api/braille_display_private/braille_display_private_api.cc +++ b/chrome/browser/extensions/api/braille_display_private/braille_display_private_api.cc
@@ -14,7 +14,7 @@ #include "chrome/browser/profiles/profile_manager.h" #if BUILDFLAG(IS_CHROMEOS_ASH) -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/login/lock/screen_locker.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" #endif
diff --git a/chrome/browser/extensions/api/braille_display_private/braille_display_private_apitest.cc b/chrome/browser/extensions/api/braille_display_private/braille_display_private_apitest.cc index f486df4e..5c104cf 100644 --- a/chrome/browser/extensions/api/braille_display_private/braille_display_private_apitest.cc +++ b/chrome/browser/extensions/api/braille_display_private/braille_display_private_apitest.cc
@@ -7,8 +7,8 @@ #include "base/bind.h" #include "base/containers/circular_deque.h" #include "base/threading/thread_restrictions.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/login/lock/screen_locker.h" #include "chrome/browser/chromeos/login/lock/screen_locker_tester.h" #include "chrome/browser/chromeos/profiles/profile_helper.h"
diff --git a/chrome/browser/extensions/api/font_settings/font_settings_api.cc b/chrome/browser/extensions/api/font_settings/font_settings_api.cc index aaa5b14..c0600a40 100644 --- a/chrome/browser/extensions/api/font_settings/font_settings_api.cc +++ b/chrome/browser/extensions/api/font_settings/font_settings_api.cc
@@ -98,7 +98,7 @@ FontSettingsEventRouter::FontSettingsEventRouter(Profile* profile) : profile_(profile) { - TRACE_EVENT0("browser,startup", "FontSettingsEventRouter::ctor") + TRACE_EVENT0("browser,startup", "FontSettingsEventRouter::ctor"); registrar_.Init(profile_->GetPrefs());
diff --git a/chrome/browser/extensions/api/tabs/tabs_util_chromeos.cc b/chrome/browser/extensions/api/tabs/tabs_util_chromeos.cc index f0b4942..e3c0b04 100644 --- a/chrome/browser/extensions/api/tabs/tabs_util_chromeos.cc +++ b/chrome/browser/extensions/api/tabs/tabs_util_chromeos.cc
@@ -7,7 +7,7 @@ #include "ash/public/cpp/ash_features.h" #include "ash/public/cpp/assistant/assistant_state.h" #include "base/metrics/histogram_macros.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/arc/arc_util.h" #include "chrome/browser/chromeos/arc/session/arc_session_manager.h" #include "chrome/browser/chromeos/assistant/assistant_util.h"
diff --git a/chrome/browser/extensions/blocklist_state_fetcher_unittest.cc b/chrome/browser/extensions/blocklist_state_fetcher_unittest.cc index 5fe34ba..0c00eba 100644 --- a/chrome/browser/extensions/blocklist_state_fetcher_unittest.cc +++ b/chrome/browser/extensions/blocklist_state_fetcher_unittest.cc
@@ -44,7 +44,7 @@ TestBlocklistStateFetcher tester(&fetcher); tester.SetBlocklistVerdict( - "a", ClientCRXListInfoResponse_Verdict_NOT_IN_BLACKLIST); + "a", ClientCRXListInfoResponse_Verdict_NOT_IN_BLOCKLIST); tester.SetBlocklistVerdict("b", ClientCRXListInfoResponse_Verdict_MALWARE); tester.SetBlocklistVerdict( "c", ClientCRXListInfoResponse_Verdict_SECURITY_VULNERABILITY);
diff --git a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc index cf04b335..37aab3d7 100644 --- a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc +++ b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc
@@ -684,10 +684,10 @@ } void ChromeContentBrowserClientExtensionsPart::OverrideWebkitPrefs( - RenderViewHost* rvh, + content::WebContents* web_contents, WebPreferences* web_prefs) { const ExtensionRegistry* registry = - ExtensionRegistry::Get(rvh->GetProcess()->GetBrowserContext()); + ExtensionRegistry::Get(web_contents->GetBrowserContext()); if (!registry) return; @@ -698,11 +698,11 @@ // the correct scheme. Without this check, chrome-guest:// schemes used by // webview tags as well as hosts that happen to match the id of an // installed extension would get the wrong preferences. - const GURL& site_url = rvh->GetSiteInstance()->GetSiteURL(); + const GURL& site_url = + web_contents->GetMainFrame()->GetSiteInstance()->GetSiteURL(); if (!site_url.SchemeIs(kExtensionScheme)) return; - WebContents* web_contents = WebContents::FromRenderViewHost(rvh); ViewType view_type = GetViewType(web_contents); const Extension* extension = registry->enabled_extensions().GetByID(site_url.host());
diff --git a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.h b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.h index 14554c09..3d7eb0452 100644 --- a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.h +++ b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.h
@@ -21,6 +21,7 @@ class RenderFrameHost; class RenderProcessHost; class VpnServiceProxy; +class WebContents; } namespace url { @@ -96,7 +97,7 @@ void RenderProcessWillLaunch(content::RenderProcessHost* host) override; void SiteInstanceGotProcess(content::SiteInstance* site_instance) override; void SiteInstanceDeleting(content::SiteInstance* site_instance) override; - void OverrideWebkitPrefs(content::RenderViewHost* rvh, + void OverrideWebkitPrefs(content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) override; void BrowserURLHandlerCreated(content::BrowserURLHandler* handler) override; void GetAdditionalAllowedSchemesForFileSystem(
diff --git a/chrome/browser/extensions/extension_checkup_unittest.cc b/chrome/browser/extensions/extension_checkup_unittest.cc index 23af569..a2c2072 100644 --- a/chrome/browser/extensions/extension_checkup_unittest.cc +++ b/chrome/browser/extensions/extension_checkup_unittest.cc
@@ -78,7 +78,13 @@ }; // Checkup is not shown if no extensions are installed. -TEST_P(ExtensionCheckupTest, NoInstalledExtensions) { +// Flaky on TSAN: https://crbug.com/1163813 +#if defined(THREAD_SANITIZER) +#define MAYBE_NoInstalledExtensions DISABLED_NoInstalledExtensions +#else +#define MAYBE_NoInstalledExtensions NoInstalledExtensions +#endif +TEST_P(ExtensionCheckupTest, MAYBE_NoInstalledExtensions) { VerifyNonExperimentCheckupDisabled(); EXPECT_FALSE(ShouldShowExperimentCheckup()); }
diff --git a/chrome/browser/extensions/test_blocklist_state_fetcher.cc b/chrome/browser/extensions/test_blocklist_state_fetcher.cc index a6368d9..1e383ac 100644 --- a/chrome/browser/extensions/test_blocklist_state_fetcher.cc +++ b/chrome/browser/extensions/test_blocklist_state_fetcher.cc
@@ -87,7 +87,7 @@ if (base::Contains(verdicts_, id)) response.set_verdict(verdicts_[id]); else - response.set_verdict(ClientCRXListInfoResponse::NOT_IN_BLACKLIST); + response.set_verdict(ClientCRXListInfoResponse::NOT_IN_BLOCKLIST); std::string response_str; response.SerializeToString(&response_str);
diff --git a/chrome/browser/external_protocol/DIR_METADATA b/chrome/browser/external_protocol/DIR_METADATA index e3b2c42..d116dd8 100644 --- a/chrome/browser/external_protocol/DIR_METADATA +++ b/chrome/browser/external_protocol/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>WebAppInstalls" }
diff --git a/chrome/browser/favicon/DIR_METADATA b/chrome/browser/favicon/DIR_METADATA index 004750f5..2b431b9 100644 --- a/chrome/browser/favicon/DIR_METADATA +++ b/chrome/browser/favicon/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>History" }
diff --git a/chrome/browser/feature_engagement/DIR_METADATA b/chrome/browser/feature_engagement/DIR_METADATA index fc33753..feab3f89 100644 --- a/chrome/browser/feature_engagement/DIR_METADATA +++ b/chrome/browser/feature_engagement/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>FeatureEngagement" }
diff --git a/chrome/browser/feedback/DIR_METADATA b/chrome/browser/feedback/DIR_METADATA index 1e3e7fc51..b5697710 100644 --- a/chrome/browser/feedback/DIR_METADATA +++ b/chrome/browser/feedback/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Platform>Apps>Feedback" }
diff --git a/chrome/browser/feedback/android/DIR_METADATA b/chrome/browser/feedback/android/DIR_METADATA index e1f9ab0..04ba9fd 100644 --- a/chrome/browser/feedback/android/DIR_METADATA +++ b/chrome/browser/feedback/android/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "UI>Browser>Mobile" } os: ANDROID
diff --git a/chrome/browser/file_system_access/DIR_METADATA b/chrome/browser/file_system_access/DIR_METADATA index b13eab2..b2811d9 100644 --- a/chrome/browser/file_system_access/DIR_METADATA +++ b/chrome/browser/file_system_access/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Blink>Storage>FileSystem" } team_email: "storage-dev@chromium.org"
diff --git a/chrome/browser/first_run/DIR_METADATA b/chrome/browser/first_run/DIR_METADATA index 5b57e04f..d651623 100644 --- a/chrome/browser/first_run/DIR_METADATA +++ b/chrome/browser/first_run/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>FirstRun" }
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index db159f1b..9121a8b 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -228,6 +228,11 @@ "expiry_milestone": 94 }, { + "name": "assistant-intent-translate-info", + "owners": [ "jds", "chrome-language" ], + "expiry_milestone": 94 + }, + { "name": "audio-player-js-modules", "owners": [ "lucmult", "jboulic", "simmonsjosh" ], "expiry_milestone": 91 @@ -483,6 +488,11 @@ "expiry_milestone": 95 }, { + "name": "cellular-use-external-euicc", + "owners": [ "azeemarshad", "khorimoto", "cros-connectivity@google.com" ], + "expiry_milestone": 95 + }, + { "name": "change-password-affiliation", "owners": [ "vsemeniuk", "vasilii"], "expiry_milestone": 90 @@ -2633,6 +2643,11 @@ "expiry_milestone": -1 }, { + "name": "feed-v2-hearts", + "owners": [ "//chrome/android/feed/OWNERS", "feed@chromium.org" ], + "expiry_milestone": 96 + }, + { "name": "file-handling-api", "owners": [ "huangdarwin", "mgiuca", "cmp" ], "expiry_milestone": 94
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index eb4ccce8..ee7b955 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -2629,6 +2629,13 @@ "Include the current page's URL in the Assistant voice transcription " "intent."; +const char kAssistantIntentTranslateInfoName[] = + "Translate info in Assistant intent"; +const char kAssistantIntentTranslateInfoDescription[] = + "Include page translation details in the Assistant voice transcription " + "intent. This includes the page's URL and its original, current, and " + "default target language."; + const char kAsyncDnsName[] = "Async DNS resolver"; const char kAsyncDnsDescription[] = "Enables the built-in DNS resolver."; @@ -2874,6 +2881,9 @@ "Show content suggestions on the New Tab Page and Start Surface using the " "new Feed Component."; +const char kInterestFeedV2HeartsName[] = "Interest Feed v2 Hearts"; +const char kInterestFeedV2HeartsDescription[] = "Enable hearts on Feedv2."; + const char kInterestFeedV1ClickAndViewActionsConditionalUploadName[] = "Interest Feed V1 clicks/views conditional upload"; const char kInterestFeedV1ClickAndViewActionsConditionalUploadDescription[] = @@ -3819,6 +3829,11 @@ "for the LTE connections rather than letting the modem decide which " "attach APN to use or retrieve it from the network"; +const char kCellularUseExternalEuiccName[] = "Use external Euicc"; +const char kCellularUseExternalEuiccDescription[] = + "When enabled Cellular Setup and Settings UI will use the first available " + "external Euicc."; + const char kConnectivityDiagnosticsWebUiName[] = "Connectivity Diagnostics WebUI"; const char kConnectivityDiagnosticsWebUiDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 8a27746a..b9e13c70 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -1532,6 +1532,9 @@ extern const char kAssistantIntentPageUrlName[]; extern const char kAssistantIntentPageUrlDescription[]; +extern const char kAssistantIntentTranslateInfoName[]; +extern const char kAssistantIntentTranslateInfoDescription[]; + extern const char kAsyncDnsName[]; extern const char kAsyncDnsDescription[]; @@ -1672,6 +1675,9 @@ extern const char kInterestFeedV2Name[]; extern const char kInterestFeedV2Description[]; +extern const char kInterestFeedV2HeartsName[]; +extern const char kInterestFeedV2HeartsDescription[]; + extern const char kInterestFeedV1ClickAndViewActionsConditionalUploadName[]; extern const char kInterestFeedV1ClickAndViewActionsConditionalUploadDescription[]; @@ -2205,6 +2211,9 @@ extern const char kCellularUseAttachApnName[]; extern const char kCellularUseAttachApnDescription[]; +extern const char kCellularUseExternalEuiccName[]; +extern const char kCellularUseExternalEuiccDescription[]; + extern const char kConnectivityDiagnosticsWebUiName[]; extern const char kConnectivityDiagnosticsWebUiDescription[];
diff --git a/chrome/browser/flags/DIR_METADATA b/chrome/browser/flags/DIR_METADATA index 8bd9907b..1bfac8b 100644 --- a/chrome/browser/flags/DIR_METADATA +++ b/chrome/browser/flags/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Internals>Flags" } team_email: "clank-modularization@chromium.org"
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc index d0dda089..2851476 100644 --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -133,6 +133,7 @@ &kAndroidPartnerCustomizationPhenotype, &kAndroidSearchEngineChoiceNotification, &kAssistantIntentPageUrl, + &kAssistantIntentTranslateInfo, &kBentoOffline, &kCastDeviceFilter, &kCloseTabSuggestions, @@ -184,7 +185,6 @@ &kEphemeralTabUsingBottomSheet, &kExploreSites, &kFocusOmniboxInIncognitoTabIntents, - &kGPayAppDynamicUpdate, &kHandleMediaIntents, &kHomepagePromoCard, &kHorizontalTabSwitcherAndroid, @@ -351,6 +351,9 @@ const base::Feature kAssistantIntentPageUrl{"AssistantIntentPageUrl", base::FEATURE_DISABLED_BY_DEFAULT}; +const base::Feature kAssistantIntentTranslateInfo{ + "AssistantIntentTranslateInfo", base::FEATURE_DISABLED_BY_DEFAULT}; + const base::Feature kBackgroundTaskComponentUpdate{ "BackgroundTaskComponentUpdate", base::FEATURE_DISABLED_BY_DEFAULT}; @@ -510,9 +513,6 @@ const base::Feature kExploreSites{"ExploreSites", base::FEATURE_DISABLED_BY_DEFAULT}; -const base::Feature kGPayAppDynamicUpdate{"GPayAppDynamicUpdate", - base::FEATURE_DISABLED_BY_DEFAULT}; - const base::Feature kHandleMediaIntents{"HandleMediaIntents", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h index 5abbf64..4b24905 100644 --- a/chrome/browser/flags/android/chrome_feature_list.h +++ b/chrome/browser/flags/android/chrome_feature_list.h
@@ -23,6 +23,7 @@ extern const base::Feature kAndroidPartnerCustomizationPhenotype; extern const base::Feature kAndroidSearchEngineChoiceNotification; extern const base::Feature kAssistantIntentPageUrl; +extern const base::Feature kAssistantIntentTranslateInfo; extern const base::Feature kBackgroundTaskComponentUpdate; extern const base::Feature kBentoOffline; extern const base::Feature kCloseTabSuggestions; @@ -79,7 +80,6 @@ extern const base::Feature kEphemeralTabUsingBottomSheet; extern const base::Feature kExploreSites; extern const base::Feature kFocusOmniboxInIncognitoTabIntents; -extern const base::Feature kGPayAppDynamicUpdate; extern const base::Feature kHandleMediaIntents; extern const base::Feature kHomepagePromoCard; extern const base::Feature kHorizontalTabSwitcherAndroid;
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java index 0406c31..2571c7a 100644 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -220,6 +220,7 @@ public static final String ANDROID_SEARCH_ENGINE_CHOICE_NOTIFICATION = "AndroidSearchEngineChoiceNotification"; public static final String ASSISTANT_INTENT_PAGE_URL = "AssistantIntentPageUrl"; + public static final String ASSISTANT_INTENT_TRANSLATE_INFO = "AssistantIntentTranslateInfo"; public static final String AUTOFILL_ASSISTANT = "AutofillAssistant"; public static final String AUTOFILL_ASSISTANT_CHROME_ENTRY = "AutofillAssistantChromeEntry"; public static final String AUTOFILL_ASSISTANT_DIRECT_ACTIONS = "AutofillAssistantDirectActions"; @@ -318,7 +319,6 @@ public static final String FILLING_PASSWORDS_FROM_ANY_ORIGIN = "FillingPasswordsFromAnyOrigin"; public static final String FOCUS_OMNIBOX_IN_INCOGNITO_TAB_INTENTS = "FocusOmniboxInIncognitoTabIntents"; - public static final String GPAY_APP_DYNAMIC_UPDATE = "GPayAppDynamicUpdate"; public static final String GRANT_NOTIFICATIONS_TO_DSE = "GrantNotificationsToDSE"; public static final String HANDLE_MEDIA_INTENTS = "HandleMediaIntents"; public static final String HIDE_FROM_API_3_TRANSITIONS_FROM_HISTORY =
diff --git a/chrome/browser/font_access/DIR_METADATA b/chrome/browser/font_access/DIR_METADATA index 91dc198..77e8c1c9 100644 --- a/chrome/browser/font_access/DIR_METADATA +++ b/chrome/browser/font_access/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Blink>Storage>FontAccess" } team_email: "storage-dev@chromium.org"
diff --git a/chrome/browser/fullscreen/android/DIR_METADATA b/chrome/browser/fullscreen/android/DIR_METADATA index f6cf9e6..c51c729 100644 --- a/chrome/browser/fullscreen/android/DIR_METADATA +++ b/chrome/browser/fullscreen/android/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>Mobile" }
diff --git a/chrome/browser/games/DIR_METADATA b/chrome/browser/games/DIR_METADATA index 5f7bb80..2ad75cf 100644 --- a/chrome/browser/games/DIR_METADATA +++ b/chrome/browser/games/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>Joy" }
diff --git a/chrome/browser/gcm/DIR_METADATA b/chrome/browser/gcm/DIR_METADATA index 7e680b3..777cdb6 100644 --- a/chrome/browser/gcm/DIR_METADATA +++ b/chrome/browser/gcm/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Services>CloudMessaging" } team_email: "platform-capabilities@chromium.org"
diff --git a/chrome/browser/generic_sensor/DIR_METADATA b/chrome/browser/generic_sensor/DIR_METADATA index 61f39dd..fd9a348 100644 --- a/chrome/browser/generic_sensor/DIR_METADATA +++ b/chrome/browser/generic_sensor/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Blink>Sensor" } team_email: "device-dev@chromium.org"
diff --git a/chrome/browser/geolocation/DIR_METADATA b/chrome/browser/geolocation/DIR_METADATA index 036a838..738fe70 100644 --- a/chrome/browser/geolocation/DIR_METADATA +++ b/chrome/browser/geolocation/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>Permissions" }
diff --git a/chrome/browser/google/DIR_METADATA b/chrome/browser/google/DIR_METADATA index e9a8339..02b7f5b 100644 --- a/chrome/browser/google/DIR_METADATA +++ b/chrome/browser/google/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Internals" } team_email: "chromium-dev@chromium.org"
diff --git a/chrome/browser/guest_view/DIR_METADATA b/chrome/browser/guest_view/DIR_METADATA index d76932b..df25159e 100644 --- a/chrome/browser/guest_view/DIR_METADATA +++ b/chrome/browser/guest_view/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Platform>Apps>BrowserTag" }
diff --git a/chrome/browser/hang_monitor/DIR_METADATA b/chrome/browser/hang_monitor/DIR_METADATA index 39d777d..bc8a585e 100644 --- a/chrome/browser/hang_monitor/DIR_METADATA +++ b/chrome/browser/hang_monitor/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>CrashReporting" }
diff --git a/chrome/browser/heavy_ad_intervention/DIR_METADATA b/chrome/browser/heavy_ad_intervention/DIR_METADATA index 8fdc2b8..04cdbc4 100644 --- a/chrome/browser/heavy_ad_intervention/DIR_METADATA +++ b/chrome/browser/heavy_ad_intervention/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>AdFilter" }
diff --git a/chrome/browser/hid/DIR_METADATA b/chrome/browser/hid/DIR_METADATA index f45806f..549ba169e 100644 --- a/chrome/browser/hid/DIR_METADATA +++ b/chrome/browser/hid/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Blink>HID" } team_email: "device-dev@chromium.org"
diff --git a/chrome/browser/history/DIR_METADATA b/chrome/browser/history/DIR_METADATA index 004750f5..2b431b9 100644 --- a/chrome/browser/history/DIR_METADATA +++ b/chrome/browser/history/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>History" }
diff --git a/chrome/browser/image_decoder/DIR_METADATA b/chrome/browser/image_decoder/DIR_METADATA index f3cdbcd..d182185 100644 --- a/chrome/browser/image_decoder/DIR_METADATA +++ b/chrome/browser/image_decoder/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser" }
diff --git a/chrome/browser/image_descriptions/DIR_METADATA b/chrome/browser/image_descriptions/DIR_METADATA index 2fe74c6..5f99e2b 100644 --- a/chrome/browser/image_descriptions/DIR_METADATA +++ b/chrome/browser/image_descriptions/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "UI>Accessibility" } team_email: "chrome-a11y-core@google.com"
diff --git a/chrome/browser/image_editor/DIR_METADATA b/chrome/browser/image_editor/DIR_METADATA index 3b888c0..221823e82 100644 --- a/chrome/browser/image_editor/DIR_METADATA +++ b/chrome/browser/image_editor/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>Sharing" }
diff --git a/chrome/browser/importer/DIR_METADATA b/chrome/browser/importer/DIR_METADATA index 38e4d221..4be07047 100644 --- a/chrome/browser/importer/DIR_METADATA +++ b/chrome/browser/importer/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>Import" }
diff --git a/chrome/browser/incognito/interstitial/DIR_METADATA b/chrome/browser/incognito/interstitial/DIR_METADATA index 9fa491d..bdcd52f4 100644 --- a/chrome/browser/incognito/interstitial/DIR_METADATA +++ b/chrome/browser/incognito/interstitial/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Privacy>Incognito" } team_email: "chrome-privacy-core@google.com"
diff --git a/chrome/browser/infobars/DIR_METADATA b/chrome/browser/infobars/DIR_METADATA index 2817430..3db035e 100644 --- a/chrome/browser/infobars/DIR_METADATA +++ b/chrome/browser/infobars/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>Infobars" }
diff --git a/chrome/browser/install_verification/DIR_METADATA b/chrome/browser/install_verification/DIR_METADATA index 0dfd84d..d00c923 100644 --- a/chrome/browser/install_verification/DIR_METADATA +++ b/chrome/browser/install_verification/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>PlatformIntegration" }
diff --git a/chrome/browser/installable/DIR_METADATA b/chrome/browser/installable/DIR_METADATA index 8fba31f..c8b762a 100644 --- a/chrome/browser/installable/DIR_METADATA +++ b/chrome/browser/installable/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "UI>Browser>WebAppInstalls" } team_email: "pwa-dev@chromium.org"
diff --git a/chrome/browser/installable/OWNERS b/chrome/browser/installable/OWNERS index def6133f..c9e849c 100644 --- a/chrome/browser/installable/OWNERS +++ b/chrome/browser/installable/OWNERS
@@ -1,2 +1,5 @@ benwells@chromium.org +cmp@chromium.org +dmurph@chromium.org dominickn@chromium.org +msw@chromium.org
diff --git a/chrome/browser/installable/digital_asset_links/DIR_METADATA b/chrome/browser/installable/digital_asset_links/DIR_METADATA index 594628e..39e8f8a 100644 --- a/chrome/browser/installable/digital_asset_links/DIR_METADATA +++ b/chrome/browser/installable/digital_asset_links/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>Mobile>CustomTabs" }
diff --git a/chrome/browser/interstitials/DIR_METADATA b/chrome/browser/interstitials/DIR_METADATA index 35c6d9d3..8c7ba12d 100644 --- a/chrome/browser/interstitials/DIR_METADATA +++ b/chrome/browser/interstitials/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "UI>Browser>Interstitials" } team_email: "security-enamel@chromium.org"
diff --git a/chrome/browser/interstitials/enterprise_util.cc b/chrome/browser/interstitials/enterprise_util.cc index c8fb7af..798a17b3 100644 --- a/chrome/browser/interstitials/enterprise_util.cc +++ b/chrome/browser/interstitials/enterprise_util.cc
@@ -76,7 +76,7 @@ case safe_browsing::SB_THREAT_TYPE_SAFE: case safe_browsing::SB_THREAT_TYPE_URL_BINARY_MALWARE: case safe_browsing::SB_THREAT_TYPE_EXTENSION: - case safe_browsing::SB_THREAT_TYPE_BLACKLISTED_RESOURCE: + case safe_browsing::SB_THREAT_TYPE_BLOCKLISTED_RESOURCE: case safe_browsing::SB_THREAT_TYPE_API_ABUSE: case safe_browsing::SB_THREAT_TYPE_SUBRESOURCE_FILTER: case safe_browsing::SB_THREAT_TYPE_CSD_WHITELIST:
diff --git a/chrome/browser/invalidation/DIR_METADATA b/chrome/browser/invalidation/DIR_METADATA index 369e305..9b9d0ac 100644 --- a/chrome/browser/invalidation/DIR_METADATA +++ b/chrome/browser/invalidation/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Services>Invalidation" }
diff --git a/chrome/browser/language/DIR_METADATA b/chrome/browser/language/DIR_METADATA index 7f7fc2c..8d13695 100644 --- a/chrome/browser/language/DIR_METADATA +++ b/chrome/browser/language/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>Language" }
diff --git a/chrome/browser/lifetime/DIR_METADATA b/chrome/browser/lifetime/DIR_METADATA index b0e159f..4692e66 100644 --- a/chrome/browser/lifetime/DIR_METADATA +++ b/chrome/browser/lifetime/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>TaskScheduler" }
diff --git a/chrome/browser/lite_video/DIR_METADATA b/chrome/browser/lite_video/DIR_METADATA index 6ecb8f6..3c8435d 100644 --- a/chrome/browser/lite_video/DIR_METADATA +++ b/chrome/browser/lite_video/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>Network>DataUse" }
diff --git a/chrome/browser/loader/DIR_METADATA b/chrome/browser/loader/DIR_METADATA index 859b3c5f..a830984f5 100644 --- a/chrome/browser/loader/DIR_METADATA +++ b/chrome/browser/loader/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>Services>Network" }
diff --git a/chrome/browser/local_discovery/DIR_METADATA b/chrome/browser/local_discovery/DIR_METADATA index 88353976..67273c4 100644 --- a/chrome/browser/local_discovery/DIR_METADATA +++ b/chrome/browser/local_discovery/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Services>CloudPrint" }
diff --git a/chrome/browser/login_detection/DIR_METADATA b/chrome/browser/login_detection/DIR_METADATA index 6ecb8f6..3c8435d 100644 --- a/chrome/browser/login_detection/DIR_METADATA +++ b/chrome/browser/login_detection/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>Network>DataUse" }
diff --git a/chrome/browser/long_screenshots/DIR_METADATA b/chrome/browser/long_screenshots/DIR_METADATA index 3b888c0..221823e82 100644 --- a/chrome/browser/long_screenshots/DIR_METADATA +++ b/chrome/browser/long_screenshots/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>Sharing" }
diff --git a/chrome/browser/lookalikes/DIR_METADATA b/chrome/browser/lookalikes/DIR_METADATA index ad552a7..23f55c72 100644 --- a/chrome/browser/lookalikes/DIR_METADATA +++ b/chrome/browser/lookalikes/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>LookalikeChecks" }
diff --git a/chrome/browser/mac/DIR_METADATA b/chrome/browser/mac/DIR_METADATA index f3cdbcd..d182185 100644 --- a/chrome/browser/mac/DIR_METADATA +++ b/chrome/browser/mac/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser" }
diff --git a/chrome/browser/media/DIR_METADATA b/chrome/browser/media/DIR_METADATA index 791e8dcb..a293b78 100644 --- a/chrome/browser/media/DIR_METADATA +++ b/chrome/browser/media/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Blink>Media" }
diff --git a/chrome/browser/media/OWNERS b/chrome/browser/media/OWNERS index c6a389d..dd6645c 100644 --- a/chrome/browser/media/OWNERS +++ b/chrome/browser/media/OWNERS
@@ -7,11 +7,9 @@ per-file cast_*=mfoltz@chromium.org # For Media Engagement -per-file media_engagement*=beccahughes@chromium.org per-file media_engagement*=mlamouri@chromium.org # For Unified Autoplay -per-file unified_autoplay*=beccahughes@chromium.org per-file unified_autoplay*=mlamouri@chromium.org # For IPC security review
diff --git a/chrome/browser/media/android/router/DIR_METADATA b/chrome/browser/media/android/router/DIR_METADATA index 171c8ed1..a64b97e 100644 --- a/chrome/browser/media/android/router/DIR_METADATA +++ b/chrome/browser/media/android/router/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Internals>Cast" } team_email: "media-dev@chromium.org"
diff --git a/chrome/browser/media/feeds/DIR_METADATA b/chrome/browser/media/feeds/DIR_METADATA index b1625fa4..35743d7 100644 --- a/chrome/browser/media/feeds/DIR_METADATA +++ b/chrome/browser/media/feeds/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Internals>Media>Feeds" } team_email: "media-dev@chromium.org"
diff --git a/chrome/browser/media/feeds/OWNERS b/chrome/browser/media/feeds/OWNERS index 8e11d70d..1fbd2229 100644 --- a/chrome/browser/media/feeds/OWNERS +++ b/chrome/browser/media/feeds/OWNERS
@@ -1,5 +1,3 @@ -beccahughes@chromium.org -sgbowen@google.com steimel@chromium.org per-file *.mojom=set noparent
diff --git a/chrome/browser/media/history/DIR_METADATA b/chrome/browser/media/history/DIR_METADATA index eaebef5..4c45f17b5 100644 --- a/chrome/browser/media/history/DIR_METADATA +++ b/chrome/browser/media/history/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Internals>Media>History" } team_email: "media-dev@chromium.org"
diff --git a/chrome/browser/media/history/OWNERS b/chrome/browser/media/history/OWNERS index 730fe37..5ef7085 100644 --- a/chrome/browser/media/history/OWNERS +++ b/chrome/browser/media/history/OWNERS
@@ -1,5 +1,4 @@ evliu@google.com -beccahughes@chromium.org steimel@chromium.org per-file *.mojom=set noparent
diff --git a/chrome/browser/media/router/DIR_METADATA b/chrome/browser/media/router/DIR_METADATA index 0055f63e1..b8f0b78 100644 --- a/chrome/browser/media/router/DIR_METADATA +++ b/chrome/browser/media/router/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>Cast" }
diff --git a/chrome/browser/media/unified_autoplay_browsertest.cc b/chrome/browser/media/unified_autoplay_browsertest.cc index d56f183..e5854e1 100644 --- a/chrome/browser/media/unified_autoplay_browsertest.cc +++ b/chrome/browser/media/unified_autoplay_browsertest.cc
@@ -41,9 +41,9 @@ ~ChromeContentBrowserClientOverrideWebAppScope() override = default; void OverrideWebkitPrefs( - content::RenderViewHost* rvh, + content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) override { - ChromeContentBrowserClient::OverrideWebkitPrefs(rvh, web_prefs); + ChromeContentBrowserClient::OverrideWebkitPrefs(web_contents, web_prefs); web_prefs->web_app_scope = web_app_scope_; }
diff --git a/chrome/browser/media/webrtc/DIR_METADATA b/chrome/browser/media/webrtc/DIR_METADATA index d32cba0..1306287 100644 --- a/chrome/browser/media/webrtc/DIR_METADATA +++ b/chrome/browser/media/webrtc/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Blink>WebRTC" }
diff --git a/chrome/browser/media_galleries/DIR_METADATA b/chrome/browser/media_galleries/DIR_METADATA index 87162e22..8d63e3d 100644 --- a/chrome/browser/media_galleries/DIR_METADATA +++ b/chrome/browser/media_galleries/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Platform>Extensions>API" } team_email: "extensions-reviews@chromium.org"
diff --git a/chrome/browser/media_galleries/fileapi/DIR_METADATA b/chrome/browser/media_galleries/fileapi/DIR_METADATA index 308e577..49909cd 100644 --- a/chrome/browser/media_galleries/fileapi/DIR_METADATA +++ b/chrome/browser/media_galleries/fileapi/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Platform>Extensions>API" }
diff --git a/chrome/browser/memory/DIR_METADATA b/chrome/browser/memory/DIR_METADATA index 397b23c2..1d61c0c 100644 --- a/chrome/browser/memory/DIR_METADATA +++ b/chrome/browser/memory/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Blink>MemoryAllocator" } team_email: "catan-team@chromium.org"
diff --git a/chrome/browser/metrics/DIR_METADATA b/chrome/browser/metrics/DIR_METADATA index 1a29b79b..876e1056 100644 --- a/chrome/browser/metrics/DIR_METADATA +++ b/chrome/browser/metrics/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Internals>Metrics" } team_email: "chromium-dev@chromium.org"
diff --git a/chrome/browser/metrics/chromeos_metrics_provider.cc b/chrome/browser/metrics/chromeos_metrics_provider.cc index 54022dd..da25cf9 100644 --- a/chrome/browser/metrics/chromeos_metrics_provider.cc +++ b/chrome/browser/metrics/chromeos_metrics_provider.cc
@@ -22,9 +22,9 @@ #include "base/task/post_task.h" #include "base/task/task_traits.h" #include "base/task/thread_pool.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process_platform_part.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/arc/arc_optin_uma.h" #include "chrome/browser/chromeos/login/users/chrome_user_manager_util.h" #include "chrome/browser/chromeos/multidevice_setup/multidevice_setup_client_factory.h"
diff --git a/chrome/browser/metrics/metrics_service_user_demographics_browsertest.cc b/chrome/browser/metrics/metrics_service_user_demographics_browsertest.cc index 24a2879..df9a0d85 100644 --- a/chrome/browser/metrics/metrics_service_user_demographics_browsertest.cc +++ b/chrome/browser/metrics/metrics_service_user_demographics_browsertest.cc
@@ -97,16 +97,8 @@ // Keep this test in sync with testUMADemographicsReportingWithFeatureEnabled // and testUMADemographicsReportingWithFeatureDisabled in // ios/chrome/browser/metrics/demographics_egtest.mm. -// TODO(1102747): Crashes on android asan. -#if defined(OS_ANDROID) && defined(ADDRESS_SANITIZER) -#define MAYBE_AddSyncedUserBirthYearAndGenderToProtoData \ - DISABLED_AddSyncedUserBirthYearAndGenderToProtoData -#else -#define MAYBE_AddSyncedUserBirthYearAndGenderToProtoData \ - AddSyncedUserBirthYearAndGenderToProtoData -#endif IN_PROC_BROWSER_TEST_P(MetricsServiceUserDemographicsBrowserTest, - MAYBE_AddSyncedUserBirthYearAndGenderToProtoData) { + AddSyncedUserBirthYearAndGenderToProtoData) { test::DemographicsTestParams param = GetParam(); base::HistogramTester histogram;
diff --git a/chrome/browser/metrics/perf/metric_provider.cc b/chrome/browser/metrics/perf/metric_provider.cc index 3d6a84b..f04435b 100644 --- a/chrome/browser/metrics/perf/metric_provider.cc +++ b/chrome/browser/metrics/perf/metric_provider.cc
@@ -230,10 +230,10 @@ int user_profile_count = 0; for (Profile* profile : profiles) { - // The Default profile on Chrome OS is used when the user has not logged in - // and this profile always disables sync. We skip this profile and look at - // sync settings of user profiles. - if (chromeos::ProfileHelper::IsSigninProfile(profile)) + // The Default profile, lock screen app profile and lock screen profile are + // all not regular user profiles on Chrome OS. They always disable sync and + // we would skip them. + if (!chromeos::ProfileHelper::IsRegularProfile(profile)) continue; auto app_sync_state = AppSyncStateForUserProfile(profile); if (app_sync_state != RecordAttemptStatus::kAppSyncEnabled)
diff --git a/chrome/browser/metrics/perf/metric_provider_unittest.cc b/chrome/browser/metrics/perf/metric_provider_unittest.cc index 80688d7..d2d8a544 100644 --- a/chrome/browser/metrics/perf/metric_provider_unittest.cc +++ b/chrome/browser/metrics/perf/metric_provider_unittest.cc
@@ -312,6 +312,11 @@ // this. The Default profile is skipped when getting the sync settings from // user profile(s). testing_profile_manager_->CreateTestingProfile(chrome::kInitialProfile); + // Also add two non-regular profiles that might appear on ChromeOS. They + // always disable sync and are skipped when getting sync settings. + testing_profile_manager_->CreateTestingProfile( + chrome::kLockScreenAppProfile); + testing_profile_manager_->CreateTestingProfile(chrome::kLockScreenProfile); metric_provider_ = std::make_unique<TestMetricProvider>( std::make_unique<TestMetricCollector>(test_params), testing_profile_manager_->profile_manager());
diff --git a/chrome/browser/metrics/ukm_browsertest.cc b/chrome/browser/metrics/ukm_browsertest.cc index 4abd0dc..b86e3e34 100644 --- a/chrome/browser/metrics/ukm_browsertest.cc +++ b/chrome/browser/metrics/ukm_browsertest.cc
@@ -622,16 +622,8 @@ // Keep this test in sync with testUKMDemographicsReportingWithFeatureEnabled // and testUKMDemographicsReportingWithFeatureDisabled in // ios/chrome/browser/metrics/demographics_egtest.mm. -// TODO(1102747): Crashes on android asan. -#if defined(OS_ANDROID) && defined(ADDRESS_SANITIZER) -#define MAYBE_AddSyncedUserBirthYearAndGenderToProtoData \ - DISABLED_AddSyncedUserBirthYearAndGenderToProtoData -#else -#define MAYBE_AddSyncedUserBirthYearAndGenderToProtoData \ - AddSyncedUserBirthYearAndGenderToProtoData -#endif IN_PROC_BROWSER_TEST_P(UkmBrowserTestWithDemographics, - MAYBE_AddSyncedUserBirthYearAndGenderToProtoData) { + AddSyncedUserBirthYearAndGenderToProtoData) { ukm::UkmTestHelper ukm_test_helper(GetUkmService()); test::DemographicsTestParams param = GetParam(); MetricsConsentOverride metrics_consent(true);
diff --git a/chrome/browser/metrics_settings/DIR_METADATA b/chrome/browser/metrics_settings/DIR_METADATA index e8b45197..3e0dd784 100644 --- a/chrome/browser/metrics_settings/DIR_METADATA +++ b/chrome/browser/metrics_settings/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "UI>Settings>Metrics" } team_email: "chrome-friendly-settings@google.com"
diff --git a/chrome/browser/nacl_host/DIR_METADATA b/chrome/browser/nacl_host/DIR_METADATA index 7787a30b..178b5d1 100644 --- a/chrome/browser/nacl_host/DIR_METADATA +++ b/chrome/browser/nacl_host/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Platform>NaCl" }
diff --git a/chrome/browser/navigation_predictor/DIR_METADATA b/chrome/browser/navigation_predictor/DIR_METADATA index 0d691c9d..1211dd41 100644 --- a/chrome/browser/navigation_predictor/DIR_METADATA +++ b/chrome/browser/navigation_predictor/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Blink>Loader" }
diff --git a/chrome/browser/nearby_sharing/DIR_METADATA b/chrome/browser/nearby_sharing/DIR_METADATA index f023853..3d76e46 100644 --- a/chrome/browser/nearby_sharing/DIR_METADATA +++ b/chrome/browser/nearby_sharing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "OS>Systems>Multidevice>Nearby" }
diff --git a/chrome/browser/net/DIR_METADATA b/chrome/browser/net/DIR_METADATA index 795d7a0..2ba70d2 100644 --- a/chrome/browser/net/DIR_METADATA +++ b/chrome/browser/net/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Internals>Network" } team_email: "net-dev@chromium.org"
diff --git a/chrome/browser/net/load_timing_browsertest.cc b/chrome/browser/net/load_timing_browsertest.cc index 08a1e10..99803a0 100644 --- a/chrome/browser/net/load_timing_browsertest.cc +++ b/chrome/browser/net/load_timing_browsertest.cc
@@ -133,13 +133,8 @@ EXPECT_EQ(navigation_deltas.ssl_start, -1); } -// TODO(crbug.com/1128033): Flaky on ChromeOS and Mac. -#if BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_MAC) -#define MAYBE_HTTPS DISABLED_HTTPS -#else -#define MAYBE_HTTPS HTTPS -#endif -IN_PROC_BROWSER_TEST_F(LoadTimingBrowserTest, MAYBE_HTTPS) { +// TODO(crbug.com/1128033): Flaky on all platforms +IN_PROC_BROWSER_TEST_F(LoadTimingBrowserTest, DISABLED_HTTPS) { net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); https_server.AddDefaultHandlers(); ASSERT_TRUE(https_server.Start());
diff --git a/chrome/browser/net/private_network_request_browsertest.cc b/chrome/browser/net/private_network_request_browsertest.cc index 708bd01a..4776491 100644 --- a/chrome/browser/net/private_network_request_browsertest.cc +++ b/chrome/browser/net/private_network_request_browsertest.cc
@@ -270,12 +270,10 @@ content::JsReplace(script_template, LocalNonSecureURL(*server)))); EXPECT_TRUE(NavigateAndFlushHistograms()); - // TODO(https://crbug.com/1129326): Expect InPublicNonSecureContext? EXPECT_THAT( GetAddressSpaceFeatureBucketCounts(histogram_tester), - ElementsAre( - Pair(WebFeature::kAddressSpaceUnknownNonSecureContextNavigatedToLocal, - 1))); + ElementsAre(Pair( + WebFeature::kAddressSpacePublicNonSecureContextNavigatedToLocal, 1))); } // This test verifies that when a non-secure context served from the public @@ -308,12 +306,10 @@ content::JsReplace(script_template, LocalNonSecureURL(*server)))); EXPECT_TRUE(NavigateAndFlushHistograms()); - // TODO(https://crbug.com/1129326): Expect InPublicNonSecureContext? EXPECT_THAT( GetAddressSpaceFeatureBucketCounts(histogram_tester), - ElementsAre( - Pair(WebFeature::kAddressSpaceUnknownNonSecureContextNavigatedToLocal, - 1))); + ElementsAre(Pair( + WebFeature::kAddressSpacePublicNonSecureContextNavigatedToLocal, 1))); } class PrivateNetworkRequestWithFeatureEnabledBrowserTest
diff --git a/chrome/browser/nfc/DIR_METADATA b/chrome/browser/nfc/DIR_METADATA index 20bf622e..0271108 100644 --- a/chrome/browser/nfc/DIR_METADATA +++ b/chrome/browser/nfc/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Blink>NFC" } team_email: "device-dev@chromium.org"
diff --git a/chrome/browser/notifications/DIR_METADATA b/chrome/browser/notifications/DIR_METADATA index 5a94e2a..b3b636b3 100644 --- a/chrome/browser/notifications/DIR_METADATA +++ b/chrome/browser/notifications/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "UI>Notifications" } team_email: "platform-capabilities@chromium.org"
diff --git a/chrome/browser/notifications/scheduler/DIR_METADATA b/chrome/browser/notifications/scheduler/DIR_METADATA index f68f0a3..5acb01e3 100644 --- a/chrome/browser/notifications/scheduler/DIR_METADATA +++ b/chrome/browser/notifications/scheduler/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Notifications" }
diff --git a/chrome/browser/ntp_tiles/DIR_METADATA b/chrome/browser/ntp_tiles/DIR_METADATA index 2c7c3902..03ca2d5 100644 --- a/chrome/browser/ntp_tiles/DIR_METADATA +++ b/chrome/browser/ntp_tiles/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>ContentSuggestions>History" }
diff --git a/chrome/browser/obsolete_system/DIR_METADATA b/chrome/browser/obsolete_system/DIR_METADATA index 2817430..3db035e 100644 --- a/chrome/browser/obsolete_system/DIR_METADATA +++ b/chrome/browser/obsolete_system/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>Infobars" }
diff --git a/chrome/browser/offline_items_collection/DIR_METADATA b/chrome/browser/offline_items_collection/DIR_METADATA index db72f67..b3bd965 100644 --- a/chrome/browser/offline_items_collection/DIR_METADATA +++ b/chrome/browser/offline_items_collection/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "UI>Browser>Downloads" } team_email: "chrome-downloads@chromium.org"
diff --git a/chrome/browser/offline_pages/DIR_METADATA b/chrome/browser/offline_pages/DIR_METADATA index 91865db..b8fd807 100644 --- a/chrome/browser/offline_pages/DIR_METADATA +++ b/chrome/browser/offline_pages/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "UI>Browser>Offline" } team_email: "offline-dev@chromium.org"
diff --git a/chrome/browser/omaha/DIR_METADATA b/chrome/browser/omaha/DIR_METADATA index 6180860..c2e50ff 100644 --- a/chrome/browser/omaha/DIR_METADATA +++ b/chrome/browser/omaha/DIR_METADATA
@@ -1,5 +1,5 @@ -monorail: { +monorail: { component: "Internals>Installer" } team_email: "chrome-updates-dev@chromium.org" -os: ANDROID +os: ANDROID
diff --git a/chrome/browser/optimization_guide/DIR_METADATA b/chrome/browser/optimization_guide/DIR_METADATA index 142a254..fb4428a 100644 --- a/chrome/browser/optimization_guide/DIR_METADATA +++ b/chrome/browser/optimization_guide/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>OptimizationGuide" +monorail: { + component: "Internals>OptimizationGuide" }
diff --git a/chrome/browser/optimization_guide/blink/DIR_METADATA b/chrome/browser/optimization_guide/blink/DIR_METADATA index 142a254..fb4428a 100644 --- a/chrome/browser/optimization_guide/blink/DIR_METADATA +++ b/chrome/browser/optimization_guide/blink/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>OptimizationGuide" +monorail: { + component: "Internals>OptimizationGuide" }
diff --git a/chrome/browser/page_load_metrics/DIR_METADATA b/chrome/browser/page_load_metrics/DIR_METADATA index 7618d29..e80036e 100644 --- a/chrome/browser/page_load_metrics/DIR_METADATA +++ b/chrome/browser/page_load_metrics/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Speed>Metrics" +monorail: { + component: "Speed>Metrics" }
diff --git a/chrome/browser/page_load_metrics/integration_tests/DIR_METADATA b/chrome/browser/page_load_metrics/integration_tests/DIR_METADATA index 7ed780e..9702949 100644 --- a/chrome/browser/page_load_metrics/integration_tests/DIR_METADATA +++ b/chrome/browser/page_load_metrics/integration_tests/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Speed>Metrics" +monorail: { + component: "Speed>Metrics" } -team_email: "speed-metrics-dev@chromium.org" +team_email: "speed-metrics-dev@chromium.org"
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/DIR_METADATA b/chrome/browser/page_load_metrics/observers/ad_metrics/DIR_METADATA index ee26cc0..04cdbc4 100644 --- a/chrome/browser/page_load_metrics/observers/ad_metrics/DIR_METADATA +++ b/chrome/browser/page_load_metrics/observers/ad_metrics/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>AdFilter" +monorail: { + component: "UI>Browser>AdFilter" }
diff --git a/chrome/browser/page_load_metrics/observers/core/DIR_METADATA b/chrome/browser/page_load_metrics/observers/core/DIR_METADATA index 7618d29..e80036e 100644 --- a/chrome/browser/page_load_metrics/observers/core/DIR_METADATA +++ b/chrome/browser/page_load_metrics/observers/core/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Speed>Metrics" +monorail: { + component: "Speed>Metrics" }
diff --git a/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc index 7db09d1..b2ec875f 100644 --- a/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc
@@ -273,7 +273,8 @@ RecordSmoothnessMetrics(); // Assume that page ends on this method, as the app could be evicted right // after. - RecordPageEndMetrics(&timing, current_time); + RecordPageEndMetrics(&timing, current_time, + /* app_entered_background */ true); return STOP_OBSERVING; } @@ -312,7 +313,8 @@ if (is_portal_) return; - RecordPageEndMetrics(nullptr, base::TimeTicks()); + RecordPageEndMetrics(nullptr, base::TimeTicks(), + /* app_entered_background */ false); if (was_hidden_) return; @@ -350,7 +352,8 @@ ReportLayoutStability(); RecordSmoothnessMetrics(); ReportPerfectHeuristicsMetrics(); - RecordPageEndMetrics(&timing, current_time); + RecordPageEndMetrics(&timing, current_time, + /* app_entered_background */ false); RecordMobileFriendlinessMetrics(); } @@ -1088,7 +1091,8 @@ void UkmPageLoadMetricsObserver::RecordPageEndMetrics( const page_load_metrics::mojom::PageLoadTiming* timing, - base::TimeTicks page_end_time) { + base::TimeTicks page_end_time, + bool app_entered_background) { ukm::builders::PageLoad builder(GetDelegate().GetPageUkmSourceId()); // page_transition_ fits in a uint32_t, so we can safely cast to int64_t. builder.SetNavigation_PageTransition(static_cast<int64_t>(page_transition_)); @@ -1097,10 +1101,11 @@ // to int64_t. int64_t page_end_reason = GetDelegate().GetPageEndReason(); if (page_end_reason == page_load_metrics::PageEndReason::END_NONE && - was_hidden_) { - page_end_reason = page_load_metrics::PageEndReason::END_HIDDEN; + app_entered_background) { + page_end_reason = + page_load_metrics::PageEndReason::END_APP_ENTER_BACKGROUND; } - builder.SetNavigation_PageEndReason2(page_end_reason); + builder.SetNavigation_PageEndReason3(page_end_reason); bool is_user_initiated_navigation = // All browser initiated page loads are user-initiated. GetDelegate().GetUserInitiatedInfo().browser_initiated ||
diff --git a/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.h b/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.h index 02ef6d72..b4c8207 100644 --- a/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.h +++ b/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.h
@@ -181,7 +181,8 @@ // loads. void RecordPageEndMetrics( const page_load_metrics::mojom::PageLoadTiming* timing, - base::TimeTicks page_end_time); + base::TimeTicks page_end_time, + bool app_entered_background); // Records a score from the SiteEngagementService. Called when the page // becomes hidden, or at the end of the session if the page is never hidden.
diff --git a/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer_unittest.cc index a64c1eaf9..7d43aedaf 100644 --- a/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer_unittest.cc +++ b/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer_unittest.cc
@@ -269,7 +269,7 @@ kv.second.get(), PageLoad::kNavigation_PageTransitionName, ui::PAGE_TRANSITION_LINK); tester()->test_ukm_recorder().ExpectEntryMetric( - kv.second.get(), PageLoad::kNavigation_PageEndReason2Name, + kv.second.get(), PageLoad::kNavigation_PageEndReason3Name, page_load_metrics::END_CLOSE); tester()->test_ukm_recorder().ExpectEntryMetric( kv.second.get(), PageLoad::kParseTiming_NavigationToParseStartName, @@ -328,7 +328,7 @@ kv.second.get(), PageLoad::kNavigation_PageTransitionName, ui::PAGE_TRANSITION_LINK); tester()->test_ukm_recorder().ExpectEntryMetric( - kv.second.get(), PageLoad::kNavigation_PageEndReason2Name, + kv.second.get(), PageLoad::kNavigation_PageEndReason3Name, page_load_metrics::END_PROVISIONAL_LOAD_FAILED); tester()->test_ukm_recorder().ExpectEntryMetric( kv.second.get(), @@ -477,7 +477,7 @@ EXPECT_FALSE(tester()->test_ukm_recorder().EntryHasMetric( entry, PageLoad::kPaintTiming_NavigationToLargestContentfulPaint2Name)); tester()->test_ukm_recorder().ExpectEntryMetric( - entry, PageLoad::kNavigation_PageEndReason2Name, + entry, PageLoad::kNavigation_PageEndReason3Name, page_load_metrics::END_CLOSE); std::map<ukm::SourceId, ukm::mojom::UkmEntryPtr> internal_merged_entries = @@ -510,7 +510,7 @@ EXPECT_EQ(1ul, merged_entries.size()); const ukm::mojom::UkmEntry* entry = merged_entries.begin()->second.get(); tester()->test_ukm_recorder().ExpectEntryMetric( - entry, PageLoad::kNavigation_PageEndReason2Name, + entry, PageLoad::kNavigation_PageEndReason3Name, page_load_metrics::END_CLOSE); tester()->test_ukm_recorder().ExpectEntryMetric( entry, PageLoad::kExperimental_PageLoadTypeName, @@ -552,7 +552,7 @@ EXPECT_FALSE(tester()->test_ukm_recorder().EntryHasMetric( entry, PageLoad::kPaintTiming_NavigationToLargestContentfulPaint2Name)); tester()->test_ukm_recorder().ExpectEntryMetric( - entry, PageLoad::kNavigation_PageEndReason2Name, + entry, PageLoad::kNavigation_PageEndReason3Name, page_load_metrics::END_CLOSE); std::map<ukm::SourceId, ukm::mojom::UkmEntryPtr> internal_merged_entries = @@ -1140,7 +1140,7 @@ tester()->test_ukm_recorder().ExpectEntrySourceHasUrl(entry1, GURL(kTestUrl1)); tester()->test_ukm_recorder().ExpectEntryMetric( - entry1, PageLoad::kNavigation_PageEndReason2Name, + entry1, PageLoad::kNavigation_PageEndReason3Name, page_load_metrics::END_NEW_NAVIGATION); tester()->test_ukm_recorder().ExpectEntryMetric( entry1, PageLoad::kPaintTiming_NavigationToFirstContentfulPaintName, 200); @@ -1154,7 +1154,7 @@ tester()->test_ukm_recorder().ExpectEntrySourceHasUrl(entry2, GURL(kTestUrl2)); tester()->test_ukm_recorder().ExpectEntryMetric( - entry2, PageLoad::kNavigation_PageEndReason2Name, + entry2, PageLoad::kNavigation_PageEndReason3Name, page_load_metrics::END_CLOSE); EXPECT_FALSE(tester()->test_ukm_recorder().EntryHasMetric( entry2, PageLoad::kParseTiming_NavigationToParseStartName)); @@ -1484,7 +1484,7 @@ kLayoutInstability_CumulativeShiftScore_MainFrame_BeforeInputOrScrollName, 100); ukm_recorder.ExpectEntryMetric(kv.second.get(), - PageLoad::kNavigation_PageEndReason2Name, + PageLoad::kNavigation_PageEndReason3Name, page_load_metrics::END_CLOSE); } @@ -1867,6 +1867,23 @@ true /* test_main_frame */); } +TEST_F(UkmPageLoadMetricsObserverTest, AppEnterBackground) { + NavigateAndCommit(GURL(kTestUrl1)); + page_load_metrics::mojom::PageLoadTiming timing; + page_load_metrics::InitPageLoadTimingForTest(&timing); + + tester()->SimulateAppEnterBackground(); + + const auto& ukm_recorder = tester()->test_ukm_recorder(); + std::map<ukm::SourceId, ukm::mojom::UkmEntryPtr> merged_entries = + ukm_recorder.GetMergedEntriesByName(PageLoad::kEntryName); + EXPECT_EQ(1ul, merged_entries.size()); + const ukm::mojom::UkmEntry* entry = merged_entries.begin()->second.get(); + tester()->test_ukm_recorder().ExpectEntryMetric( + entry, PageLoad::kNavigation_PageEndReason3Name, + page_load_metrics::END_APP_ENTER_BACKGROUND); +} + class TestOfflinePreviewsUkmPageLoadMetricsObserver : public UkmPageLoadMetricsObserver { public: @@ -1912,7 +1929,7 @@ tester()->test_ukm_recorder().ExpectEntrySourceHasUrl(kv.second.get(), GURL(kTestUrl1)); tester()->test_ukm_recorder().ExpectEntryMetric( - kv.second.get(), PageLoad::kNavigation_PageEndReason2Name, + kv.second.get(), PageLoad::kNavigation_PageEndReason3Name, page_load_metrics::END_CLOSE); } }
diff --git a/chrome/browser/paint_preview/DIR_METADATA b/chrome/browser/paint_preview/DIR_METADATA index 17cf0dc..9cca4c1 100644 --- a/chrome/browser/paint_preview/DIR_METADATA +++ b/chrome/browser/paint_preview/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>FreezeDriedTabs" +monorail: { + component: "Internals>FreezeDriedTabs" }
diff --git a/chrome/browser/password_check/DIR_METADATA b/chrome/browser/password_check/DIR_METADATA index 480ae4b3..b420232 100644 --- a/chrome/browser/password_check/DIR_METADATA +++ b/chrome/browser/password_check/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>Passwords" +monorail: { + component: "UI>Browser>Passwords" } -team_email: "chromium-dev@chromium.org" +team_email: "chromium-dev@chromium.org"
diff --git a/chrome/browser/password_manager/DIR_METADATA b/chrome/browser/password_manager/DIR_METADATA index 480ae4b3..b420232 100644 --- a/chrome/browser/password_manager/DIR_METADATA +++ b/chrome/browser/password_manager/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>Passwords" +monorail: { + component: "UI>Browser>Passwords" } -team_email: "chromium-dev@chromium.org" +team_email: "chromium-dev@chromium.org"
diff --git a/chrome/browser/password_manager/android/DIR_METADATA b/chrome/browser/password_manager/android/DIR_METADATA index 480ae4b3..b420232 100644 --- a/chrome/browser/password_manager/android/DIR_METADATA +++ b/chrome/browser/password_manager/android/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>Passwords" +monorail: { + component: "UI>Browser>Passwords" } -team_email: "chromium-dev@chromium.org" +team_email: "chromium-dev@chromium.org"
diff --git a/chrome/browser/payments/chrome_payment_request_delegate.cc b/chrome/browser/payments/chrome_payment_request_delegate.cc index dc16968..ad5c60aaf 100644 --- a/chrome/browser/payments/chrome_payment_request_delegate.cc +++ b/chrome/browser/payments/chrome_payment_request_delegate.cc
@@ -301,4 +301,9 @@ return rfh ? rfh->GetBrowserContext() : nullptr; } +const PaymentUIObserver* ChromePaymentRequestDelegate::GetPaymentUIObserver() + const { + return nullptr; +} + } // namespace payments
diff --git a/chrome/browser/payments/chrome_payment_request_delegate.h b/chrome/browser/payments/chrome_payment_request_delegate.h index b2007aa..c3ba02a4 100644 --- a/chrome/browser/payments/chrome_payment_request_delegate.h +++ b/chrome/browser/payments/chrome_payment_request_delegate.h
@@ -21,6 +21,7 @@ namespace payments { class PaymentRequestDialog; +class PaymentUIObserver; class ChromePaymentRequestDelegate : public ContentPaymentRequestDelegate { public: @@ -63,6 +64,7 @@ bool SkipUiForBasicCard() const override; std::string GetTwaPackageName() const override; PaymentRequestDialog* GetDialogForTesting() override; + const PaymentUIObserver* GetPaymentUIObserver() const override; protected: // Reference to the dialog so that we can satisfy calls to CloseDialog(). This
diff --git a/chrome/browser/payments/secure_payment_confirmation_browsertest.cc b/chrome/browser/payments/secure_payment_confirmation_browsertest.cc index 084d332..a6b41c2e 100644 --- a/chrome/browser/payments/secure_payment_confirmation_browsertest.cc +++ b/chrome/browser/payments/secure_payment_confirmation_browsertest.cc
@@ -157,7 +157,7 @@ std::move(credential_id), "relying-party.example", base::ASCIIToUTF16("Stub label"), std::move(icon)), /*consumer=*/this); - ResetEventWaiterForSingleEvent(TestEvent::kAppListReady); + ResetEventWaiterForSingleEvent(TestEvent::kUIDisplayed); // ExecJs starts executing JavaScript and immediately returns, not waiting for // any promise to return. @@ -346,7 +346,7 @@ // Cross the origin boundary. NavigateTo("b.com", "/secure_payment_confirmation.html"); test_controller()->SetHasAuthenticator(true); - ResetEventWaiterForSingleEvent(TestEvent::kAppListReady); + ResetEventWaiterForSingleEvent(TestEvent::kUIDisplayed); // ExecJs starts executing JavaScript and immediately returns, not waiting for // any promise to return.
diff --git a/chrome/browser/pdf/DIR_METADATA b/chrome/browser/pdf/DIR_METADATA index 10f235d..11b8e5a 100644 --- a/chrome/browser/pdf/DIR_METADATA +++ b/chrome/browser/pdf/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Plugins>PDF" +monorail: { + component: "Internals>Plugins>PDF" }
diff --git a/chrome/browser/performance_monitor/DIR_METADATA b/chrome/browser/performance_monitor/DIR_METADATA index 079a366..d366dc7 100644 --- a/chrome/browser/performance_monitor/DIR_METADATA +++ b/chrome/browser/performance_monitor/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals" +monorail: { + component: "Internals" }
diff --git a/chrome/browser/permissions/DIR_METADATA b/chrome/browser/permissions/DIR_METADATA index c16e79f..afe2793 100644 --- a/chrome/browser/permissions/DIR_METADATA +++ b/chrome/browser/permissions/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Permissions" +monorail: { + component: "Internals>Permissions" } -team_email: "permissions-dev@chromium.org" +team_email: "permissions-dev@chromium.org"
diff --git a/chrome/browser/permissions/abusive_origin_permission_revocation_request_unittests.cc b/chrome/browser/permissions/abusive_origin_permission_revocation_request_unittests.cc index 1e910edb..4ad9276 100644 --- a/chrome/browser/permissions/abusive_origin_permission_revocation_request_unittests.cc +++ b/chrome/browser/permissions/abusive_origin_permission_revocation_request_unittests.cc
@@ -63,7 +63,7 @@ } void ClearSafeBrowsingBlocklist() { - fake_database_manager_->RemoveAllBlacklistedUrls(); + fake_database_manager_->RemoveAllBlocklistedUrls(); } void AddToPreloadDataBlocklist(
diff --git a/chrome/browser/permissions/contextual_notification_permission_ui_selector_unittest.cc b/chrome/browser/permissions/contextual_notification_permission_ui_selector_unittest.cc index 89737f6..c61fa23 100644 --- a/chrome/browser/permissions/contextual_notification_permission_ui_selector_unittest.cc +++ b/chrome/browser/permissions/contextual_notification_permission_ui_selector_unittest.cc
@@ -190,7 +190,7 @@ } void ClearSafeBrowsingBlocklist() { - fake_database_manager_->RemoveAllBlacklistedUrls(); + fake_database_manager_->RemoveAllBlocklistedUrls(); } void QueryAndExpectDecisionForUrl(
diff --git a/chrome/browser/permissions/crowd_deny_fake_safe_browsing_database_manager.cc b/chrome/browser/permissions/crowd_deny_fake_safe_browsing_database_manager.cc index 7b22fa7..9d93fda 100644 --- a/chrome/browser/permissions/crowd_deny_fake_safe_browsing_database_manager.cc +++ b/chrome/browser/permissions/crowd_deny_fake_safe_browsing_database_manager.cc
@@ -15,7 +15,7 @@ url_to_simulated_threat_metadata_[url] = metadata; } -void CrowdDenyFakeSafeBrowsingDatabaseManager::RemoveAllBlacklistedUrls() { +void CrowdDenyFakeSafeBrowsingDatabaseManager::RemoveAllBlocklistedUrls() { url_to_simulated_threat_metadata_.clear(); } @@ -24,7 +24,7 @@ EXPECT_THAT(pending_clients_, testing::IsEmpty()); } -bool CrowdDenyFakeSafeBrowsingDatabaseManager::CheckApiBlacklistUrl( +bool CrowdDenyFakeSafeBrowsingDatabaseManager::CheckApiBlocklistUrl( const GURL& url, Client* client) { if (simulate_synchronous_result_) @@ -35,7 +35,7 @@ pending_clients_.insert(client); } else { auto result = GetSimulatedMetadataOrSafe(url); - client->OnCheckApiBlacklistUrlResult(url, std::move(result)); + client->OnCheckApiBlocklistUrlResult(url, std::move(result)); } return false; }
diff --git a/chrome/browser/permissions/crowd_deny_fake_safe_browsing_database_manager.h b/chrome/browser/permissions/crowd_deny_fake_safe_browsing_database_manager.h index 3d5df50..09b44307 100644 --- a/chrome/browser/permissions/crowd_deny_fake_safe_browsing_database_manager.h +++ b/chrome/browser/permissions/crowd_deny_fake_safe_browsing_database_manager.h
@@ -24,7 +24,7 @@ const GURL& url, const safe_browsing::ThreatMetadata& metadata); - void RemoveAllBlacklistedUrls(); + void RemoveAllBlocklistedUrls(); void set_simulate_timeout(bool simulate_timeout) { simulate_timeout_ = simulate_timeout; @@ -38,7 +38,7 @@ ~CrowdDenyFakeSafeBrowsingDatabaseManager() override; // safe_browsing::TestSafeBrowsingDatabaseManager: - bool CheckApiBlacklistUrl(const GURL& url, Client* client) override; + bool CheckApiBlocklistUrl(const GURL& url, Client* client) override; bool CancelApiCheck(Client* client) override; bool IsSupported() const override; bool ChecksAreAlwaysAsync() const override;
diff --git a/chrome/browser/permissions/crowd_deny_safe_browsing_request.cc b/chrome/browser/permissions/crowd_deny_safe_browsing_request.cc index 04f7d07c..9b24d88 100644 --- a/chrome/browser/permissions/crowd_deny_safe_browsing_request.cc +++ b/chrome/browser/permissions/crowd_deny_safe_browsing_request.cc
@@ -56,7 +56,7 @@ &SafeBrowsingClient::OnTimeout); if (!database_manager_->IsSupported() || - database_manager_->CheckApiBlacklistUrl(origin.GetURL(), this)) { + database_manager_->CheckApiBlocklistUrl(origin.GetURL(), this)) { timeout_.AbandonAndStop(); SendResultToHandler(Verdict::kAcceptable); } @@ -87,7 +87,7 @@ } // SafeBrowsingDatabaseManager::Client: - void OnCheckApiBlacklistUrlResult( + void OnCheckApiBlocklistUrlResult( const GURL& url, const safe_browsing::ThreatMetadata& metadata) override { timeout_.AbandonAndStop();
diff --git a/chrome/browser/persisted_state_db/DIR_METADATA b/chrome/browser/persisted_state_db/DIR_METADATA index 588de330..3f66e35 100644 --- a/chrome/browser/persisted_state_db/DIR_METADATA +++ b/chrome/browser/persisted_state_db/DIR_METADATA
@@ -1 +1 @@ -team_email: "memex-team@google.com" +team_email: "memex-team@google.com"
diff --git a/chrome/browser/persisted_state_db/profile_proto_db.h b/chrome/browser/persisted_state_db/profile_proto_db.h index a3942b4..51fa5cd 100644 --- a/chrome/browser/persisted_state_db/profile_proto_db.h +++ b/chrome/browser/persisted_state_db/profile_proto_db.h
@@ -373,7 +373,6 @@ for (const auto& proto : *content) { // TODO(crbug.com/1157881) relax requirement for proto to have a key field // and return key value pairs OnLoadContent. - DCHECK(proto.has_key()); results.emplace_back(proto.key(), proto); } }
diff --git a/chrome/browser/picture_in_picture/DIR_METADATA b/chrome/browser/picture_in_picture/DIR_METADATA index 7f5bee0..9f78557 100644 --- a/chrome/browser/picture_in_picture/DIR_METADATA +++ b/chrome/browser/picture_in_picture/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>Media>PictureInPicture" +monorail: { + component: "Blink>Media>PictureInPicture" } -team_email: "media-dev@chromium.org" +team_email: "media-dev@chromium.org"
diff --git a/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc b/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc index 0b3437e..9ef0bdae 100644 --- a/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc +++ b/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc
@@ -1953,8 +1953,14 @@ // Tests that a Next Track button is displayed in the Picture-in-Picture window // when Media Session Action "nexttrack" is handled by the website. +// TODO(crbug.com/1167236): Flaky on Linux. +#if defined(OS_LINUX) +#define MAYBE_NextTrackButtonVisibility DISABLED_NextTrackButtonVisibility +#else +#define MAYBE_NextTrackButtonVisibility NextTrackButtonVisibility +#endif IN_PROC_BROWSER_TEST_F(MediaSessionPictureInPictureWindowControllerBrowserTest, - NextTrackButtonVisibility) { + MAYBE_NextTrackButtonVisibility) { LoadTabAndEnterPictureInPicture( browser(), base::FilePath(kPictureInPictureWindowSizePage)); ASSERT_NE(GetOverlayWindow(), nullptr); @@ -2256,9 +2262,9 @@ ~ChromeContentBrowserClientOverrideWebAppScope() override = default; void OverrideWebkitPrefs( - content::RenderViewHost* rvh, + content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) override { - ChromeContentBrowserClient::OverrideWebkitPrefs(rvh, web_prefs); + ChromeContentBrowserClient::OverrideWebkitPrefs(web_contents, web_prefs); web_prefs->web_app_scope = web_app_scope_; }
diff --git a/chrome/browser/plugins/DIR_METADATA b/chrome/browser/plugins/DIR_METADATA index 5008e90..63d4f46 100644 --- a/chrome/browser/plugins/DIR_METADATA +++ b/chrome/browser/plugins/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Plugins" +monorail: { + component: "Internals>Plugins" }
diff --git a/chrome/browser/policy/DIR_METADATA b/chrome/browser/policy/DIR_METADATA index 4c21d96..f37723a 100644 --- a/chrome/browser/policy/DIR_METADATA +++ b/chrome/browser/policy/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise" +monorail: { + component: "Enterprise" }
diff --git a/chrome/browser/policy/accessibility_policy_browsertest.cc b/chrome/browser/policy/accessibility_policy_browsertest.cc index 86c3d848..51daca78 100644 --- a/chrome/browser/policy/accessibility_policy_browsertest.cc +++ b/chrome/browser/policy/accessibility_policy_browsertest.cc
@@ -3,9 +3,9 @@ // found in the LICENSE file. #include "ash/public/cpp/ash_pref_names.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" -#include "chrome/browser/chromeos/accessibility/magnifier_type.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/magnifier_type.h" #include "chrome/browser/policy/policy_test_utils.h" #include "chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client.h" #include "chrome/browser/ui/browser.h"
diff --git a/chrome/browser/policy/autoplay_policy_browsertest.cc b/chrome/browser/policy/autoplay_policy_browsertest.cc index ea7f3ec..43fba0a 100644 --- a/chrome/browser/policy/autoplay_policy_browsertest.cc +++ b/chrome/browser/policy/autoplay_policy_browsertest.cc
@@ -224,7 +224,9 @@ EXPECT_TRUE(TryAutoplay(GetChildFrame())); } -IN_PROC_BROWSER_TEST_F(AutoplayPolicyTest, AutoplayAllowedGlobalAndURL) { +// TODO(crbug.com/1167239): Flaky test. +IN_PROC_BROWSER_TEST_F(AutoplayPolicyTest, + DISABLED_AutoplayAllowedGlobalAndURL) { NavigateToTestPage(); // Check that autoplay was not allowed.
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc index 451da6f6..eb7f86b 100644 --- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc +++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -113,7 +113,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "ash/public/cpp/ash_pref_names.h" -#include "chrome/browser/chromeos/accessibility/magnifier_type.h" +#include "chrome/browser/ash/accessibility/magnifier_type.h" #include "chrome/browser/chromeos/crostini/crostini_pref_names.h" #include "chrome/browser/chromeos/platform_keys/key_permissions/key_permissions_policy_handler.h" #include "chrome/browser/chromeos/plugin_vm/plugin_vm_pref_names.h"
diff --git a/chrome/browser/policy/messaging_layer/DIR_METADATA b/chrome/browser/policy/messaging_layer/DIR_METADATA index 4c21d96..f37723a 100644 --- a/chrome/browser/policy/messaging_layer/DIR_METADATA +++ b/chrome/browser/policy/messaging_layer/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise" +monorail: { + component: "Enterprise" }
diff --git a/chrome/browser/policy/messaging_layer/encryption/decryption.cc b/chrome/browser/policy/messaging_layer/encryption/decryption.cc index 40cf237..d0300166 100644 --- a/chrome/browser/policy/messaging_layer/encryption/decryption.cc +++ b/chrome/browser/policy/messaging_layer/encryption/decryption.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include <limits> #include <string> #include "base/containers/span.h" @@ -154,8 +155,8 @@ // Assign a random number to be public key id for testing purposes // only (in production it will be retrieved from the server as // 'int32'). - Encryptor::PublicKeyId public_key_id; - base::RandBytes(&public_key_id, sizeof(public_key_id)); + const Encryptor::PublicKeyId public_key_id = base::RandGenerator( + std::numeric_limits<Encryptor::PublicKeyId>::max()); if (!decryptor->keys_.emplace(public_key_id, key_info).second) { result = Status(error::ALREADY_EXISTS, base::StrCat({"Public key='", public_key,
diff --git a/chrome/browser/policy/messaging_layer/storage/storage.cc b/chrome/browser/policy/messaging_layer/storage/storage.cc index 7f2c51b..a9214d1 100644 --- a/chrome/browser/policy/messaging_layer/storage/storage.cc +++ b/chrome/browser/policy/messaging_layer/storage/storage.cc
@@ -587,7 +587,7 @@ } void Storage::Confirm(Priority priority, - uint64_t seq_number, + int64_t seq_number, base::OnceCallback<void(Status)> completion_cb) { // Note: queues_ never change after initialization is finished, so there is // no need to protect or serialize access to it.
diff --git a/chrome/browser/policy/messaging_layer/storage/storage.h b/chrome/browser/policy/messaging_layer/storage/storage.h index 91b559b..cb74499 100644 --- a/chrome/browser/policy/messaging_layer/storage/storage.h +++ b/chrome/browser/policy/messaging_layer/storage/storage.h
@@ -57,7 +57,7 @@ // |sequencing_id| (inclusively). All records with sequeincing ids <= this // one can be removed from the Storage, and can no longer be uploaded. void Confirm(Priority priority, - uint64_t sequencing_id, + int64_t sequencing_id, base::OnceCallback<void(Status)> completion_cb); // Initiates upload of collected records according to the priority.
diff --git a/chrome/browser/policy/messaging_layer/storage/storage_queue.cc b/chrome/browser/policy/messaging_layer/storage/storage_queue.cc index 23586f3..9b1bbe7d 100644 --- a/chrome/browser/policy/messaging_layer/storage/storage_queue.cc +++ b/chrome/browser/policy/messaging_layer/storage/storage_queue.cc
@@ -66,7 +66,7 @@ // Internal structure of the record header. Must fit in FRAME_SIZE. struct RecordHeader { - uint64_t record_sequencing_id; + int64_t record_sequencing_id; uint32_t record_size; // Size of the blob, not including RecordHeader uint32_t record_hash; // Hash of the blob, not including RecordHeader // Data starts right after the header. @@ -161,7 +161,9 @@ 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. + // In case of inavaliability default to a new generation id being a random + // number [1, max_int64] + generation_id_ = 1 + base::RandGenerator(std::numeric_limits<int64_t>::max()); if (next_sequencing_id_ > 0) { // Enumerate metadata files to determine what sequencing ids have // last record digest. They might have metadata for sequencing ids @@ -227,7 +229,7 @@ last_record_digest_ = wrapped_record->record_digest(); } -StatusOr<uint64_t> StorageQueue::AddDataFile( +StatusOr<int64_t> StorageQueue::AddDataFile( const base::FilePath& full_name, const base::FileEnumerator::FileInfo& file_info) { const auto extension = full_name.Extension(); @@ -236,8 +238,8 @@ base::StrCat({"File has no extension: '", full_name.MaybeAsASCII(), "'"})); } - uint64_t file_sequencing_id = 0; - bool success = base::StringToUint64(extension.substr(1), &file_sequencing_id); + int64_t file_sequencing_id = 0; + bool success = base::StringToInt64(extension.substr(1), &file_sequencing_id); if (!success) { return Status(error::INTERNAL, base::StrCat({"File extension does not parse: '", @@ -260,7 +262,7 @@ // We need to set first_sequencing_id_ to 0 if this is the initialization // of an empty StorageQueue, and to the lowest sequencing id among all // existing files, if it was already used. - base::Optional<uint64_t> first_sequencing_id; + base::Optional<int64_t> first_sequencing_id; base::FileEnumerator dir_enum( options_.directory(), /*recursive=*/false, base::FileEnumerator::FILES, @@ -534,7 +536,7 @@ Status StorageQueue::RestoreMetadata( base::flat_set<base::FilePath>* used_files_set) { // Enumerate all meta-files into a map sequencing_id->file_path. - std::map<uint64_t, std::pair<base::FilePath, size_t>> meta_files; + std::map<int64_t, std::pair<base::FilePath, size_t>> meta_files; base::FileEnumerator dir_enum( options_.directory(), /*recursive=*/false, base::FileEnumerator::FILES, @@ -545,8 +547,8 @@ if (extension.empty()) { continue; } - uint64_t sequencing_id = 0; - bool success = base::StringToUint64( + int64_t sequencing_id = 0; + bool success = base::StringToInt64( dir_enum.GetInfo().GetName().Extension().substr(1), &sequencing_id); if (!success) { continue; @@ -582,8 +584,8 @@ base::StrCat({"Cannot read metafile=", meta_file->name(), " status=", read_result.status().ToString()})); } - const uint64_t generation_id = - *reinterpret_cast<const uint64_t*>(read_result.ValueOrDie().data()); + const int64_t generation_id = + *reinterpret_cast<const int64_t*>(read_result.ValueOrDie().data()); // Read last record digest. read_result = meta_file->Read(/*pos=*/sizeof(generation_id_), crypto::kSHA256Length, max_buffer_size); @@ -621,7 +623,7 @@ } } -void StorageQueue::DeleteOutdatedMetadata(uint64_t sequencing_id_to_keep) { +void StorageQueue::DeleteOutdatedMetadata(int64_t sequencing_id_to_keep) { std::vector<std::pair<base::FilePath, uint64_t>> files_to_delete; base::FileEnumerator dir_enum( options_.directory(), @@ -633,8 +635,8 @@ if (extension.empty()) { continue; } - uint64_t sequencing_id = 0; - bool success = base::StringToUint64( + int64_t sequencing_id = 0; + bool success = base::StringToInt64( dir_enum.GetInfo().GetName().Extension().substr(1), &sequencing_id); if (!success) { continue; @@ -743,7 +745,7 @@ void StartUploading(base::WeakPtr<StorageQueue> storage_queue) { DCHECK_CALLED_ON_VALID_SEQUENCE(read_sequence_checker_); // Read from it until the specified sequencing id is found. - for (uint64_t sequencing_id = current_file_->first; + for (int64_t sequencing_id = current_file_->first; sequencing_id < sequencing_info_.sequencing_id(); ++sequencing_id) { auto blob = EnsureBlob(storage_queue, sequencing_id); if (blob.status().error_code() == error::OUT_OF_RANGE) { @@ -761,10 +763,10 @@ // file, if present. ++current_file_; current_pos_ = 0; - uint64_t count = + uint64_t count = static_cast<uint64_t>( (current_file_ == files_.end()) ? 1 - : current_file_->first - sequencing_info_.sequencing_id(); + : current_file_->first - sequencing_info_.sequencing_id()); CallGapUpload(count); // Resume at ScheduleNextRecord. return; @@ -884,7 +886,7 @@ // not match), returns error. StatusOr<base::StringPiece> EnsureBlob( base::WeakPtr<StorageQueue> storage_queue, - uint64_t sequencing_id) { + int64_t sequencing_id) { DCHECK_CALLED_ON_VALID_SEQUENCE(read_sequence_checker_); // Test only: simulate error, if requested. @@ -965,7 +967,7 @@ } void CallRecordOrGap(base::WeakPtr<StorageQueue> storage_queue, - uint64_t sequencing_id) { + int64_t sequencing_id) { auto blob = EnsureBlob(storage_queue, sequencing_info_.sequencing_id()); if (blob.status().error_code() == error::OUT_OF_RANGE) { // Reached end of file, switch to the next one (if present). @@ -982,10 +984,10 @@ // file, if present. ++current_file_; current_pos_ = 0; - uint64_t count = + uint64_t count = static_cast<uint64_t>( (current_file_ == files_.end()) ? 1 - : current_file_->first - sequencing_info_.sequencing_id(); + : current_file_->first - sequencing_info_.sequencing_id()); CallGapUpload(count); // Resume at ScheduleNextRecord. return; @@ -995,10 +997,10 @@ } // Files that will be read (in order of sequencing ids). - std::map<uint64_t, scoped_refptr<SingleFile>> files_; + std::map<int64_t, scoped_refptr<SingleFile>> files_; SequencingInformation sequencing_info_; uint32_t current_pos_; - std::map<uint64_t, scoped_refptr<SingleFile>>::iterator current_file_; + std::map<int64_t, scoped_refptr<SingleFile>>::iterator current_file_; const std::unique_ptr<UploaderInterface> uploader_; base::WeakPtrFactory<StorageQueue> storage_queue_weakptr_factory_; @@ -1189,8 +1191,8 @@ return Status::StatusOK(); } -std::map<uint64_t, scoped_refptr<StorageQueue::SingleFile>> -StorageQueue::CollectFilesForUpload(uint64_t sequencing_id) const { +std::map<int64_t, scoped_refptr<StorageQueue::SingleFile>> +StorageQueue::CollectFilesForUpload(int64_t sequencing_id) const { DCHECK_CALLED_ON_VALID_SEQUENCE(storage_queue_sequence_checker_); // Locate the first file based on sequencing id. auto file_it = files_.find(sequencing_id); @@ -1203,7 +1205,7 @@ // Create references to the files that will be uploaded. // Exclude the last file (still being written). - std::map<uint64_t, scoped_refptr<SingleFile>> files; + std::map<int64_t, scoped_refptr<SingleFile>> files; for (; file_it != files_.end() && file_it->second.get() != files_.rbegin()->second.get(); ++file_it) { @@ -1214,7 +1216,7 @@ class StorageQueue::ConfirmContext : public TaskRunnerContext<Status> { public: - ConfirmContext(uint64_t sequencing_id, + ConfirmContext(int64_t sequencing_id, base::OnceCallback<void(Status)> end_callback, scoped_refptr<StorageQueue> storage_queue) : TaskRunnerContext<Status>(std::move(end_callback), @@ -1235,19 +1237,19 @@ } // Confirmed sequencing id. - uint64_t sequencing_id_; + int64_t sequencing_id_; scoped_refptr<StorageQueue> storage_queue_; SEQUENCE_CHECKER(confirm_sequence_checker_); }; -void StorageQueue::Confirm(uint64_t sequencing_id, +void StorageQueue::Confirm(int64_t sequencing_id, base::OnceCallback<void(Status)> completion_cb) { Start<ConfirmContext>(sequencing_id, std::move(completion_cb), this); } -Status StorageQueue::RemoveConfirmedData(uint64_t sequencing_id) { +Status StorageQueue::RemoveConfirmedData(int64_t sequencing_id) { DCHECK_CALLED_ON_VALID_SEQUENCE(storage_queue_sequence_checker_); // Update first unconfirmed id, unless new one is lower. if (!first_unconfirmed_sequencing_id_.has_value() || @@ -1304,7 +1306,7 @@ } void StorageQueue::TestInjectBlockReadErrors( - std::initializer_list<uint64_t> sequencing_ids) { + std::initializer_list<int64_t> sequencing_ids) { test_injected_fail_sequencing_ids_ = sequencing_ids; }
diff --git a/chrome/browser/policy/messaging_layer/storage/storage_queue.h b/chrome/browser/policy/messaging_layer/storage/storage_queue.h index 170dff0..e823e55 100644 --- a/chrome/browser/policy/messaging_layer/storage/storage_queue.h +++ b/chrome/browser/policy/messaging_layer/storage/storage_queue.h
@@ -98,7 +98,7 @@ // All records with sequencing ids <= this one can be removed from // the StorageQueue, and can no longer be uploaded. // Helper methods: RemoveConfirmedData. - void Confirm(uint64_t sequencing_id, + void Confirm(int64_t sequencing_id, base::OnceCallback<void(Status)> completion_cb); // Initiates upload of collected records. Called periodically by timer, based @@ -124,8 +124,7 @@ void Flush(); // Test only: makes specified records fail on reading. - void TestInjectBlockReadErrors( - std::initializer_list<uint64_t> sequencing_ids); + void TestInjectBlockReadErrors(std::initializer_list<int64_t> sequencing_ids); // Access queue options. const QueueOptions& options() const { return options_; } @@ -224,7 +223,7 @@ // Helper method for Init(): process single data file. // Return sequencing_id from <prefix>.<sequencing_id> file name, or Status // in case there is any error. - StatusOr<uint64_t> AddDataFile( + StatusOr<int64_t> AddDataFile( const base::FilePath& full_name, const base::FileEnumerator::FileInfo& file_info); @@ -269,7 +268,7 @@ // Helper method for Write(): deletes meta files up to, but not including // |sequencing_id_to_keep|. Any errors are ignored. - void DeleteOutdatedMetadata(uint64_t sequencing_id_to_keep); + void DeleteOutdatedMetadata(int64_t sequencing_id_to_keep); // Helper method for Write(): composes record header and writes it to the // file, followed by data. @@ -284,13 +283,13 @@ // Helper method for Upload: collects and sets aside |files| in the // StorageQueue that have data for the Upload (all files that have records // with sequencing ids equal or higher than |sequencing_id|). - std::map<uint64_t, scoped_refptr<SingleFile>> CollectFilesForUpload( - uint64_t sequencing_id) const; + std::map<int64_t, scoped_refptr<SingleFile>> CollectFilesForUpload( + int64_t sequencing_id) const; // Helper method for Confirm: Moves |first_sequencing_id_| to // (|sequencing_id|+1) and removes files that only have records with seq // ids below or equal to |sequencing_id| (below |first_sequencing_id_|). - Status RemoveConfirmedData(uint64_t sequencing_id); + Status RemoveConfirmedData(int64_t sequencing_id); // Immutable options, stored at the time of creation. const QueueOptions options_; @@ -299,18 +298,18 @@ // Set up once during initialization by reading from the 'gen_id.NNNN' file // matching the last sequencing id, or generated anew as a random number if no // such file found (files do not match the id). - uint64_t generation_id_ = 0; + int64_t generation_id_ = 0; // Digest of the last written record (loaded at queue initialization, absent // if the new generation has just started, and no records where stored yet). base::Optional<std::string> last_record_digest_; // Next sequencing id to store (not assigned yet). - uint64_t next_sequencing_id_ = 0; + int64_t next_sequencing_id_ = 0; // First sequencing id store still has (no records with lower // sequencing id exist in store). - uint64_t first_sequencing_id_ = 0; + int64_t first_sequencing_id_ = 0; // First unconfirmed sequencing id (no records with lower // sequencing id will be ever uploaded). Set by the first @@ -318,10 +317,10 @@ // If first_unconfirmed_sequencing_id_ < first_sequencing_id_, // [first_unconfirmed_sequencing_id_, first_sequencing_id_) is a gap // that cannot be filled in and is uploaded as such. - base::Optional<uint64_t> first_unconfirmed_sequencing_id_; + base::Optional<int64_t> first_unconfirmed_sequencing_id_; // Ordered map of the files by ascending sequencing id. - std::map<uint64_t, scoped_refptr<SingleFile>> files_; + std::map<int64_t, scoped_refptr<SingleFile>> files_; // Counter of the Read operations. When not 0, none of the files_ can be // deleted. Incremented by |ReadContext::OnStart|, decremented by @@ -339,7 +338,7 @@ scoped_refptr<EncryptionModule> encryption_module_; // Test only: records specified to fail on reading. - base::flat_set<uint64_t> test_injected_fail_sequencing_ids_; + base::flat_set<int64_t> test_injected_fail_sequencing_ids_; // Sequential task runner for all activities in this StorageQueue. scoped_refptr<base::SequencedTaskRunner> sequenced_task_runner_;
diff --git a/chrome/browser/policy/messaging_layer/storage/storage_queue_unittest.cc b/chrome/browser/policy/messaging_layer/storage/storage_queue_unittest.cc index cad626e7..29326a10 100644 --- a/chrome/browser/policy/messaging_layer/storage/storage_queue_unittest.cc +++ b/chrome/browser/policy/messaging_layer/storage/storage_queue_unittest.cc
@@ -85,9 +85,9 @@ // should have that digest already recorded. Only the first record in a // generation is uploaded without last record digest. "Optional" is set to // no-value if there was a gap record instead of a real one. - using LastRecordDigestMap = std::map< - std::pair<uint64_t /*generation id */, uint64_t /*sequencing id*/>, - base::Optional<std::string /*digest*/>>; + using LastRecordDigestMap = + std::map<std::pair<int64_t /*generation id */, int64_t /*sequencing id*/>, + base::Optional<std::string /*digest*/>>; explicit MockUploadClient(LastRecordDigestMap* last_record_digest_map) : last_record_digest_map_(last_record_digest_map) {} @@ -195,9 +195,9 @@ UploadComplete(need_encryption_key, status); } - MOCK_METHOD(bool, UploadRecord, (uint64_t, base::StringPiece), (const)); - MOCK_METHOD(bool, UploadRecordFailure, (uint64_t, Status), (const)); - MOCK_METHOD(bool, UploadGap, (uint64_t, uint64_t), (const)); + MOCK_METHOD(bool, UploadRecord, (int64_t, base::StringPiece), (const)); + MOCK_METHOD(bool, UploadRecordFailure, (int64_t, Status), (const)); + MOCK_METHOD(bool, UploadGap, (int64_t, uint64_t), (const)); MOCK_METHOD(void, UploadComplete, (bool, Status), (const)); // Helper class for setting up mock client expectations of a successful @@ -211,7 +211,7 @@ .InSequence(client_->test_upload_sequence_); } - SetUp& Required(uint64_t sequence_number, base::StringPiece value) { + SetUp& Required(int64_t sequence_number, base::StringPiece value) { EXPECT_CALL(*client_, UploadRecord(Eq(sequence_number), StrEq(std::string(value)))) .InSequence(client_->test_upload_sequence_) @@ -219,7 +219,7 @@ return *this; } - SetUp& Possible(uint64_t sequence_number, base::StringPiece value) { + SetUp& Possible(int64_t sequence_number, base::StringPiece value) { EXPECT_CALL(*client_, UploadRecord(Eq(sequence_number), StrEq(std::string(value)))) .Times(Between(0, 1)) @@ -228,14 +228,14 @@ return *this; } - SetUp& RequiredGap(uint64_t sequence_number, uint64_t count) { + SetUp& RequiredGap(int64_t sequence_number, uint64_t count) { EXPECT_CALL(*client_, UploadGap(Eq(sequence_number), Eq(count))) .InSequence(client_->test_upload_sequence_) .WillOnce(Return(true)); return *this; } - SetUp& PossibleGap(uint64_t sequence_number, uint64_t count) { + SetUp& PossibleGap(int64_t sequence_number, uint64_t count) { EXPECT_CALL(*client_, UploadGap(Eq(sequence_number), Eq(count))) .Times(Between(0, 1)) .InSequence(client_->test_upload_sequence_) @@ -243,7 +243,7 @@ return *this; } - SetUp& Failure(uint64_t sequence_number, Status error) { + SetUp& Failure(int64_t sequence_number, Status error) { EXPECT_CALL(*client_, UploadRecordFailure(Eq(sequence_number), Eq(error))) .InSequence(client_->test_upload_sequence_) .WillOnce(Return(true)); @@ -255,7 +255,7 @@ }; private: - base::Optional<uint64_t> generation_id_; + base::Optional<int64_t> generation_id_; LastRecordDigestMap* const last_record_digest_map_; Sequence test_upload_sequence_; @@ -290,7 +290,7 @@ storage_queue_.reset(); } - void InjectFailures(std::initializer_list<uint64_t> seq_numbers) { + void InjectFailures(std::initializer_list<int64_t> seq_numbers) { storage_queue_->TestInjectBlockReadErrors(seq_numbers); } @@ -333,7 +333,7 @@ ASSERT_OK(write_result) << write_result; } - void ConfirmOrDie(std::uint64_t seq_number) { + void ConfirmOrDie(std::int64_t seq_number) { TestEvent<Status> c; storage_queue_->Confirm(seq_number, c.cb()); const Status c_result = c.result();
diff --git a/chrome/browser/policy/messaging_layer/storage/storage_unittest.cc b/chrome/browser/policy/messaging_layer/storage/storage_unittest.cc index 3ddb3ff3..9f2c44f 100644 --- a/chrome/browser/policy/messaging_layer/storage/storage_unittest.cc +++ b/chrome/browser/policy/messaging_layer/storage/storage_unittest.cc
@@ -206,8 +206,8 @@ // should have that digest already recorded. Only the first record in a // generation is uploaded without last record digest. using LastRecordDigestMap = std::map<std::tuple<Priority, - uint64_t /*generation id*/, - uint64_t /*sequencing id*/>, + int64_t /*generation id*/, + int64_t /*sequencing id*/>, std::string /*digest*/>; explicit MockUploadClient( @@ -264,7 +264,7 @@ MOCK_METHOD(bool, UploadRecord, - (Priority, uint64_t, base::StringPiece), + (Priority, int64_t, base::StringPiece), (const)); MOCK_METHOD(bool, UploadRecordFailure, (Status), (const)); MOCK_METHOD(void, UploadComplete, (bool, Status), (const)); @@ -286,7 +286,7 @@ .InSequence(client_->test_upload_sequence_); } - SetUp& Required(uint64_t sequencing_id, base::StringPiece value) { + SetUp& Required(int64_t sequencing_id, base::StringPiece value) { EXPECT_CALL(*client_, UploadRecord(Eq(priority_), Eq(sequencing_id), StrEq(std::string(value)))) .InSequence(client_->test_upload_sequence_) @@ -294,7 +294,7 @@ return *this; } - SetUp& Possible(uint64_t sequencing_id, base::StringPiece value) { + SetUp& Possible(int64_t sequencing_id, base::StringPiece value) { EXPECT_CALL(*client_, UploadRecord(Eq(priority_), Eq(sequencing_id), StrEq(std::string(value)))) .Times(Between(0, 1)) @@ -418,7 +418,7 @@ wrapped_record.record().data())); } - base::Optional<uint64_t> generation_id_; + base::Optional<int64_t> generation_id_; LastRecordDigestMap* const last_record_digest_map_; scoped_refptr<base::SequencedTaskRunner> sequenced_task_runner_; @@ -533,7 +533,7 @@ ASSERT_OK(write_result) << write_result; } - void ConfirmOrDie(Priority priority, std::uint64_t sequencing_id) { + void ConfirmOrDie(Priority priority, std::int64_t sequencing_id) { TestEvent<Status> c; storage_->Confirm(priority, sequencing_id, c.cb()); const Status c_result = c.result();
diff --git a/chrome/browser/policy/messaging_layer/upload/dm_server_upload_service.cc b/chrome/browser/policy/messaging_layer/upload/dm_server_upload_service.cc index 73a281a01..f422a30 100644 --- a/chrome/browser/policy/messaging_layer/upload/dm_server_upload_service.cc +++ b/chrome/browser/policy/messaging_layer/upload/dm_server_upload_service.cc
@@ -107,9 +107,9 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); Status process_status; - const uint64_t expected_generation_id = + const int64_t expected_generation_id = encrypted_records_->front().sequencing_information().generation_id(); - uint64_t expected_sequencing_id = + int64_t expected_sequencing_id = encrypted_records_->front().sequencing_information().sequencing_id(); // Will stop processing records on the first record that fails to pass. @@ -151,8 +151,8 @@ Status DmServerUploader::IsRecordValid( const EncryptedRecord& encrypted_record, - const uint64_t expected_generation_id, - const uint64_t expected_sequencing_id) const { + const int64_t expected_generation_id, + const int64_t expected_sequencing_id) const { // Test to ensure all records are in the same generation. if (encrypted_record.sequencing_information().generation_id() != expected_generation_id) {
diff --git a/chrome/browser/policy/messaging_layer/upload/dm_server_upload_service.h b/chrome/browser/policy/messaging_layer/upload/dm_server_upload_service.h index 56fb143..de3f296 100644 --- a/chrome/browser/policy/messaging_layer/upload/dm_server_upload_service.h +++ b/chrome/browser/policy/messaging_layer/upload/dm_server_upload_service.h
@@ -124,8 +124,8 @@ // Helper function for determining if an EncryptedRecord is valid. Status IsRecordValid(const EncryptedRecord& encrypted_record, - const uint64_t expected_generation_id, - const uint64_t expected_sequencing_id) const; + const int64_t expected_generation_id, + const int64_t expected_sequencing_id) const; // Helper function for tracking the highest sequencing information per // generation id. Schedules ProcessSuccessfulUploadAddition.
diff --git a/chrome/browser/policy/messaging_layer/upload/dm_server_upload_service_unittest.cc b/chrome/browser/policy/messaging_layer/upload/dm_server_upload_service_unittest.cc index 6ab03779..02b18a800f 100644 --- a/chrome/browser/policy/messaging_layer/upload/dm_server_upload_service_unittest.cc +++ b/chrome/browser/policy/messaging_layer/upload/dm_server_upload_service_unittest.cc
@@ -202,10 +202,10 @@ } TEST_P(DmServerUploaderTest, ProcessesRecords) { - uint64_t kNumberOfRecords = 10; - uint64_t kGenerationId = 1234; + const int64_t kNumberOfRecords = 10; + const int64_t kGenerationId = 1234; - for (uint64_t i = 0; i < kNumberOfRecords; i++) { + for (int64_t i = 0; i < kNumberOfRecords; i++) { EncryptedRecord encrypted_record; encrypted_record.set_encrypted_wrapped_record( base::StrCat({"Record Number ", base::NumberToString(i)}));
diff --git a/chrome/browser/policy/messaging_layer/upload/record_handler_impl.cc b/chrome/browser/policy/messaging_layer/upload/record_handler_impl.cc index c55b7837..6b2e8da 100644 --- a/chrome/browser/policy/messaging_layer/upload/record_handler_impl.cc +++ b/chrome/browser/policy/messaging_layer/upload/record_handler_impl.cc
@@ -356,20 +356,37 @@ GetPriorityProtoFromSequencingInformationValue(value); // If any of the previous values don't exist, or are malformed, return error. - uint64_t seq_id; - uint64_t gen_id; - if (!sequencing_id || sequencing_id->empty() || - !base::StringToUint64(*sequencing_id, &seq_id) || !generation_id || - generation_id->empty() || - !base::StringToUint64(*generation_id, &gen_id) || gen_id == 0 || - !priority_result.has_value() || + int64_t seq_id; + int64_t gen_id; + if (!sequencing_id || generation_id->empty() || !generation_id || + generation_id->empty() || !priority_result.has_value() || !Priority_IsValid(priority_result.value())) { return Status(error::INVALID_ARGUMENT, - base::StrCat({"Provided value did not conform to a valid " + base::StrCat({"Provided value lacks some fields required by " "SequencingInformation proto: ", value.DebugString()})); } + if (!base::StringToInt64(*sequencing_id, &seq_id) || + !base::StringToInt64(*generation_id, &gen_id) || gen_id == 0) { + // For backwards compatibility accept unsigned values if signed are not + // parsed. + // TODO(b/177677467): Remove this duplication once server is fully + // transitioned. + uint64_t unsigned_seq_id; + uint64_t unsigned_gen_id; + if (!base::StringToUint64(*sequencing_id, &unsigned_seq_id) || + !base::StringToUint64(*generation_id, &unsigned_gen_id) || + unsigned_gen_id == 0) { + return Status(error::INVALID_ARGUMENT, + base::StrCat({"Provided value did not conform to a valid " + "SequencingInformation proto: ", + value.DebugString()})); + } + seq_id = static_cast<int64_t>(unsigned_seq_id); + gen_id = static_cast<int64_t>(unsigned_gen_id); + } + SequencingInformation proto; proto.set_sequencing_id(seq_id); proto.set_generation_id(gen_id);
diff --git a/chrome/browser/policy/messaging_layer/upload/record_handler_impl_unittest.cc b/chrome/browser/policy/messaging_layer/upload/record_handler_impl_unittest.cc index 6547c8f..6025b67 100644 --- a/chrome/browser/policy/messaging_layer/upload/record_handler_impl_unittest.cc +++ b/chrome/browser/policy/messaging_layer/upload/record_handler_impl_unittest.cc
@@ -105,12 +105,21 @@ request.FindListKey("encryptedRecord"); ASSERT_TRUE(encrypted_record_list != nullptr); ASSERT_FALSE(encrypted_record_list->GetList().empty()); - const auto* seq_info = encrypted_record_list->GetList().rbegin()->FindDictKey( - "sequencingInformation"); + const auto* const seq_info = + encrypted_record_list->GetList().rbegin()->FindDictKey( + "sequenceInformation"); ASSERT_TRUE(seq_info != nullptr); ASSERT_TRUE(!seq_info->FindStringKey("sequencingId")->empty()); ASSERT_TRUE(!seq_info->FindStringKey("generationId")->empty()); ASSERT_TRUE(seq_info->FindIntKey("priority")); + // For backwards compatibility, we must also have unsigned sequencing info. + const auto* const unsigned_seq_info = + encrypted_record_list->GetList().rbegin()->FindDictKey( + "sequencingInformation"); + ASSERT_TRUE(unsigned_seq_info != nullptr); + ASSERT_TRUE(!unsigned_seq_info->FindStringKey("sequencingId")->empty()); + ASSERT_TRUE(!unsigned_seq_info->FindStringKey("generationId")->empty()); + ASSERT_TRUE(unsigned_seq_info->FindIntKey("priority")); sequencing_info.MergeDictionary(seq_info); // Set half of sequencing information to return a string instead of an int for @@ -176,9 +185,9 @@ // The lastSucceedUploadedRecord should be the record before the one indicated // in seq_info. |seq_info| has been built by // RetrieveFinalSequencingInforamation and is guaranteed to have this key. - uint64_t sequencing_id; - ASSERT_TRUE(base::StringToUint64(*seq_info.FindStringKey("sequencingId"), - &sequencing_id)); + int64_t sequencing_id; + ASSERT_TRUE(base::StringToInt64(*seq_info.FindStringKey("sequencingId"), + &sequencing_id)); // The lastSucceedUploadedRecord should be the record before the one // indicated in seq_info. response.SetStringPath("lastSucceedUploadedRecord.sequencingId", @@ -215,12 +224,12 @@ }; std::unique_ptr<std::vector<EncryptedRecord>> BuildTestRecordsVector( - size_t number_of_test_records, - uint64_t generation_id) { + int64_t number_of_test_records, + int64_t generation_id) { std::unique_ptr<std::vector<EncryptedRecord>> test_records = std::make_unique<std::vector<EncryptedRecord>>(); test_records->reserve(number_of_test_records); - for (size_t i = 0; i < number_of_test_records; i++) { + for (int64_t i = 0; i < number_of_test_records; i++) { EncryptedRecord encrypted_record; encrypted_record.set_encrypted_wrapped_record( base::StrCat({"Record Number ", base::NumberToString(i)})); @@ -235,8 +244,8 @@ } TEST_P(RecordHandlerImplTest, ForwardsRecordsToCloudPolicyClient) { - constexpr size_t kNumTestRecords = 10; - constexpr uint64_t kGenerationId = 1234; + static constexpr int64_t kNumTestRecords = 10; + static constexpr int64_t kGenerationId = 1234; auto test_records = BuildTestRecordsVector(kNumTestRecords, kGenerationId); TestCallbackWaiter client_waiter; @@ -285,8 +294,8 @@ } TEST_P(RecordHandlerImplTest, ReportsUploadFailure) { - uint64_t kNumTestRecords = 10; - uint64_t kGenerationId = 1234; + static constexpr int64_t kNumTestRecords = 10; + static constexpr int64_t kGenerationId = 1234; auto test_records = BuildTestRecordsVector(kNumTestRecords, kGenerationId); TestCallbackWaiter client_waiter; @@ -323,8 +332,8 @@ } TEST_P(RecordHandlerImplTest, UploadsGapRecordOnServerFailure) { - uint64_t kNumTestRecords = 10; - uint64_t kGenerationId = 1234; + static constexpr int64_t kNumTestRecords = 10; + static constexpr int64_t kGenerationId = 1234; auto test_records = BuildTestRecordsVector(kNumTestRecords, kGenerationId); // Once for failure, and once for gap. @@ -388,8 +397,8 @@ // expected response, clients shouldn't crash in these instances, but simply // report an internal error. TEST_P(RecordHandlerImplTest, HandleUnknownResponseFromServer) { - constexpr size_t kNumTestRecords = 10; - constexpr uint64_t kGenerationId = 1234; + static constexpr int64_t kNumTestRecords = 10; + static constexpr int64_t kGenerationId = 1234; auto test_records = BuildTestRecordsVector(kNumTestRecords, kGenerationId); TestCallbackWaiter client_waiter;
diff --git a/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.cc b/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.cc index 4f9bb6d..3182d08 100644 --- a/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.cc +++ b/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.cc
@@ -25,7 +25,8 @@ // EncrypedRecordDictionaryBuilder strings constexpr char kEncryptedWrappedRecord[] = "encryptedWrappedRecord"; -constexpr char kSequencingInformationKey[] = "sequencingInformation"; +constexpr char kUnsignedSequencingInformationKey[] = "sequencingInformation"; +constexpr char kSequencingInformationKey[] = "sequenceInformation"; constexpr char kEncryptionInfoKey[] = "encryptionInfo"; // SequencingInformationDictionaryBuilder strings @@ -111,6 +112,19 @@ } record_dictionary.SetKey(GetSequencingInformationKeyPath(), std::move(sequencing_information_result.value())); + // For backwards compatibility, store unsigned sequencing information too. + // The values are non-negative anyway, so the same builder can be used. + auto unsigned_sequencing_information_result = + SequencingInformationDictionaryBuilder(record.sequencing_information()) + .Build(); + if (!unsigned_sequencing_information_result.has_value()) { + // Sequencing information was improperly configured. Record cannot be + // uploaded. Deny it. + return; + } + record_dictionary.SetKey( + GetUnsignedSequencingInformationKeyPath(), + std::move(unsigned_sequencing_information_result.value())); // Encryption information can be missing until we set up encryption as // mandatory. @@ -151,6 +165,12 @@ // static base::StringPiece +EncryptedRecordDictionaryBuilder::GetUnsignedSequencingInformationKeyPath() { + return kUnsignedSequencingInformationKey; +} + +// static +base::StringPiece EncryptedRecordDictionaryBuilder::GetSequencingInformationKeyPath() { return kSequencingInformationKey; }
diff --git a/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.h b/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.h index 5bd498b..2f44ff0 100644 --- a/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.h +++ b/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.h
@@ -30,6 +30,11 @@ // "generationId": 123456789, // "priority": 1 // } +// "sequenceInformation": { +// "sequencingId": 1, +// "generationId": 123456789, +// "priority": 1 +// } // }, // { // "encryptedWrappedRecord": "EncryptedMessage", @@ -42,12 +47,23 @@ // "generationId": 123456789, // "priority": 1 // } +// "sequenceInformation": { +// "sequencingId": 2, +// "generationId": 123456789, +// "priority": 1 +// } // } // ] // "attachEncryptionSettings": true // optional field // } // TODO(b/159361496): Periodically add memory and disk space usage. // +// Note that there are two identical sub-records - sequencingInformation and +// sequenceInformation (sequencingId and generationId in the former are +// Unsigned, in the later - Signed). This is done temporarily for backwards +// compatibility with the server. +// TODO(b/177677467): Remove this duplication once server is fully transitioned. +// // This payload is added to the common payload of all reporting jobs, which // includes "device" and "browser" sub-fields: // @@ -91,6 +107,7 @@ base::Optional<base::Value> Build(); static base::StringPiece GetEncryptedWrappedRecordPath(); + static base::StringPiece GetUnsignedSequencingInformationKeyPath(); static base::StringPiece GetSequencingInformationKeyPath(); static base::StringPiece GetEncryptionInfoPath();
diff --git a/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder_unittest.cc b/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder_unittest.cc index 73b880dc..6b0b8e08 100644 --- a/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder_unittest.cc +++ b/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder_unittest.cc
@@ -18,12 +18,12 @@ namespace reporting { namespace { -constexpr uint64_t kGenerationId = 4321; +constexpr int64_t kGenerationId = 4321; constexpr Priority kPriority = Priority::IMMEDIATE; // Default values for EncryptionInfo constexpr char kEncryptionKey[] = "abcdef"; -constexpr uint64_t kPublicKeyId = 9876; +constexpr int64_t kPublicKeyId = 9876; class RecordUploadRequestBuilderTest : public ::testing::TestWithParam<bool> { public: @@ -48,8 +48,8 @@ return record; } - static uint64_t GetNextSequencingId() { - static uint64_t sequencing_id = 0; + static int64_t GetNextSequencingId() { + static int64_t sequencing_id = 0; return sequencing_id++; }
diff --git a/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc b/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc index 84751ff..667a511f 100644 --- a/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc +++ b/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc
@@ -144,9 +144,13 @@ EXPECT_FALSE(encrypted_record_list->GetList().empty()); // Retrieve and process sequencing information - const base::Value* seq_info = + const base::Value* unsigned_seq_info = encrypted_record_list->GetList().rbegin()->FindDictKey( "sequencingInformation"); + EXPECT_TRUE(unsigned_seq_info != nullptr); + const base::Value* seq_info = + encrypted_record_list->GetList().rbegin()->FindDictKey( + "sequenceInformation"); EXPECT_TRUE(seq_info != nullptr); response.SetPath("lastSucceedUploadedRecord", seq_info->Clone()); @@ -213,8 +217,8 @@ using TestEncryptionKeyAttached = MockFunction<void(SignedEncryptionInfo)>; TEST_P(UploadClientTest, CreateUploadClientAndUploadRecords) { - const int kExpectedCallTimes = 10; - const uint64_t kGenerationId = 1234; + static constexpr int64_t kExpectedCallTimes = 10; + static constexpr int64_t kGenerationId = 1234; base::Value data{base::Value::Type::DICTIONARY}; data.SetKey("TEST_KEY", base::Value("TEST_VALUE")); @@ -231,19 +235,18 @@ wrapped_record.SerializeToString(&serialized_record); std::unique_ptr<std::vector<EncryptedRecord>> records = std::make_unique<std::vector<EncryptedRecord>>(); - for (int i = 0; i < kExpectedCallTimes; i++) { + for (int64_t i = 0; i < kExpectedCallTimes; i++) { EncryptedRecord encrypted_record; encrypted_record.set_encrypted_wrapped_record(serialized_record); SequencingInformation* sequencing_information = encrypted_record.mutable_sequencing_information(); - sequencing_information->set_sequencing_id(i); + sequencing_information->set_sequencing_id(static_cast<int64_t>(i)); sequencing_information->set_generation_id(kGenerationId); sequencing_information->set_priority(Priority::IMMEDIATE); records->push_back(encrypted_record); } - StrictMock<TestEncryptionKeyAttached> encryption_key_attached; EXPECT_CALL( encryption_key_attached,
diff --git a/chrome/browser/portal/DIR_METADATA b/chrome/browser/portal/DIR_METADATA index 0024ac5d..b437bcf 100644 --- a/chrome/browser/portal/DIR_METADATA +++ b/chrome/browser/portal/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Blink>Portals" +monorail: { + component: "Blink>Portals" }
diff --git a/chrome/browser/predictors/DIR_METADATA b/chrome/browser/predictors/DIR_METADATA index fe82ff61..eaf73c7 100644 --- a/chrome/browser/predictors/DIR_METADATA +++ b/chrome/browser/predictors/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Preload" +monorail: { + component: "Internals>Preload" }
diff --git a/chrome/browser/preferences/DIR_METADATA b/chrome/browser/preferences/DIR_METADATA index edff49c..45d75af 100644 --- a/chrome/browser/preferences/DIR_METADATA +++ b/chrome/browser/preferences/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Preferences" +monorail: { + component: "Internals>Preferences" }
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/DIR_METADATA b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/DIR_METADATA index edff49c..45d75af 100644 --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/DIR_METADATA +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Preferences" +monorail: { + component: "Internals>Preferences" }
diff --git a/chrome/browser/prefetch/DIR_METADATA b/chrome/browser/prefetch/DIR_METADATA index fe82ff61..eaf73c7 100644 --- a/chrome/browser/prefetch/DIR_METADATA +++ b/chrome/browser/prefetch/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Preload" +monorail: { + component: "Internals>Preload" }
diff --git a/chrome/browser/prefetch/no_state_prefetch/DIR_METADATA b/chrome/browser/prefetch/no_state_prefetch/DIR_METADATA index 430a851..86105de4 100644 --- a/chrome/browser/prefetch/no_state_prefetch/DIR_METADATA +++ b/chrome/browser/prefetch/no_state_prefetch/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Preload>NoStatePrefetch" +monorail: { + component: "Internals>Preload>NoStatePrefetch" }
diff --git a/chrome/browser/prefetch/no_state_prefetch/prerender_manager_factory.cc b/chrome/browser/prefetch/no_state_prefetch/prerender_manager_factory.cc index de7df9f..ca7636b0 100644 --- a/chrome/browser/prefetch/no_state_prefetch/prerender_manager_factory.cc +++ b/chrome/browser/prefetch/no_state_prefetch/prerender_manager_factory.cc
@@ -25,7 +25,7 @@ // static PrerenderManager* PrerenderManagerFactory::GetForBrowserContext( content::BrowserContext* context) { - TRACE_EVENT0("browser", "PrerenderManagerFactory::GetForProfile") + TRACE_EVENT0("browser", "PrerenderManagerFactory::GetForProfile"); return static_cast<PrerenderManager*>( GetInstance()->GetServiceForBrowserContext(context, true)); }
diff --git a/chrome/browser/prefetch/prefetch_proxy/DIR_METADATA b/chrome/browser/prefetch/prefetch_proxy/DIR_METADATA index 51b346e8..97ce3be 100644 --- a/chrome/browser/prefetch/prefetch_proxy/DIR_METADATA +++ b/chrome/browser/prefetch/prefetch_proxy/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Preload>PrefetchProxy" +monorail: { + component: "Internals>Preload>PrefetchProxy" }
diff --git a/chrome/browser/prefetch/search_prefetch/search_prefetch_service_browsertest.cc b/chrome/browser/prefetch/search_prefetch/search_prefetch_service_browsertest.cc index 011dcb8a..dd22a826 100644 --- a/chrome/browser/prefetch/search_prefetch/search_prefetch_service_browsertest.cc +++ b/chrome/browser/prefetch/search_prefetch/search_prefetch_service_browsertest.cc
@@ -2304,6 +2304,66 @@ EXPECT_FALSE(prefetch_status.has_value()); } +IN_PROC_BROWSER_TEST_P(SearchPrefetchServiceEnabledBrowserTest, + RequestTimingIsNonNegative) { + base::HistogramTester histogram_tester; + auto* search_prefetch_service = + SearchPrefetchServiceFactory::GetForProfile(browser()->profile()); + EXPECT_NE(nullptr, search_prefetch_service); + + std::string search_terms = "prefetch_content"; + + GURL prefetch_url = GetSearchServerQueryURL(search_terms); + + EXPECT_TRUE(search_prefetch_service->MaybePrefetchURL(prefetch_url)); + auto prefetch_status = + search_prefetch_service->GetSearchPrefetchStatusForTesting( + base::ASCIIToUTF16(search_terms)); + WaitUntilStatusChangesTo(base::ASCIIToUTF16(search_terms), + SearchPrefetchStatus::kComplete); + + prefetch_status = search_prefetch_service->GetSearchPrefetchStatusForTesting( + base::ASCIIToUTF16(search_terms)); + ASSERT_TRUE(prefetch_status.has_value()); + EXPECT_EQ(SearchPrefetchStatus::kComplete, prefetch_status.value()); + + ui_test_utils::NavigateToURL(browser(), prefetch_url); + + content::RenderFrameHost* frame = GetWebContents()->GetMainFrame(); + + // Check the request total time is non-negative. + int value = -1; + std::string script = + "window.domAutomationController.send(window.performance.timing." + "responseEnd - window.performance.timing.requestStart)"; + EXPECT_TRUE(content::ExecuteScriptAndExtractInt(frame, script, &value)); + EXPECT_LE(0, value); + + // Check the response time is non-negative. + value = -1; + script = + "window.domAutomationController.send(window.performance.timing." + "responseEnd - window.performance.timing.responseStart)"; + EXPECT_TRUE(content::ExecuteScriptAndExtractInt(frame, script, &value)); + EXPECT_LE(0, value); + + // Check request start is after (or the same as) navigation start. + value = -1; + script = + "window.domAutomationController.send(window.performance.timing." + "requestStart - window.performance.timing.navigationStart)"; + EXPECT_TRUE(content::ExecuteScriptAndExtractInt(frame, script, &value)); + EXPECT_LE(0, value); + + // Check response end is after (or the same as) navigation start. + value = -1; + script = + "window.domAutomationController.send(window.performance.timing." + "responseEnd - window.performance.timing.navigationStart)"; + EXPECT_TRUE(content::ExecuteScriptAndExtractInt(frame, script, &value)); + EXPECT_LE(0, value); +} + // True means that responses are streamed, false means full responses must be // received in order to server the response. INSTANTIATE_TEST_SUITE_P(All,
diff --git a/chrome/browser/prefetch/search_prefetch/streaming_search_prefetch_url_loader.cc b/chrome/browser/prefetch/search_prefetch/streaming_search_prefetch_url_loader.cc index 3cccbe0e..4c9d581 100644 --- a/chrome/browser/prefetch/search_prefetch/streaming_search_prefetch_url_loader.cc +++ b/chrome/browser/prefetch/search_prefetch/streaming_search_prefetch_url_loader.cc
@@ -84,6 +84,12 @@ resource_response_->raw_request_response_info = nullptr; } + // We are serving, so if the request is complete before serving, mark the + // request completion time as now. + if (status_) { + status_->completion_time = base::TimeTicks::Now(); + } + forwarding_client_->OnReceiveResponse(std::move(resource_response_)); RunEventQueue(); }
diff --git a/chrome/browser/prefs/DIR_METADATA b/chrome/browser/prefs/DIR_METADATA index c08cafb..81c6dca2 100644 --- a/chrome/browser/prefs/DIR_METADATA +++ b/chrome/browser/prefs/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>Preferences" +monorail: { + component: "UI>Browser>Preferences" } -team_email: "chromium-dev@chromium.org" +team_email: "chromium-dev@chromium.org"
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index 7a08a794..5d3c84a 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc
@@ -410,6 +410,9 @@ #include "chrome/browser/media/feeds/media_feeds_service.h" #endif +#if BUILDFLAG(ENABLE_SESSION_SERVICE) +#include "chrome/browser/sessions/session_service_log.h" +#endif namespace { #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -908,6 +911,10 @@ omnibox::RegisterProfilePrefs(registry); ZeroSuggestProvider::RegisterProfilePrefs(registry); +#if BUILDFLAG(ENABLE_SESSION_SERVICE) + RegisterSessionServiceLogProfilePrefs(registry); +#endif + #if BUILDFLAG(ENABLE_EXTENSIONS) ExtensionWebUI::RegisterProfilePrefs(registry); RegisterAnimationPolicyPrefs(registry);
diff --git a/chrome/browser/previews/DIR_METADATA b/chrome/browser/previews/DIR_METADATA index a3eb23b..d243b83 100644 --- a/chrome/browser/previews/DIR_METADATA +++ b/chrome/browser/previews/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Blink>Previews" +monorail: { + component: "Blink>Previews" }
diff --git a/chrome/browser/printing/DIR_METADATA b/chrome/browser/printing/DIR_METADATA index d446a59..ee7161a6 100644 --- a/chrome/browser/printing/DIR_METADATA +++ b/chrome/browser/printing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Printing" +monorail: { + component: "Internals>Printing" }
diff --git a/chrome/browser/printing/cloud_print/DIR_METADATA b/chrome/browser/printing/cloud_print/DIR_METADATA index 7619ec17e..67273c4 100644 --- a/chrome/browser/printing/cloud_print/DIR_METADATA +++ b/chrome/browser/printing/cloud_print/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>CloudPrint" +monorail: { + component: "Services>CloudPrint" }
diff --git a/chrome/browser/privacy/settings/DIR_METADATA b/chrome/browser/privacy/settings/DIR_METADATA index 0917002..3bedab4 100644 --- a/chrome/browser/privacy/settings/DIR_METADATA +++ b/chrome/browser/privacy/settings/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Settings>Privacy" +monorail: { + component: "UI>Settings>Privacy" } -team_email: "chrome-friendly-settings@google.com" +team_email: "chrome-friendly-settings@google.com"
diff --git a/chrome/browser/privacy_budget/DIR_METADATA b/chrome/browser/privacy_budget/DIR_METADATA index 108597dc..fe6ef77 100644 --- a/chrome/browser/privacy_budget/DIR_METADATA +++ b/chrome/browser/privacy_budget/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Privacy>Fingerprinting" +monorail: { + component: "Privacy>Fingerprinting" } -team_email: "privacy-sandbox-dev@chromium.org" +team_email: "privacy-sandbox-dev@chromium.org"
diff --git a/chrome/browser/privacy_sandbox/DIR_METADATA b/chrome/browser/privacy_sandbox/DIR_METADATA index 0917002..3bedab4 100644 --- a/chrome/browser/privacy_sandbox/DIR_METADATA +++ b/chrome/browser/privacy_sandbox/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Settings>Privacy" +monorail: { + component: "UI>Settings>Privacy" } -team_email: "chrome-friendly-settings@google.com" +team_email: "chrome-friendly-settings@google.com"
diff --git a/chrome/browser/profile_resetter/DIR_METADATA b/chrome/browser/profile_resetter/DIR_METADATA index c08cafb..81c6dca2 100644 --- a/chrome/browser/profile_resetter/DIR_METADATA +++ b/chrome/browser/profile_resetter/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>Preferences" +monorail: { + component: "UI>Browser>Preferences" } -team_email: "chromium-dev@chromium.org" +team_email: "chromium-dev@chromium.org"
diff --git a/chrome/browser/profiles/DIR_METADATA b/chrome/browser/profiles/DIR_METADATA index 4ab9953..3c63e1a4 100644 --- a/chrome/browser/profiles/DIR_METADATA +++ b/chrome/browser/profiles/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>Profiles" +monorail: { + component: "UI>Browser>Profiles" } -team_email: "chrome-signin@chromium.org" +team_email: "chrome-signin@chromium.org"
diff --git a/chrome/browser/profiles/android/DIR_METADATA b/chrome/browser/profiles/android/DIR_METADATA index da841c6..04ba9fd 100644 --- a/chrome/browser/profiles/android/DIR_METADATA +++ b/chrome/browser/profiles/android/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>Mobile" +monorail: { + component: "UI>Browser>Mobile" } -os: ANDROID +os: ANDROID
diff --git a/chrome/browser/profiles/profile_attributes_entry.h b/chrome/browser/profiles/profile_attributes_entry.h index 6a050ea..0f30ccc 100644 --- a/chrome/browser/profiles/profile_attributes_entry.h +++ b/chrome/browser/profiles/profile_attributes_entry.h
@@ -209,7 +209,8 @@ // via AddAccount* functions). void RecordAccountMetrics() const; - // TODO(crbug.com/866790): Check it is not used anymore and remove it. + // TODO(crbug/1155729): Check it is not used anymore for deprecated supervised + // users and remove it. static const char kSupervisedUserId[]; static const char kIsOmittedFromProfileListKey[]; static const char kAvatarIconKey[];
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc index 007ae3d..c1b0306 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc
@@ -479,7 +479,7 @@ delegate_(delegate), shared_cors_origin_access_list_( content::SharedCorsOriginAccessList::Create()) { - TRACE_EVENT0("browser,startup", "ProfileImpl::ctor") + TRACE_EVENT0("browser,startup", "ProfileImpl::ctor"); DCHECK(!path.empty()) << "Using an empty path will attempt to write " << "profile files to the root directory!"; @@ -652,7 +652,7 @@ } void ProfileImpl::DoFinalInit() { - TRACE_EVENT0("browser", "ProfileImpl::DoFinalInit") + TRACE_EVENT0("browser", "ProfileImpl::DoFinalInit"); PrefService* prefs = GetPrefs(); @@ -1033,7 +1033,7 @@ ExtensionSpecialStoragePolicy* ProfileImpl::GetExtensionSpecialStoragePolicy() { #if BUILDFLAG(ENABLE_EXTENSIONS) if (!extension_special_storage_policy_.get()) { - TRACE_EVENT0("browser", "ProfileImpl::GetExtensionSpecialStoragePolicy") + TRACE_EVENT0("browser", "ProfileImpl::GetExtensionSpecialStoragePolicy"); extension_special_storage_policy_ = new ExtensionSpecialStoragePolicy( CookieSettingsFactory::GetForProfile(this).get()); }
diff --git a/chrome/browser/profiling_host/DIR_METADATA b/chrome/browser/profiling_host/DIR_METADATA index 56d470a..ff46333 100644 --- a/chrome/browser/profiling_host/DIR_METADATA +++ b/chrome/browser/profiling_host/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Privacy" +monorail: { + component: "Privacy" }
diff --git a/chrome/browser/promo_browser_command/DIR_METADATA b/chrome/browser/promo_browser_command/DIR_METADATA index 467ac9b4..eb6250a8 100644 --- a/chrome/browser/promo_browser_command/DIR_METADATA +++ b/chrome/browser/promo_browser_command/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>NewTabPage" +monorail: { + component: "UI>Browser>NewTabPage" }
diff --git a/chrome/browser/push_messaging/DIR_METADATA b/chrome/browser/push_messaging/DIR_METADATA index 5b2f15e..eb61d5d 100644 --- a/chrome/browser/push_messaging/DIR_METADATA +++ b/chrome/browser/push_messaging/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>PushAPI" +monorail: { + component: "Blink>PushAPI" } -team_email: "platform-capabilities@chromium.org" +team_email: "platform-capabilities@chromium.org"
diff --git a/chrome/browser/reading_list/DIR_METADATA b/chrome/browser/reading_list/DIR_METADATA index ee70959..8dfd0f4 100644 --- a/chrome/browser/reading_list/DIR_METADATA +++ b/chrome/browser/reading_list/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>ReadLater" +monorail: { + component: "UI>Browser>ReadLater" } -os: ANDROID +os: ANDROID
diff --git a/chrome/browser/recovery/DIR_METADATA b/chrome/browser/recovery/DIR_METADATA index f364a8b8..76d15d64 100644 --- a/chrome/browser/recovery/DIR_METADATA +++ b/chrome/browser/recovery/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals" +monorail: { + component: "Internals" } -team_email: "chrome-updates-dev@chromium.org" +team_email: "chrome-updates-dev@chromium.org"
diff --git a/chrome/browser/renderer_context_menu/DIR_METADATA b/chrome/browser/renderer_context_menu/DIR_METADATA index 3d8600bf..d182185 100644 --- a/chrome/browser/renderer_context_menu/DIR_METADATA +++ b/chrome/browser/renderer_context_menu/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser" +monorail: { + component: "UI>Browser" }
diff --git a/chrome/browser/renderer_context_menu/accessibility_labels_menu_observer_browsertest.cc b/chrome/browser/renderer_context_menu/accessibility_labels_menu_observer_browsertest.cc index 76f6de97..b1baab0d 100644 --- a/chrome/browser/renderer_context_menu/accessibility_labels_menu_observer_browsertest.cc +++ b/chrome/browser/renderer_context_menu/accessibility_labels_menu_observer_browsertest.cc
@@ -18,7 +18,7 @@ #include "content/public/test/browser_test.h" #include "testing/gtest/include/gtest/gtest.h" #if BUILDFLAG(IS_CHROMEOS_ASH) -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #else #include "content/public/browser/browser_accessibility_state.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/renderer_host/DIR_METADATA b/chrome/browser/renderer_host/DIR_METADATA index 66c4b945..c532e53 100644 --- a/chrome/browser/renderer_host/DIR_METADATA +++ b/chrome/browser/renderer_host/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Content>Core" +monorail: { + component: "Content>Core" }
diff --git a/chrome/browser/renderer_host/pepper/DIR_METADATA b/chrome/browser/renderer_host/pepper/DIR_METADATA index 4c77ce2..a475752 100644 --- a/chrome/browser/renderer_host/pepper/DIR_METADATA +++ b/chrome/browser/renderer_host/pepper/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Plugins>Pepper" +monorail: { + component: "Internals>Plugins>Pepper" }
diff --git a/chrome/browser/resource_coordinator/DIR_METADATA b/chrome/browser/resource_coordinator/DIR_METADATA index 887c99ef..731385a7 100644 --- a/chrome/browser/resource_coordinator/DIR_METADATA +++ b/chrome/browser/resource_coordinator/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>ResourceCoordinator" +monorail: { + component: "Internals>ResourceCoordinator" } -team_email: "catan-team@chromium.org" +team_email: "catan-team@chromium.org"
diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/accessibility_common_test.js b/chrome/browser/resources/chromeos/accessibility/accessibility_common/accessibility_common_test.js index 3785a7f0..72f44dd 100644 --- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/accessibility_common_test.js +++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/accessibility_common_test.js
@@ -20,7 +20,7 @@ #include "ash/shell.h" #include "base/bind.h" #include "base/callback.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/common/extensions/extension_constants.h" #include "content/public/test/browser_test.h" `);
diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/autoclick/autoclick_test.js b/chrome/browser/resources/chromeos/accessibility/accessibility_common/autoclick/autoclick_test.js index 127f9d1..c563856 100644 --- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/autoclick/autoclick_test.js +++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/autoclick/autoclick_test.js
@@ -37,7 +37,7 @@ #include "ash/shell.h" #include "base/bind.h" #include "base/callback.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/common/extensions/extension_constants.h" #include "content/public/test/browser_test.h" `);
diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/magnifier/magnifier_test.js b/chrome/browser/resources/chromeos/accessibility/accessibility_common/magnifier/magnifier_test.js index f7196e17..5492a861 100644 --- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/magnifier/magnifier_test.js +++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/magnifier/magnifier_test.js
@@ -47,7 +47,7 @@ testGenCppIncludes() { super.testGenCppIncludes(); GEN(` -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/common/extensions/extension_constants.h" #include "content/public/test/browser_test.h" `);
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/testing/chromevox_e2e_test_base.js b/chrome/browser/resources/chromeos/accessibility/chromevox/testing/chromevox_e2e_test_base.js index 0d73c29..822b2161 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/testing/chromevox_e2e_test_base.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/testing/chromevox_e2e_test_base.js
@@ -21,7 +21,7 @@ #include "ash/shell.h" #include "base/bind.h" #include "base/callback.h" - #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" + #include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/common/extensions/extension_constants.h" #include "content/public/test/browser_test.h" #include "extensions/common/extension_l10n_util.h"
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_e2e_test_base.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_e2e_test_base.js index 179af3e..972d1e3 100644 --- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_e2e_test_base.js +++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_e2e_test_base.js
@@ -17,7 +17,7 @@ #include "ash/shell.h" #include "base/bind.h" #include "base/callback.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/common/extensions/extension_constants.h" #include "content/public/test/browser_test.h" #include "ui/accessibility/accessibility_features.h"
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_en-GB.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_en-GB.xtb index af65a0f..c66384d 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_en-GB.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_en-GB.xtb
@@ -45,7 +45,7 @@ <translation id="1230503547248836149">Selection start</translation> <translation id="1236794971743289975">Endnote</translation> <translation id="1237866625126425153">rdgrp</translation> -<translation id="1243477406442346359">Cornflower Blue</translation> +<translation id="1243477406442346359">Cornflower blue</translation> <translation id="1246424317317450637">Bold</translation> <translation id="1251750620252348585">Next level 6 heading</translation> <translation id="1268366246392928616">No previous maths expression</translation> @@ -348,7 +348,7 @@ <translation id="3389259863310851658">Previous form field</translation> <translation id="3393605254399152980">Drag one finger to hear what you touch</translation> <translation id="3406283310380167331">Show forms list</translation> -<translation id="3414400929511680526">Alice Blue</translation> +<translation id="3414400929511680526">Alice blue</translation> <translation id="3418936350470374046">No cell below</translation> <translation id="3435494200763325275">Tab navigation continued</translation> <translation id="344800400831402066">Peru</translation> @@ -410,11 +410,11 @@ <translation id="3907138069015388678">lstgrd</translation> <translation id="3909320334364316587">Previous level 6 heading</translation> <translation id="3914173277599553213">Required</translation> -<translation id="3914732343065571127">ChromeVox Command Reference</translation> +<translation id="3914732343065571127">ChromeVox command reference</translation> <translation id="3930383913623796990">Spring Green</translation> <translation id="3930498801443296724">Pullquote</translation> <translation id="3935615366277838204">Cap <ph name="LETTER" /></translation> -<translation id="3936394396199829062">Lavender Blush</translation> +<translation id="3936394396199829062">Lavender blush</translation> <translation id="3943857333388298514">Paste</translation> <translation id="3962990492275676168">Start reading from current location</translation> <translation id="3970951409746498040">Sandy Brown</translation> @@ -557,7 +557,7 @@ <translation id="5020651427400641814">Enable speech logging</translation> <translation id="5041394372352067729">Move braille display to top of page</translation> <translation id="5042770794184672516">Increase speech volume</translation> -<translation id="5042992464904238023">Web Content</translation> +<translation id="5042992464904238023">Web content</translation> <translation id="5045870649377683106">Now, find the left shift key, which is directly above the control key. To continue, press the left shift key.</translation> <translation id="5050015258024679800">Previous level 4 heading</translation> <translation id="5054047268577924192">Previous list item</translation> @@ -982,7 +982,7 @@ <translation id="8313653172105209786">dir</translation> <translation id="8316881042119029234">Old Lace</translation> <translation id="8324974933005349667">Personalise Text-to-Speech settings</translation> -<translation id="8326783648485765113">Lawn Green</translation> +<translation id="8326783648485765113">Lawn green</translation> <translation id="8328063869313048659">Toggle dark screen</translation> <translation id="8345569862449483843">{COUNT,plural, =1{pound}other{# pound signs}}</translation> <translation id="8378855320830505539">Region</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/switch_access/switch_access_e2e_test_base.js b/chrome/browser/resources/chromeos/accessibility/switch_access/switch_access_e2e_test_base.js index 72668ec..2497394 100644 --- a/chrome/browser/resources/chromeos/accessibility/switch_access/switch_access_e2e_test_base.js +++ b/chrome/browser/resources/chromeos/accessibility/switch_access/switch_access_e2e_test_base.js
@@ -16,7 +16,7 @@ #include "ash/shell.h" #include "base/bind.h" #include "base/callback.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/common/extensions/extension_constants.h" #include "content/public/test/browser_test.h" #include "ash/keyboard/ui/keyboard_util.h"
diff --git a/chrome/browser/resources/chromeos/edu_coexistence/edu_coexistence_ui.js b/chrome/browser/resources/chromeos/edu_coexistence/edu_coexistence_ui.js index de25c98..7c72bfb 100644 --- a/chrome/browser/resources/chromeos/edu_coexistence/edu_coexistence_ui.js +++ b/chrome/browser/resources/chromeos/edu_coexistence/edu_coexistence_ui.js
@@ -83,15 +83,15 @@ }); this.webview_.addEventListener('loadcommit', (e) => { - this.configureUiForGaiaFlow(new URL(e.url)); + this.configureUiForGaiaFlow(); }); }, /** * Configures the UI for showing/hiding the GAIA login flow. - * @param {URL} currentUrl */ - configureUiForGaiaFlow(currentUrl) { + configureUiForGaiaFlow() { + var currentUrl = new URL(this.webview_.src); var mainDiv = this.$$('edu-coexistence-template').$$('div.main'); if (currentUrl.hostname !== this.controller_.getFlowOriginHostname()) {
diff --git a/chrome/browser/resources/chromeos/emoji_picker/DIR_METADATA b/chrome/browser/resources/chromeos/emoji_picker/DIR_METADATA index 1c0b394..ca0e79f 100644 --- a/chrome/browser/resources/chromeos/emoji_picker/DIR_METADATA +++ b/chrome/browser/resources/chromeos/emoji_picker/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "OS>Inputs" +monorail: { + component: "OS>Inputs" }
diff --git a/chrome/browser/resources/local_ntp/DIR_METADATA b/chrome/browser/resources/local_ntp/DIR_METADATA index ef0d697..4c751468 100644 --- a/chrome/browser/resources/local_ntp/DIR_METADATA +++ b/chrome/browser/resources/local_ntp/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>NewTabPage" +monorail: { + component: "UI>Browser>NewTabPage" } -team_email: "ntp-dev@chromium.org" +team_email: "ntp-dev@chromium.org"
diff --git a/chrome/browser/resources/management/DIR_METADATA b/chrome/browser/resources/management/DIR_METADATA index 4c21d96..f37723a 100644 --- a/chrome/browser/resources/management/DIR_METADATA +++ b/chrome/browser/resources/management/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise" +monorail: { + component: "Enterprise" }
diff --git a/chrome/browser/resources/media/DIR_METADATA b/chrome/browser/resources/media/DIR_METADATA index 692424ee..e115693 100644 --- a/chrome/browser/resources/media/DIR_METADATA +++ b/chrome/browser/resources/media/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Media>UI" +monorail: { + component: "Internals>Media>UI" }
diff --git a/chrome/browser/resources/media/OWNERS b/chrome/browser/resources/media/OWNERS index 3ed4896..8e63383 100644 --- a/chrome/browser/resources/media/OWNERS +++ b/chrome/browser/resources/media/OWNERS
@@ -1,6 +1,5 @@ # For Media Engagement mlamouri@chromium.org -beccahughes@chromium.org # For WebRTC per-file webrtc_*=file://third_party/webrtc_overrides/OWNERS
diff --git a/chrome/browser/resources/media_router/DIR_METADATA b/chrome/browser/resources/media_router/DIR_METADATA index aa4ac5f..829eb64 100644 --- a/chrome/browser/resources/media_router/DIR_METADATA +++ b/chrome/browser/resources/media_router/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Cast>UI" +monorail: { + component: "Internals>Cast>UI" }
diff --git a/chrome/browser/resources/nearby_internals/DIR_METADATA b/chrome/browser/resources/nearby_internals/DIR_METADATA index 049571c0..3d76e46 100644 --- a/chrome/browser/resources/nearby_internals/DIR_METADATA +++ b/chrome/browser/resources/nearby_internals/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "OS>Systems>Multidevice>Nearby" +monorail: { + component: "OS>Systems>Multidevice>Nearby" }
diff --git a/chrome/browser/resources/nearby_share/DIR_METADATA b/chrome/browser/resources/nearby_share/DIR_METADATA index ac713319..135a13c 100644 --- a/chrome/browser/resources/nearby_share/DIR_METADATA +++ b/chrome/browser/resources/nearby_share/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Sharing>Nearby" +monorail: { + component: "UI>Browser>Sharing>Nearby" }
diff --git a/chrome/browser/resources/net_internals/DIR_METADATA b/chrome/browser/resources/net_internals/DIR_METADATA index cf01a10..99a0a64 100644 --- a/chrome/browser/resources/net_internals/DIR_METADATA +++ b/chrome/browser/resources/net_internals/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Network>Logging" +monorail: { + component: "Internals>Network>Logging" }
diff --git a/chrome/browser/resources/new_tab_page/DIR_METADATA b/chrome/browser/resources/new_tab_page/DIR_METADATA index 467ac9b4..eb6250a8 100644 --- a/chrome/browser/resources/new_tab_page/DIR_METADATA +++ b/chrome/browser/resources/new_tab_page/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>NewTabPage" +monorail: { + component: "UI>Browser>NewTabPage" }
diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/resources/new_tab_page/app.html index c9b5252..cf82c3f1 100644 --- a/chrome/browser/resources/new_tab_page/app.html +++ b/chrome/browser/resources/new_tab_page/app.html
@@ -262,10 +262,12 @@ </ntp-realbox> <dom-if if="[[lazyRender_]]" on-dom-change="onLazyRendered_"> <template> - <ntp-most-visited id="mostVisited" dark$="[[theme_.isDark]]" - use-white-add-icon$="[[theme_.shortcutUseWhiteAddIcon]]" - use-title-pill$="[[theme_.shortcutUseTitlePill]]"> - </ntp-most-visited> + <template is="dom-if" if="[[shortcutsEnabled_]]"> + <ntp-most-visited id="mostVisited" dark$="[[theme_.isDark]]" + use-white-add-icon$="[[theme_.shortcutUseWhiteAddIcon]]" + use-title-pill$="[[theme_.shortcutUseTitlePill]]"> + </ntp-most-visited> + </template> <ntp-middle-slot-promo on-ntp-middle-slot-promo-loaded="onMiddleSlotPromoLoaded_"> </ntp-middle-slot-promo>
diff --git a/chrome/browser/resources/new_tab_page/app.js b/chrome/browser/resources/new_tab_page/app.js index 3ed15c2..793c62e 100644 --- a/chrome/browser/resources/new_tab_page/app.js +++ b/chrome/browser/resources/new_tab_page/app.js
@@ -198,6 +198,12 @@ }, /** @private */ + shortcutsEnabled_: { + type: Boolean, + value: () => loadTimeData.getBoolean('shortcutsEnabled'), + }, + + /** @private */ modulesEnabled_: { type: Boolean, value: () => loadTimeData.getBoolean('modulesEnabled'), @@ -876,8 +882,7 @@ this.dismissedModuleData_ = { id: $$(this, '#modules').itemForElement(e.target).id, element: /** @type {!Element} */ (e.target), - message: loadTimeData.getStringF( - 'dismissModuleToastMessage', e.detail.message), + message: e.detail.message, restoreCallback: e.detail.restoreCallback, }; this.dismissedModuleData_.element.hidden = true;
diff --git a/chrome/browser/resources/new_tab_page/browser_proxy.js b/chrome/browser/resources/new_tab_page/browser_proxy.js index ce43c6f..ceeecd35 100644 --- a/chrome/browser/resources/new_tab_page/browser_proxy.js +++ b/chrome/browser/resources/new_tab_page/browser_proxy.js
@@ -85,7 +85,7 @@ */ waitForLazyRender() { return new Promise((resolve, reject) => { - requestIdleCallback(resolve); + requestIdleCallback(resolve, {timeout: 500}); }); }
diff --git a/chrome/browser/resources/new_tab_page/customize_dialog.html b/chrome/browser/resources/new_tab_page/customize_dialog.html index ca42d9b..5c0af43f 100644 --- a/chrome/browser/resources/new_tab_page/customize_dialog.html +++ b/chrome/browser/resources/new_tab_page/customize_dialog.html
@@ -214,7 +214,8 @@ <div id="backgroundsIcon" class="menu-item-icon"></div> $i18n{backgroundsMenuItem} </div> - <div class="menu-item" page-name="shortcuts" tabindex="0"> + <div class="menu-item" page-name="shortcuts" tabindex="0" + hidden$="[[!shortcutsEnabled_]]"> <div id="shortcutsIcon" class="menu-item-icon"></div> $i18n{shortcutsMenuItem} </div>
diff --git a/chrome/browser/resources/new_tab_page/customize_dialog.js b/chrome/browser/resources/new_tab_page/customize_dialog.js index bba26d8..c1b4310 100644 --- a/chrome/browser/resources/new_tab_page/customize_dialog.js +++ b/chrome/browser/resources/new_tab_page/customize_dialog.js
@@ -76,6 +76,12 @@ }, /** @private */ + shortcutsEnabled_: { + type: Boolean, + value: () => loadTimeData.getBoolean('shortcutsEnabled'), + }, + + /** @private */ modulesEnabled_: { type: Boolean, value: () => loadTimeData.getBoolean('modulesEnabled'),
diff --git a/chrome/browser/resources/new_tab_page/modules/cart/module.html b/chrome/browser/resources/new_tab_page/modules/cart/module.html index 0e60644..e6d5b7ce 100644 --- a/chrome/browser/resources/new_tab_page/modules/cart/module.html +++ b/chrome/browser/resources/new_tab_page/modules/cart/module.html
@@ -7,20 +7,26 @@ } #moduleContent { - box-sizing: border-box; display: flex; - flex-direction: row; - float: left; height: 100%; - padding-inline-end: 15px; - padding-inline-start: 15px; - width: 100%; + position: relative; + } + + #moduleContent:hover .side-scroll-button { + visibility: visible; + } + + #cartCarousel { + display: inline-block; + overflow-x: hidden; + white-space: nowrap; + z-index: 0; } .cart-item { border: 1px solid var(--ntp-border-color); border-radius: 4px; - display: flex; + display: inline-flex; flex-direction: column; height: 160px; margin: 0 4px; @@ -113,7 +119,7 @@ right: unset; } - cr-icon-button { + .cart-item cr-icon-button { --cr-icon-button-fill-color: var(--ntp-icon-button-color); --cr-icon-button-size: 16px; --cr-icon-button-transition: none; @@ -125,52 +131,134 @@ transition: opacity 100ms ease-in-out; } - cr-icon-button:hover { + .cart-item cr-icon-button:hover { --cr-icon-button-fill-color: var(--ntp-icon-button-color-active); } + + .side-scroll-shadow { + background-color: var(--ntp-background-override-color); + display: flex; + height: 160px; + opacity: 0.38; + pointer-events: none; + position: absolute; + width: 24px; + z-index: 1; + } + + #leftScrollShadow { + left: 0; + } + + #rightScrollShadow { + right: 0; + } + + .side-scroll-button { + --cr-icon-button-fill-color: var(--ntp-icon-button-color); + --cr-icon-button-icon-size: 16px; + --cr-icon-button-margin-start: 0; + --cr-icon-button-margin-end: 0; + --cr-icon-image: url(icons/chevron.svg); + background-color: var(--ntp-theme-shortcut-background-color); + border-radius: 50%; + position: absolute; + top: 50%; + transform: translateY(-50%); + visibility: hidden; + z-index: 2; + } + + .side-scroll-button:hover { + --cr-icon-button-fill-color: var(--ntp-icon-button-color-active); + background-color: var( --ntp-active-background-color); + } + + #leftScrollButton { + --cr-icon-image-transform: rotate(90deg); + left: 0; + margin-inline-start: 4px; + } + + #rightScrollButton { + --cr-icon-image-transform: rotate(270deg); + margin-inline-end: 4px; + right: 0; + } + + .probe { + display: inline-flex; + width: 15px; + } </style> <ntp-module-header chip-text="$i18n{modulesCartHeaderNew}" - show-dismiss-button on-dismiss-button-click="onDismissButtonClick_"> + show-menu-button on-menu-button-click="onModuleMenuButtonClick_"> $i18n{modulesCartTitle} </ntp-module-header> <div id="moduleContent"> - <template id="cartItemRepeat" is="dom-repeat" items="[[cartItems]]"> - <a class="cart-item" title="[[item.merchant]]" - href="[[item.cartUrl.url]]"> - <cr-icon-button class="icon-more-vert" - title="$i18n{moreActions}" on-click="onMenuButtonClick_"> - </cr-icon-button> - <img class="favicon-image" is="ntp-img" - auto-src="[[getFaviconUrl_(item.cartUrl.url)]]"></img> - <div class="cart-title"> - <span class="merchant">[[item.merchant]]</span> - <template is="dom-if" if="[[item.productImageUrls.length]]"> - <span class="item-count"> -  • [[item.productImageUrls.length]] - </span> - </template> - </div> - <div class="thumbnail-container"> - <template is="dom-if" - if="[[item.productImageUrls.length]]"> - <ul class="thumbnail-list"> - <template is="dom-repeat" - items="[[getImagesToShow_(item.productImageUrls)]]"> - <li> - <img class="thumbnail-img" is="ntp-img" - auto-src="[[item.url]]"></img> - </li> - </template> - </ul> - </template> - <template id="thumbnailFallback" is="dom-if" - if="[[!item.productImageUrls.length]]"> - <img class="thumbnail-fallback" - src="chrome://new-tab-page/icons/cart_fallback.svg"> - </template> - </div> - </a> + <template is="dom-if" if="[[showLeftScrollButton_]]"> + <div id="leftScrollShadow" class="side-scroll-shadow"></div> + <cr-icon-button id="leftScrollButton" + class="side-scroll-button" on-click="onLeftScrollClick_"> + </cr-icon-button> </template> - <cr-action-menu id="actionMenu"></cr-action-menu> + <div id="cartCarousel"> + <div id="leftProbe" class="probe"></div> + <template id="cartItemRepeat" is="dom-repeat" items="[[cartItems]]"> + <a class="cart-item" title="[[item.merchant]]" + href="[[item.cartUrl.url]]"> + <cr-icon-button class="icon-more-vert" + title="$i18n{moreActions}" on-click="onCartMenuButtonClick_"> + </cr-icon-button> + <img class="favicon-image" is="ntp-img" + auto-src="[[getFaviconUrl_(item.cartUrl.url)]]"></img> + <div class="cart-title"> + <span class="merchant">[[item.merchant]]</span> + <template is="dom-if" if="[[item.productImageUrls.length]]"> + <span class="item-count"> +  • [[item.productImageUrls.length]] + </span> + </template> + </div> + <div class="thumbnail-container"> + <template is="dom-if" + if="[[item.productImageUrls.length]]"> + <ul class="thumbnail-list"> + <template is="dom-repeat" + items="[[getImagesToShow_(item.productImageUrls)]]"> + <li> + <img class="thumbnail-img" is="ntp-img" + auto-src="[[item.url]]"></img> + </li> + </template> + </ul> + </template> + <template id="thumbnailFallback" is="dom-if" + if="[[!item.productImageUrls.length]]"> + <img class="thumbnail-fallback" + src="chrome://new-tab-page/icons/cart_fallback.svg"> + </template> + </div> + </a> + </template> + <div id="rightProbe" class="probe"></div> + </div> + <cr-action-menu id="cartActionMenu"></cr-action-menu> + <cr-action-menu id="moduleActionMenu"> + <button id="hideModuleButton" class="dropdown-item" + on-click="onModuleHide_"> + $i18n{modulesCartModuleMenuHide} + </button> + <button id="removeModuleButton" class="dropdown-item" + on-click="onModuleRemove_"> + $i18n{modulesCartModuleMenuRemove} + </button> + </cr-action-menu> + <template is="dom-if" if="[[showRightScrollButton_]]"> + <div id="rightScrollShadow" class="side-scroll-shadow"> </div> + <cr-icon-button id="rightScrollButton" + class="side-scroll-button" on-click="onRightScrollClick_"> + </cr-icon-button> + </template> </div> \ No newline at end of file
diff --git a/chrome/browser/resources/new_tab_page/modules/cart/module.js b/chrome/browser/resources/new_tab_page/modules/cart/module.js index cfcd5d2c..9567056e 100644 --- a/chrome/browser/resources/new_tab_page/modules/cart/module.js +++ b/chrome/browser/resources/new_tab_page/modules/cart/module.js
@@ -9,6 +9,7 @@ import 'chrome://resources/cr_elements/cr_icons_css.m.js'; import 'chrome://resources/cr_elements/cr_action_menu/cr_action_menu.m.js'; +import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ModuleDescriptor} from '../module_descriptor.js'; import {ChromeCartProxy} from './chrome_cart_proxy.js'; @@ -32,9 +33,60 @@ return { /** @type {!Array<!chromeCart.mojom.MerchantCart>} */ cartItems: Array, + + /** @private {boolean} */ + showLeftScrollButton_: Boolean, + + /** @private {boolean} */ + showRightScrollButton_: Boolean, }; } + constructor() { + super(); + + /** @private {IntersectionObserver} */ + this.intersectionObserver_ = null; + + /** @type {string} */ + this.scrollBehavior = 'smooth'; + } + + /** @override */ + connectedCallback() { + super.connectedCallback(); + const leftProbe = this.$.cartCarousel.querySelector('#leftProbe'); + const rightProbe = this.$.cartCarousel.querySelector('#rightProbe'); + this.intersectionObserver_ = new IntersectionObserver(entries => { + entries.forEach(({target, intersectionRatio}) => { + const show = intersectionRatio === 0; + if (target === leftProbe) { + this.showLeftScrollButton_ = show; + if (show) { + this.dispatchEvent(new Event('left-scroll-show')); + } else { + this.dispatchEvent(new Event('left-scroll-hide')); + } + } else if (target === rightProbe) { + this.showRightScrollButton_ = show; + if (show) { + this.dispatchEvent(new Event('right-scroll-show')); + } else { + this.dispatchEvent(new Event('right-scroll-hide')); + } + } + }); + }, {root: this.$.cartCarousel}); + this.shadowRoot.querySelectorAll('.probe').forEach( + el => this.intersectionObserver_.observe(el)); + } + + /** @override */ + disconnectedCallback() { + super.disconnectedCallback(); + this.intersectionObserver_.disconnect(); + } + /** * @param {string} url * @return {string} @@ -58,33 +110,120 @@ return imageUrls.slice(0, 3); } - /** @private */ - onDismissButtonClick_() { - ChromeCartProxy.getInstance().handler.dismissCartModule(); - this.dispatchEvent(new CustomEvent('dismiss-module', { - bubbles: true, - composed: true, - detail: { - message: 'Your carts', - restoreCallback: this.onRestore_.bind(this), - }, - })); - } - - /** @private */ - onRestore_() { - ChromeCartProxy.getInstance().handler.restoreCartModule(); + /** + * @param {!Event} e + * @private + */ + onCartMenuButtonClick_(e) { + e.preventDefault(); + this.$.cartActionMenu.showAt(e.target); } /** * @param {!Event} e * @private */ - onMenuButtonClick_(e) { + onModuleMenuButtonClick_(e) { e.preventDefault(); - const index = this.$.cartItemRepeat.indexForElement( - e.target.parentElement.parentElement); - this.$.actionMenu.showAt(e.target); + this.$.moduleActionMenu.showAt(e.target); + } + + /** @private */ + onModuleHide_() { + ChromeCartProxy.getInstance().handler.hideCartModule(); + this.dispatchEvent(new CustomEvent('dismiss-module', { + bubbles: true, + composed: true, + detail: { + message: + loadTimeData.getString('modulesCartModuleMenuHideToastMessage'), + restoreCallback: () => { + ChromeCartProxy.getInstance().handler.restoreHiddenCartModule(); + }, + }, + })); + } + + /** @private */ + onModuleRemove_() { + ChromeCartProxy.getInstance().handler.removeCartModule(); + this.dispatchEvent(new CustomEvent('dismiss-module', { + bubbles: true, + composed: true, + detail: { + message: + loadTimeData.getString('modulesCartModuleMenuRemoveToastMessage'), + restoreCallback: () => { + ChromeCartProxy.getInstance().handler.restoreRemovedCartModule(); + }, + }, + })); + } + + /** + * Gets called when the right scroll button is clicked to show the next items + * on the right. + * @private + */ + onRightScrollClick_() { + const carts = this.$.cartCarousel.querySelectorAll('.cart-item'); + let lastVisibleIndex = 0; + for (let i = 0; i < carts.length; i++) { + if (this.getVisibilityForIndex_(i)) { + lastVisibleIndex = i; + } + } + this.scrollToIndex_(lastVisibleIndex + 1); + } + + /** + * Gets called when the left scroll button is clicked to show the previous + * items on the left. + * @private + */ + onLeftScrollClick_() { + const carts = this.$.cartCarousel.querySelectorAll('.cart-item'); + let visibleRange = 0, firstVisibleIndex = 0; + for (let i = carts.length - 1; i >= 0; i--) { + if (this.getVisibilityForIndex_(i)) { + visibleRange += 1; + firstVisibleIndex = i; + } + } + this.scrollToIndex_(Math.max(0, firstVisibleIndex - visibleRange)); + } + + /** + * @param {!number} index The target index to scroll to. + * @private + */ + scrollToIndex_(index) { + const carts = this.$.cartCarousel.querySelectorAll('.cart-item'); + // Calculate scroll shadow width as scroll offset. + const leftScrollShadow = this.shadowRoot.getElementById('leftScrollShadow'); + const rightScrollShadow = + this.shadowRoot.getElementById('rightScrollShadow'); + const scrollOffset = Math.max( + leftScrollShadow ? leftScrollShadow.offsetWidth : 0, + rightScrollShadow ? rightScrollShadow.offsetWidth : 0); + this.$.cartCarousel.scrollTo({ + top: 0, + left: carts[index].offsetLeft - scrollOffset, + behavior: this.scrollBehavior, + }); + } + + /** + * @param {!number} index + * @return {!boolean} True if the item at index is completely visible. + * @private + */ + getVisibilityForIndex_(index) { + const cartCarousel = this.$.cartCarousel; + const cart = cartCarousel.querySelectorAll('.cart-item')[index]; + return cart && (cart.offsetLeft > cartCarousel.scrollLeft) && + (cartCarousel.scrollLeft + cartCarousel.clientWidth) > + (cart.offsetLeft + cart.offsetWidth); } }
diff --git a/chrome/browser/resources/new_tab_page/modules/module_header.html b/chrome/browser/resources/new_tab_page/modules/module_header.html index 0e47d3ad..1e37989 100644 --- a/chrome/browser/resources/new_tab_page/modules/module_header.html +++ b/chrome/browser/resources/new_tab_page/modules/module_header.html
@@ -47,3 +47,8 @@ class="icon-clear" on-click="onDismissButtonClick_"> </cr-icon-button> </template> +<template is="dom-if" if="[[showMenuButton]]"> + <cr-icon-button id="menuButton" title="$i18n{moreActions}" + class="icon-more-vert" on-click="onMenuButtonClick_"> + </cr-icon-button> +</template>
diff --git a/chrome/browser/resources/new_tab_page/modules/module_header.js b/chrome/browser/resources/new_tab_page/modules/module_header.js index 0a85c910..8843bfd 100644 --- a/chrome/browser/resources/new_tab_page/modules/module_header.js +++ b/chrome/browser/resources/new_tab_page/modules/module_header.js
@@ -46,6 +46,15 @@ type: Boolean, value: false, }, + + /** + * True if the header should display a menu button. + * @type {boolean} + */ + showMenuButton: { + type: Boolean, + value: false, + }, }; } @@ -59,6 +68,11 @@ this.dispatchEvent( new CustomEvent('dismiss-button-click', {bubbles: true})); } + + /** @private */ + onMenuButtonClick_() { + this.dispatchEvent(new CustomEvent('menu-button-click', {bubbles: true})); + } } customElements.define(ModuleHeaderElement.is, ModuleHeaderElement);
diff --git a/chrome/browser/resources/new_tab_page/modules/task_module/module.js b/chrome/browser/resources/new_tab_page/modules/task_module/module.js index 297c3f3..2ec77c2 100644 --- a/chrome/browser/resources/new_tab_page/modules/task_module/module.js +++ b/chrome/browser/resources/new_tab_page/modules/task_module/module.js
@@ -6,6 +6,7 @@ import '../module_header.js'; import 'chrome://resources/cr_elements/hidden_style_css.m.js'; +import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ModuleDescriptor} from '../module_descriptor.js'; import {TaskModuleHandlerProxy} from './task_module_handler_proxy.js'; @@ -115,7 +116,8 @@ bubbles: true, composed: true, detail: { - message: this.task.name, + message: loadTimeData.getStringF( + 'dismissModuleToastMessage', this.task.name), restoreCallback: this.onRestore_.bind(this), }, }));
diff --git a/chrome/browser/resources/new_tab_page/realbox.html b/chrome/browser/resources/new_tab_page/realbox.html index fb208c8..156be8d 100644 --- a/chrome/browser/resources/new_tab_page/realbox.html +++ b/chrome/browser/resources/new_tab_page/realbox.html
@@ -3,6 +3,7 @@ --ntp-realbox-height: 44px; border-radius: calc(0.5 * var(--ntp-realbox-height)); box-shadow: 0 1px 6px 0 rgba(32, 33, 36, .28); + font-size: 16px; height: var(--ntp-realbox-height); } @@ -26,7 +27,8 @@ border: none; border-radius: calc(0.5 * var(--ntp-realbox-height)); color: var(--search-box-text); - font-size: 16px; + font-family: inherit; + font-size: inherit; height: 100%; outline: none; padding-inline-end: 44px;
diff --git a/chrome/browser/resources/new_tab_page/realbox_dropdown.html b/chrome/browser/resources/new_tab_page/realbox_dropdown.html index e6fb73d1..3d81e2e 100644 --- a/chrome/browser/resources/new_tab_page/realbox_dropdown.html +++ b/chrome/browser/resources/new_tab_page/realbox_dropdown.html
@@ -1,6 +1,5 @@ <style> :host { - font-size: 16px; user-select: none; }
diff --git a/chrome/browser/resources/ntp4/DIR_METADATA b/chrome/browser/resources/ntp4/DIR_METADATA index ef0d697..4c751468 100644 --- a/chrome/browser/resources/ntp4/DIR_METADATA +++ b/chrome/browser/resources/ntp4/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>NewTabPage" +monorail: { + component: "UI>Browser>NewTabPage" } -team_email: "ntp-dev@chromium.org" +team_email: "ntp-dev@chromium.org"
diff --git a/chrome/browser/resources/offline_pages/DIR_METADATA b/chrome/browser/resources/offline_pages/DIR_METADATA index 9b20879..b8fd807 100644 --- a/chrome/browser/resources/offline_pages/DIR_METADATA +++ b/chrome/browser/resources/offline_pages/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>Offline" +monorail: { + component: "UI>Browser>Offline" } -team_email: "offline-dev@chromium.org" +team_email: "offline-dev@chromium.org"
diff --git a/chrome/browser/resources/omnibox/DIR_METADATA b/chrome/browser/resources/omnibox/DIR_METADATA index e62a401d..74265378 100644 --- a/chrome/browser/resources/omnibox/DIR_METADATA +++ b/chrome/browser/resources/omnibox/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Omnibox" +monorail: { + component: "UI>Browser>Omnibox" }
diff --git a/chrome/browser/resources/pdf/DIR_METADATA b/chrome/browser/resources/pdf/DIR_METADATA index 10f235d..11b8e5a 100644 --- a/chrome/browser/resources/pdf/DIR_METADATA +++ b/chrome/browser/resources/pdf/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Plugins>PDF" +monorail: { + component: "Internals>Plugins>PDF" }
diff --git a/chrome/browser/resources/plugin_metadata/DIR_METADATA b/chrome/browser/resources/plugin_metadata/DIR_METADATA index 5008e90..63d4f46 100644 --- a/chrome/browser/resources/plugin_metadata/DIR_METADATA +++ b/chrome/browser/resources/plugin_metadata/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Plugins" +monorail: { + component: "Internals>Plugins" }
diff --git a/chrome/browser/resources/print_preview/DIR_METADATA b/chrome/browser/resources/print_preview/DIR_METADATA index 1e9bc5e..1d690de0 100644 --- a/chrome/browser/resources/print_preview/DIR_METADATA +++ b/chrome/browser/resources/print_preview/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>PrintPreview" +monorail: { + component: "UI>Browser>PrintPreview" }
diff --git a/chrome/browser/resources/quota_internals/DIR_METADATA b/chrome/browser/resources/quota_internals/DIR_METADATA index ed87c37..d669a4a 100644 --- a/chrome/browser/resources/quota_internals/DIR_METADATA +++ b/chrome/browser/resources/quota_internals/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>Storage>Quota" +monorail: { + component: "Blink>Storage>Quota" } -team_email: "storage-dev@chromium.org" +team_email: "storage-dev@chromium.org"
diff --git a/chrome/browser/resources/read_later/DIR_METADATA b/chrome/browser/resources/read_later/DIR_METADATA index 49ee9774..a28ce307 100644 --- a/chrome/browser/resources/read_later/DIR_METADATA +++ b/chrome/browser/resources/read_later/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>ReadLater" +monorail: { + component: "UI>Browser>ReadLater" }
diff --git a/chrome/browser/resources/reset_password/DIR_METADATA b/chrome/browser/resources/reset_password/DIR_METADATA index 1864297..6015b06 100644 --- a/chrome/browser/resources/reset_password/DIR_METADATA +++ b/chrome/browser/resources/reset_password/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>Safebrowsing" +monorail: { + component: "Services>Safebrowsing" }
diff --git a/chrome/browser/resources/safe_browsing/DIR_METADATA b/chrome/browser/resources/safe_browsing/DIR_METADATA index 1864297..6015b06 100644 --- a/chrome/browser/resources/safe_browsing/DIR_METADATA +++ b/chrome/browser/resources/safe_browsing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>Safebrowsing" +monorail: { + component: "Services>Safebrowsing" }
diff --git a/chrome/browser/resources/sandbox_internals/DIR_METADATA b/chrome/browser/resources/sandbox_internals/DIR_METADATA index d745958e..686e1d2b 100644 --- a/chrome/browser/resources/sandbox_internals/DIR_METADATA +++ b/chrome/browser/resources/sandbox_internals/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Sandbox" +monorail: { + component: "Internals>Sandbox" } -team_email: "security-dev@chromium.org" +team_email: "security-dev@chromium.org"
diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn index ac91439..13016410 100644 --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn
@@ -118,6 +118,7 @@ "hats_browser_proxy.js", "i18n_setup.js", "incompatible_applications_page/incompatible_applications_browser_proxy.js", + "languages_page/languages_settings_metrics_proxy.js", "lazy_load.js", "metrics_browser_proxy.js", "on_startup_page/on_startup_browser_proxy.js", @@ -562,6 +563,7 @@ "languages_page:languages_browser_proxy.m", "languages_page:languages_metrics_proxy", "languages_page:languages_page", + "languages_page:languages_settings_metrics_proxy", "privacy_page:cookies_page", "privacy_page:security_page", "site_settings:category_setting_exceptions",
diff --git a/chrome/browser/resources/settings/DIR_METADATA b/chrome/browser/resources/settings/DIR_METADATA index 0c0ba0c..704a8962 100644 --- a/chrome/browser/resources/settings/DIR_METADATA +++ b/chrome/browser/resources/settings/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Settings" +monorail: { + component: "UI>Settings" }
diff --git a/chrome/browser/resources/settings/chromeos/DIR_METADATA b/chrome/browser/resources/settings/chromeos/DIR_METADATA index e3e253d3..eeb8ec9 100644 --- a/chrome/browser/resources/settings/chromeos/DIR_METADATA +++ b/chrome/browser/resources/settings/chromeos/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "OS>Systems>Settings" +monorail: { + component: "OS>Systems>Settings" }
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn index 168fadf..6941608 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn
@@ -223,6 +223,7 @@ js_library("esim_rename_dialog") { deps = [ + "//ui/webui/resources/cr_components/chromeos/cellular_setup:esim_manager_utils", "//ui/webui/resources/cr_components/chromeos/cellular_setup:mojo_interface_provider", "//ui/webui/resources/cr_components/chromeos/network:mojo_interface_provider", "//ui/webui/resources/cr_elements/cr_dialog:cr_dialog", @@ -233,6 +234,7 @@ js_library("esim_remove_profile_dialog") { deps = [ + "//ui/webui/resources/cr_components/chromeos/cellular_setup:esim_manager_utils", "//ui/webui/resources/cr_components/chromeos/cellular_setup:mojo_interface_provider", "//ui/webui/resources/cr_components/chromeos/network:mojo_interface_provider", "//ui/webui/resources/cr_elements/cr_dialog:cr_dialog", @@ -542,6 +544,7 @@ js_library("esim_rename_dialog.m") { sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/internet_page/esim_rename_dialog.m.js" ] deps = [ + "//ui/webui/resources/cr_components/chromeos/cellular_setup:esim_manager_utils.m", "//ui/webui/resources/cr_components/chromeos/cellular_setup:mojo_interface_provider.m", "//ui/webui/resources/cr_components/chromeos/network:mojo_interface_provider.m", "//ui/webui/resources/cr_elements/cr_dialog:cr_dialog.m", @@ -554,6 +557,7 @@ js_library("esim_remove_profile_dialog.m") { sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/internet_page/esim_remove_profile_dialog.m.js" ] deps = [ + "//ui/webui/resources/cr_components/chromeos/cellular_setup:esim_manager_utils.m", "//ui/webui/resources/cr_components/chromeos/cellular_setup:mojo_interface_provider.m", "//ui/webui/resources/cr_components/chromeos/network:mojo_interface_provider.m", "//ui/webui/resources/cr_elements/cr_dialog:cr_dialog.m",
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/DIR_METADATA b/chrome/browser/resources/settings/chromeos/internet_page/DIR_METADATA index 07cee58..95a8e6d4 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/DIR_METADATA +++ b/chrome/browser/resources/settings/chromeos/internet_page/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "OS>Systems>Network" +monorail: { + component: "OS>Systems>Network" }
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/cellular_networks_list.js b/chrome/browser/resources/settings/chromeos/internet_page/cellular_networks_list.js index 48c7799..61e17ae 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/cellular_networks_list.js +++ b/chrome/browser/resources/settings/chromeos/internet_page/cellular_networks_list.js
@@ -161,17 +161,13 @@ /** @private */ fetchESimPendingProfileList_() { - cellular_setup.getESimManagerRemote() - .getAvailableEuiccs() - .then(response => { - if (response.euiccs.length > 0) { - // Use first available euicc as current. Only single Euicc modules are - // currently supported. - this.euicc_ = response.euiccs[0]; - return this.fetchESimPendingProfileListForEuicc_(this.euicc_); - } - this.euicc_ = null; - }); + cellular_setup.getEuicc().then(euicc => { + if (!euicc) { + return; + } + this.euicc_ = euicc; + this.fetchESimPendingProfileListForEuicc_(euicc); + }); }, /**
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/esim_remove_profile_dialog.html b/chrome/browser/resources/settings/chromeos/internet_page/esim_remove_profile_dialog.html index bd1a05e..324613d 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/esim_remove_profile_dialog.html +++ b/chrome/browser/resources/settings/chromeos/internet_page/esim_remove_profile_dialog.html
@@ -1,5 +1,6 @@ <link rel="import" href="chrome://resources/html/polymer.html"> +<link rel="import" href="chrome://resources/cr_components/chromeos/cellular_setup/esim_manager_utils.html"> <link rel="import" href="chrome://resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.html"> <link rel="import" href="chrome://resources/cr_components/chromeos/network/mojo_interface_provider.html"> <link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/esim_remove_profile_dialog.js b/chrome/browser/resources/settings/chromeos/internet_page/esim_remove_profile_dialog.js index 19a6dd3..23c528a8 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/esim_remove_profile_dialog.js +++ b/chrome/browser/resources/settings/chromeos/internet_page/esim_remove_profile_dialog.js
@@ -61,8 +61,11 @@ /** @private */ async init_() { - const response = await this.eSimManagerRemote_.getAvailableEuiccs(); - const euicc = response.euiccs[0]; + const euicc = await cellular_setup.getEuicc(); + if (!euicc) { + console.error('No Euiccs found'); + return; + } const esimProfilesRemotes = await euicc.getProfileList();
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/esim_rename_dialog.html b/chrome/browser/resources/settings/chromeos/internet_page/esim_rename_dialog.html index a39c7b0..806463e1 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/esim_rename_dialog.html +++ b/chrome/browser/resources/settings/chromeos/internet_page/esim_rename_dialog.html
@@ -1,5 +1,6 @@ <link rel="import" href="chrome://resources/html/polymer.html"> +<link rel="import" href="chrome://resources/cr_components/chromeos/cellular_setup/esim_manager_utils.html"> <link rel="import" href="chrome://resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.html"> <link rel="import" href="chrome://resources/cr_components/chromeos/network/mojo_interface_provider.html"> <link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/esim_rename_dialog.js b/chrome/browser/resources/settings/chromeos/internet_page/esim_rename_dialog.js index 68c5311..29ca9863 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/esim_rename_dialog.js +++ b/chrome/browser/resources/settings/chromeos/internet_page/esim_rename_dialog.js
@@ -61,8 +61,11 @@ /** @private */ async init_() { - const response = await this.eSimManagerRemote_.getAvailableEuiccs(); - const euicc = response.euiccs[0]; + const euicc = await cellular_setup.getEuicc(); + if (!euicc) { + console.error('No Euiccs found'); + return; + } const esimProfilesRemotes = await euicc.getProfileList();
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/DIR_METADATA b/chrome/browser/resources/settings/chromeos/multidevice_page/DIR_METADATA index 7859025..81d0548 100644 --- a/chrome/browser/resources/settings/chromeos/multidevice_page/DIR_METADATA +++ b/chrome/browser/resources/settings/chromeos/multidevice_page/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "OS>Systems>Multidevice" +monorail: { + component: "OS>Systems>Multidevice" }
diff --git a/chrome/browser/resources/settings/chromeos/os_apps_page/DIR_METADATA b/chrome/browser/resources/settings/chromeos/os_apps_page/DIR_METADATA index 03315ae5..00289ad 100644 --- a/chrome/browser/resources/settings/chromeos/os_apps_page/DIR_METADATA +++ b/chrome/browser/resources/settings/chromeos/os_apps_page/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Apps>Foundation" +monorail: { + component: "Platform>Apps>Foundation" }
diff --git a/chrome/browser/resources/settings/languages_page/BUILD.gn b/chrome/browser/resources/settings/languages_page/BUILD.gn index 5a839669..4ab20882 100644 --- a/chrome/browser/resources/settings/languages_page/BUILD.gn +++ b/chrome/browser/resources/settings/languages_page/BUILD.gn
@@ -63,6 +63,7 @@ ":languages_browser_proxy.m", ":languages_metrics_proxy", ":languages_page", + ":languages_settings_metrics_proxy", ":languages_types", ] } @@ -137,10 +138,16 @@ externs_list = [ "$externs_path/metrics_private.js" ] } +js_library("languages_settings_metrics_proxy") { + deps = [ "//ui/webui/resources/js:cr.m" ] + externs_list = [ "$externs_path/metrics_private.js" ] +} + js_library("languages_page") { deps = [ ":languages.m", ":languages_metrics_proxy", + ":languages_settings_metrics_proxy", "..:lifetime_browser_proxy.m", "..:route", "..:router.m",
diff --git a/chrome/browser/resources/settings/languages_page/add_languages_dialog.js b/chrome/browser/resources/settings/languages_page/add_languages_dialog.js index 21d59968..5032757 100644 --- a/chrome/browser/resources/settings/languages_page/add_languages_dialog.js +++ b/chrome/browser/resources/settings/languages_page/add_languages_dialog.js
@@ -19,6 +19,8 @@ import {FindShortcutBehavior} from 'chrome://resources/cr_elements/find_shortcut_behavior.m.js'; import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {LanguageSettingsActionType, LanguageSettingsMetricsProxyImpl} from './languages_settings_metrics_proxy.js'; + Polymer({ is: 'settings-add-languages-dialog', @@ -170,6 +172,8 @@ this.$.dialog.close(); this.languagesToAdd_.forEach(languageCode => { this.languageHelper.enableLanguage(languageCode); + LanguageSettingsMetricsProxyImpl.getInstance().recordSettingsMetric( + LanguageSettingsActionType.LANGUAGE_ADDED); }); },
diff --git a/chrome/browser/resources/settings/languages_page/languages_page.html b/chrome/browser/resources/settings/languages_page/languages_page.html index 4044019..10c2a50d 100644 --- a/chrome/browser/resources/settings/languages_page/languages_page.html +++ b/chrome/browser/resources/settings/languages_page/languages_page.html
@@ -222,10 +222,7 @@ <settings-toggle-button id="offerTranslateOtherLanguages" pref="{{prefs.translate.enabled}}" label="$i18n{offerToEnableTranslate}" - <if expr="chromeos"> - on-settings-boolean-control-change="onTranslateToggleChange_" - </if> - > + on-settings-boolean-control-change="onTranslateToggleChange_"> </settings-toggle-button> </iron-collapse> <settings-toggle-button
diff --git a/chrome/browser/resources/settings/languages_page/languages_page.js b/chrome/browser/resources/settings/languages_page/languages_page.js index a40baa01..615405b 100644 --- a/chrome/browser/resources/settings/languages_page/languages_page.js +++ b/chrome/browser/resources/settings/languages_page/languages_page.js
@@ -54,6 +54,8 @@ import {LanguagesMetricsProxy, LanguagesMetricsProxyImpl, LanguagesPageInteraction} from './languages_metrics_proxy.js'; // </if> +import {LanguageSettingsActionType, LanguageSettingsMetricsProxy, LanguageSettingsMetricsProxyImpl} from './languages_settings_metrics_proxy.js'; + /** * @type {number} Millisecond delay that can be used when closing an action * menu to keep it briefly on-screen. @@ -169,12 +171,20 @@ // <if expr="chromeos"> /** @private {?LanguagesMetricsProxy} */ languagesMetricsProxy_: null, + // </if> + /** @private {?LanguageSettingsMetricsProxy} */ + languageSettingsMetricsProxy_: null, /** @override */ created() { + // <if expr="chromeos"> this.languagesMetricsProxy_ = LanguagesMetricsProxyImpl.getInstance(); + // </if> + this.languageSettingsMetricsProxy_ = + LanguageSettingsMetricsProxyImpl.getInstance(); }, + // <if expr="chromeos"> /** @private */ onOpenChromeOSLanguagesSettingsClick_() { const chromeOSLanguagesSettingsPath = @@ -223,6 +233,8 @@ // <if expr="chromeos"> this.languagesMetricsProxy_.recordAddLanguages(); // </if> + this.languageSettingsMetricsProxy_.recordSettingsMetric( + LanguageSettingsActionType.CLICK_ON_ADD_LANGUAGE); this.showAddLanguagesDialog_ = true; }, @@ -351,18 +363,24 @@ * @param {!Event} e * @private */ - onTranslateToggleChange_(e) { - this.languagesMetricsProxy_.recordToggleTranslate(e.target.checked); + onSpellcheckToggleChange_(e) { + this.languagesMetricsProxy_.recordToggleSpellCheck(e.target.checked); }, + // </if> /** * @param {!Event} e * @private */ - onSpellcheckToggleChange_(e) { - this.languagesMetricsProxy_.recordToggleSpellCheck(e.target.checked); + onTranslateToggleChange_(e) { + // <if expr="chromeos"> + this.languagesMetricsProxy_.recordToggleTranslate(e.target.checked); + // </if> + this.languageSettingsMetricsProxy_.recordSettingsMetric( + e.target.checked ? + LanguageSettingsActionType.ENABLE_TRANSLATE_GLOBALLY : + LanguageSettingsActionType.DISABLE_TRANSLATE_GLOBALLY); }, - // </if> // <if expr="chromeos or is_win"> /** @@ -527,9 +545,16 @@ if (e.target.checked) { this.languageHelper.enableTranslateLanguage( this.detailLanguage_.language.code); + + this.languageSettingsMetricsProxy_.recordSettingsMetric( + LanguageSettingsActionType.ENABLE_TRANSLATE_FOR_SINGLE_LANGUAGE); + } else { this.languageHelper.disableTranslateLanguage( this.detailLanguage_.language.code); + + this.languageSettingsMetricsProxy_.recordSettingsMetric( + LanguageSettingsActionType.DISABLE_TRANSLATE_FOR_SINGLE_LANGUAGE); } // <if expr="chromeos"> this.languagesMetricsProxy_.recordTranslateCheckboxChanged( @@ -558,6 +583,8 @@ onMoveToTopTap_() { /** @type {!CrActionMenuElement} */ (this.$$('#menu').get()).close(); this.languageHelper.moveLanguageToFront(this.detailLanguage_.language.code); + this.languageSettingsMetricsProxy_.recordSettingsMetric( + LanguageSettingsActionType.LANGUAGE_LIST_REORDERED); }, /** @@ -568,6 +595,8 @@ /** @type {!CrActionMenuElement} */ (this.$$('#menu').get()).close(); this.languageHelper.moveLanguage( this.detailLanguage_.language.code, true /* upDirection */); + this.languageSettingsMetricsProxy_.recordSettingsMetric( + LanguageSettingsActionType.LANGUAGE_LIST_REORDERED); }, /** @@ -578,6 +607,8 @@ /** @type {!CrActionMenuElement} */ (this.$$('#menu').get()).close(); this.languageHelper.moveLanguage( this.detailLanguage_.language.code, false /* upDirection */); + this.languageSettingsMetricsProxy_.recordSettingsMetric( + LanguageSettingsActionType.LANGUAGE_LIST_REORDERED); }, /** @@ -587,6 +618,8 @@ onRemoveLanguageTap_() { /** @type {!CrActionMenuElement} */ (this.$$('#menu').get()).close(); this.languageHelper.disableLanguage(this.detailLanguage_.language.code); + this.languageSettingsMetricsProxy_.recordSettingsMetric( + LanguageSettingsActionType.LANGUAGE_REMOVED); }, // <if expr="not is_macosx">
diff --git a/chrome/browser/resources/settings/languages_page/languages_settings_metrics_proxy.js b/chrome/browser/resources/settings/languages_page/languages_settings_metrics_proxy.js new file mode 100644 index 0000000..b09dbf4 --- /dev/null +++ b/chrome/browser/resources/settings/languages_page/languages_settings_metrics_proxy.js
@@ -0,0 +1,50 @@ +// 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. + +/* + This file is for recording Chrome Browser's language settings metrics on the + frontend. See languages_metrics_proxy.js for ChromeOS-specific metrics. Note + that this file and languages_metrics_proxy refer to two separate histograms, + but there is some overlap in the actions they track. This will be resolved in + crbug/1109431, when ChromeOS's language settings migration is complete. +*/ + +import {addSingletonGetter} from 'chrome://resources/js/cr.m.js'; + +/** + * Keeps in sync with LanguageSettingsActionType + * in tools/metrics/histograms/enums.xml. + * @enum {number} + */ +export const LanguageSettingsActionType = { + CLICK_ON_ADD_LANGUAGE: 1, + LANGUAGE_ADDED: 2, + LANGUAGE_REMOVED: 3, + DISABLE_TRANSLATE_GLOBALLY: 4, + ENABLE_TRANSLATE_GLOBALLY: 5, + DISABLE_TRANSLATE_FOR_SINGLE_LANGUAGE: 6, + ENABLE_TRANSLATE_FOR_SINGLE_LANGUAGE: 7, + LANGUAGE_LIST_REORDERED: 8, +}; + +/** @interface */ +export class LanguageSettingsMetricsProxy { + /** + * Records the interaction to enumerated histogram. + * @param {!LanguageSettingsActionType} interaction + */ + recordSettingsMetric(interaction) {} +} + +/** @implements {LanguageSettingsMetricsProxy} */ +export class LanguageSettingsMetricsProxyImpl { + /** @override */ + recordSettingsMetric(interaction) { + chrome.metricsPrivate.recordEnumerationValue( + 'LanguageSettings.Actions', interaction, + Object.keys(LanguageSettingsActionType).length); + } +} + +addSingletonGetter(LanguageSettingsMetricsProxyImpl);
diff --git a/chrome/browser/resources/settings/lazy_load.js b/chrome/browser/resources/settings/lazy_load.js index 86f910e..6798eab 100644 --- a/chrome/browser/resources/settings/lazy_load.js +++ b/chrome/browser/resources/settings/lazy_load.js
@@ -73,6 +73,7 @@ export {LanguagesMetricsProxy, LanguagesMetricsProxyImpl, LanguagesPageInteraction} from './languages_page/languages_metrics_proxy.js'; // </if> export {kMenuCloseDelay} from './languages_page/languages_page.js'; +export {LanguageSettingsActionType, LanguageSettingsMetricsProxy, LanguageSettingsMetricsProxyImpl} from './languages_page/languages_settings_metrics_proxy.js'; // <if expr="not chromeos"> export {ImportDataBrowserProxyImpl, ImportDataStatus} from './people_page/import_data_browser_proxy.js'; export {ManageProfileBrowserProxyImpl, ProfileShortcutStatus} from './people_page/manage_profile_browser_proxy.js';
diff --git a/chrome/browser/resources/settings/privacy_page/security_keys_set_pin_dialog.html b/chrome/browser/resources/settings/privacy_page/security_keys_set_pin_dialog.html index a8edca5d..b242de07 100644 --- a/chrome/browser/resources/settings/privacy_page/security_keys_set_pin_dialog.html +++ b/chrome/browser/resources/settings/privacy_page/security_keys_set_pin_dialog.html
@@ -13,6 +13,11 @@ flex-direction: row; } + #newPINRow cr-input { + width: 8em; + --cr-input-error-white-space: nowrap; + } + paper-spinner-lite { padding-bottom: 12px; }
diff --git a/chrome/browser/resources/settings/privacy_page/security_keys_set_pin_dialog.js b/chrome/browser/resources/settings/privacy_page/security_keys_set_pin_dialog.js index daf359140..fc7c09d 100644 --- a/chrome/browser/resources/settings/privacy_page/security_keys_set_pin_dialog.js +++ b/chrome/browser/resources/settings/privacy_page/security_keys_set_pin_dialog.js
@@ -18,8 +18,7 @@ import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js'; import {PluralStringProxyImpl} from 'chrome://resources/js/plural_string_proxy.js'; -import {IronA11yAnnouncer} from 'chrome://resources/polymer/v3_0/iron-a11y-announcer/iron-a11y-announcer.js'; -import {afterNextRender, html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {loadTimeData} from '../i18n_setup.js'; @@ -200,10 +199,6 @@ this.browserProxy_ = SecurityKeysPINBrowserProxyImpl.getInstance(); this.$.dialog.showModal(); - afterNextRender(this, function() { - IronA11yAnnouncer.requestAvailability(); - }); - this.browserProxy_.startSetPIN().then( ({done, error, currentMinPinLength, newMinPinLength, retries}) => { if (done) { @@ -397,7 +392,6 @@ this.isValidPIN_(this.currentPIN_, this.currentMinPinLength_); if (this.currentPINError_ !== '') { this.focusOn_(this.$.currentPIN); - this.fire('iron-announce', {text: this.currentPINError_}); this.fire('ui-ready'); // for test synchronization. return; } @@ -406,7 +400,6 @@ this.newPINError_ = this.isValidPIN_(this.newPIN_, this.newMinPinLength_); if (this.newPINError_ !== '') { this.focusOn_(this.$.newPIN); - this.fire('iron-announce', {text: this.newPINError_}); this.fire('ui-ready'); // for test synchronization. return; } @@ -414,7 +407,13 @@ if (this.newPIN_ !== this.confirmPIN_) { this.confirmPINError_ = this.i18n('securityKeysPINMismatch'); this.focusOn_(this.$.confirmPIN); - this.fire('iron-announce', {text: this.confirmPINError_}); + this.fire('ui-ready'); // for test synchronization. + return; + } + + if (this.newPIN_ === this.currentPIN_) { + this.newPINError_ = this.i18n('securityKeysSamePINAsCurrent'); + this.focusOn_(this.$.newPIN); this.fire('ui-ready'); // for test synchronization. return; } @@ -441,7 +440,6 @@ this.mismatchError_(/** @type {number} */ (this.retries_)); this.setPINButtonValid_ = true; this.focusOn_(this.$.currentPIN); - this.fire('iron-announce', {text: this.currentPINError_}); this.fire('ui-ready'); // for test synchronization. } else { // Unknown error.
diff --git a/chrome/browser/resources/settings/privacy_sandbox/DIR_METADATA b/chrome/browser/resources/settings/privacy_sandbox/DIR_METADATA index 0917002..3bedab4 100644 --- a/chrome/browser/resources/settings/privacy_sandbox/DIR_METADATA +++ b/chrome/browser/resources/settings/privacy_sandbox/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Settings>Privacy" +monorail: { + component: "UI>Settings>Privacy" } -team_email: "chrome-friendly-settings@google.com" +team_email: "chrome-friendly-settings@google.com"
diff --git a/chrome/browser/resources/signin/dice_web_signin_intercept/DIR_METADATA b/chrome/browser/resources/signin/dice_web_signin_intercept/DIR_METADATA index 53bc9e9..781bdd95 100644 --- a/chrome/browser/resources/signin/dice_web_signin_intercept/DIR_METADATA +++ b/chrome/browser/resources/signin/dice_web_signin_intercept/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>SignIn" +monorail: { + component: "Services>SignIn" }
diff --git a/chrome/browser/resources/signin/profile_customization/DIR_METADATA b/chrome/browser/resources/signin/profile_customization/DIR_METADATA index 53bc9e9..781bdd95 100644 --- a/chrome/browser/resources/signin/profile_customization/DIR_METADATA +++ b/chrome/browser/resources/signin/profile_customization/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>SignIn" +monorail: { + component: "Services>SignIn" }
diff --git a/chrome/browser/resources/sync_file_system_internals/DIR_METADATA b/chrome/browser/resources/sync_file_system_internals/DIR_METADATA index e898987..b2811d9 100644 --- a/chrome/browser/resources/sync_file_system_internals/DIR_METADATA +++ b/chrome/browser/resources/sync_file_system_internals/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>Storage>FileSystem" +monorail: { + component: "Blink>Storage>FileSystem" } -team_email: "storage-dev@chromium.org" +team_email: "storage-dev@chromium.org"
diff --git a/chrome/browser/resources/tab_search/DIR_METADATA b/chrome/browser/resources/tab_search/DIR_METADATA index e895932..096aa3d 100644 --- a/chrome/browser/resources/tab_search/DIR_METADATA +++ b/chrome/browser/resources/tab_search/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>TabSearch" +monorail: { + component: "UI>Browser>TabSearch" }
diff --git a/chrome/browser/resources/usb_internals/DIR_METADATA b/chrome/browser/resources/usb_internals/DIR_METADATA index 95896612..536f4da 100644 --- a/chrome/browser/resources/usb_internals/DIR_METADATA +++ b/chrome/browser/resources/usb_internals/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>USB" +monorail: { + component: "Blink>USB" } -team_email: "webusb@chromium.org" +team_email: "webusb@chromium.org"
diff --git a/chrome/browser/resources/video_tutorials/DIR_METADATA b/chrome/browser/resources/video_tutorials/DIR_METADATA index 8834f88c..a03d8d6d 100644 --- a/chrome/browser/resources/video_tutorials/DIR_METADATA +++ b/chrome/browser/resources/video_tutorials/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Upboarding>VideoTutorials" +monorail: { + component: "Upboarding>VideoTutorials" } -team_email: "chrome-upboarding-eng@google.com" +team_email: "chrome-upboarding-eng@google.com"
diff --git a/chrome/browser/resources/vr/DIR_METADATA b/chrome/browser/resources/vr/DIR_METADATA index 2da35f7a..f4b55f85 100644 --- a/chrome/browser/resources/vr/DIR_METADATA +++ b/chrome/browser/resources/vr/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>VR" +monorail: { + component: "UI>Browser>VR" } -team_email: "xr-dev@chromium.org" +team_email: "xr-dev@chromium.org"
diff --git a/chrome/browser/resources/webstore_app/DIR_METADATA b/chrome/browser/resources/webstore_app/DIR_METADATA index bbb34dc..2134c96c 100644 --- a/chrome/browser/resources/webstore_app/DIR_METADATA +++ b/chrome/browser/resources/webstore_app/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Webstore" +monorail: { + component: "Webstore" }
diff --git a/chrome/browser/rlz/DIR_METADATA b/chrome/browser/rlz/DIR_METADATA index 0d15fab0..643d2bac 100644 --- a/chrome/browser/rlz/DIR_METADATA +++ b/chrome/browser/rlz/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Core" +monorail: { + component: "Internals>Core" }
diff --git a/chrome/browser/safe_browsing/DIR_METADATA b/chrome/browser/safe_browsing/DIR_METADATA index 53bb65b..ee2d9cf5 100644 --- a/chrome/browser/safe_browsing/DIR_METADATA +++ b/chrome/browser/safe_browsing/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Services>Safebrowsing" +monorail: { + component: "Services>Safebrowsing" } -team_email: "safebrowsing@chromium.org" +team_email: "safebrowsing@chromium.org"
diff --git a/chrome/browser/safe_browsing/android/DIR_METADATA b/chrome/browser/safe_browsing/android/DIR_METADATA index 53bb65b..ee2d9cf5 100644 --- a/chrome/browser/safe_browsing/android/DIR_METADATA +++ b/chrome/browser/safe_browsing/android/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Services>Safebrowsing" +monorail: { + component: "Services>Safebrowsing" } -team_email: "safebrowsing@chromium.org" +team_email: "safebrowsing@chromium.org"
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/DIR_METADATA b/chrome/browser/safe_browsing/chrome_cleaner/DIR_METADATA index 1216cc6..5078508f 100644 --- a/chrome/browser/safe_browsing/chrome_cleaner/DIR_METADATA +++ b/chrome/browser/safe_browsing/chrome_cleaner/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Services>Safebrowsing>ChromeCleanup" +monorail: { + component: "Services>Safebrowsing>ChromeCleanup" } -team_email: "safebrowsing@chromium.org" +team_email: "safebrowsing@chromium.org"
diff --git a/chrome/browser/safe_browsing/download_protection/DIR_METADATA b/chrome/browser/safe_browsing/download_protection/DIR_METADATA index 1864297..6015b06 100644 --- a/chrome/browser/safe_browsing/download_protection/DIR_METADATA +++ b/chrome/browser/safe_browsing/download_protection/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>Safebrowsing" +monorail: { + component: "Services>Safebrowsing" }
diff --git a/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.cc b/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.cc index fdd0065..8a870ad 100644 --- a/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.cc +++ b/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.cc
@@ -238,14 +238,14 @@ } // If the hash of either the original file or any executables within an -// archive matches the blacklist flag, return true. -bool CheckClientDownloadRequestBase::IsDownloadManuallyBlacklisted( +// archive matches the blocklist flag, return true. +bool CheckClientDownloadRequestBase::IsDownloadManuallyBlocklisted( const ClientDownloadRequest& request) { - if (service_->IsHashManuallyBlacklisted(request.digests().sha256())) + if (service_->IsHashManuallyBlocklisted(request.digests().sha256())) return true; for (auto bin_itr : request.archived_binary()) { - if (service_->IsHashManuallyBlacklisted(bin_itr.digests().sha256())) + if (service_->IsHashManuallyBlocklisted(bin_itr.digests().sha256())) return true; } return false; @@ -436,13 +436,13 @@ return; } - // User can manually blacklist a sha256 via flag, for testing. + // User can manually blocklist a sha256 via flag, for testing. // This is checked just before the request is sent, to verify the request // would have been sent. This emmulates the server returning a DANGEROUS // verdict as closely as possible. - if (IsDownloadManuallyBlacklisted(*client_download_request_)) { + if (IsDownloadManuallyBlocklisted(*client_download_request_)) { DVLOG(1) << "Download verdict overridden to DANGEROUS by flag."; - FinishRequest(DownloadCheckResult::DANGEROUS, REASON_MANUAL_BLACKLIST); + FinishRequest(DownloadCheckResult::DANGEROUS, REASON_MANUAL_BLOCKLIST); return; }
diff --git a/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.h b/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.h index 46e015c..597916d 100644 --- a/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.h +++ b/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.h
@@ -71,7 +71,7 @@ bool ShouldSampleWhitelistedDownload(); bool ShouldSampleUnsupportedFile(const base::FilePath& filename); - bool IsDownloadManuallyBlacklisted(const ClientDownloadRequest& request); + bool IsDownloadManuallyBlocklisted(const ClientDownloadRequest& request); void OnUrlWhitelistCheckDone(bool is_whitelisted); void OnRequestBuilt(std::unique_ptr<ClientDownloadRequest> request_proto);
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_service.cc b/chrome/browser/safe_browsing/download_protection/download_protection_service.cc index e52fe40a..dc647243 100644 --- a/chrome/browser/safe_browsing/download_protection/download_protection_service.cc +++ b/chrome/browser/safe_browsing/download_protection/download_protection_service.cc
@@ -122,7 +122,7 @@ ui_manager_ = sb_service->ui_manager(); database_manager_ = sb_service->database_manager(); navigation_observer_manager_ = sb_service->navigation_observer_manager(); - ParseManualBlacklistFlag(); + ParseManualBlocklistFlag(); } } @@ -142,29 +142,29 @@ } } -void DownloadProtectionService::ParseManualBlacklistFlag() { +void DownloadProtectionService::ParseManualBlocklistFlag() { base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); if (!command_line->HasSwitch( - safe_browsing::switches::kSbManualDownloadBlacklist)) + safe_browsing::switches::kSbManualDownloadBlocklist)) return; std::string flag_val = command_line->GetSwitchValueASCII( - safe_browsing::switches::kSbManualDownloadBlacklist); + safe_browsing::switches::kSbManualDownloadBlocklist); for (const std::string& hash_hex : base::SplitString( flag_val, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) { std::string bytes; if (base::HexStringToString(hash_hex, &bytes) && bytes.size() == 32) { - manual_blacklist_hashes_.insert(std::move(bytes)); + manual_blocklist_hashes_.insert(std::move(bytes)); } else { LOG(FATAL) << "Bad sha256 hex value '" << hash_hex << "' found in --" - << safe_browsing::switches::kSbManualDownloadBlacklist; + << safe_browsing::switches::kSbManualDownloadBlocklist; } } } -bool DownloadProtectionService::IsHashManuallyBlacklisted( +bool DownloadProtectionService::IsHashManuallyBlocklisted( const std::string& sha256_hash) const { - return manual_blacklist_hashes_.count(sha256_hash) > 0; + return manual_blocklist_hashes_.count(sha256_hash) > 0; } void DownloadProtectionService::CheckClientDownload(
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_service.h b/chrome/browser/safe_browsing/download_protection/download_protection_service.h index c492089..f66b94d 100644 --- a/chrome/browser/safe_browsing/download_protection/download_protection_service.h +++ b/chrome/browser/safe_browsing/download_protection/download_protection_service.h
@@ -72,12 +72,12 @@ virtual ~DownloadProtectionService(); - // Parse a flag of blacklisted sha256 hashes to check at each download. + // Parse a flag of blocklisted sha256 hashes to check at each download. // This is used for testing, to hunt for safe-browsing by-pass bugs. - virtual void ParseManualBlacklistFlag(); + virtual void ParseManualBlocklistFlag(); - // Return true if this hash value is blacklisted via flag (for testing). - virtual bool IsHashManuallyBlacklisted(const std::string& sha256_hash) const; + // Return true if this hash value is blocklisted via flag (for testing). + virtual bool IsHashManuallyBlocklisted(const std::string& sha256_hash) const; // Checks whether the given client download is likely to be malicious or not. // The result is delivered asynchronously via the given callback. This @@ -328,9 +328,9 @@ // PPAPIDownloadRequest has been formed. PPAPIDownloadRequestCallbackList ppapi_download_request_callbacks_; - // List of 8-byte hashes that are blacklisted manually by flag. + // List of 8-byte hashes that are blocklisted manually by flag. // Normally empty. - std::set<std::string> manual_blacklist_hashes_; + std::set<std::string> manual_blocklist_hashes_; // Rate of whitelisted downloads we sample to send out download ping. double whitelist_sample_rate_;
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc b/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc index 38a9b6c..3da2baa 100644 --- a/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc +++ b/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc
@@ -2822,26 +2822,26 @@ protected: DownloadProtectionServiceFlagTest() : // Matches unsigned.exe within zipfile_one_unsigned_binary.zip - blacklisted_hash_hex_( + blocklisted_hash_hex_( "1e954d9ce0389e2ba7447216f21761f98d1e6540c2abecdbecff570e36c493d" "b") {} void SetUp() override { ASSERT_TRUE( - base::HexStringToString(blacklisted_hash_hex_, &blacklisted_hash_) && - blacklisted_hash_.size() == 32); + base::HexStringToString(blocklisted_hash_hex_, &blocklisted_hash_) && + blocklisted_hash_.size() == 32); base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - safe_browsing::switches::kSbManualDownloadBlacklist, - blacklisted_hash_hex_); + safe_browsing::switches::kSbManualDownloadBlocklist, + blocklisted_hash_hex_); DownloadProtectionServiceTestBase::SetUp(); } // Hex 64 chars - const std::string blacklisted_hash_hex_; + const std::string blocklisted_hash_hex_; // Binary 32 bytes - std::string blacklisted_hash_; + std::string blocklisted_hash_; }; TEST_F(DownloadProtectionServiceFlagTest, CheckClientDownloadOverridenByFlag) { @@ -2850,7 +2850,7 @@ "http://www.google.com/", // referrer FILE_PATH_LITERAL("a.tmp"), // tmp_path FILE_PATH_LITERAL("a.exe")); // final_path - EXPECT_CALL(item, GetHash()).WillRepeatedly(ReturnRef(blacklisted_hash_)); + EXPECT_CALL(item, GetHash()).WillRepeatedly(ReturnRef(blocklisted_hash_)); EXPECT_CALL(*sb_service_->mock_database_manager(), MatchDownloadWhitelistUrl(_)) .WillRepeatedly(Return(false)); @@ -2872,7 +2872,7 @@ } // Test a real .zip with a real .exe in it, where the .exe is manually -// blacklisted by hash. +// blocklisted by hash. TEST_F(DownloadProtectionServiceFlagTest, CheckClientDownloadZipOverridenByFlag) { NiceMockDownloadItem item;
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_util.h b/chrome/browser/safe_browsing/download_protection/download_protection_util.h index 4d41a58..71b507a 100644 --- a/chrome/browser/safe_browsing/download_protection/download_protection_util.h +++ b/chrome/browser/safe_browsing/download_protection/download_protection_util.h
@@ -61,7 +61,7 @@ REASON_DOWNLOAD_DANGEROUS_HOST = 20, REASON_DOWNLOAD_POTENTIALLY_UNWANTED = 21, REASON_UNSUPPORTED_URL_SCHEME = 22, - REASON_MANUAL_BLACKLIST = 23, + REASON_MANUAL_BLOCKLIST = 23, REASON_LOCAL_FILE = 24, REASON_REMOTE_FILE = 25, REASON_SAMPLED_UNSUPPORTED_FILE = 26,
diff --git a/chrome/browser/safe_browsing/incident_reporting/DIR_METADATA b/chrome/browser/safe_browsing/incident_reporting/DIR_METADATA index b19c884..695a1a59 100644 --- a/chrome/browser/safe_browsing/incident_reporting/DIR_METADATA +++ b/chrome/browser/safe_browsing/incident_reporting/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>SafeBrowsing" +monorail: { + component: "Services>SafeBrowsing" }
diff --git a/chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.h b/chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.h index dd11239c..3d9a5a99 100644 --- a/chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.h +++ b/chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.h
@@ -45,8 +45,8 @@ ClientIncidentReport_EnvironmentData_Process* process); // Populates |process| with the dll names that have been added to the chrome elf -// blacklist through the Windows registry. -void CollectDllBlacklistData( +// blocklist through the Windows registry. +void CollectDllBlocklistData( ClientIncidentReport_EnvironmentData_Process* process); // Populates |key_data| with the data in the registry keys specified. In case of
diff --git a/chrome/browser/safe_browsing/incident_reporting/extension_data_collection.cc b/chrome/browser/safe_browsing/incident_reporting/extension_data_collection.cc index 0556f77..c98e263 100644 --- a/chrome/browser/safe_browsing/incident_reporting/extension_data_collection.cc +++ b/chrome/browser/safe_browsing/incident_reporting/extension_data_collection.cc
@@ -44,7 +44,7 @@ else if (extension_registry.disabled_extensions().Contains(extension_id)) extension_info->set_state(Info::STATE_DISABLED); else if (extension_registry.blocklisted_extensions().Contains(extension_id)) - extension_info->set_state(Info::STATE_BLACKLISTED); + extension_info->set_state(Info::STATE_BLOCKLISTED); else if (extension_registry.blocked_extensions().Contains(extension_id)) extension_info->set_state(Info::STATE_BLOCKED); else if (extension_registry.terminated_extensions().Contains(extension_id))
diff --git a/chrome/browser/safe_browsing/incident_reporting/incident.h b/chrome/browser/safe_browsing/incident_reporting/incident.h index 75c1b1d..cba0b6ce 100644 --- a/chrome/browser/safe_browsing/incident_reporting/incident.h +++ b/chrome/browser/safe_browsing/incident_reporting/incident.h
@@ -24,7 +24,7 @@ // the histogram. TRACKED_PREFERENCE = 1, BINARY_INTEGRITY = 2, - OBSOLETE_BLACKLIST_LOAD = 3, + OBSOLETE_BLOCKLIST_LOAD = 3, OBSOLETE_OMNIBOX_INTERACTION = 4, OBSOLETE_VARIATIONS_SEED_SIGNATURE = 5, RESOURCE_REQUEST = 6,
diff --git a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service_unittest.cc b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service_unittest.cc index 60b6136..c9274a67 100644 --- a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service_unittest.cc +++ b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service_unittest.cc
@@ -1307,8 +1307,8 @@ // Test that a profile's prune state is properly cleaned upon load. TEST_F(IncidentReportingServiceTest, CleanLegacyPruneState) { CreateIncidentReportingService(); - const std::string blacklist_load_type(base::NumberToString( - static_cast<int>(safe_browsing::IncidentType::OBSOLETE_BLACKLIST_LOAD))); + const std::string blocklist_load_type(base::NumberToString( + static_cast<int>(safe_browsing::IncidentType::OBSOLETE_BLOCKLIST_LOAD))); const std::string preference_type(base::NumberToString( static_cast<int>(safe_browsing::IncidentType::TRACKED_PREFERENCE))); @@ -1317,7 +1317,7 @@ new base::DictionaryValue()); auto type_dict = std::make_unique<base::DictionaryValue>(); type_dict->SetKey("foo", base::Value("47")); - incidents_sent->SetWithoutPathExpansion(blacklist_load_type, + incidents_sent->SetWithoutPathExpansion(blocklist_load_type, std::move(type_dict)); type_dict = std::make_unique<base::DictionaryValue>(); type_dict->SetKey("bar", base::Value("43")); @@ -1335,7 +1335,7 @@ const base::DictionaryValue* new_state = profile->GetPrefs()->GetDictionary(prefs::kSafeBrowsingIncidentsSent); // The legacy value must be gone. - ASSERT_FALSE(new_state->HasKey(blacklist_load_type)); + ASSERT_FALSE(new_state->HasKey(blocklist_load_type)); // But other data must be untouched. ASSERT_TRUE(new_state->HasKey(preference_type)); }
diff --git a/chrome/browser/safe_browsing/incident_reporting/state_store.cc b/chrome/browser/safe_browsing/incident_reporting/state_store.cc index 3bc33b7..dbbad841 100644 --- a/chrome/browser/safe_browsing/incident_reporting/state_store.cc +++ b/chrome/browser/safe_browsing/incident_reporting/state_store.cc
@@ -160,7 +160,7 @@ void StateStore::CleanLegacyValues(Transaction* transaction) { static const IncidentType kLegacyTypes[] = { - IncidentType::OBSOLETE_BLACKLIST_LOAD, + IncidentType::OBSOLETE_BLOCKLIST_LOAD, IncidentType::OBSOLETE_SUSPICIOUS_MODULE}; for (IncidentType type : kLegacyTypes)
diff --git a/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc b/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc index f314ca5..e1123d0 100644 --- a/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc +++ b/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
@@ -121,7 +121,7 @@ namespace { #if BUILDFLAG(GOOGLE_CHROME_BRANDING) -const char kBlacklistResource[] = "/blacklisted/script.js"; +const char kBlocklistResource[] = "/blacklisted/script.js"; const char kMaliciousResource[] = "/malware/script.js"; #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) const char kEmptyPage[] = "/empty.html"; @@ -1199,18 +1199,18 @@ // This test is only enabled when GOOGLE_CHROME_BRANDING is true because the // store that this test uses is only populated on GOOGLE_CHROME_BRANDING builds. IN_PROC_BROWSER_TEST_F(V4SafeBrowsingServiceTest, CheckResourceUrl) { - GURL blacklist_url = embedded_test_server()->GetURL(kBlacklistResource); + GURL blocklist_url = embedded_test_server()->GetURL(kBlocklistResource); GURL malware_url = embedded_test_server()->GetURL(kMaliciousResource); - std::string blacklist_url_hash, malware_url_hash; + std::string blocklist_url_hash, malware_url_hash; scoped_refptr<TestSBClient> client(new TestSBClient); { - MarkUrlForResourceUnexpired(blacklist_url); - blacklist_url_hash = V4ProtocolManagerUtil::GetFullHash(blacklist_url); + MarkUrlForResourceUnexpired(blocklist_url); + blocklist_url_hash = V4ProtocolManagerUtil::GetFullHash(blocklist_url); - client->CheckResourceUrl(blacklist_url); - EXPECT_EQ(SB_THREAT_TYPE_BLACKLISTED_RESOURCE, client->GetThreatType()); - EXPECT_EQ(blacklist_url_hash, client->GetThreatHash()); + client->CheckResourceUrl(blocklist_url); + EXPECT_EQ(SB_THREAT_TYPE_BLOCKLISTED_RESOURCE, client->GetThreatType()); + EXPECT_EQ(blocklist_url_hash, client->GetThreatHash()); } { MarkUrlForMalwareUnexpired(malware_url); @@ -1218,10 +1218,10 @@ malware_url_hash = V4ProtocolManagerUtil::GetFullHash(malware_url); // Since we're checking a resource url, we should receive result that it's - // a blacklisted resource, not a malware. + // a blocklisted resource, not a malware. client = new TestSBClient; client->CheckResourceUrl(malware_url); - EXPECT_EQ(SB_THREAT_TYPE_BLACKLISTED_RESOURCE, client->GetThreatType()); + EXPECT_EQ(SB_THREAT_TYPE_BLOCKLISTED_RESOURCE, client->GetThreatType()); EXPECT_EQ(malware_url_hash, client->GetThreatHash()); }
diff --git a/chrome/browser/safe_browsing/settings_reset_prompt/DIR_METADATA b/chrome/browser/safe_browsing/settings_reset_prompt/DIR_METADATA index 4ba6d30d..0149205 100644 --- a/chrome/browser/safe_browsing/settings_reset_prompt/DIR_METADATA +++ b/chrome/browser/safe_browsing/settings_reset_prompt/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>Preferences>Protector" +monorail: { + component: "UI>Browser>Preferences>Protector" } -team_email: "security-dev@chromium.org" +team_email: "security-dev@chromium.org"
diff --git a/chrome/browser/safety_check/DIR_METADATA b/chrome/browser/safety_check/DIR_METADATA index 5fe0fa58..586f6be 100644 --- a/chrome/browser/safety_check/DIR_METADATA +++ b/chrome/browser/safety_check/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Settings>SafetyCheck" +monorail: { + component: "UI>Settings>SafetyCheck" } -team_email: "chrome-friendly-settings@google.com" +team_email: "chrome-friendly-settings@google.com"
diff --git a/chrome/browser/search/DIR_METADATA b/chrome/browser/search/DIR_METADATA index ef0d697..4c751468 100644 --- a/chrome/browser/search/DIR_METADATA +++ b/chrome/browser/search/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>NewTabPage" +monorail: { + component: "UI>Browser>NewTabPage" } -team_email: "ntp-dev@chromium.org" +team_email: "ntp-dev@chromium.org"
diff --git a/chrome/browser/search/suggestions/DIR_METADATA b/chrome/browser/search/suggestions/DIR_METADATA index ef0d697..4c751468 100644 --- a/chrome/browser/search/suggestions/DIR_METADATA +++ b/chrome/browser/search/suggestions/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>NewTabPage" +monorail: { + component: "UI>Browser>NewTabPage" } -team_email: "ntp-dev@chromium.org" +team_email: "ntp-dev@chromium.org"
diff --git a/chrome/browser/search_engines/DIR_METADATA b/chrome/browser/search_engines/DIR_METADATA index 33fa8bc7..c4995e8 100644 --- a/chrome/browser/search_engines/DIR_METADATA +++ b/chrome/browser/search_engines/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Search" +monorail: { + component: "UI>Browser>Search" }
diff --git a/chrome/browser/search_provider_logos/DIR_METADATA b/chrome/browser/search_provider_logos/DIR_METADATA index 467ac9b4..eb6250a8 100644 --- a/chrome/browser/search_provider_logos/DIR_METADATA +++ b/chrome/browser/search_provider_logos/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>NewTabPage" +monorail: { + component: "UI>Browser>NewTabPage" }
diff --git a/chrome/browser/security_events/DIR_METADATA b/chrome/browser/security_events/DIR_METADATA index 1864297..6015b06 100644 --- a/chrome/browser/security_events/DIR_METADATA +++ b/chrome/browser/security_events/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>Safebrowsing" +monorail: { + component: "Services>Safebrowsing" }
diff --git a/chrome/browser/send_tab_to_self/DIR_METADATA b/chrome/browser/send_tab_to_self/DIR_METADATA index e64cd2d..221823e82 100644 --- a/chrome/browser/send_tab_to_self/DIR_METADATA +++ b/chrome/browser/send_tab_to_self/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Sharing" +monorail: { + component: "UI>Browser>Sharing" }
diff --git a/chrome/browser/serial/DIR_METADATA b/chrome/browser/serial/DIR_METADATA index e654970..ee7c43e 100644 --- a/chrome/browser/serial/DIR_METADATA +++ b/chrome/browser/serial/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Blink>Serial" +monorail: { + component: "Blink>Serial" }
diff --git a/chrome/browser/service_process/DIR_METADATA b/chrome/browser/service_process/DIR_METADATA index 7619ec17e..67273c4 100644 --- a/chrome/browser/service_process/DIR_METADATA +++ b/chrome/browser/service_process/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>CloudPrint" +monorail: { + component: "Services>CloudPrint" }
diff --git a/chrome/browser/sessions/DIR_METADATA b/chrome/browser/sessions/DIR_METADATA index 80992c1..aeaf64b 100644 --- a/chrome/browser/sessions/DIR_METADATA +++ b/chrome/browser/sessions/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Sessions" +monorail: { + component: "UI>Browser>Sessions" }
diff --git a/chrome/browser/sessions/session_service_log.cc b/chrome/browser/sessions/session_service_log.cc new file mode 100644 index 0000000..5b3382f --- /dev/null +++ b/chrome/browser/sessions/session_service_log.cc
@@ -0,0 +1,219 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/sessions/session_service_log.h" + +#include "base/strings/string_number_conversions.h" +#include "base/values.h" +#include "chrome/browser/profiles/profile.h" +#include "components/pref_registry/pref_registry_syncable.h" +#include "components/prefs/pref_service.h" + +namespace { + +// The value is a list. +constexpr char kEventPrefKey[] = "sessions.event_log"; +constexpr char kEventTypeKey[] = "type"; +constexpr char kEventTimeKey[] = "time"; +constexpr char kStartEventDidLastSessionCrashKey[] = "crashed"; +constexpr char kRestoreEventWindowCountKey[] = "window_count"; +constexpr char kRestoreEventTabCountKey[] = "tab_count"; +constexpr char kRestoreEventErroredReadingKey[] = "errored_reading"; +constexpr char kExitEventWindowCountKey[] = "window_count"; +constexpr char kExitEventTabCountKey[] = "tab_count"; +constexpr char kWriteErrorEventErrorCountKey[] = "error_count"; + +// This value is a balance between keeping too much in prefs, and the +// ability to see the last few restarts. +constexpr size_t kMaxEventCount = 12; + +base::Value SerializeEvent(const SessionServiceEvent& event) { + base::Value serialized_event(base::Value::Type::DICTIONARY); + serialized_event.SetIntPath(kEventTypeKey, static_cast<int>(event.type)); + serialized_event.SetStringPath( + kEventTimeKey, + base::NumberToString(event.time.since_origin().InMicroseconds())); + switch (event.type) { + case SessionServiceEventLogType::kStart: + serialized_event.SetBoolKey(kStartEventDidLastSessionCrashKey, + event.data.start.did_last_session_crash); + break; + case SessionServiceEventLogType::kRestore: + serialized_event.SetIntKey(kRestoreEventWindowCountKey, + event.data.restore.window_count); + serialized_event.SetIntKey(kRestoreEventTabCountKey, + event.data.restore.tab_count); + serialized_event.SetBoolKey(kRestoreEventErroredReadingKey, + event.data.restore.encountered_error_reading); + break; + case SessionServiceEventLogType::kExit: + serialized_event.SetIntKey(kExitEventWindowCountKey, + event.data.exit.window_count); + serialized_event.SetIntKey(kExitEventTabCountKey, + event.data.exit.tab_count); + break; + case SessionServiceEventLogType::kWriteError: + serialized_event.SetIntKey(kWriteErrorEventErrorCountKey, + event.data.write_error.error_count); + break; + } + return serialized_event; +} + +bool DeserializeEvent(const base::Value& serialized_event, + SessionServiceEvent& event) { + if (!serialized_event.is_dict()) + return false; + auto type = serialized_event.FindIntKey(kEventTypeKey); + if (!type) + return false; + if (*type < SessionServiceEventLogType::kMinValue || + *type > SessionServiceEventLogType::kMaxValue) { + return false; + } + event.type = static_cast<SessionServiceEventLogType>(*type); + + const std::string* time_value = serialized_event.FindStringKey(kEventTimeKey); + if (!time_value) + return false; + int64_t time_int; + if (!base::StringToInt64(*time_value, &time_int)) + return false; + event.time = base::Time() + base::TimeDelta::FromMicroseconds(time_int); + + switch (event.type) { + case SessionServiceEventLogType::kStart: { + auto crash_value = + serialized_event.FindBoolKey(kStartEventDidLastSessionCrashKey); + if (!crash_value) + return false; + event.data.start.did_last_session_crash = *crash_value; + break; + } + case SessionServiceEventLogType::kRestore: { + auto window_count = + serialized_event.FindIntKey(kRestoreEventWindowCountKey); + if (!window_count) + return false; + event.data.restore.window_count = *window_count; + + auto tab_count = serialized_event.FindIntKey(kRestoreEventTabCountKey); + if (!tab_count) + return false; + event.data.restore.tab_count = *tab_count; + + auto error_reading = + serialized_event.FindBoolKey(kRestoreEventErroredReadingKey); + if (!error_reading) + return false; + event.data.restore.encountered_error_reading = *error_reading; + break; + } + case SessionServiceEventLogType::kExit: { + auto window_count = serialized_event.FindIntKey(kExitEventWindowCountKey); + if (!window_count) + return false; + event.data.exit.window_count = *window_count; + + auto tab_count = serialized_event.FindIntKey(kExitEventTabCountKey); + if (!tab_count) + return false; + event.data.exit.tab_count = *tab_count; + break; + } + case SessionServiceEventLogType::kWriteError: { + auto error_count = + serialized_event.FindIntKey(kWriteErrorEventErrorCountKey); + if (!error_count) + return false; + event.data.write_error.error_count = *error_count; + break; + } + } + return true; +} + +void SaveEventsToPrefs(Profile* profile, + const std::list<SessionServiceEvent>& events) { + base::Value serialized_events(base::Value::Type::LIST); + for (const SessionServiceEvent& event : events) + serialized_events.Append(SerializeEvent(event)); + profile->GetPrefs()->Set(kEventPrefKey, serialized_events); +} + +} // namespace + +std::list<SessionServiceEvent> GetSessionServiceEvents(Profile* profile) { + const base::ListValue* serialized_events = + profile->GetPrefs()->GetList(kEventPrefKey); + if (!serialized_events) + return {}; + std::list<SessionServiceEvent> events; + for (const auto& serialized_event : serialized_events->GetList()) { + SessionServiceEvent event; + if (DeserializeEvent(serialized_event, event)) + events.push_back(std::move(event)); + } + return events; +} + +void LogSessionServiceStartEvent(Profile* profile, bool after_crash) { + SessionServiceEvent event; + event.type = SessionServiceEventLogType::kStart; + event.time = base::Time::Now(); + event.data.start.did_last_session_crash = after_crash; + LogSessionServiceEvent(profile, event); +} + +void LogSessionServiceExitEvent(Profile* profile, + int window_count, + int tab_count) { + SessionServiceEvent event; + event.type = SessionServiceEventLogType::kExit; + event.time = base::Time::Now(); + event.data.exit.window_count = window_count; + event.data.exit.tab_count = tab_count; + LogSessionServiceEvent(profile, event); +} + +void LogSessionServiceRestoreEvent(Profile* profile, + int window_count, + int tab_count, + bool encountered_error_reading) { + SessionServiceEvent event; + event.type = SessionServiceEventLogType::kRestore; + event.time = base::Time::Now(); + event.data.restore.window_count = window_count; + event.data.restore.tab_count = tab_count; + event.data.restore.encountered_error_reading = encountered_error_reading; + LogSessionServiceEvent(profile, event); +} + +void LogSessionServiceWriteErrorEvent(Profile* profile) { + SessionServiceEvent event; + event.type = SessionServiceEventLogType::kWriteError; + event.time = base::Time::Now(); + event.data.write_error.error_count = 1; + LogSessionServiceEvent(profile, event); +} + +void RegisterSessionServiceLogProfilePrefs( + user_prefs::PrefRegistrySyncable* registry) { + registry->RegisterListPref(kEventPrefKey); +} + +void LogSessionServiceEvent(Profile* profile, + const SessionServiceEvent& event) { + std::list<SessionServiceEvent> events = GetSessionServiceEvents(profile); + if (event.type == SessionServiceEventLogType::kWriteError && + !events.empty() && + events.back().type == SessionServiceEventLogType::kWriteError) { + events.back().data.write_error.error_count += 1; + } else { + events.push_back(std::move(event)); + if (events.size() >= kMaxEventCount) + events.erase(events.begin()); + } + SaveEventsToPrefs(profile, events); +}
diff --git a/chrome/browser/sessions/session_service_log.h b/chrome/browser/sessions/session_service_log.h new file mode 100644 index 0000000..557deb9 --- /dev/null +++ b/chrome/browser/sessions/session_service_log.h
@@ -0,0 +1,110 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_SESSIONS_SESSION_SERVICE_LOG_H_ +#define CHROME_BROWSER_SESSIONS_SESSION_SERVICE_LOG_H_ + +#include <list> + +#include "base/time/time.h" + +class Profile; + +namespace user_prefs { +class PrefRegistrySyncable; +} + +// This file contains functionality used to track interesting session restore +// events. This is primarily aimed at helping understand whether session +// restore is failing. +// +// The appropriate code calls to the various log functions. This data is +// tracked in prefs, and only a limited amount of data is kept around. + +// WARNING: these values are persisted to disk, do not change. +enum SessionServiceEventLogType { + // The profile was started. + kStart = 0, + + // A restore was triggered. Restore may be triggered more than once after + // a start. + kRestore = 1, + + // The profile was shut down. It's still possible for a crash to happen + // after this. This is not logged if a crash happens before exit is attempted. + kExit = 2, + + // An error in writing the file occurred. Multiple calls to AddEvent() + // when the last event is a error result in combining the event (this is + // done to ensure lots of write error don't spam the event log). + kWriteError = 3, + + kMinValue = kStart, + kMaxValue = kWriteError, +}; + +struct StartData { + // Whether the last run of chrome crashed. + bool did_last_session_crash; +}; + +struct RestoreData { + // The number of windows restored. + int window_count; + + // The number of tabs restored. + int tab_count; + + // Whether there was an error in reading the file contents. + bool encountered_error_reading; +}; + +struct ExitData { + // The number of windows open at the time of exit. + int window_count; + + // The total number of tabs open at the time of exit. + int tab_count; +}; + +struct WriteErrorData { + // Number of write errors that occurred. + int error_count; +}; + +union EventData { + StartData start; + RestoreData restore; + ExitData exit; + WriteErrorData write_error; +}; + +struct SessionServiceEvent { + SessionServiceEventLogType type; + base::Time time; + EventData data; +}; + +// Returns the most recent events, ordered with oldest event first. In general +// the times shouldn't be compared, as it's possible for bad clocks and/or +// timezone changse to cause an earlier event to have a later time. +std::list<SessionServiceEvent> GetSessionServiceEvents(Profile* profile); + +void LogSessionServiceStartEvent(Profile* profile, bool after_crash); +void LogSessionServiceExitEvent(Profile* profile, + int window_count, + int tab_count); +void LogSessionServiceRestoreEvent(Profile* profile, + int window_count, + int tab_count, + bool encountered_error_reading); +void LogSessionServiceWriteErrorEvent(Profile* profile); + +void RegisterSessionServiceLogProfilePrefs( + user_prefs::PrefRegistrySyncable* registry); + +// This function is used internally, and is generally only exposed for testing. +void LogSessionServiceEvent(Profile* profile, const SessionServiceEvent& event); + +#endif // CHROME_BROWSER_SESSIONS_SESSION_SERVICE_LOG_H_
diff --git a/chrome/browser/sessions/session_service_log_unittest.cc b/chrome/browser/sessions/session_service_log_unittest.cc new file mode 100644 index 0000000..4cb308e5 --- /dev/null +++ b/chrome/browser/sessions/session_service_log_unittest.cc
@@ -0,0 +1,93 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/sessions/session_service_log.h" + +#include "base/time/time.h" +#include "chrome/test/base/testing_profile.h" +#include "content/public/test/browser_task_environment.h" +#include "testing/gtest/include/gtest/gtest.h" + +class SessionServiceLogTest : public testing::Test { + public: + protected: + content::BrowserTaskEnvironment task_environment_; + // |task_environment_| needs to still be alive when + // |testing_profile_| is destroyed. + TestingProfile testing_profile_; +}; + +TEST_F(SessionServiceLogTest, LogSessionServiceEvent) { + SessionServiceEvent start_event; + start_event.type = SessionServiceEventLogType::kStart; + start_event.time = base::Time::Now(); + start_event.data.start.did_last_session_crash = true; + LogSessionServiceEvent(&testing_profile_, start_event); + auto events = GetSessionServiceEvents(&testing_profile_); + ASSERT_EQ(1u, events.size()); + auto restored_event = *events.begin(); + EXPECT_EQ(SessionServiceEventLogType::kStart, restored_event.type); + EXPECT_EQ(start_event.time, restored_event.time); + EXPECT_EQ(start_event.data.start.did_last_session_crash, + restored_event.data.start.did_last_session_crash); +} + +TEST_F(SessionServiceLogTest, LogSessionServiceStartEvent) { + const base::Time start_time = base::Time::Now(); + LogSessionServiceStartEvent(&testing_profile_, false); + auto events = GetSessionServiceEvents(&testing_profile_); + ASSERT_EQ(1u, events.size()); + auto restored_event = *events.begin(); + EXPECT_EQ(SessionServiceEventLogType::kStart, restored_event.type); + EXPECT_LE(start_time, restored_event.time); + EXPECT_FALSE(restored_event.data.start.did_last_session_crash); +} + +TEST_F(SessionServiceLogTest, LogSessionServiceExitEvent) { + const base::Time start_time = base::Time::Now(); + LogSessionServiceExitEvent(&testing_profile_, 1, 2); + auto events = GetSessionServiceEvents(&testing_profile_); + ASSERT_EQ(1u, events.size()); + auto restored_event = *events.begin(); + EXPECT_EQ(SessionServiceEventLogType::kExit, restored_event.type); + EXPECT_LE(start_time, restored_event.time); + EXPECT_EQ(1, restored_event.data.exit.window_count); + EXPECT_EQ(2, restored_event.data.exit.tab_count); +} + +TEST_F(SessionServiceLogTest, LogSessionServiceRestoreEvent) { + const base::Time start_time = base::Time::Now(); + LogSessionServiceRestoreEvent(&testing_profile_, 1, 2, true); + auto events = GetSessionServiceEvents(&testing_profile_); + ASSERT_EQ(1u, events.size()); + auto restored_event = *events.begin(); + EXPECT_EQ(SessionServiceEventLogType::kRestore, restored_event.type); + EXPECT_LE(start_time, restored_event.time); + EXPECT_EQ(1, restored_event.data.restore.window_count); + EXPECT_EQ(2, restored_event.data.restore.tab_count); + EXPECT_TRUE(restored_event.data.restore.encountered_error_reading); +} + +TEST_F(SessionServiceLogTest, LogSessionServiceWriteErrorEvent) { + const base::Time start_time = base::Time::Now(); + LogSessionServiceWriteErrorEvent(&testing_profile_); + auto events = GetSessionServiceEvents(&testing_profile_); + ASSERT_EQ(1u, events.size()); + auto restored_event = *events.begin(); + EXPECT_EQ(SessionServiceEventLogType::kWriteError, restored_event.type); + EXPECT_LE(start_time, restored_event.time); + EXPECT_EQ(1, restored_event.data.write_error.error_count); +} + +TEST_F(SessionServiceLogTest, WriteErrorEventsCoalesce) { + const base::Time start_time = base::Time::Now(); + LogSessionServiceWriteErrorEvent(&testing_profile_); + LogSessionServiceWriteErrorEvent(&testing_profile_); + auto events = GetSessionServiceEvents(&testing_profile_); + ASSERT_EQ(1u, events.size()); + auto restored_event = *events.begin(); + EXPECT_EQ(SessionServiceEventLogType::kWriteError, restored_event.type); + EXPECT_LE(start_time, restored_event.time); + EXPECT_EQ(2, restored_event.data.write_error.error_count); +}
diff --git a/chrome/browser/share/DIR_METADATA b/chrome/browser/share/DIR_METADATA index e64cd2d..221823e82 100644 --- a/chrome/browser/share/DIR_METADATA +++ b/chrome/browser/share/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Sharing" +monorail: { + component: "UI>Browser>Sharing" }
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/send_tab_to_self/DIR_METADATA b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/send_tab_to_self/DIR_METADATA index e64cd2d..221823e82 100644 --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/send_tab_to_self/DIR_METADATA +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/send_tab_to_self/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Sharing" +monorail: { + component: "UI>Browser>Sharing" }
diff --git a/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinatorTest.java b/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinatorTest.java index 50eccbc..b9bd371 100644 --- a/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinatorTest.java +++ b/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinatorTest.java
@@ -33,6 +33,7 @@ import org.chromium.components.dom_distiller.core.DomDistillerUrlUtilsJni; import org.chromium.content_public.browser.WebContents; import org.chromium.ui.base.WindowAndroid; +import org.chromium.url.JUnitTestGURLs; /** * Tests for {@link LinkToTextCoordinator}. @@ -67,15 +68,15 @@ private Activity mAcivity; private static final String SELECTED_TEXT = "selection"; - private static final String VISIBLE_URL = "www.example.com"; + private static final String VISIBLE_URL = JUnitTestGURLs.EXAMPLE_URL; @Before public void setUpTest() { mAcivity = Robolectric.setupActivity(Activity.class); MockitoAnnotations.initMocks(this); jniMocker.mock(DomDistillerUrlUtilsJni.TEST_HOOKS, mDistillerUrlUtilsJniMock); - when(DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(VISIBLE_URL)) - .thenReturn(VISIBLE_URL); + when(mDistillerUrlUtilsJniMock.getOriginalUrlFromDistillerUrl(any(String.class))) + .thenReturn(JUnitTestGURLs.getGURL(VISIBLE_URL)); doNothing().when(mShareCallback).showThirdPartyShareSheet(any(), any(), anyLong()); Mockito.when(mTab.getWebContents()).thenReturn(mWebContents); @@ -86,7 +87,7 @@ @SmallTest public void getUrlToShareTest() { String selector = "selector"; - String expectedUrlToShare = "www.example.com#:~:text=selector"; + String expectedUrlToShare = VISIBLE_URL + "#:~:text=selector"; MockLinkToTextCoordinator coordinator = new MockLinkToTextCoordinator( mAcivity, mTab, mShareCallback, VISIBLE_URL, SELECTED_TEXT); Assert.assertEquals(expectedUrlToShare, coordinator.getUrlToShare(selector)); @@ -96,7 +97,7 @@ @SmallTest public void getUrlToShareTest_URLWithFragment() { String selector = "selector"; - String expectedUrlToShare = "www.example.com#:~:text=selector"; + String expectedUrlToShare = VISIBLE_URL + "#:~:text=selector"; MockLinkToTextCoordinator coordinator = new MockLinkToTextCoordinator( mAcivity, mTab, mShareCallback, VISIBLE_URL + "#elementid", SELECTED_TEXT); Assert.assertEquals(expectedUrlToShare, coordinator.getUrlToShare(selector)); @@ -106,7 +107,7 @@ @SmallTest public void getUrlToShareTest_EmptySelector() { String selector = ""; - String expectedUrlToShare = "www.example.com"; + String expectedUrlToShare = VISIBLE_URL; MockLinkToTextCoordinator coordinator = new MockLinkToTextCoordinator( mAcivity, mTab, mShareCallback, VISIBLE_URL, SELECTED_TEXT); Assert.assertEquals(expectedUrlToShare, coordinator.getUrlToShare(selector));
diff --git a/chrome/browser/sharesheet/DIR_METADATA b/chrome/browser/sharesheet/DIR_METADATA index 03315ae5..00289ad 100644 --- a/chrome/browser/sharesheet/DIR_METADATA +++ b/chrome/browser/sharesheet/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Apps>Foundation" +monorail: { + component: "Platform>Apps>Foundation" }
diff --git a/chrome/browser/sharing/DIR_METADATA b/chrome/browser/sharing/DIR_METADATA index e64cd2d..221823e82 100644 --- a/chrome/browser/sharing/DIR_METADATA +++ b/chrome/browser/sharing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Sharing" +monorail: { + component: "UI>Browser>Sharing" }
diff --git a/chrome/browser/signin/DIR_METADATA b/chrome/browser/signin/DIR_METADATA index e97d654..b368f1d2 100644 --- a/chrome/browser/signin/DIR_METADATA +++ b/chrome/browser/signin/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Services>SignIn" +monorail: { + component: "Services>SignIn" } -team_email: "chrome-signin@chromium.org" +team_email: "chrome-signin@chromium.org"
diff --git a/chrome/browser/site_isolation/DIR_METADATA b/chrome/browser/site_isolation/DIR_METADATA index c94379e..818e0e7e 100644 --- a/chrome/browser/site_isolation/DIR_METADATA +++ b/chrome/browser/site_isolation/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Sandbox>SiteIsolation" +monorail: { + component: "Internals>Sandbox>SiteIsolation" }
diff --git a/chrome/browser/site_isolation/origin_isolation_browsertest.cc b/chrome/browser/site_isolation/origin_agent_cluster_browsertest.cc similarity index 79% rename from chrome/browser/site_isolation/origin_isolation_browsertest.cc rename to chrome/browser/site_isolation/origin_agent_cluster_browsertest.cc index dde1eab..77ca4e7 100644 --- a/chrome/browser/site_isolation/origin_isolation_browsertest.cc +++ b/chrome/browser/site_isolation/origin_agent_cluster_browsertest.cc
@@ -23,15 +23,15 @@ #include "net/test/embedded_test_server/http_response.h" #include "url/gurl.h" -// General browsertests for the origin isolation feature can be found in +// General browsertests for the Origin-Agent-Cluster header can be found in // content/browser/isolated_origin_browsertest.cc. However testing use counters // is best done from chrome/; thus, this file exists. -class OriginIsolationBrowserTest : public InProcessBrowserTest { +class OriginAgentClusterBrowserTest : public InProcessBrowserTest { public: - OriginIsolationBrowserTest() + OriginAgentClusterBrowserTest() : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {} - ~OriginIsolationBrowserTest() override = default; + ~OriginAgentClusterBrowserTest() override = default; void SetUpCommandLine(base::CommandLine* command_line) override { ASSERT_TRUE(embedded_test_server()->InitializeAndListen()); @@ -43,8 +43,9 @@ void SetUpOnMainThread() override { https_server()->AddDefaultHandlers(GetChromeTestDataDir()); - https_server()->RegisterRequestHandler(base::BindRepeating( - &OriginIsolationBrowserTest::HandleResponse, base::Unretained(this))); + https_server()->RegisterRequestHandler( + base::BindRepeating(&OriginAgentClusterBrowserTest::HandleResponse, + base::Unretained(this))); ASSERT_TRUE(https_server()->Start()); @@ -61,12 +62,12 @@ private: std::unique_ptr<net::test_server::HttpResponse> HandleResponse( const net::test_server::HttpRequest& request) { - if (request.relative_url == "/isolate_origin") { + if (request.relative_url == "/origin_key_me") { auto response = std::make_unique<net::test_server::BasicHttpResponse>(); response->set_code(net::HTTP_OK); response->set_content_type("text/html"); response->AddCustomHeader("Origin-Agent-Cluster", "?1"); - response->set_content("isolate me!"); + response->set_content("I like origin keys!"); return std::move(response); } @@ -76,13 +77,13 @@ net::EmbeddedTestServer https_server_; base::test::ScopedFeatureList feature_list_; - DISALLOW_COPY_AND_ASSIGN(OriginIsolationBrowserTest); + DISALLOW_COPY_AND_ASSIGN(OriginAgentClusterBrowserTest); }; -IN_PROC_BROWSER_TEST_F(OriginIsolationBrowserTest, Navigations) { +IN_PROC_BROWSER_TEST_F(OriginAgentClusterBrowserTest, Navigations) { GURL start_url(https_server()->GetURL("foo.com", "/iframe.html")); - GURL isolated_url( - https_server()->GetURL("isolated.foo.com", "/isolate_origin")); + GURL origin_keyed_url( + https_server()->GetURL("origin-keyed.foo.com", "/origin_key_me")); content::WebContents* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); @@ -98,7 +99,7 @@ EXPECT_FALSE(web_feature_waiter->DidObserveWebFeature( blink::mojom::WebFeature::kOriginIsolationHeader)); - EXPECT_TRUE(NavigateIframeToURL(web_contents, "test", isolated_url)); + EXPECT_TRUE(NavigateIframeToURL(web_contents, "test", origin_keyed_url)); web_feature_waiter->Wait(); }
diff --git a/chrome/browser/speech/DIR_METADATA b/chrome/browser/speech/DIR_METADATA index 929d509..6e86d95 100644 --- a/chrome/browser/speech/DIR_METADATA +++ b/chrome/browser/speech/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Blink>Speech" +monorail: { + component: "Blink>Speech" }
diff --git a/chrome/browser/speech/extension_api/DIR_METADATA b/chrome/browser/speech/extension_api/DIR_METADATA index 5d850f3..e81b58c5 100644 --- a/chrome/browser/speech/extension_api/DIR_METADATA +++ b/chrome/browser/speech/extension_api/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>SpeechSynthesis" +monorail: { + component: "Internals>SpeechSynthesis" }
diff --git a/chrome/browser/speech/extension_api/tts_engine_extension_observer_chromeos.h b/chrome/browser/speech/extension_api/tts_engine_extension_observer_chromeos.h index 7742934..246081e 100644 --- a/chrome/browser/speech/extension_api/tts_engine_extension_observer_chromeos.h +++ b/chrome/browser/speech/extension_api/tts_engine_extension_observer_chromeos.h
@@ -7,7 +7,7 @@ #include "base/macros.h" #include "base/scoped_observer.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chromeos/services/tts/public/mojom/tts_service.mojom.h" #include "components/keyed_service/core/keyed_service.h" #include "content/public/browser/audio_service.h"
diff --git a/chrome/browser/speech/speech_recognition_service.cc b/chrome/browser/speech/speech_recognition_service.cc index 979b3f7..58530ad 100644 --- a/chrome/browser/speech/speech_recognition_service.cc +++ b/chrome/browser/speech/speech_recognition_service.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/speech/speech_recognition_service.h" #include "chrome/browser/browser_process.h" +#include "chrome/browser/component_updater/soda_language_pack_component_installer.h" #include "chrome/browser/service_sandbox_type.h" #include "chrome/common/pref_names.h" #include "chrome/grit/generated_resources.h" @@ -101,17 +102,14 @@ } base::FilePath SpeechRecognitionService::GetSodaConfigPath(PrefService* prefs) { - speech::LanguageCode language = speech::GetLanguageCode( - prefs->GetString(prefs::kLiveCaptionLanguageCode)); - PrefService* global_prefs = g_browser_process->local_state(); - switch (language) { - case speech::LanguageCode::kNone: - NOTREACHED(); - return base::FilePath(); - case speech::LanguageCode::kEnUs: - return global_prefs->GetFilePath(prefs::kSodaEnUsConfigPath); - case speech::LanguageCode::kJaJp: - return global_prefs->GetFilePath(prefs::kSodaJaJpConfigPath); + base::Optional<component_updater::SodaLanguagePackComponentConfig> + language_config = component_updater:: + SodaLanguagePackComponentInstallerPolicy::GetLanguageComponentConfig( + prefs->GetString(prefs::kLiveCaptionLanguageCode)); + + if (language_config) { + return g_browser_process->local_state()->GetFilePath( + language_config.value().config_path_pref); } return base::FilePath();
diff --git a/chrome/browser/ssl/DIR_METADATA b/chrome/browser/ssl/DIR_METADATA index dbd946f..8c7ba12d 100644 --- a/chrome/browser/ssl/DIR_METADATA +++ b/chrome/browser/ssl/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>Interstitials" +monorail: { + component: "UI>Browser>Interstitials" } -team_email: "security-enamel@chromium.org" +team_email: "security-enamel@chromium.org"
diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ssl/security_state_tab_helper.cc index c11f6e1c..5a87212 100644 --- a/chrome/browser/ssl/security_state_tab_helper.cc +++ b/chrome/browser/ssl/security_state_tab_helper.cc
@@ -344,7 +344,7 @@ DEPRECATED_SB_THREAT_TYPE_URL_PASSWORD_PROTECTION_PHISHING: case safe_browsing::SB_THREAT_TYPE_URL_BINARY_MALWARE: case safe_browsing::SB_THREAT_TYPE_EXTENSION: - case safe_browsing::SB_THREAT_TYPE_BLACKLISTED_RESOURCE: + case safe_browsing::SB_THREAT_TYPE_BLOCKLISTED_RESOURCE: case safe_browsing::SB_THREAT_TYPE_API_ABUSE: case safe_browsing::SB_THREAT_TYPE_SUBRESOURCE_FILTER: case safe_browsing::SB_THREAT_TYPE_CSD_WHITELIST:
diff --git a/chrome/browser/ssl/ssl_browsertest.cc b/chrome/browser/ssl/ssl_browsertest.cc index 49b40d9..f6bbd87 100644 --- a/chrome/browser/ssl/ssl_browsertest.cc +++ b/chrome/browser/ssl/ssl_browsertest.cc
@@ -282,7 +282,7 @@ public: ChromeContentBrowserClientForMixedContentTest() {} void OverrideWebkitPrefs( - content::RenderViewHost* rvh, + content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) override { web_prefs->allow_running_insecure_content = allow_running_insecure_content_; web_prefs->strict_mixed_content_checking = strict_mixed_content_checking_;
diff --git a/chrome/browser/status_icons/DIR_METADATA b/chrome/browser/status_icons/DIR_METADATA index 51aa2df5e..16438828 100644 --- a/chrome/browser/status_icons/DIR_METADATA +++ b/chrome/browser/status_icons/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Shell>StatusArea" +monorail: { + component: "UI>Shell>StatusArea" }
diff --git a/chrome/browser/storage/DIR_METADATA b/chrome/browser/storage/DIR_METADATA index ed87c37..d669a4a 100644 --- a/chrome/browser/storage/DIR_METADATA +++ b/chrome/browser/storage/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>Storage>Quota" +monorail: { + component: "Blink>Storage>Quota" } -team_email: "storage-dev@chromium.org" +team_email: "storage-dev@chromium.org"
diff --git a/chrome/browser/subresource_filter/DIR_METADATA b/chrome/browser/subresource_filter/DIR_METADATA index ee26cc0..04cdbc4 100644 --- a/chrome/browser/subresource_filter/DIR_METADATA +++ b/chrome/browser/subresource_filter/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>AdFilter" +monorail: { + component: "UI>Browser>AdFilter" }
diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc index 9b9af29b..35eb648 100644 --- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc +++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
@@ -78,14 +78,6 @@ throttle_manager->client()); } -void ChromeSubresourceFilterClient::OnReloadRequested() { - // TODO(crbug.com/1116095): Once ContentSubresourceFilterThrottleManager knows - // about ProfileInteractionManager, this method can move entirely into - // ContentSubresourceFilterThrottleManager::OnReloadRequested() and - // SubresourceFilterClient::OnReloadRequested() can be eliminated. - profile_interaction_manager_->OnReloadRequested(); -} - void ChromeSubresourceFilterClient::ShowNotification() { const GURL& top_level_url = web_contents_->GetLastCommittedURL(); if (profile_context_->settings_manager()->ShouldShowUIForSite(
diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.h b/chrome/browser/subresource_filter/chrome_subresource_filter_client.h index 72ee4a3..ac9652c 100644 --- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.h +++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.h
@@ -52,7 +52,6 @@ GetSafeBrowsingDatabaseManager() override; subresource_filter::ProfileInteractionManager* GetProfileInteractionManager() override; - void OnReloadRequested() override; private: void ShowUI(const GURL& url);
diff --git a/chrome/browser/subresource_filter/subresource_filter_settings_browsertest.cc b/chrome/browser/subresource_filter/subresource_filter_settings_browsertest.cc index 6fd5457..d184ad4 100644 --- a/chrome/browser/subresource_filter/subresource_filter_settings_browsertest.cc +++ b/chrome/browser/subresource_filter/subresource_filter_settings_browsertest.cc
@@ -183,7 +183,8 @@ // Allowlist via a reload. content::TestNavigationObserver navigation_observer(web_contents(), 1); - ChromeSubresourceFilterClient::FromWebContents(web_contents()) + subresource_filter::ContentSubresourceFilterThrottleManager::FromWebContents( + web_contents()) ->OnReloadRequested(); navigation_observer.Wait(); @@ -202,7 +203,8 @@ // Allowlist via a reload. content::TestNavigationObserver navigation_observer(web_contents(), 1); - ChromeSubresourceFilterClient::FromWebContents(web_contents()) + subresource_filter::ContentSubresourceFilterThrottleManager::FromWebContents( + web_contents()) ->OnReloadRequested(); navigation_observer.Wait();
diff --git a/chrome/browser/subresource_redirect/DIR_METADATA b/chrome/browser/subresource_redirect/DIR_METADATA index b0650c8..ce14958 100644 --- a/chrome/browser/subresource_redirect/DIR_METADATA +++ b/chrome/browser/subresource_redirect/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Network>DataProxy" +monorail: { + component: "Internals>Network>DataProxy" }
diff --git a/chrome/browser/supervised_user/DIR_METADATA b/chrome/browser/supervised_user/DIR_METADATA index b0c85ce1..d4229da 100644 --- a/chrome/browser/supervised_user/DIR_METADATA +++ b/chrome/browser/supervised_user/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>SupervisedUser" +monorail: { + component: "Services>SupervisedUser" }
diff --git a/chrome/browser/supervised_user/supervised_user_error_page/DIR_METADATA b/chrome/browser/supervised_user/supervised_user_error_page/DIR_METADATA index b0c85ce1..d4229da 100644 --- a/chrome/browser/supervised_user/supervised_user_error_page/DIR_METADATA +++ b/chrome/browser/supervised_user/supervised_user_error_page/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>SupervisedUser" +monorail: { + component: "Services>SupervisedUser" }
diff --git a/chrome/browser/sync/DIR_METADATA b/chrome/browser/sync/DIR_METADATA index 4a34521..59732b8 100644 --- a/chrome/browser/sync/DIR_METADATA +++ b/chrome/browser/sync/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>Sync" +monorail: { + component: "Services>Sync" }
diff --git a/chrome/browser/sync_file_system/DIR_METADATA b/chrome/browser/sync_file_system/DIR_METADATA index e898987..b2811d9 100644 --- a/chrome/browser/sync_file_system/DIR_METADATA +++ b/chrome/browser/sync_file_system/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>Storage>FileSystem" +monorail: { + component: "Blink>Storage>FileSystem" } -team_email: "storage-dev@chromium.org" +team_email: "storage-dev@chromium.org"
diff --git a/chrome/browser/tab/DIR_METADATA b/chrome/browser/tab/DIR_METADATA index 4e634b0..7a2580a 100644 --- a/chrome/browser/tab/DIR_METADATA +++ b/chrome/browser/tab/DIR_METADATA
@@ -1 +1 @@ -os: ANDROID +os: ANDROID
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.java index 5bf2057..fbe733f 100644 --- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.java +++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.java
@@ -125,7 +125,7 @@ * @return Original url of the tab without any Chrome feature modifications applied * (e.g. reader mode). */ - String getOriginalUrl(); + GURL getOriginalUrl(); /** * @return The tab title.
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage.java index 51a67bf..52e279b 100644 --- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage.java +++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage.java
@@ -5,6 +5,8 @@ package org.chromium.chrome.browser.tab.state; import android.content.Context; +import android.os.StrictMode; +import android.os.SystemClock; import androidx.annotation.MainThread; import androidx.annotation.VisibleForTesting; @@ -29,8 +31,6 @@ import java.util.LinkedList; import java.util.Locale; -import android.os.StrictMode; - /** * {@link PersistedTabDataStorage} which uses a file for the storage */ @@ -207,9 +207,14 @@ FileOutputStream outputStream = null; boolean success = false; try { + long startTime = SystemClock.elapsedRealtime(); outputStream = new FileOutputStream(mFile); outputStream.write(mData); success = true; + RecordHistogram.recordTimesHistogram( + String.format(Locale.US, "Tabs.PersistedTabData.Storage.SaveTime.%s", + getUmaTag()), + SystemClock.elapsedRealtime() - startTime); } catch (FileNotFoundException e) { Log.e(TAG, String.format(Locale.ENGLISH, @@ -332,9 +337,14 @@ boolean success = false; byte[] res = null; try { + long startTime = SystemClock.elapsedRealtime(); AtomicFile atomicFile = new AtomicFile(mFile); res = atomicFile.readFully(); success = true; + RecordHistogram.recordTimesHistogram( + String.format(Locale.US, "Tabs.PersistedTabData.Storage.LoadTime.%s", + getUmaTag()), + SystemClock.elapsedRealtime() - startTime); } catch (FileNotFoundException e) { Log.e(TAG, String.format(Locale.ENGLISH,
diff --git a/chrome/browser/tab_contents/DIR_METADATA b/chrome/browser/tab_contents/DIR_METADATA index 3d8600bf..d182185 100644 --- a/chrome/browser/tab_contents/DIR_METADATA +++ b/chrome/browser/tab_contents/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser" +monorail: { + component: "UI>Browser" }
diff --git a/chrome/browser/tab_group/DIR_METADATA b/chrome/browser/tab_group/DIR_METADATA index e0201f5..a85cfc7e 100644 --- a/chrome/browser/tab_group/DIR_METADATA +++ b/chrome/browser/tab_group/DIR_METADATA
@@ -1,4 +1,4 @@ monorail { component: "UI>Browser>Mobile>TabSwitcher>Grid" } -os: ANDROID +os: ANDROID
diff --git a/chrome/browser/tabmodel/DIR_METADATA b/chrome/browser/tabmodel/DIR_METADATA index 875946bb..70fcbdb 100644 --- a/chrome/browser/tabmodel/DIR_METADATA +++ b/chrome/browser/tabmodel/DIR_METADATA
@@ -1,5 +1,5 @@ -monorail: { - component: "UI>Browser>Mobile>TabModel" +monorail: { + component: "UI>Browser>Mobile>TabModel" } -team_email: "clank-app-team@google.com" -os: ANDROID +team_email: "clank-app-team@google.com" +os: ANDROID
diff --git a/chrome/browser/tabpersistence/DIR_METADATA b/chrome/browser/tabpersistence/DIR_METADATA index 6388584..f722a51 100644 --- a/chrome/browser/tabpersistence/DIR_METADATA +++ b/chrome/browser/tabpersistence/DIR_METADATA
@@ -1,5 +1,5 @@ -monorail: { - component: "UI>Browser>Mobile" +monorail: { + component: "UI>Browser>Mobile" } -team_email: "clank-app-team@google.com" -os: ANDROID +team_email: "clank-app-team@google.com" +os: ANDROID
diff --git a/chrome/browser/task_manager/DIR_METADATA b/chrome/browser/task_manager/DIR_METADATA index 777f8c5..645bce4 100644 --- a/chrome/browser/task_manager/DIR_METADATA +++ b/chrome/browser/task_manager/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>TaskManager" +monorail: { + component: "UI>TaskManager" }
diff --git a/chrome/browser/test_dummy/DIR_METADATA b/chrome/browser/test_dummy/DIR_METADATA index 1c6c7fa3..fa369c48 100644 --- a/chrome/browser/test_dummy/DIR_METADATA +++ b/chrome/browser/test_dummy/DIR_METADATA
@@ -1,5 +1,5 @@ -monorail: { - component: "Mobile>FeatureModules" +monorail: { + component: "Mobile>FeatureModules" } -team_email: "clank-lego@chromium.org" -os: ANDROID +team_email: "clank-lego@chromium.org" +os: ANDROID
diff --git a/chrome/browser/tflite_experiment/DIR_METADATA b/chrome/browser/tflite_experiment/DIR_METADATA index 142a254..fb4428a 100644 --- a/chrome/browser/tflite_experiment/DIR_METADATA +++ b/chrome/browser/tflite_experiment/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>OptimizationGuide" +monorail: { + component: "Internals>OptimizationGuide" }
diff --git a/chrome/browser/tflite_experiment/tflite_experiment_keyed_service_browsertest.cc b/chrome/browser/tflite_experiment/tflite_experiment_keyed_service_browsertest.cc index d06f7d0..87e9d441 100644 --- a/chrome/browser/tflite_experiment/tflite_experiment_keyed_service_browsertest.cc +++ b/chrome/browser/tflite_experiment/tflite_experiment_keyed_service_browsertest.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/tflite_experiment/tflite_experiment_keyed_service.h" #include "base/command_line.h" +#include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/json/json_reader.h" #include "base/path_service.h" @@ -25,9 +26,7 @@ #include "content/public/test/browser_test_utils.h" #include "testing/gtest/include/gtest/gtest.h" -constexpr char kTFLiteModelName[] = "simple_test.tflite"; constexpr char kNavigationURL[] = "https://google.com"; -constexpr char kTFLiteExperimentLogName[] = "tflite_experiment.log"; namespace { // Fetch and calculate the total number of samples from all the bins for @@ -90,16 +89,6 @@ EXPECT_FALSE(tflite_experiment_keyed_service->tflite_predictor()); } -IN_PROC_BROWSER_TEST_F( - TFLiteExperimentKeyedServiceDisabledBrowserTest, - TFLiteExperimentEnabledButTFLitePredictorDisabledOnNavigation) { - GURL navigation_url(kNavigationURL); - ui_test_utils::NavigateToURL(browser(), navigation_url); - WaitForTFLiteObserverToCallNullTFLitePredictor(); - histogram_tester()->ExpectUniqueSample( - "TFLiteExperiment.Observer.TFLitePredictor.Null", true, 1); -} - class TFLiteExperimentKeyedServiceBrowserTest : public InProcessBrowserTest { public: TFLiteExperimentKeyedServiceBrowserTest() = default; @@ -112,21 +101,21 @@ // Set TFLite model path. base::PathService::Get(chrome::DIR_TEST_DATA, &g_test_data_directory); g_test_data_directory = - g_test_data_directory.Append(FILE_PATH_LITERAL(kTFLiteModelName)); + g_test_data_directory.Append(FILE_PATH_LITERAL("simple_test.tflite")); cmd->AppendSwitchASCII(tflite_experiment::switches::kTFLiteModelPath, - g_test_data_directory.value()); + g_test_data_directory.MaybeAsASCII()); // Set TFLite experiment log path. cmd->AppendSwitchASCII( tflite_experiment::switches::kTFLiteExperimentLogPath, - GetTFLiteExperimentLogPath().value()); + GetTFLiteExperimentLogPath().MaybeAsASCII()); } base::FilePath GetTFLiteExperimentLogPath() { base::FilePath g_test_data_directory; base::PathService::Get(chrome::DIR_TEST_DATA, &g_test_data_directory); - g_test_data_directory = - g_test_data_directory.Append(kTFLiteExperimentLogName); + g_test_data_directory = g_test_data_directory.Append( + FILE_PATH_LITERAL("tflite_experiment.log")); return g_test_data_directory; }
diff --git a/chrome/browser/themes/DIR_METADATA b/chrome/browser/themes/DIR_METADATA index 18d07219..2cead19b 100644 --- a/chrome/browser/themes/DIR_METADATA +++ b/chrome/browser/themes/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Themes" +monorail: { + component: "UI>Browser>Themes" }
diff --git a/chrome/browser/thumbnail/DIR_METADATA b/chrome/browser/thumbnail/DIR_METADATA index d3e49d2b9..b0601b9 100644 --- a/chrome/browser/thumbnail/DIR_METADATA +++ b/chrome/browser/thumbnail/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Thumbnail" +monorail: { + component: "UI>Browser>Thumbnail" }
diff --git a/chrome/browser/touch_to_fill/DIR_METADATA b/chrome/browser/touch_to_fill/DIR_METADATA index 41b767ea..17b7d3f 100644 --- a/chrome/browser/touch_to_fill/DIR_METADATA +++ b/chrome/browser/touch_to_fill/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Passwords" +monorail: { + component: "UI>Browser>Passwords" }
diff --git a/chrome/browser/touch_to_fill/android/DIR_METADATA b/chrome/browser/touch_to_fill/android/DIR_METADATA index 41b767ea..17b7d3f 100644 --- a/chrome/browser/touch_to_fill/android/DIR_METADATA +++ b/chrome/browser/touch_to_fill/android/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Passwords" +monorail: { + component: "UI>Browser>Passwords" }
diff --git a/chrome/browser/tracing/DIR_METADATA b/chrome/browser/tracing/DIR_METADATA index da9cc67..3f03c803 100644 --- a/chrome/browser/tracing/DIR_METADATA +++ b/chrome/browser/tracing/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Speed>Tracing" +monorail: { + component: "Speed>Tracing" } -team_email: "tracing@chromium.org" +team_email: "tracing@chromium.org"
diff --git a/chrome/browser/translate/DIR_METADATA b/chrome/browser/translate/DIR_METADATA index 7a9a0a2f..f13e6d64 100644 --- a/chrome/browser/translate/DIR_METADATA +++ b/chrome/browser/translate/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Language>Translate" +monorail: { + component: "UI>Browser>Language>Translate" }
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 6907f9e..58d53c6a 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -994,6 +994,7 @@ "global_media_controls/media_notification_device_provider.h", "global_media_controls/media_notification_device_provider_impl.cc", "global_media_controls/media_notification_device_provider_impl.h", + "global_media_controls/media_notification_producer.h", "global_media_controls/media_notification_service.cc", "global_media_controls/media_notification_service.h", "global_media_controls/media_notification_service_factory.cc", @@ -2076,8 +2077,8 @@ "settings_window_manager_chromeos.h", "settings_window_manager_observer_chromeos.h", "supervised_user/parent_permission_dialog.h", - "toolbar/assign_to_desks_menu_model.cc", - "toolbar/assign_to_desks_menu_model.h", + "toolbar/move_to_desks_menu_model.cc", + "toolbar/move_to_desks_menu_model.h", "views/apps/app_dialog/app_block_dialog_view.cc", "views/apps/app_dialog/app_block_dialog_view.h", "views/apps/app_dialog/app_pause_dialog_view.cc",
diff --git a/chrome/browser/ui/android/infobars/OWNERS b/chrome/browser/ui/android/infobars/OWNERS index be845e69..3314ae2 100644 --- a/chrome/browser/ui/android/infobars/OWNERS +++ b/chrome/browser/ui/android/infobars/OWNERS
@@ -1,5 +1,3 @@ mdjones@chromium.org -per-file app_banner*=dominickn@chromium.org per-file generated_password_saved_infobar.*=rouslan@chromium.org -per-file installable_ambient_badge*=dominickn@chromium.org
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 c2db6106..fb2b764 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
@@ -217,7 +217,7 @@ <translation id="250020030759455918">Sie können Ihren Anmeldestatus für <ph name="SITE_NAME" />, Browserdaten und Websitedaten in Chrome einsehen</translation> <translation id="2512164632052122970">Content-Sprachen</translation> <translation id="2513403576141822879">Weitere Einstellungen in Verbindung mit Datenschutz, Sicherheit und der Erhebung von Daten finden Sie unter <ph name="BEGIN_LINK" />Synchronisierung und Google-Dienste<ph name="END_LINK" /></translation> -<translation id="2517472476991765520">Suchen</translation> +<translation id="2517472476991765520">Scannen</translation> <translation id="2518590038762162553">Im Lite-Modus werden Seiten schneller in Chrome geladen und es werden bis zu 60 % weniger Daten verbraucht. Zum Optimieren der von Ihnen besuchten Seiten sendet Chrome Ihren Datenverkehr an Google. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation> <translation id="2523184218357549926">URLs der von Ihnen besuchten Seiten werden an Google gesendet</translation> <translation id="2532336938189706096">Web-Ansicht</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 c2ce13cc..0eef86a 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
@@ -382,7 +382,7 @@ <translation id="3716182511346448902">Бұл парақша тым көп жадты пайдаланатындықтан, Chromе оны тоқтатып қойды.</translation> <translation id="3721119614952978349">Сіз және Google</translation> <translation id="3737319253362202215">Аударма параметрлері</translation> -<translation id="3738139272394829648">Touch to Search</translation> +<translation id="3738139272394829648">Түртіп іздеу</translation> <translation id="3739899004075612870"><ph name="PRODUCT_NAME" /> қолданбасында бетбелгі қойылды</translation> <translation id="3749259744154402564">Қолдау көрсетілмейді</translation> <translation id="3771001275138982843">Жаңартылған нұсқа жүктеп алынбады.</translation> @@ -1033,7 +1033,7 @@ <translation id="8115259494083109761">QR кодын сканерлеу үшін Chrome-ға камера пайдалану рұқсатын беріңіз.</translation> <translation id="8127542551745560481">Негізгі бетті өзгерту</translation> <translation id="813082847718468539">Сайт ақпаратын көру</translation> -<translation id="8137558756159375272">Touch to Search таңдалған сөз бен ағымдағы бетті мәнмәтін ретінде Google іздеу қызметіне жібереді. Оны <ph name="BEGIN_LINK" />Параметрлер<ph name="END_LINK" /> ішінен өшіруіңізге болады.</translation> +<translation id="8137558756159375272">Түртіп іздеу функциясы таңдалған сөз бен ағымдағы бетті контекст ретінде Google Search-ке жібереді. Оны <ph name="BEGIN_LINK" />Параметрлерде<ph name="END_LINK" /> өшіруіңізге болады.</translation> <translation id="8153351135626613369">Assistant жарамды веб-сайттарда көмектесе алатын жағдайда, оның терезесі пайда болады.</translation> <translation id="8156139159503939589">Қай тілде оқисыз?</translation> <translation id="8168435359814927499">Мазмұн</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 1d0f747..21d5fd4 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
@@ -70,7 +70,7 @@ <translation id="1409879593029778104">ఫైల్ ఇప్పటికే ఉన్నందున <ph name="FILE_NAME" /> డౌన్లోడ్ నిరోధించబడింది.</translation> <translation id="1414981605391750300">Googleని సంప్రదిస్తోంది. ఇందుకు ఒక నిమిషం పట్టవచ్చు…</translation> <translation id="1416550906796893042">అప్లికేషన్ వెర్షన్</translation> -<translation id="1430915738399379752">ముద్రించు</translation> +<translation id="1430915738399379752">ప్రింట్</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> షేర్ చేయడం సాధ్యపడలేదు</translation> <translation id="1477626028522505441">సర్వర్ సమస్యల కారణంగా <ph name="FILE_NAME" /> డౌన్లోడ్ విఫలమైంది.</translation> <translation id="1506061864768559482">సెర్చ్ ఇంజిన్</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 17b4104..a3ea601b 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
@@ -430,7 +430,7 @@ <translation id="4062305924942672200">Yuridik ma’lumot</translation> <translation id="4084682180776658562">Xatcho‘p</translation> <translation id="4084712963632273211">Muallifi: <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />Google tomonidan taqdim etildi<ph name="END_DEEMPHASIZED" /></translation> -<translation id="4095146165863963773">Ilovaga tegishli ma’lumotlar o‘chirilsinmi?</translation> +<translation id="4095146165863963773">Bu ilova maʼlumotlari oʻchirilsinmi?</translation> <translation id="4095189195365058471">Saqlab olish: <ph name="BEGIN_NEW" />Yangi<ph name="END_NEW" /></translation> <translation id="4099578267706723511">Google’ga foydalanish statistikasi va ishdan chiqish hisobotlarini jo‘natish orqali Chrome’ning takomillashtirishga yordam bering</translation> <translation id="4108998448622696017">Xavfli tahdidlarni aniqlaydi va sizni ulardan himoya qiladi.</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 9115ada83..75f4f75d 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
@@ -155,7 +155,7 @@ <translation id="2096012225669085171">在所有设备上保持同步,获享个性化体验</translation> <translation id="2100273922101894616">自动登录</translation> <translation id="2100314319871056947">请尝试使用较小的文本块进行分享</translation> -<translation id="2109711654079915747">无需离开所在页面,便可了解网站上的主题。“触摸搜索”功能会将被触摸的字词及上下文一起发送给 Google 搜索,后者随即会据此返回相应的定义、图片、搜索结果及其他详情。 +<translation id="2109711654079915747">无需离开所在页面,便可了解网站上的主题。“轻触搜索”功能会将被触摸的字词及上下文一起发送给 Google 搜索,后者随即会据此返回相应的定义、图片、搜索结果及其他详情。 点按任意字词即可进行搜索。要优化您的搜索,请轻触并按住相应区域以多选或少选一些字词。要修改您的搜索,请打开面板,点按图标打开新标签页,然后在搜索框中做出更改。</translation> <translation id="2111511281910874386">转至相关网页</translation> @@ -203,7 +203,7 @@ <translation id="2426805022920575512">选择其他帐号</translation> <translation id="2433507940547922241">外观</translation> <translation id="2450083983707403292">要重新开始下载 <ph name="FILE_NAME" /> 吗?</translation> -<translation id="2450907520913474542">无需离开所在页面,便可了解网站上的主题。“触摸搜索”功能会将被触摸的字词及上下文一起发送给 Google 搜索,后者随即会据此返回相应的定义、图片、搜索结果及其他详情。 +<translation id="2450907520913474542">无需离开所在页面,便可了解网站上的主题。“轻触搜索”功能会将被触摸的字词及上下文一起发送给 Google 搜索,后者随即会据此返回相应的定义、图片、搜索结果及其他详情。 轻触并按住任意字词即可进行搜索。要优化您的搜索,请多选或少选一些字词。要修改您的搜索,请打开面板,点按图标打开新标签页,然后在搜索框中做出更改。</translation> <translation id="2459390580524506445">增强版语音搜索</translation> @@ -382,7 +382,7 @@ <translation id="3716182511346448902">此网页占用的内存过多,因此 Chrome 已将其暂停。</translation> <translation id="3721119614952978349">您与 Google</translation> <translation id="3737319253362202215">翻译设置</translation> -<translation id="3738139272394829648">点按即可搜索</translation> +<translation id="3738139272394829648">轻触搜索</translation> <translation id="3739899004075612870">已在 <ph name="PRODUCT_NAME" /> 中添加书签</translation> <translation id="3749259744154402564">不支持</translation> <translation id="3771001275138982843">无法下载此项更新</translation> @@ -1033,7 +1033,7 @@ <translation id="8115259494083109761">如需扫描二维码,请允许 Chrome 使用您的摄像头</translation> <translation id="8127542551745560481">修改主页</translation> <translation id="813082847718468539">查看网站信息</translation> -<translation id="8137558756159375272">“触摸搜索”会将所选字词和当前页面(作为上下文)一起发送给 Google 搜索。您可以在<ph name="BEGIN_LINK" />设置<ph name="END_LINK" />中停用此功能。</translation> +<translation id="8137558756159375272">“轻触搜索”会将所选字词和当前页面(作为上下文)一起发送给 Google 搜索。您可以在<ph name="BEGIN_LINK" />设置<ph name="END_LINK" />中停用此功能。</translation> <translation id="8153351135626613369">当 Google 助理检测到它可在受支持的网站上为您提供帮助时,它即会主动出现</translation> <translation id="8156139159503939589">您能看懂哪些语言?</translation> <translation id="8168435359814927499">内容</translation>
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/VoiceToolbarButtonController.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/VoiceToolbarButtonController.java index 265f124..a0e2c17 100644 --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/VoiceToolbarButtonController.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/VoiceToolbarButtonController.java
@@ -16,6 +16,8 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.lifecycle.ConfigurationChangedObserver; +import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.browser.profiles.ProfileManager; import org.chromium.chrome.browser.tab.Tab; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.ui.modaldialog.ModalDialogManager; @@ -30,7 +32,7 @@ * assistant support. */ public class VoiceToolbarButtonController - implements ButtonDataProvider, ConfigurationChangedObserver { + implements ButtonDataProvider, ConfigurationChangedObserver, ProfileManager.Observer { /** * Default minimum width to show the voice search button. */ @@ -66,6 +68,18 @@ } /** + * After profile is created and prefs loaded ensure that UI is updated and + * the mic shown/hidden as needed. + */ + @Override + public void onProfileAdded(Profile profile) { + updateMicButtonState(); + } + + @Override + public void onProfileDestroyed(Profile profile) {} + + /** * Creates a VoiceToolbarButtonController object. * @param context The Context for retrieving resources, etc. * @param activeTabSupplier Provides the currently displayed {@link Tab}. @@ -112,6 +126,8 @@ /*supportsTinting=*/true, /*iphCommandBuilder=*/null, /*isEnabled=*/true); mScreenWidthDp = context.getResources().getConfiguration().screenWidthDp; + + ProfileManager.addObserver(this); } @Override @@ -124,11 +140,18 @@ notifyObservers(mButtonData.canShow); } + /** Triggers checking and possibly updating the mic visibility */ + public void updateMicButtonState() { + mButtonData.canShow = shouldShowVoiceButton(mActiveTabSupplier.get()); + notifyObservers(mButtonData.canShow); + } + @Override public void destroy() { mActivityLifecycleDispatcher.unregister(this); mModalDialogManager.removeObserver(mModalDialogManagerObserver); mObservers.clear(); + ProfileManager.removeObserver(this); } @Override
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/VoiceToolbarButtonControllerUnitTest.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/VoiceToolbarButtonControllerUnitTest.java index dbcb990..5ce68a82 100644 --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/VoiceToolbarButtonControllerUnitTest.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/VoiceToolbarButtonControllerUnitTest.java
@@ -6,7 +6,10 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; import android.content.Context; import android.content.res.Configuration; @@ -102,4 +105,25 @@ assertTrue(mVoiceToolbarButtonController.get(mTab).canShow); } + + @EnableFeatures({ChromeFeatureList.VOICE_BUTTON_IN_TOP_TOOLBAR}) + @Test + public void onProfileLoaded_isVoiceSearchEnabledChecked() { + verify(mVoiceSearchDelegate, never()).isVoiceSearchEnabled(); + mVoiceToolbarButtonController.onProfileAdded(null /* ignored */); + + verify(mVoiceSearchDelegate, atLeastOnce()).isVoiceSearchEnabled(); + } + + @EnableFeatures({ChromeFeatureList.VOICE_BUTTON_IN_TOP_TOOLBAR}) + @Test + public void onProfileLoaded_canShowChanges() { + assertTrue(mVoiceToolbarButtonController.get(mTab).canShow); + + // Simulate loading a profile with policy disabling mic in the UI. + doReturn(false).when(mVoiceSearchDelegate).isVoiceSearchEnabled(); + mVoiceToolbarButtonController.onProfileAdded(null /* ignored */); + + assertFalse(mVoiceToolbarButtonController.get(mTab).canShow); + } }
diff --git a/chrome/browser/ui/ash/accessibility/accessibility_controller_client.cc b/chrome/browser/ui/ash/accessibility/accessibility_controller_client.cc index 08476e77..12e6f419 100644 --- a/chrome/browser/ui/ash/accessibility/accessibility_controller_client.cc +++ b/chrome/browser/ui/ash/accessibility/accessibility_controller_client.cc
@@ -6,7 +6,7 @@ #include "ash/public/cpp/accessibility_controller.h" #include "ash/public/cpp/accessibility_controller_enums.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h" #include "chrome/grit/generated_resources.h"
diff --git a/chrome/browser/ui/ash/chrome_accessibility_delegate.cc b/chrome/browser/ui/ash/chrome_accessibility_delegate.cc index 8001a75..a60f6b3 100644 --- a/chrome/browser/ui/ash/chrome_accessibility_delegate.cc +++ b/chrome/browser/ui/ash/chrome_accessibility_delegate.cc
@@ -6,8 +6,8 @@ #include <limits> -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" using chromeos::AccessibilityManager; using chromeos::MagnificationManager;
diff --git a/chrome/browser/ui/ash/clipboard_util.cc b/chrome/browser/ui/ash/clipboard_util.cc index aa8c488..d03d9e8 100644 --- a/chrome/browser/ui/ash/clipboard_util.cc +++ b/chrome/browser/ui/ash/clipboard_util.cc
@@ -7,6 +7,7 @@ #include <stdint.h> #include <memory> +#include "ash/public/cpp/clipboard_history_controller.h" #include "base/base64.h" #include "base/callback.h" #include "base/files/file_util.h" @@ -91,6 +92,12 @@ std::make_unique<ui::ClipboardData>( *ui::ClipboardNonBacked::GetForCurrentThread()->GetClipboardData( nullptr)); + + // Before modifying the clipboard, remove the old entry in ClipboardHistory. + // CopyAndMaintainClipboard will write to the clipboard a second time, + // creating a new entry in clipboard history. + ash::ClipboardHistoryController::Get()->DeleteClipboardItemByClipboardData( + current_data.get()); CopyAndMaintainClipboard(std::move(current_data), html, png_data, decoded_image); std::move(callback).Run(true);
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc index c58a511..032413c 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc
@@ -44,8 +44,8 @@ #include "chrome/browser/apps/app_service/browser_app_launcher.h" #include "chrome/browser/apps/app_service/launch_utils.h" #include "chrome/browser/apps/platform_apps/app_browsertest_util.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/speech_monitor.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/speech_monitor.h" #include "chrome/browser/chromeos/file_manager/file_manager_test_util.h" #include "chrome/browser/chromeos/login/demo_mode/demo_session.h" #include "chrome/browser/extensions/extension_apitest.h"
diff --git a/chrome/browser/ui/ash/launcher/shelf_context_menu.cc b/chrome/browser/ui/ash/launcher/shelf_context_menu.cc index b1438835..8d6acb5 100644 --- a/chrome/browser/ui/ash/launcher/shelf_context_menu.cc +++ b/chrome/browser/ui/ash/launcher/shelf_context_menu.cc
@@ -14,7 +14,7 @@ #include "chrome/app/vector_icons/vector_icons.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/crostini/crostini_shelf_utils.h" #include "chrome/browser/chromeos/crostini/crostini_util.h" #include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/ui/ash/system_tray_client.cc b/chrome/browser/ui/ash/system_tray_client.cc index 18100dd1..6d48d907 100644 --- a/chrome/browser/ui/ash/system_tray_client.cc +++ b/chrome/browser/ui/ash/system_tray_client.cc
@@ -13,9 +13,9 @@ #include "base/metrics/user_metrics.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process_platform_part.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/login/help_app_launcher.h" #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
diff --git a/chrome/browser/ui/ash/volume_controller_browsertest.cc b/chrome/browser/ui/ash/volume_controller_browsertest.cc index ceb3d663..382447b 100644 --- a/chrome/browser/ui/ash/volume_controller_browsertest.cc +++ b/chrome/browser/ui/ash/volume_controller_browsertest.cc
@@ -8,8 +8,8 @@ #include "ash/shell.h" #include "base/command_line.h" #include "base/macros.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/test/base/in_process_browser_test.h" #include "chromeos/audio/chromeos_sounds.h" #include "chromeos/audio/cras_audio_handler.h"
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc index 14f4f7d..13059dd 100644 --- a/chrome/browser/ui/browser_command_controller.cc +++ b/chrome/browser/ui/browser_command_controller.cc
@@ -674,15 +674,15 @@ case IDC_TAKE_SCREENSHOT: TakeScreenshot(); break; - case IDC_SEND_TO_DESK_1: - case IDC_SEND_TO_DESK_2: - case IDC_SEND_TO_DESK_3: - case IDC_SEND_TO_DESK_4: - case IDC_SEND_TO_DESK_5: - case IDC_SEND_TO_DESK_6: - case IDC_SEND_TO_DESK_7: - case IDC_SEND_TO_DESK_8: - SendToDeskAtIndex(browser_, id - IDC_SEND_TO_DESK_1); + case IDC_MOVE_TO_DESK_1: + case IDC_MOVE_TO_DESK_2: + case IDC_MOVE_TO_DESK_3: + case IDC_MOVE_TO_DESK_4: + case IDC_MOVE_TO_DESK_5: + case IDC_MOVE_TO_DESK_6: + case IDC_MOVE_TO_DESK_7: + case IDC_MOVE_TO_DESK_8: + SendToDeskAtIndex(browser_, id - IDC_MOVE_TO_DESK_1); break; case IDC_TOGGLE_ASSIGN_TO_ALL_DESKS: ToggleAssignedToAllDesks(browser_); @@ -973,16 +973,16 @@ command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_4, true); command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_5, true); - // Assign to desks - command_updater_.UpdateCommandEnabled(IDC_ASSIGN_TO_DESKS_MENU, true); - static_assert(IDC_SEND_TO_DESK_1 == IDC_SEND_TO_DESK_2 - 1 && - IDC_SEND_TO_DESK_2 == IDC_SEND_TO_DESK_3 - 1 && - IDC_SEND_TO_DESK_3 == IDC_SEND_TO_DESK_4 - 1 && - IDC_SEND_TO_DESK_4 == IDC_SEND_TO_DESK_5 - 1 && - IDC_SEND_TO_DESK_5 == IDC_SEND_TO_DESK_6 - 1 && - IDC_SEND_TO_DESK_6 == IDC_SEND_TO_DESK_7 - 1 && - IDC_SEND_TO_DESK_7 == IDC_SEND_TO_DESK_8 - 1, - "IDC_SEND_TO_DESK_* commands must be in order."); + // Move to desks + command_updater_.UpdateCommandEnabled(IDC_MOVE_TO_DESKS_MENU, true); + static_assert(IDC_MOVE_TO_DESK_1 == IDC_MOVE_TO_DESK_2 - 1 && + IDC_MOVE_TO_DESK_2 == IDC_MOVE_TO_DESK_3 - 1 && + IDC_MOVE_TO_DESK_3 == IDC_MOVE_TO_DESK_4 - 1 && + IDC_MOVE_TO_DESK_4 == IDC_MOVE_TO_DESK_5 - 1 && + IDC_MOVE_TO_DESK_5 == IDC_MOVE_TO_DESK_6 - 1 && + IDC_MOVE_TO_DESK_6 == IDC_MOVE_TO_DESK_7 - 1 && + IDC_MOVE_TO_DESK_7 == IDC_MOVE_TO_DESK_8 - 1, + "IDC_MOVE_TO_DESK_* commands must be in order."); auto* desks_helper = ash::DesksHelper::Get(); UpdateCommandsForDesks(desks_helper ? desks_helper->GetNumberOfDesks() : 1); command_updater_.UpdateCommandEnabled(IDC_TOGGLE_ASSIGN_TO_ALL_DESKS, true); @@ -1457,9 +1457,9 @@ } void BrowserCommandController::UpdateCommandsForDesks(int num_desks) { - constexpr int kMaxNumberOfDesks = IDC_SEND_TO_DESK_8 - IDC_SEND_TO_DESK_1 + 1; + constexpr int kMaxNumberOfDesks = IDC_MOVE_TO_DESK_8 - IDC_MOVE_TO_DESK_1 + 1; for (int i = 0; i < kMaxNumberOfDesks; ++i) { - command_updater_.UpdateCommandEnabled(IDC_SEND_TO_DESK_1 + i, + command_updater_.UpdateCommandEnabled(IDC_MOVE_TO_DESK_1 + i, i < num_desks); } }
diff --git a/chrome/browser/ui/cocoa/apps/OWNERS b/chrome/browser/ui/cocoa/apps/OWNERS index aac10b5b..36b238b 100644 --- a/chrome/browser/ui/cocoa/apps/OWNERS +++ b/chrome/browser/ui/cocoa/apps/OWNERS
@@ -1,2 +1,2 @@ -benwells@chromium.org +ccameron@chromium.org tapted@chromium.org
diff --git a/chrome/browser/ui/font_access/DIR_METADATA b/chrome/browser/ui/font_access/DIR_METADATA index 67fb1c0..77e8c1c9 100644 --- a/chrome/browser/ui/font_access/DIR_METADATA +++ b/chrome/browser/ui/font_access/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>Storage>FontAccess" +monorail: { + component: "Blink>Storage>FontAccess" } -team_email: "storage-dev@chromium.org" +team_email: "storage-dev@chromium.org"
diff --git a/chrome/browser/ui/global_media_controls/cast_media_notification_provider.cc b/chrome/browser/ui/global_media_controls/cast_media_notification_provider.cc index dbbc4e7..01b02fc 100644 --- a/chrome/browser/ui/global_media_controls/cast_media_notification_provider.cc +++ b/chrome/browser/ui/global_media_controls/cast_media_notification_provider.cc
@@ -54,6 +54,23 @@ CastMediaNotificationProvider::~CastMediaNotificationProvider() = default; +base::WeakPtr<media_message_center::MediaNotificationItem> +CastMediaNotificationProvider::GetNotificationItem(const std::string& id) { + const auto item_it = items_.find(id); + if (item_it == items_.end()) + return nullptr; + return item_it->second.GetWeakPtr(); +} + +std::set<std::string> +CastMediaNotificationProvider::GetActiveControllableNotificationIds() const { + std::set<std::string> ids; + for (const auto& item : items_) { + ids.insert(item.first); + } + return ids; +} + void CastMediaNotificationProvider::OnRoutesUpdated( const std::vector<media_router::MediaRoute>& routes, const std::vector<media_router::MediaRoute::Id>& joinable_route_ids) { @@ -96,14 +113,6 @@ items_changed_callback_.Run(); } -base::WeakPtr<media_message_center::MediaNotificationItem> -CastMediaNotificationProvider::GetNotificationItem(const std::string& id) { - const auto item_it = items_.find(id); - if (item_it == items_.end()) - return nullptr; - return item_it->second.GetWeakPtr(); -} - bool CastMediaNotificationProvider::HasItems() const { return !items_.empty(); }
diff --git a/chrome/browser/ui/global_media_controls/cast_media_notification_provider.h b/chrome/browser/ui/global_media_controls/cast_media_notification_provider.h index a755597..40bb77e 100644 --- a/chrome/browser/ui/global_media_controls/cast_media_notification_provider.h +++ b/chrome/browser/ui/global_media_controls/cast_media_notification_provider.h
@@ -12,6 +12,7 @@ #include "base/callback_forward.h" #include "base/memory/weak_ptr.h" #include "chrome/browser/ui/global_media_controls/cast_media_notification_item.h" +#include "chrome/browser/ui/global_media_controls/media_notification_producer.h" #include "components/media_router/browser/media_routes_observer.h" class Profile; @@ -22,7 +23,8 @@ // Manages media notifications shown in the Global Media Controls dialog for // active Cast sessions. -class CastMediaNotificationProvider : public media_router::MediaRoutesObserver { +class CastMediaNotificationProvider : public MediaNotificationProducer, + public media_router::MediaRoutesObserver { public: CastMediaNotificationProvider( Profile* profile, @@ -40,14 +42,16 @@ const CastMediaNotificationProvider&) = delete; ~CastMediaNotificationProvider() override; + // MediaNotificationProducer: + base::WeakPtr<media_message_center::MediaNotificationItem> + GetNotificationItem(const std::string& id) override; + std::set<std::string> GetActiveControllableNotificationIds() const override; + // media_router::MediaRoutesObserver: void OnRoutesUpdated(const std::vector<media_router::MediaRoute>& routes, const std::vector<media_router::MediaRoute::Id>& joinable_route_ids) override; - base::WeakPtr<media_message_center::MediaNotificationItem> - GetNotificationItem(const std::string& id); - virtual bool HasItems() const; size_t GetItemCount() const;
diff --git a/chrome/browser/ui/global_media_controls/media_notification_producer.h b/chrome/browser/ui/global_media_controls/media_notification_producer.h new file mode 100644 index 0000000..fcb5edc --- /dev/null +++ b/chrome/browser/ui/global_media_controls/media_notification_producer.h
@@ -0,0 +1,29 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_GLOBAL_MEDIA_CONTROLS_MEDIA_NOTIFICATION_PRODUCER_H_ +#define CHROME_BROWSER_UI_GLOBAL_MEDIA_CONTROLS_MEDIA_NOTIFICATION_PRODUCER_H_ + +#include <set> +#include <string> + +#include "base/memory/weak_ptr.h" + +namespace media_message_center { +class MediaNotificationItem; +} // namespace media_message_center + +// Creates and owns the media notification items shown in the Global Media +// Controls. There are multiple MediaNotificationProducers for different types +// of notification items. +class MediaNotificationProducer { + public: + virtual base::WeakPtr<media_message_center::MediaNotificationItem> + GetNotificationItem(const std::string& id) = 0; + + virtual std::set<std::string> GetActiveControllableNotificationIds() + const = 0; +}; + +#endif // CHROME_BROWSER_UI_GLOBAL_MEDIA_CONTROLS_MEDIA_NOTIFICATION_PRODUCER_H_
diff --git a/chrome/browser/ui/global_media_controls/media_notification_service.cc b/chrome/browser/ui/global_media_controls/media_notification_service.cc index ac63fa6..7e9d370 100644 --- a/chrome/browser/ui/global_media_controls/media_notification_service.cc +++ b/chrome/browser/ui/global_media_controls/media_notification_service.cc
@@ -326,10 +326,13 @@ base::BindRepeating( &MediaNotificationService::OnCastNotificationsChanged, base::Unretained(this))); + notification_providers_.insert(cast_notification_provider_.get()); } if (media_router::GlobalMediaControlsCastStartStopEnabled()) { presentation_request_notification_provider_ = std::make_unique<PresentationRequestNotificationProvider>(this); + notification_providers_.insert( + presentation_request_notification_provider_.get()); } } @@ -693,17 +696,18 @@ if (!dialog_delegate_) return; - std::list<std::string> sorted_session_ids; - for (const std::string& id : active_controllable_session_ids_) { + auto notification_ids = GetActiveControllableNotificationIds(); + std::list<std::string> sorted_notification_ids; + for (const std::string& id : notification_ids) { auto session_it = sessions_.find(id); if (session_it != sessions_.end() && session_it->second.IsPlaying()) { - sorted_session_ids.push_front(id); + sorted_notification_ids.push_front(id); } else { - sorted_session_ids.push_back(id); + sorted_notification_ids.push_back(id); } } - for (const std::string& id : sorted_session_ids) { + for (const std::string& id : sorted_notification_ids) { base::WeakPtr<media_message_center::MediaNotificationItem> item = GetNotificationItem(id); MediaNotificationContainerImpl* container = @@ -717,7 +721,7 @@ } media_message_center::RecordConcurrentNotificationCount( - active_controllable_session_ids_.size()); + notification_ids.size()); if (cast_notification_provider_) { media_message_center::RecordConcurrentCastNotificationCount( @@ -726,7 +730,7 @@ } bool MediaNotificationService::HasActiveNotifications() const { - return !active_controllable_session_ids_.empty(); + return !GetActiveControllableNotificationIds().empty(); } bool MediaNotificationService::HasFrozenNotifications() const { @@ -854,22 +858,26 @@ base::WeakPtr<media_message_center::MediaNotificationItem> MediaNotificationService::GetNonSessionNotificationItem(const std::string& id) { - if (cast_notification_provider_) { - auto item = cast_notification_provider_->GetNotificationItem(id); - if (item) + for (auto* notification_provider : notification_providers_) { + auto item = notification_provider->GetNotificationItem(id); + if (item) { return item; + } } - - if (presentation_request_notification_provider_) { - auto item = - presentation_request_notification_provider_->GetNotificationItem(id); - if (item) - return item; - } - return nullptr; } +std::set<std::string> +MediaNotificationService::GetActiveControllableNotificationIds() const { + std::set<std::string> ids = active_controllable_session_ids_; + for (auto* notification_provider : notification_providers_) { + const std::set<std::string>& provider_ids = + notification_provider->GetActiveControllableNotificationIds(); + ids.insert(provider_ids.begin(), provider_ids.end()); + } + return ids; +} + void MediaNotificationService::OnNotificationChanged( const std::string* changed_notification_id) { for (auto& observer : observers_)
diff --git a/chrome/browser/ui/global_media_controls/media_notification_service.h b/chrome/browser/ui/global_media_controls/media_notification_service.h index ba7e6114..f6e986b5 100644 --- a/chrome/browser/ui/global_media_controls/media_notification_service.h +++ b/chrome/browser/ui/global_media_controls/media_notification_service.h
@@ -307,6 +307,8 @@ base::WeakPtr<media_message_center::MediaNotificationItem> GetNonSessionNotificationItem(const std::string& id); + std::set<std::string> GetActiveControllableNotificationIds() const; + // Called after changing anything about a notification to notify any observers // and update the visibility of supplemental notifications. If the change is // associated with a particular notification ID, that ID should be passed as @@ -321,23 +323,23 @@ // Used to track whether there are any active controllable sessions. If not, // then there's nothing to show in the dialog and we can hide the toolbar - // icon. Contains sessions from both Media Session API and Cast. - std::unordered_set<std::string> active_controllable_session_ids_; + // icon. Contains sessions from the Media Session API. + std::set<std::string> active_controllable_session_ids_; // Tracks the sessions that are currently frozen. If there are only frozen // sessions, we will disable the toolbar icon and wait to hide it. - std::unordered_set<std::string> frozen_session_ids_; + std::set<std::string> frozen_session_ids_; // Tracks the sessions that are currently dragged out of the dialog. These // should not be shown in the dialog and will be ignored for showing the // toolbar icon. - std::unordered_set<std::string> dragged_out_session_ids_; + std::set<std::string> dragged_out_session_ids_; // Tracks the sessions that are currently inactive. Sessions become inactive // after a period of time of being paused with no user interaction. Inactive // sessions are hidden from the dialog until the user interacts with them // again (e.g. by playing the session). - std::unordered_set<std::string> inactive_session_ids_; + std::set<std::string> inactive_session_ids_; // A mapping of supplemental notification IDs to their associated web // contents. See MediaNotificationController::AddSupplementalNotification for @@ -366,6 +368,9 @@ std::unique_ptr<PresentationRequestNotificationProvider> presentation_request_notification_provider_; + // Pointers to all notification providers owned by |this|. + std::set<MediaNotificationProducer*> notification_providers_; + base::ObserverList<MediaNotificationServiceObserver> observers_; // Tracks the number of times we have recorded an action for a specific
diff --git a/chrome/browser/ui/global_media_controls/presentation_request_notification_provider.cc b/chrome/browser/ui/global_media_controls/presentation_request_notification_provider.cc index 033de3a..449977d 100644 --- a/chrome/browser/ui/global_media_controls/presentation_request_notification_provider.cc +++ b/chrome/browser/ui/global_media_controls/presentation_request_notification_provider.cc
@@ -59,6 +59,12 @@ return nullptr; } +std::set<std::string> +PresentationRequestNotificationProvider::GetActiveControllableNotificationIds() + const { + return item_ ? std::set<std::string>({item_->id()}) : std::set<std::string>(); +} + void PresentationRequestNotificationProvider::OnStartPresentationContextCreated( std::unique_ptr<media_router::StartPresentationContext> context) { DCHECK(context); @@ -69,9 +75,9 @@ void PresentationRequestNotificationProvider::OnNotificationListChanged() {} void PresentationRequestNotificationProvider::OnMediaDialogOpened() { - // At the point where this method is called, MediaNotificationService is in - // a state where it can't accept new notifications. As a workaround, we - // simply defer the handling of the event. + // At the point where this method is called, MediaNotificationService is + // in a state where it can't accept new notifications. As a workaround, + // we simply defer the handling of the event. content::GetUIThreadTaskRunner({})->PostTask( FROM_HERE, base::BindOnce( @@ -92,17 +98,17 @@ void PresentationRequestNotificationProvider::AfterMediaDialogOpened( base::WeakPtr<media_router::WebContentsPresentationManager> presentation_manager) { - // It's possible the presentation manager was deleted since the call to this - // method was scheduled. + // It's possible the presentation manager was deleted since the call to + // this method was scheduled. if (!presentation_manager) return; presentation_manager->AddObserver(this); - // Handle any request that was created while we weren't watching, first making - // sure the dialog hasn't been closed since the we found out it was opening. - // This is the normal way notifications are created for a default presentation - // request. + // Handle any request that was created while we weren't watching, first + // making sure the dialog hasn't been closed since the we found out it was + // opening. This is the normal way notifications are created for a default + // presentation request. if (presentation_manager->HasDefaultPresentationRequest() && notification_service_->HasOpenDialog()) { OnDefaultPresentationChanged( @@ -121,10 +127,11 @@ void PresentationRequestNotificationProvider::OnDefaultPresentationChanged( const content::PresentationRequest* presentation_request) { // NOTE: We only observe the presentation manager while the media control - // dialog is open, so this method is only handling the unusual case where the - // default presentation request is changed while the dialog is open. In the - // even more unusual case where the dialog is already open with a notification - // for a non-default request, we ignored changes in the default request. + // dialog is open, so this method is only handling the unusual case where + // the default presentation request is changed while the dialog is open. + // In the even more unusual case where the dialog is already open with a + // notification for a non-default request, we ignored changes in the + // default request. if (!HasItemForNonDefaultRequest()) { if (presentation_request) { CreateItemForPresentationRequest(*presentation_request, nullptr); @@ -137,8 +144,8 @@ void PresentationRequestNotificationProvider::CreateItemForPresentationRequest( const content::PresentationRequest& request, std::unique_ptr<media_router::StartPresentationContext> context) { - // This may replace an existing item, which is the right thing to do if we've - // reached this point. + // This may replace an existing item, which is the right thing to do if + // we've reached this point. item_.emplace(notification_service_, request, std::move(context)); auto* rfh = content::RenderFrameHost::FromID(request.render_frame_host_id);
diff --git a/chrome/browser/ui/global_media_controls/presentation_request_notification_provider.h b/chrome/browser/ui/global_media_controls/presentation_request_notification_provider.h index 22b6821..0d12bf5 100644 --- a/chrome/browser/ui/global_media_controls/presentation_request_notification_provider.h +++ b/chrome/browser/ui/global_media_controls/presentation_request_notification_provider.h
@@ -11,6 +11,7 @@ #include "base/memory/weak_ptr.h" #include "base/optional.h" +#include "chrome/browser/ui/global_media_controls/media_notification_producer.h" #include "chrome/browser/ui/global_media_controls/media_notification_service_observer.h" #include "chrome/browser/ui/global_media_controls/presentation_request_notification_item.h" #include "components/media_router/browser/presentation/web_contents_presentation_manager.h" @@ -39,7 +40,8 @@ // involved; at that point CastMediaNotificationProvider become responsible for // managing the notification for an active session. class PresentationRequestNotificationProvider final - : public media_router::WebContentsPresentationManager::Observer, + : public MediaNotificationProducer, + public media_router::WebContentsPresentationManager::Observer, public MediaNotificationServiceObserver { public: explicit PresentationRequestNotificationProvider( @@ -50,14 +52,16 @@ const PresentationRequestNotificationProvider&) = delete; ~PresentationRequestNotificationProvider() final; + // MediaNotificationProducer: base::WeakPtr<media_message_center::MediaNotificationItem> - GetNotificationItem(const std::string& id); + GetNotificationItem(const std::string& id) override; + std::set<std::string> GetActiveControllableNotificationIds() const override; void OnStartPresentationContextCreated( std::unique_ptr<media_router::StartPresentationContext> context); private: - // MediaNotificationServiceObserver + // MediaNotificationServiceObserver: void OnNotificationListChanged() final; void OnMediaDialogOpened() final; void OnMediaDialogClosed() final; @@ -69,7 +73,7 @@ base::WeakPtr<media_router::WebContentsPresentationManager> presentation_manager); - // WebContentsPresentationManager::Observer + // WebContentsPresentationManager::Observer: void OnDefaultPresentationChanged( const content::PresentationRequest* presentation_request) final;
diff --git a/chrome/browser/ui/page_action/OWNERS b/chrome/browser/ui/page_action/OWNERS index 5c755f4..ceeecb01 100644 --- a/chrome/browser/ui/page_action/OWNERS +++ b/chrome/browser/ui/page_action/OWNERS
@@ -1,3 +1,6 @@ alancutter@chromium.org calamity@chromium.org +cmp@chromium.org +dmurph@chromium.org estade@chromium.org +msw@chromium.org
diff --git a/chrome/browser/ui/thumbnails/thumbnail_image.cc b/chrome/browser/ui/thumbnails/thumbnail_image.cc index 6a9ac4f..c5996b02 100644 --- a/chrome/browser/ui/thumbnails/thumbnail_image.cc +++ b/chrome/browser/ui/thumbnails/thumbnail_image.cc
@@ -61,6 +61,8 @@ void ThumbnailImage::AssignSkBitmap(SkBitmap bitmap, base::Optional<uint64_t> frame_id) { + thumbnail_id_ = base::Token::CreateRandom(); + base::ThreadPool::PostTaskAndReplyWithResult( FROM_HERE, {base::TaskPriority::USER_VISIBLE, @@ -68,24 +70,29 @@ base::BindOnce(&ThumbnailImage::CompressBitmap, std::move(bitmap), frame_id), base::BindOnce(&ThumbnailImage::AssignJPEGData, - weak_ptr_factory_.GetWeakPtr(), base::TimeTicks::Now(), - frame_id)); + weak_ptr_factory_.GetWeakPtr(), thumbnail_id_, + base::TimeTicks::Now(), frame_id)); } void ThumbnailImage::ClearData() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - // TODO(crbug.com/1163121): Update this to notify the observers that the data - // has changed. It may be necessary to re-engineer them to accept - // empty/invalid data. crbug.com/1152894 - if (!data_) + if (!data_ && thumbnail_id_.is_zero()) return; - // TODO(crbug.com/1163121): Cancel existing thumbnail request. If - // called after ConvertJPEGDataToImageSkiaAndNotifyObservers() but - // before observers get notified, the observers will receive the stale - // thumbnail. + // If there was stored data we should notify observers that it was + // cleared. Otherwise, a bitmap was assigned but never compressed so + // the observers still think the thumbnail is blank. + const bool should_notify = !!data_; + data_.reset(); + thumbnail_id_ = base::Token(); + + // Notify observers of the new, blank thumbnail. + if (should_notify) { + NotifyCompressedDataObservers(data_); + NotifyUncompressedDataObservers(thumbnail_id_, gfx::ImageSkia()); + } } void ThumbnailImage::RequestThumbnailImage() { @@ -104,9 +111,18 @@ return data_->data.size(); } -void ThumbnailImage::AssignJPEGData(base::TimeTicks assign_sk_bitmap_time, - base::Optional<uint64_t> frame_id, +void ThumbnailImage::AssignJPEGData(base::Token thumbnail_id, + base::TimeTicks assign_sk_bitmap_time, + base::Optional<uint64_t> frame_id_for_trace, std::vector<uint8_t> data) { + // If the image is stale (a new thumbnail was assigned or the + // thumbnail was cleared after AssignSkBitmap), ignore it. + if (thumbnail_id != thumbnail_id_) { + if (async_operation_finished_callback_) + async_operation_finished_callback_.Run(); + return; + } + data_ = base::MakeRefCounted<base::RefCountedData<std::vector<uint8_t>>>( std::move(data)); @@ -125,9 +141,9 @@ ConvertJPEGDataToImageSkiaAndNotifyObservers(); }; - if (frame_id) { + if (frame_id_for_trace) { TRACE_EVENT_WITH_FLOW0("ui", "Tab.Preview.JPEGReceivedOnUIThreadWithFlow", - *frame_id, TRACE_EVENT_FLAG_FLOW_IN); + *frame_id_for_trace, TRACE_EVENT_FLAG_FLOW_IN); notify(); } else { TRACE_EVENT0("ui", "Tab.Preview.JPEGReceivedOnUIThread"); @@ -149,14 +165,20 @@ base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}, base::BindOnce(&ThumbnailImage::UncompressImage, data_), base::BindOnce(&ThumbnailImage::NotifyUncompressedDataObservers, - weak_ptr_factory_.GetWeakPtr())); + weak_ptr_factory_.GetWeakPtr(), thumbnail_id_)); } -void ThumbnailImage::NotifyUncompressedDataObservers(gfx::ImageSkia image) { +void ThumbnailImage::NotifyUncompressedDataObservers(base::Token thumbnail_id, + gfx::ImageSkia image) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (async_operation_finished_callback_) async_operation_finished_callback_.Run(); + // If the image is stale (a new thumbnail was assigned or the + // thumbnail was cleared after AssignSkBitmap), ignore it. + if (thumbnail_id != thumbnail_id_) + return; + for (Subscription* subscription : subscribers_) { auto size_hint = subscription->size_hint_; if (subscription->uncompressed_image_callback_)
diff --git a/chrome/browser/ui/thumbnails/thumbnail_image.h b/chrome/browser/ui/thumbnails/thumbnail_image.h index 0ea860b..28d53adda 100644 --- a/chrome/browser/ui/thumbnails/thumbnail_image.h +++ b/chrome/browser/ui/thumbnails/thumbnail_image.h
@@ -17,6 +17,7 @@ #include "base/observer_list.h" #include "base/optional.h" #include "base/sequence_checker.h" +#include "base/token.h" #include "ui/gfx/image/image_skia.h" namespace base { @@ -149,11 +150,13 @@ virtual ~ThumbnailImage(); - void AssignJPEGData(base::TimeTicks assign_sk_bitmap_time, - base::Optional<uint64_t> frame_id, + void AssignJPEGData(base::Token thumbnail_id, + base::TimeTicks assign_sk_bitmap_time, + base::Optional<uint64_t> frame_id_for_trace, std::vector<uint8_t> data); bool ConvertJPEGDataToImageSkiaAndNotifyObservers(); - void NotifyUncompressedDataObservers(gfx::ImageSkia image); + void NotifyUncompressedDataObservers(base::Token thumbnail_id, + gfx::ImageSkia image); void NotifyCompressedDataObservers(CompressedThumbnailData data); static std::vector<uint8_t> CompressBitmap(SkBitmap bitmap, @@ -175,6 +178,10 @@ // the old data. CompressedThumbnailData data_; + // A randomly generated ID associated with each image assigned by + // AssignSkBitmap(). + base::Token thumbnail_id_; + // Subscriptions are inserted on |Subscribe()| calls and removed when // they are destroyed via callback. The order of subscriber // notification doesn't matter, so don't maintain any ordering. Since
diff --git a/chrome/browser/ui/thumbnails/thumbnail_image_unittest.cc b/chrome/browser/ui/thumbnails/thumbnail_image_unittest.cc index e529184..7a4591f 100644 --- a/chrome/browser/ui/thumbnails/thumbnail_image_unittest.cc +++ b/chrome/browser/ui/thumbnails/thumbnail_image_unittest.cc
@@ -295,25 +295,63 @@ EXPECT_TRUE(waiter.called()); } -TEST_F(ThumbnailImageTest, ClearThumbnailWhileNotifyingObservers) { +TEST_F(ThumbnailImageTest, ClearThumbnailAfterAssignBitmap) { auto image = base::MakeRefCounted<ThumbnailImage>(this); std::unique_ptr<Subscription> subscription = image->Subscribe(); - CallbackWaiter waiter; + CallbackWaiter uncompressed_image_waiter; subscription->SetUncompressedImageCallback( - IgnoreArgs<gfx::ImageSkia>(waiter.callback())); + IgnoreArgs<gfx::ImageSkia>(uncompressed_image_waiter.callback())); + + CallbackWaiter compressed_image_waiter; + subscription->SetCompressedImageCallback( + IgnoreArgs<ThumbnailImage::CompressedThumbnailData>( + compressed_image_waiter.callback())); + + CallbackWaiter async_operation_finished_waiter; + image->set_async_operation_finished_callback_for_testing( + async_operation_finished_waiter.callback()); + + // No observers should be notified if the thumbnail is cleared just + // after assigning a bitmap. + SkBitmap bitmap = CreateBitmap(kTestBitmapWidth, kTestBitmapHeight); + image->AssignSkBitmap(bitmap, base::nullopt); + image->ClearData(); + async_operation_finished_waiter.Wait(); + EXPECT_TRUE(async_operation_finished_waiter.called()); + EXPECT_FALSE(uncompressed_image_waiter.called()); + EXPECT_FALSE(compressed_image_waiter.called()); +} + +TEST_F(ThumbnailImageTest, ClearExistingThumbnailNotifiesObservers) { + auto image = base::MakeRefCounted<ThumbnailImage>(this); + + std::unique_ptr<Subscription> subscription = image->Subscribe(); + + CallbackWaiter uncompressed_image_waiter; + subscription->SetUncompressedImageCallback( + IgnoreArgs<gfx::ImageSkia>(uncompressed_image_waiter.callback())); + + CallbackWaiter compressed_image_waiter; + subscription->SetCompressedImageCallback( + IgnoreArgs<ThumbnailImage::CompressedThumbnailData>( + compressed_image_waiter.callback())); SkBitmap bitmap = CreateBitmap(kTestBitmapWidth, kTestBitmapHeight); image->AssignSkBitmap(bitmap, base::nullopt); - waiter.Wait(); - EXPECT_TRUE(waiter.called()); - waiter.Reset(); + compressed_image_waiter.Wait(); + uncompressed_image_waiter.Wait(); + EXPECT_TRUE(compressed_image_waiter.called()); + EXPECT_TRUE(uncompressed_image_waiter.called()); + compressed_image_waiter.Reset(); + uncompressed_image_waiter.Reset(); - image->RequestThumbnailImage(); image->ClearData(); - waiter.Wait(); - EXPECT_TRUE(waiter.called()); + compressed_image_waiter.Wait(); + uncompressed_image_waiter.Wait(); + EXPECT_TRUE(compressed_image_waiter.called()); + EXPECT_TRUE(uncompressed_image_waiter.called()); } // Makes sure a null dereference does not happen. Regression test for
diff --git a/chrome/browser/ui/toolbar/assign_to_desks_menu_model.cc b/chrome/browser/ui/toolbar/assign_to_desks_menu_model.cc deleted file mode 100644 index b319331..0000000 --- a/chrome/browser/ui/toolbar/assign_to_desks_menu_model.cc +++ /dev/null
@@ -1,60 +0,0 @@ -// 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 "chrome/browser/ui/toolbar/assign_to_desks_menu_model.h" - -#include "ash/public/cpp/desks_helper.h" -#include "chrome/app/chrome_command_ids.h" -#include "chrome/grit/generated_resources.h" -#include "ui/base/l10n/l10n_util.h" -#include "ui/views/widget/widget.h" - -AssignToDesksMenuModel::AssignToDesksMenuModel( - ui::SimpleMenuModel::Delegate* delegate, - views::Widget* browser_widget) - : SimpleMenuModel(delegate), - desks_helper_(ash::DesksHelper::Get()), - browser_widget_(browser_widget) { - constexpr int kMaxNumberOfDesks = IDC_SEND_TO_DESK_8 - IDC_SEND_TO_DESK_1 + 1; - AddCheckItem(IDC_TOGGLE_ASSIGN_TO_ALL_DESKS, - l10n_util::GetStringUTF16(IDS_ASSIGN_TO_ALL_DESKS)); - assign_to_all_desks_item_index_ = GetItemCount() - 1; - AddSeparator(ui::NORMAL_SEPARATOR); - - // Store the number of items that occur before the group of send to desk items - // so we can retrieve the send to desk items' indices properly. - send_to_desk_group_offset_ = GetItemCount(); - for (int i = 0; i < kMaxNumberOfDesks; ++i) - AddCheckItem(IDC_SEND_TO_DESK_1 + i, base::string16()); -} - -bool AssignToDesksMenuModel::IsVisibleAt(int index) const { - if (index == assign_to_all_desks_item_index_) - return true; - return OffsetIndexForSendToDeskGroup(index) < - desks_helper_->GetNumberOfDesks(); -} - -base::string16 AssignToDesksMenuModel::GetLabelAt(int index) const { - if (index == assign_to_all_desks_item_index_) - return l10n_util::GetStringUTF16(IDS_ASSIGN_TO_ALL_DESKS); - return desks_helper_->GetDeskName(OffsetIndexForSendToDeskGroup(index)); -} - -bool AssignToDesksMenuModel::IsItemCheckedAt(int index) const { - const bool is_assigned_to_all_desks = - browser_widget_ && browser_widget_->IsVisibleOnAllWorkspaces(); - - if (index == assign_to_all_desks_item_index_) - return is_assigned_to_all_desks; - - return !is_assigned_to_all_desks && OffsetIndexForSendToDeskGroup(index) == - desks_helper_->GetActiveDeskIndex(); -} - -int AssignToDesksMenuModel::OffsetIndexForSendToDeskGroup(int index) const { - const int send_to_desk_group_index = index - send_to_desk_group_offset_; - DCHECK_GE(send_to_desk_group_index, 0); - return send_to_desk_group_index; -}
diff --git a/chrome/browser/ui/toolbar/assign_to_desks_menu_model.h b/chrome/browser/ui/toolbar/assign_to_desks_menu_model.h deleted file mode 100644 index 7598878..0000000 --- a/chrome/browser/ui/toolbar/assign_to_desks_menu_model.h +++ /dev/null
@@ -1,47 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_UI_TOOLBAR_ASSIGN_TO_DESKS_MENU_MODEL_H_ -#define CHROME_BROWSER_UI_TOOLBAR_ASSIGN_TO_DESKS_MENU_MODEL_H_ - -#include "ui/base/models/simple_menu_model.h" - -namespace ash { -class DesksHelper; -} - -namespace views { -class Widget; -} - -// A menu model that builds the contents of the assign to desks menu. -class AssignToDesksMenuModel : public ui::SimpleMenuModel { - public: - AssignToDesksMenuModel(ui::SimpleMenuModel::Delegate* delegate, - views::Widget* browser_widget); - ~AssignToDesksMenuModel() override = default; - - // SimpleMenuModel: - bool IsVisibleAt(int index) const override; - base::string16 GetLabelAt(int index) const override; - bool IsItemCheckedAt(int index) const override; - - private: - // Returns |index| - |send_to_desk_group_offset_|. This value is the relative - // index within the group of send to desk items. This value must be greater - // than or equal to 0. - int OffsetIndexForSendToDeskGroup(int index) const; - - const ash::DesksHelper* const desks_helper_; - const views::Widget* const browser_widget_; - - // This is the index of the assign to all desks item in the menu model. - int assign_to_all_desks_item_index_; - - // This is the number of items in the menu model that occurs before the group - // of send to desk items. - int send_to_desk_group_offset_; -}; - -#endif // CHROME_BROWSER_UI_TOOLBAR_ASSIGN_TO_DESKS_MENU_MODEL_H_
diff --git a/chrome/browser/ui/toolbar/move_to_desks_menu_model.cc b/chrome/browser/ui/toolbar/move_to_desks_menu_model.cc new file mode 100644 index 0000000..af777afde --- /dev/null +++ b/chrome/browser/ui/toolbar/move_to_desks_menu_model.cc
@@ -0,0 +1,60 @@ +// 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 "chrome/browser/ui/toolbar/move_to_desks_menu_model.h" + +#include "ash/public/cpp/desks_helper.h" +#include "chrome/app/chrome_command_ids.h" +#include "chrome/grit/generated_resources.h" +#include "ui/base/l10n/l10n_util.h" +#include "ui/views/widget/widget.h" + +MoveToDesksMenuModel::MoveToDesksMenuModel( + ui::SimpleMenuModel::Delegate* delegate, + views::Widget* browser_widget) + : SimpleMenuModel(delegate), + desks_helper_(ash::DesksHelper::Get()), + browser_widget_(browser_widget) { + constexpr int kMaxNumberOfDesks = IDC_MOVE_TO_DESK_8 - IDC_MOVE_TO_DESK_1 + 1; + AddCheckItem(IDC_TOGGLE_ASSIGN_TO_ALL_DESKS, + l10n_util::GetStringUTF16(IDS_ASSIGN_TO_ALL_DESKS)); + assign_to_all_desks_item_index_ = GetItemCount() - 1; + AddSeparator(ui::NORMAL_SEPARATOR); + + // Store the number of items that occur before the group of move to desk items + // so we can retrieve the move to desk items' indices properly. + move_to_desk_group_offset_ = GetItemCount(); + for (int i = 0; i < kMaxNumberOfDesks; ++i) + AddCheckItem(IDC_MOVE_TO_DESK_1 + i, base::string16()); +} + +bool MoveToDesksMenuModel::IsVisibleAt(int index) const { + if (index == assign_to_all_desks_item_index_) + return true; + return OffsetIndexForMoveToDeskGroup(index) < + desks_helper_->GetNumberOfDesks(); +} + +base::string16 MoveToDesksMenuModel::GetLabelAt(int index) const { + if (index == assign_to_all_desks_item_index_) + return l10n_util::GetStringUTF16(IDS_ASSIGN_TO_ALL_DESKS); + return desks_helper_->GetDeskName(OffsetIndexForMoveToDeskGroup(index)); +} + +bool MoveToDesksMenuModel::IsItemCheckedAt(int index) const { + const bool is_assigned_to_all_desks = + browser_widget_ && browser_widget_->IsVisibleOnAllWorkspaces(); + + if (index == assign_to_all_desks_item_index_) + return is_assigned_to_all_desks; + + return !is_assigned_to_all_desks && OffsetIndexForMoveToDeskGroup(index) == + desks_helper_->GetActiveDeskIndex(); +} + +int MoveToDesksMenuModel::OffsetIndexForMoveToDeskGroup(int index) const { + const int move_to_desk_group_index = index - move_to_desk_group_offset_; + DCHECK_GE(move_to_desk_group_index, 0); + return move_to_desk_group_index; +}
diff --git a/chrome/browser/ui/toolbar/move_to_desks_menu_model.h b/chrome/browser/ui/toolbar/move_to_desks_menu_model.h new file mode 100644 index 0000000..ac08c00 --- /dev/null +++ b/chrome/browser/ui/toolbar/move_to_desks_menu_model.h
@@ -0,0 +1,47 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_TOOLBAR_MOVE_TO_DESKS_MENU_MODEL_H_ +#define CHROME_BROWSER_UI_TOOLBAR_MOVE_TO_DESKS_MENU_MODEL_H_ + +#include "ui/base/models/simple_menu_model.h" + +namespace ash { +class DesksHelper; +} + +namespace views { +class Widget; +} + +// A menu model that builds the contents of the move to desks menu. +class MoveToDesksMenuModel : public ui::SimpleMenuModel { + public: + MoveToDesksMenuModel(ui::SimpleMenuModel::Delegate* delegate, + views::Widget* browser_widget); + ~MoveToDesksMenuModel() override = default; + + // SimpleMenuModel: + bool IsVisibleAt(int index) const override; + base::string16 GetLabelAt(int index) const override; + bool IsItemCheckedAt(int index) const override; + + private: + // Returns |index| - |move_to_desk_group_offset_|. This value is the relative + // index within the group of move to desk items. This value must be greater + // than or equal to 0. + int OffsetIndexForMoveToDeskGroup(int index) const; + + const ash::DesksHelper* const desks_helper_; + const views::Widget* const browser_widget_; + + // This is the index of the assign to all desks item in the menu model. + int assign_to_all_desks_item_index_; + + // This is the number of items in the menu model that occurs before the group + // of move to desk items. + int move_to_desk_group_offset_; +}; + +#endif // CHROME_BROWSER_UI_TOOLBAR_MOVE_TO_DESKS_MENU_MODEL_H_
diff --git a/chrome/browser/ui/views/bubble/webui_bubble_manager.cc b/chrome/browser/ui/views/bubble/webui_bubble_manager.cc index 4e053aa..70569ff 100644 --- a/chrome/browser/ui/views/bubble/webui_bubble_manager.cc +++ b/chrome/browser/ui/views/bubble/webui_bubble_manager.cc
@@ -16,17 +16,8 @@ } // namespace -WebUIBubbleManagerBase::WebUIBubbleManagerBase( - int task_manager_string_id, - views::View* anchor_view, - content::BrowserContext* browser_context, - const GURL& webui_url, - bool enable_extension_apis) - : task_manager_string_id_(task_manager_string_id), - anchor_view_(anchor_view), - browser_context_(browser_context), - webui_url_(webui_url), - enable_extension_apis_(enable_extension_apis), +WebUIBubbleManagerBase::WebUIBubbleManagerBase(views::View* anchor_view) + : anchor_view_(anchor_view), cache_timer_(std::make_unique<base::RetainingOneShotTimer>( FROM_HERE, kWebViewRetentionTime, @@ -82,6 +73,7 @@ bubble_widget_observation_.Reset(); DCHECK(close_bubble_helper_); close_bubble_helper_.reset(); + WebViewHidden(); cache_timer_->Reset(); bubble_using_cached_webview_ = false; }
diff --git a/chrome/browser/ui/views/bubble/webui_bubble_manager.h b/chrome/browser/ui/views/bubble/webui_bubble_manager.h index 5576fa2f..e6af34af 100644 --- a/chrome/browser/ui/views/bubble/webui_bubble_manager.h +++ b/chrome/browser/ui/views/bubble/webui_bubble_manager.h
@@ -28,11 +28,7 @@ // and caching of the WebView. class WebUIBubbleManagerBase : public views::WidgetObserver { public: - WebUIBubbleManagerBase(int task_manager_string_id, - views::View* anchor_view, - content::BrowserContext* browser_context, - const GURL& webui_url, - bool enable_extension_apis = false); + explicit WebUIBubbleManagerBase(views::View* anchor_view); WebUIBubbleManagerBase(const WebUIBubbleManagerBase&) = delete; const WebUIBubbleManagerBase& operator=(const WebUIBubbleManagerBase&) = delete; @@ -45,10 +41,6 @@ // views::WidgetObserver: void OnWidgetDestroying(views::Widget* widget) override; - int task_manager_string_id() const { return task_manager_string_id_; } - content::BrowserContext* browser_context() { return browser_context_; } - const GURL& webui_url() const { return webui_url_; } - bool enable_extension_apis() const { return enable_extension_apis_; } bool bubble_using_cached_webview() const { return bubble_using_cached_webview_; } @@ -58,19 +50,16 @@ return bubble_view_; } + protected: + WebUIBubbleView* cached_web_view() { return cached_web_view_.get(); } + private: virtual std::unique_ptr<WebUIBubbleView> CreateWebView() = 0; + virtual void WebViewHidden() = 0; void ResetWebView(); - // Used for tagging the web contents so that a distinctive name shows up in - // the task manager. - const int task_manager_string_id_; - views::View* anchor_view_; - content::BrowserContext* browser_context_; - GURL webui_url_; base::WeakPtr<WebUIBubbleDialogView> bubble_view_; - const bool enable_extension_apis_; // Tracks whether the current bubble was created by reusing // |cached_web_view_|. @@ -95,13 +84,23 @@ template <typename T> class WebUIBubbleManager : public WebUIBubbleManagerBase { public: - using WebUIBubbleManagerBase::WebUIBubbleManagerBase; + WebUIBubbleManager(int task_manager_string_id, + views::View* anchor_view, + content::BrowserContext* browser_context, + const GURL& webui_url, + bool enable_extension_apis = false) + : WebUIBubbleManagerBase(anchor_view), + task_manager_string_id_(task_manager_string_id), + browser_context_(browser_context), + webui_url_(webui_url), + enable_extension_apis_(enable_extension_apis) {} + ~WebUIBubbleManager() override = default; private: std::unique_ptr<WebUIBubbleView> CreateWebView() override { - auto web_view = std::make_unique<WebUIBubbleView>(browser_context()); + auto web_view = std::make_unique<WebUIBubbleView>(browser_context_); content::WebContents* web_contents = web_view->GetWebContents(); - if (enable_extension_apis()) { + if (enable_extension_apis_) { // In order for the WebUI in the renderer to use extensions APIs we must // add a ChromeExtensionWebContentsObserver to the WebView's WebContents. extensions::ChromeExtensionWebContentsObserver::CreateForWebContents( @@ -109,11 +108,24 @@ } task_manager::WebContentsTags::CreateForToolContents( - web_contents, task_manager_string_id()); - - web_view->template LoadURL<T>(webui_url()); + web_contents, task_manager_string_id_); + web_view->template LoadURL<T>(webui_url_); return web_view; } + + void WebViewHidden() override { + DCHECK(cached_web_view()); + return cached_web_view() + ->template GetWebUIController<T>() + ->EmbedderHidden(); + } + + // Used for tagging the web contents so that a distinctive name shows up in + // the task manager. + const int task_manager_string_id_; + content::BrowserContext* browser_context_; + const GURL webui_url_; + const bool enable_extension_apis_; }; #endif // CHROME_BROWSER_UI_VIEWS_BUBBLE_WEBUI_BUBBLE_MANAGER_H_
diff --git a/chrome/browser/ui/views/bubble/webui_bubble_manager_browsertest.cc b/chrome/browser/ui/views/bubble/webui_bubble_manager_browsertest.cc index 9efbaee..4f1397b 100644 --- a/chrome/browser/ui/views/bubble/webui_bubble_manager_browsertest.cc +++ b/chrome/browser/ui/views/bubble/webui_bubble_manager_browsertest.cc
@@ -16,19 +16,22 @@ class TestWebUIBubbleManager : public WebUIBubbleManagerBase { public: explicit TestWebUIBubbleManager(Browser* browser) - : WebUIBubbleManagerBase(IDS_ACCNAME_TAB_SEARCH, - BrowserView::GetBrowserViewForBrowser(browser), - browser->profile(), - GURL("chrome://about")) {} + : WebUIBubbleManagerBase(BrowserView::GetBrowserViewForBrowser(browser)), + browser_context_(browser->profile()) {} TestWebUIBubbleManager(const TestWebUIBubbleManager&) = delete; const TestWebUIBubbleManager& operator=(const TestWebUIBubbleManager&) = delete; ~TestWebUIBubbleManager() override = default; + // WebUIBubbleManagerBase: + void WebViewHidden() override {} + private: std::unique_ptr<WebUIBubbleView> CreateWebView() override { - return std::make_unique<WebUIBubbleView>(browser_context()); + return std::make_unique<WebUIBubbleView>(browser_context_); } + + content::BrowserContext* browser_context_; }; } // namespace
diff --git a/chrome/browser/ui/views/bubble/webui_bubble_view.h b/chrome/browser/ui/views/bubble/webui_bubble_view.h index 010cef0..167c8357 100644 --- a/chrome/browser/ui/views/bubble/webui_bubble_view.h +++ b/chrome/browser/ui/views/bubble/webui_bubble_view.h
@@ -42,11 +42,14 @@ GetWebContents()->WasShown(); SetVisible(true); LoadInitialURL(url); - T* async_webui_controller = - GetWebContents()->GetWebUI()->GetController()->template GetAs<T>(); // Depends on the WebUIController object being constructed synchronously // when the navigation is started in LoadInitialURL(). - async_webui_controller->set_embedder(weak_ptr_factory_.GetWeakPtr()); + GetWebUIController<T>()->set_embedder(weak_ptr_factory_.GetWeakPtr()); + } + + template <typename T> + T* GetWebUIController() { + return GetWebContents()->GetWebUI()->GetController()->template GetAs<T>(); } void set_host(Host* host) { host_ = host; }
diff --git a/chrome/browser/ui/views/collected_cookies_views.cc b/chrome/browser/ui/views/collected_cookies_views.cc index 2387dab..977ed60 100644 --- a/chrome/browser/ui/views/collected_cookies_views.cc +++ b/chrome/browser/ui/views/collected_cookies_views.cc
@@ -273,30 +273,6 @@ } /////////////////////////////////////////////////////////////////////////////// -// CollectedCookiesViews, views::DialogDelegate implementation: - -base::string16 CollectedCookiesViews::GetWindowTitle() const { - return l10n_util::GetStringUTF16(IDS_COLLECTED_COOKIES_DIALOG_TITLE); -} - -ui::ModalType CollectedCookiesViews::GetModalType() const { - return ui::MODAL_TYPE_CHILD; -} - -bool CollectedCookiesViews::ShouldShowCloseButton() const { - return false; -} - -void CollectedCookiesViews::DeleteDelegate() { - if (!destroying_) { - // The associated Widget is being destroyed before the owning WebContents. - // Tell the owner to delete |this|. - destroying_ = true; - web_contents_->RemoveUserData(UserDataKey()); - } -} - -/////////////////////////////////////////////////////////////////////////////// // CollectedCookiesViews, views::TabbedPaneListener implementation: void CollectedCookiesViews::TabSelectedAt(int index) { @@ -331,6 +307,9 @@ : web_contents_(web_contents) { SetButtons(ui::DIALOG_BUTTON_OK); SetButtonLabel(ui::DIALOG_BUTTON_OK, l10n_util::GetStringUTF16(IDS_DONE)); + SetModalType(ui::MODAL_TYPE_CHILD); + SetShowCloseButton(false); + SetTitle(IDS_COLLECTED_COOKIES_DIALOG_TITLE); views::GridLayout* layout = SetLayoutManager(std::make_unique<views::GridLayout>()); ChromeLayoutProvider* provider = ChromeLayoutProvider::Get(); @@ -400,6 +379,15 @@ } } +void CollectedCookiesViews::DeleteDelegate() { + if (!destroying_) { + // The associated Widget is being destroyed before the owning WebContents. + // Tell the owner to delete |this|. + destroying_ = true; + web_contents_->RemoveUserData(UserDataKey()); + } +} + std::unique_ptr<views::View> CollectedCookiesViews::CreateAllowedPane() { // This captures a snapshot of the allowed cookies of the current page so we // are fine using WebContents::GetMainFrame() here
diff --git a/chrome/browser/ui/views/collected_cookies_views.h b/chrome/browser/ui/views/collected_cookies_views.h index c982962a..c8918398 100644 --- a/chrome/browser/ui/views/collected_cookies_views.h +++ b/chrome/browser/ui/views/collected_cookies_views.h
@@ -47,12 +47,6 @@ // Use BrowserWindow::ShowCollectedCookiesDialog to show. static void CreateAndShowForWebContents(content::WebContents* web_contents); - // views::DialogDelegate: - base::string16 GetWindowTitle() const override; - ui::ModalType GetModalType() const override; - bool ShouldShowCloseButton() const override; - void DeleteDelegate() override; - // views::TabbedPaneListener: void TabSelectedAt(int index) override; @@ -70,6 +64,9 @@ void OnDialogClosed(); + // DialogDelegateView: + void DeleteDelegate() override; + std::unique_ptr<views::View> CreateAllowedPane(); std::unique_ptr<views::View> CreateBlockedPane();
diff --git a/chrome/browser/ui/views/extensions/extension_dialog_bounds_browsertest.cc b/chrome/browser/ui/views/extensions/extension_dialog_bounds_browsertest.cc index 5bc7841..3fd9fba 100644 --- a/chrome/browser/ui/views/extensions/extension_dialog_bounds_browsertest.cc +++ b/chrome/browser/ui/views/extensions/extension_dialog_bounds_browsertest.cc
@@ -5,8 +5,8 @@ #include <string> #include "base/macros.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/extensions/component_loader.h" #include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/ui/browser.h"
diff --git a/chrome/browser/ui/views/frame/system_menu_model_builder.cc b/chrome/browser/ui/views/frame/system_menu_model_builder.cc index c837c74..33d6807 100644 --- a/chrome/browser/ui/views/frame/system_menu_model_builder.cc +++ b/chrome/browser/ui/views/frame/system_menu_model_builder.cc
@@ -28,7 +28,7 @@ #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_helper.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/settings_window_manager_chromeos.h" -#include "chrome/browser/ui/toolbar/assign_to_desks_menu_model.h" +#include "chrome/browser/ui/toolbar/move_to_desks_menu_model.h" #include "components/account_id/account_id.h" #include "components/user_manager/user_info.h" #include "components/user_manager/user_manager.h" @@ -95,7 +95,7 @@ model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE_WINDOW_MENU); #endif #if BUILDFLAG(IS_CHROMEOS_ASH) - AppendAssignToDesksMenu(model); + AppendMoveToDesksMenu(model); #endif AppendTeleportMenu(model); // If it's a regular browser window with tabs, we don't add any more items, @@ -135,7 +135,7 @@ model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE); #endif #if BUILDFLAG(IS_CHROMEOS_ASH) - AppendAssignToDesksMenu(model); + AppendMoveToDesksMenu(model); #endif AppendTeleportMenu(model); } @@ -150,17 +150,16 @@ } #if BUILDFLAG(IS_CHROMEOS_ASH) -void SystemMenuModelBuilder::AppendAssignToDesksMenu( - ui::SimpleMenuModel* model) { +void SystemMenuModelBuilder::AppendMoveToDesksMenu(ui::SimpleMenuModel* model) { if (ash::features::IsBentoEnabled()) { model->AddSeparator(ui::NORMAL_SEPARATOR); - assign_to_desks_model_ = std::make_unique<AssignToDesksMenuModel>( + move_to_desks_model_ = std::make_unique<MoveToDesksMenuModel>( &menu_delegate_, views::Widget::GetWidgetForNativeWindow( menu_delegate_.browser()->window()->GetNativeWindow())); - model->AddSubMenuWithStringId(IDC_ASSIGN_TO_DESKS_MENU, - IDS_ASSIGN_TO_DESKS_MENU, - assign_to_desks_model_.get()); + model->AddSubMenuWithStringId(IDC_MOVE_TO_DESKS_MENU, + IDS_MOVE_TO_DESKS_MENU, + move_to_desks_model_.get()); } } #endif
diff --git a/chrome/browser/ui/views/frame/system_menu_model_builder.h b/chrome/browser/ui/views/frame/system_menu_model_builder.h index 36850498..15e88b1 100644 --- a/chrome/browser/ui/views/frame/system_menu_model_builder.h +++ b/chrome/browser/ui/views/frame/system_menu_model_builder.h
@@ -12,7 +12,7 @@ #include "chrome/browser/ui/views/frame/system_menu_model_delegate.h" #if BUILDFLAG(IS_CHROMEOS_ASH) -class AssignToDesksMenuModel; +class MoveToDesksMenuModel; #endif class Browser; class ZoomMenuModel; @@ -48,8 +48,8 @@ void AddFrameToggleItems(ui::SimpleMenuModel* model); #if BUILDFLAG(IS_CHROMEOS_ASH) - // Add the submenu for assign to desks. - void AppendAssignToDesksMenu(ui::SimpleMenuModel* model); + // Add the submenu for move to desks. + void AppendMoveToDesksMenu(ui::SimpleMenuModel* model); #endif // Add the items to allow the window to visit the desktop of another user. @@ -59,7 +59,7 @@ std::unique_ptr<ui::MenuModel> menu_model_; std::unique_ptr<ZoomMenuModel> zoom_menu_contents_; #if BUILDFLAG(IS_CHROMEOS_ASH) - std::unique_ptr<AssignToDesksMenuModel> assign_to_desks_model_; + std::unique_ptr<MoveToDesksMenuModel> move_to_desks_model_; #endif DISALLOW_COPY_AND_ASSIGN(SystemMenuModelBuilder);
diff --git a/chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos.h b/chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos.h index 2af33bcc..4c9cd99 100644 --- a/chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos.h +++ b/chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos.h
@@ -11,7 +11,7 @@ #include "base/containers/flat_map.h" #include "base/macros.h" #include "base/optional.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" #include "chrome/browser/ui/views/frame/top_controls_slide_controller.h" #include "ui/display/display_observer.h"
diff --git a/chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos_browsertest.cc b/chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos_browsertest.cc index 297cce74..2aad5b2 100644 --- a/chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos_browsertest.cc +++ b/chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos_browsertest.cc
@@ -21,7 +21,7 @@ #include "base/strings/safe_sprintf.h" #include "build/chromeos_buildflags.h" #include "cc/base/math_util.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/ui_features.h" #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h"
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc index 96fd701d..846353c 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -219,18 +219,9 @@ // Initiate the Omnibox additional-text label. if (OmniboxFieldTrial::RichAutocompletionShowAdditionalText()) { - // TODO (manukh) When the titles UI is disabled, - // |omnibox_additional_text_view| will only contain URLs and never page - // titles. It can safely be styled with STYLE_LINK. When the titles UI is - // enabled, it can contain either URLs or page titles. Ideally, its style - // would be updated appropriately, but given early consensus suggests titles - // UI is unlikely to launch, we don't have to worry about this case for now. - auto style = OmniboxFieldTrial::RichAutocompletionShowTitles() - ? views::style::STYLE_PRIMARY - : views::style::STYLE_LINK; auto omnibox_additional_text_view = std::make_unique<views::Label>( base::string16(), ChromeTextContext::CONTEXT_OMNIBOX_DEEMPHASIZED, - style); + views::style::STYLE_LINK); omnibox_additional_text_view->SetHorizontalAlignment(gfx::ALIGN_LEFT); omnibox_additional_text_view_ = AddChildView(std::move(omnibox_additional_text_view));
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc index c4d6553..24f6bf0 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -1036,13 +1036,12 @@ if (save_original_selection) saved_temporary_selection_ = GetRenderText()->GetAllSelections(); - // SetWindowTextAndCaretPos will fire the acesssibility notification, + // SetWindowTextAndCaretPos will fire the accessibility notification, // so do not also generate redundant notification here. SetAccessibilityLabel(display_text, match, false); SetWindowTextAndCaretPos(display_text, display_text.length(), false, notify_text_changed); - SetAdditionalText(match.fill_into_edit_additional_text); } void OmniboxViewViews::OnInlineAutocompleteTextMaybeChanged(
diff --git a/chrome/browser/ui/views/payments/secure_payment_confirmation_dialog_view.cc b/chrome/browser/ui/views/payments/secure_payment_confirmation_dialog_view.cc index 7f9e3ff7..14523d3d6 100644 --- a/chrome/browser/ui/views/payments/secure_payment_confirmation_dialog_view.cc +++ b/chrome/browser/ui/views/payments/secure_payment_confirmation_dialog_view.cc
@@ -10,6 +10,7 @@ #include "chrome/browser/ui/views/chrome_typography.h" #include "chrome/browser/ui/views/payments/payment_request_views_util.h" #include "components/constrained_window/constrained_window_views.h" +#include "components/payments/content/payment_ui_observer.h" #include "components/payments/content/secure_payment_confirmation_model.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/controls/image_view.h" @@ -49,8 +50,10 @@ } // namespace SecurePaymentConfirmationDialogView::SecurePaymentConfirmationDialogView( - ObserverForTest* observer_for_test) - : observer_for_test_(observer_for_test) {} + ObserverForTest* observer_for_test, + const PaymentUIObserver* ui_observer_for_test) + : observer_for_test_(observer_for_test), + ui_observer_for_test_(ui_observer_for_test) {} SecurePaymentConfirmationDialogView::~SecurePaymentConfirmationDialogView() = default; @@ -81,8 +84,13 @@ constrained_window::ShowWebModalDialogViews(this, web_contents); + // observer_for_test_ is used in views browsertests. if (observer_for_test_) observer_for_test_->OnDialogOpened(); + + // ui_observer_for_test_ is used in platform browsertests. + if (ui_observer_for_test_) + ui_observer_for_test_->OnUIDisplayed(); } void SecurePaymentConfirmationDialogView::OnDialogAccepted() {
diff --git a/chrome/browser/ui/views/payments/secure_payment_confirmation_dialog_view.h b/chrome/browser/ui/views/payments/secure_payment_confirmation_dialog_view.h index 3cd8269..4cc97c7 100644 --- a/chrome/browser/ui/views/payments/secure_payment_confirmation_dialog_view.h +++ b/chrome/browser/ui/views/payments/secure_payment_confirmation_dialog_view.h
@@ -20,6 +20,8 @@ namespace payments { +class PaymentUIObserver; + // Draws the user interface in the secure payment confirmation flow. Owned by // the SecurePaymentConfirmationController. class SecurePaymentConfirmationDialogView @@ -51,7 +53,8 @@ }; explicit SecurePaymentConfirmationDialogView( - ObserverForTest* observer_for_test); + ObserverForTest* observer_for_test, + const PaymentUIObserver* ui_observer_for_test); ~SecurePaymentConfirmationDialogView() override; // SecurePaymentConfirmationView: @@ -95,6 +98,7 @@ // May be null. ObserverForTest* observer_for_test_ = nullptr; + const PaymentUIObserver* ui_observer_for_test_ = nullptr; VerifyCallback verify_callback_; CancelCallback cancel_callback_;
diff --git a/chrome/browser/ui/views/payments/secure_payment_confirmation_view.cc b/chrome/browser/ui/views/payments/secure_payment_confirmation_view.cc index b5f22756..7b1c994 100644 --- a/chrome/browser/ui/views/payments/secure_payment_confirmation_view.cc +++ b/chrome/browser/ui/views/payments/secure_payment_confirmation_view.cc
@@ -10,9 +10,10 @@ // static base::WeakPtr<SecurePaymentConfirmationView> -SecurePaymentConfirmationView::Create() { +SecurePaymentConfirmationView::Create( + const PaymentUIObserver* payment_ui_observer) { return (new SecurePaymentConfirmationDialogView( - /*observer_for_test=*/nullptr)) + /*observer_for_test=*/nullptr, payment_ui_observer)) ->GetWeakPtr(); }
diff --git a/chrome/browser/ui/views/payments/test_secure_payment_confirmation_payment_request_delegate.cc b/chrome/browser/ui/views/payments/test_secure_payment_confirmation_payment_request_delegate.cc index 03e7e22..54e60b3 100644 --- a/chrome/browser/ui/views/payments/test_secure_payment_confirmation_payment_request_delegate.cc +++ b/chrome/browser/ui/views/payments/test_secure_payment_confirmation_payment_request_delegate.cc
@@ -20,8 +20,10 @@ render_frame_host->GetProcess()->GetID(), render_frame_host->GetRoutingID())), model_(model), - dialog_view_( - (new SecurePaymentConfirmationDialogView(observer))->GetWeakPtr()) {} + dialog_view_((new SecurePaymentConfirmationDialogView( + observer, + /*ui_observer_for_test=*/nullptr)) + ->GetWeakPtr()) {} TestSecurePaymentConfirmationPaymentRequestDelegate:: ~TestSecurePaymentConfirmationPaymentRequestDelegate() = default;
diff --git a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc index 063767d..7da1e50 100644 --- a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc +++ b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
@@ -2459,8 +2459,9 @@ EXPECT_FALSE(model->IsGroupCollapsed(group)); } -#if defined(OS_MAC) && defined(ARCH_CPU_ARM64) +#if defined(OS_MAC) || defined(OS_LINUX) // Bulk-disabled for arm64 bot stabilization: https://crbug.com/1154345 +// Test is flaky on Mac and Linux: https://crbug.com/1167249 #define MAYBE_DragCollapsedGroupHeaderToSeparateWindow \ DISABLED_DragCollapsedGroupHeaderToSeparateWindow #else
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_unittest.cc b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_unittest.cc index c7315db..b957e44 100644 --- a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_unittest.cc +++ b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_unittest.cc
@@ -6,6 +6,7 @@ #include "base/test/scoped_feature_list.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/about_flags.h" +#include "chrome/browser/ui/toolbar/chrome_labs_prefs.h" #include "chrome/browser/ui/ui_features.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/frame/test_with_browser_view.h" @@ -53,9 +54,12 @@ {kThirdTestFeatureId, "", "", os_other_than_current, FEATURE_VALUE_TYPE(kTestFeature3)}}; about_flags::testing::SetFeatureEntries(entries); - TestWithBrowserView::SetUp(); - ChromeLabsButton* button = chrome_labs_button(); + TestWithBrowserView::SetUp(); + profile()->GetPrefs()->SetBoolean(chrome_labs_prefs::kBrowserLabsEnabled, + true); + + ChromeLabsButton* button = chrome_labs_button(); CreateTestLabInfo(); std::unique_ptr<ChromeLabsBubbleViewModel> test_model = std::make_unique<ChromeLabsBubbleViewModel>();
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_button_unittest.cc b/chrome/browser/ui/views/toolbar/chrome_labs_button_unittest.cc index 8143678..c8751ef 100644 --- a/chrome/browser/ui/views/toolbar/chrome_labs_button_unittest.cc +++ b/chrome/browser/ui/views/toolbar/chrome_labs_button_unittest.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/ui/views/toolbar/chrome_labs_button.h" #include "base/test/scoped_feature_list.h" #include "chrome/browser/about_flags.h" +#include "chrome/browser/ui/toolbar/chrome_labs_prefs.h" #include "chrome/browser/ui/ui_features.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/frame/test_with_browser_view.h" @@ -24,6 +25,8 @@ void SetUp() override { scoped_feature_list_.InitAndEnableFeature(features::kChromeLabs); TestWithBrowserView::SetUp(); + profile()->GetPrefs()->SetBoolean(chrome_labs_prefs::kBrowserLabsEnabled, + true); } private:
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc index a16a3b4..ae3fc740 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_view.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -270,10 +270,16 @@ if (extensions_container) extensions_container_ = AddChildView(std::move(extensions_container)); - if (base::FeatureList::IsEnabled(features::kChromeLabs) && - browser_->profile()->GetPrefs()->GetBoolean( - chrome_labs_prefs::kBrowserLabsEnabled)) { + if (base::FeatureList::IsEnabled(features::kChromeLabs)) { chrome_labs_button_ = AddChildView(std::make_unique<ChromeLabsButton>()); + profile_pref_service_ = browser_->profile()->GetPrefs(); + profile_registrar_ = std::make_unique<PrefChangeRegistrar>(); + profile_registrar_->Init(profile_pref_service_); + profile_registrar_->Add( + chrome_labs_prefs::kBrowserLabsEnabled, + base::BindRepeating(&ToolbarView::OnChromeLabsPrefChanged, + base::Unretained(this))); + OnChromeLabsPrefChanged(); } if (cast) @@ -882,6 +888,11 @@ return this; } +void ToolbarView::OnChromeLabsPrefChanged() { + chrome_labs_button_->SetVisible(profile_pref_service_->GetBoolean( + chrome_labs_prefs::kBrowserLabsEnabled)); +} + void ToolbarView::LoadImages() { DCHECK_EQ(display_mode_, DisplayMode::NORMAL);
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.h b/chrome/browser/ui/views/toolbar/toolbar_view.h index b49d005..eb70bf9 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_view.h +++ b/chrome/browser/ui/views/toolbar/toolbar_view.h
@@ -240,6 +240,9 @@ const ui::DropTargetEvent& event) override; views::View* GetViewForDrop() override; + // Changes the visibility of the Chrome Labs entry point based on prefs. + void OnChromeLabsPrefChanged(); + // Loads the images for all the child views. void LoadImages(); @@ -280,6 +283,9 @@ Browser* const browser_; BrowserView* const browser_view_; + PrefService* profile_pref_service_; + std::unique_ptr<PrefChangeRegistrar> profile_registrar_; + views::FlexLayout* layout_manager_ = nullptr; AppMenuIconController app_menu_icon_controller_;
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc index 43fc9ed..72fb417 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc
@@ -500,8 +500,9 @@ WebAppProviderBase* const provider = WebAppProviderBase::GetProviderBase(browser()->profile()); AppRegistrar& app_registrar = provider->registrar(); - DisplayMode display_mode = app_registrar.GetAppUserDisplayMode(app_id_); - EXPECT_FALSE(display_mode == blink::mojom::DisplayMode::kStandalone); + DisplayMode display_mode = + app_registrar.GetAppEffectiveDisplayMode(app_id_); + EXPECT_EQ(blink::mojom::DisplayMode::kBrowser, display_mode); } void AssertAppNotInList() { EXPECT_FALSE(base::Contains(app_ids_, app_id_)); }
diff --git a/chrome/browser/ui/views/webauthn/sheet_view_factory.cc b/chrome/browser/ui/views/webauthn/sheet_view_factory.cc index d424a49d..efaa3235 100644 --- a/chrome/browser/ui/views/webauthn/sheet_view_factory.cc +++ b/chrome/browser/ui/views/webauthn/sheet_view_factory.cc
@@ -178,6 +178,11 @@ std::make_unique<AttestationPermissionRequestSheetModel>( dialog_model)); break; + case Step::kEnterpriseAttestationPermissionRequest: + sheet_view = std::make_unique<AuthenticatorRequestSheetView>( + std::make_unique<EnterpriseAttestationPermissionRequestSheetModel>( + dialog_model)); + break; case Step::kNotStarted: case Step::kClosed: sheet_view = std::make_unique<AuthenticatorRequestSheetView>(
diff --git a/chrome/browser/ui/web_applications/web_app_menu_model.cc b/chrome/browser/ui/web_applications/web_app_menu_model.cc index 0b94013..6c2d2bf 100644 --- a/chrome/browser/ui/web_applications/web_app_menu_model.cc +++ b/chrome/browser/ui/web_applications/web_app_menu_model.cc
@@ -27,7 +27,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "ash/public/cpp/ash_features.h" -#include "chrome/browser/ui/toolbar/assign_to_desks_menu_model.h" +#include "chrome/browser/ui/toolbar/move_to_desks_menu_model.h" #include "ui/views/widget/widget.h" #endif @@ -98,11 +98,11 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) if (ash::features::IsBentoEnabled()) { AddSeparator(ui::NORMAL_SEPARATOR); - assign_to_desks_submenu_ = std::make_unique<AssignToDesksMenuModel>( + move_to_desks_submenu_ = std::make_unique<MoveToDesksMenuModel>( this, views::Widget::GetWidgetForNativeWindow( browser()->window()->GetNativeWindow())); - AddSubMenuWithStringId(IDC_ASSIGN_TO_DESKS_MENU, IDS_ASSIGN_TO_DESKS_MENU, - assign_to_desks_submenu_.get()); + AddSubMenuWithStringId(IDC_MOVE_TO_DESKS_MENU, IDS_MOVE_TO_DESKS_MENU, + move_to_desks_submenu_.get()); } #endif
diff --git a/chrome/browser/ui/web_applications/web_app_menu_model.h b/chrome/browser/ui/web_applications/web_app_menu_model.h index feba25f..3dbe060 100644 --- a/chrome/browser/ui/web_applications/web_app_menu_model.h +++ b/chrome/browser/ui/web_applications/web_app_menu_model.h
@@ -8,7 +8,7 @@ #include "build/chromeos_buildflags.h" #include "chrome/browser/ui/toolbar/app_menu_model.h" -class AssignToDesksMenuModel; +class MoveToDesksMenuModel; // Menu model for the menu button in a web app browser window. class WebAppMenuModel : public AppMenuModel { @@ -32,7 +32,7 @@ private: #if BUILDFLAG(IS_CHROMEOS_ASH) - std::unique_ptr<AssignToDesksMenuModel> assign_to_desks_submenu_; + std::unique_ptr<MoveToDesksMenuModel> move_to_desks_submenu_; #endif };
diff --git a/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc b/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc index 2c19239..a275e4a4 100644 --- a/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc +++ b/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc
@@ -219,7 +219,9 @@ std::move(responses), base::BindOnce([](device::AuthenticatorGetAssertionResponse) {})); } else if (name == "request_attestation_permission") { - model->RequestAttestationPermission(base::DoNothing()); + model->RequestAttestationPermission(false, base::DoNothing()); + } else if (name == "request_enterprise_attestation_permission") { + model->RequestAttestationPermission(true, base::DoNothing()); } ShowAuthenticatorRequestDialog( @@ -385,3 +387,8 @@ InvokeUi_request_attestation_permission) { ShowAndVerifyUi(); } + +IN_PROC_BROWSER_TEST_F(AuthenticatorDialogTest, + InvokeUi_request_enterprise_attestation_permission) { + ShowAndVerifyUi(); +}
diff --git a/chrome/browser/ui/webauthn/sheet_models.cc b/chrome/browser/ui/webauthn/sheet_models.cc index 82d8d4cc..0d41e58 100644 --- a/chrome/browser/ui/webauthn/sheet_models.cc +++ b/chrome/browser/ui/webauthn/sheet_models.cc
@@ -1149,6 +1149,26 @@ return l10n_util::GetStringUTF16(IDS_PERMISSION_DENY); } +// EnterpriseAttestationPermissionRequestSheetModel --------------------------- + +EnterpriseAttestationPermissionRequestSheetModel:: + EnterpriseAttestationPermissionRequestSheetModel( + AuthenticatorRequestDialogModel* dialog_model) + : AttestationPermissionRequestSheetModel(dialog_model) {} + +base::string16 EnterpriseAttestationPermissionRequestSheetModel::GetStepTitle() + const { + return l10n_util::GetStringUTF16( + IDS_WEBAUTHN_REQUEST_ENTERPRISE_ATTESTATION_PERMISSION_TITLE); +} + +base::string16 +EnterpriseAttestationPermissionRequestSheetModel::GetStepDescription() const { + return l10n_util::GetStringFUTF16( + IDS_WEBAUTHN_REQUEST_ENTERPRISE_ATTESTATION_PERMISSION_DESC, + GetRelyingPartyIdString(dialog_model())); +} + // AuthenticatorQRSheetModel -------------------------------------------------- AuthenticatorQRSheetModel::AuthenticatorQRSheetModel(
diff --git a/chrome/browser/ui/webauthn/sheet_models.h b/chrome/browser/ui/webauthn/sheet_models.h index 8801ec5..dd47174 100644 --- a/chrome/browser/ui/webauthn/sheet_models.h +++ b/chrome/browser/ui/webauthn/sheet_models.h
@@ -499,6 +499,18 @@ base::string16 GetCancelButtonLabel() const override; }; +class EnterpriseAttestationPermissionRequestSheetModel + : public AttestationPermissionRequestSheetModel { + public: + explicit EnterpriseAttestationPermissionRequestSheetModel( + AuthenticatorRequestDialogModel* dialog_model); + + private: + // AuthenticatorSheetModelBase: + base::string16 GetStepTitle() const override; + base::string16 GetStepDescription() const override; +}; + class AuthenticatorQRSheetModel : public AuthenticatorSheetModelBase { public: explicit AuthenticatorQRSheetModel(
diff --git a/chrome/browser/ui/webui/chromeos/cellular_setup/cellular_setup_localized_strings_provider.cc b/chrome/browser/ui/webui/chromeos/cellular_setup/cellular_setup_localized_strings_provider.cc index c2d5b5b..788da35 100644 --- a/chrome/browser/ui/webui/chromeos/cellular_setup/cellular_setup_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/chromeos/cellular_setup/cellular_setup_localized_strings_provider.cc
@@ -20,6 +20,8 @@ namespace cellular_setup { namespace { +const char useExternalEuiccLoadTimeDataName[] = "useExternalEuicc"; + constexpr webui::LocalizedString kLocalizedStringsWithoutPlaceholders[] = { {"activationCode", IDS_CELLULAR_SETUP_ESIM_PAGE_ACTIVATION_CODE}, {"cancel", IDS_CANCEL}, @@ -33,6 +35,7 @@ {"next", IDS_CELLULAR_SETUP_NEXT_LABEL}, {"tryAgain", IDS_CELLULAR_SETUP_TRY_AGAIN_LABEL}, {"skipDiscovery", IDS_CELLULAR_SETUP_SKIP_DISCOVERY_LABEL}, + {"confirm", IDS_CELLULAR_SETUP_CONFIRM_LABEL}, {"simDetectPageTitle", IDS_CELLULAR_SETUP_SIM_DETECT_PAGE_TITLE}, {"simDetectPageErrorTitle", IDS_CELLULAR_SETUP_SIM_DETECT_PAGE_ERROR_TITLE}, {"simDetectPageErrorMessage", @@ -108,6 +111,9 @@ void AddNonStringLoadTimeData(content::WebUIDataSource* html_source) { for (const auto& entry : GetBooleanValues()) html_source->AddBoolean(entry.name, entry.value); + html_source->AddBoolean(useExternalEuiccLoadTimeDataName, + base::FeatureList::IsEnabled( + chromeos::features::kCellularUseExternalEuicc)); } void AddNonStringLoadTimeDataToDict(base::DictionaryValue* dict) {
diff --git a/chrome/browser/ui/webui/chromeos/emoji/DIR_METADATA b/chrome/browser/ui/webui/chromeos/emoji/DIR_METADATA index 1c0b394..ca0e79f 100644 --- a/chrome/browser/ui/webui/chromeos/emoji/DIR_METADATA +++ b/chrome/browser/ui/webui/chromeos/emoji/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "OS>Inputs" +monorail: { + component: "OS>Inputs" }
diff --git a/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc index b2182e8..844e877 100644 --- a/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc
@@ -8,7 +8,7 @@ #include "base/values.h" #include "build/branding_buildflags.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/login/oobe_screen.h" #include "chrome/browser/chromeos/login/screens/update_screen.h" #include "chrome/grit/chromium_strings.h"
diff --git a/chrome/browser/ui/webui/chromeos/login/update_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/update_screen_handler.h index cfd5887..2797f126 100644 --- a/chrome/browser/ui/webui/chromeos/login/update_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/update_screen_handler.h
@@ -10,7 +10,7 @@ #include "base/compiler_specific.h" #include "base/macros.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h" namespace chromeos {
diff --git a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc index 77d1c91..acc44c6f 100644 --- a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc
@@ -15,9 +15,9 @@ #include "base/strings/utf_string_conversions.h" #include "base/task_runner_util.h" #include "base/values.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/login/demo_mode/demo_session.h" #include "chrome/browser/chromeos/login/screens/welcome_screen.h" #include "chrome/browser/chromeos/login/ui/input_events_blocker.h"
diff --git a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h index 3318ec8b..837bb9db 100644 --- a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h
@@ -9,7 +9,7 @@ #include <string> #include "base/macros.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h" namespace base {
diff --git a/chrome/browser/ui/webui/crashes_ui.cc b/chrome/browser/ui/webui/crashes_ui.cc index fa9f7c3..d4320cb 100644 --- a/chrome/browser/ui/webui/crashes_ui.cc +++ b/chrome/browser/ui/webui/crashes_ui.cc
@@ -177,7 +177,7 @@ ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(); bool system_crash_reporter = false; -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) // Chrome OS has a system crash reporter. system_crash_reporter = true; #endif
diff --git a/chrome/browser/ui/webui/management/DIR_METADATA b/chrome/browser/ui/webui/management/DIR_METADATA index 4c21d96..f37723a 100644 --- a/chrome/browser/ui/webui/management/DIR_METADATA +++ b/chrome/browser/ui/webui/management/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise" +monorail: { + component: "Enterprise" }
diff --git a/chrome/browser/ui/webui/media/OWNERS b/chrome/browser/ui/webui/media/OWNERS index 3ed4896..8e63383 100644 --- a/chrome/browser/ui/webui/media/OWNERS +++ b/chrome/browser/ui/webui/media/OWNERS
@@ -1,6 +1,5 @@ # For Media Engagement mlamouri@chromium.org -beccahughes@chromium.org # For WebRTC per-file webrtc_*=file://third_party/webrtc_overrides/OWNERS
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc index f35a226..fc62c04 100644 --- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc +++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc
@@ -98,6 +98,8 @@ source->AddBoolean( "themeModeDoodlesEnabled", base::FeatureList::IsEnabled(ntp_features::kWebUIThemeModeDoodles)); + source->AddBoolean("shortcutsEnabled", + base::FeatureList::IsEnabled(ntp_features::kNtpShortcuts)); source->AddBoolean("modulesEnabled", base::FeatureList::IsEnabled(ntp_features::kModules)); source->AddInteger("modulesLoadTimeout",
diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc index 9f2d6592..efff3fe 100644 --- a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc +++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
@@ -1114,7 +1114,9 @@ std::string url; CHECK(args->GetString(0, &url)); GURL launch_url(url); - + // Do not install app for invalid url. + if (!launch_url.SchemeIsHTTPOrHTTPS()) + return; // Can only install one app at a time. if (attempting_web_app_install_page_ordinal_.has_value()) return;
diff --git a/chrome/browser/ui/webui/settings/accessibility_main_handler.h b/chrome/browser/ui/webui/settings/accessibility_main_handler.h index dc5269a..a9ae957 100644 --- a/chrome/browser/ui/webui/settings/accessibility_main_handler.h +++ b/chrome/browser/ui/webui/settings/accessibility_main_handler.h
@@ -12,7 +12,7 @@ #include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h" #if BUILDFLAG(IS_CHROMEOS_ASH) -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) namespace base {
diff --git a/chrome/browser/ui/webui/settings/chromeos/accessibility_handler.cc b/chrome/browser/ui/webui/settings/chromeos/accessibility_handler.cc index ca9fab1..2e021aa0 100644 --- a/chrome/browser/ui/webui/settings/chromeos/accessibility_handler.cc +++ b/chrome/browser/ui/webui/settings/chromeos/accessibility_handler.cc
@@ -7,7 +7,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "base/metrics/histogram_functions.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/extensions/extension_tab_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser_finder.h"
diff --git a/chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc b/chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc index 74e9cfc..57a36fa 100644 --- a/chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc +++ b/chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc
@@ -20,7 +20,7 @@ #include "base/task/post_task.h" #include "base/task/thread_pool.h" #include "base/values.h" -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/camera_presence_notifier.h" #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h" #include "chrome/browser/chromeos/login/users/chrome_user_manager.h"
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc index e7a2dc3..787dc8e 100644 --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -2405,6 +2405,8 @@ {"securityKeysTouchToContinue", IDS_SETTINGS_SECURITY_KEYS_TOUCH_TO_CONTINUE}, {"securityKeysSetPinButton", IDS_SETTINGS_SECURITY_KEYS_SET_PIN_BUTTON}, + {"securityKeysSamePINAsCurrent", + IDS_SETTINGS_SECURITY_KEYS_SAME_PIN_AS_CURRENT}, }; AddLocalizedStringsBulk(html_source, kSecurityKeysStrings); bool win_native_api_available = false;
diff --git a/chrome/browser/ui/webui/tab_search/tab_search_ui.cc b/chrome/browser/ui/webui/tab_search/tab_search_ui.cc index 3aacbca..e068c88 100644 --- a/chrome/browser/ui/webui/tab_search/tab_search_ui.cc +++ b/chrome/browser/ui/webui/tab_search/tab_search_ui.cc
@@ -90,6 +90,10 @@ TabSearchUI::~TabSearchUI() = default; +void TabSearchUI::EmbedderHidden() { + page_handler_.reset(); +} + WEB_UI_CONTROLLER_TYPE_IMPL(TabSearchUI) void TabSearchUI::BindInterface(
diff --git a/chrome/browser/ui/webui/tab_search/tab_search_ui.h b/chrome/browser/ui/webui/tab_search/tab_search_ui.h index 352b6c2..bd8b2c7 100644 --- a/chrome/browser/ui/webui/tab_search/tab_search_ui.h +++ b/chrome/browser/ui/webui/tab_search/tab_search_ui.h
@@ -25,11 +25,18 @@ TabSearchUI& operator=(const TabSearchUI&) = delete; ~TabSearchUI() override; + // ui::MojoBubbleWebUIController: + void EmbedderHidden() override; + // Instantiates the implementor of the mojom::PageHandlerFactory mojo // interface passing the pending receiver that will be internally bound. void BindInterface( mojo::PendingReceiver<tab_search::mojom::PageHandlerFactory> receiver); + TabSearchPageHandler* page_handler_for_testing() { + return page_handler_.get(); + } + private: // tab_search::mojom::PageHandlerFactory void CreatePageHandler(
diff --git a/chrome/browser/ui/webui/tab_search/tab_search_ui_browsertest.cc b/chrome/browser/ui/webui/tab_search/tab_search_ui_browsertest.cc index 52b705c..7794af40 100644 --- a/chrome/browser/ui/webui/tab_search/tab_search_ui_browsertest.cc +++ b/chrome/browser/ui/webui/tab_search/tab_search_ui_browsertest.cc
@@ -10,6 +10,7 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/ui_features.h" +#include "chrome/browser/ui/webui/tab_search/tab_search_ui.h" #include "chrome/common/chrome_isolated_world_ids.h" #include "chrome/common/webui_url_constants.h" #include "chrome/test/base/in_process_browser_test.h" @@ -48,6 +49,12 @@ return browser()->tab_strip_model()->GetActiveWebContents(); } + TabSearchUI* GetWebUIController() { + return webui_contents_->GetWebUI() + ->GetController() + ->template GetAs<TabSearchUI>(); + } + protected: std::unique_ptr<content::WebContents> webui_contents_; @@ -55,6 +62,14 @@ base::test::ScopedFeatureList feature_list_; }; +IN_PROC_BROWSER_TEST_F(TabSearchUIBrowserTest, + EmbedderHiddenDestroysPageHandler) { + EXPECT_NE(nullptr, GetWebUIController()); + EXPECT_NE(nullptr, GetWebUIController()->page_handler_for_testing()); + GetWebUIController()->EmbedderHidden(); + EXPECT_EQ(nullptr, GetWebUIController()->page_handler_for_testing()); +} + // TODO(romanarora): Investigate a way to call WebUI custom methods and refactor // JS code below.
diff --git a/chrome/browser/ui/webui/tab_strip/chrome_content_browser_client_tab_strip_part.cc b/chrome/browser/ui/webui/tab_strip/chrome_content_browser_client_tab_strip_part.cc index 6f76ac6..1e5b214 100644 --- a/chrome/browser/ui/webui/tab_strip/chrome_content_browser_client_tab_strip_part.cc +++ b/chrome/browser/ui/webui/tab_strip/chrome_content_browser_client_tab_strip_part.cc
@@ -15,15 +15,13 @@ ~ChromeContentBrowserClientTabStripPart() = default; void ChromeContentBrowserClientTabStripPart::OverrideWebkitPrefs( - content::RenderViewHost* rvh, + content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) { - content::WebContents* contents = - content::WebContents::FromRenderViewHost(rvh); - - if (!contents) + if (!web_contents) return; - content::NavigationEntry* entry = contents->GetController().GetVisibleEntry(); + content::NavigationEntry* entry = + web_contents->GetController().GetVisibleEntry(); GURL url = entry ? entry->GetURL() : GURL(); if (url.host_piece() != chrome::kChromeUITabStripHost) {
diff --git a/chrome/browser/ui/webui/tab_strip/chrome_content_browser_client_tab_strip_part.h b/chrome/browser/ui/webui/tab_strip/chrome_content_browser_client_tab_strip_part.h index 2edc7d3..11206f3 100644 --- a/chrome/browser/ui/webui/tab_strip/chrome_content_browser_client_tab_strip_part.h +++ b/chrome/browser/ui/webui/tab_strip/chrome_content_browser_client_tab_strip_part.h
@@ -17,7 +17,7 @@ ~ChromeContentBrowserClientTabStripPart() override; // ChromeContentBrowserClientParts: - void OverrideWebkitPrefs(content::RenderViewHost* rvh, + void OverrideWebkitPrefs(content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) override; private:
diff --git a/chrome/browser/uid/DIR_METADATA b/chrome/browser/uid/DIR_METADATA index e97d654..b368f1d2 100644 --- a/chrome/browser/uid/DIR_METADATA +++ b/chrome/browser/uid/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Services>SignIn" +monorail: { + component: "Services>SignIn" } -team_email: "chrome-signin@chromium.org" +team_email: "chrome-signin@chromium.org"
diff --git a/chrome/browser/undo/DIR_METADATA b/chrome/browser/undo/DIR_METADATA index 079a366..d366dc7 100644 --- a/chrome/browser/undo/DIR_METADATA +++ b/chrome/browser/undo/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals" +monorail: { + component: "Internals" }
diff --git a/chrome/browser/unified_consent/DIR_METADATA b/chrome/browser/unified_consent/DIR_METADATA index e97d654..b368f1d2 100644 --- a/chrome/browser/unified_consent/DIR_METADATA +++ b/chrome/browser/unified_consent/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Services>SignIn" +monorail: { + component: "Services>SignIn" } -team_email: "chrome-signin@chromium.org" +team_email: "chrome-signin@chromium.org"
diff --git a/chrome/browser/update_client/DIR_METADATA b/chrome/browser/update_client/DIR_METADATA index d8b71053..564340d8 100644 --- a/chrome/browser/update_client/DIR_METADATA +++ b/chrome/browser/update_client/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Installer>Components" +monorail: { + component: "Internals>Installer>Components" } -team_email: "chrome-updates-dev@chromium.org" +team_email: "chrome-updates-dev@chromium.org"
diff --git a/chrome/browser/updater/DIR_METADATA b/chrome/browser/updater/DIR_METADATA index c5c45e4..5f42b1af 100644 --- a/chrome/browser/updater/DIR_METADATA +++ b/chrome/browser/updater/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Updater" +monorail: { + component: "Internals>Updater" } -team_email: "chrome-updates-dev@chromium.org" +team_email: "chrome-updates-dev@chromium.org"
diff --git a/chrome/browser/upgrade_detector/DIR_METADATA b/chrome/browser/upgrade_detector/DIR_METADATA index 93521547..0c97fbf 100644 --- a/chrome/browser/upgrade_detector/DIR_METADATA +++ b/chrome/browser/upgrade_detector/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Installer" +monorail: { + component: "Internals>Installer" }
diff --git a/chrome/browser/usb/DIR_METADATA b/chrome/browser/usb/DIR_METADATA index 95896612..536f4da 100644 --- a/chrome/browser/usb/DIR_METADATA +++ b/chrome/browser/usb/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>USB" +monorail: { + component: "Blink>USB" } -team_email: "webusb@chromium.org" +team_email: "webusb@chromium.org"
diff --git a/chrome/browser/user_education/DIR_METADATA b/chrome/browser/user_education/DIR_METADATA index da841c6..04ba9fd 100644 --- a/chrome/browser/user_education/DIR_METADATA +++ b/chrome/browser/user_education/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>Mobile" +monorail: { + component: "UI>Browser>Mobile" } -os: ANDROID +os: ANDROID
diff --git a/chrome/browser/version/DIR_METADATA b/chrome/browser/version/DIR_METADATA index bc234f68..908f2e13 100644 --- a/chrome/browser/version/DIR_METADATA +++ b/chrome/browser/version/DIR_METADATA
@@ -1,5 +1,5 @@ -monorail: { - component: "Build" +monorail: { + component: "Build" } -team_email: "clank-app-team@google.com" -os: ANDROID +team_email: "clank-app-team@google.com" +os: ANDROID
diff --git a/chrome/browser/video_tutorials/DIR_METADATA b/chrome/browser/video_tutorials/DIR_METADATA index 82c798d..e6c59a32 100644 --- a/chrome/browser/video_tutorials/DIR_METADATA +++ b/chrome/browser/video_tutorials/DIR_METADATA
@@ -1,5 +1,5 @@ -monorail: { - component: "Upboarding>VideoTutorials" +monorail: { + component: "Upboarding>VideoTutorials" } -team_email: "chrome-upboarding-eng@google.com" -os: ANDROID +team_email: "chrome-upboarding-eng@google.com" +os: ANDROID
diff --git a/chrome/browser/vr/DIR_METADATA b/chrome/browser/vr/DIR_METADATA index 2da35f7a..f4b55f85 100644 --- a/chrome/browser/vr/DIR_METADATA +++ b/chrome/browser/vr/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>VR" +monorail: { + component: "UI>Browser>VR" } -team_email: "xr-dev@chromium.org" +team_email: "xr-dev@chromium.org"
diff --git a/chrome/browser/vr/vector_icons/DIR_METADATA b/chrome/browser/vr/vector_icons/DIR_METADATA index 2da35f7a..f4b55f85 100644 --- a/chrome/browser/vr/vector_icons/DIR_METADATA +++ b/chrome/browser/vr/vector_icons/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>VR" +monorail: { + component: "UI>Browser>VR" } -team_email: "xr-dev@chromium.org" +team_email: "xr-dev@chromium.org"
diff --git a/chrome/browser/wake_lock/DIR_METADATA b/chrome/browser/wake_lock/DIR_METADATA index 2faf285..966f102 100644 --- a/chrome/browser/wake_lock/DIR_METADATA +++ b/chrome/browser/wake_lock/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>WakeLock" +monorail: { + component: "Blink>WakeLock" } -team_email: "device-dev@chromium.org" +team_email: "device-dev@chromium.org"
diff --git a/chrome/browser/web_applications/DIR_METADATA b/chrome/browser/web_applications/DIR_METADATA index 32b215c..c8b762a 100644 --- a/chrome/browser/web_applications/DIR_METADATA +++ b/chrome/browser/web_applications/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>WebAppInstalls" +monorail: { + component: "UI>Browser>WebAppInstalls" } -team_email: "pwa-dev@chromium.org" +team_email: "pwa-dev@chromium.org"
diff --git a/chrome/browser/web_applications/chrome_pwa_launcher/DIR_METADATA b/chrome/browser/web_applications/chrome_pwa_launcher/DIR_METADATA index b992bfa..f49f5ea 100644 --- a/chrome/browser/web_applications/chrome_pwa_launcher/DIR_METADATA +++ b/chrome/browser/web_applications/chrome_pwa_launcher/DIR_METADATA
@@ -1,5 +1,5 @@ -monorail: { - component: "UI>Browser>WebAppInstalls" +monorail: { + component: "UI>Browser>WebAppInstalls" } -team_email: "pwa-dev@chromium.org" -os: WINDOWS +team_email: "pwa-dev@chromium.org" +os: WINDOWS
diff --git a/chrome/browser/web_share_target/DIR_METADATA b/chrome/browser/web_share_target/DIR_METADATA index d417c552f..9a659e9 100644 --- a/chrome/browser/web_share_target/DIR_METADATA +++ b/chrome/browser/web_share_target/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Mobile>WebAPKs" +monorail: { + component: "Mobile>WebAPKs" } -team_email: "webapk-team@chromium.org" +team_email: "webapk-team@chromium.org"
diff --git a/chrome/browser/webauthn/DIR_METADATA b/chrome/browser/webauthn/DIR_METADATA index 90f0e485..9e9b906 100644 --- a/chrome/browser/webauthn/DIR_METADATA +++ b/chrome/browser/webauthn/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>WebAuthentication" +monorail: { + component: "Blink>WebAuthentication" } -team_email: "identity-dev@chromium.org" +team_email: "identity-dev@chromium.org"
diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.cc b/chrome/browser/webauthn/authenticator_request_dialog_model.cc index f432b374..38513df 100644 --- a/chrome/browser/webauthn/authenticator_request_dialog_model.cc +++ b/chrome/browser/webauthn/authenticator_request_dialog_model.cc
@@ -587,10 +587,13 @@ } void AuthenticatorRequestDialogModel::RequestAttestationPermission( + bool is_enterprise_attestation, base::OnceCallback<void(bool)> callback) { DCHECK(current_step_ != Step::kClosed); attestation_callback_ = std::move(callback); - SetCurrentStep(Step::kAttestationPermissionRequest); + SetCurrentStep(is_enterprise_attestation + ? Step::kEnterpriseAttestationPermissionRequest + : Step::kAttestationPermissionRequest); } void AuthenticatorRequestDialogModel::set_cable_transport_info(
diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.h b/chrome/browser/webauthn/authenticator_request_dialog_model.h index b1fb6da..e0b9814 100644 --- a/chrome/browser/webauthn/authenticator_request_dialog_model.h +++ b/chrome/browser/webauthn/authenticator_request_dialog_model.h
@@ -102,8 +102,9 @@ // Account selection, kSelectAccount, - // Attestation permission request. + // Attestation permission requests. kAttestationPermissionRequest, + kEnterpriseAttestationPermissionRequest, }; // Implemented by the dialog to observe this model and show the UI panels @@ -384,7 +385,8 @@ base::Optional<int> uv_attempts() const { return uv_attempts_; } - void RequestAttestationPermission(base::OnceCallback<void(bool)> callback); + void RequestAttestationPermission(bool is_enterprise_attestation, + base::OnceCallback<void(bool)> callback); const std::vector<device::AuthenticatorGetAssertionResponse>& responses() { return ephemeral_state_.responses_;
diff --git a/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc b/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc index ed6b8429..2036e199 100644 --- a/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc +++ b/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc
@@ -333,13 +333,6 @@ return; } - if (is_enterprise_attestation) { - // This will require additional UI that is not yet ready. Therefore, at this - // stage, it is always rejected. - std::move(callback).Run(false); - return; - } - // Cryptotoken displays its own attestation consent prompt. // AuthenticatorCommon does not invoke ShouldReturnAttestation() for those // requests. @@ -359,7 +352,8 @@ } #endif // defined(OS_WIN) - weak_dialog_model_->RequestAttestationPermission(std::move(callback)); + weak_dialog_model_->RequestAttestationPermission(is_enterprise_attestation, + std::move(callback)); } bool ChromeAuthenticatorRequestDelegate::SupportsResidentKeys() {
diff --git a/chrome/browser/win/DIR_METADATA b/chrome/browser/win/DIR_METADATA index 87a0c4f8..d00c923 100644 --- a/chrome/browser/win/DIR_METADATA +++ b/chrome/browser/win/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>PlatformIntegration" +monorail: { + component: "Internals>PlatformIntegration" }
diff --git a/chrome/browser/win/conflicts/DIR_METADATA b/chrome/browser/win/conflicts/DIR_METADATA index 0d15fab0..643d2bac 100644 --- a/chrome/browser/win/conflicts/DIR_METADATA +++ b/chrome/browser/win/conflicts/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Core" +monorail: { + component: "Internals>Core" }
diff --git a/chrome/browser/window_placement/DIR_METADATA b/chrome/browser/window_placement/DIR_METADATA index 32b215c..c8b762a 100644 --- a/chrome/browser/window_placement/DIR_METADATA +++ b/chrome/browser/window_placement/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>WebAppInstalls" +monorail: { + component: "UI>Browser>WebAppInstalls" } -team_email: "pwa-dev@chromium.org" +team_email: "pwa-dev@chromium.org"
diff --git a/chrome/browser/xsurface/DIR_METADATA b/chrome/browser/xsurface/DIR_METADATA index 181eb10ca..f10ed71 100644 --- a/chrome/browser/xsurface/DIR_METADATA +++ b/chrome/browser/xsurface/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>ContentSuggestions>Feed" +monorail: { + component: "UI>Browser>ContentSuggestions>Feed" } -team_email: "feed@chromium.org" +team_email: "feed@chromium.org"
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index 8395422..4266e5a6 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-master-1610711423-18f006eac9d09987835ac3798b0f3a285cb6646c.profdata +chrome-linux-master-1610755196-61d932c6744ad62f0472d9ac776510bd42cd0a54.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index b6dc060..750dee4e 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-master-1610690109-720706a87994e4668591f57ede90f04b6ed715af.profdata +chrome-mac-master-1610755196-59a4a0c119004651094c88c9b6ab2bda6a695e2e.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index fd959ae..eaba014 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-master-1610711423-66d1757656af1c1220147c4ed72bfc529787f050.profdata +chrome-win32-master-1610744388-5f878bc1b38d4c2e869a6a4ceb1a959431b1ffe7.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 4dfa432..d61cf2e 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-master-1610711423-bdaee35d021c9a50df10abe9e0067f035c4386a3.profdata +chrome-win64-master-1610755196-7abba2cfdf73565a08dbdbba7efd11f1e8902293.profdata
diff --git a/chrome/child/DIR_METADATA b/chrome/child/DIR_METADATA index 0d15fab0..643d2bac 100644 --- a/chrome/child/DIR_METADATA +++ b/chrome/child/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Core" +monorail: { + component: "Internals>Core" }
diff --git a/chrome/chrome_cleaner/DIR_METADATA b/chrome/chrome_cleaner/DIR_METADATA index 1216cc6..5078508f 100644 --- a/chrome/chrome_cleaner/DIR_METADATA +++ b/chrome/chrome_cleaner/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Services>Safebrowsing>ChromeCleanup" +monorail: { + component: "Services>Safebrowsing>ChromeCleanup" } -team_email: "safebrowsing@chromium.org" +team_email: "safebrowsing@chromium.org"
diff --git a/chrome/chrome_elf/DIR_METADATA b/chrome/chrome_elf/DIR_METADATA index 5353a19..23a8151 100644 --- a/chrome/chrome_elf/DIR_METADATA +++ b/chrome/chrome_elf/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>EarlyLoadingFramework" +monorail: { + component: "Internals>EarlyLoadingFramework" } -team_email: "security-dev@chromium.org" +team_email: "security-dev@chromium.org"
diff --git a/chrome/chrome_proxy/DIR_METADATA b/chrome/chrome_proxy/DIR_METADATA index 32b215c..c8b762a 100644 --- a/chrome/chrome_proxy/DIR_METADATA +++ b/chrome/chrome_proxy/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>WebAppInstalls" +monorail: { + component: "UI>Browser>WebAppInstalls" } -team_email: "pwa-dev@chromium.org" +team_email: "pwa-dev@chromium.org"
diff --git a/chrome/chrome_proxy/OWNERS b/chrome/chrome_proxy/OWNERS index 8d46e90..85298035 100644 --- a/chrome/chrome_proxy/OWNERS +++ b/chrome/chrome_proxy/OWNERS
@@ -1,2 +1,2 @@ alancutter@chromium.org -mgiuca@chromium.org +davidbienvenu@chromium.org
diff --git a/chrome/common/apps/DIR_METADATA b/chrome/common/apps/DIR_METADATA index 1480e33..9a42572 100644 --- a/chrome/common/apps/DIR_METADATA +++ b/chrome/common/apps/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Extensions" +monorail: { + component: "Platform>Extensions" }
diff --git a/chrome/common/cloud_print/DIR_METADATA b/chrome/common/cloud_print/DIR_METADATA index 7619ec17e..67273c4 100644 --- a/chrome/common/cloud_print/DIR_METADATA +++ b/chrome/common/cloud_print/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>CloudPrint" +monorail: { + component: "Services>CloudPrint" }
diff --git a/chrome/common/conflicts/DIR_METADATA b/chrome/common/conflicts/DIR_METADATA index e019ac72..151dbbc0 100644 --- a/chrome/common/conflicts/DIR_METADATA +++ b/chrome/common/conflicts/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>PlatformIntegration" +monorail: { + component: "Internals>PlatformIntegration" } -team_email: "windows-third-party@chromium.org" +team_email: "windows-third-party@chromium.org"
diff --git a/chrome/common/custom_handlers/DIR_METADATA b/chrome/common/custom_handlers/DIR_METADATA index 32b215c..c8b762a 100644 --- a/chrome/common/custom_handlers/DIR_METADATA +++ b/chrome/common/custom_handlers/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Browser>WebAppInstalls" +monorail: { + component: "UI>Browser>WebAppInstalls" } -team_email: "pwa-dev@chromium.org" +team_email: "pwa-dev@chromium.org"
diff --git a/chrome/common/extensions/DIR_METADATA b/chrome/common/extensions/DIR_METADATA index 6efecda..1a705f4 100644 --- a/chrome/common/extensions/DIR_METADATA +++ b/chrome/common/extensions/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Platform>Extensions" +monorail: { + component: "Platform>Extensions" } -team_email: "chromium-extensions@chromium.org" +team_email: "chromium-extensions@chromium.org"
diff --git a/chrome/common/extensions/api/DIR_METADATA b/chrome/common/extensions/api/DIR_METADATA index 03ba901..49909cd 100644 --- a/chrome/common/extensions/api/DIR_METADATA +++ b/chrome/common/extensions/api/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Extensions>API" +monorail: { + component: "Platform>Extensions>API" }
diff --git a/chrome/common/importer/DIR_METADATA b/chrome/common/importer/DIR_METADATA index 9730c88..4be07047 100644 --- a/chrome/common/importer/DIR_METADATA +++ b/chrome/common/importer/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Import" +monorail: { + component: "UI>Browser>Import" }
diff --git a/chrome/common/mac/DIR_METADATA b/chrome/common/mac/DIR_METADATA index 87a0c4f8..d00c923 100644 --- a/chrome/common/mac/DIR_METADATA +++ b/chrome/common/mac/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>PlatformIntegration" +monorail: { + component: "Internals>PlatformIntegration" }
diff --git a/chrome/common/media/DIR_METADATA b/chrome/common/media/DIR_METADATA index 937a230..7f5b6763 100644 --- a/chrome/common/media/DIR_METADATA +++ b/chrome/common/media/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Media>Encrypted" +monorail: { + component: "Internals>Media>Encrypted" }
diff --git a/chrome/common/media_galleries/DIR_METADATA b/chrome/common/media_galleries/DIR_METADATA index 8defaf8..bf48267 100644 --- a/chrome/common/media_galleries/DIR_METADATA +++ b/chrome/common/media_galleries/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Apps>MediaGalleries" +monorail: { + component: "Platform>Apps>MediaGalleries" }
diff --git a/chrome/common/net/DIR_METADATA b/chrome/common/net/DIR_METADATA index f0b059d..2ba70d2 100644 --- a/chrome/common/net/DIR_METADATA +++ b/chrome/common/net/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Network" +monorail: { + component: "Internals>Network" } -team_email: "net-dev@chromium.org" +team_email: "net-dev@chromium.org"
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index 5fe5d79..dd57c95 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc
@@ -1242,6 +1242,22 @@ const char kSodaJaJpConfigPath[] = "accessibility.captions.soda_ja_jp_config_path"; +// The file path of the de-DE Speech On-Device API (SODA) configuration file. +const char kSodaDeDeConfigPath[] = + "accessibility.captions.soda_de_de_config_path"; + +// The file path of the es-ES Speech On-Device API (SODA) configuration file. +const char kSodaEsEsConfigPath[] = + "accessibility.captions.soda_es_es_config_path"; + +// The file path of the fr-FR Speech On-Device API (SODA) configuration file. +const char kSodaFrFrConfigPath[] = + "accessibility.captions.soda_fr_fr_config_path"; + +// The file path of the it-IT Speech On-Device API (SODA) configuration file. +const char kSodaItItConfigPath[] = + "accessibility.captions.soda_it_it_config_path"; + // The scheduled time to clean up the Speech On-Device API (SODA) files from the // device. const char kSodaScheduledDeletionTime[] = @@ -3150,7 +3166,9 @@ #endif // BUILDFLAG(IS_CHROMEOS_ASH) #if !defined(OS_ANDROID) -// Boolean pref indicating whether user has dismissed the cart module on NTP. -const char kCartModuleDismissed[] = "cart_module_dismissed"; +// Boolean pref indicating whether user has hidden the cart module on NTP. +const char kCartModuleHidden[] = "cart_module_hidden"; +// Boolean pref indicating whether user has removed the cart module on NTP. +const char kCartModuleRemoved[] = "cart_module_removed"; #endif } // namespace prefs
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index d6da56d58..107c80c 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h
@@ -196,6 +196,10 @@ extern const char kSodaBinaryPath[]; extern const char kSodaEnUsConfigPath[]; extern const char kSodaJaJpConfigPath[]; +extern const char kSodaDeDeConfigPath[]; +extern const char kSodaEsEsConfigPath[]; +extern const char kSodaFrFrConfigPath[]; +extern const char kSodaItItConfigPath[]; extern const char kSodaScheduledDeletionTime[]; #endif #if defined(OS_MAC) @@ -1103,7 +1107,8 @@ #endif #if !defined(OS_ANDROID) -extern const char kCartModuleDismissed[]; +extern const char kCartModuleHidden[]; +extern const char kCartModuleRemoved[]; #endif } // namespace prefs
diff --git a/chrome/common/printing/DIR_METADATA b/chrome/common/printing/DIR_METADATA index d446a59..ee7161a6 100644 --- a/chrome/common/printing/DIR_METADATA +++ b/chrome/common/printing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Printing" +monorail: { + component: "Internals>Printing" }
diff --git a/chrome/common/privacy_budget/DIR_METADATA b/chrome/common/privacy_budget/DIR_METADATA index 108597dc..fe6ef77 100644 --- a/chrome/common/privacy_budget/DIR_METADATA +++ b/chrome/common/privacy_budget/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Privacy>Fingerprinting" +monorail: { + component: "Privacy>Fingerprinting" } -team_email: "privacy-sandbox-dev@chromium.org" +team_email: "privacy-sandbox-dev@chromium.org"
diff --git a/chrome/common/profiler/DIR_METADATA b/chrome/common/profiler/DIR_METADATA index aca7a23..fe03b869 100644 --- a/chrome/common/profiler/DIR_METADATA +++ b/chrome/common/profiler/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Metrics>SamplingProfiler" +monorail: { + component: "Internals>Metrics>SamplingProfiler" }
diff --git a/chrome/common/safe_browsing/DIR_METADATA b/chrome/common/safe_browsing/DIR_METADATA index 1864297..6015b06 100644 --- a/chrome/common/safe_browsing/DIR_METADATA +++ b/chrome/common/safe_browsing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>Safebrowsing" +monorail: { + component: "Services>Safebrowsing" }
diff --git a/chrome/common/safe_browsing/crx_info.proto b/chrome/common/safe_browsing/crx_info.proto index 78065fc..9043068 100644 --- a/chrome/common/safe_browsing/crx_info.proto +++ b/chrome/common/safe_browsing/crx_info.proto
@@ -7,9 +7,9 @@ package extensions; -// This is used to request more information on blacklisted CRX packages. The -// client maintains a local cache of blacklisted ids, and makes requests to our -// server to get more information, such as the blacklist type. +// This is used to request more information on blocklisted CRX packages. The +// client maintains a local cache of blocklisted ids, and makes requests to our +// server to get more information, such as the blocklist type. message ClientCRXListInfoRequest { // ID of the CRX package. required string id = 1; @@ -20,14 +20,14 @@ message ClientCRXListInfoResponse { enum Verdict { - NOT_IN_BLACKLIST = 0; + NOT_IN_BLOCKLIST = 0; MALWARE = 1; SECURITY_VULNERABILITY = 2; CWS_POLICY_VIOLATION = 3; POTENTIALLY_UNWANTED = 4; } // Although listed as optional, this is required. - optional Verdict verdict = 1 [default=NOT_IN_BLACKLIST]; + optional Verdict verdict = 1 [default = NOT_IN_BLOCKLIST]; message UserMessage { // If present, will be appended to disable reason in the details page. We
diff --git a/chrome/common/search/DIR_METADATA b/chrome/common/search/DIR_METADATA index 467ac9b4..eb6250a8 100644 --- a/chrome/common/search/DIR_METADATA +++ b/chrome/common/search/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>NewTabPage" +monorail: { + component: "UI>Browser>NewTabPage" }
diff --git a/chrome/common/win/DIR_METADATA b/chrome/common/win/DIR_METADATA index dbf7ae5..c98351c 100644 --- a/chrome/common/win/DIR_METADATA +++ b/chrome/common/win/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Apps>API>Windows" +monorail: { + component: "Platform>Apps>API>Windows" }
diff --git a/chrome/credential_provider/DIR_METADATA b/chrome/credential_provider/DIR_METADATA index 4c21d96..f37723a 100644 --- a/chrome/credential_provider/DIR_METADATA +++ b/chrome/credential_provider/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise" +monorail: { + component: "Enterprise" }
diff --git a/chrome/docs/DIR_METADATA b/chrome/docs/DIR_METADATA index 332fb1e..3f006d1 100644 --- a/chrome/docs/DIR_METADATA +++ b/chrome/docs/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Documentation" +monorail: { + component: "Documentation" }
diff --git a/chrome/elevation_service/DIR_METADATA b/chrome/elevation_service/DIR_METADATA index d8b71053..564340d8 100644 --- a/chrome/elevation_service/DIR_METADATA +++ b/chrome/elevation_service/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Installer>Components" +monorail: { + component: "Internals>Installer>Components" } -team_email: "chrome-updates-dev@chromium.org" +team_email: "chrome-updates-dev@chromium.org"
diff --git a/chrome/install_static/DIR_METADATA b/chrome/install_static/DIR_METADATA index 93521547..0c97fbf 100644 --- a/chrome/install_static/DIR_METADATA +++ b/chrome/install_static/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Installer" +monorail: { + component: "Internals>Installer" }
diff --git a/chrome/installer/DIR_METADATA b/chrome/installer/DIR_METADATA index 93521547..0c97fbf 100644 --- a/chrome/installer/DIR_METADATA +++ b/chrome/installer/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Installer" +monorail: { + component: "Internals>Installer" }
diff --git a/chrome/installer/gcapi_mac/DIR_METADATA b/chrome/installer/gcapi_mac/DIR_METADATA index 93521547..0c97fbf 100644 --- a/chrome/installer/gcapi_mac/DIR_METADATA +++ b/chrome/installer/gcapi_mac/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Installer" +monorail: { + component: "Internals>Installer" }
diff --git a/chrome/installer/mac/DIR_METADATA b/chrome/installer/mac/DIR_METADATA index 93521547..0c97fbf 100644 --- a/chrome/installer/mac/DIR_METADATA +++ b/chrome/installer/mac/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Installer" +monorail: { + component: "Internals>Installer" }
diff --git a/chrome/nacl/DIR_METADATA b/chrome/nacl/DIR_METADATA index fdb3eff..178b5d1 100644 --- a/chrome/nacl/DIR_METADATA +++ b/chrome/nacl/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>NaCl" +monorail: { + component: "Platform>NaCl" }
diff --git a/chrome/notification_helper/DIR_METADATA b/chrome/notification_helper/DIR_METADATA index 4cfd51f..5acb01e3 100644 --- a/chrome/notification_helper/DIR_METADATA +++ b/chrome/notification_helper/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Notifications" +monorail: { + component: "UI>Notifications" }
diff --git a/chrome/renderer/DIR_METADATA b/chrome/renderer/DIR_METADATA index 6bae767..a830984f5 100644 --- a/chrome/renderer/DIR_METADATA +++ b/chrome/renderer/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Services>Network" +monorail: { + component: "Internals>Services>Network" }
diff --git a/chrome/renderer/autofill/DIR_METADATA b/chrome/renderer/autofill/DIR_METADATA index de45c5e0..ac71123 100644 --- a/chrome/renderer/autofill/DIR_METADATA +++ b/chrome/renderer/autofill/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Autofill" +monorail: { + component: "UI>Browser>Autofill" }
diff --git a/chrome/renderer/extensions/DIR_METADATA b/chrome/renderer/extensions/DIR_METADATA index 2eb12df..66b3a87 100644 --- a/chrome/renderer/extensions/DIR_METADATA +++ b/chrome/renderer/extensions/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Platform>Extensions" +monorail: { + component: "Platform>Extensions" } -team_email: "extensions-reviews@chromium.org" +team_email: "extensions-reviews@chromium.org"
diff --git a/chrome/renderer/lite_video/DIR_METADATA b/chrome/renderer/lite_video/DIR_METADATA index 5e09cff..3c8435d 100644 --- a/chrome/renderer/lite_video/DIR_METADATA +++ b/chrome/renderer/lite_video/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Network>DataUse" +monorail: { + component: "Internals>Network>DataUse" }
diff --git a/chrome/renderer/media/DIR_METADATA b/chrome/renderer/media/DIR_METADATA index 31d4aba4..342ee647 100644 --- a/chrome/renderer/media/DIR_METADATA +++ b/chrome/renderer/media/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Media" +monorail: { + component: "Internals>Media" }
diff --git a/chrome/renderer/net/DIR_METADATA b/chrome/renderer/net/DIR_METADATA index f0b059d..2ba70d2 100644 --- a/chrome/renderer/net/DIR_METADATA +++ b/chrome/renderer/net/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Network" +monorail: { + component: "Internals>Network" } -team_email: "net-dev@chromium.org" +team_email: "net-dev@chromium.org"
diff --git a/chrome/renderer/pepper/DIR_METADATA b/chrome/renderer/pepper/DIR_METADATA index 4c77ce2..a475752 100644 --- a/chrome/renderer/pepper/DIR_METADATA +++ b/chrome/renderer/pepper/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Plugins>Pepper" +monorail: { + component: "Internals>Plugins>Pepper" }
diff --git a/chrome/renderer/plugins/DIR_METADATA b/chrome/renderer/plugins/DIR_METADATA index 5008e90..63d4f46 100644 --- a/chrome/renderer/plugins/DIR_METADATA +++ b/chrome/renderer/plugins/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Plugins" +monorail: { + component: "Internals>Plugins" }
diff --git a/chrome/renderer/previews/DIR_METADATA b/chrome/renderer/previews/DIR_METADATA index a3eb23b..d243b83 100644 --- a/chrome/renderer/previews/DIR_METADATA +++ b/chrome/renderer/previews/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Blink>Previews" +monorail: { + component: "Blink>Previews" }
diff --git a/chrome/renderer/printing/DIR_METADATA b/chrome/renderer/printing/DIR_METADATA index d446a59..ee7161a6 100644 --- a/chrome/renderer/printing/DIR_METADATA +++ b/chrome/renderer/printing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Printing" +monorail: { + component: "Internals>Printing" }
diff --git a/chrome/renderer/resources/DIR_METADATA b/chrome/renderer/resources/DIR_METADATA index 57f9f85..d2814f2 100644 --- a/chrome/renderer/resources/DIR_METADATA +++ b/chrome/renderer/resources/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>WebUI" +monorail: { + component: "UI>Browser>WebUI" }
diff --git a/chrome/renderer/resources/extensions/DIR_METADATA b/chrome/renderer/resources/extensions/DIR_METADATA index 1480e33..9a42572 100644 --- a/chrome/renderer/resources/extensions/DIR_METADATA +++ b/chrome/renderer/resources/extensions/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Extensions" +monorail: { + component: "Platform>Extensions" }
diff --git a/chrome/renderer/resources/extensions/enterprise_platform_keys/DIR_METADATA b/chrome/renderer/resources/extensions/enterprise_platform_keys/DIR_METADATA index 4c21d96..f37723a 100644 --- a/chrome/renderer/resources/extensions/enterprise_platform_keys/DIR_METADATA +++ b/chrome/renderer/resources/extensions/enterprise_platform_keys/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise" +monorail: { + component: "Enterprise" }
diff --git a/chrome/renderer/resources/extensions/platform_keys/DIR_METADATA b/chrome/renderer/resources/extensions/platform_keys/DIR_METADATA index 4c21d96..f37723a 100644 --- a/chrome/renderer/resources/extensions/platform_keys/DIR_METADATA +++ b/chrome/renderer/resources/extensions/platform_keys/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise" +monorail: { + component: "Enterprise" }
diff --git a/chrome/renderer/resources/extensions/web_view/DIR_METADATA b/chrome/renderer/resources/extensions/web_view/DIR_METADATA index 65db724..df25159e 100644 --- a/chrome/renderer/resources/extensions/web_view/DIR_METADATA +++ b/chrome/renderer/resources/extensions/web_view/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Apps>BrowserTag" +monorail: { + component: "Platform>Apps>BrowserTag" }
diff --git a/chrome/renderer/safe_browsing/DIR_METADATA b/chrome/renderer/safe_browsing/DIR_METADATA index 1864297..6015b06 100644 --- a/chrome/renderer/safe_browsing/DIR_METADATA +++ b/chrome/renderer/safe_browsing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>Safebrowsing" +monorail: { + component: "Services>Safebrowsing" }
diff --git a/chrome/renderer/searchbox/DIR_METADATA b/chrome/renderer/searchbox/DIR_METADATA index 467ac9b4..eb6250a8 100644 --- a/chrome/renderer/searchbox/DIR_METADATA +++ b/chrome/renderer/searchbox/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>NewTabPage" +monorail: { + component: "UI>Browser>NewTabPage" }
diff --git a/chrome/renderer/subresource_redirect/DIR_METADATA b/chrome/renderer/subresource_redirect/DIR_METADATA index b0650c8..ce14958 100644 --- a/chrome/renderer/subresource_redirect/DIR_METADATA +++ b/chrome/renderer/subresource_redirect/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Network>DataProxy" +monorail: { + component: "Internals>Network>DataProxy" }
diff --git a/chrome/renderer/supervised_user/DIR_METADATA b/chrome/renderer/supervised_user/DIR_METADATA index b0c85ce1..d4229da 100644 --- a/chrome/renderer/supervised_user/DIR_METADATA +++ b/chrome/renderer/supervised_user/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>SupervisedUser" +monorail: { + component: "Services>SupervisedUser" }
diff --git a/chrome/renderer/translate/DIR_METADATA b/chrome/renderer/translate/DIR_METADATA index 7a9a0a2f..f13e6d64 100644 --- a/chrome/renderer/translate/DIR_METADATA +++ b/chrome/renderer/translate/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Language>Translate" +monorail: { + component: "UI>Browser>Language>Translate" }
diff --git a/chrome/service/DIR_METADATA b/chrome/service/DIR_METADATA index 7619ec17e..67273c4 100644 --- a/chrome/service/DIR_METADATA +++ b/chrome/service/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>CloudPrint" +monorail: { + component: "Services>CloudPrint" }
diff --git a/chrome/services/file_util/DIR_METADATA b/chrome/services/file_util/DIR_METADATA index 1864297..6015b06 100644 --- a/chrome/services/file_util/DIR_METADATA +++ b/chrome/services/file_util/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>Safebrowsing" +monorail: { + component: "Services>Safebrowsing" }
diff --git a/chrome/services/ipp_parser/DIR_METADATA b/chrome/services/ipp_parser/DIR_METADATA index ad3cb1a..c98ae7ce 100644 --- a/chrome/services/ipp_parser/DIR_METADATA +++ b/chrome/services/ipp_parser/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Printing>CUPS" +monorail: { + component: "Internals>Printing>CUPS" }
diff --git a/chrome/services/machine_learning/BUILD.gn b/chrome/services/machine_learning/BUILD.gn index 2aefa002..5587c111 100644 --- a/chrome/services/machine_learning/BUILD.gn +++ b/chrome/services/machine_learning/BUILD.gn
@@ -27,6 +27,8 @@ if (build_with_tflite_lib) { sources += [ + "chrome_tflite_op_resolver.cc", + "chrome_tflite_op_resolver.h", "in_process_tflite_predictor.cc", "in_process_tflite_predictor.h", ] @@ -65,6 +67,8 @@ sources += [ "in_process_tflite_predictor_unittest.cc" ] } + data = [ "//chrome/test/data/" ] + deps = [ ":machine_learning", ":metrics",
diff --git a/chrome/services/machine_learning/chrome_tflite_op_resolver.cc b/chrome/services/machine_learning/chrome_tflite_op_resolver.cc new file mode 100644 index 0000000..4f0be224 --- /dev/null +++ b/chrome/services/machine_learning/chrome_tflite_op_resolver.cc
@@ -0,0 +1,376 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +#include "chrome/services/machine_learning/chrome_tflite_op_resolver.h" + +#include "third_party/tflite/src/tensorflow/lite/c/common.h" +#include "third_party/tflite/src/tensorflow/lite/kernels/builtin_op_kernels.h" +#include "third_party/tflite/src/tensorflow/lite/schema/schema_generated.h" + +namespace machine_learning { + +ChromeTFLiteOpResolver::ChromeTFLiteOpResolver() { + AddBuiltin(tflite::BuiltinOperator_ABS, tflite::ops::builtin::Register_ABS()); + AddBuiltin(tflite::BuiltinOperator_HARD_SWISH, + tflite::ops::builtin::Register_HARD_SWISH()); + AddBuiltin(tflite::BuiltinOperator_RELU, + tflite::ops::builtin::Register_RELU(), /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_RELU_N1_TO_1, + tflite::ops::builtin::Register_RELU_N1_TO_1()); + AddBuiltin(tflite::BuiltinOperator_RELU6, + tflite::ops::builtin::Register_RELU6(), /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_TANH, + tflite::ops::builtin::Register_TANH(), /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_LOGISTIC, + tflite::ops::builtin::Register_LOGISTIC(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_AVERAGE_POOL_2D, + tflite::ops::builtin::Register_AVERAGE_POOL_2D(), + /* min_version */ 1, + /* max_version */ 3); + AddBuiltin(tflite::BuiltinOperator_MAX_POOL_2D, + tflite::ops::builtin::Register_MAX_POOL_2D(), + /* min_version */ 1, + /* max_version */ 3); + AddBuiltin(tflite::BuiltinOperator_L2_POOL_2D, + tflite::ops::builtin::Register_L2_POOL_2D()); + AddBuiltin(tflite::BuiltinOperator_CONV_2D, + tflite::ops::builtin::Register_CONV_2D(), + /* min_version = */ 1, + /* max_version = */ 4); + AddBuiltin(tflite::BuiltinOperator_DEPTHWISE_CONV_2D, + tflite::ops::builtin::Register_DEPTHWISE_CONV_2D(), + /* min_version = */ 1, + /* max_version = */ 5); + AddBuiltin(tflite::BuiltinOperator_SVDF, + tflite::ops::builtin::Register_SVDF(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_RNN, tflite::ops::builtin::Register_RNN(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_BIDIRECTIONAL_SEQUENCE_RNN, + tflite::ops::builtin::Register_BIDIRECTIONAL_SEQUENCE_RNN(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_RNN, + tflite::ops::builtin::Register_UNIDIRECTIONAL_SEQUENCE_RNN(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_EMBEDDING_LOOKUP, + tflite::ops::builtin::Register_EMBEDDING_LOOKUP(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_EMBEDDING_LOOKUP_SPARSE, + tflite::ops::builtin::Register_EMBEDDING_LOOKUP_SPARSE()); + AddBuiltin(tflite::BuiltinOperator_FULLY_CONNECTED, + tflite::ops::builtin::Register_FULLY_CONNECTED(), + /* min_version = */ 1, + /* max_version = */ 8); + AddBuiltin(tflite::BuiltinOperator_LSH_PROJECTION, + tflite::ops::builtin::Register_LSH_PROJECTION()); + AddBuiltin(tflite::BuiltinOperator_HASHTABLE_LOOKUP, + tflite::ops::builtin::Register_HASHTABLE_LOOKUP()); + AddBuiltin(tflite::BuiltinOperator_SOFTMAX, + tflite::ops::builtin::Register_SOFTMAX(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_CONCATENATION, + tflite::ops::builtin::Register_CONCATENATION(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_ADD, tflite::ops::builtin::Register_ADD(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_SPACE_TO_BATCH_ND, + tflite::ops::builtin::Register_SPACE_TO_BATCH_ND(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_BATCH_TO_SPACE_ND, + tflite::ops::builtin::Register_BATCH_TO_SPACE_ND(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_MUL, tflite::ops::builtin::Register_MUL(), + /* min_version = */ 1, + /* max_version = */ 4); + AddBuiltin(tflite::BuiltinOperator_L2_NORMALIZATION, + tflite::ops::builtin::Register_L2_NORMALIZATION(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_LOCAL_RESPONSE_NORMALIZATION, + tflite::ops::builtin::Register_LOCAL_RESPONSE_NORMALIZATION()); + AddBuiltin(tflite::BuiltinOperator_LSTM, + tflite::ops::builtin::Register_LSTM(), /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_BIDIRECTIONAL_SEQUENCE_LSTM, + tflite::ops::builtin::Register_BIDIRECTIONAL_SEQUENCE_LSTM(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_LSTM, + tflite::ops::builtin::Register_UNIDIRECTIONAL_SEQUENCE_LSTM(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_PAD, tflite::ops::builtin::Register_PAD(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_PADV2, + tflite::ops::builtin::Register_PADV2(), /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_RESHAPE, + tflite::ops::builtin::Register_RESHAPE()); + AddBuiltin(tflite::BuiltinOperator_RESIZE_BILINEAR, + tflite::ops::builtin::Register_RESIZE_BILINEAR(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_RESIZE_NEAREST_NEIGHBOR, + tflite::ops::builtin::Register_RESIZE_NEAREST_NEIGHBOR(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_SKIP_GRAM, + tflite::ops::builtin::Register_SKIP_GRAM()); + AddBuiltin(tflite::BuiltinOperator_SPACE_TO_DEPTH, + tflite::ops::builtin::Register_SPACE_TO_DEPTH(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_DEPTH_TO_SPACE, + tflite::ops::builtin::Register_DEPTH_TO_SPACE()); + AddBuiltin(tflite::BuiltinOperator_GATHER, + tflite::ops::builtin::Register_GATHER(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_TRANSPOSE, + tflite::ops::builtin::Register_TRANSPOSE(), + /* min_version = */ 1, + /* max_version = */ 4); + AddBuiltin(tflite::BuiltinOperator_MEAN, + tflite::ops::builtin::Register_MEAN(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_DIV, tflite::ops::builtin::Register_DIV(), + /* min_version */ 1, + /* max_version */ 2); + AddBuiltin(tflite::BuiltinOperator_SUB, tflite::ops::builtin::Register_SUB(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_SPLIT, + tflite::ops::builtin::Register_SPLIT(), + /* min_version = */ 1, + /* max_version = */ 4); + AddBuiltin(tflite::BuiltinOperator_SPLIT_V, + tflite::ops::builtin::Register_SPLIT_V(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_SQUEEZE, + tflite::ops::builtin::Register_SQUEEZE()); + AddBuiltin(tflite::BuiltinOperator_STRIDED_SLICE, + tflite::ops::builtin::Register_STRIDED_SLICE(), + /* min_version = */ 1, + /* max_version = */ 4); + AddBuiltin(tflite::BuiltinOperator_EXP, tflite::ops::builtin::Register_EXP()); + AddBuiltin(tflite::BuiltinOperator_TOPK_V2, + tflite::ops::builtin::Register_TOPK_V2(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_LOG, tflite::ops::builtin::Register_LOG()); + AddBuiltin(tflite::BuiltinOperator_LOG_SOFTMAX, + tflite::ops::builtin::Register_LOG_SOFTMAX(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_CAST, + tflite::ops::builtin::Register_CAST()); + AddBuiltin(tflite::BuiltinOperator_DEQUANTIZE, + tflite::ops::builtin::Register_DEQUANTIZE(), + /* min_version = */ 1, + /* max_version = */ 4); + AddBuiltin(tflite::BuiltinOperator_PRELU, + tflite::ops::builtin::Register_PRELU()); + AddBuiltin(tflite::BuiltinOperator_MAXIMUM, + tflite::ops::builtin::Register_MAXIMUM(), + /* min_version = */ 1, + /* max_version = */ 4); + AddBuiltin(tflite::BuiltinOperator_MINIMUM, + tflite::ops::builtin::Register_MINIMUM(), + /* min_version = */ 1, + /* max_version = */ 4); + AddBuiltin(tflite::BuiltinOperator_ARG_MAX, + tflite::ops::builtin::Register_ARG_MAX(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_ARG_MIN, + tflite::ops::builtin::Register_ARG_MIN(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_GREATER, + tflite::ops::builtin::Register_GREATER(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_GREATER_EQUAL, + tflite::ops::builtin::Register_GREATER_EQUAL(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_LESS, + tflite::ops::builtin::Register_LESS(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_LESS_EQUAL, + tflite::ops::builtin::Register_LESS_EQUAL(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_FLOOR, + tflite::ops::builtin::Register_FLOOR()); + AddBuiltin(tflite::BuiltinOperator_CEIL, + tflite::ops::builtin::Register_CEIL()); + AddBuiltin(tflite::BuiltinOperator_ROUND, + tflite::ops::builtin::Register_ROUND()); + AddBuiltin(tflite::BuiltinOperator_NEG, tflite::ops::builtin::Register_NEG()); + AddBuiltin(tflite::BuiltinOperator_SELECT, + tflite::ops::builtin::Register_SELECT(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_SELECT_V2, + tflite::ops::builtin::Register_SELECT_V2()); + AddBuiltin(tflite::BuiltinOperator_SLICE, + tflite::ops::builtin::Register_SLICE(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_SIN, tflite::ops::builtin::Register_SIN()); + AddBuiltin(tflite::BuiltinOperator_COS, tflite::ops::builtin::Register_COS()); + AddBuiltin(tflite::BuiltinOperator_TRANSPOSE_CONV, + tflite::ops::builtin::Register_TRANSPOSE_CONV(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_TILE, + tflite::ops::builtin::Register_TILE(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_SUM, tflite::ops::builtin::Register_SUM(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_REDUCE_PROD, + tflite::ops::builtin::Register_REDUCE_PROD()); + AddBuiltin(tflite::BuiltinOperator_REDUCE_MAX, + tflite::ops::builtin::Register_REDUCE_MAX(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_REDUCE_MIN, + tflite::ops::builtin::Register_REDUCE_MIN(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_REDUCE_ANY, + tflite::ops::builtin::Register_REDUCE_ANY()); + AddBuiltin(tflite::BuiltinOperator_EXPAND_DIMS, + tflite::ops::builtin::Register_EXPAND_DIMS()); + AddBuiltin(tflite::BuiltinOperator_SPARSE_TO_DENSE, + tflite::ops::builtin::Register_SPARSE_TO_DENSE(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_EQUAL, + tflite::ops::builtin::Register_EQUAL(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_NOT_EQUAL, + tflite::ops::builtin::Register_NOT_EQUAL(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_SQRT, + tflite::ops::builtin::Register_SQRT()); + AddBuiltin(tflite::BuiltinOperator_RSQRT, + tflite::ops::builtin::Register_RSQRT()); + AddBuiltin(tflite::BuiltinOperator_SHAPE, + tflite::ops::builtin::Register_SHAPE()); + AddBuiltin(tflite::BuiltinOperator_RANK, + tflite::ops::builtin::Register_RANK()); + AddBuiltin(tflite::BuiltinOperator_POW, tflite::ops::builtin::Register_POW()); + AddBuiltin(tflite::BuiltinOperator_FAKE_QUANT, + tflite::ops::builtin::Register_FAKE_QUANT(), 1, 2); + AddBuiltin(tflite::BuiltinOperator_PACK, + tflite::ops::builtin::Register_PACK(), + /* min_version = */ 1, + /* max_version = */ 3); + AddBuiltin(tflite::BuiltinOperator_ONE_HOT, + tflite::ops::builtin::Register_ONE_HOT()); + AddBuiltin(tflite::BuiltinOperator_LOGICAL_OR, + tflite::ops::builtin::Register_LOGICAL_OR()); + AddBuiltin(tflite::BuiltinOperator_LOGICAL_AND, + tflite::ops::builtin::Register_LOGICAL_AND()); + AddBuiltin(tflite::BuiltinOperator_LOGICAL_NOT, + tflite::ops::builtin::Register_LOGICAL_NOT()); + AddBuiltin(tflite::BuiltinOperator_UNPACK, + tflite::ops::builtin::Register_UNPACK(), + /* min_version = */ 1, + /* max_version = */ 4); + AddBuiltin(tflite::BuiltinOperator_FLOOR_DIV, + tflite::ops::builtin::Register_FLOOR_DIV(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_SQUARE, + tflite::ops::builtin::Register_SQUARE()); + AddBuiltin(tflite::BuiltinOperator_ZEROS_LIKE, + tflite::ops::builtin::Register_ZEROS_LIKE()); + AddBuiltin(tflite::BuiltinOperator_FLOOR_MOD, + tflite::ops::builtin::Register_FLOOR_MOD()); + AddBuiltin(tflite::BuiltinOperator_RANGE, + tflite::ops::builtin::Register_RANGE()); + AddBuiltin(tflite::BuiltinOperator_LEAKY_RELU, + tflite::ops::builtin::Register_LEAKY_RELU(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_SQUARED_DIFFERENCE, + tflite::ops::builtin::Register_SQUARED_DIFFERENCE()); + AddBuiltin(tflite::BuiltinOperator_FILL, + tflite::ops::builtin::Register_FILL(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_MIRROR_PAD, + tflite::ops::builtin::Register_MIRROR_PAD(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_UNIQUE, + tflite::ops::builtin::Register_UNIQUE()); + AddBuiltin(tflite::BuiltinOperator_REVERSE_V2, + tflite::ops::builtin::Register_REVERSE_V2(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_ADD_N, + tflite::ops::builtin::Register_ADD_N()); + AddBuiltin(tflite::BuiltinOperator_GATHER_ND, + tflite::ops::builtin::Register_GATHER_ND(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_WHERE, + tflite::ops::builtin::Register_WHERE()); + AddBuiltin(tflite::BuiltinOperator_ELU, tflite::ops::builtin::Register_ELU()); + AddBuiltin(tflite::BuiltinOperator_REVERSE_SEQUENCE, + tflite::ops::builtin::Register_REVERSE_SEQUENCE()); + AddBuiltin(tflite::BuiltinOperator_MATRIX_DIAG, + tflite::ops::builtin::Register_MATRIX_DIAG()); + AddBuiltin(tflite::BuiltinOperator_QUANTIZE, + tflite::ops::builtin::Register_QUANTIZE(), + /* min_version = */ 1, + /* max_version = */ 2); + AddBuiltin(tflite::BuiltinOperator_MATRIX_SET_DIAG, + tflite::ops::builtin::Register_MATRIX_SET_DIAG()); + AddBuiltin(tflite::BuiltinOperator_IF, tflite::ops::builtin::Register_IF()); + AddBuiltin(tflite::BuiltinOperator_WHILE, + tflite::ops::builtin::Register_WHILE()); + AddBuiltin(tflite::BuiltinOperator_NON_MAX_SUPPRESSION_V4, + tflite::ops::builtin::Register_NON_MAX_SUPPRESSION_V4()); + AddBuiltin(tflite::BuiltinOperator_NON_MAX_SUPPRESSION_V5, + tflite::ops::builtin::Register_NON_MAX_SUPPRESSION_V5()); + AddBuiltin(tflite::BuiltinOperator_SCATTER_ND, + tflite::ops::builtin::Register_SCATTER_ND()); + AddBuiltin(tflite::BuiltinOperator_DENSIFY, + tflite::ops::builtin::Register_DENSIFY()); + AddBuiltin(tflite::BuiltinOperator_SEGMENT_SUM, + tflite::ops::builtin::Register_SEGMENT_SUM()); + AddBuiltin(tflite::BuiltinOperator_BATCH_MATMUL, + tflite::ops::builtin::Register_BATCH_MATMUL(), + /* min_version = */ 1, + /* max_version = */ 2); +} + +} // namespace machine_learning
diff --git a/chrome/services/machine_learning/chrome_tflite_op_resolver.h b/chrome/services/machine_learning/chrome_tflite_op_resolver.h new file mode 100644 index 0000000..a0c9bbad --- /dev/null +++ b/chrome/services/machine_learning/chrome_tflite_op_resolver.h
@@ -0,0 +1,22 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_SERVICES_MACHINE_LEARNING_CHROME_TFLITE_OP_RESOLVER_H_ +#define CHROME_SERVICES_MACHINE_LEARNING_CHROME_TFLITE_OP_RESOLVER_H_ + +#include "third_party/tflite/src/tensorflow/lite/model.h" +#include "third_party/tflite/src/tensorflow/lite/mutable_op_resolver.h" + +namespace machine_learning { + +// This class maintains all the currently supported TFLite +// operations for Chrome and registers them for use. +class ChromeTFLiteOpResolver : public tflite::MutableOpResolver { + public: + ChromeTFLiteOpResolver(); +}; + +} // namespace machine_learning + +#endif // CHROME_SERVICES_MACHINE_LEARNING_CHROME_TFLITE_OP_RESOLVER_H_
diff --git a/chrome/services/machine_learning/in_process_tflite_predictor.cc b/chrome/services/machine_learning/in_process_tflite_predictor.cc index 6fbf9fa..fb9f0e3d 100644 --- a/chrome/services/machine_learning/in_process_tflite_predictor.cc +++ b/chrome/services/machine_learning/in_process_tflite_predictor.cc
@@ -5,8 +5,8 @@ #include "chrome/services/machine_learning/in_process_tflite_predictor.h" #include "base/check.h" +#include "chrome/services/machine_learning/chrome_tflite_op_resolver.h" #include "third_party/tflite/src/tensorflow/lite/interpreter.h" -#include "third_party/tflite/src/tensorflow/lite/kernels/register.h" #include "third_party/tflite/src/tensorflow/lite/model.h" namespace machine_learning { @@ -46,7 +46,7 @@ } bool InProcessTFLitePredictor::BuildInterpreter() { - tflite::ops::builtin::BuiltinOpResolver resolver; + ChromeTFLiteOpResolver resolver; tflite::InterpreterBuilder builder(*model_, resolver); if (builder(&interpreter_, num_threads_) != kTfLiteOk || !interpreter_)
diff --git a/chrome/services/machine_learning/in_process_tflite_predictor_unittest.cc b/chrome/services/machine_learning/in_process_tflite_predictor_unittest.cc index e7e9168..e4e2b4ff 100644 --- a/chrome/services/machine_learning/in_process_tflite_predictor_unittest.cc +++ b/chrome/services/machine_learning/in_process_tflite_predictor_unittest.cc
@@ -51,7 +51,7 @@ .Append(FILE_PATH_LITERAL("data")) .Append(FILE_PATH_LITERAL("simple_test.tflite")); EXPECT_TRUE(base::PathExists(model_file_path)); - return model_file_path.value().c_str(); + return model_file_path.AsUTF8Unsafe(); } };
diff --git a/chrome/services/media_gallery_util/DIR_METADATA b/chrome/services/media_gallery_util/DIR_METADATA index 8defaf8..bf48267 100644 --- a/chrome/services/media_gallery_util/DIR_METADATA +++ b/chrome/services/media_gallery_util/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Platform>Apps>MediaGalleries" +monorail: { + component: "Platform>Apps>MediaGalleries" }
diff --git a/chrome/services/printing/DIR_METADATA b/chrome/services/printing/DIR_METADATA index d446a59..ee7161a6 100644 --- a/chrome/services/printing/DIR_METADATA +++ b/chrome/services/printing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Printing" +monorail: { + component: "Internals>Printing" }
diff --git a/chrome/services/qrcode_generator/DIR_METADATA b/chrome/services/qrcode_generator/DIR_METADATA index e64cd2d..221823e82 100644 --- a/chrome/services/qrcode_generator/DIR_METADATA +++ b/chrome/services/qrcode_generator/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Sharing" +monorail: { + component: "UI>Browser>Sharing" }
diff --git a/chrome/services/removable_storage_writer/DIR_METADATA b/chrome/services/removable_storage_writer/DIR_METADATA index 26cbc57..cd7f195 100644 --- a/chrome/services/removable_storage_writer/DIR_METADATA +++ b/chrome/services/removable_storage_writer/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Services" +monorail: { + component: "Internals>Services" }
diff --git a/chrome/services/sharing/DIR_METADATA b/chrome/services/sharing/DIR_METADATA index e64cd2d..221823e82 100644 --- a/chrome/services/sharing/DIR_METADATA +++ b/chrome/services/sharing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Sharing" +monorail: { + component: "UI>Browser>Sharing" }
diff --git a/chrome/services/sharing/nearby/DIR_METADATA b/chrome/services/sharing/nearby/DIR_METADATA index ac713319..135a13c 100644 --- a/chrome/services/sharing/nearby/DIR_METADATA +++ b/chrome/services/sharing/nearby/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Sharing>Nearby" +monorail: { + component: "UI>Browser>Sharing>Nearby" }
diff --git a/chrome/services/speech/DIR_METADATA b/chrome/services/speech/DIR_METADATA index 31d4aba4..342ee647 100644 --- a/chrome/services/speech/DIR_METADATA +++ b/chrome/services/speech/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Media" +monorail: { + component: "Internals>Media" }
diff --git a/chrome/services/speech/OWNERS b/chrome/services/speech/OWNERS index f3461861..13f8ab5 100644 --- a/chrome/services/speech/OWNERS +++ b/chrome/services/speech/OWNERS
@@ -1,2 +1,2 @@ evliu@google.com -beccahughes@chromium.org +mlamouri@chromium.org
diff --git a/chrome/services/util_win/DIR_METADATA b/chrome/services/util_win/DIR_METADATA index 0dd97e4..b11dac6 100644 --- a/chrome/services/util_win/DIR_METADATA +++ b/chrome/services/util_win/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Services>ServiceManager" +monorail: { + component: "Internals>Services>ServiceManager" }
diff --git a/chrome/services/wilco_dtc_supportd/DIR_METADATA b/chrome/services/wilco_dtc_supportd/DIR_METADATA index 4c21d96..f37723a 100644 --- a/chrome/services/wilco_dtc_supportd/DIR_METADATA +++ b/chrome/services/wilco_dtc_supportd/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise" +monorail: { + component: "Enterprise" }
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index b466ee1..3d87d7cf 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -353,8 +353,8 @@ if (is_chromeos_ash) { sources += [ - "../browser/chromeos/accessibility/speech_monitor.cc", - "../browser/chromeos/accessibility/speech_monitor.h", + "../browser/ash/accessibility/speech_monitor.cc", + "../browser/ash/accessibility/speech_monitor.h", "../browser/chromeos/arc/tracing/arc_app_performance_tracing_test_helper.cc", "../browser/chromeos/arc/tracing/arc_app_performance_tracing_test_helper.h", "../browser/chromeos/file_manager/file_manager_test_util.cc", @@ -1338,7 +1338,7 @@ "../browser/site_isolation/chrome_site_per_process_browsertest.cc", "../browser/site_isolation/chrome_site_per_process_test.cc", "../browser/site_isolation/chrome_site_per_process_test.h", - "../browser/site_isolation/origin_isolation_browsertest.cc", + "../browser/site_isolation/origin_agent_cluster_browsertest.cc", "../browser/site_isolation/site_details_browsertest.cc", "../browser/spellchecker/spellcheck_service_browsertest.cc", "../browser/ssl/certificate_reporting_test_utils.cc", @@ -2405,18 +2405,18 @@ sources += [ "../browser/apps/platform_apps/app_window_interactive_uitest_base.cc", "../browser/apps/platform_apps/app_window_interactive_uitest_base.h", - "../browser/chromeos/accessibility/accessibility_common_browsertest.cc", - "../browser/chromeos/accessibility/accessibility_manager_browsertest.cc", - "../browser/chromeos/accessibility/dictation_chromeos_browsertest.cc", - "../browser/chromeos/accessibility/magnification_controller_browsertest.cc", - "../browser/chromeos/accessibility/magnification_manager_browsertest.cc", - "../browser/chromeos/accessibility/select_to_speak_browsertest.cc", - "../browser/chromeos/accessibility/spoken_feedback_app_list_browsertest.cc", - "../browser/chromeos/accessibility/spoken_feedback_browsertest.cc", - "../browser/chromeos/accessibility/spoken_feedback_browsertest.h", - "../browser/chromeos/accessibility/sticky_keys_browsertest.cc", - "../browser/chromeos/accessibility/switch_access_browsertest.cc", - "../browser/chromeos/accessibility/touch_exploration_controller_browsertest.cc", + "../browser/ash/accessibility/accessibility_common_browsertest.cc", + "../browser/ash/accessibility/accessibility_manager_browsertest.cc", + "../browser/ash/accessibility/dictation_chromeos_browsertest.cc", + "../browser/ash/accessibility/magnification_controller_browsertest.cc", + "../browser/ash/accessibility/magnification_manager_browsertest.cc", + "../browser/ash/accessibility/select_to_speak_browsertest.cc", + "../browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc", + "../browser/ash/accessibility/spoken_feedback_browsertest.cc", + "../browser/ash/accessibility/spoken_feedback_browsertest.h", + "../browser/ash/accessibility/sticky_keys_browsertest.cc", + "../browser/ash/accessibility/switch_access_browsertest.cc", + "../browser/ash/accessibility/touch_exploration_controller_browsertest.cc", "../browser/chromeos/account_manager/account_manager_policy_controller_browsertest.cc", "../browser/chromeos/app_mode/arc/arc_kiosk_app_manager_browsertest.cc", "../browser/chromeos/app_mode/kiosk_app_manager_browsertest.cc", @@ -4045,8 +4045,7 @@ "../browser/browsing_data/access_context_audit_service_unittest.cc", "../browser/browsing_data/chrome_browsing_data_lifetime_manager_unittest.cc", "../browser/component_updater/soda_component_installer_unittest.cc", - "../browser/component_updater/soda_en_us_component_installer_unittest.cc", - "../browser/component_updater/soda_ja_jp_component_installer_unittest.cc", + "../browser/component_updater/soda_language_pack_component_installer_unittest.cc", "../browser/content_settings/generated_cookie_prefs_unittest.cc", "../browser/content_settings/generated_notification_pref_unittest.cc", "../browser/device_identity/device_oauth2_token_service_unittest.cc", @@ -5866,6 +5865,7 @@ sources += [ "../browser/sessions/session_restore_observer_unittest.cc", "../browser/sessions/session_restore_stats_collector_unittest.cc", + "../browser/sessions/session_service_log_unittest.cc", "../browser/sessions/session_service_unittest.cc", "../browser/sessions/tab_loader_unittest.cc", ] @@ -6403,7 +6403,7 @@ # test against live sites, as a way to catch potential regressions. test("accessibility_live_site_tests") { sources = [ - "../browser/chromeos/accessibility/accessibility_live_site_browsertest.cc", + "../browser/ash/accessibility/accessibility_live_site_browsertest.cc", "base/interactive_test_utils.cc", "base/interactive_test_utils.h", "base/interactive_test_utils_aura.cc",
diff --git a/chrome/test/base/testing_profile_manager.cc b/chrome/test/base/testing_profile_manager.cc index 24c43de..3efbb72 100644 --- a/chrome/test/base/testing_profile_manager.cc +++ b/chrome/test/base/testing_profile_manager.cc
@@ -88,6 +88,7 @@ base::FilePath profile_path(profiles_path_); #if BUILDFLAG(IS_CHROMEOS_ASH) if (profile_name != chrome::kInitialProfile && + profile_name != chrome::kLockScreenProfile && profile_name != chromeos::ProfileHelper::GetLockScreenAppProfileName()) { profile_path = profile_path.Append(chromeos::ProfileHelper::Get()->GetUserProfileDir(
diff --git a/chrome/test/data/media/engagement/OWNERS b/chrome/test/data/media/engagement/OWNERS index bc09da7..2d28246 100644 --- a/chrome/test/data/media/engagement/OWNERS +++ b/chrome/test/data/media/engagement/OWNERS
@@ -1,2 +1 @@ mlamouri@chromium.org -beccahughes@chromium.org
diff --git a/chrome/test/data/webui/chromeos/scanning/color_mode_select_test.js b/chrome/test/data/webui/chromeos/scanning/color_mode_select_test.js index e7e1bb6..f0b6bdad 100644 --- a/chrome/test/data/webui/chromeos/scanning/color_mode_select_test.js +++ b/chrome/test/data/webui/chromeos/scanning/color_mode_select_test.js
@@ -9,7 +9,7 @@ import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js'; -import {assertOrderedAlphabetically} from './scanning_app_test_utils.js'; +import {assertOrderedAlphabetically, changeSelect} from './scanning_app_test_utils.js'; const ColorMode = { BLACK_AND_WHITE: chromeos.scanning.mojom.ColorMode.kBlackAndWhite, @@ -81,4 +81,31 @@ ColorMode.BLACK_AND_WHITE.toString(), colorModeSelect.selectedColorMode); }); + + // Verify the correct default option is selected when a scanner is selected + // and the options change. + test('selectDefaultWhenOptionsChange', () => { + const select = + /** @type {!HTMLSelectElement} */ (colorModeSelect.$$('select')); + colorModeSelect.colorModes = + [ColorMode.GRAYSCALE, ColorMode.BLACK_AND_WHITE, ColorMode.COLOR]; + flush(); + return changeSelect(select, /* value */ null, /* selectedIndex */ 0) + .then(() => { + assertEquals( + ColorMode.BLACK_AND_WHITE.toString(), + colorModeSelect.selectedColorMode); + assertEquals( + ColorMode.BLACK_AND_WHITE.toString(), + select.options[select.selectedIndex].value); + + colorModeSelect.colorModes = [ColorMode.GRAYSCALE, ColorMode.COLOR]; + flush(); + assertEquals( + ColorMode.COLOR.toString(), colorModeSelect.selectedColorMode); + assertEquals( + ColorMode.COLOR.toString(), + select.options[select.selectedIndex].value); + }); + }); }
diff --git a/chrome/test/data/webui/chromeos/scanning/page_size_select_test.js b/chrome/test/data/webui/chromeos/scanning/page_size_select_test.js index d1a7fc3e..9299674 100644 --- a/chrome/test/data/webui/chromeos/scanning/page_size_select_test.js +++ b/chrome/test/data/webui/chromeos/scanning/page_size_select_test.js
@@ -89,4 +89,28 @@ // default when Letter is not an available option. assertEquals(PageSize.A4.toString(), pageSizeSelect.selectedPageSize); }); + + // Verify the correct default option is selected when a scanner is selected + // and the options change. + test('selectDefaultWhenOptionsChange', () => { + const select = + /** @type {!HTMLSelectElement} */ (pageSizeSelect.$$('select')); + pageSizeSelect.pageSizes = [PageSize.Letter, PageSize.Max, PageSize.A4]; + flush(); + return changeSelect(select, /* value */ null, /* selectedIndex */ 0) + .then(() => { + assertEquals(PageSize.A4.toString(), pageSizeSelect.selectedPageSize); + assertEquals( + PageSize.A4.toString(), + select.options[select.selectedIndex].value); + + pageSizeSelect.pageSizes = [PageSize.Letter, PageSize.Max]; + flush(); + assertEquals( + PageSize.Letter.toString(), pageSizeSelect.selectedPageSize); + assertEquals( + PageSize.Letter.toString(), + select.options[select.selectedIndex].value); + }); + }); }
diff --git a/chrome/test/data/webui/chromeos/scanning/resolution_select_test.js b/chrome/test/data/webui/chromeos/scanning/resolution_select_test.js index f80af6f..1568925 100644 --- a/chrome/test/data/webui/chromeos/scanning/resolution_select_test.js +++ b/chrome/test/data/webui/chromeos/scanning/resolution_select_test.js
@@ -81,4 +81,23 @@ // default when 300 is not an available option. assertEquals('1200', resolutionSelect.selectedResolution); }); + + // Verify the correct default option is selected when a scanner is selected + // and the options change. + test('selectDefaultWhenOptionsChange', () => { + const select = + /** @type {!HTMLSelectElement} */ (resolutionSelect.$$('select')); + resolutionSelect.resolutions = [600, 300, 150]; + flush(); + return changeSelect(select, /* value */ null, /* selectedIndex */ 0) + .then(() => { + assertEquals('600', resolutionSelect.selectedResolution); + assertEquals('600', select.options[select.selectedIndex].value); + + resolutionSelect.resolutions = [300, 150]; + flush(); + assertEquals('300', resolutionSelect.selectedResolution); + assertEquals('300', select.options[select.selectedIndex].value); + }); + }); }
diff --git a/chrome/test/data/webui/chromeos/scanning/scanning_app_test_utils.js b/chrome/test/data/webui/chromeos/scanning/scanning_app_test_utils.js index 89ec5c88..5edc831 100644 --- a/chrome/test/data/webui/chromeos/scanning/scanning_app_test_utils.js +++ b/chrome/test/data/webui/chromeos/scanning/scanning_app_test_utils.js
@@ -64,10 +64,12 @@ export function changeSelect(select, value, selectedIndex) { if (value) { select.value = value; - } - if (selectedIndex) { + } else if (selectedIndex !== null) { select.selectedIndex = selectedIndex; + } else { + return Promise.reject(); } + select.dispatchEvent(new CustomEvent('change')); return flushTasks(); }
diff --git a/chrome/test/data/webui/cr_components/chromeos/cellular_setup/button_bar_test.js b/chrome/test/data/webui/cr_components/chromeos/cellular_setup/button_bar_test.js index b1bc696..31813b8 100644 --- a/chrome/test/data/webui/cr_components/chromeos/cellular_setup/button_bar_test.js +++ b/chrome/test/data/webui/cr_components/chromeos/cellular_setup/button_bar_test.js
@@ -8,7 +8,7 @@ // #import {flush, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; // #import {ButtonState, Button, ButtonBarState, CellularSetupPageName} from 'chrome://resources/cr_components/chromeos/cellular_setup/cellular_types.m.js'; -// #import {assertFalse, assertTrue} from '../../../chai_assert.js'; +// #import {assertEquals, assertFalse, assertTrue} from '../../../chai_assert.js'; // clang-format on suite('CellularSetupButtonBarTest', function() { @@ -33,8 +33,6 @@ cancel: state, forward: state, tryAgain: state, - done: state, - skipDiscovery: state, }; Polymer.dom.flush(); } @@ -69,8 +67,6 @@ assertTrue(isButtonShownAndEnabled(buttonBar.$$('#cancel'))); assertTrue(isButtonShownAndEnabled(buttonBar.$$('#tryAgain'))); assertTrue(isButtonShownAndEnabled(buttonBar.$$('#forward'))); - assertTrue(isButtonShownAndEnabled(buttonBar.$$('#done'))); - assertTrue(isButtonShownAndEnabled(buttonBar.$$('#skipDiscovery'))); }); test('individual buttons appear but are diabled', function() { @@ -79,8 +75,6 @@ assertTrue(isButtonShownAndDisabled(buttonBar.$$('#cancel'))); assertTrue(isButtonShownAndDisabled(buttonBar.$$('#tryAgain'))); assertTrue(isButtonShownAndDisabled(buttonBar.$$('#forward'))); - assertTrue(isButtonShownAndDisabled(buttonBar.$$('#done'))); - assertTrue(isButtonShownAndDisabled(buttonBar.$$('#skipDiscovery'))); }); test('individual buttons are hidden', function() { @@ -89,7 +83,39 @@ assertTrue(isButtonHidden(buttonBar.$$('#cancel'))); assertTrue(isButtonHidden(buttonBar.$$('#tryAgain'))); assertTrue(isButtonHidden(buttonBar.$$('#forward'))); - assertTrue(isButtonHidden(buttonBar.$$('#done'))); - assertTrue(isButtonHidden(buttonBar.$$('#skipDiscovery'))); }); + + test('default focus is on last button if all are enabled', function() { + setStateForAllButtons(cellularSetup.ButtonState.ENABLED); + + Polymer.dom.flush(); + + assertEquals(buttonBar.shadowRoot.activeElement, buttonBar.$$('#forward')); + }); + + test('default focus is on first button if rest are hidden', function() { + buttonBar.buttonState = { + backward: cellularSetup.ButtonState.ENABLED, + }; + + Polymer.dom.flush(); + + assertEquals(buttonBar.shadowRoot.activeElement, buttonBar.$$('#backward')); + }); + + test( + 'default focus is on first button if rest are visible but disabled', + function() { + buttonBar.buttonState = { + backward: cellularSetup.ButtonState.ENABLED, + cancel: cellularSetup.ButtonState.DISABLED, + forward: cellularSetup.ButtonState.DISABLED, + tryAgain: cellularSetup.ButtonState.DISABLED, + }; + + Polymer.dom.flush(); + + assertEquals( + buttonBar.shadowRoot.activeElement, buttonBar.$$('#backward')); + }); });
diff --git a/chrome/test/data/webui/cr_components/chromeos/cellular_setup/esim_flow_ui_test.js b/chrome/test/data/webui/cr_components/chromeos/cellular_setup/esim_flow_ui_test.js index c138f14..aa52a81 100644 --- a/chrome/test/data/webui/cr_components/chromeos/cellular_setup/esim_flow_ui_test.js +++ b/chrome/test/data/webui/cr_components/chromeos/cellular_setup/esim_flow_ui_test.js
@@ -282,8 +282,7 @@ test('Skip discovery flow', async function() { // Simulate pressing 'Skip'. assertTrue( - eSimPage.buttonState.skipDiscovery === - cellularSetup.ButtonState.ENABLED); + eSimPage.buttonState.forward === cellularSetup.ButtonState.ENABLED); eSimPage.navigateForward(); Polymer.dom.flush(); @@ -313,7 +312,6 @@ // The 'Forward' button should now be enabled. assertTrue( eSimPage.buttonState.forward === cellularSetup.ButtonState.ENABLED); - assertFalse(!!eSimPage.buttonState.skipDiscovery); // Simulate pressing 'Forward'. eSimPage.navigateForward(); @@ -339,7 +337,6 @@ // The 'Forward' button should now be enabled. assertTrue( eSimPage.buttonState.forward === cellularSetup.ButtonState.ENABLED); - assertFalse(!!eSimPage.buttonState.skipDiscovery); // Simulate pressing 'Forward'. eSimPage.navigateForward();
diff --git a/chrome/test/data/webui/new_tab_page/app_test.js b/chrome/test/data/webui/new_tab_page/app_test.js index 780f0a1..95adbee 100644 --- a/chrome/test/data/webui/new_tab_page/app_test.js +++ b/chrome/test/data/webui/new_tab_page/app_test.js
@@ -537,8 +537,7 @@ // Assert. assertTrue($$(app, '#dismissModuleToast').open); assertEquals( - 'Removed Foo', - $$(app, '#dismissModuleToastMessage').textContent.trim()); + 'Foo', $$(app, '#dismissModuleToastMessage').textContent.trim()); assertNotStyle($$(app, '#undoDismissModuleButton'), 'display', 'none'); assertEquals( 'foo', await testProxy.handler.whenCalled('onDismissModule'));
diff --git a/chrome/test/data/webui/new_tab_page/modules/cart/module_test.js b/chrome/test/data/webui/new_tab_page/modules/cart/module_test.js index db8fa8d0..9dcbb51c 100644 --- a/chrome/test/data/webui/new_tab_page/modules/cart/module_test.js +++ b/chrome/test/data/webui/new_tab_page/modules/cart/module_test.js
@@ -6,7 +6,7 @@ import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {assertStyle} from 'chrome://test/new_tab_page/test_support.js'; import {TestBrowserProxy} from 'chrome://test/test_browser_proxy.m.js'; -import {eventToPromise} from 'chrome://test/test_util.m.js'; +import {eventToPromise, isVisible} from 'chrome://test/test_util.m.js'; suite('NewTabPageModulesChromeCartModuleTest', () => { /** @@ -77,16 +77,15 @@ moduleElement.$.cartItemRepeat.render(); // Assert. - const cartItems = - Array.from(moduleElement.shadowRoot.querySelectorAll('.cart-item')); + const cartItems = moduleElement.shadowRoot.querySelectorAll('.cart-item'); assertEquals(4, cartItems.length); assertEquals('https://amazon.com/', cartItems[0].href); assertEquals('Amazon', cartItems[0].querySelector('.merchant').innerText); let itemCount = cartItems[0].querySelector('.item-count').innerText; assertEquals('3', itemCount.slice(-1)); - let thumbnailList = Array.from( - cartItems[0].querySelector('.thumbnail-list').querySelectorAll('img')); + let thumbnailList = + cartItems[0].querySelector('.thumbnail-list').querySelectorAll('img'); assertEquals(3, thumbnailList.length); assertEquals('https://image1.com', thumbnailList[0].autoSrc); assertEquals('https://image2.com', thumbnailList[1].autoSrc); @@ -97,8 +96,8 @@ assertEquals('eBay', cartItems[1].querySelector('.merchant').innerText); itemCount = cartItems[1].querySelector('.item-count').innerText; assertEquals('2', itemCount.slice(-1)); - thumbnailList = Array.from( - cartItems[1].querySelector('.thumbnail-list').querySelectorAll('img')); + thumbnailList = + cartItems[1].querySelector('.thumbnail-list').querySelectorAll('img'); assertEquals(2, thumbnailList.length); assertEquals('https://image4.com', thumbnailList[0].autoSrc); assertEquals('https://image5.com', thumbnailList[1].autoSrc); @@ -116,8 +115,8 @@ assertEquals('Walmart', cartItems[3].querySelector('.merchant').innerText); itemCount = cartItems[3].querySelector('.item-count').innerText; assertEquals('4', itemCount.slice(-1)); - thumbnailList = Array.from( - cartItems[3].querySelector('.thumbnail-list').querySelectorAll('img')); + thumbnailList = + cartItems[3].querySelector('.thumbnail-list').querySelectorAll('img'); assertEquals(3, thumbnailList.length); assertEquals('https://image6.com', thumbnailList[0].autoSrc); assertEquals('https://image7.com', thumbnailList[1].autoSrc); @@ -146,8 +145,7 @@ moduleElement.$.cartItemRepeat.render(); // Assert. - const cartItems = - Array.from(moduleElement.shadowRoot.querySelectorAll('.cart-item')); + const cartItems = moduleElement.shadowRoot.querySelectorAll('.cart-item'); assertEquals(1, cartItems.length); const headerChip = moduleElement.shadowRoot.querySelector('ntp-module-header') @@ -178,24 +176,47 @@ moduleElement.$.cartItemRepeat.render(); // Act. - const waitForDismissEvent = eventToPromise('dismiss-module', moduleElement); - const dismissButton = - moduleElement.shadowRoot.querySelector('ntp-module-header') - .shadowRoot.querySelector('#dismissButton'); - dismissButton.click(); - const dismissEvent = await waitForDismissEvent; - const toastMessage = dismissEvent.detail.message; - const restoreCallback = dismissEvent.detail.restoreCallback; + let waitForDismissEvent = eventToPromise('dismiss-module', moduleElement); + const moduleActionMenu = $$(moduleElement, '#moduleActionMenu'); + assertFalse(moduleActionMenu.open); + $$(moduleElement, 'ntp-module-header') + .dispatchEvent(new CustomEvent('menu-button-click', {bubbles: true})); + assertTrue(moduleActionMenu.open); + moduleActionMenu.querySelector('#hideModuleButton').click(); + const hideEvent = await waitForDismissEvent; + const hideToastMessage = hideEvent.detail.message; + const hideRestoreCallback = hideEvent.detail.restoreCallback; // Assert. - assertEquals('Your carts', toastMessage); - assertEquals(1, testProxy.handler.getCallCount('dismissCartModule')); + assertEquals( + loadTimeData.getString('modulesCartModuleMenuHideToastMessage'), + hideToastMessage); + assertEquals(1, testProxy.handler.getCallCount('hideCartModule')); // Act. - restoreCallback(); + hideRestoreCallback(); // Assert. - assertEquals(1, testProxy.handler.getCallCount('restoreCartModule')); + assertEquals(1, testProxy.handler.getCallCount('restoreHiddenCartModule')); + + // Act. + waitForDismissEvent = eventToPromise('dismiss-module', moduleElement); + moduleActionMenu.querySelector('#removeModuleButton').click(); + const removeEvent = await waitForDismissEvent; + const removeToastMessage = removeEvent.detail.message; + const removeRestoreCallback = removeEvent.detail.restoreCallback; + + // Assert. + assertEquals( + loadTimeData.getString('modulesCartModuleMenuRemoveToastMessage'), + removeToastMessage); + assertEquals(1, testProxy.handler.getCallCount('removeCartModule')); + + // Act. + removeRestoreCallback(); + + // Assert. + assertEquals(1, testProxy.handler.getCallCount('restoreRemovedCartModule')); }); test('show and hide action menu', async () => { @@ -220,12 +241,11 @@ moduleElement.$.cartItemRepeat.render(); // Assert. - const cartItems = - Array.from(moduleElement.shadowRoot.querySelectorAll('.cart-item')); + const cartItems = moduleElement.shadowRoot.querySelectorAll('.cart-item'); assertEquals(1, cartItems.length); let menuButton = cartItems[0].querySelector('.icon-more-vert'); assertStyle(menuButton, 'opacity', '0'); - const actionMenu = $$(moduleElement, '#actionMenu'); + const actionMenu = $$(moduleElement, '#cartActionMenu'); assertFalse(actionMenu.open); // Act @@ -234,4 +254,275 @@ // Assert. assertTrue(actionMenu.open); }); + + test('scroll with full width module', async () => { + // Arrange. + const dummyMerchant = { + merchant: 'Dummy', + cartUrl: {url: 'https://dummy.com'}, + productImageUrls: [], + }; + const carts = []; + for (var i = 0; i < 10; i++) { + carts.push(dummyMerchant); + } + testProxy.handler.setResultFor( + 'getMerchantCarts', Promise.resolve({carts})); + + // Arrange. + await chromeCartDescriptor.initialize(); + const moduleElement = chromeCartDescriptor.element; + document.body.append(moduleElement); + moduleElement.$.cartItemRepeat.render(); + const cartCarousel = + moduleElement.shadowRoot.querySelector('#cartCarousel'); + moduleElement.scrollBehavior = 'auto'; + const onScroll = () => { + moduleElement.dispatchEvent(new Event('scroll-finish')); + }; + cartCarousel.addEventListener('scroll', onScroll, false); + + // Assert. + const cartItems = moduleElement.shadowRoot.querySelectorAll('.cart-item'); + assertEquals(10, cartItems.length); + + // Act. + let waitForLeftScrollVisibilityChange = + eventToPromise('left-scroll-hide', moduleElement); + let waitForRightScrollVisibilityChange = + eventToPromise('right-scroll-show', moduleElement); + moduleElement.style.width = '560px'; + await waitForLeftScrollVisibilityChange; + await waitForRightScrollVisibilityChange; + + // Assert. + checkScrollButtonVisibility(moduleElement, false, true); + checkVisibleRange(moduleElement, 0, 3); + + // Act. + waitForLeftScrollVisibilityChange = + eventToPromise('left-scroll-show', moduleElement); + let waitForScrollFinished = eventToPromise('scroll-finish', moduleElement); + moduleElement.shadowRoot.querySelector('#rightScrollButton').click(); + await waitForScrollFinished; + await waitForLeftScrollVisibilityChange; + + // Assert. + checkScrollButtonVisibility(moduleElement, true, true); + checkVisibleRange(moduleElement, 4, 7); + + // Act. + waitForRightScrollVisibilityChange = + eventToPromise('right-scroll-hide', moduleElement); + waitForScrollFinished = eventToPromise('scroll-finish', moduleElement); + moduleElement.shadowRoot.querySelector('#rightScrollButton').click(); + await waitForScrollFinished; + await waitForRightScrollVisibilityChange; + + // Assert. + checkScrollButtonVisibility(moduleElement, true, false); + checkVisibleRange(moduleElement, 6, 9); + + // Act. + waitForRightScrollVisibilityChange = + eventToPromise('right-scroll-show', moduleElement); + waitForScrollFinished = eventToPromise('scroll-finish', moduleElement); + moduleElement.shadowRoot.querySelector('#leftScrollButton').click(); + await waitForScrollFinished; + await waitForRightScrollVisibilityChange; + + // Assert. + checkScrollButtonVisibility(moduleElement, true, true); + checkVisibleRange(moduleElement, 2, 5); + + // Act. + waitForLeftScrollVisibilityChange = + eventToPromise('left-scroll-hide', moduleElement); + waitForScrollFinished = eventToPromise('scroll-finish', moduleElement); + moduleElement.shadowRoot.querySelector('#leftScrollButton').click(); + await waitForScrollFinished; + await waitForLeftScrollVisibilityChange; + + // Assert. + checkScrollButtonVisibility(moduleElement, false, true); + checkVisibleRange(moduleElement, 0, 3); + + // Remove the observer. + cartCarousel.removeEventListener('scroll', onScroll); + }); + + test('scroll with cutted width module', async () => { + // Arrange. + const dummyMerchant = { + merchant: 'Dummy', + cartUrl: {url: 'https://dummy.com'}, + productImageUrls: [], + }; + const carts = []; + for (var i = 0; i < 10; i++) { + carts.push(dummyMerchant); + } + testProxy.handler.setResultFor( + 'getMerchantCarts', Promise.resolve({carts})); + + // Arrange. + await chromeCartDescriptor.initialize(); + const moduleElement = chromeCartDescriptor.element; + document.body.append(moduleElement); + moduleElement.$.cartItemRepeat.render(); + const cartCarousel = + moduleElement.shadowRoot.querySelector('#cartCarousel'); + moduleElement.scrollBehavior = 'auto'; + const onScroll = () => { + moduleElement.dispatchEvent(new Event('scroll-finish')); + }; + cartCarousel.addEventListener('scroll', onScroll, false); + + // Assert. + const cartItems = moduleElement.shadowRoot.querySelectorAll('.cart-item'); + assertEquals(10, cartItems.length); + + // Act. + let waitForLeftScrollVisibilityChange = + eventToPromise('left-scroll-hide', moduleElement); + let waitForRightScrollVisibilityChange = + eventToPromise('right-scroll-show', moduleElement); + moduleElement.style.width = '480px'; + await waitForLeftScrollVisibilityChange; + await waitForRightScrollVisibilityChange; + + // Assert. + checkScrollButtonVisibility(moduleElement, false, true); + checkVisibleRange(moduleElement, 0, 2); + + // Act. + waitForLeftScrollVisibilityChange = + eventToPromise('left-scroll-show', moduleElement); + let waitForScrollFinished = eventToPromise('scroll-finish', moduleElement); + moduleElement.shadowRoot.querySelector('#rightScrollButton').click(); + await waitForLeftScrollVisibilityChange; + await waitForScrollFinished; + + // Assert. + checkScrollButtonVisibility(moduleElement, true, true); + checkVisibleRange(moduleElement, 3, 5); + + // Act. + moduleElement.style.width = '220px'; + + // Assert. + checkScrollButtonVisibility(moduleElement, true, true); + checkVisibleRange(moduleElement, 3, 3); + + // Act. + waitForScrollFinished = eventToPromise('scroll-finish', moduleElement); + moduleElement.shadowRoot.querySelector('#rightScrollButton').click(); + await waitForScrollFinished; + + // Assert. + checkScrollButtonVisibility(moduleElement, true, true); + checkVisibleRange(moduleElement, 4, 4); + + // Remove the observer. + cartCarousel.removeEventListener('scroll', onScroll); + }); + + test('scroll button visibility changes with module width', async () => { + // Arrange. + const dummyMerchant = { + merchant: 'Dummy', + cartUrl: {url: 'https://dummy.com'}, + productImageUrls: [], + }; + const carts = []; + for (var i = 0; i < 4; i++) { + carts.push(dummyMerchant); + } + testProxy.handler.setResultFor( + 'getMerchantCarts', Promise.resolve({carts})); + + // Arrange. + await chromeCartDescriptor.initialize(); + const moduleElement = chromeCartDescriptor.element; + document.body.append(moduleElement); + moduleElement.$.cartItemRepeat.render(); + + // Assert. + const cartItems = moduleElement.shadowRoot.querySelectorAll('.cart-item'); + assertEquals(4, cartItems.length); + + // Act. + let waitForLeftScrollVisibilityChange = + eventToPromise('left-scroll-hide', moduleElement); + let waitForRightScrollVisibilityChange = + eventToPromise('right-scroll-hide', moduleElement); + moduleElement.style.width = '560px'; + await waitForLeftScrollVisibilityChange; + await waitForRightScrollVisibilityChange; + + // Assert. + checkScrollButtonVisibility(moduleElement, false, false); + checkVisibleRange(moduleElement, 0, 3); + + // Act. + waitForRightScrollVisibilityChange = + eventToPromise('right-scroll-show', moduleElement); + moduleElement.style.width = '480px'; + await waitForRightScrollVisibilityChange; + + // Assert. + checkScrollButtonVisibility(moduleElement, false, true); + checkVisibleRange(moduleElement, 0, 2); + + // Act. + waitForRightScrollVisibilityChange = + eventToPromise('right-scroll-hide', moduleElement); + moduleElement.style.width = '560px'; + await waitForRightScrollVisibilityChange; + + // Assert. + checkScrollButtonVisibility(moduleElement, false, false); + checkVisibleRange(moduleElement, 0, 3); + }); + + function checkScrollButtonVisibility( + moduleElement, isLeftVisible, isRightVisible) { + assertEquals( + isLeftVisible, + isVisible(moduleElement.shadowRoot.querySelector('#leftScrollShadow'))); + assertEquals( + isLeftVisible, + isVisible(moduleElement.shadowRoot.querySelector('#leftScrollButton'))); + assertEquals( + isRightVisible, + isVisible( + moduleElement.shadowRoot.querySelector('#rightScrollShadow'))); + assertEquals( + isRightVisible, + isVisible( + moduleElement.shadowRoot.querySelector('#rightScrollButton'))); + } + + function checkVisibleRange(moduleElement, startIndex, endIndex) { + const carts = moduleElement.shadowRoot.querySelector('#cartCarousel') + .querySelectorAll('.cart-item'); + assertTrue(startIndex >= 0); + assertTrue(endIndex < carts.length); + for (let i = 0; i < carts.length; i++) { + if (i >= startIndex && i <= endIndex) { + assertTrue(getVisibilityForIndex(moduleElement, i)); + } else { + assertFalse(getVisibilityForIndex(moduleElement, i)); + } + } + } + + function getVisibilityForIndex(moduleElement, index) { + const cartCarousel = + moduleElement.shadowRoot.querySelector('#cartCarousel'); + const cart = cartCarousel.querySelectorAll('.cart-item')[index]; + return (cart.offsetLeft > cartCarousel.scrollLeft) && + (cartCarousel.scrollLeft + cartCarousel.clientWidth) > + (cart.offsetLeft + cart.offsetWidth); + } });
diff --git a/chrome/test/data/webui/new_tab_page/modules/task_module/module_test.js b/chrome/test/data/webui/new_tab_page/modules/task_module/module_test.js index 3d7782a..938bf74 100644 --- a/chrome/test/data/webui/new_tab_page/modules/task_module/module_test.js +++ b/chrome/test/data/webui/new_tab_page/modules/task_module/module_test.js
@@ -197,7 +197,7 @@ const restoreCallback = dismissEvent.detail.restoreCallback; // Assert. - assertEquals('Hello world', toastMessage); + assertEquals('Removed Hello world', toastMessage); assertDeepEquals( [taskModule.mojom.TaskModuleType.kShopping, 'Hello world'], await testProxy.handler.whenCalled('dismissTask'));
diff --git a/chrome/test/data/webui/settings/BUILD.gn b/chrome/test/data/webui/settings/BUILD.gn index 815f1831..b7760566f 100644 --- a/chrome/test/data/webui/settings/BUILD.gn +++ b/chrome/test/data/webui/settings/BUILD.gn
@@ -115,6 +115,7 @@ #":idle_load_tests", #":import_data_dialog_test", #":incompatible_applications_page_test", + ":languages_page_metrics_test_browser", ":languages_page_metrics_test_cros", #":languages_page_tests", @@ -313,6 +314,19 @@ externs_list = [ "$externs_path/mocha-2.5.js" ] } +js_library("languages_page_metrics_test_browser") { + deps = [ + ":fake_language_settings_private.m", + ":fake_settings_private.m", + ":test_languages_browser_proxy.m", + "..:chai_assert", + "..:test_util.m", + "//chrome/browser/resources/settings:lazy_load", + "//chrome/browser/resources/settings:settings", + ] + externs_list = [ "$externs_path/mocha-2.5.js" ] +} + js_library("passwords_and_autofill_fake_data") { deps = [ "..:chai_assert",
diff --git a/chrome/test/data/webui/settings/cr_settings_v3_browsertest.js b/chrome/test/data/webui/settings/cr_settings_v3_browsertest.js index 68dd57f..e61515ba 100644 --- a/chrome/test/data/webui/settings/cr_settings_v3_browsertest.js +++ b/chrome/test/data/webui/settings/cr_settings_v3_browsertest.js
@@ -103,6 +103,21 @@ GEN('#endif'); // eslint-disable-next-line no-var +var CrSettingsLanguagesPageMetricsV3Test = + class extends CrSettingsV3BrowserTest { + /** @override */ + get browsePreload() { + return 'chrome://settings/test_loader.html?module=settings/languages_page_metrics_test_browser.js'; + } +}; + +TEST_F( + 'CrSettingsLanguagesPageMetricsV3Test', 'LanguagesPageMetricsBrowser', + function() { + runMochaSuite('LanguagesPageMetricsBrowser'); + }); + +// eslint-disable-next-line no-var var CrSettingsClearBrowsingDataV3Test = class extends CrSettingsV3BrowserTest { /** @override */ get browsePreload() {
diff --git a/chrome/test/data/webui/settings/languages_page_metrics_test_browser.js b/chrome/test/data/webui/settings/languages_page_metrics_test_browser.js new file mode 100644 index 0000000..5b31b11d --- /dev/null +++ b/chrome/test/data/webui/settings/languages_page_metrics_test_browser.js
@@ -0,0 +1,177 @@ +// 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 {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; +import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {LanguagesBrowserProxyImpl, LanguageSettingsActionType, LanguageSettingsMetricsProxy, LanguageSettingsMetricsProxyImpl} from 'chrome://settings/lazy_load.js'; +import {CrSettingsPrefs} from 'chrome://settings/settings.js'; + +import {assertEquals, assertFalse, assertTrue} from '../chai_assert.js'; +import {TestBrowserProxy} from '../test_browser_proxy.m.js'; +import {fakeDataBind} from '../test_util.m.js'; + +import {getFakeLanguagePrefs} from './fake_language_settings_private.m.js'; +import {FakeSettingsPrivate} from './fake_settings_private.m.js'; +import {TestLanguagesBrowserProxy} from './test_languages_browser_proxy.m.js'; + +/** + * A test version of LanguageSettingsMetricsProxy. + * + * @implements {LanguageSettingsMetricsProxy} + * + */ +class TestLanguageSettingsMetricsProxy extends TestBrowserProxy { + constructor() { + super([ + 'recordSettingsMetric', + ]); + } + + /** @override */ + recordSettingsMetric(interaction) { + this.methodCalled('recordSettingsMetric', interaction); + } +} + +suite('LanguagesPageMetricsBrowser', function() { + /** @type {!LanguageHelper} */ + let languageHelper; + /** @type {!SettingsLanguagesPageElement} */ + let languagesPage; + /** @type {!TestLanguagesBrowserProxy} */ + let browserProxy; + /** @type {!TestLanguageSettingsMetricsProxy} */ + let languageSettingsMetricsProxy; + + suiteSetup(function() { + loadTimeData.overrideValues({ + isChromeOSLanguagesSettingsUpdate: false, + }); + CrSettingsPrefs.deferInitialization = true; + }); + + setup(function() { + document.body.innerHTML = ''; + const settingsPrefs = document.createElement('settings-prefs'); + const settingsPrivate = new FakeSettingsPrivate(getFakeLanguagePrefs()); + settingsPrefs.initialize(settingsPrivate); + document.body.appendChild(settingsPrefs); + return CrSettingsPrefs.initialized.then(function() { + // Sets up test browser proxy. + browserProxy = new TestLanguagesBrowserProxy(); + LanguagesBrowserProxyImpl.instance_ = browserProxy; + + // Sets up test browser proxy. + languageSettingsMetricsProxy = new TestLanguageSettingsMetricsProxy(); + LanguageSettingsMetricsProxyImpl.instance_ = languageSettingsMetricsProxy; + + // Sets up fake languageSettingsPrivate API. + const languageSettingsPrivate = browserProxy.getLanguageSettingsPrivate(); + languageSettingsPrivate.setSettingsPrefs(settingsPrefs); + + languagesPage = /** @type {!SettingsLanguagesPageElement} */ ( + document.createElement('settings-languages-page')); + + // Prefs would normally be data-bound to settings-languages-page. + languagesPage.prefs = settingsPrefs.prefs; + fakeDataBind(settingsPrefs, languagesPage, 'prefs'); + + document.body.appendChild(languagesPage); + languageHelper = languagesPage.languageHelper; + return languageHelper.whenReady(); + }); + }); + + test('records when adding languages', async () => { + languagesPage.$$('#addLanguages').click(); + flush(); + + assertEquals( + LanguageSettingsActionType.CLICK_ON_ADD_LANGUAGE, + await languageSettingsMetricsProxy.whenCalled('recordSettingsMetric')); + }); + + test('records when disabling translate.enable toggle', async () => { + languagesPage.setPrefValue('translate.enabled', true); + languagesPage.$$('#offerTranslateOtherLanguages').click(); + flush(); + + assertEquals( + LanguageSettingsActionType.DISABLE_TRANSLATE_GLOBALLY, + await languageSettingsMetricsProxy.whenCalled('recordSettingsMetric')); + }); + + test('records when enabling translate.enable toggle', async () => { + languagesPage.setPrefValue('translate.enabled', false); + languagesPage.$$('#offerTranslateOtherLanguages').click(); + flush(); + + assertEquals( + LanguageSettingsActionType.ENABLE_TRANSLATE_GLOBALLY, + await languageSettingsMetricsProxy.whenCalled('recordSettingsMetric')); + }); + + test('records when ticking translate checkbox', async () => { + const languagesCollapse = languagesPage.$$('#languagesCollapse'); + languagesCollapse.opened = true; + + const menuButtons = languagesCollapse.querySelectorAll( + '.list-item cr-icon-button.icon-more-vert'); + + // Chooses the second language to change translate checkbox + // as first language is the language used for translation. + menuButtons[1].click(); + const actionMenu = languagesPage.$$('#menu').get(); + assertTrue(actionMenu.open); + const menuItems = actionMenu.querySelectorAll('.dropdown-item'); + for (const item of menuItems) { + if (item.id === 'offerTranslations') { + const checkedValue = item.checked; + item.click(); + assertEquals( + LanguageSettingsActionType.DISABLE_TRANSLATE_FOR_SINGLE_LANGUAGE + + item.checked, + await languageSettingsMetricsProxy.whenCalled( + 'recordSettingsMetric')); + return; + } + } + }); + + test('records on language list reorder', async () => { + // Add several languages. + for (const language of ['en-CA', 'en-US', 'tk', 'no']) { + languageHelper.enableLanguage(language); + } + + flush(); + const languagesCollapse = languagesPage.$$('#languagesCollapse'); + languagesCollapse.opened = true; + + const menuButtons = languagesCollapse.querySelectorAll( + '.list-item cr-icon-button.icon-more-vert'); + + menuButtons[1].click(); + const actionMenu = languagesPage.$$('#menu').get(); + assertTrue(actionMenu.open); + + function getMenuItem(i18nKey) { + const i18nString = loadTimeData.getString(i18nKey); + assertTrue(!!i18nString); + const menuItems = actionMenu.querySelectorAll('.dropdown-item'); + const menuItem = Array.from(menuItems).find( + item => item.textContent.trim() === i18nString); + assertTrue(!!menuItem, 'Menu item "' + i18nKey + '" not found'); + return menuItem; + } + let moveButton = getMenuItem('moveUp'); + moveButton.click(); + moveButton = getMenuItem('moveDown'); + moveButton.click(); + moveButton = getMenuItem('moveToTop'); + moveButton.click(); + assertEquals( + 3, languageSettingsMetricsProxy.getCallCount('recordSettingsMetric')); + }); +}); \ No newline at end of file
diff --git a/chrome/test/data/webui/settings/security_keys_subpage_test.js b/chrome/test/data/webui/settings/security_keys_subpage_test.js index fc68cfa..9587156 100644 --- a/chrome/test/data/webui/settings/security_keys_subpage_test.js +++ b/chrome/test/data/webui/settings/security_keys_subpage_test.js
@@ -4,6 +4,7 @@ // clang-format off import {webUIListenerCallback} from 'chrome://resources/js/cr.m.js'; +import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {PromiseResolver} from 'chrome://resources/js/promise_resolver.m.js'; import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {BioEnrollDialogPage, CredentialManagementDialogPage, Ctap2Status, ResetDialogPage, SampleStatus, SecurityKeysBioEnrollProxyImpl, SecurityKeysCredentialBrowserProxyImpl, SecurityKeysPINBrowserProxyImpl,SecurityKeysResetBrowserProxyImpl, SetPINDialogPage} from 'chrome://settings/lazy_load.js'; @@ -550,6 +551,14 @@ assertFalse(dialog.$.newPIN.invalid); assertFalse(dialog.$.confirmPIN.invalid); + setChangePINEntries(validNewPIN, validNewPIN, validNewPIN); + assertFalse(dialog.$.currentPIN.invalid); + assertTrue(dialog.$.newPIN.invalid); + assertEquals( + dialog.$.newPIN.errorMessage, + loadTimeData.getString('securityKeysSamePINAsCurrent')); + assertFalse(dialog.$.confirmPIN.invalid); + let setPINResolver = new PromiseResolver(); browserProxy.setResponseFor('setPIN', setPINResolver.promise); setPINEntry(dialog.$.currentPIN, validCurrentPIN);
diff --git a/chrome/test/payments/payment_request_platform_browsertest_base.cc b/chrome/test/payments/payment_request_platform_browsertest_base.cc index cf9d415..154c4286 100644 --- a/chrome/test/payments/payment_request_platform_browsertest_base.cc +++ b/chrome/test/payments/payment_request_platform_browsertest_base.cc
@@ -148,6 +148,11 @@ event_waiter_->OnEvent(TestEvent::kMinimalUIReady); } +void PaymentRequestPlatformBrowserTestBase::OnUIDisplayed() { + if (event_waiter_) + event_waiter_->OnEvent(TestEvent::kUIDisplayed); +} + void PaymentRequestPlatformBrowserTestBase::ResetEventWaiterForSingleEvent( TestEvent event) { event_waiter_ = std::make_unique<EventWaiter>(
diff --git a/chrome/test/payments/payment_request_platform_browsertest_base.h b/chrome/test/payments/payment_request_platform_browsertest_base.h index 1bf75dc1..18e33cb 100644 --- a/chrome/test/payments/payment_request_platform_browsertest_base.h +++ b/chrome/test/payments/payment_request_platform_browsertest_base.h
@@ -85,6 +85,7 @@ void OnAppListReady() override; void OnCompleteCalled() override; void OnMinimalUIReady() override; + void OnUIDisplayed() override; // Resets the event waiter for a given |event| or |event_sequence|. void ResetEventWaiterForSingleEvent(TestEvent event);
diff --git a/chrome/test/payments/payment_request_test_controller.h b/chrome/test/payments/payment_request_test_controller.h index a09cd82e..6888b926 100644 --- a/chrome/test/payments/payment_request_test_controller.h +++ b/chrome/test/payments/payment_request_test_controller.h
@@ -46,6 +46,7 @@ virtual void OnAbortCalled() {} virtual void OnCompleteCalled() {} virtual void OnMinimalUIReady() {} + virtual void OnUIDisplayed() {} protected: virtual ~PaymentRequestTestObserver() = default; @@ -127,6 +128,7 @@ void OnAbortCalled(); void OnCompleteCalled(); void OnMinimalUIReady(); + void OnUIDisplayed(); PaymentRequestTestObserver* observer_ = nullptr;
diff --git a/chrome/test/payments/payment_request_test_controller_desktop.cc b/chrome/test/payments/payment_request_test_controller_desktop.cc index 6af280a..d69cc61 100644 --- a/chrome/test/payments/payment_request_test_controller_desktop.cc +++ b/chrome/test/payments/payment_request_test_controller_desktop.cc
@@ -15,6 +15,7 @@ #include "components/payments/content/android_app_communication.h" #include "components/payments/content/payment_request.h" #include "components/payments/content/payment_request_web_contents_manager.h" +#include "components/payments/content/payment_ui_observer.h" #include "components/payments/core/payment_prefs.h" #include "components/payments/core/payment_request_delegate.h" #include "components/sync_preferences/testing_pref_service_syncable.h" @@ -56,7 +57,8 @@ bool valid_ssl, PrefService* prefs, const std::string& twa_package_name, - bool has_authenticator) + bool has_authenticator, + PaymentUIObserver* ui_observer_for_test) : ChromePaymentRequestDelegate(render_frame_host), frame_routing_id_(content::GlobalFrameRoutingId( render_frame_host->GetProcess()->GetID(), @@ -65,7 +67,8 @@ valid_ssl_(valid_ssl), prefs_(prefs), twa_package_name_(twa_package_name), - has_authenticator_(has_authenticator) {} + has_authenticator_(has_authenticator), + ui_observer_for_test_(ui_observer_for_test) {} bool IsOffTheRecord() const override { return is_off_the_record_; } std::string GetInvalidSslCertificateErrorMessage() override { @@ -81,6 +84,9 @@ has_authenticator_) : nullptr; } + const PaymentUIObserver* GetPaymentUIObserver() const override { + return ui_observer_for_test_; + } private: content::GlobalFrameRoutingId frame_routing_id_; @@ -89,16 +95,19 @@ PrefService* const prefs_; const std::string twa_package_name_; const bool has_authenticator_; + const PaymentUIObserver* const ui_observer_for_test_; }; } // namespace class PaymentRequestTestController::ObserverConverter - : public PaymentRequest::ObserverForTest { + : public PaymentRequest::ObserverForTest, + public PaymentUIObserver { public: explicit ObserverConverter(PaymentRequestTestController* controller) : controller_(controller) {} + // PaymentRequest::ObserverForTest: void OnCanMakePaymentCalled() override { controller_->OnCanMakePaymentCalled(); } @@ -135,6 +144,9 @@ void OnAbortCalled() override { controller_->OnAbortCalled(); } void OnCompleteCalled() override { controller_->OnCompleteCalled(); } + // PaymentUIObserver: + void OnUIDisplayed() const override { controller_->OnUIDisplayed(); } + private: PaymentRequestTestController* const controller_; }; @@ -240,8 +252,8 @@ void PaymentRequestTestController::UpdateDelegateFactory() { SetPaymentRequestFactoryForTesting(base::BindRepeating( - [](PaymentRequest::ObserverForTest* observer_for_test, - bool is_off_the_record, bool valid_ssl, PrefService* prefs, + [](ObserverConverter* observer_for_test, bool is_off_the_record, + bool valid_ssl, PrefService* prefs, const std::string& twa_package_name, bool has_authenticator, const std::string& twa_payment_app_method_name, const std::string& twa_payment_app_response, @@ -252,7 +264,7 @@ DCHECK(render_frame_host->IsCurrent()); auto delegate = std::make_unique<ChromePaymentRequestTestDelegate>( render_frame_host, is_off_the_record, valid_ssl, prefs, - twa_package_name, has_authenticator); + twa_package_name, has_authenticator, observer_for_test); *delegate_weakptr = delegate->GetContentWeakPtr(); PaymentRequestWebContentsManager* manager = PaymentRequestWebContentsManager::GetOrCreateForWebContents( @@ -306,6 +318,12 @@ NOTREACHED(); } +void PaymentRequestTestController::OnUIDisplayed() { + if (observer_) { + observer_->OnUIDisplayed(); + } +} + void PaymentRequestTestController::OnNotSupportedError() { if (observer_) observer_->OnNotSupportedError();
diff --git a/chrome/test/payments/test_event_waiter.cc b/chrome/test/payments/test_event_waiter.cc index d047ba3..c3de7609 100644 --- a/chrome/test/payments/test_event_waiter.cc +++ b/chrome/test/payments/test_event_waiter.cc
@@ -40,6 +40,9 @@ case TestEvent::kMinimalUIReady: out << "MinimalUIReady"; break; + case TestEvent::kUIDisplayed: + out << "UIDisplayed"; + break; } return out; }
diff --git a/chrome/test/payments/test_event_waiter.h b/chrome/test/payments/test_event_waiter.h index c88841e..cf80894 100644 --- a/chrome/test/payments/test_event_waiter.h +++ b/chrome/test/payments/test_event_waiter.h
@@ -28,6 +28,7 @@ kAppListReady, kPaymentCompleted, kMinimalUIReady, + kUIDisplayed, }; std::ostream& operator<<(std::ostream& out, TestEvent event);
diff --git a/chrome/third_party/DIR_METADATA b/chrome/third_party/DIR_METADATA index 9cfc120..159a803 100644 --- a/chrome/third_party/DIR_METADATA +++ b/chrome/third_party/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "A-N/A" +monorail: { + component: "A-N/A" }
diff --git a/chrome/third_party/mozilla_security_manager/DIR_METADATA b/chrome/third_party/mozilla_security_manager/DIR_METADATA index 0ca0a96..7a8129d 100644 --- a/chrome/third_party/mozilla_security_manager/DIR_METADATA +++ b/chrome/third_party/mozilla_security_manager/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Network>Certificate" +monorail: { + component: "Internals>Network>Certificate" }
diff --git a/chrome/tools/DIR_METADATA b/chrome/tools/DIR_METADATA index a6143e7..eb90f60f 100644 --- a/chrome/tools/DIR_METADATA +++ b/chrome/tools/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Shell" +monorail: { + component: "UI>Shell" }
diff --git a/chrome/tools/build/mac/DIR_METADATA b/chrome/tools/build/mac/DIR_METADATA index a406931..9f08648 100644 --- a/chrome/tools/build/mac/DIR_METADATA +++ b/chrome/tools/build/mac/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Build" +monorail: { + component: "Build" } -team_email: "build@chromium.org" +team_email: "build@chromium.org"
diff --git a/chrome/tools/build/win/DIR_METADATA b/chrome/tools/build/win/DIR_METADATA index a406931..9f08648 100644 --- a/chrome/tools/build/win/DIR_METADATA +++ b/chrome/tools/build/win/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Build" +monorail: { + component: "Build" } -team_email: "build@chromium.org" +team_email: "build@chromium.org"
diff --git a/chrome/tools/convert_dict/DIR_METADATA b/chrome/tools/convert_dict/DIR_METADATA index 079a366..d366dc7 100644 --- a/chrome/tools/convert_dict/DIR_METADATA +++ b/chrome/tools/convert_dict/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals" +monorail: { + component: "Internals" }
diff --git a/chrome/tools/safe_browsing/DIR_METADATA b/chrome/tools/safe_browsing/DIR_METADATA index 1864297..6015b06 100644 --- a/chrome/tools/safe_browsing/DIR_METADATA +++ b/chrome/tools/safe_browsing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>Safebrowsing" +monorail: { + component: "Services>Safebrowsing" }
diff --git a/chrome/tools/service_discovery_sniffer/DIR_METADATA b/chrome/tools/service_discovery_sniffer/DIR_METADATA index 7619ec17e..67273c4 100644 --- a/chrome/tools/service_discovery_sniffer/DIR_METADATA +++ b/chrome/tools/service_discovery_sniffer/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>CloudPrint" +monorail: { + component: "Services>CloudPrint" }
diff --git a/chrome/tools/test/DIR_METADATA b/chrome/tools/test/DIR_METADATA index 9b3e0b2..eada8c0 100644 --- a/chrome/tools/test/DIR_METADATA +++ b/chrome/tools/test/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Tests" +monorail: { + component: "Tests" }
diff --git a/chrome/tools/tracing/DIR_METADATA b/chrome/tools/tracing/DIR_METADATA index 4eae747..a0ac0380 100644 --- a/chrome/tools/tracing/DIR_METADATA +++ b/chrome/tools/tracing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Speed>Tracing" +monorail: { + component: "Speed>Tracing" }
diff --git a/chrome/updater/BUILD.gn b/chrome/updater/BUILD.gn index 82994ee..66300dd 100644 --- a/chrome/updater/BUILD.gn +++ b/chrome/updater/BUILD.gn
@@ -103,6 +103,8 @@ "external_constants.cc", "external_constants.h", "external_constants_impl.h", + "external_constants_override.cc", + "external_constants_override.h", "installer.cc", "installer.h", "lib_util.h", @@ -317,6 +319,7 @@ sources = [ "app/app_server_unittest.cc", "enum_traits_unittest.cc", + "external_constants_override_unittest.cc", "external_constants_unittest.cc", "external_constants_unittest.h", "lib_util_unittest.cc",
diff --git a/chrome/updater/DIR_METADATA b/chrome/updater/DIR_METADATA index c5c45e4..5f42b1af 100644 --- a/chrome/updater/DIR_METADATA +++ b/chrome/updater/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Updater" +monorail: { + component: "Internals>Updater" } -team_email: "chrome-updates-dev@chromium.org" +team_email: "chrome-updates-dev@chromium.org"
diff --git a/chrome/updater/constants.cc b/chrome/updater/constants.cc index 73d1075..084fabbe 100644 --- a/chrome/updater/constants.cc +++ b/chrome/updater/constants.cc
@@ -50,6 +50,9 @@ const char kDevOverrideKeyUseCUP[] = "use_cup"; const char kDevOverrideKeyInitialDelay[] = "initial_delay"; +// Developer override file name, relative to app data directory. +const char kDevOverrideFileName[] = "overrides.json"; + // Policy Management constants. const char kProxyModeDirect[] = "direct"; const char kProxyModeAutoDetect[] = "auto_detect";
diff --git a/chrome/updater/constants.h b/chrome/updater/constants.h index de63c31..2c92a0d4 100644 --- a/chrome/updater/constants.h +++ b/chrome/updater/constants.h
@@ -128,6 +128,9 @@ extern const char kDevOverrideKeyUseCUP[]; extern const char kDevOverrideKeyInitialDelay[]; +// File name of developer overrides file. +extern const char kDevOverrideFileName[]; + // Timing constants. #if defined(OS_WIN) // How long to wait for an application installer (such as
diff --git a/chrome/updater/external_constants.cc b/chrome/updater/external_constants.cc index 4d08692..dacf3534 100644 --- a/chrome/updater/external_constants.cc +++ b/chrome/updater/external_constants.cc
@@ -41,6 +41,10 @@ std::make_unique<DefaultExternalConstants>()); } +std::unique_ptr<ExternalConstants> CreateDefaultExternalConstantsForTesting() { + return std::make_unique<DefaultExternalConstants>(); +} + DevOverrideProvider::DevOverrideProvider( std::unique_ptr<ExternalConstants> next_provider) : ExternalConstants(std::move(next_provider)) {}
diff --git a/chrome/updater/external_constants.h b/chrome/updater/external_constants.h index d26b0c9..ee7f994 100644 --- a/chrome/updater/external_constants.h +++ b/chrome/updater/external_constants.h
@@ -38,6 +38,10 @@ // Sets up an external constants chain of responsibility. May block. std::unique_ptr<ExternalConstants> CreateExternalConstants(); +// Sets up an external constants provider yielding only default values. +// Intended only for testing of other constants providers. +std::unique_ptr<ExternalConstants> CreateDefaultExternalConstantsForTesting(); + } // namespace updater #endif // CHROME_UPDATER_EXTERNAL_CONSTANTS_H_
diff --git a/chrome/updater/external_constants_override.cc b/chrome/updater/external_constants_override.cc new file mode 100644 index 0000000..7ae47e1b --- /dev/null +++ b/chrome/updater/external_constants_override.cc
@@ -0,0 +1,134 @@ +// 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 <string> +#include <utility> +#include <vector> + +#include "base/containers/flat_map.h" +#include "base/files/file_path.h" +#include "base/json/json_file_value_serializer.h" +#include "base/json/json_reader.h" +#include "base/logging.h" +#include "base/notreached.h" +#include "base/values.h" +#include "build/build_config.h" +#include "chrome/updater/constants.h" +#include "chrome/updater/external_constants.h" +#include "chrome/updater/external_constants_override.h" +#include "chrome/updater/updater_branding.h" +#include "chrome/updater/updater_version.h" +#include "chrome/updater/util.h" +#include "url/gurl.h" + +#if defined(OS_MAC) +#include "base/mac/foundation_util.h" +#elif defined(OS_WIN) +#include "base/path_service.h" +#endif + +namespace { + +std::vector<GURL> GURLVectorFromStringList( + base::Value::ConstListView update_url_list) { + std::vector<GURL> ret; + ret.reserve(update_url_list.size()); + for (const base::Value& url : update_url_list) { + CHECK(url.is_string()) << "Non-string Value in update URL list"; + ret.push_back(GURL(url.GetString())); + } + return ret; +} + +} // anonymous namespace + +namespace updater { + +ExternalConstantsOverrider::ExternalConstantsOverrider( + base::flat_map<std::string, base::Value> override_values, + std::unique_ptr<ExternalConstants> next_provider) + : ExternalConstants(std::move(next_provider)), + override_values_(std::move(override_values)) {} + +ExternalConstantsOverrider::~ExternalConstantsOverrider() = default; + +std::vector<GURL> ExternalConstantsOverrider::UpdateURL() const { + if (!override_values_.contains(kDevOverrideKeyUrl)) { + return next_provider_->UpdateURL(); + } + const base::Value& update_url_value = override_values_.at(kDevOverrideKeyUrl); + switch (update_url_value.type()) { + case base::Value::Type::STRING: + return {GURL(update_url_value.GetString())}; + case base::Value::Type::LIST: + return GURLVectorFromStringList(update_url_value.GetList()); + default: + LOG(FATAL) << "Unexpected type of override[" << kDevOverrideKeyUrl + << "]: " << base::Value::GetTypeName(update_url_value.type()); + NOTREACHED(); + } + NOTREACHED(); + return {}; +} + +bool ExternalConstantsOverrider::UseCUP() const { + if (!override_values_.contains(kDevOverrideKeyUseCUP)) { + return next_provider_->UseCUP(); + } + const base::Value& use_cup_value = override_values_.at(kDevOverrideKeyUseCUP); + CHECK(use_cup_value.is_bool()) + << "Unexpected type of override[" << kDevOverrideKeyUseCUP + << "]: " << base::Value::GetTypeName(use_cup_value.type()); + + return use_cup_value.GetBool(); +} + +int ExternalConstantsOverrider::InitialDelay() const { + if (!override_values_.contains(kDevOverrideKeyInitialDelay)) { + return next_provider_->InitialDelay(); + } + + const base::Value& initial_delay_value = + override_values_.at(kDevOverrideKeyInitialDelay); + CHECK(initial_delay_value.is_int()) + << "Unexpected type of override[" << kDevOverrideKeyInitialDelay + << "]: " << base::Value::GetTypeName(initial_delay_value.type()); + return initial_delay_value.GetInt(); +} + +// static +std::unique_ptr<ExternalConstantsOverrider> +ExternalConstantsOverrider::FromDefaultJSONFile( + std::unique_ptr<ExternalConstants> next_provider) { + base::FilePath data_dir_path; + if (!GetBaseDirectory(&data_dir_path)) { + LOG(ERROR) << "Cannot find app data path."; + return nullptr; + } + const base::FilePath override_file_path = + data_dir_path.AppendASCII(kDevOverrideFileName); + + JSONFileValueDeserializer parser(override_file_path, + base::JSON_ALLOW_TRAILING_COMMAS); + int error_code = 0; + std::string error_message; + std::unique_ptr<base::Value> parsed_value( + parser.Deserialize(&error_code, &error_message)); + if (error_code || !parsed_value) { + LOG(ERROR) << "Could not parse " << override_file_path << ": error " + << error_code << ": " << error_message; + return nullptr; + } + + if (!parsed_value->is_dict()) { + LOG(ERROR) << "Invalid data in " << override_file_path << ": not a dict"; + return nullptr; + } + + return std::make_unique<ExternalConstantsOverrider>(parsed_value->TakeDict(), + std::move(next_provider)); +} + +} // namespace updater
diff --git a/chrome/updater/external_constants_override.h b/chrome/updater/external_constants_override.h new file mode 100644 index 0000000..18a54795 --- /dev/null +++ b/chrome/updater/external_constants_override.h
@@ -0,0 +1,49 @@ +// 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_UPDATER_EXTERNAL_CONSTANTS_OVERRIDE_H_ +#define CHROME_UPDATER_EXTERNAL_CONSTANTS_OVERRIDE_H_ + +#include <memory> +#include <string> +#include <vector> + +#include "base/containers/flat_map.h" +#include "chrome/updater/external_constants.h" + +class GURL; + +namespace base { +class Value; +} + +namespace updater { + +class ExternalConstantsOverrider : public ExternalConstants { + public: + ExternalConstantsOverrider( + base::flat_map<std::string, base::Value> override_values, + std::unique_ptr<ExternalConstants> next_provider); + ~ExternalConstantsOverrider() override; + + // Loads a dictionary from overrides.json in the local application data + // directory to construct a ExternalConstantsOverrider. + // + // Returns nullptr (and logs appropriate errors) if the file cannot be found + // or cannot be parsed. + static std::unique_ptr<ExternalConstantsOverrider> FromDefaultJSONFile( + std::unique_ptr<ExternalConstants> next_provider); + + // Overrides of ExternalConstants: + std::vector<GURL> UpdateURL() const override; + bool UseCUP() const override; + int InitialDelay() const override; + + private: + const base::flat_map<std::string, base::Value> override_values_; +}; + +} // namespace updater + +#endif // CHROME_UPDATER_EXTERNAL_CONSTANTS_OVERRIDE_H_
diff --git a/chrome/updater/external_constants_override_unittest.cc b/chrome/updater/external_constants_override_unittest.cc new file mode 100644 index 0000000..f2fc9c9 --- /dev/null +++ b/chrome/updater/external_constants_override_unittest.cc
@@ -0,0 +1,74 @@ +// 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 <utility> +#include <vector> + +#include "base/values.h" +#include "chrome/updater/constants.h" +#include "chrome/updater/external_constants.h" +#include "chrome/updater/external_constants_override.h" +#include "chrome/updater/updater_branding.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" + +namespace updater { + +class ExternalConstantsOverriderTest : public ::testing::Test {}; + +TEST_F(ExternalConstantsOverriderTest, TestEmptyDictValue) { + ExternalConstantsOverrider overrider( + base::flat_map<std::string, base::Value>{}, + CreateDefaultExternalConstantsForTesting()); + + EXPECT_TRUE(overrider.UseCUP()); + + std::vector<GURL> urls = overrider.UpdateURL(); + ASSERT_EQ(urls.size(), 1ul); + EXPECT_EQ(urls[0], GURL(UPDATE_CHECK_URL)); + EXPECT_TRUE(urls[0].is_valid()); + + EXPECT_EQ(overrider.InitialDelay(), kInitialDelay); +} + +TEST_F(ExternalConstantsOverriderTest, TestFullOverrides) { + base::Value::DictStorage overrides; + base::Value::ListStorage url_list; + url_list.push_back(base::Value("https://www.example.com")); + url_list.push_back(base::Value("https://www.google.com")); + overrides[kDevOverrideKeyUseCUP] = base::Value(false); + overrides[kDevOverrideKeyUrl] = base::Value(std::move(url_list)); + overrides[kDevOverrideKeyInitialDelay] = base::Value(137); + ExternalConstantsOverrider overrider( + std::move(overrides), CreateDefaultExternalConstantsForTesting()); + + EXPECT_FALSE(overrider.UseCUP()); + + std::vector<GURL> urls = overrider.UpdateURL(); + ASSERT_EQ(urls.size(), 2ul); + EXPECT_EQ(urls[0], GURL("https://www.example.com")); + EXPECT_TRUE(urls[0].is_valid()); + EXPECT_EQ(urls[1], GURL("https://www.google.com")); + EXPECT_TRUE(urls[1].is_valid()); + + EXPECT_EQ(overrider.InitialDelay(), 137); +} + +TEST_F(ExternalConstantsOverriderTest, TestOverrideUnwrappedURL) { + base::Value::DictStorage overrides; + overrides[kDevOverrideKeyUrl] = base::Value("https://www.example.com"); + ExternalConstantsOverrider overrider( + std::move(overrides), CreateDefaultExternalConstantsForTesting()); + + std::vector<GURL> urls = overrider.UpdateURL(); + ASSERT_EQ(urls.size(), 1ul); + EXPECT_EQ(urls[0], GURL("https://www.example.com")); + EXPECT_TRUE(urls[0].is_valid()); + + // Non-overridden items should fall back to defaults + EXPECT_TRUE(overrider.UseCUP()); + EXPECT_EQ(overrider.InitialDelay(), kInitialDelay); +} + +} // namespace updater
diff --git a/chrome/utility/DIR_METADATA b/chrome/utility/DIR_METADATA index 26cbc57..cd7f195 100644 --- a/chrome/utility/DIR_METADATA +++ b/chrome/utility/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Services" +monorail: { + component: "Internals>Services" }
diff --git a/chrome/utility/importer/DIR_METADATA b/chrome/utility/importer/DIR_METADATA index 9730c88..4be07047 100644 --- a/chrome/utility/importer/DIR_METADATA +++ b/chrome/utility/importer/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Import" +monorail: { + component: "UI>Browser>Import" }
diff --git a/chrome/utility/safe_browsing/DIR_METADATA b/chrome/utility/safe_browsing/DIR_METADATA index 1864297..6015b06 100644 --- a/chrome/utility/safe_browsing/DIR_METADATA +++ b/chrome/utility/safe_browsing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Services>Safebrowsing" +monorail: { + component: "Services>Safebrowsing" }
diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc index 0861e7d..01566ce 100644 --- a/chromecast/browser/cast_content_browser_client.cc +++ b/chromecast/browser/cast_content_browser_client.cc
@@ -528,7 +528,7 @@ } void CastContentBrowserClient::OverrideWebkitPrefs( - content::RenderViewHost* render_view_host, + content::WebContents* web_contents, blink::web_pref::WebPreferences* prefs) { prefs->allow_scripts_to_close_windows = true; // TODO(halliwell): http://crbug.com/391089. This pref defaults to to true @@ -557,8 +557,6 @@ // Disable WebSQL databases by default. prefs->databases_enabled = false; - content::WebContents* web_contents = - content::WebContents::FromRenderViewHost(render_view_host); if (web_contents) { chromecast::CastWebContents* cast_web_contents = chromecast::CastWebContents::FromWebContents(web_contents);
diff --git a/chromecast/browser/cast_content_browser_client.h b/chromecast/browser/cast_content_browser_client.h index e148dfb..5b9f749 100644 --- a/chromecast/browser/cast_content_browser_client.h +++ b/chromecast/browser/cast_content_browser_client.h
@@ -174,7 +174,7 @@ int child_process_id) override; std::string GetAcceptLangs(content::BrowserContext* context) override; network::mojom::NetworkContext* GetSystemNetworkContext() override; - void OverrideWebkitPrefs(content::RenderViewHost* render_view_host, + void OverrideWebkitPrefs(content::WebContents* web_contents, blink::web_pref::WebPreferences* prefs) override; std::string GetApplicationLocale() override; scoped_refptr<content::QuotaPermissionContext> CreateQuotaPermissionContext()
diff --git a/chromeos/BUILD.gn b/chromeos/BUILD.gn index a1c9d97..2d5dbcb5c 100644 --- a/chromeos/BUILD.gn +++ b/chromeos/BUILD.gn
@@ -246,7 +246,6 @@ tast_test("chrome_login_tast_tests") { tast_tests = [ - "ui.ChromeLogin", "ui.ChromeCrashLoggedIn", "ui.ChromeCrashNotLoggedIn", ] @@ -266,6 +265,9 @@ # crbug.com/1162346 "ui.WindowControl", + # crbug.com/1167243 + "ui.ChromeLogin", + # crbug.com/1115622 "ui.ChromeLoginGAIA",
diff --git a/chromeos/chromeos_strings_grd/IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_BODY.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_BODY.png.sha1 deleted file mode 100644 index 709bf57..0000000 --- a/chromeos/chromeos_strings_grd/IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_BODY.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -627bae6792ae9963364d63bb269d9bb088d367fe \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_LEARN_MORE.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_LEARN_MORE.png.sha1 deleted file mode 100644 index 709bf57..0000000 --- a/chromeos/chromeos_strings_grd/IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_LEARN_MORE.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -627bae6792ae9963364d63bb269d9bb088d367fe \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_TITLE.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_TITLE.png.sha1 deleted file mode 100644 index 709bf57..0000000 --- a/chromeos/chromeos_strings_grd/IDS_SUPERVISED_USER_EXPIRING_NOTIFICATION_TITLE.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -627bae6792ae9963364d63bb269d9bb088d367fe \ No newline at end of file
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_te.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_te.xtb index 76a5c8e..0ff8b0f 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_te.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_te.xtb
@@ -3,7 +3,7 @@ <translationbundle lang="te"> <translation id="1175958423215084756">లింక్ గుర్తించబడింది. <ph name="HOSTNAME" /></translation> <translation id="1276998909102132017">గ్యాలరీ చిత్రాలు</translation> -<translation id="1430915738399379752">ముద్రించు</translation> +<translation id="1430915738399379752">ప్రింట్</translation> <translation id="1473110567575736769">3 సెకన్ల టైమర్</translation> <translation id="1620510694547887537">కెమెరా</translation> <translation id="1627744224761163218">4 x 4</translation>
diff --git a/chromeos/components/scanning/resources/color_mode_select.js b/chromeos/components/scanning/resources/color_mode_select.js index 03affc9a..e4216e2 100644 --- a/chromeos/components/scanning/resources/color_mode_select.js +++ b/chromeos/components/scanning/resources/color_mode_select.js
@@ -53,21 +53,19 @@ }, /** - * Use the default option if it exists. If not, use the first color mode in - * the color modes array. - * @return {string} + * Get the index of the default option if it exists. If not, use the index of + * the first color mode in the color modes array. + * @return {number} * @private */ - getDefaultSelectedColorMode_() { + getDefaultSelectedColorModeIndex_() { assert(this.colorModes.length > 0); const defaultColorModeIndex = this.colorModes.findIndex((colorMode) => { return this.isDefaultColorMode_(colorMode); }); - return defaultColorModeIndex === -1 ? - this.colorModes[0].toString() : - this.colorModes[defaultColorModeIndex].toString(); + return defaultColorModeIndex === -1 ? 0 : defaultColorModeIndex; }, /** @@ -83,7 +81,10 @@ } if (this.colorModes.length > 0) { - this.selectedColorMode = this.getDefaultSelectedColorMode_(); + const selectedColorModeIndex = this.getDefaultSelectedColorModeIndex_(); + this.selectedColorMode = + this.colorModes[selectedColorModeIndex].toString(); + this.$.colorModeSelect.selectedIndex = selectedColorModeIndex; } },
diff --git a/chromeos/components/scanning/resources/page_size_select.js b/chromeos/components/scanning/resources/page_size_select.js index 09dc251..0fd42875 100644 --- a/chromeos/components/scanning/resources/page_size_select.js +++ b/chromeos/components/scanning/resources/page_size_select.js
@@ -52,20 +52,17 @@ }, /** - * Letter should be the default option if it exists. If not, use the first - * page size in the page sizes array. - * @return {string} + * Get the index of the default option if it exists. If not, use the index of + * the first page size in the page sizes array. + * @return {number} * @private */ - getDefaultSelectedPageSize_() { + getDefaultSelectedPageSizeIndex_() { let defaultPageSizeIndex = this.pageSizes.findIndex((pageSize) => { return this.isDefaultPageSize_(pageSize); }); - if (defaultPageSizeIndex === -1) { - defaultPageSizeIndex = 0; - } - return this.pageSizes[defaultPageSizeIndex].toString(); + return defaultPageSizeIndex === -1 ? 0 : defaultPageSizeIndex; }, /** @@ -90,7 +87,9 @@ } if (this.pageSizes.length > 0) { - this.selectedPageSize = this.getDefaultSelectedPageSize_(); + const selectedPageSizeIndex = this.getDefaultSelectedPageSizeIndex_(); + this.selectedPageSize = this.pageSizes[selectedPageSizeIndex].toString(); + this.$.pageSizeSelect.selectedIndex = selectedPageSizeIndex; } },
diff --git a/chromeos/components/scanning/resources/resolution_select.js b/chromeos/components/scanning/resources/resolution_select.js index c24e16a..5cae308 100644 --- a/chromeos/components/scanning/resources/resolution_select.js +++ b/chromeos/components/scanning/resources/resolution_select.js
@@ -53,19 +53,17 @@ }, /** - * 300 dpi should be the default option if it exists. If not, use the first - * resolution in the resolutions array. - * @return {string} + * Get the index of the default option if it exists. If not, use the index of + * the first resolution in the resolutions array. + * @return {number} * @private */ - getDefaultSelectedResolution_() { + getDefaultSelectedResolutionIndex_() { const defaultResolutionIndex = this.resolutions.findIndex((resolution) => { return this.isDefaultResolution_(resolution); }); - return defaultResolutionIndex === -1 ? - this.resolutions[0].toString() : - this.resolutions[defaultResolutionIndex].toString(); + return defaultResolutionIndex === -1 ? 0 : defaultResolutionIndex; }, /** @@ -82,7 +80,10 @@ } if (this.resolutions.length > 0) { - this.selectedResolution = this.getDefaultSelectedResolution_(); + const selectedResolutionIndex = this.getDefaultSelectedResolutionIndex_(); + this.selectedResolution = + this.resolutions[selectedResolutionIndex].toString(); + this.$.resolutionSelect.selectedIndex = selectedResolutionIndex; } },
diff --git a/chromeos/constants/chromeos_features.cc b/chromeos/constants/chromeos_features.cc index 31c6c648..23f47589 100644 --- a/chromeos/constants/chromeos_features.cc +++ b/chromeos/constants/chromeos_features.cc
@@ -177,6 +177,10 @@ const base::Feature kCellularUseAttachApn{"CellularUseAttachApn", base::FEATURE_DISABLED_BY_DEFAULT}; +// If enabled, use external euicc in Cellular Setup and Settings. +const base::Feature kCellularUseExternalEuicc{ + "CellularUseExternalEuicc", base::FEATURE_DISABLED_BY_DEFAULT}; + // Enables or disables entry point for child account sign in or creation. const base::Feature kChildSpecificSignin{"ChildSpecificSignin", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/chromeos/constants/chromeos_features.h b/chromeos/constants/chromeos_features.h index 77d045f..7329576 100644 --- a/chromeos/constants/chromeos_features.h +++ b/chromeos/constants/chromeos_features.h
@@ -94,6 +94,8 @@ COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kCellularUseAttachApn; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) +extern const base::Feature kCellularUseExternalEuicc; +COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kChildSpecificSignin; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kConnectivityDiagnosticsWebUi;
diff --git a/chromeos/constants/chromeos_switches.h b/chromeos/constants/chromeos_switches.h index 307586aa..e567da41 100644 --- a/chromeos/constants/chromeos_switches.h +++ b/chromeos/constants/chromeos_switches.h
@@ -85,7 +85,6 @@ extern const char kDisableLoginAnimations[]; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const char kDisableMachineCertRequest[]; -COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const char kDisableNewZIPUnpacker[]; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const char kDisableOOBEChromeVoxHintTimerForTesting[]; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) @@ -100,8 +99,6 @@ COMPONENT_EXPORT(CHROMEOS_CONSTANTS) COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const char kEnableArcVm[]; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const char kEnableCastReceiver[]; -COMPONENT_EXPORT(CHROMEOS_CONSTANTS) -extern const char kEnableChromevoxDeveloperOption[]; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const char kEnableConsumerKiosk[]; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const char kEnableTabletFormFactor[];
diff --git a/chromeos/dbus/hermes/OWNERS b/chromeos/dbus/hermes/OWNERS new file mode 100644 index 0000000..137a112 --- /dev/null +++ b/chromeos/dbus/hermes/OWNERS
@@ -0,0 +1 @@ +file://chromeos/network/OWNERS
diff --git a/chromeos/lacros/BUILD.gn b/chromeos/lacros/BUILD.gn index 403b557..c70fef7c 100644 --- a/chromeos/lacros/BUILD.gn +++ b/chromeos/lacros/BUILD.gn
@@ -2,7 +2,6 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//build/config/chromeos/rules.gni") import("//build/config/chromeos/ui_mode.gni") import("//build/config/linux/gtk/gtk.gni") import("//build/lacros/lacros_resource_sizes.gni") @@ -31,41 +30,3 @@ lacros_resource_sizes_test("resource_sizes_lacros_chrome") { data_deps = [ "//chrome:chrome" ] } - -# "cros_board" set in the GN args defines the board used to build lacros-chrome, -# while the "override_board" here defines the board on which to test the built -# binary, for more details, please refer to the "generate_runner_script" -# template in //build/config/chromeos/rules.gni. -template("lacros_tast_test_helper") { - forward_variables_from(invoker, [ "override_board" ]) - assert(defined(override_board), "override_board is required") - lacros_tast_test(target_name) { - # TODO(crbug.com/1158590): use --attr-expr instead of hard-coding the tests. - tast_tests = [ - "lacros.AudioPlay", - "lacros.AppLauncherLaunch", - "lacros.Basic", - "lacros.ShelfLaunch", - ] - } -} - -# On Chromium CI, only a very limited number of boards are supported: -# amd64-generic, eve, kevin etc, so just hard-coding them for simplicity. -if (is_chromeos_device) { - _boards = string_split(cros_boards, ":") + - string_split(cros_boards_with_qemu_images, ":") - foreach(b, _boards) { - if (b == "amd64-generic") { - lacros_tast_test_helper("lacros_tast_tests_amd64_generic") { - override_board = "amd64-generic" - } - } - - if (b == "eve") { - lacros_tast_test_helper("lacros_tast_tests_eve") { - override_board = "eve" - } - } - } -}
diff --git a/chromeos/login/auth/extended_authenticator.h b/chromeos/login/auth/extended_authenticator.h index 5520867..48e0905 100644 --- a/chromeos/login/auth/extended_authenticator.h +++ b/chromeos/login/auth/extended_authenticator.h
@@ -45,18 +45,6 @@ // Updates consumer of the class. virtual void SetConsumer(AuthStatusConsumer* consumer) = 0; - // TODO(crbug.com/866790): Following method was only used for supervised - // users authentication. Check if there is a reason to keep it and remove it. - - // This call will attempt to mount the home dir for the user, key (and key - // label) in |context|. If the key is of type KEY_TYPE_PASSWORD_PLAIN, it will - // be hashed with the system salt before being passed to cryptohomed. This - // call assumes that the home dir already exist for the user and will return - // an error otherwise. On success, the user ID hash (used as the mount point) - // will be passed to |success_callback|. - virtual void AuthenticateToMount(const UserContext& context, - ResultCallback success_callback) = 0; - // This call will attempt to authenticate the user with the key (and key // label) in |context|. No further actions are taken after authentication. virtual void AuthenticateToCheck(const UserContext& context,
diff --git a/chromeos/login/auth/extended_authenticator_impl.cc b/chromeos/login/auth/extended_authenticator_impl.cc index 8168200..3d6085a 100644 --- a/chromeos/login/auth/extended_authenticator_impl.cc +++ b/chromeos/login/auth/extended_authenticator_impl.cc
@@ -62,14 +62,6 @@ consumer_ = consumer; } -void ExtendedAuthenticatorImpl::AuthenticateToMount( - const UserContext& context, - ResultCallback success_callback) { - TransformKeyIfNeeded( - context, base::BindOnce(&ExtendedAuthenticatorImpl::DoAuthenticateToMount, - this, std::move(success_callback))); -} - void ExtendedAuthenticatorImpl::AuthenticateToCheck( const UserContext& context, base::OnceClosure success_callback) { @@ -179,20 +171,6 @@ system_salt_callbacks_.clear(); } -void ExtendedAuthenticatorImpl::DoAuthenticateToMount( - ResultCallback success_callback, - const UserContext& user_context) { - RecordStartMarker("MountEx"); - const Key* const key = user_context.GetKey(); - CryptohomeClient::Get()->MountEx( - cryptohome::CreateAccountIdentifierFromAccountId( - user_context.GetAccountId()), - cryptohome::CreateAuthorizationRequest(key->GetLabel(), key->GetSecret()), - cryptohome::MountRequest(), - base::BindOnce(&ExtendedAuthenticatorImpl::OnMountComplete, this, - "MountEx", user_context, std::move(success_callback))); -} - void ExtendedAuthenticatorImpl::DoAuthenticateToCheck( base::OnceClosure success_callback, const UserContext& user_context) { @@ -243,42 +221,6 @@ "RemoveKeyEx", user_context, std::move(success_callback))); } -void ExtendedAuthenticatorImpl::OnMountComplete( - const std::string& time_marker, - const UserContext& user_context, - ResultCallback success_callback, - base::Optional<cryptohome::BaseReply> reply) { - cryptohome::MountError return_code = - cryptohome::MountExReplyToMountError(reply); - RecordEndMarker(time_marker); - if (return_code == cryptohome::MOUNT_ERROR_NONE) { - const std::string& mount_hash = - cryptohome::MountExReplyToMountHash(reply.value()); - if (success_callback) - std::move(success_callback).Run(mount_hash); - if (consumer_) { - UserContext copy = user_context; - copy.SetUserIDHash(mount_hash); - consumer_->OnAuthSuccess(copy); - } - return; - } - LOG(ERROR) << "MountEx failed. Error: " << return_code; - AuthState state = FAILED_MOUNT; - if (return_code == cryptohome::MOUNT_ERROR_TPM_COMM_ERROR || - return_code == cryptohome::MOUNT_ERROR_TPM_DEFEND_LOCK || - return_code == cryptohome::MOUNT_ERROR_TPM_NEEDS_REBOOT) { - state = FAILED_TPM; - } - if (return_code == cryptohome::MOUNT_ERROR_USER_DOES_NOT_EXIST) - state = NO_MOUNT; - - if (consumer_) { - AuthFailure failure(AuthFailure::COULD_NOT_MOUNT_CRYPTOHOME); - consumer_->OnAuthFailure(failure); - } -} - void ExtendedAuthenticatorImpl::OnOperationComplete( const std::string& time_marker, const UserContext& user_context,
diff --git a/chromeos/login/auth/extended_authenticator_impl.h b/chromeos/login/auth/extended_authenticator_impl.h index bcf90b3b..14c1318 100644 --- a/chromeos/login/auth/extended_authenticator_impl.h +++ b/chromeos/login/auth/extended_authenticator_impl.h
@@ -31,8 +31,6 @@ // ExtendedAuthenticator: void SetConsumer(AuthStatusConsumer* consumer) override; - void AuthenticateToMount(const UserContext& context, - ResultCallback success_callback) override; void AuthenticateToCheck(const UserContext& context, base::OnceClosure success_callback) override; void StartFingerprintAuthSession( @@ -61,8 +59,6 @@ void OnSaltObtained(const std::string& system_salt); // Performs actual operation with fully configured |context|. - void DoAuthenticateToMount(ResultCallback success_callback, - const UserContext& context); void DoAuthenticateToCheck(base::OnceClosure success_callback, const UserContext& context); void DoAddKey(const cryptohome::KeyDefinition& key, @@ -74,10 +70,6 @@ const UserContext& context); // Inner operation callbacks. - void OnMountComplete(const std::string& time_marker, - const UserContext& context, - ResultCallback success_callback, - base::Optional<cryptohome::BaseReply> reply); void OnOperationComplete(const std::string& time_marker, const UserContext& context, base::OnceClosure success_callback,
diff --git a/chromeos/login/auth/fake_extended_authenticator.cc b/chromeos/login/auth/fake_extended_authenticator.cc index 3f62984..fc8aa05a 100644 --- a/chromeos/login/auth/fake_extended_authenticator.cc +++ b/chromeos/login/auth/fake_extended_authenticator.cc
@@ -21,24 +21,6 @@ consumer_ = consumer; } -void FakeExtendedAuthenticator::AuthenticateToMount( - const UserContext& context, - ResultCallback success_callback) { - if (expected_user_context_ == context) { - UserContext reported_user_context(context); - const std::string mount_hash = - reported_user_context.GetAccountId().GetUserEmail() + "-hash"; - reported_user_context.SetUserIDHash(mount_hash); - if (success_callback) - std::move(success_callback).Run(mount_hash); - OnAuthSuccess(reported_user_context); - return; - } - - OnAuthFailure(FAILED_MOUNT, - AuthFailure(AuthFailure::COULD_NOT_MOUNT_CRYPTOHOME)); -} - void FakeExtendedAuthenticator::AuthenticateToCheck( const UserContext& context, base::OnceClosure success_callback) {
diff --git a/chromeos/login/auth/fake_extended_authenticator.h b/chromeos/login/auth/fake_extended_authenticator.h index c79a260c..57a9622 100644 --- a/chromeos/login/auth/fake_extended_authenticator.h +++ b/chromeos/login/auth/fake_extended_authenticator.h
@@ -22,8 +22,6 @@ // ExtendedAuthenticator: void SetConsumer(AuthStatusConsumer* consumer) override; - void AuthenticateToMount(const UserContext& context, - ResultCallback success_callback) override; void AuthenticateToCheck(const UserContext& context, base::OnceClosure success_callback) override; void StartFingerprintAuthSession(
diff --git a/chromeos/login/auth/login_performer.cc b/chromeos/login/auth/login_performer.cc index 79c7d75..f02a7d5 100644 --- a/chromeos/login/auth/login_performer.cc +++ b/chromeos/login/auth/login_performer.cc
@@ -165,13 +165,6 @@ } } -void LoginPerformer::LoginAsSupervisedUser(const UserContext& user_context) { - // TODO(crbug.com/866790): remove this method as a part of further clean-up. - LOG(ERROR) << "Login attempt of supervised user detected."; - delegate_->AllowlistCheckFailed(user_context.GetAccountId().GetUserEmail()); - return; -} - void LoginPerformer::LoginAsPublicSession(const UserContext& user_context) { if (!CheckPolicyForUser(user_context.GetAccountId())) { DCHECK(delegate_);
diff --git a/chromeos/login/auth/login_performer.h b/chromeos/login/auth/login_performer.h index 97dbdb46..93ca64a89 100644 --- a/chromeos/login/auth/login_performer.h +++ b/chromeos/login/auth/login_performer.h
@@ -74,10 +74,6 @@ void PerformLogin(const UserContext& user_context, AuthorizationMode auth_mode); - // TODO(crbug.com/866790): Check it is not used anymore and remove it. - // Performs supervised user login with a given |user_context|. - void LoginAsSupervisedUser(const UserContext& user_context); - // Performs actions to prepare guest mode login. void LoginOffTheRecord();
diff --git a/chromeos/services/assistant/public/cpp/assistant_enums.h b/chromeos/services/assistant/public/cpp/assistant_enums.h index d33ba67..59deb5a 100644 --- a/chromeos/services/assistant/public/cpp/assistant_enums.h +++ b/chromeos/services/assistant/public/cpp/assistant_enums.h
@@ -20,25 +20,22 @@ // Assistant feature is allowed. ALLOWED = 0, // Disallowed because search and assistant is disabled by policy. - DISALLOWED_BY_POLICY, + DISALLOWED_BY_POLICY = 1, // Disallowed because user's locale is not compatible. - DISALLOWED_BY_LOCALE, + DISALLOWED_BY_LOCALE = 2, // Disallowed because current user is not primary user. - DISALLOWED_BY_NONPRIMARY_USER, - // TODO(crbug.com/866790): Remove this value as a part of Supervised users - // code cleanup. - // Disallowed because current user is supervised user. - DISALLOWED_BY_SUPERVISED_USER, + DISALLOWED_BY_NONPRIMARY_USER = 3, + // DISALLOWED_BY_SUPERVISED_USER = 4, // Deprecated. // Disallowed because incognito mode. - DISALLOWED_BY_INCOGNITO, + DISALLOWED_BY_INCOGNITO = 5, // Disallowed because the device is in demo mode. - DISALLOWED_BY_DEMO_MODE, + DISALLOWED_BY_DEMO_MODE = 6, // Disallowed because the device is in public session. - DISALLOWED_BY_PUBLIC_SESSION, + DISALLOWED_BY_PUBLIC_SESSION = 7, // Disallowed because the user's account type is currently not supported. - DISALLOWED_BY_ACCOUNT_TYPE, + DISALLOWED_BY_ACCOUNT_TYPE = 8, // Disallowed because the device is in Kiosk mode. - DISALLOWED_BY_KIOSK_MODE, + DISALLOWED_BY_KIOSK_MODE = 9, MAX_VALUE = DISALLOWED_BY_KIOSK_MODE, };
diff --git a/chromeos/services/libassistant/BUILD.gn b/chromeos/services/libassistant/BUILD.gn index 11e3e183..be55cfd 100644 --- a/chromeos/services/libassistant/BUILD.gn +++ b/chromeos/services/libassistant/BUILD.gn
@@ -33,6 +33,14 @@ sources = [ "assistant_manager_observer.h", + "audio/audio_input_impl.cc", + "audio/audio_input_impl.h", + "audio/audio_input_provider_impl.cc", + "audio/audio_input_provider_impl.h", + "audio/audio_input_stream.cc", + "audio/audio_input_stream.h", + "audio_input_controller.cc", + "audio_input_controller.h", "conversation_controller.cc", "conversation_controller.h", "platform_api.cc", @@ -52,7 +60,12 @@ "//chromeos/services/assistant/public/cpp/migration", "//chromeos/services/libassistant/public/mojom", "//libassistant/shared/internal_api:assistant_manager_internal", + "//libassistant/shared/internal_api:fuchsia_api_helper", + "//libassistant/shared/internal_api/c:api_wrappers_entrypoint", "//libassistant/shared/public", + "//libassistant/shared/public:export", + "//media", + "//services/audio/public/cpp", ] defines = [ "IS_LIBASSISTANT_SERVICE_IMPL" ] @@ -60,7 +73,10 @@ source_set("unit_tests") { testonly = true - sources = [ "service_controller_unittest.cc" ] + sources = [ + "audio_input_controller_unittest.cc", + "service_controller_unittest.cc", + ] deps = [ ":internal", @@ -73,6 +89,7 @@ "//chromeos/services/assistant/public/cpp/migration:test_support", "//chromeos/services/libassistant/public/mojom", "//libassistant/shared/internal_api:assistant_manager_internal", + "//services/audio/public/cpp:test_support", "//testing/gmock", "//testing/gtest", ]
diff --git a/chromeos/services/libassistant/DEPS b/chromeos/services/libassistant/DEPS index e1002e9..e230f76d 100644 --- a/chromeos/services/libassistant/DEPS +++ b/chromeos/services/libassistant/DEPS
@@ -1,3 +1,6 @@ include_rules = [ "+libassistant", + "+media/audio", + "+media/base", + "+services/audio/public", ]
diff --git a/chromeos/services/libassistant/audio/audio_input_impl.cc b/chromeos/services/libassistant/audio/audio_input_impl.cc new file mode 100644 index 0000000..7ac0b83 --- /dev/null +++ b/chromeos/services/libassistant/audio/audio_input_impl.cc
@@ -0,0 +1,474 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/services/libassistant/audio/audio_input_impl.h" + +#include <utility> + +#include "base/bind.h" +#include "base/logging.h" +#include "base/memory/weak_ptr.h" +#include "base/metrics/histogram_functions.h" +#include "base/optional.h" +#include "base/stl_util.h" +#include "base/strings/string_util.h" +#include "base/timer/timer.h" +#include "chromeos/services/assistant/public/cpp/assistant_client.h" +#include "chromeos/services/assistant/public/cpp/features.h" +#include "chromeos/services/libassistant/audio/audio_input_stream.h" +#include "libassistant/shared/public/platform_audio_buffer.h" +#include "media/audio/audio_device_description.h" +#include "media/base/audio_parameters.h" +#include "media/base/audio_sample_types.h" +#include "media/base/channel_layout.h" +#include "services/audio/public/cpp/device_factory.h" +#include "services/audio/public/mojom/stream_factory.mojom.h" + +namespace chromeos { +namespace libassistant { + +namespace { + +constexpr assistant_client::BufferFormat kFormatMono{ + 16000 /* sample_rate */, assistant_client::INTERLEAVED_S16, 1 /* channels */ +}; + +constexpr assistant_client::BufferFormat kFormatStereo{ + 44100 /* sample_rate */, assistant_client::INTERLEAVED_S16, 2 /* channels */ +}; + +assistant_client::BufferFormat g_current_format = kFormatMono; + +class DspHotwordStateManager : public AudioInputImpl::HotwordStateManager { + public: + DspHotwordStateManager(AudioInputImpl* input, + scoped_refptr<base::SequencedTaskRunner> task_runner) + : AudioInputImpl::HotwordStateManager(input), task_runner_(task_runner) { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + } + + DspHotwordStateManager(const DspHotwordStateManager&) = delete; + DspHotwordStateManager& operator=(const DspHotwordStateManager&) = delete; + + // HotwordStateManager overrides: + // Runs on main thread. + void OnConversationTurnStarted() override { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + if (second_phase_timer_.IsRunning()) { + DCHECK(stream_state_ == StreamState::HOTWORD); + second_phase_timer_.Stop(); + } else { + // Handles user click on mic button. + input_->RecreateAudioInputStream(false /* use_dsp */); + } + stream_state_ = StreamState::NORMAL; + } + + // Runs on main thread. + void OnConversationTurnFinished() override { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + input_->RecreateAudioInputStream(true /* use_dsp */); + if (stream_state_ == StreamState::HOTWORD) { + // If |stream_state_| remains unchanged, that indicates the first stage + // DSP hotword detection was rejected by Libassistant. + RecordDspHotwordDetection(DspHotwordDetectionStatus::SOFTWARE_REJECTED); + } + stream_state_ = StreamState::HOTWORD; + } + + // Runs on audio service thread + void OnCaptureDataArrived() override { + // Posting to main thread to avoid timer's sequence check error. + task_runner_->PostTask( + FROM_HERE, + base::BindOnce(&DspHotwordStateManager::OnCaptureDataArrivedMainThread, + weak_factory_.GetWeakPtr())); + } + + void RecreateAudioInputStream() override { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + input_->RecreateAudioInputStream(stream_state_ == StreamState::HOTWORD); + } + + // Runs on main thread. + void OnCaptureDataArrivedMainThread() { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + if (stream_state_ == StreamState::HOTWORD && + !second_phase_timer_.IsRunning()) { + RecordDspHotwordDetection(DspHotwordDetectionStatus::HARDWARE_ACCEPTED); + // 1s from now, if OnConversationTurnStarted is not called, we assume that + // libassistant has rejected the hotword supplied by DSP. Thus, we reset + // and reopen the device on hotword state. + second_phase_timer_.Start( + FROM_HERE, base::TimeDelta::FromSeconds(1), + base::BindRepeating( + &DspHotwordStateManager::OnConversationTurnFinished, + base::Unretained(this))); + } + } + + private: + enum class StreamState { + HOTWORD, + NORMAL, + }; + + // Defines possible detection states of Dsp hotword. These values are + // persisted to logs. Entries should not be renumbered and numeric values + // should never be reused. Only append to this enum is allowed if the possible + // source grows. + enum class DspHotwordDetectionStatus { + HARDWARE_ACCEPTED = 0, + SOFTWARE_REJECTED = 1, + kMaxValue = SOFTWARE_REJECTED + }; + + // Helper function to record UMA metrics for Dsp hotword detection. + void RecordDspHotwordDetection(DspHotwordDetectionStatus status) { + base::UmaHistogramEnumeration("Assistant.DspHotwordDetection", status); + } + + scoped_refptr<base::SequencedTaskRunner> task_runner_; + StreamState stream_state_ = StreamState::HOTWORD; + base::OneShotTimer second_phase_timer_; + base::WeakPtrFactory<DspHotwordStateManager> weak_factory_{this}; +}; + +class AudioInputBufferImpl : public assistant_client::AudioBuffer { + public: + AudioInputBufferImpl(const void* data, uint32_t frame_count) + : data_(data), frame_count_(frame_count) {} + AudioInputBufferImpl(const AudioInputBufferImpl&) = delete; + AudioInputBufferImpl& operator=(const AudioInputBufferImpl&) = delete; + ~AudioInputBufferImpl() override = default; + + // assistant_client::AudioBuffer overrides: + assistant_client::BufferFormat GetFormat() const override { + return g_current_format; + } + const void* GetData() const override { return data_; } + void* GetWritableData() override { + NOTREACHED(); + return nullptr; + } + int GetFrameCount() const override { return frame_count_; } + + private: + const void* data_; + int frame_count_; +}; + +} // namespace + +AudioInputImpl::HotwordStateManager::HotwordStateManager( + AudioInputImpl* audio_input) + : input_(audio_input) {} + +void AudioInputImpl::HotwordStateManager::RecreateAudioInputStream() { + input_->RecreateAudioInputStream(/*use_dsp=*/false); +} + +AudioInputImpl::AudioInputImpl(const base::Optional<std::string>& device_id) + : task_runner_(base::SequencedTaskRunnerHandle::Get()), + preferred_device_id_(device_id), + weak_factory_(this) { + DETACH_FROM_SEQUENCE(observer_sequence_checker_); + + RecreateStateManager(); + if (assistant::features::IsStereoAudioInputEnabled()) + g_current_format = kFormatStereo; + else + g_current_format = kFormatMono; +} + +AudioInputImpl::~AudioInputImpl() { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + StopRecording(); +} + +void AudioInputImpl::RecreateStateManager() { + if (IsHotwordAvailable()) { + state_manager_ = + std::make_unique<DspHotwordStateManager>(this, task_runner_); + } else { + state_manager_ = std::make_unique<HotwordStateManager>(this); + } +} + +void AudioInputImpl::Bind( + mojo::PendingRemote<mojom::AudioStreamFactoryDelegate> delegate) { + audio_stream_factory_delegate_.Bind(std::move(delegate)); + UpdateRecordingState(); +} + +// Runs on audio service thread. +void AudioInputImpl::Capture(const media::AudioBus* audio_source, + base::TimeTicks audio_capture_time, + double volume, + bool key_pressed) { + DCHECK_EQ(g_current_format.num_channels, audio_source->channels()); + + state_manager_->OnCaptureDataArrived(); + + std::vector<int16_t> buffer(audio_source->channels() * + audio_source->frames()); + audio_source->ToInterleaved<media::SignedInt16SampleTypeTraits>( + audio_source->frames(), buffer.data()); + int64_t time = 0; + // Only provide accurate timestamp when eraser is enabled, otherwise it seems + // break normal libassistant voice recognition. + if (assistant::features::IsAudioEraserEnabled()) + time = audio_capture_time.since_origin().InMicroseconds(); + AudioInputBufferImpl input_buffer(buffer.data(), audio_source->frames()); + { + base::AutoLock lock(lock_); + for (auto* observer : observers_) + observer->OnAudioBufferAvailable(input_buffer, time); + } + + captured_frames_count_ += audio_source->frames(); + if (VLOG_IS_ON(1)) { + auto now = base::TimeTicks::Now(); + if ((now - last_frame_count_report_time_) > + base::TimeDelta::FromMinutes(2)) { + VLOG(1) << open_audio_stream_->device_id() + << " captured frames: " << captured_frames_count_; + last_frame_count_report_time_ = now; + } + } +} + +// Runs on audio service thread. +void AudioInputImpl::OnCaptureError(const std::string& message) { + LOG(ERROR) << open_audio_stream_->device_id() << " capture error " << message; + base::AutoLock lock(lock_); + for (auto* observer : observers_) + observer->OnAudioError(AudioInput::Error::FATAL_ERROR); +} + +// Runs on audio service thread. +void AudioInputImpl::OnCaptureMuted(bool is_muted) {} + +// Run on LibAssistant thread. +assistant_client::BufferFormat AudioInputImpl::GetFormat() const { + return g_current_format; +} + +// Run on LibAssistant thread. +void AudioInputImpl::AddObserver( + assistant_client::AudioInput::Observer* observer) { + DCHECK_CALLED_ON_VALID_SEQUENCE(observer_sequence_checker_); + VLOG(1) << " add observer"; + + bool have_first_observer = false; + { + base::AutoLock lock(lock_); + observers_.push_back(observer); + have_first_observer = observers_.size() == 1; + } + + if (have_first_observer) { + // Post to main thread runner to start audio recording. Assistant thread + // does not have thread context defined in //base and will fail sequence + // check in AudioCapturerSource::Start(). + task_runner_->PostTask(FROM_HERE, + base::BindOnce(&AudioInputImpl::UpdateRecordingState, + weak_factory_.GetWeakPtr())); + } +} + +// Run on LibAssistant thread. +void AudioInputImpl::RemoveObserver( + assistant_client::AudioInput::Observer* observer) { + DCHECK_CALLED_ON_VALID_SEQUENCE(observer_sequence_checker_); + VLOG(1) << open_audio_stream_->device_id() << " remove observer"; + bool have_no_observer = false; + { + base::AutoLock lock(lock_); + base::Erase(observers_, observer); + have_no_observer = observers_.size() == 0; + } + + if (have_no_observer) { + task_runner_->PostTask(FROM_HERE, + base::BindOnce(&AudioInputImpl::UpdateRecordingState, + weak_factory_.GetWeakPtr())); + + // Reset the sequence checker since assistant may call from different thread + // after restart. + DETACH_FROM_SEQUENCE(observer_sequence_checker_); + } +} + +void AudioInputImpl::SetMicState(bool mic_open) { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + if (mic_open_ == mic_open) + return; + + mic_open_ = mic_open; + UpdateRecordingState(); +} + +void AudioInputImpl::OnConversationTurnStarted() { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + state_manager_->OnConversationTurnStarted(); +} + +void AudioInputImpl::OnConversationTurnFinished() { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + state_manager_->OnConversationTurnFinished(); +} + +void AudioInputImpl::OnHotwordEnabled(bool enable) { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + + if (hotword_enabled_ == enable) + return; + + hotword_enabled_ = enable; + UpdateRecordingState(); +} + +void AudioInputImpl::SetDeviceId(const base::Optional<std::string>& device_id) { + if (preferred_device_id_ == device_id) + return; + + preferred_device_id_ = device_id; + + UpdateRecordingState(); + if (open_audio_stream_) + state_manager_->RecreateAudioInputStream(); +} + +void AudioInputImpl::SetHotwordDeviceId( + const base::Optional<std::string>& device_id) { + if (hotword_device_id_ == device_id) + return; + + hotword_device_id_ = device_id; + RecreateStateManager(); + if (open_audio_stream_) + state_manager_->RecreateAudioInputStream(); +} + +void AudioInputImpl::OnLidStateChanged(mojom::LidState new_state) { + // Lid switch event still gets fired during system suspend, which enables + // us to stop DSP recording correctly when user closes lid after the device + // goes to sleep. + if (new_state != lid_state_) { + lid_state_ = new_state; + UpdateRecordingState(); + } +} + +void AudioInputImpl::RecreateAudioInputStream(bool use_dsp) { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + StopRecording(); + + open_audio_stream_ = std::make_unique<AudioInputStream>( + audio_stream_factory_delegate_.get(), GetDeviceId(use_dsp), + ShouldEnableDeadStreamDetection(use_dsp), GetFormat(), + /*capture_callback=*/this); + + VLOG(1) << open_audio_stream_->device_id() << " start recording"; +} + +bool AudioInputImpl::IsHotwordAvailable() const { + return assistant::features::IsDspHotwordEnabled() && + hotword_device_id_.has_value(); +} + +bool AudioInputImpl::IsRecordingForTesting() const { + return !!open_audio_stream_; +} + +bool AudioInputImpl::IsUsingHotwordDeviceForTesting() const { + return IsRecordingForTesting() // IN-TEST + && open_audio_stream_->device_id() == hotword_device_id_ && + IsHotwordAvailable(); +} + +base::Optional<std::string> AudioInputImpl::GetOpenDeviceIdForTesting() const { + if (!open_audio_stream_) + return base::nullopt; + return open_audio_stream_->device_id(); +} + +base::Optional<bool> AudioInputImpl::IsUsingDeadStreamDetectionForTesting() + const { + if (!open_audio_stream_) + return base::nullopt; + return open_audio_stream_->has_dead_stream_detection(); +} + +void AudioInputImpl::StartRecording() { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + DCHECK(!open_audio_stream_); + RecreateAudioInputStream(IsHotwordAvailable()); +} + +void AudioInputImpl::StopRecording() { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + if (open_audio_stream_) { + VLOG(1) << open_audio_stream_->device_id() << " stop recording"; + VLOG(1) << open_audio_stream_->device_id() + << " ending captured frames: " << captured_frames_count_; + open_audio_stream_.reset(); + } +} + +void AudioInputImpl::UpdateRecordingState() { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + + bool has_observers = false; + { + base::AutoLock lock(lock_); + has_observers = observers_.size() > 0; + } + + bool is_lid_closed = (lid_state_ == mojom::LidState::kClosed); + bool should_enable_hotword = + hotword_enabled_ && preferred_device_id_.has_value(); + bool has_delegate = audio_stream_factory_delegate_.is_bound(); + bool should_start = !is_lid_closed && (should_enable_hotword || mic_open_) && + has_observers && has_delegate; + + VLOG(1) << "UpdateRecordingState: " + << " is_lid_closed: " << is_lid_closed << "\n" + << " hotword_enabled: " << hotword_enabled_ << "\n" + << " preferred_device_id: '" + << preferred_device_id_.value_or("<unset>") << "'\n" + << " hotword_device_id: '" + << hotword_device_id_.value_or("<unset>") << "'\n" + << " mic_open: " << mic_open_ << "\n" + << " has_observers: " << has_observers << "\n" + << " has_delegate: " << has_delegate << "\n" + << " => should_start: " << should_start; + + if (!open_audio_stream_ && should_start) + StartRecording(); + else if (open_audio_stream_ && !should_start) + StopRecording(); +} + +std::string AudioInputImpl::GetDeviceId(bool use_dsp) const { + if (use_dsp && hotword_device_id_.has_value()) + return hotword_device_id_.value(); + else if (preferred_device_id_.has_value()) + return preferred_device_id_.value(); + else + return media::AudioDeviceDescription::kDefaultDeviceId; +} + +bool AudioInputImpl::ShouldEnableDeadStreamDetection(bool use_dsp) const { + if (use_dsp && hotword_device_id_.has_value()) { + // The DSP device won't provide data until it detects a hotword, so + // we disable its the dead stream detection. + return false; + } + return true; +} + +} // namespace libassistant +} // namespace chromeos
diff --git a/chromeos/services/libassistant/audio/audio_input_impl.h b/chromeos/services/libassistant/audio/audio_input_impl.h new file mode 100644 index 0000000..ddf6e754 --- /dev/null +++ b/chromeos/services/libassistant/audio/audio_input_impl.h
@@ -0,0 +1,158 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_SERVICES_LIBASSISTANT_AUDIO_AUDIO_INPUT_IMPL_H_ +#define CHROMEOS_SERVICES_LIBASSISTANT_AUDIO_AUDIO_INPUT_IMPL_H_ + +#include <memory> +#include <string> +#include <vector> + +#include "base/component_export.h" +#include "base/macros.h" +#include "base/observer_list.h" +#include "base/optional.h" +#include "base/sequence_checker.h" +#include "base/synchronization/lock.h" +#include "base/time/time.h" +#include "chromeos/services/assistant/public/cpp/assistant_service.h" +#include "chromeos/services/libassistant/public/mojom/audio_input_controller.mojom.h" +#include "libassistant/shared/public/platform_audio_input.h" +#include "media/base/audio_capturer_source.h" +#include "mojo/public/cpp/bindings/remote.h" + +namespace chromeos { +namespace libassistant { + +class AudioInputStream; + +class COMPONENT_EXPORT(LIBASSISTANT_SERVICE) AudioInputImpl + : public assistant_client::AudioInput, + public media::AudioCapturerSource::CaptureCallback { + public: + explicit AudioInputImpl(const base::Optional<std::string>& device_id); + AudioInputImpl(const AudioInputImpl&) = delete; + AudioInputImpl& operator=(const AudioInputImpl&) = delete; + ~AudioInputImpl() override; + + class HotwordStateManager { + public: + explicit HotwordStateManager(AudioInputImpl* audio_input_); + HotwordStateManager(const HotwordStateManager&) = delete; + HotwordStateManager& operator=(const HotwordStateManager&) = delete; + virtual ~HotwordStateManager() = default; + + virtual void OnConversationTurnStarted() {} + virtual void OnConversationTurnFinished() {} + virtual void OnCaptureDataArrived() {} + virtual void RecreateAudioInputStream(); + + protected: + AudioInputImpl* input_; + }; + + void RecreateStateManager(); + + void Bind(mojo::PendingRemote<mojom::AudioStreamFactoryDelegate> delegate); + + // media::AudioCapturerSource::CaptureCallback overrides: + void Capture(const media::AudioBus* audio_source, + base::TimeTicks audio_capture_time, + double volume, + bool key_pressed) override; + void OnCaptureError(const std::string& message) override; + void OnCaptureMuted(bool is_muted) override; + + // assistant_client::AudioInput overrides. These function are called by + // assistant from assistant thread, for which we should not assume any + // //base related thread context to be in place. + assistant_client::BufferFormat GetFormat() const override; + void AddObserver(assistant_client::AudioInput::Observer* observer) override; + void RemoveObserver( + assistant_client::AudioInput::Observer* observer) override; + + // Called when the mic state associated with the interaction is changed. + void SetMicState(bool mic_open); + void OnConversationTurnStarted(); + void OnConversationTurnFinished(); + + // Called when hotword enabled status changed. + void OnHotwordEnabled(bool enable); + + void SetDeviceId(const base::Optional<std::string>& device_id); + void SetHotwordDeviceId(const base::Optional<std::string>& device_id); + + // Called when the user opens/closes the lid. + void OnLidStateChanged(mojom::LidState new_state); + + void RecreateAudioInputStream(bool use_dsp); + + bool IsHotwordAvailable() const; + + // Returns the recording state used in unittests. + bool IsRecordingForTesting() const; + // Returns if the hotword device is used for recording now. + bool IsUsingHotwordDeviceForTesting() const; + // Returns the id of the device that is currently recording audio. + // Returns nullopt if no audio is being recorded. + base::Optional<std::string> GetOpenDeviceIdForTesting() const; + // Returns if dead stream detection is being used for the current audio + // recording. Returns nullopt if no audio is being recorded. + base::Optional<bool> IsUsingDeadStreamDetectionForTesting() const; + + private: + void StartRecording(); + void StopRecording(); + void UpdateRecordingState(); + + std::string GetDeviceId(bool use_dsp) const; + bool ShouldEnableDeadStreamDetection(bool use_dsp) const; + + // User explicitly requested to open microphone. + bool mic_open_ = false; + + // Whether hotword is currently enabled. + bool hotword_enabled_ = true; + + // Guards observers_; + base::Lock lock_; + std::vector<assistant_client::AudioInput::Observer*> observers_; + + // This is the total number of frames captured during the life time of this + // object. We don't worry about overflow because this count is only used for + // logging purposes. If in the future this changes, we should re-evaluate. + int captured_frames_count_ = 0; + base::TimeTicks last_frame_count_report_time_; + + // To be initialized on assistant thread the first call to AddObserver. + // It ensures that AddObserver / RemoveObserver are called on the same + // sequence. + SEQUENCE_CHECKER(observer_sequence_checker_); + + scoped_refptr<base::SequencedTaskRunner> task_runner_; + + std::unique_ptr<HotwordStateManager> state_manager_; + + mojo::Remote<mojom::AudioStreamFactoryDelegate> + audio_stream_factory_delegate_; + + // Preferred audio input device which will be used for capture. + base::Optional<std::string> preferred_device_id_; + // Hotword input device used for hardware based hotword detection. + base::Optional<std::string> hotword_device_id_; + + // Currently open audio stream. nullptr if no audio stream is open. + std::unique_ptr<AudioInputStream> open_audio_stream_; + + // Start with lidstate |kClosed| so we do not open the microphone before we + // know if the lid is open or closed. + mojom::LidState lid_state_ = mojom::LidState ::kClosed; + + base::WeakPtrFactory<AudioInputImpl> weak_factory_; +}; + +} // namespace libassistant +} // namespace chromeos + +#endif // CHROMEOS_SERVICES_LIBASSISTANT_AUDIO_AUDIO_INPUT_IMPL_H_
diff --git a/chromeos/services/libassistant/audio/audio_input_provider_impl.cc b/chromeos/services/libassistant/audio/audio_input_provider_impl.cc new file mode 100644 index 0000000..b79b6a1 --- /dev/null +++ b/chromeos/services/libassistant/audio/audio_input_provider_impl.cc
@@ -0,0 +1,30 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/services/libassistant/audio/audio_input_provider_impl.h" + +#include "base/time/time.h" +#include "chromeos/services/assistant/public/cpp/features.h" + +namespace chromeos { +namespace libassistant { + +AudioInputProviderImpl::AudioInputProviderImpl() + : audio_input_(/*device_id=*/base::nullopt) {} + +AudioInputProviderImpl::~AudioInputProviderImpl() = default; + +AudioInputImpl& AudioInputProviderImpl::GetAudioInput() { + return audio_input_; +} + +int64_t AudioInputProviderImpl::GetCurrentAudioTime() { + if (chromeos::assistant::features::IsAudioEraserEnabled()) + return base::TimeTicks::Now().since_origin().InMicroseconds(); + + return 0; +} + +} // namespace libassistant +} // namespace chromeos
diff --git a/chromeos/services/libassistant/audio/audio_input_provider_impl.h b/chromeos/services/libassistant/audio/audio_input_provider_impl.h new file mode 100644 index 0000000..a0b677b --- /dev/null +++ b/chromeos/services/libassistant/audio/audio_input_provider_impl.h
@@ -0,0 +1,36 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_SERVICES_LIBASSISTANT_AUDIO_AUDIO_INPUT_PROVIDER_IMPL_H_ +#define CHROMEOS_SERVICES_LIBASSISTANT_AUDIO_AUDIO_INPUT_PROVIDER_IMPL_H_ + +#include <cstdint> +#include <memory> + +#include "base/macros.h" +#include "chromeos/services/libassistant/audio/audio_input_impl.h" +#include "libassistant/shared/public/platform_audio_input.h" + +namespace chromeos { +namespace libassistant { + +class AudioInputProviderImpl : public assistant_client::AudioInputProvider { + public: + AudioInputProviderImpl(); + AudioInputProviderImpl(const AudioInputProviderImpl&) = delete; + AudioInputProviderImpl& operator=(const AudioInputProviderImpl&) = delete; + ~AudioInputProviderImpl() override; + + // assistant_client::AudioInputProvider overrides: + AudioInputImpl& GetAudioInput() override; + int64_t GetCurrentAudioTime() override; + + private: + AudioInputImpl audio_input_; +}; + +} // namespace libassistant +} // namespace chromeos + +#endif // CHROMEOS_SERVICES_LIBASSISTANT_AUDIO_AUDIO_INPUT_PROVIDER_IMPL_H_
diff --git a/chromeos/services/libassistant/audio/audio_input_stream.cc b/chromeos/services/libassistant/audio/audio_input_stream.cc new file mode 100644 index 0000000..776ce702 --- /dev/null +++ b/chromeos/services/libassistant/audio/audio_input_stream.cc
@@ -0,0 +1,84 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/services/libassistant/audio/audio_input_stream.h" + +#include "base/notreached.h" +#include "chromeos/services/libassistant/public/mojom/audio_input_controller.mojom.h" + +namespace chromeos { +namespace libassistant { + +namespace { + +audio::DeadStreamDetection ToDeadStreamDetection(bool detect_dead_stream) { + return detect_dead_stream ? audio::DeadStreamDetection::kEnabled + : audio::DeadStreamDetection::kDisabled; +} + +} // namespace + +AudioInputStream::AudioInputStream( + mojom::AudioStreamFactoryDelegate* delegate, + const std::string& device_id, + bool detect_dead_stream, + assistant_client::BufferFormat buffer_format, + media::AudioCapturerSource::CaptureCallback* capture_callback) + : device_id_(device_id), + detect_dead_stream_(detect_dead_stream), + buffer_format_(buffer_format), + delegate_(delegate), + capture_callback_(capture_callback) { + Start(); +} + +AudioInputStream::~AudioInputStream() { + Stop(); +} + +void AudioInputStream::Start() { + delegate_->GetAudioStreamFactory( + base::BindOnce(&AudioInputStream::OnAudioSteamFactoryReady, + weak_ptr_factory_.GetWeakPtr())); +} + +void AudioInputStream::OnAudioSteamFactoryReady( + mojo::PendingRemote<audio::mojom::StreamFactory> audio_stream_factory) { + if (!audio_stream_factory.is_valid()) + return; + + source_ = + audio::CreateInputDevice(std::move(audio_stream_factory), device_id(), + ToDeadStreamDetection(detect_dead_stream_)); + + source_->Initialize(GetAudioParameters(), capture_callback_); + source_->Start(); +} + +void AudioInputStream::Stop() { + if (source_) { + source_->Stop(); + source_.reset(); + } +} + +media::AudioParameters AudioInputStream::GetAudioParameters() const { + // AUDIO_PCM_LINEAR and AUDIO_PCM_LOW_LATENCY are the same on CRAS. + auto result = media::AudioParameters( + media::AudioParameters::AUDIO_PCM_LOW_LATENCY, + media::GuessChannelLayout(buffer_format_.num_channels), + buffer_format_.sample_rate, + buffer_format_.sample_rate / 10 /* buffer size for 100 ms */); + + // Set the HOTWORD mask so CRAS knows the device is used for HOTWORD purpose + // and is able to conduct the tuning specifically for the scenario. Whether + // the HOTWORD is conducted by a hotword device or other devices like + // internal mic will be determined by the device_id passed to CRAS. + result.set_effects(media::AudioParameters::PlatformEffectsMask::HOTWORD); + + return result; +} + +} // namespace libassistant +} // namespace chromeos
diff --git a/chromeos/services/libassistant/audio/audio_input_stream.h b/chromeos/services/libassistant/audio/audio_input_stream.h new file mode 100644 index 0000000..58f218d --- /dev/null +++ b/chromeos/services/libassistant/audio/audio_input_stream.h
@@ -0,0 +1,65 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_SERVICES_LIBASSISTANT_AUDIO_AUDIO_INPUT_STREAM_H_ +#define CHROMEOS_SERVICES_LIBASSISTANT_AUDIO_AUDIO_INPUT_STREAM_H_ + +#include <string> + +#include "base/memory/scoped_refptr.h" +#include "base/memory/weak_ptr.h" +#include "chromeos/services/libassistant/public/mojom/audio_input_controller.mojom-forward.h" +#include "libassistant/shared/public/platform_audio_buffer.h" +#include "media/base/audio_capturer_source.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "services/audio/public/cpp/device_factory.h" +#include "services/audio/public/mojom/stream_factory.mojom.h" + +namespace chromeos { +namespace libassistant { + +// A single audio stream. All captured packets will be sent to the given +// capture callback. +// The audio stream will be opened as soon as this class is created, and +// will be closed in the destructor. +class AudioInputStream { + public: + AudioInputStream( + mojom::AudioStreamFactoryDelegate* delegate, + const std::string& device_id, + bool detect_dead_stream, + assistant_client::BufferFormat buffer_format, + media::AudioCapturerSource::CaptureCallback* capture_callback); + AudioInputStream(AudioInputStream&) = delete; + AudioInputStream& operator=(AudioInputStream&) = delete; + ~AudioInputStream(); + + const std::string& device_id() const { return device_id_; } + + bool has_dead_stream_detection() const { return detect_dead_stream_; } + + private: + void Start(); + + void OnAudioSteamFactoryReady( + mojo::PendingRemote<audio::mojom::StreamFactory> audio_stream_factory); + + void Stop(); + + media::AudioParameters GetAudioParameters() const; + + // Device used for recording. + std::string device_id_; + bool detect_dead_stream_; + assistant_client::BufferFormat buffer_format_; + mojom::AudioStreamFactoryDelegate* const delegate_; + media::AudioCapturerSource::CaptureCallback* const capture_callback_; + scoped_refptr<media::AudioCapturerSource> source_; + base::WeakPtrFactory<AudioInputStream> weak_ptr_factory_{this}; +}; + +} // namespace libassistant +} // namespace chromeos + +#endif // CHROMEOS_SERVICES_LIBASSISTANT_AUDIO_AUDIO_INPUT_STREAM_H_
diff --git a/chromeos/services/libassistant/audio_input_controller.cc b/chromeos/services/libassistant/audio_input_controller.cc new file mode 100644 index 0000000..ff05e6b --- /dev/null +++ b/chromeos/services/libassistant/audio_input_controller.cc
@@ -0,0 +1,60 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/services/libassistant/audio_input_controller.h" + +#include "base/notreached.h" + +namespace chromeos { +namespace libassistant { + +AudioInputController::AudioInputController() = default; + +AudioInputController::~AudioInputController() = default; + +void AudioInputController::Bind( + mojo::PendingReceiver<mojom::AudioInputController> receiver, + mojo::PendingRemote<mojom::AudioStreamFactoryDelegate> delegate) { + receiver_.Bind(std::move(receiver)); + audio_input().Bind(std::move(delegate)); +} + +void AudioInputController::SetMicOpen(bool mic_open) { + audio_input().SetMicState(mic_open); +} + +void AudioInputController::SetHotwordEnabled(bool enable) { + audio_input().OnHotwordEnabled(enable); +} + +void AudioInputController::SetDeviceId( + const base::Optional<std::string>& device_id) { + DCHECK(device_id != ""); + audio_input().SetDeviceId(device_id); +} + +void AudioInputController::SetHotwordDeviceId( + const base::Optional<std::string>& device_id) { + DCHECK(device_id != ""); + audio_input().SetHotwordDeviceId(device_id); +} + +void AudioInputController::SetLidState(mojom::LidState new_state) { + audio_input().OnLidStateChanged(new_state); +} + +void AudioInputController::OnConversationTurnStarted() { + audio_input().OnConversationTurnStarted(); +} + +void AudioInputController::OnConversationTurnFinished() { + audio_input().OnConversationTurnFinished(); +} + +AudioInputImpl& AudioInputController::audio_input() { + return audio_input_provider().GetAudioInput(); +} + +} // namespace libassistant +} // namespace chromeos
diff --git a/chromeos/services/libassistant/audio_input_controller.h b/chromeos/services/libassistant/audio_input_controller.h new file mode 100644 index 0000000..ab2651e --- /dev/null +++ b/chromeos/services/libassistant/audio_input_controller.h
@@ -0,0 +1,53 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_SERVICES_LIBASSISTANT_AUDIO_INPUT_CONTROLLER_H_ +#define CHROMEOS_SERVICES_LIBASSISTANT_AUDIO_INPUT_CONTROLLER_H_ + +#include "chromeos/services/libassistant/audio/audio_input_provider_impl.h" +#include "chromeos/services/libassistant/public/mojom/audio_input_controller.mojom.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/receiver.h" + +namespace chromeos { +namespace libassistant { + +// Implementation of |mojom::AudioInputController| that will forward all calls +// to a Libassistant V1 |assistant_client::AudioInputProvider| implementation. +class COMPONENT_EXPORT(LIBASSISTANT_SERVICE) AudioInputController + : public mojom::AudioInputController { + public: + AudioInputController(); + AudioInputController(AudioInputController&) = delete; + AudioInputController& operator=(AudioInputController&) = delete; + ~AudioInputController() override; + + void Bind(mojo::PendingReceiver<mojom::AudioInputController> receiver, + mojo::PendingRemote<mojom::AudioStreamFactoryDelegate> delegate); + + // mojom::AudioInputController implementation: + void SetMicOpen(bool mic_open) override; + void SetHotwordEnabled(bool enable) override; + void SetDeviceId(const base::Optional<std::string>& device_id) override; + void SetHotwordDeviceId( + const base::Optional<std::string>& device_id) override; + void SetLidState(mojom::LidState new_state) override; + void OnConversationTurnStarted() override; + void OnConversationTurnFinished() override; + + AudioInputProviderImpl& audio_input_provider() { + return audio_input_provider_; + } + + private: + AudioInputImpl& audio_input(); + + mojo::Receiver<mojom::AudioInputController> receiver_{this}; + AudioInputProviderImpl audio_input_provider_; +}; + +} // namespace libassistant +} // namespace chromeos + +#endif // CHROMEOS_SERVICES_LIBASSISTANT_AUDIO_INPUT_CONTROLLER_H_
diff --git a/chromeos/services/libassistant/audio_input_controller_unittest.cc b/chromeos/services/libassistant/audio_input_controller_unittest.cc new file mode 100644 index 0000000..2a291c63 --- /dev/null +++ b/chromeos/services/libassistant/audio_input_controller_unittest.cc
@@ -0,0 +1,346 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/services/libassistant/audio_input_controller.h" + +#include "base/test/gtest_util.h" +#include "base/test/scoped_feature_list.h" +#include "base/test/task_environment.h" +#include "chromeos/services/assistant/public/cpp/features.h" +#include "chromeos/services/libassistant/audio/audio_input_impl.h" +#include "chromeos/services/libassistant/public/mojom/audio_input_controller.mojom.h" +#include "media/audio/audio_device_description.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" +#include "services/audio/public/cpp/fake_stream_factory.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace chromeos { +namespace libassistant { + +namespace { +using mojom::LidState; + +class FakeAudioInputObserver : public assistant_client::AudioInput::Observer { + public: + FakeAudioInputObserver() = default; + FakeAudioInputObserver(FakeAudioInputObserver&) = delete; + FakeAudioInputObserver& operator=(FakeAudioInputObserver&) = delete; + ~FakeAudioInputObserver() override = default; + + // assistant_client::AudioInput::Observer implementation: + void OnAudioBufferAvailable(const assistant_client::AudioBuffer& buffer, + int64_t timestamp) override {} + void OnAudioError(assistant_client::AudioInput::Error error) override {} + void OnAudioStopped() override {} +}; + +class FakeAudioStreamFactoryDelegate + : public mojom::AudioStreamFactoryDelegate { + public: + FakeAudioStreamFactoryDelegate() = default; + FakeAudioStreamFactoryDelegate(FakeAudioStreamFactoryDelegate&) = delete; + FakeAudioStreamFactoryDelegate& operator=(FakeAudioStreamFactoryDelegate&) = + delete; + ~FakeAudioStreamFactoryDelegate() override = default; + + // mojom::AudioStreamFactoryDelegate implementation: + void GetAudioStreamFactory(GetAudioStreamFactoryCallback callback) override { + if (return_null_) { + // A null pending remote is simply an unbound pending remote. + std::move(callback).Run( + mojo::PendingRemote<audio::mojom::StreamFactory>()); + } else { + std::move(callback).Run(stream_factory_.MakeRemote()); + // Without resetting the receiver the test will abort because the code + // calls AudioStreamFactory::CreateInputStream() and expects an answer, + // but the |FakeStreamFactory| simply drops the call and never calls the + // callback. + // By resetting the callback the code is happy. + stream_factory_.ResetReceiver(); + } + } + + mojo::PendingRemote<mojom::AudioStreamFactoryDelegate> + BindNewPipeAndPassRemote() { + return delegate_.BindNewPipeAndPassRemote(); + } + + void StartReturningNull() { return_null_ = true; } + + private: + mojo::Receiver<mojom::AudioStreamFactoryDelegate> delegate_{this}; + audio::FakeStreamFactory stream_factory_; + + // Causes |GetAudioStreamFactory| to return null to the callback instead of + // a valid stream factory. + bool return_null_ = false; +}; + +class AssistantAudioInputControllerTest : public testing::Test { + public: + AssistantAudioInputControllerTest() : controller_() { + controller_.Bind(client_.BindNewPipeAndPassReceiver(), + audio_stream_factory_delegate_.BindNewPipeAndPassRemote()); + + // Enable DSP feature flag. + scoped_feature_list_.InitAndEnableFeature( + assistant::features::kEnableDspHotword); + } + + // See |InitializeForTestOfType| for an explanation of this enum. + enum TestType { + kLidStateTest, + kAudioInputObserverTest, + kDeviceIdTest, + kHotwordDeviceIdTest, + kHotwordEnabledTest, + }; + + // To successfully start recording audio, a lot of requirements must be met + // (we need a device-id, an audio-input-observer, the lid must be open, and so + // on). + // This method will ensure all these requirements are met *except* the ones + // that we're testing. So for example if you call + // InitializeForTestOfType(kLidState) then this will ensure all requirements + // are set but not the lid state (which is left in its initial value). + void InitializeForTestOfType(TestType type) { + if (type != kLidStateTest) + SetLidState(LidState::kOpen); + + if (type != kAudioInputObserverTest) + AddAudioInputObserver(); + + if (type != kDeviceIdTest) + SetDeviceId("fake-audio-device"); + + if (type != kHotwordEnabledTest) + SetHotwordEnabled(true); + } + + mojo::Remote<mojom::AudioInputController>& client() { return client_; } + + AudioInputController& controller() { return controller_; } + + AudioInputImpl& audio_input() { + return controller().audio_input_provider().GetAudioInput(); + } + + FakeAudioStreamFactoryDelegate& audio_stream_factory_delegate() { + return audio_stream_factory_delegate_; + } + + bool IsRecordingAudio() { return audio_input().IsRecordingForTesting(); } + + bool IsUsingDeadStreamDetection() { + return audio_input().IsUsingDeadStreamDetectionForTesting().value_or(false); + } + + std::string GetOpenDeviceId() { + return audio_input().GetOpenDeviceIdForTesting().value_or("<none>"); + } + + void SetLidState(LidState new_state) { + client()->SetLidState(new_state); + client().FlushForTesting(); + } + + void SetDeviceId(const base::Optional<std::string>& value) { + client()->SetDeviceId(value); + client().FlushForTesting(); + } + + void SetHotwordDeviceId(const base::Optional<std::string>& value) { + client()->SetHotwordDeviceId(value); + client().FlushForTesting(); + } + + void SetHotwordEnabled(bool value) { + client()->SetHotwordEnabled(value); + client().FlushForTesting(); + } + + void SetMicOpen(bool mic_open) { + client()->SetMicOpen(mic_open); + client().FlushForTesting(); + } + + void AddAudioInputObserver() { + audio_input().AddObserver(&audio_input_observer_); + } + + void OnConversationTurnStarted() { controller().OnConversationTurnStarted(); } + + void OnConversationTurnFinished() { + controller().OnConversationTurnFinished(); + } + + private: + base::test::SingleThreadTaskEnvironment environment_; + base::test::ScopedFeatureList scoped_feature_list_; + mojo::Remote<mojom::AudioInputController> client_; + AudioInputController controller_; + FakeAudioInputObserver audio_input_observer_; + FakeAudioStreamFactoryDelegate audio_stream_factory_delegate_; +}; + +} // namespace + +TEST_F(AssistantAudioInputControllerTest, ShouldOnlyRecordWhenLidIsOpen) { + InitializeForTestOfType(kLidStateTest); + + // Initially the lid is considered closed. + EXPECT_FALSE(IsRecordingAudio()); + + SetLidState(LidState::kOpen); + EXPECT_TRUE(IsRecordingAudio()); + + SetLidState(LidState::kClosed); + EXPECT_FALSE(IsRecordingAudio()); +} + +TEST_F(AssistantAudioInputControllerTest, ShouldOnlyRecordWhenDeviceIdIsSet) { + InitializeForTestOfType(kDeviceIdTest); + + // Initially there is no device id. + EXPECT_FALSE(IsRecordingAudio()); + + SetDeviceId("device-id"); + EXPECT_TRUE(IsRecordingAudio()); + + SetDeviceId(base::nullopt); + EXPECT_FALSE(IsRecordingAudio()); +} + +TEST_F(AssistantAudioInputControllerTest, StopOnlyRecordWhenHotwordIsEnabled) { + InitializeForTestOfType(kHotwordEnabledTest); + + // Hotword is enabled by default. + EXPECT_TRUE(IsRecordingAudio()); + + SetHotwordEnabled(false); + EXPECT_FALSE(IsRecordingAudio()); + + SetHotwordEnabled(true); + EXPECT_TRUE(IsRecordingAudio()); +} + +TEST_F(AssistantAudioInputControllerTest, + StartRecordingWhenDisableHotwordAndForceOpenMic) { + InitializeForTestOfType(kHotwordEnabledTest); + SetHotwordEnabled(false); + EXPECT_FALSE(IsRecordingAudio()); + + // Force open mic should start recording. + SetMicOpen(true); + EXPECT_TRUE(IsRecordingAudio()); + + SetMicOpen(false); + EXPECT_FALSE(IsRecordingAudio()); +} + +TEST_F(AssistantAudioInputControllerTest, ShouldUseProvidedDeviceId) { + InitializeForTestOfType(kDeviceIdTest); + SetDeviceId("the-expected-device-id"); + + EXPECT_TRUE(IsRecordingAudio()); + EXPECT_EQ("the-expected-device-id", GetOpenDeviceId()); +} + +TEST_F(AssistantAudioInputControllerTest, + ShouldSwitchToHotwordDeviceIdWhenSet) { + InitializeForTestOfType(kHotwordDeviceIdTest); + + SetDeviceId("the-device-id"); + EXPECT_TRUE(IsRecordingAudio()); + EXPECT_EQ("the-device-id", GetOpenDeviceId()); + + SetHotwordDeviceId("the-hotword-device-id"); + EXPECT_TRUE(IsRecordingAudio()); + EXPECT_EQ("the-hotword-device-id", GetOpenDeviceId()); +} + +TEST_F(AssistantAudioInputControllerTest, + ShouldKeepUsingHotwordDeviceIdWhenDeviceIdChanges) { + InitializeForTestOfType(kHotwordDeviceIdTest); + + SetDeviceId("the-original-device-id"); + SetHotwordDeviceId("the-hotword-device-id"); + + EXPECT_TRUE(IsRecordingAudio()); + EXPECT_EQ("the-hotword-device-id", GetOpenDeviceId()); + + SetDeviceId("the-new-device-id"); + EXPECT_TRUE(IsRecordingAudio()); + EXPECT_EQ("the-hotword-device-id", GetOpenDeviceId()); +} + +TEST_F(AssistantAudioInputControllerTest, + ShouldUseDefaultDeviceIdIfNoDeviceIdIsSet) { + InitializeForTestOfType(kDeviceIdTest); + // Mic must be open, otherwise we will not start recording audio if the + // device id is not set. + SetMicOpen(true); + SetDeviceId(base::nullopt); + SetHotwordDeviceId(base::nullopt); + + EXPECT_TRUE(IsRecordingAudio()); + EXPECT_EQ(media::AudioDeviceDescription::kDefaultDeviceId, GetOpenDeviceId()); +} + +TEST_F(AssistantAudioInputControllerTest, + DeadStreamDetectionShouldBeDisabledWhenUsingHotwordDevice) { + InitializeForTestOfType(kHotwordDeviceIdTest); + + SetHotwordDeviceId(base::nullopt); + EXPECT_TRUE(IsUsingDeadStreamDetection()); + + SetHotwordDeviceId("fake-hotword-device"); + EXPECT_FALSE(IsUsingDeadStreamDetection()); +} + +TEST_F(AssistantAudioInputControllerTest, + ShouldNotCrashWhenDelegateReturnsNull) { + InitializeForTestOfType(kDeviceIdTest); + audio_stream_factory_delegate().StartReturningNull(); + + SetDeviceId("device-id"); + + EXPECT_TRUE(IsRecordingAudio()); +} + +TEST_F(AssistantAudioInputControllerTest, + ShouldSwitchToNormalAudioDeviceWhenConversationTurnStarts) { + InitializeForTestOfType(kDeviceIdTest); + SetDeviceId("normal-device-id"); + SetHotwordDeviceId("hotword-device-id"); + + // While checking for hotword we should be using the hotword device. + EXPECT_EQ("hotword-device-id", GetOpenDeviceId()); + + // But once the conversation starts we should be using the normal audio + // device. + OnConversationTurnStarted(); + EXPECT_EQ("normal-device-id", GetOpenDeviceId()); +} + +TEST_F(AssistantAudioInputControllerTest, + ShouldSwitchToHotwordAudioDeviceWhenConversationIsFinished) { + InitializeForTestOfType(kDeviceIdTest); + SetDeviceId("normal-device-id"); + SetHotwordDeviceId("hotword-device-id"); + + // During the conversation we should be using the normal audio device. + OnConversationTurnStarted(); + EXPECT_EQ("normal-device-id", GetOpenDeviceId()); + + // But once the conversation finishes, we should check for hotwords using the + // hotword device. + OnConversationTurnFinished(); + EXPECT_EQ("hotword-device-id", GetOpenDeviceId()); +} + +} // namespace libassistant +} // namespace chromeos
diff --git a/chromeos/services/libassistant/libassistant_service.cc b/chromeos/services/libassistant/libassistant_service.cc index 9a4f3ee..d911a494d 100644 --- a/chromeos/services/libassistant/libassistant_service.cc +++ b/chromeos/services/libassistant/libassistant_service.cc
@@ -10,6 +10,7 @@ #include "base/check.h" #include "base/logging.h" #include "chromeos/services/assistant/public/cpp/migration/cros_platform_api.h" +#include "chromeos/services/libassistant/audio_input_controller.h" #include "chromeos/services/libassistant/conversation_controller.h" #include "chromeos/services/libassistant/platform_api.h" #include "chromeos/services/libassistant/service_controller.h" @@ -26,7 +27,8 @@ service_controller_( std::make_unique<ServiceController>(delegate, platform_api_.get())), conversation_controller_( - std::make_unique<ConversationController>(service_controller_.get())) { + std::make_unique<ConversationController>(service_controller_.get())), + audio_input_controller_(std::make_unique<AudioInputController>()) { platform_api_->SetAudioInputProvider(&platform_api->GetAudioInputProvider()) .SetAudioOutputProvider(&platform_api->GetAudioOutputProvider()) .SetAuthProvider(&platform_api->GetAuthProvider()) @@ -44,6 +46,8 @@ mojo::PendingReceiver<mojom::ConversationController> conversation_controller, mojo::PendingReceiver<mojom::ServiceController> service_controller) { + audio_input_controller_->Bind(std::move(audio_input_controller), + std::move(audio_stream_factory_delegate)); service_controller_->Bind(std::move(service_controller)); conversation_controller_->Bind(std::move(conversation_controller)); }
diff --git a/chromeos/services/libassistant/libassistant_service.h b/chromeos/services/libassistant/libassistant_service.h index 28ff1b16..26f10975 100644 --- a/chromeos/services/libassistant/libassistant_service.h +++ b/chromeos/services/libassistant/libassistant_service.h
@@ -29,6 +29,7 @@ namespace chromeos { namespace libassistant { +class AudioInputController; class ConversationController; class PlatformApi; class ServiceController; @@ -67,6 +68,7 @@ std::unique_ptr<PlatformApi> platform_api_; std::unique_ptr<ServiceController> service_controller_; std::unique_ptr<ConversationController> conversation_controller_; + std::unique_ptr<AudioInputController> audio_input_controller_; }; } // namespace libassistant
diff --git a/chromeos/services/multidevice_setup/BUILD.gn b/chromeos/services/multidevice_setup/BUILD.gn index 3a38499..edf6fcb 100644 --- a/chromeos/services/multidevice_setup/BUILD.gn +++ b/chromeos/services/multidevice_setup/BUILD.gn
@@ -75,6 +75,7 @@ "//chromeos/services/secure_channel/public/mojom", "//components/pref_registry", "//components/prefs:prefs", + "//components/session_manager/core", "//url", ] @@ -162,6 +163,7 @@ "//chromeos/services/multidevice_setup/public/cpp:unit_tests", "//chromeos/services/multidevice_setup/public/mojom", "//chromeos/services/secure_channel/public/cpp/client:test_support", + "//components/session_manager/core", "//components/sync_preferences:test_support", "//testing/gmock", "//testing/gtest",
diff --git a/chromeos/services/multidevice_setup/DEPS b/chromeos/services/multidevice_setup/DEPS index 349eb8dd..0ec7019 100644 --- a/chromeos/services/multidevice_setup/DEPS +++ b/chromeos/services/multidevice_setup/DEPS
@@ -2,6 +2,7 @@ "+chrome/common/url_constants.h", "+components/proximity_auth/logging/logging.h", '+components/keyed_service/core', + "+components/session_manager/core", "+components/sync_preferences/testing_pref_service_syncable.h", "+components/variations", "+mojo/public/cpp/bindings",
diff --git a/chromeos/services/multidevice_setup/account_status_change_delegate_notifier.h b/chromeos/services/multidevice_setup/account_status_change_delegate_notifier.h index 9d988342..f081280 100644 --- a/chromeos/services/multidevice_setup/account_status_change_delegate_notifier.h +++ b/chromeos/services/multidevice_setup/account_status_change_delegate_notifier.h
@@ -41,6 +41,8 @@ friend class MultiDeviceSetupImpl; friend class MultiDeviceSetupAccountStatusChangeDelegateNotifierTest; friend class MultiDeviceSetupImplTest; + friend class WifiSyncFeatureManagerImpl; + friend class MultiDeviceSetupWifiSyncFeatureManagerImplTest; void FlushForTesting();
diff --git a/chromeos/services/multidevice_setup/fake_account_status_change_delegate.cc b/chromeos/services/multidevice_setup/fake_account_status_change_delegate.cc index db9ebd49a..90d76f9 100644 --- a/chromeos/services/multidevice_setup/fake_account_status_change_delegate.cc +++ b/chromeos/services/multidevice_setup/fake_account_status_change_delegate.cc
@@ -37,6 +37,10 @@ ++num_existing_user_chromebook_added_events_handled_; } +void FakeAccountStatusChangeDelegate::OnBecameEligibleForWifiSync() { + ++num_eligible_for_wifi_sync_events_handled_; +} + } // namespace multidevice_setup } // namespace chromeos
diff --git a/chromeos/services/multidevice_setup/fake_account_status_change_delegate.h b/chromeos/services/multidevice_setup/fake_account_status_change_delegate.h index 90d0514..8cacd8d 100644 --- a/chromeos/services/multidevice_setup/fake_account_status_change_delegate.h +++ b/chromeos/services/multidevice_setup/fake_account_status_change_delegate.h
@@ -23,22 +23,26 @@ mojo::PendingRemote<mojom::AccountStatusChangeDelegate> GenerateRemote(); - size_t num_new_user_potential_host_events_handled() { + size_t num_new_user_potential_host_events_handled() const { return num_new_user_potential_host_events_handled_; } - size_t num_no_longer_new_user_events_handled() { + size_t num_no_longer_new_user_events_handled() const { return num_no_longer_new_user_events_handled_; } - size_t num_existing_user_host_switched_events_handled() { + size_t num_existing_user_host_switched_events_handled() const { return num_existing_user_host_switched_events_handled_; } - size_t num_existing_user_chromebook_added_events_handled() { + size_t num_existing_user_chromebook_added_events_handled() const { return num_existing_user_chromebook_added_events_handled_; } + size_t num_eligible_for_wifi_sync_events_handled() const { + return num_eligible_for_wifi_sync_events_handled_; + } + // mojom::AccountStatusChangeDelegate: void OnPotentialHostExistsForNewUser() override; void OnNoLongerNewUser() override; @@ -46,12 +50,14 @@ const std::string& new_host_device_name) override; void OnNewChromebookAddedForExistingUser( const std::string& new_host_device_name) override; + void OnBecameEligibleForWifiSync() override; private: size_t num_new_user_potential_host_events_handled_ = 0u; size_t num_no_longer_new_user_events_handled_ = 0u; size_t num_existing_user_host_switched_events_handled_ = 0u; size_t num_existing_user_chromebook_added_events_handled_ = 0u; + size_t num_eligible_for_wifi_sync_events_handled_ = 0u; mojo::ReceiverSet<mojom::AccountStatusChangeDelegate> receivers_;
diff --git a/chromeos/services/multidevice_setup/multidevice_setup_impl.cc b/chromeos/services/multidevice_setup/multidevice_setup_impl.cc index c9ef714..acfb478 100644 --- a/chromeos/services/multidevice_setup/multidevice_setup_impl.cc +++ b/chromeos/services/multidevice_setup/multidevice_setup_impl.cc
@@ -121,17 +121,6 @@ host_backend_delegate_.get(), device_sync_client, pref_service)), - wifi_sync_feature_manager_(WifiSyncFeatureManagerImpl::Factory::Create( - host_status_provider_.get(), - pref_service, - device_sync_client)), - feature_state_manager_(FeatureStateManagerImpl::Factory::Create( - pref_service, - host_status_provider_.get(), - device_sync_client, - android_sms_pairing_state_tracker, - wifi_sync_feature_manager_.get(), - is_secondary_user)), host_device_timestamp_manager_( HostDeviceTimestampManagerImpl::Factory::Create( host_status_provider_.get(), @@ -144,6 +133,18 @@ host_device_timestamp_manager_.get(), oobe_completion_tracker, base::DefaultClock::GetInstance())), + wifi_sync_feature_manager_(WifiSyncFeatureManagerImpl::Factory::Create( + host_status_provider_.get(), + pref_service, + device_sync_client, + delegate_notifier_.get())), + feature_state_manager_(FeatureStateManagerImpl::Factory::Create( + pref_service, + host_status_provider_.get(), + device_sync_client, + android_sms_pairing_state_tracker, + wifi_sync_feature_manager_.get(), + is_secondary_user)), device_reenroller_( DeviceReenroller::Factory::Create(device_sync_client, gcm_device_info_provider)),
diff --git a/chromeos/services/multidevice_setup/multidevice_setup_impl.h b/chromeos/services/multidevice_setup/multidevice_setup_impl.h index cba11cbcd..c404a8c 100644 --- a/chromeos/services/multidevice_setup/multidevice_setup_impl.h +++ b/chromeos/services/multidevice_setup/multidevice_setup_impl.h
@@ -147,10 +147,10 @@ std::unique_ptr<HostStatusProvider> host_status_provider_; std::unique_ptr<GrandfatheredEasyUnlockHostDisabler> grandfathered_easy_unlock_host_disabler_; - std::unique_ptr<WifiSyncFeatureManager> wifi_sync_feature_manager_; - std::unique_ptr<FeatureStateManager> feature_state_manager_; std::unique_ptr<HostDeviceTimestampManager> host_device_timestamp_manager_; std::unique_ptr<AccountStatusChangeDelegateNotifier> delegate_notifier_; + std::unique_ptr<WifiSyncFeatureManager> wifi_sync_feature_manager_; + std::unique_ptr<FeatureStateManager> feature_state_manager_; std::unique_ptr<DeviceReenroller> device_reenroller_; std::unique_ptr<AndroidSmsAppInstallingStatusObserver> android_sms_app_installing_host_observer_;
diff --git a/chromeos/services/multidevice_setup/multidevice_setup_impl_unittest.cc b/chromeos/services/multidevice_setup/multidevice_setup_impl_unittest.cc index 164bbe84..ab637a49 100644 --- a/chromeos/services/multidevice_setup/multidevice_setup_impl_unittest.cc +++ b/chromeos/services/multidevice_setup/multidevice_setup_impl_unittest.cc
@@ -263,6 +263,7 @@ HostStatusProvider* host_status_provider, PrefService* pref_service, device_sync::DeviceSyncClient* device_sync_client, + AccountStatusChangeDelegateNotifier* delegate_notifier, std::unique_ptr<base::OneShotTimer> timer) override { EXPECT_FALSE(instance_); EXPECT_EQ(fake_host_status_provider_factory_->instance(),
diff --git a/chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom b/chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom index 818166f..043828f 100644 --- a/chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom +++ b/chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom
@@ -110,6 +110,9 @@ chromeos.device_sync.mojom.ConnectivityStatus connectivity_status; }; +// Delegate used to notify Chrome OS UI (//ash) of multidevice account changes +// from the multidevice setup service (//chromeos/services/multidevice_setup). +// Both sides currently live in the Chrome process. interface AccountStatusChangeDelegate { // Callback which indicates that one or more MultiDevice host phones are // available for setup with the MultiDevice setup flow. This function is only @@ -134,6 +137,11 @@ // the current user. This function is only called if the current user has // already set up MultiDevice features. OnNewChromebookAddedForExistingUser(string new_host_device_name); + + // Indicates that the existing host has become eligible for Wi-Fi Sync, but + // the feature is not yet enabled. This is called when the announcement + // notification should be shown. + OnBecameEligibleForWifiSync(); }; interface HostStatusObserver {
diff --git a/chromeos/services/multidevice_setup/wifi_sync_feature_manager_impl.cc b/chromeos/services/multidevice_setup/wifi_sync_feature_manager_impl.cc index b7126f74..e437c50c 100644 --- a/chromeos/services/multidevice_setup/wifi_sync_feature_manager_impl.cc +++ b/chromeos/services/multidevice_setup/wifi_sync_feature_manager_impl.cc
@@ -18,6 +18,7 @@ #include "chromeos/services/multidevice_setup/public/cpp/prefs.h" #include "components/prefs/pref_registry_simple.h" #include "components/prefs/pref_service.h" +#include "components/session_manager/core/session_manager.h" namespace chromeos { @@ -28,6 +29,12 @@ const char kPendingWifiSyncRequestEnabledPrefName[] = "multidevice_setup.pending_set_wifi_sync_enabled_request"; +// Pref to track whether the announcement notification can be shown the next +// time the device is unlocked with a verified host and wi-fi sync supported but +// disabled. +const char kCanShowAnnouncementPrefName[] = + "multidevice_setup.can_show_wifi_sync_announcement"; + // The number of minutes to wait before retrying a failed attempt. const int kNumMinutesBetweenRetries = 5; @@ -43,15 +50,17 @@ HostStatusProvider* host_status_provider, PrefService* pref_service, device_sync::DeviceSyncClient* device_sync_client, + AccountStatusChangeDelegateNotifier* delegate_notifier, std::unique_ptr<base::OneShotTimer> timer) { if (test_factory_) { return test_factory_->CreateInstance(host_status_provider, pref_service, - device_sync_client, std::move(timer)); + device_sync_client, delegate_notifier, + std::move(timer)); } - return base::WrapUnique( - new WifiSyncFeatureManagerImpl(host_status_provider, pref_service, - device_sync_client, std::move(timer))); + return base::WrapUnique(new WifiSyncFeatureManagerImpl( + host_status_provider, pref_service, device_sync_client, delegate_notifier, + std::move(timer))); } // static @@ -65,22 +74,24 @@ void WifiSyncFeatureManagerImpl::RegisterPrefs(PrefRegistrySimple* registry) { registry->RegisterIntegerPref(kPendingWifiSyncRequestEnabledPrefName, static_cast<int>(PendingState::kPendingNone)); + registry->RegisterBooleanPref(kCanShowAnnouncementPrefName, true); } -WifiSyncFeatureManagerImpl::~WifiSyncFeatureManagerImpl() = default; - WifiSyncFeatureManagerImpl::WifiSyncFeatureManagerImpl( HostStatusProvider* host_status_provider, PrefService* pref_service, device_sync::DeviceSyncClient* device_sync_client, + AccountStatusChangeDelegateNotifier* delegate_notifier, std::unique_ptr<base::OneShotTimer> timer) : WifiSyncFeatureManager(), host_status_provider_(host_status_provider), pref_service_(pref_service), device_sync_client_(device_sync_client), + delegate_notifier_(delegate_notifier), timer_(std::move(timer)) { host_status_provider_->AddObserver(this); device_sync_client_->AddObserver(this); + session_manager::SessionManager::Get()->AddObserver(this); if (GetCurrentState() == CurrentState::kValidPendingRequest) { AttemptSetWifiSyncHostStateNetworkRequest(false /* is_retry */); @@ -91,6 +102,12 @@ } } +WifiSyncFeatureManagerImpl::~WifiSyncFeatureManagerImpl() { + host_status_provider_->RemoveObserver(this); + device_sync_client_->RemoveObserver(this); + session_manager::SessionManager::Get()->RemoveObserver(this); +} + void WifiSyncFeatureManagerImpl::OnHostStatusChange( const HostStatusProvider::HostStatusWithDevice& host_status_with_device) { if (GetCurrentState() == CurrentState::kNoVerifiedHost && @@ -116,6 +133,45 @@ } } +void WifiSyncFeatureManagerImpl::OnSessionStateChanged() { + if (session_manager::SessionManager::Get()->IsUserSessionBlocked()) { + return; + } + + // Show the announcement notification when the device is unlocked and + // eligible for wi-fi sync. This is done on unlock to avoid showing the + // notification on the first sign-in when it would distract from showoff + // and other announcements. + ShowAnnouncementNotificationIfEligible(); +} + +void WifiSyncFeatureManagerImpl::ShowAnnouncementNotificationIfEligible() { + if (!IsFeatureAllowed(mojom::Feature::kWifiSync, pref_service_)) { + return; + } + + if (!pref_service_->GetBoolean(kCanShowAnnouncementPrefName)) { + return; + } + + if (!IsWifiSyncSupported()) { + return; + } + + if (GetCurrentState() == CurrentState::kNoVerifiedHost || + IsWifiSyncEnabled()) { + pref_service_->SetBoolean(kCanShowAnnouncementPrefName, false); + return; + } + + if (!delegate_notifier_->delegate()) { + return; + } + + delegate_notifier_->delegate()->OnBecameEligibleForWifiSync(); + pref_service_->SetBoolean(kCanShowAnnouncementPrefName, false); +} + void WifiSyncFeatureManagerImpl::SetIsWifiSyncEnabled(bool enabled) { if (GetCurrentState() == CurrentState::kNoVerifiedHost) { PA_LOG(ERROR) @@ -127,6 +183,7 @@ SetPendingWifiSyncHostNetworkRequest(enabled ? PendingState::kPendingEnable : PendingState::kPendingDisable); + pref_service_->SetBoolean(kCanShowAnnouncementPrefName, false); // Stop timer since new attempt is started. timer_->Stop(); @@ -150,6 +207,19 @@ multidevice::SoftwareFeatureState::kEnabled; } +bool WifiSyncFeatureManagerImpl::IsWifiSyncSupported() { + CurrentState current_state = GetCurrentState(); + if (current_state == CurrentState::kNoVerifiedHost) { + return false; + } + + return host_status_provider_->GetHostWithStatus() + .host_device() + ->GetSoftwareFeatureState( + multidevice::SoftwareFeature::kWifiSyncHost) != + multidevice::SoftwareFeatureState::kNotSupported; +} + void WifiSyncFeatureManagerImpl::ResetPendingWifiSyncHostNetworkRequest() { SetPendingWifiSyncHostNetworkRequest(PendingState::kPendingNone); timer_->Stop();
diff --git a/chromeos/services/multidevice_setup/wifi_sync_feature_manager_impl.h b/chromeos/services/multidevice_setup/wifi_sync_feature_manager_impl.h index d5c747b..5b887a6 100644 --- a/chromeos/services/multidevice_setup/wifi_sync_feature_manager_impl.h +++ b/chromeos/services/multidevice_setup/wifi_sync_feature_manager_impl.h
@@ -12,7 +12,9 @@ #include "base/timer/timer.h" #include "chromeos/components/multidevice/remote_device_ref.h" #include "chromeos/services/device_sync/public/cpp/device_sync_client.h" +#include "chromeos/services/multidevice_setup/account_status_change_delegate_notifier.h" #include "chromeos/services/multidevice_setup/wifi_sync_feature_manager.h" +#include "components/session_manager/core/session_manager_observer.h" class PrefRegistrySimple; class PrefService; @@ -32,7 +34,8 @@ class WifiSyncFeatureManagerImpl : public WifiSyncFeatureManager, public HostStatusProvider::Observer, - public device_sync::DeviceSyncClient::Observer { + public device_sync::DeviceSyncClient::Observer, + public session_manager::SessionManagerObserver { public: class Factory { public: @@ -40,6 +43,7 @@ HostStatusProvider* host_status_provider, PrefService* pref_service, device_sync::DeviceSyncClient* device_sync_client, + AccountStatusChangeDelegateNotifier* delegate_notifier, std::unique_ptr<base::OneShotTimer> timer = std::make_unique<base::OneShotTimer>()); static void SetFactoryForTesting(Factory* test_factory); @@ -50,6 +54,7 @@ HostStatusProvider* host_status_provider, PrefService* pref_service, device_sync::DeviceSyncClient* device_sync_client, + AccountStatusChangeDelegateNotifier* delegate_notifier, std::unique_ptr<base::OneShotTimer> timer) = 0; private: @@ -64,10 +69,12 @@ delete; private: - WifiSyncFeatureManagerImpl(HostStatusProvider* host_status_provider, - PrefService* pref_service, - device_sync::DeviceSyncClient* device_sync_client, - std::unique_ptr<base::OneShotTimer> timer); + WifiSyncFeatureManagerImpl( + HostStatusProvider* host_status_provider, + PrefService* pref_service, + device_sync::DeviceSyncClient* device_sync_client, + AccountStatusChangeDelegateNotifier* delegate_notifier, + std::unique_ptr<base::OneShotTimer> timer); // HostStatusProvider::Observer, void OnHostStatusChange(const HostStatusProvider::HostStatusWithDevice& @@ -76,6 +83,9 @@ // DeviceSyncClient::Observer: void OnNewDevicesSynced() override; + // SessionManagerObserver: + void OnSessionStateChanged() override; + // WifiSyncFeatureManager: // Attempts to enable/disable WIFI_SYNC_HOST on the backend for the host @@ -124,10 +134,13 @@ bool ShouldEnableOnVerify(); void ProcessEnableOnVerifyAttempt(); bool ShouldAttemptToEnableAfterHostVerified(); + void ShowAnnouncementNotificationIfEligible(); + bool IsWifiSyncSupported(); HostStatusProvider* host_status_provider_; PrefService* pref_service_; device_sync::DeviceSyncClient* device_sync_client_; + AccountStatusChangeDelegateNotifier* delegate_notifier_; std::unique_ptr<base::OneShotTimer> timer_; bool network_request_in_flight_ = false;
diff --git a/chromeos/services/multidevice_setup/wifi_sync_feature_manager_impl_unittest.cc b/chromeos/services/multidevice_setup/wifi_sync_feature_manager_impl_unittest.cc index 95a20d1b..17ce3c0 100644 --- a/chromeos/services/multidevice_setup/wifi_sync_feature_manager_impl_unittest.cc +++ b/chromeos/services/multidevice_setup/wifi_sync_feature_manager_impl_unittest.cc
@@ -10,6 +10,7 @@ #include "base/macros.h" #include "base/optional.h" #include "base/test/scoped_feature_list.h" +#include "base/test/task_environment.h" #include "base/timer/mock_timer.h" #include "base/unguessable_token.h" #include "chromeos/components/multidevice/remote_device_test_util.h" @@ -17,9 +18,12 @@ #include "chromeos/components/multidevice/software_feature_state.h" #include "chromeos/constants/chromeos_features.h" #include "chromeos/services/device_sync/public/cpp/fake_device_sync_client.h" +#include "chromeos/services/multidevice_setup/fake_account_status_change_delegate.h" +#include "chromeos/services/multidevice_setup/fake_account_status_change_delegate_notifier.h" #include "chromeos/services/multidevice_setup/fake_host_status_provider.h" #include "chromeos/services/multidevice_setup/public/cpp/prefs.h" #include "chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom.h" +#include "components/session_manager/core/session_manager.h" #include "components/sync_preferences/testing_pref_service_syncable.h" #include "testing/gtest/include/gtest/gtest.h" @@ -74,9 +78,18 @@ // Allow Wifi Sync by policy test_pref_service_->registry()->RegisterBooleanPref( kWifiSyncAllowedPrefName, true); + session_manager_ = std::make_unique<session_manager::SessionManager>(); fake_device_sync_client_ = std::make_unique<device_sync::FakeDeviceSyncClient>(); fake_device_sync_client_->set_synced_devices(test_devices_); + fake_account_status_change_delegate_ = + std::make_unique<FakeAccountStatusChangeDelegate>(); + fake_account_status_change_delegate_notifier_ = + std::make_unique<FakeAccountStatusChangeDelegateNotifier>(); + fake_account_status_change_delegate_notifier_ + ->SetAccountStatusChangeDelegateRemote( + fake_account_status_change_delegate_->GenerateRemote()); + fake_account_status_change_delegate_notifier_->FlushForTesting(); } void TearDown() override {} @@ -122,7 +135,9 @@ delegate_ = WifiSyncFeatureManagerImpl::Factory::Create( fake_host_status_provider_.get(), test_pref_service_.get(), - fake_device_sync_client_.get(), std::move(mock_timer)); + fake_device_sync_client_.get(), + fake_account_status_change_delegate_notifier_.get(), + std::move(mock_timer)); } void SetHostWithStatus( @@ -257,6 +272,14 @@ return fake_device_sync_client_.get(); } + FakeAccountStatusChangeDelegate* fake_account_status_change_delegate() { + return fake_account_status_change_delegate_.get(); + } + + void FlushDelegateNotifier() { + fake_account_status_change_delegate_notifier_->FlushForTesting(); + } + base::MockOneShotTimer* mock_timer() { return mock_timer_; } WifiSyncFeatureManager* delegate() { return delegate_.get(); } @@ -268,13 +291,25 @@ const multidevice::RemoteDeviceRefList& test_devices() const { return test_devices_; } + + session_manager::SessionManager* session_manager() { + return session_manager_.get(); + } + private: + base::test::TaskEnvironment task_environment_; multidevice::RemoteDeviceRefList test_devices_; + std::unique_ptr<session_manager::SessionManager> session_manager_; std::unique_ptr<FakeHostStatusProvider> fake_host_status_provider_; std::unique_ptr<sync_preferences::TestingPrefServiceSyncable> test_pref_service_; std::unique_ptr<device_sync::FakeDeviceSyncClient> fake_device_sync_client_; + std::unique_ptr<FakeAccountStatusChangeDelegateNotifier> + fake_account_status_change_delegate_notifier_; + std::unique_ptr<FakeAccountStatusChangeDelegate> + fake_account_status_change_delegate_; + base::MockOneShotTimer* mock_timer_; std::unique_ptr<WifiSyncFeatureManager> delegate_; @@ -899,6 +934,65 @@ multidevice::SoftwareFeatureState::kEnabled); } +TEST_P(MultiDeviceSetupWifiSyncFeatureManagerImplTest, + Notification_ShownOnFirstUnlockAfterPhoneEnabled) { + SetFeatureFlags(GetParam() /* use_v1_devicesync */, + true /* enable_wifi_sync */); + fake_host_status_provider()->SetHostWithStatus( + mojom::HostStatus::kHostVerified, test_devices()[0]); + CreateDelegate(test_devices()[0] /* initial_host */, + kPendingNone /* initial_pending_wifi_sync_request */); + + EXPECT_FALSE(delegate()->IsWifiSyncEnabled()); + EXPECT_EQ(test_devices()[0].GetSoftwareFeatureState( + multidevice::SoftwareFeature::kWifiSyncHost), + multidevice::SoftwareFeatureState::kSupported); + + // Simulate lock/unlock + session_manager()->SetSessionState(session_manager::SessionState::LOCKED); + session_manager()->SetSessionState(session_manager::SessionState::ACTIVE); + + FlushDelegateNotifier(); + + // Shown on first unlock. + EXPECT_EQ(1u, fake_account_status_change_delegate() + ->num_eligible_for_wifi_sync_events_handled()); + + session_manager()->SetSessionState(session_manager::SessionState::LOCKED); + session_manager()->SetSessionState(session_manager::SessionState::ACTIVE); + + FlushDelegateNotifier(); + + // Not shown on second unlock. + EXPECT_EQ(1u, fake_account_status_change_delegate() + ->num_eligible_for_wifi_sync_events_handled()); +} + +TEST_P(MultiDeviceSetupWifiSyncFeatureManagerImplTest, + Notification_NotShownIfAlreadyEnabled) { + SetFeatureFlags(GetParam() /* use_v1_devicesync */, + true /* enable_wifi_sync */); + fake_host_status_provider()->SetHostWithStatus( + mojom::HostStatus::kHostVerified, test_devices()[0]); + CreateDelegate(test_devices()[0] /* initial_host */, + kPendingNone /* initial_pending_wifi_sync_request */); + SetIsWifiSyncEnabled(true); + + EXPECT_TRUE(delegate()->IsWifiSyncEnabled()); + EXPECT_EQ(test_devices()[0].GetSoftwareFeatureState( + multidevice::SoftwareFeature::kWifiSyncHost), + multidevice::SoftwareFeatureState::kSupported); + + // Simulate lock/unlock + session_manager()->SetSessionState(session_manager::SessionState::LOCKED); + session_manager()->SetSessionState(session_manager::SessionState::ACTIVE); + + FlushDelegateNotifier(); + + EXPECT_EQ(0u, fake_account_status_change_delegate() + ->num_eligible_for_wifi_sync_events_handled()); +} + // Runs tests twice; once with v1 DeviceSync enabled and once with it disabled. // TODO(https://crbug.com/1019206): Remove when v1 DeviceSync is disabled, // when all devices should have an Instance ID.
diff --git a/chromeos/services/secure_channel/ble_synchronizer.cc b/chromeos/services/secure_channel/ble_synchronizer.cc index ca3d632..258a3637 100644 --- a/chromeos/services/secure_channel/ble_synchronizer.cc +++ b/chromeos/services/secure_channel/ble_synchronizer.cc
@@ -131,8 +131,11 @@ break; } - stop_discovery_args->discovery_session->Stop(); - OnDiscoverySessionStopped(); + stop_discovery_args->discovery_session->Stop( + base::BindOnce(&BleSynchronizer::OnDiscoverySessionStopped, + weak_ptr_factory_.GetWeakPtr()), + base::BindOnce(&BleSynchronizer::OnDiscoverySessionStoppedError, + weak_ptr_factory_.GetWeakPtr())); break; } default: @@ -226,6 +229,15 @@ std::move(stop_discovery_args->callback).Run(); } +void BleSynchronizer::OnDiscoverySessionStoppedError() { + RecordDiscoverySessionStopped(false /* success */); + ScheduleCommandCompletion(); + StopDiscoveryArgs* stop_discovery_args = + current_command_->stop_discovery_args.get(); + DCHECK(stop_discovery_args); + std::move(stop_discovery_args->error_callback).Run(); +} + void BleSynchronizer::ScheduleCommandCompletion() { // Schedule the task to run after the current task has completed. This is // necessary because the completion of a Bluetooth task may cause the Tether
diff --git a/chromeos/services/secure_channel/ble_synchronizer.h b/chromeos/services/secure_channel/ble_synchronizer.h index 46d3419..885c341 100644 --- a/chromeos/services/secure_channel/ble_synchronizer.h +++ b/chromeos/services/secure_channel/ble_synchronizer.h
@@ -85,6 +85,7 @@ std::unique_ptr<device::BluetoothDiscoverySession> discovery_session); void OnErrorStartingDiscoverySession(); void OnDiscoverySessionStopped(); + void OnDiscoverySessionStoppedError(); void ScheduleCommandCompletion(); void CompleteCurrentCommand();
diff --git a/chromeos/settings/cros_settings_names.cc b/chromeos/settings/cros_settings_names.cc index 48c9f78..f46a874 100644 --- a/chromeos/settings/cros_settings_names.cc +++ b/chromeos/settings/cros_settings_names.cc
@@ -44,7 +44,8 @@ "cros.accounts.deviceLocalAccountAutoLoginBailoutEnabled"; const char kAccountsPrefDeviceLocalAccountPromptForNetworkWhenOffline[] = "cros.accounts.deviceLocalAccountPromptForNetworkWhenOffline"; -// TODO(crbug.com/866790): Check it is not used anymore and remove it. +// TODO(crbug/1155729): Check it is not used anymore for deprecated supervised +// users and remove it. const char kAccountsPrefSupervisedUsersEnabled[] = "cros.accounts.supervisedUsersEnabled"; const char kAccountsPrefTransferSAMLCookies[] =
diff --git a/chromeos/strings/chromeos_strings_af.xtb b/chromeos/strings/chromeos_strings_af.xtb index a540877..e5a027e 100644 --- a/chromeos/strings/chromeos_strings_af.xtb +++ b/chromeos/strings/chromeos_strings_af.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS-ontbinder is teenwoordig</translation> <translation id="1743558184855585519">Die battery word as verbruik beskou sodra dit die limiet bereik</translation> <translation id="1792647875738159689">Kanselleer skandering</translation> +<translation id="1851218745569890714">Videokonferensies</translation> <translation id="1905710495812624430">Maksimum toegelate pogings is oorskry.</translation> +<translation id="1908234395526491708">Mislukte UDP-versoeke</translation> <translation id="1930797645656624981">Chrome-bedryfstelsel se invoermetodediens</translation> <translation id="1947737735496445907">Gedruk</translation> <translation id="1979103255016296513">Wagwoord moes al verander geword het</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Hoofsoektog</translation> <translation id="2080070583977670716">Nog instellings</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">OP WAGLYS</translation> <translation id="2161394479394250669">Kanselleer druktaak</translation> <translation id="2224337661447660594">Geen internet nie</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Stelsel</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Programme</translation> +<translation id="2862104018715411648">Plaas jou dokument op die skandeerder en kies Skandeer om te begin</translation> <translation id="2872961005593481000">Skakel af</translation> <translation id="2878387241690264070">Het <ph name="RATE" /> ontlaai binne <ph name="NUM_SECONDS" /> sekondes.</translation> <translation id="3008341117444806826">HERLAAI</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Is jy seker jy wil alle drukgeskiedenis uitvee? Jou aangaande druktake sal nie uitgevee word nie.</translation> <translation id="3435738964857648380">Sekuriteit</translation> <translation id="3456078764689556234">Het bladsy <ph name="PRINTED_PAGES" /> van <ph name="TOTAL_PAGES" /> gedruk.</translation> +<translation id="345898999683440380">Skandeer tans bladsy <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% voltooi.</translation> <translation id="3459509316159669723">Druk tans</translation> <translation id="3515615323037921860">Druktake</translation> <translation id="3527036260304016759">Misluk – Onbekende fout</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">MISLUK</translation> <translation id="4176463684765177261">Gedeaktiveer</translation> <translation id="4227825898293920515">Wagwoord verval oor <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB van <ph name="TOTAL_MEMORY" /> GB beskibaar.</translation> <translation id="4238516577297848345">Geen druktake aan die gang nie</translation> <translation id="4297501883039923494">Gestop – onbekende fout</translation> <translation id="4378373042927530923">Nie laat loop nie</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Laat Roetines weer loop</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Berg</translation> +<translation id="5318334351163689047">Mislukte TCP-versoeke</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Kies nou 'n nuwe een</translation> <translation id="5333530671332546086">Onbekende portaalstatus</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Kan jy nie aan skandeerders koppel nie?</translation> <translation id="6853312040151791195">Ontlaaikoers</translation> <translation id="6898743098396957679">Kon nie skandering voltooi nie</translation> +<translation id="6911383237894364323">Kan nie aan mediabedieners koppel nie</translation> <translation id="6957231940976260713">Diensnaam</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> bestuur hierdie toestel en het toegang tot alle gebruikeraktiwiteit, insluitend webblaaie wat besoek is, wagwoorde en e-pos.</translation> <translation id="7143207342074048698">Koppel tans</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6-adres</translation> <translation id="7561454561030345039">Jou administrateur bestuur hierdie handeling</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Kom meer te wete in Hulpsentrum</translation> <translation id="7648838807254605802">Hoë HTTPS-traagheid</translation> <translation id="7658239707568436148">Kanselleer</translation> <translation id="7690294790491645610">Bevestig nuwe wagwoord</translation>
diff --git a/chromeos/strings/chromeos_strings_am.xtb b/chromeos/strings/chromeos_strings_am.xtb index 64dcfb6..76b3ba8 100644 --- a/chromeos/strings/chromeos_strings_am.xtb +++ b/chromeos/strings/chromeos_strings_am.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">የዲኤንኤስ መፍትሔ ሰጪ አለ</translation> <translation id="1743558184855585519">አንድ ጊዜ ገደቡ ላይ ሲደርስ ባትሪው እንዳለቀ ይቆጠራል</translation> <translation id="1792647875738159689">መቃኘትን በመሰረዝ ላይ</translation> +<translation id="1851218745569890714">የቪዲዮ ጉባዔ</translation> <translation id="1905710495812624430">የሚፈቀደው ከፍተኛ የሙከራዎች ብዛት ታልፏል።</translation> +<translation id="1908234395526491708">የ UDP ጥያቄ አለመሳካቶች</translation> <translation id="1930797645656624981">የ Chrome OS ግቤት ዘዴ አገልግሎት</translation> <translation id="1947737735496445907">ታትሟል</translation> <translation id="1979103255016296513">የይለፍ ቃል ለውጥ ማድረጊያ ጊዜው አልፏል</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">ዋና ፍለጋ</translation> <translation id="2080070583977670716">ተጨማሪ ቅንብሮች</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">ተሰልፏል</translation> <translation id="2161394479394250669">የኅትመት ሥራን ሰርዝ</translation> <translation id="2224337661447660594">ምንም በይነመረብ የለም</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">ስርዓት</translation> <translation id="2740531572673183784">እሺ</translation> <translation id="2805756323405976993">መተግበሪያዎች</translation> +<translation id="2862104018715411648">ሰነድዎን በመቃኛው ላይ ያስቀምጡትና ለመጀመር ቃኝን ይምረጡ</translation> <translation id="2872961005593481000">ዝጋ</translation> <translation id="2878387241690264070">በ<ph name="NUM_SECONDS" /> ሰከንዶች ውስጥ <ph name="RATE" /> ሞልቷል።</translation> <translation id="3008341117444806826">አድስ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">እርግጠኛ ነዎት ሁሉንም የህትመት ታሪክ ማጥፋት ይፈልጋሉ? በመካሄድ ላይ ያሉ የህትመት ስራዎችዎ አይጠፉም።</translation> <translation id="3435738964857648380">የደህንነት ጥበቃ</translation> <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> የታተመ ገጽ ከ <ph name="TOTAL_PAGES" /> ዉስጥ።</translation> +<translation id="345898999683440380">ገጽ <ph name="PAGE_NUM" />ን በመቃኘት ላይ። <ph name="PERCENTAGE_VALUE" />% ተጠናቅቋል።</translation> <translation id="3459509316159669723">ማተም</translation> <translation id="3515615323037921860">የህትመት ስራዎች</translation> <translation id="3527036260304016759">አልተሳካም - ያልታወቀ ስህተት</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">አልተሳካም</translation> <translation id="4176463684765177261">ተሰናክሏል</translation> <translation id="4227825898293920515">የይለፍ ቃል በ <ph name="TIME" /> ውስጥ አገልግሎት ጊዜው ያበቃል</translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> ጊባ ከሚገኘው <ph name="TOTAL_MEMORY" /> ጊባ።</translation> <translation id="4238516577297848345">በሂደት ላይ ያሉ ምንም የህትመት ስራዎች የሉም</translation> <translation id="4297501883039923494">ቆሟል - ያልታወቀ ስህተት</translation> <translation id="4378373042927530923">አታሂድ</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">የዕለት ተዕለት ተግባራትን እንደገና ያሂዱ</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">አስቀምጥ</translation> +<translation id="5318334351163689047">የ TCP ጥያቄ አለመሳካቶች</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />፣ <ph name="PRINTER_NAME" />፣ <ph name="CREATION_TIME" />፣ <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">አሁን አዲስ ይምረጡ</translation> <translation id="5333530671332546086">ያልታወቀ የመግቢያ ሁኔታ</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">ከመቃኛዎች ጋር መገናኘት አልተቻለም?</translation> <translation id="6853312040151791195">የኃይል ማለቂያ ፍጥነት</translation> <translation id="6898743098396957679">ቅኝትን ማጠናቀቅ አልተቻለም</translation> +<translation id="6911383237894364323">ወደ ሚዲያ አገልጋዮች መገናኘት አልተቻለም</translation> <translation id="6957231940976260713">የአገልግሎት ስም</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> ይህን መሣሪያ የሚያስተዳድር ሲሆን የተጎበኙ ድረ-ገጾች፣ የይለፍ ቃላት እና ኢሜይል ጨምሮ የሁሉም የተጠቃሚ እንቅስቃሴ መዳረሻ አለው።</translation> <translation id="7143207342074048698">በመያያዝ ላይ</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">የIPv6 አድራሻ</translation> <translation id="7561454561030345039">ይህ ቅንብር በአስተዳዳሪዎ የሚቀናበር ነው።</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">በእገዛ ማዕከል ውስጥ የበለጠ ይረዱ</translation> <translation id="7648838807254605802">ከፍተኛ የHTTPS የስርዓተ ምላሽ ጊዜ</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 3774f82..9fdab84 100644 --- a/chromeos/strings/chromeos_strings_ar.xtb +++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">توفُّر برنامج تعيين نظام أسماء النطاقات</translation> <translation id="1743558184855585519">تُعتبر البطارية مستهلكة عند وصولها إلى الحدّ.</translation> <translation id="1792647875738159689">جارٍ إلغاء المسح الضوئي</translation> +<translation id="1851218745569890714">اختبار اجتماعات الفيديو</translation> <translation id="1905710495812624430">تم تجاوز الحد الأقصى لعدد المحاولات المسموح بها.</translation> +<translation id="1908234395526491708">تعذَّر طلب بروتوكول UDP.</translation> <translation id="1930797645656624981">خدمة أسلوب الإدخال لنظام التشغيل Chrome</translation> <translation id="1947737735496445907">تمت الطباعة</translation> <translation id="1979103255016296513">تأخير تغيير كلمة المرور</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">البحث الأوّلي</translation> <translation id="2080070583977670716">مزيد من الإعدادات</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">تم وضع الاختبار في قائمة الانتظار.</translation> <translation id="2161394479394250669">إلغاء مهمة الطباعة</translation> <translation id="2224337661447660594">الاتصال بالإنترنت مقطوع</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> نقطة لكل بوصة (DPI)</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">النظام</translation> <translation id="2740531572673183784">حسنًا</translation> <translation id="2805756323405976993">التطبيقات</translation> +<translation id="2862104018715411648">للبدء، يُرجى وضع المستند على الماسح الضوئي واختيار "المسح ضوئيًا".</translation> <translation id="2872961005593481000">إيقاف التشغيل</translation> <translation id="2878387241690264070">تم نفاد <ph name="RATE" /> خلال <ph name="NUM_SECONDS" /> ثانية.</translation> <translation id="3008341117444806826">إعادة التحميل</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">هل تريد فعلاً محو سجلّ الطباعة بالكامل؟ لن يتم محو مهام الطباعة الجارية.</translation> <translation id="3435738964857648380">أمن المعلومات</translation> <translation id="3456078764689556234">عدد الصفحات التي تمت طباعتها: <ph name="PRINTED_PAGES" /> من أصل <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">جارٍ المسح ضوئيًا للصفحة رقم <ph name="PAGE_NUM" />. اكتمل المسح الضوئي بنسبة <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">الطباعة</translation> <translation id="3515615323037921860">مهام الطباعة</translation> <translation id="3527036260304016759">تعذَّرت الطباعة - خطأ غير معروف</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">تعذّر إجراء الاختبار.</translation> <translation id="4176463684765177261">غير مفعّل</translation> <translation id="4227825898293920515">تنتهي صلاحية كلمة المرور في <ph name="TIME" /></translation> +<translation id="4228041325992544252">يتم استخدام <ph name="AVAILABLE_MEMORY" /> غيغابايت من سعة التخزين المتاحة التي تبلغ <ph name="TOTAL_MEMORY" /> غيغابايت.</translation> <translation id="4238516577297848345">ما من مهام قيد الطباعة.</translation> <translation id="4297501883039923494">توقّفت الطابعة - خطأ غير معروف</translation> <translation id="4378373042927530923">لم يتم التشغيل</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">إعادة تشغيل سلاسل الإجراءات</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">حفظ</translation> +<translation id="5318334351163689047">تعذَّر طلب بروتوكول TCP.</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />، <ph name="PRINTER_NAME" />، <ph name="CREATION_TIME" />، <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">اختيار كلمة مرور جديدة الآن</translation> <translation id="5333530671332546086">حالة المدخل غير معروفة.</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">هل يتعذَّر الاتصال بالماسحات الضوئية؟</translation> <translation id="6853312040151791195">معدّل تفريغ الشحن</translation> <translation id="6898743098396957679">تعذَّر إكمال عملية "المسح الضوئي"</translation> +<translation id="6911383237894364323">تعذَّر الاتصال بخوادم الوسائط.</translation> <translation id="6957231940976260713">اسم الخدمة</translation> <translation id="7028979494427204405">يُدير <ph name="MANAGER" /> هذا الجهاز ويمكنه الوصول إلى جميع أنشطة المستخدم، بما في ذلك صفحات الويب التي تمت زيارتها وكلمات المرور والبريد الإلكتروني.</translation> <translation id="7143207342074048698">اتصال</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">عنوان IPv6</translation> <translation id="7561454561030345039">يتولّى مشرفك إدارة هذا الإجراء.</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">مزيد من المعلومات في مركز المساعدة</translation> <translation id="7648838807254605802">وقت استجابة بروتوكول HTTPS طويل.</translation> <translation id="7658239707568436148">إلغاء</translation> <translation id="7690294790491645610">تأكيد كلمة المرور الجديدة</translation>
diff --git a/chromeos/strings/chromeos_strings_as.xtb b/chromeos/strings/chromeos_strings_as.xtb index 2d4c2bff..e6ad370 100644 --- a/chromeos/strings/chromeos_strings_as.xtb +++ b/chromeos/strings/chromeos_strings_as.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS ৰিজলভাৰ প্ৰেজেণ্ট</translation> <translation id="1743558184855585519">বেটাৰীটোৱে সীমাটোত উপনীত হোৱাৰ পাছত ইয়াক খৰচ হোৱা বুলি ধৰা হয়</translation> <translation id="1792647875738159689">স্কেন বাতিল কৰি থকা হৈছে</translation> +<translation id="1851218745569890714">ভিডিঅ’ কনফাৰেন্সিং</translation> <translation id="1905710495812624430">চেষ্টা কৰাৰ সৰ্বাধিক সীমা অতিক্ৰম কৰিছে।</translation> +<translation id="1908234395526491708">বিফল UDP অনুৰোধসমূহ</translation> <translation id="1930797645656624981">Chrome OS ইনপুট পদ্ধতি সেৱা</translation> <translation id="1947737735496445907">প্ৰিণ্ট কৰা হ’ল</translation> <translation id="1979103255016296513">পাছৱর্ড সলনি কৰাৰ সময় উকলিছে</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">প্ৰাইম সন্ধান</translation> <translation id="2080070583977670716">অধিক ছেটিং</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">শাৰীত ৰখা হৈছে</translation> <translation id="2161394479394250669">প্ৰিণ্টিঙৰ কাৰ্য বাতিল কৰক</translation> <translation id="2224337661447660594">ইণ্টাৰনেট নাই</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">ছিষ্টেম</translation> <translation id="2740531572673183784">ঠিক আছে</translation> <translation id="2805756323405976993">এপ্</translation> +<translation id="2862104018715411648">আপোনাৰ নথিখন স্কেনাৰটোত ৰাখক আৰু আৰম্ভ কৰিবলৈ স্কেন কৰক বাছনি কৰক</translation> <translation id="2872961005593481000">শ্বাট ডাউন কৰক</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" /> ছেকেণ্ডত <ph name="RATE" /> চাৰ্জ খৰচ হৈছে।</translation> <translation id="3008341117444806826">ৰিফ্ৰেশ্ব কৰক</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">আপুনি সকলো প্ৰিণ্টৰ ইতিহাস নিশ্চিতভাৱে মচিব বিচাৰেনে? আপোনাৰ চলি থকা প্ৰিণ্টৰ কামসমূহ মচা নহয়।</translation> <translation id="3435738964857648380">সুৰক্ষা</translation> <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> খনৰ ভিতৰত <ph name="PRINTED_PAGES" /> নম্বৰৰ পৃষ্ঠাখন প্ৰিণ্ট কৰা হৈছে।</translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" /> নম্বৰ পৃষ্ঠাখন স্কেন কৰি থকা হৈছে। <ph name="PERCENTAGE_VALUE" />% সম্পূৰ্ণ হ’ল।</translation> <translation id="3459509316159669723">প্ৰিণ্টিং</translation> <translation id="3515615323037921860">প্ৰিণ্ট কাৰ্যসমূহ</translation> <translation id="3527036260304016759">বিফল হৈছে - অজ্ঞাত আসোঁৱাহ</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">বিফল হৈছে</translation> <translation id="4176463684765177261">অক্ষম আছে</translation> <translation id="4227825898293920515">পাছৱর্ডৰ ম্যাদ উকলাৰ সময় <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="TOTAL_MEMORY" /> জিবিৰ <ph name="AVAILABLE_MEMORY" /> জিবি উপলব্ধ আছে।</translation> <translation id="4238516577297848345">কোনো প্ৰিণ্টৰ কাম চলি থকা নাই</translation> <translation id="4297501883039923494">বন্ধ হৈছে - অজ্ঞাত আসোঁৱাহ</translation> <translation id="4378373042927530923">নাই চলা</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">ৰুটিন পুনৰ চলাওক</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">ছেভ কৰক</translation> +<translation id="5318334351163689047">বিফল TCP অনুৰোধসমূহ</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">এতিয়া নতুন এটা বাছনি কৰক</translation> <translation id="5333530671332546086">অজ্ঞাত প’ৰ্টেলৰ স্থিতি</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">স্কেনাৰৰ সৈতে সংযোগ কৰিব পৰা নাই নেকি?</translation> <translation id="6853312040151791195">চাৰ্জ খৰচ হোৱাৰ হাৰ</translation> <translation id="6898743098396957679">স্কেনিং সম্পূৰ্ণ কৰিব পৰা নগ’ল</translation> +<translation id="6911383237894364323">মিডিয়া ছাৰ্ভাৰৰ সৈতে সংযোগ কৰিব পৰা নগ’ল</translation> <translation id="6957231940976260713">সেৱাৰ নাম</translation> <translation id="7028979494427204405"><ph name="MANAGER" />এ এই ডিভাইচটো পৰিচালনা কৰে আৰু চোৱা ৱেবপৃষ্ঠা, পাছৱৰ্ড আৰু ইমেইলকে ধৰি ব্যৱহাৰকাৰীৰ আটাইবোৰ কাৰ্যকলাপ এক্সেছ কৰিব পাৰে।</translation> <translation id="7143207342074048698">সংযোগ হৈছে</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 ঠিকনা</translation> <translation id="7561454561030345039">এই কাৰ্যটো আপোনাৰ প্ৰশাসকে পৰিচালনা কৰে</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">সহায় কেন্দ্ৰত অধিক জানক</translation> <translation id="7648838807254605802">HTTPSৰ বেছি বিলম্বতা</translation> <translation id="7658239707568436148">বাতিল কৰক</translation> <translation id="7690294790491645610">নতুন পাছৱর্ড নিশ্চিত কৰক</translation>
diff --git a/chromeos/strings/chromeos_strings_az.xtb b/chromeos/strings/chromeos_strings_az.xtb index 4dadfec..ebb381f 100644 --- a/chromeos/strings/chromeos_strings_az.xtb +++ b/chromeos/strings/chromeos_strings_az.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS Həlledicisi Mövcuddur</translation> <translation id="1743558184855585519">Batareya limitə çatdıqda tükədilmiş hesab edilir</translation> <translation id="1792647875738159689">Skanlama ləğv edilir</translation> +<translation id="1851218745569890714">Video Konfrans</translation> <translation id="1905710495812624430">Maksimum icazə verilən cəhdlər bitdi</translation> +<translation id="1908234395526491708">Alınmayan UDP sorğuları</translation> <translation id="1930797645656624981">Chrome OS Daxiletmə Metodu Xidməti</translation> <translation id="1947737735496445907">Çap edilib</translation> <translation id="1979103255016296513">Parol dəyişikliyinin gecikməsi</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Əsas axtarış</translation> <translation id="2080070583977670716">Digər ayarlar</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">NÖVBƏDƏDİR</translation> <translation id="2161394479394250669">Çap işini ləğv edin</translation> <translation id="2224337661447660594">İnternet yoxdur</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistem</translation> <translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Tətbiq</translation> +<translation id="2862104018715411648">Sənədinizi skanerin üzərinə qoyun və başlamaq üçün "Skanlayın" seçin</translation> <translation id="2872961005593481000">Qapadın</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" /> saniyədə <ph name="RATE" /> deşarj edilib.</translation> <translation id="3008341117444806826">YENİLƏYİN</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Bütün çap tarixçəsini silmək istədiyinizə əminsiniz? Davam edən çap işləriniz silinməyəcək.</translation> <translation id="3435738964857648380">Təhlükəsizlik</translation> <translation id="3456078764689556234"><ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /> səhifə çap edilib.</translation> +<translation id="345898999683440380">Səhifə <ph name="PAGE_NUM" /> skanlanır. <ph name="PERCENTAGE_VALUE" />% tamamlanıb.</translation> <translation id="3459509316159669723">Çap edilir</translation> <translation id="3515615323037921860">Çap İşləri</translation> <translation id="3527036260304016759">Alınmadı - Naməlum xəta</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">UĞURSUZ OLDU</translation> <translation id="4176463684765177261">Deaktiv edildi</translation> <translation id="4227825898293920515">Parolun vaxtı <ph name="TIME" /> ərzində başa çatır</translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" />/<ph name="TOTAL_MEMORY" /> GB əlçatandır.</translation> <translation id="4238516577297848345">Hazırda davam edən çap işləri yoxdur</translation> <translation id="4297501883039923494">Dayanıb - Naməlum xəta</translation> <translation id="4378373042927530923">İşə salınmayıb</translation> @@ -157,6 +163,7 @@ <translation id="5275828089655680674">Rejimləri yenidən işə salın</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Yadda saxlayın</translation> +<translation id="5318334351163689047">Alınmayan TCP sorğuları</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">İndi yenisini seçin</translation> <translation id="5333530671332546086">Naməlum portal vəziyyəti</translation> @@ -216,6 +223,7 @@ <translation id="6839141349259399400">Skanerlərə qoşula bilmirsiniz?</translation> <translation id="6853312040151791195">Deşarj faizi</translation> <translation id="6898743098396957679">Skanlamanı tamamlamaq mümkün olmadı</translation> +<translation id="6911383237894364323">Media serverlərinə qoşulmaq olmur</translation> <translation id="6957231940976260713">Xidmət adı</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> bu cihazı idarə edir və giriş edilən veb səhifə, parol və e-poçt daxil olmaqla bütün istifadəçi fəaliyyətinə girişi var.</translation> <translation id="7143207342074048698">Qoşulur</translation> @@ -232,6 +240,7 @@ <translation id="7502658306369382406">IPv6 ünvanı</translation> <translation id="7561454561030345039">Bu əməliyyat admininiz tərəfindən idarə olunur</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Yardım Mərkəzində ətraflı məlumat əldə edin</translation> <translation id="7648838807254605802">Yüksək HTTPS gecikməsi</translation> <translation id="7658239707568436148">Ləğv edin</translation> <translation id="7690294790491645610">Yeni parolu təsdiq edin</translation>
diff --git a/chromeos/strings/chromeos_strings_be.xtb b/chromeos/strings/chromeos_strings_be.xtb index 0bfc400..058ff06 100644 --- a/chromeos/strings/chromeos_strings_be.xtb +++ b/chromeos/strings/chromeos_strings_be.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Наяўнасць DNS-рэзолвера</translation> <translation id="1743558184855585519">Калі ліміт на колькасць перазарадак дасягнуты, акумулятар лічыцца зрасходаваным</translation> <translation id="1792647875738159689">Сканіраванне скасоўваецца</translation> +<translation id="1851218745569890714">Відэаканферэнцыі</translation> <translation id="1905710495812624430">Перавышана максімальная колькасць спроб.</translation> +<translation id="1908234395526491708">Збоі запытаў UDP</translation> <translation id="1930797645656624981">Сэрвіс метадаў уводу Chrome OS</translation> <translation id="1947737735496445907">Надрукавана</translation> <translation id="1979103255016296513">Пратэрмінавана змена пароля</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Пошук простых лікаў</translation> <translation id="2080070583977670716">Іншыя налады</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">У ЧАРЗЕ</translation> <translation id="2161394479394250669">Скасаваць заданне друку</translation> <translation id="2224337661447660594">Няма падключэння да інтэрнэту</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Сістэма</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Праграмы</translation> +<translation id="2862104018715411648">Каб пачаць работу, палажыце дакумент у сканер і націсніце "Сканіраваць"</translation> <translation id="2872961005593481000">Завяршыць працу</translation> <translation id="2878387241690264070">Разраджана: <ph name="RATE" /> за <ph name="NUM_SECONDS" /> с.</translation> <translation id="3008341117444806826">АБНАВІЦЬ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Сапраўды выдаліць гісторыю друку? Бягучыя заданні друку выдалены не будуць.</translation> <translation id="3435738964857648380">Бяспека</translation> <translation id="3456078764689556234">Надрукавана старонка <ph name="PRINTED_PAGES" /> з <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Сканіруецца старонка <ph name="PAGE_NUM" />. Выканана <ph name="PERCENTAGE_VALUE" /> %.</translation> <translation id="3459509316159669723">Друк</translation> <translation id="3515615323037921860">Заданні друку</translation> <translation id="3527036260304016759">Збой: невядомая памылка</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">НЕ ПРОЙДЗЕНА</translation> <translation id="4176463684765177261">Выключана</translation> <translation id="4227825898293920515">Тэрмін дзеяння пароля заканчваецца праз <ph name="TIME" /></translation> +<translation id="4228041325992544252">Даступна: <ph name="AVAILABLE_MEMORY" /> з <ph name="TOTAL_MEMORY" /> ГБ.</translation> <translation id="4238516577297848345">Няма дзеючых заданняў друку</translation> <translation id="4297501883039923494">Спынена: невядомая памылка</translation> <translation id="4378373042927530923">Паслядоўнасць дзеянняў не запускалася</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Перазапусціць паслядоўнасці дзеянняў</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Захаваць</translation> +<translation id="5318334351163689047">Збоі запытаў TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Задайце новы</translation> <translation id="5333530671332546086">Стан партала невядомы</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Не ўдаецца падключыцца да сканераў?</translation> <translation id="6853312040151791195">Хуткасць разрадкі</translation> <translation id="6898743098396957679">Не ўдалося завяршыць сканіраванне</translation> +<translation id="6911383237894364323">Не ўдалося падключыцца да сервераў мультымедыя</translation> <translation id="6957231940976260713">Імя сэрвісу</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> кіруе гэтай прыладай і мае доступ да ўсіх дзеянняў карыстальніка, у тым ліку да гісторыі наведаных вэб-старонак, да пароляў і электроннай пошты.</translation> <translation id="7143207342074048698">Падключэнне</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Адрас IPv6</translation> <translation id="7561454561030345039">Гэтым дзеяннем кіруе адміністратар</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Атрымаць больш інфармацыі ў Даведачным цэнтры</translation> <translation id="7648838807254605802">Вялікая затрымка HTTPS</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 2a7a5ef..5f8b09e 100644 --- a/chromeos/strings/chromeos_strings_bg.xtb +++ b/chromeos/strings/chromeos_strings_bg.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Налице е DNS резолвер</translation> <translation id="1743558184855585519">Батерията се смята за изразходвана, когато достигне лимита</translation> <translation id="1792647875738159689">Сканирането се отменя</translation> +<translation id="1851218745569890714">Видеоконференции</translation> <translation id="1905710495812624430">Максималният брой опити е надвишен.</translation> +<translation id="1908234395526491708">Неуспешни заявки през UDP</translation> <translation id="1930797645656624981">Услуга за метод на въвеждане в Chrome OS</translation> <translation id="1947737735496445907">Отпечатано</translation> <translation id="1979103255016296513">Срокът за промяна на паролата е изтекъл</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Търсене на прости числа</translation> <translation id="2080070583977670716">Още настройки</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">В ОПАШКАТА</translation> <translation id="2161394479394250669">Анулиране на заданието за отпечатване</translation> <translation id="2224337661447660594">Няма достъп до интернет</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Система</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Приложения</translation> +<translation id="2862104018715411648">За да започнете, поставете документа върху скенера и изберете „Сканиране във“</translation> <translation id="2872961005593481000">Изключване</translation> <translation id="2878387241690264070">За <ph name="NUM_SECONDS" /> секунди батерията се разреди с(ъс) <ph name="RATE" />.</translation> <translation id="3008341117444806826">ОПРЕСНЯВАНЕ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Наистина ли искате да изчистите цялата история на отпечатването? Текущите задания за печат няма да бъдат изтрити.</translation> <translation id="3435738964857648380">Сигурност</translation> <translation id="3456078764689556234">Отпечатана е страница <ph name="PRINTED_PAGES" /> от <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Сканира се страница <ph name="PAGE_NUM" />. Завършена: <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">Отпечатване</translation> <translation id="3515615323037921860">Задания за отпечатване</translation> <translation id="3527036260304016759">Неуспешно – неизвестна грешка</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">НЕУСПЕХ</translation> <translation id="4176463684765177261">Деактивирано</translation> <translation id="4227825898293920515">Паролата изтича след <ph name="TIME" /></translation> +<translation id="4228041325992544252">Налице: <ph name="AVAILABLE_MEMORY" /> ГБ от <ph name="TOTAL_MEMORY" /> ГБ.</translation> <translation id="4238516577297848345">Няма активни задания за отпечатване</translation> <translation id="4297501883039923494">Спряло – неизвестна грешка</translation> <translation id="4378373042927530923">Не е стартирано</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Повторна диагностика</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Запазване</translation> +<translation id="5318334351163689047">Неуспешни заявки през TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Изберете нова сега</translation> <translation id="5333530671332546086">Състоянието на портала е неизвестно</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Не можете да свържете скенерите?</translation> <translation id="6853312040151791195">Скорост на разреждане</translation> <translation id="6898743098396957679">Сканирането не бе завършено</translation> +<translation id="6911383237894364323">Не може да се установи връзка с мултимедийните сървъри</translation> <translation id="6957231940976260713">Имe на услугата</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> управлява това устройство и има достъп до цялата потребителска активност, включително посетените уеб страници, паролите и имейлите.</translation> <translation id="7143207342074048698">Свързва се</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 адрес</translation> <translation id="7561454561030345039">Това действие се управлява от администратора ви</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Научете повече в Помощния център</translation> <translation id="7648838807254605802">Голямо забавяне на HTTPS</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 0ef9ca1..5b79bfc 100644 --- a/chromeos/strings/chromeos_strings_bs.xtb +++ b/chromeos/strings/chromeos_strings_bs.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS razrješivač je prisutan</translation> <translation id="1743558184855585519">Smatra se da je baterija potrošena kada se dostigne ograničenje</translation> <translation id="1792647875738159689">Otkazivanje skeniranja</translation> +<translation id="1851218745569890714">Videokonferencija</translation> <translation id="1905710495812624430">Prekoračen je maksimalan broj dozvoljenih pokušaja.</translation> +<translation id="1908234395526491708">Greške UDP zahtjeva</translation> <translation id="1930797645656624981">Usluga načina unosa Chrome OS-a</translation> <translation id="1947737735496445907">Odštampano</translation> <translation id="1979103255016296513">Vrijeme za promjenu lozinke je isteklo</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Primarno pretraživanje</translation> <translation id="2080070583977670716">Više postavki</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">NA ČEKANJU</translation> <translation id="2161394479394250669">Otkaži zadatak štampanja</translation> <translation id="2224337661447660594">Nema internetske veze</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistem</translation> <translation id="2740531572673183784">Uredu</translation> <translation id="2805756323405976993">Aplikacije</translation> +<translation id="2862104018715411648">Postavite dokument na skener i odaberite Skeniraj da započnete</translation> <translation id="2872961005593481000">Isključi</translation> <translation id="2878387241690264070">Ispražnjeno <ph name="RATE" /> za <ph name="NUM_SECONDS" /> sek.</translation> <translation id="3008341117444806826">OSVJEŽI</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Jeste li sigurni da želite obrisati svu historiju štampanja? Vaši trenutni zadaci štampanja se neće izbrisati.</translation> <translation id="3435738964857648380">Sigurnost</translation> <translation id="3456078764689556234">Odštampanih stanica: <ph name="PRINTED_PAGES" /> od <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Skenira se stranica broj <ph name="PAGE_NUM" />. Završeno je <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">Štampanje</translation> <translation id="3515615323037921860">Zadaci štampanja</translation> <translation id="3527036260304016759">Nije uspjelo – nepoznata greška</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">NEUSPJEŠNO</translation> <translation id="4176463684765177261">Onemogućeno</translation> <translation id="4227825898293920515">Lozinka će isteći za <ph name="TIME" /></translation> +<translation id="4228041325992544252">Dostupno je <ph name="AVAILABLE_MEMORY" /> GB od <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Nema aktivnih zadataka za štampanje</translation> <translation id="4297501883039923494">Zaustavljeno – nepoznata greška</translation> <translation id="4378373042927530923">Nije pokrenuto</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Ponovo pokreni rutine</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Sačuvaj</translation> +<translation id="5318334351163689047">Greške TCP zahtjeva</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Sada odaberite novu lozinku</translation> <translation id="5333530671332546086">Nepoznato stanje portala</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Nije se moguće povezati na skenere?</translation> <translation id="6853312040151791195">Brzina pražnjenja</translation> <translation id="6898743098396957679">Završavanje skeniranja nije uspjelo</translation> +<translation id="6911383237894364323">Povezivanje s medijskim serverima nije uspjelo</translation> <translation id="6957231940976260713">Ime usluge</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> upravlja ovim uređajem i ima pristup svim aktivnostima korisnika, uključujući posjećene web stranice, lozinke i e-poštu.</translation> <translation id="7143207342074048698">Povezivanje</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 adresa</translation> <translation id="7561454561030345039">Ovom radnjom upravlja vaš administrator</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Saznajte više u Centru za pomoć</translation> <translation id="7648838807254605802">Visoka HTTPs latentnost</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 f92104c..fa1acdc 100644 --- a/chromeos/strings/chromeos_strings_ca.xtb +++ b/chromeos/strings/chromeos_strings_ca.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Solucionador de DNS present</translation> <translation id="1743558184855585519">La bateria es considera acabada quan arriba al límit</translation> <translation id="1792647875738159689">S'està cancel·lant l'escaneig</translation> +<translation id="1851218745569890714">Videoconferències</translation> <translation id="1905710495812624430">S'ha superat el nombre màxim d'intents permesos.</translation> +<translation id="1908234395526491708">Errors en la sol·licitud d'UDP</translation> <translation id="1930797645656624981">Servei del mètode d'introducció de text a Chrome OS</translation> <translation id="1947737735496445907">Imprès</translation> <translation id="1979103255016296513">Canvi de contrasenya vençut</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Cerca principal</translation> <translation id="2080070583977670716">Més opcions de configuració</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">S'HA POSAT A LA CUA</translation> <translation id="2161394479394250669">Cancel·la la tasca d'impressió</translation> <translation id="2224337661447660594">Sense connexió a Internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> ppp</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistema</translation> <translation id="2740531572673183784">D'acord</translation> <translation id="2805756323405976993">Aplicacions</translation> +<translation id="2862104018715411648">Col·loca el document a l'escàner i selecciona Escaneja per començar</translation> <translation id="2872961005593481000">Apaga</translation> <translation id="2878387241690264070">S'ha descarregat un <ph name="RATE" /> en <ph name="NUM_SECONDS" /> segons.</translation> <translation id="3008341117444806826">ACTUALITZA</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Confirmes que vols esborrar tot l'historial d'impressions? Les tasques d'impressió en curs no s'esborraran.</translation> <translation id="3435738964857648380">Seguretat</translation> <translation id="3456078764689556234">S'ha imprès la pàgina <ph name="PRINTED_PAGES" /> de <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">S'està escanejant la pàgina <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% completat.</translation> <translation id="3459509316159669723">Imprimeix</translation> <translation id="3515615323037921860">Tasques d'impressió</translation> <translation id="3527036260304016759">Error: error desconegut</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">NO SUPERADA</translation> <translation id="4176463684765177261">Desactivat</translation> <translation id="4227825898293920515">La contrasenya caduca d'aquí a <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB de <ph name="TOTAL_MEMORY" /> GB disponibles.</translation> <translation id="4238516577297848345">No hi ha tasques d'impressió en curs</translation> <translation id="4297501883039923494">S'ha aturat: error desconegut</translation> <translation id="4378373042927530923">No s'ha executat</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Torna a executar les rutines</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Desa</translation> +<translation id="5318334351163689047">Errors en la sol·licitud de TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Tria'n una de nova ara</translation> <translation id="5333530671332546086">Estat del portal desconegut</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">No et pots connectar als escàners?</translation> <translation id="6853312040151791195">Percentatge de descàrrega</translation> <translation id="6898743098396957679">No s'ha pogut completar l'escaneig</translation> +<translation id="6911383237894364323">No es pot connectar als servidors multimèdia</translation> <translation id="6957231940976260713">Nom del servei</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> gestiona aquest dispositiu i té accés a tota l'activitat dels usuaris, com ara les pàgines web visitades, les contrasenyes i el correu electrònic.</translation> <translation id="7143207342074048698">Connectant</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Adreça IPv6</translation> <translation id="7561454561030345039">El teu administrador gestiona aquesta acció</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Més informació al Centre d'ajuda</translation> <translation id="7648838807254605802">La latència d'HTTPS és alta</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 66dc690..a6fa4cc 100644 --- a/chromeos/strings/chromeos_strings_cs.xtb +++ b/chromeos/strings/chromeos_strings_cs.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Přítomnost resolveru DNS</translation> <translation id="1743558184855585519">Až baterie dosáhne tohoto limitu, bude považována za vybitou</translation> <translation id="1792647875738159689">Rušení skenování</translation> +<translation id="1851218745569890714">Videokonference</translation> <translation id="1905710495812624430">Byl překročen maximální povolený počet pokusů.</translation> +<translation id="1908234395526491708">Selhání požadavků UDP</translation> <translation id="1930797645656624981">Služba metod zadávání systému Chrome OS</translation> <translation id="1947737735496445907">Vytištěno</translation> <translation id="1979103255016296513">Uběhl termín pro změnu hesla</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Vyhledávání prvočísel</translation> <translation id="2080070583977670716">Další nastavení</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">VE FRONTĚ</translation> <translation id="2161394479394250669">Zrušit tiskovou úlohu</translation> <translation id="2224337661447660594">Nejste připojeni k internetu</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Systém</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Aplikace</translation> +<translation id="2862104018715411648">Umístěte dokument na skener a stiskněte Skenovat</translation> <translation id="2872961005593481000">Vypnout</translation> <translation id="2878387241690264070">Vybilo se <ph name="RATE" /> kapacity během <ph name="NUM_SECONDS" /> sekund.</translation> <translation id="3008341117444806826">OBNOVIT</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Opravdu chcete vymazat celou historii tisku? Probíhající tiskové úlohy vymazány nebudou.</translation> <translation id="3435738964857648380">Zabezpečení</translation> <translation id="3456078764689556234">Vytisknuta stránka <ph name="PRINTED_PAGES" /> z <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Skenování stránky <ph name="PAGE_NUM" />. Hotovo <ph name="PERCENTAGE_VALUE" /> %.</translation> <translation id="3459509316159669723">Tisk</translation> <translation id="3515615323037921860">Tiskové úlohy</translation> <translation id="3527036260304016759">Tisk selhal – neznámá chyba</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">NEZDAŘILO SE</translation> <translation id="4176463684765177261">Vypnuto</translation> <translation id="4227825898293920515">Platnost hesla vyprší za <ph name="TIME" /></translation> +<translation id="4228041325992544252">K dispozici je <ph name="AVAILABLE_MEMORY" /> GB z <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Nemáte žádné probíhající tiskové úlohy</translation> <translation id="4297501883039923494">Zastaveno – neznámá chyba</translation> <translation id="4378373042927530923">Nespuštěno</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Znovu spustit sledy činností</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Uložit</translation> +<translation id="5318334351163689047">Selhání požadavků TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Zvolte si nové</translation> <translation id="5333530671332546086">Neznámý stav portálu</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Nemůžete se připojit ke skenerům?</translation> <translation id="6853312040151791195">Rychlost vybíjení</translation> <translation id="6898743098396957679">Skenování nelze dokončit</translation> +<translation id="6911383237894364323">Nelze se připojit k mediálním serverům</translation> <translation id="6957231940976260713">Název služby</translation> <translation id="7028979494427204405">Toto zařízení je spravováno doménou <ph name="MANAGER" />, která má přístup k veškeré uživatelské aktivitě, včetně navštívených webových stránek, hesel a e‑mailu.</translation> <translation id="7143207342074048698">Připojování</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Adresa IPv6</translation> <translation id="7561454561030345039">Tuto akci spravuje administrátor</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Další informace v centru nápovědy</translation> <translation id="7648838807254605802">Vysoká latence HTTPS</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 d1a1f3c..9142e07 100644 --- a/chromeos/strings/chromeos_strings_da.xtb +++ b/chromeos/strings/chromeos_strings_da.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS-resolver er til stede</translation> <translation id="1743558184855585519">Batteriet anses som opbrugt, når det har nået grænsen</translation> <translation id="1792647875738159689">Annullerer scanning</translation> +<translation id="1851218745569890714">Videomøder</translation> <translation id="1905710495812624430">Det maksimale antal forsøg er overskredet.</translation> +<translation id="1908234395526491708">Mislykkede UDP-anmodninger</translation> <translation id="1930797645656624981">Indtastningsmetodetjeneste for Chrome OS</translation> <translation id="1947737735496445907">Udskrevet</translation> <translation id="1979103255016296513">Adgangskoden mangler at blive ændret</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prime-søgning</translation> <translation id="2080070583977670716">Flere indstillinger</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">SAT I KØ</translation> <translation id="2161394479394250669">Annuller udskriftsjob</translation> <translation id="2224337661447660594">Der er ingen internetforbindelse</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">System</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Apps</translation> +<translation id="2862104018715411648">Placer dit dokument i scanneren, og vælg Scan for at komme i gang</translation> <translation id="2872961005593481000">Sluk</translation> <translation id="2878387241690264070">Batteriet blev afladet <ph name="RATE" /> på <ph name="NUM_SECONDS" /> sekunder.</translation> <translation id="3008341117444806826">OPDATER</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Er du sikker på, at du vil rydde hele udskriftshistorikken? Dine igangværende udskriftsjobs ryddes ikke.</translation> <translation id="3435738964857648380">Sikkerhed</translation> <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> ud af <ph name="TOTAL_PAGES" /> er blevet udskrevet.</translation> +<translation id="345898999683440380">Scanner side <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % er blevet scannet.</translation> <translation id="3459509316159669723">Udskrivning</translation> <translation id="3515615323037921860">Udskriftsjob</translation> <translation id="3527036260304016759">Handlingen mislykkedes – Ukendt fejl</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">MISLYKKET</translation> <translation id="4176463684765177261">Deaktiveret</translation> <translation id="4227825898293920515">Adgangskoden udløber om <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB ledig plads ud af <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Ingen udskriftsjobs er i gang</translation> <translation id="4297501883039923494">Stoppet – Ukendt fejl</translation> <translation id="4378373042927530923">Kørte ikke</translation> @@ -157,6 +163,7 @@ <translation id="5275828089655680674">Kør rutiner igen</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Gem</translation> +<translation id="5318334351163689047">Mislykkede TCP-anmodninger</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Vælg en ny adgangskode nu</translation> <translation id="5333530671332546086">Ukendt portaltilstand</translation> @@ -216,6 +223,7 @@ <translation id="6839141349259399400">Kan du ikke oprette forbindelse til scannere?</translation> <translation id="6853312040151791195">Afladningshastighed</translation> <translation id="6898743098396957679">Scanningen kunne ikke gennemføres</translation> +<translation id="6911383237894364323">Der kunne ikke oprettes forbindelse til medieservere</translation> <translation id="6957231940976260713">Tjenestens navn</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> administrerer denne enhed og har adgang til al brugeraktivitet, bl.a. besøgte websider, adgangskoder og mails.</translation> <translation id="7143207342074048698">Tilslutter</translation> @@ -232,6 +240,7 @@ <translation id="7502658306369382406">IPv6-adresse</translation> <translation id="7561454561030345039">Denne handling administreres af din administrator</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Få flere oplysninger i Hjælp</translation> <translation id="7648838807254605802">Høj HTTPS-forsinkelse</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 fa1dccfb..56a4ed4 100644 --- a/chromeos/strings/chromeos_strings_de.xtb +++ b/chromeos/strings/chromeos_strings_de.xtb
@@ -56,7 +56,7 @@ <translation id="2448312741937722512">Art</translation> <translation id="2461822463642141190">Aktuell</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> -<translation id="2517472476991765520">Suchen</translation> +<translation id="2517472476991765520">Scannen</translation> <translation id="2570743873672969996">Test für <ph name="TEST_NAME" /> wird ausgeführt…</translation> <translation id="2585245331261708204">Neues bei Chrome OS</translation> <translation id="2620436844016719705">System</translation>
diff --git a/chromeos/strings/chromeos_strings_el.xtb b/chromeos/strings/chromeos_strings_el.xtb index 2358c314..a8b3fc7 100644 --- a/chromeos/strings/chromeos_strings_el.xtb +++ b/chromeos/strings/chromeos_strings_el.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Παρουσία επίλυσης DNS</translation> <translation id="1743558184855585519">Θεωρείται ότι η μπαταρία καταναλώθηκε μόλις φτάσει το όριο.</translation> <translation id="1792647875738159689">Ακύρωση σάρωσης</translation> +<translation id="1851218745569890714">Συνεδρίαση με βίντεο</translation> <translation id="1905710495812624430">Έγινε υπέρβαση του μέγιστου αριθμού επιτρεπόμενων προσπαθειών.</translation> +<translation id="1908234395526491708">Σφάλματα αιτήματος UDP</translation> <translation id="1930797645656624981">Υπηρεσία μεθόδου εισαγωγής Chrome OS</translation> <translation id="1947737735496445907">Εκτυπώθηκε</translation> <translation id="1979103255016296513">Εκπρόθεσμη αλλαγή κωδικού πρόσβασης</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Αναζήτηση Prime</translation> <translation id="2080070583977670716">Περισσότερες ρυθμίσεις</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">ΣΤΗΝ ΟΥΡΑ</translation> <translation id="2161394479394250669">Ακύρωση εργασίας εκτύπωσης</translation> <translation id="2224337661447660594">Χωρίς σύνδεση στο διαδίκτυο</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Σύστημα</translation> <translation id="2740531572673183784">ΟK</translation> <translation id="2805756323405976993">Εφαρμογές </translation> +<translation id="2862104018715411648">Τοποθετήστε το έγγραφο στον σαρωτή και επιλέξτε Σάρωση για να ξεκινήσετε.</translation> <translation id="2872961005593481000">Τερματισμός λειτουργίας</translation> <translation id="2878387241690264070">Εκφόρτιση <ph name="RATE" /> σε <ph name="NUM_SECONDS" /> δευτερόλεπτα.</translation> <translation id="3008341117444806826">ΑΝΑΝΕΩΣΗ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Είστε βέβαιοι ότι θέλετε να διαγράψετε όλο το ιστορικό εκτύπωσης; Οι τρέχουσες εργασίες εκτύπωσης δεν θα διαγραφούν.</translation> <translation id="3435738964857648380">Ασφάλεια</translation> <translation id="3456078764689556234">Εκτυπώθηκε η σελίδα <ph name="PRINTED_PAGES" /> από <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Σάρωση σελίδας <ph name="PAGE_NUM" />. Ολοκληρώθηκε το <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">Εκτύπωση</translation> <translation id="3515615323037921860">Εργασίες εκτύπωσης</translation> <translation id="3527036260304016759">Σφάλμα - Άγνωστο σφάλμα</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">ΑΠΕΤΥΧΕ</translation> <translation id="4176463684765177261">Απενεργοποιημένη</translation> <translation id="4227825898293920515">Ο κωδικός πρόσβασης λήγει σε <ph name="TIME" /></translation> +<translation id="4228041325992544252">Διαθέσιμα <ph name="AVAILABLE_MEMORY" /> GB από τα <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Δεν υπάρχουν εργασίες εκτύπωσης σε εξέλιξη</translation> <translation id="4297501883039923494">Διακοπή - Άγνωστο σφάλμα</translation> <translation id="4378373042927530923">Δεν εκτελέστηκε</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Επανεκτέλεση ρουτινών</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Αποθήκευση</translation> +<translation id="5318334351163689047">Σφάλματα αιτήματος TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Επιλέξτε έναν νέο τώρα</translation> <translation id="5333530671332546086">Άγνωστη κατάσταση πύλης</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Δεν είναι δυνατή η σύνδεση σε σαρωτές;</translation> <translation id="6853312040151791195">Ρυθμός εκφόρτισης</translation> <translation id="6898743098396957679">Δεν ήταν δυνατή η ολοκλήρωση της σάρωσης.</translation> +<translation id="6911383237894364323">Δεν είναι δυνατή η σύνδεση σε διακομιστές πολυμέσων.</translation> <translation id="6957231940976260713">Όνομα υπηρεσίας</translation> <translation id="7028979494427204405">Ο τομέας <ph name="MANAGER" /> διαχειρίζεται αυτήν τη συσκευή και έχει πρόσβαση σε όλη τη δραστηριότητα των χρηστών, συμπεριλαμβανομένων των ιστοσελίδων που επισκέπτεστε, των κωδικών πρόσβασης και του ηλεκτρονικού ταχυδρομείου.</translation> <translation id="7143207342074048698">Σύνδεση</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Διεύθυνση IPv6</translation> <translation id="7561454561030345039">Η διαχείριση αυτής της ενέργειας γίνεται από τον διαχειριστή σας.</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Μάθετε περισσότερα στο Κέντρο βοήθειας</translation> <translation id="7648838807254605802">Μεγάλος λανθάνων χρόνος HTTPS</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 a5336b0..f30c28b 100644 --- a/chromeos/strings/chromeos_strings_en-GB.xtb +++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS resolver present</translation> <translation id="1743558184855585519">The battery is considered consumed once it reaches the limit</translation> <translation id="1792647875738159689">Cancelling scanning</translation> +<translation id="1851218745569890714">Video conferencing</translation> <translation id="1905710495812624430">Maximum allowed attempts exceeded.</translation> +<translation id="1908234395526491708">UDP request failures</translation> <translation id="1930797645656624981">Chrome OS Input Method Service</translation> <translation id="1947737735496445907">Printed</translation> <translation id="1979103255016296513">Password change overdue</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prime search</translation> <translation id="2080070583977670716">More settings</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">QUEUED</translation> <translation id="2161394479394250669">Cancel print job</translation> <translation id="2224337661447660594">No Internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">System</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Apps</translation> +<translation id="2862104018715411648">Place your document on the scanner and select 'Scan' to get started</translation> <translation id="2872961005593481000">Shut down</translation> <translation id="2878387241690264070">Discharged <ph name="RATE" /> in <ph name="NUM_SECONDS" /> seconds.</translation> <translation id="3008341117444806826">REFRESH</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Are you sure you want to clear all print history? Your ongoing print jobs will not be cleared.</translation> <translation id="3435738964857648380">Security</translation> <translation id="3456078764689556234">Printed page <ph name="PRINTED_PAGES" /> out of <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Scanning page <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% completed.</translation> <translation id="3459509316159669723">Printing</translation> <translation id="3515615323037921860">Print jobs</translation> <translation id="3527036260304016759">Failed – Unknown error</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">FAILED</translation> <translation id="4176463684765177261">Disabled</translation> <translation id="4227825898293920515">Password expires in <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB of <ph name="TOTAL_MEMORY" /> GB available.</translation> <translation id="4238516577297848345">No print jobs in progress</translation> <translation id="4297501883039923494">Stopped – unknown error</translation> <translation id="4378373042927530923">Not run</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Rerun routines</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Save</translation> +<translation id="5318334351163689047">TCP request failures</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Choose a new one now</translation> <translation id="5333530671332546086">Unknown portal state</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Can't connect to scanners?</translation> <translation id="6853312040151791195">Discharging rate</translation> <translation id="6898743098396957679">Couldn't complete scanning</translation> +<translation id="6911383237894364323">Unable to connect to media servers</translation> <translation id="6957231940976260713">Service name</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> manages this device and has access to all user activity, including web pages visited, passwords and email.</translation> <translation id="7143207342074048698">Connecting</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 address</translation> <translation id="7561454561030345039">This action is managed by your administrator</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Find out more in the Help Centre</translation> <translation id="7648838807254605802">High HTTPS latency</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 a61594e..d82493d 100644 --- a/chromeos/strings/chromeos_strings_es-419.xtb +++ b/chromeos/strings/chromeos_strings_es-419.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Agente de resolución de DNS disponible</translation> <translation id="1743558184855585519">Se considera que la batería está agotada una vez que se alcanza el límite</translation> <translation id="1792647875738159689">Cancelando el escaneo</translation> +<translation id="1851218745569890714">Videoconferencias</translation> <translation id="1905710495812624430">Se superó la cantidad máxima de intentos permitidos.</translation> +<translation id="1908234395526491708">Fallos de solicitudes de UDP</translation> <translation id="1930797645656624981">Servicio de método de entrada del Sistema operativo Chrome</translation> <translation id="1947737735496445907">Impreso</translation> <translation id="1979103255016296513">Está pendiente el cambio de contraseña</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Búsqueda de números primos</translation> <translation id="2080070583977670716">Más opciones de configuración</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">EN COLA</translation> <translation id="2161394479394250669">Cancelar el trabajo de impresión</translation> <translation id="2224337661447660594">Sin Internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistema</translation> <translation id="2740531572673183784">Aceptar</translation> <translation id="2805756323405976993">Aplicaciones</translation> +<translation id="2862104018715411648">Para comenzar, coloca el documento en el escáner y selecciona Escanear</translation> <translation id="2872961005593481000">Apagar</translation> <translation id="2878387241690264070">Se descargó el <ph name="RATE" /> en <ph name="NUM_SECONDS" /> segundos.</translation> <translation id="3008341117444806826">ACTUALIZAR</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">¿Seguro que quieres borrar todo el historial de impresiones? No se quitarán tus trabajos de impresión en curso.</translation> <translation id="3435738964857648380">Seguridad</translation> <translation id="3456078764689556234">Se imprimió la página <ph name="PRINTED_PAGES" /> de un total de <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Se está escaneando la página <ph name="PAGE_NUM" />. Se completó el <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">Impresión</translation> <translation id="3515615323037921860">Trabajos de impresión</translation> <translation id="3527036260304016759">Error: Problema desconocido</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">ERROR</translation> <translation id="4176463684765177261">Inhabilitado</translation> <translation id="4227825898293920515">La contraseña caduca en <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB de <ph name="TOTAL_MEMORY" /> GB de memoria disponible.</translation> <translation id="4238516577297848345">No hay trabajos de impresión en curso</translation> <translation id="4297501883039923494">Se detuvo: error desconocido</translation> <translation id="4378373042927530923">No se ejecutó la rutina</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Volver a ejecutar las rutinas</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Guardar</translation> +<translation id="5318334351163689047">Fallos de solicitudes de TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Elige una nueva ahora</translation> <translation id="5333530671332546086">Estado desconocido del portal</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">¿No puedes establecer conexión con los escáneres?</translation> <translation id="6853312040151791195">Velocidad de descarga</translation> <translation id="6898743098396957679">No se pudo completar el escaneo</translation> +<translation id="6911383237894364323">No es posible conectarse a los servidores de medios</translation> <translation id="6957231940976260713">Nombre del servicio</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> administra este dispositivo y tiene acceso a toda la actividad del usuario, incluso las páginas web que visitó, su correo electrónico y sus contraseñas.</translation> <translation id="7143207342074048698">Conectando</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Dirección IPv6</translation> <translation id="7561454561030345039">El administrador controla esta acción</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Más información en el Centro de ayuda</translation> <translation id="7648838807254605802">Latencia de HTTPS alta</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 5f15d09..e5865f8 100644 --- a/chromeos/strings/chromeos_strings_es.xtb +++ b/chromeos/strings/chromeos_strings_es.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Resolución de DNS presente</translation> <translation id="1743558184855585519">Cuando la batería llega al límite, se considera que está vacía</translation> <translation id="1792647875738159689">Cancelando análisis</translation> +<translation id="1851218745569890714">Videoconferencias</translation> <translation id="1905710495812624430">Se ha superado el máximo de intentos permitidos.</translation> +<translation id="1908234395526491708">Errores de solicitud UDP</translation> <translation id="1930797645656624981">Servicio de método de introducción de Chrome OS</translation> <translation id="1947737735496445907">Impreso</translation> <translation id="1979103255016296513">Ya ha terminado el plazo para cambiar la contraseña</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Búsqueda principal</translation> <translation id="2080070583977670716">Más ajustes</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">EN COLA</translation> <translation id="2161394479394250669">Cancelar trabajo de impresión</translation> <translation id="2224337661447660594">Sin conexión a Internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> PPP</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistema</translation> <translation id="2740531572673183784">Aceptar</translation> <translation id="2805756323405976993">Aplicaciones</translation> +<translation id="2862104018715411648">Coloca el documento en el escáner y selecciona Escanear para comenzar</translation> <translation id="2872961005593481000">Apagar</translation> <translation id="2878387241690264070">Se ha descargado un <ph name="RATE" /> en <ph name="NUM_SECONDS" /> segundos.</translation> <translation id="3008341117444806826">ACTUALIZAR</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">¿Seguro que quieres borrar todo el historial de impresión? Los trabajos de impresión en curso no se borrarán.</translation> <translation id="3435738964857648380">Seguridad</translation> <translation id="3456078764689556234">Se ha impreso la página <ph name="PRINTED_PAGES" /> de <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Escaneando página <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % completado.</translation> <translation id="3459509316159669723">Imprimir</translation> <translation id="3515615323037921860">Trabajos de impresión</translation> <translation id="3527036260304016759">No se ha podido imprimir - Error desconocido</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">ERROR</translation> <translation id="4176463684765177261">Inhabilitado</translation> <translation id="4227825898293920515">La contraseña caducará dentro de <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB de <ph name="TOTAL_MEMORY" /> GB disponibles.</translation> <translation id="4238516577297848345">No hay ningún trabajo de impresión en curso</translation> <translation id="4297501883039923494">Detenido: error desconocido</translation> <translation id="4378373042927530923">Sin ejecutar</translation> @@ -157,6 +163,7 @@ <translation id="5275828089655680674">Repetir rutinas</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Guardar</translation> +<translation id="5318334351163689047">Errores de solicitud TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Selecciona otra ahora</translation> <translation id="5333530671332546086">Estado del portal desconocido</translation> @@ -216,6 +223,7 @@ <translation id="6839141349259399400">¿No se puede establecer conexión con ningún escáner?</translation> <translation id="6853312040151791195">Velocidad de descarga</translation> <translation id="6898743098396957679">No se ha podido completar el análisis</translation> +<translation id="6911383237894364323">No se ha podido conectar con los servidores multimedia</translation> <translation id="6957231940976260713">Nombre de servicio</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> gestiona este dispositivo y tiene acceso a toda la actividad del usuario, incluidas las páginas web visitadas, las contraseñas y el correo electrónico.</translation> <translation id="7143207342074048698">Conectando</translation> @@ -232,6 +240,7 @@ <translation id="7502658306369382406">Dirección IPv6</translation> <translation id="7561454561030345039">Esta acción la gestiona tu administrador</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Más información en el Centro de Ayuda</translation> <translation id="7648838807254605802">Latencia de HTTPS alta</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 62741e70..0513adf 100644 --- a/chromeos/strings/chromeos_strings_et.xtb +++ b/chromeos/strings/chromeos_strings_et.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS-lahendaja on olemas</translation> <translation id="1743558184855585519">Aku loetakse kasutatuks, kui selle laetuse tase jõuab selle limiidini</translation> <translation id="1792647875738159689">Skannimise tühistamine</translation> +<translation id="1851218745569890714">Videokonverents</translation> <translation id="1905710495812624430">Katsete maksimaalne arv on ületatud.</translation> +<translation id="1908234395526491708">UDP-taotluste vead</translation> <translation id="1930797645656624981">Chrome OS sisestusmeetodi teenus</translation> <translation id="1947737735496445907">Prinditud</translation> <translation id="1979103255016296513">Parooli muutmise tähtaeg on möödunud</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Algarvude otsing</translation> <translation id="2080070583977670716">Rohkem seadeid</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">JÄRJEKORRAS</translation> <translation id="2161394479394250669">Tühista prinditöö</translation> <translation id="2224337661447660594">Interneti-ühendus puudub</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Süsteem</translation> <translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Rakendused</translation> +<translation id="2862104018715411648">Asetage dokument skannerisse ja valige alustamiseks käsk Skanni.</translation> <translation id="2872961005593481000">Lülita välja</translation> <translation id="2878387241690264070">Tühjenes <ph name="RATE" /> <ph name="NUM_SECONDS" /> sekundiga.</translation> <translation id="3008341117444806826">VÄRSKENDA</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Kas soovite kindlasti kogu printimise ajaloo kustutada? Teie pooleliolevaid prinditöid ei kustutata.</translation> <translation id="3435738964857648380">Turvalisus</translation> <translation id="3456078764689556234">Prinditi <ph name="PRINTED_PAGES" />. leht <ph name="TOTAL_PAGES" />-st.</translation> +<translation id="345898999683440380">Lehe <ph name="PAGE_NUM" /> skannimine. <ph name="PERCENTAGE_VALUE" />% on lõpetatud.</translation> <translation id="3459509316159669723">Printimine</translation> <translation id="3515615323037921860">Prinditööd</translation> <translation id="3527036260304016759">Ebaõnnestus – tundmatu viga</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">EBAÕNNESTUS</translation> <translation id="4176463684765177261">Keelatud</translation> <translation id="4227825898293920515">Parooli aegumiseni on jäänud <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB <ph name="TOTAL_MEMORY" />-st on saadaval.</translation> <translation id="4238516577297848345">Ühtegi prinditööd pole pooleli</translation> <translation id="4297501883039923494">Peatatud – tundmatu viga</translation> <translation id="4378373042927530923">Ei käitatud</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Taaskäita rutiinid</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Salvesta</translation> +<translation id="5318334351163689047">TCP-taotluste vead</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Valige kohe uus</translation> <translation id="5333530671332546086">Portaali tundmatu olek</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Kas skanneritega ei õnnestu ühendust luua?</translation> <translation id="6853312040151791195">Tühjenemise kiirus</translation> <translation id="6898743098396957679">Skannimist ei saanud lõpule viia</translation> +<translation id="6911383237894364323">Meediaserveritega ei õnnestu ühendust luua</translation> <translation id="6957231940976260713">Teenuse nimi</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> haldab seda seadet ja sellel on juurdepääs kogu kasutaja tegevusele. sealhulgas külastatud veebilehed, paroolid ja e-post.</translation> <translation id="7143207342074048698">Ühendamine</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 aadress</translation> <translation id="7561454561030345039">Seda toimingut haldab administraator.</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Lisateavet leiate abikeskusest</translation> <translation id="7648838807254605802">Pikk HTTPS-i latentsusaeg</translation> <translation id="7658239707568436148">Tühista</translation> <translation id="7690294790491645610">Kinnitage uus parool</translation>
diff --git a/chromeos/strings/chromeos_strings_eu.xtb b/chromeos/strings/chromeos_strings_eu.xtb index 8c7320e..0e3ed590 100644 --- a/chromeos/strings/chromeos_strings_eu.xtb +++ b/chromeos/strings/chromeos_strings_eu.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS bidezko ebazlea badago</translation> <translation id="1743558184855585519">Bateria agortutzat jotzen da mugara iritsitakoan</translation> <translation id="1792647875738159689">Eskaneatzeko prozesua bertan behera uzten</translation> +<translation id="1851218745569890714">Bideo-konferentziak</translation> <translation id="1905710495812624430">Saiakera-muga gainditu da.</translation> +<translation id="1908234395526491708">UDP protokoloaren bidezko eskaeren hutsegiteak</translation> <translation id="1930797645656624981">Chrome OS sistemako idazketa-metodoaren zerbitzua</translation> <translation id="1947737735496445907">Inprimatuta</translation> <translation id="1979103255016296513">Pasahitza iraungita dago eta aldatu egin behar da</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prime bilaketa</translation> <translation id="2080070583977670716">Ezarpen gehiago</translation> <translation id="2141644705054017895">% <ph name="PERCENTAGE_VALUE" /></translation> +<translation id="2157959690810728433">ILARAN</translation> <translation id="2161394479394250669">Utzi bertan behera inprimatze-lana</translation> <translation id="2224337661447660594">Ez dago Interneteko konexiorik</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistema</translation> <translation id="2740531572673183784">Ados</translation> <translation id="2805756323405976993">Aplikazioak</translation> +<translation id="2862104018715411648">Hasteko, kokatu dokumentua eskanerrean eta hautatu Eskaneatu</translation> <translation id="2872961005593481000">Itzali</translation> <translation id="2878387241690264070"><ph name="RATE" /> deskargatu da <ph name="NUM_SECONDS" /> segundoan.</translation> <translation id="3008341117444806826">FRESKATU</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Ziur inprimatze-historia guztia garbitu nahi duzula? Ez dira garbituko abian dauden inprimatze-lanak.</translation> <translation id="3435738964857648380">Segurtasuna</translation> <translation id="3456078764689556234"><ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /> orria inprimatu da.</translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" />. orria eskaneatzen. % <ph name="PERCENTAGE_VALUE" /> osatuta.</translation> <translation id="3459509316159669723">Inprimaketa</translation> <translation id="3515615323037921860">Inprimatze-lanak</translation> <translation id="3527036260304016759">Hutsegitea - Errore ezezaguna</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">EZ DA GAINDITU</translation> <translation id="4176463684765177261">Desgaituta</translation> <translation id="4227825898293920515"><ph name="TIME" /> barru iraungiko da pasahitza</translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB / <ph name="TOTAL_MEMORY" /> GB daude erabilgarri.</translation> <translation id="4238516577297848345">Ez dago inprimatze-lanik abian</translation> <translation id="4297501883039923494">Geldituta: errore ezezaguna</translation> <translation id="4378373042927530923">Ez da exekutatu</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Berrabiarazi ohiturak</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Gorde</translation> +<translation id="5318334351163689047">TCP protokoloaren bidezko eskaeren hutsegiteak</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" /> (<ph name="CREATION_TIME" />), <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Aukeratu beste bat</translation> <translation id="5333530671332546086">Ez da ezagutzen atariaren egoera</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Ezin zara konektatu eskanerretara?</translation> <translation id="6853312040151791195">Bateriaren deskargatze-abiadura</translation> <translation id="6898743098396957679">Ezin izan da amaitu eskaneatzeko prozesua</translation> +<translation id="6911383237894364323">Ezin da konektatu multimedia-zerbitzarietara</translation> <translation id="6957231940976260713">Zerbitzuaren izena</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> domeinuak kudeatzen du gailu hau, eta erabiltzaileen jarduera guztiak atzi ditzake; besteak beste, bisitatutako webguneak, erabilitako pasahitzak eta posta elektronikoa.</translation> <translation id="7143207342074048698">Konektatzen</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 helbidea</translation> <translation id="7561454561030345039">Administratzaileak kudeatzen du ekintza hau</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Lortu informazio gehiago laguntza-zentroan</translation> <translation id="7648838807254605802">HTTPS eskaeren itxarote-denbora luzea</translation> <translation id="7658239707568436148">Utzi</translation> <translation id="7690294790491645610">Berretsi pasahitz berria</translation>
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb index 234b134..4b3d08d 100644 --- a/chromeos/strings/chromeos_strings_fa.xtb +++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">موجود بودن رافع ساناد</translation> <translation id="1743558184855585519">وقتی باتری به این محدوده برسد، فرسوده بهحساب میآید</translation> <translation id="1792647875738159689">درحال لغو اسکن کردن</translation> +<translation id="1851218745569890714">کنفرانس ویدیویی</translation> <translation id="1905710495812624430">به حداکثر تعداد مجاز تلاش رسیدهاید.</translation> +<translation id="1908234395526491708">خطاهای درخواست UDP</translation> <translation id="1930797645656624981">سرویس روش ورودی سیستمعامل Chrome</translation> <translation id="1947737735496445907">چاپشده</translation> <translation id="1979103255016296513">مهلت تغییر گذرواژه به پایان رسید</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">جستجوی اصلی</translation> <translation id="2080070583977670716">تنظیمات بیشتر</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />٪</translation> +<translation id="2157959690810728433">در صف</translation> <translation id="2161394479394250669">لغو کردن کار چاپ</translation> <translation id="2224337661447660594">اتصال اینترنت وجود ندارد</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> نقطه در اینچ</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">سیستم</translation> <translation id="2740531572673183784">تأیید</translation> <translation id="2805756323405976993">برنامهها</translation> +<translation id="2862104018715411648">برای شروع به کار، سندتان را روی اسکنر قرار دهید و «اسکن» را انتخاب کنید</translation> <translation id="2872961005593481000">خاموش کردن</translation> <translation id="2878387241690264070"><ph name="RATE" /> در <ph name="NUM_SECONDS" /> ثانیه تخلیه شد.</translation> <translation id="3008341117444806826">بازخوانی</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">مطمئن هستید که میخواهید همه سابقههای چاپ را حذف کنید؟ کارهای چاپ شما که درحال انجام هستند حذف نخواهند شد.</translation> <translation id="3435738964857648380">امنیت</translation> <translation id="3456078764689556234">صفحه <ph name="PRINTED_PAGES" /> از مجموع <ph name="TOTAL_PAGES" /> صفحه چاپ شده است.</translation> +<translation id="345898999683440380">درحال اسکن کردن صفحه <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />٪ انجام شده است.</translation> <translation id="3459509316159669723">درحال چاپ</translation> <translation id="3515615323037921860">کارهای چاپ</translation> <translation id="3527036260304016759">انجام نشد - خطای نامشخص</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">ناموفق</translation> <translation id="4176463684765177261">غیرفعال شد</translation> <translation id="4227825898293920515">گذرواژه <ph name="TIME" /> دیگر منقضی میشود</translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> گیگابایت از <ph name="TOTAL_MEMORY" /> گیگابایت دردسترس است.</translation> <translation id="4238516577297848345">هیچ کار چاپی درحال انجام نیست</translation> <translation id="4297501883039923494">متوقف شد - خطای نامشخص</translation> <translation id="4378373042927530923">اجرا نشد</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">اجرای دوباره روالها</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">ذخیره</translation> +<translation id="5318334351163689047">خطاهای درخواست TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />، <ph name="PRINTER_NAME" />، <ph name="CREATION_TIME" />، <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">انتخاب گذرواژه جدید، هماکنون</translation> <translation id="5333530671332546086">وضعیت درگاه نامشخص است</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">نمیتوانید به اسکنر متصل شوید؟</translation> <translation id="6853312040151791195">سرعت تخلیه شارژ</translation> <translation id="6898743098396957679">اسکن تکمیل نشد</translation> +<translation id="6911383237894364323">امکان اتصال به سرورهای رسانه وجود ندارد</translation> <translation id="6957231940976260713">نام سرویس</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> این دستگاه را مدیریت میکند و به همه فعالیتهای کاربر، ازجمله صفحههای وب بازدیدشده، گذرواژهها، و ایمیل دسترسی دارد.</translation> <translation id="7143207342074048698">در حال اتصال</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">نشانی IPv6</translation> <translation id="7561454561030345039">سرپرست شما این اقدام را مدیریت میکند</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">اطلاعات بیشتر در «مرکز راهنمایی»</translation> <translation id="7648838807254605802">تأخیر بالا در HTTPS</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 0925aa0..0172ff9 100644 --- a/chromeos/strings/chromeos_strings_fi.xtb +++ b/chromeos/strings/chromeos_strings_fi.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS-ratkaisija paikalla</translation> <translation id="1743558184855585519">Akkua pidetään kulutettuna, kun se saavuttaa rajan</translation> <translation id="1792647875738159689">Perutaan skannausta</translation> +<translation id="1851218745569890714">Videokonferenssit</translation> <translation id="1905710495812624430">Yritysten enimmäismäärä ylitettiin.</translation> +<translation id="1908234395526491708">Epäonnistuneita UDP-pyyntöjä</translation> <translation id="1930797645656624981">Chrome-käyttöjärjestelmän syöttöpalvelu</translation> <translation id="1947737735496445907">Tulostettu</translation> <translation id="1979103255016296513">Salasanan vaihto myöhässä</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Ensisijainen haku</translation> <translation id="2080070583977670716">Lisää asetuksia</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">JONOSSA</translation> <translation id="2161394479394250669">Peruuta tulostustyö</translation> <translation id="2224337661447660594">Ei internetyhteyttä</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Järjestelmä</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Sovellukset</translation> +<translation id="2862104018715411648">Aseta dokumentti skanneriin ja aloita valitsemalla Skannaa</translation> <translation id="2872961005593481000">Sammuta</translation> <translation id="2878387241690264070">Tyhjentynyt <ph name="RATE" /> <ph name="NUM_SECONDS" /> sekunnissa.</translation> <translation id="3008341117444806826">PÄIVITÄ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Haluatko varmasti poistaa tulostushistorian? Käynnissä olevia tulostustöitä ei poisteta.</translation> <translation id="3435738964857648380">Suojaus</translation> <translation id="3456078764689556234">Tulostettu <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /> sivua.</translation> +<translation id="345898999683440380">Skannataan sivu <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % valmis.</translation> <translation id="3459509316159669723">Tulostaminen</translation> <translation id="3515615323037921860">Tulostustyöt</translation> <translation id="3527036260304016759">Epäonnistui – Tuntematon virhe</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">EPÄONNISTUI</translation> <translation id="4176463684765177261">Pois käytöstä</translation> <translation id="4227825898293920515">Salasana vanhenee: <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> Gt / <ph name="TOTAL_MEMORY" /> Gt saatavilla.</translation> <translation id="4238516577297848345">Ei tulostustöitä käynnissä</translation> <translation id="4297501883039923494">Pysähtynyt – Tuntematon virhe</translation> <translation id="4378373042927530923">Ei suoritettu</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Suorita ohjelmat uudelleen</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Tallenna</translation> +<translation id="5318334351163689047">Epäonnistuneita TCP-pyyntöjä</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Valitse uusi nyt</translation> <translation id="5333530671332546086">Tuntematon portaalitila</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Etkö pysty yhdistämään skannereihin?</translation> <translation id="6853312040151791195">Tyhjentymisnopeus</translation> <translation id="6898743098396957679">Skannausta ei voitu tehdä loppuun</translation> +<translation id="6911383237894364323">Mediapalvelimiin ei saada yhteyttä</translation> <translation id="6957231940976260713">Palvelun nimi</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> ylläpitää tätä laitetta ja pääsee näkemään kaiken käyttäjätoiminnan, esim. avatut verkkosivustot, salasanat ja sähköpostit.</translation> <translation id="7143207342074048698">Yhdistetään</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6-osoite</translation> <translation id="7561454561030345039">Järjestelmänvalvojasi ylläpitää tätä toimintoa</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Lue lisää ohjekeskuksesta</translation> <translation id="7648838807254605802">Suuri HTTPS-viive</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 729aa842..ad14b98 100644 --- a/chromeos/strings/chromeos_strings_fil.xtb +++ b/chromeos/strings/chromeos_strings_fil.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">May DNS Resolver</translation> <translation id="1743558184855585519">Itinuturing na nakonsumo ang baterya kapag naabot na nito ang limitasyon</translation> <translation id="1792647875738159689">Kinakansela ang pag-scan</translation> +<translation id="1851218745569890714">Pakikipagkumperensya Gamit ang Video</translation> <translation id="1905710495812624430">Nalampasan na ang maximum na pinapahintulutang bilang ng pagsubok</translation> +<translation id="1908234395526491708">Mga hindi naisagawang kahilingan sa UDP</translation> <translation id="1930797645656624981">Serbisyo ng Pamamaraan ng Pag-input ng Chrome OS</translation> <translation id="1947737735496445907">Na-print</translation> <translation id="1979103255016296513">Overdue na ang pagpapalit ng password</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prime na paghahanap</translation> <translation id="2080070583977670716">Higit pang mga setting</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">NAKA-QUEUE</translation> <translation id="2161394479394250669">Kanselahin ang pag-print</translation> <translation id="2224337661447660594">Walang internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">System</translation> <translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Mga App</translation> +<translation id="2862104018715411648">Ilagay ang iyong dokumento sa scanner at piliin ang I-scan para makapagsimula</translation> <translation id="2872961005593481000">Shut down</translation> <translation id="2878387241690264070">Nag-discharge nang <ph name="RATE" /> sa loob ng <ph name="NUM_SECONDS" /> (na) segundo.</translation> <translation id="3008341117444806826">I-REFRESH</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Sigurado ka bang gusto mong i-clear ang lahat ng history ng pag-print? Hindi maki-clear ang iyong mga kasalukuyang pag-print.</translation> <translation id="3435738964857648380">Seguridad</translation> <translation id="3456078764689556234">Na-print ang page <ph name="PRINTED_PAGES" /> sa <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Sina-scan ang pahina <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% na ang natapos.</translation> <translation id="3459509316159669723">Pagpi-print</translation> <translation id="3515615323037921860">Mga Pag-print</translation> <translation id="3527036260304016759">Hindi na-print - Hindi kilalang error</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">NABIGO</translation> <translation id="4176463684765177261">Hindi pinapaganana</translation> <translation id="4227825898293920515">Mag-e-expire ang password sa loob ng <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB sa <ph name="TOTAL_MEMORY" /> GB ang available.</translation> <translation id="4238516577297848345">Walang kasalukuyang pag-print</translation> <translation id="4297501883039923494">Huminto - Hindi kilalang error</translation> <translation id="4378373042927530923">Hindi Tumakbo</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Patakbuhin Ulit ang Mga Routine</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">I-save</translation> +<translation id="5318334351163689047">Mga hindi naisagawang kahilingan sa TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Pumili ng bago ngayon</translation> <translation id="5333530671332546086">Hindi alam na status ng portal</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Hindi makakonekta sa mga scanner?</translation> <translation id="6853312040151791195">Rate ng Pag-discharge</translation> <translation id="6898743098396957679">Hindi makumpleto ang pag-scan</translation> +<translation id="6911383237894364323">Hindi makakonekta sa mga media server</translation> <translation id="6957231940976260713">Pangalan ng serbisyo</translation> <translation id="7028979494427204405">Pinapamahalaan ng <ph name="MANAGER" /> ang device na ito at mayroon itong access sa lahat ng aktibidad ng user, kabilang ang mga webpage na binisita, mga password, at email.</translation> <translation id="7143207342074048698">Kumokonekta</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 address</translation> <translation id="7561454561030345039">Pinapamahalaan ng iyong administrator ang pagkilos na ito.</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Matuto pa sa Help Center</translation> <translation id="7648838807254605802">Mataas na latency ng HTTPS</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 8f2dd80f..3e393f9 100644 --- a/chromeos/strings/chromeos_strings_fr.xtb +++ b/chromeos/strings/chromeos_strings_fr.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Présence du résolveur DNS</translation> <translation id="1743558184855585519">La batterie est considérée comme usagée une fois la limite atteinte</translation> <translation id="1792647875738159689">Annulation de la numérisation…</translation> +<translation id="1851218745569890714">Visioconférence</translation> <translation id="1905710495812624430">Vous avez atteint le nombre maximal autorisé de tentatives.</translation> +<translation id="1908234395526491708">Échec de la requête UDP</translation> <translation id="1930797645656624981">Service de mode de saisie Chrome OS</translation> <translation id="1947737735496445907">Impression terminée</translation> <translation id="1979103255016296513">Mot de passe à modifier</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Recherche de nombres premiers</translation> <translation id="2080070583977670716">Plus de paramètres</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">Test ajouté à la file d'attente</translation> <translation id="2161394479394250669">Annuler la tâche d'impression</translation> <translation id="2224337661447660594">Aucun accès à Internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> ppp</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Système</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Applications</translation> +<translation id="2862104018715411648">Placez votre document sur le scanner, puis sélectionnez Scanner pour commencer</translation> <translation id="2872961005593481000">Éteindre</translation> <translation id="2878387241690264070">Déchargée de <ph name="RATE" /> en <ph name="NUM_SECONDS" /> secondes.</translation> <translation id="3008341117444806826">ACTUALISER</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Voulez-vous vraiment effacer tout l'historique des impressions ? Vos tâches d'impression en cours ne seront pas supprimées de cet historique.</translation> <translation id="3435738964857648380">Sécurité</translation> <translation id="3456078764689556234">Page imprimée : <ph name="PRINTED_PAGES" /> sur <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Numérisation de la page <ph name="PAGE_NUM" />… Numérisation terminée à <ph name="PERCENTAGE_VALUE" /> %.</translation> <translation id="3459509316159669723">Impression</translation> <translation id="3515615323037921860">Tâches d'impression</translation> <translation id="3527036260304016759">Échec – Erreur inconnue</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">ÉCHEC</translation> <translation id="4176463684765177261">Désactivé</translation> <translation id="4227825898293920515">Le mot de passe arrive à expiration dans <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> Go disponible(s) sur <ph name="TOTAL_MEMORY" /> Go.</translation> <translation id="4238516577297848345">Aucune tâche d'impression en cours</translation> <translation id="4297501883039923494">Tâche suspendue - Erreur inconnue</translation> <translation id="4378373042927530923">Routine non exécutée</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Exécuter de nouveau les routines</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Enregistrer</translation> +<translation id="5318334351163689047">Échec de la requête TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Choisissez-en un nouveau maintenant</translation> <translation id="5333530671332546086">État du portail inconnu</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Impossible d'établir la connexion avec les scanners ?</translation> <translation id="6853312040151791195">Vitesse de décharge</translation> <translation id="6898743098396957679">Échec de la numérisation</translation> +<translation id="6911383237894364323">Impossible de se connecter aux serveurs multimédias</translation> <translation id="6957231940976260713">Nom du service</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> gère cet appareil et a accès à toutes les activités des utilisateurs, y compris les pages Web consultées, les mots de passe et la messagerie.</translation> <translation id="7143207342074048698">Connexion</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Adresse IPv6</translation> <translation id="7561454561030345039">Cette action est gérée par votre administrateur</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">En savoir plus sur le centre d'aide</translation> <translation id="7648838807254605802">Latence élevée des requêtes HTTPS</translation> <translation id="7658239707568436148">Annuler</translation> <translation id="7690294790491645610">Confirmer le nouveau mot de passe</translation>
diff --git a/chromeos/strings/chromeos_strings_gl.xtb b/chromeos/strings/chromeos_strings_gl.xtb index 20cf40b..4350c2a8 100644 --- a/chromeos/strings/chromeos_strings_gl.xtb +++ b/chromeos/strings/chromeos_strings_gl.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Presenza do solucionador de DNS</translation> <translation id="1743558184855585519">Considérase que a batería está esgotada cando alcanza o límite</translation> <translation id="1792647875738159689">Cancelando escaneo</translation> +<translation id="1851218745569890714">Videoconferencias</translation> <translation id="1905710495812624430">Superouse o número máximo de intentos.</translation> +<translation id="1908234395526491708">Erros nas solicitudes de UDP</translation> <translation id="1930797645656624981">Servizo do método de introdución de texto de Chrome OS</translation> <translation id="1947737735496445907">Impreso</translation> <translation id="1979103255016296513">Produciuse un atraso no cambio de contrasinal</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Busca principal</translation> <translation id="2080070583977670716">Máis configuracións</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">EN COLA</translation> <translation id="2161394479394250669">Cancelar traballo de impresión</translation> <translation id="2224337661447660594">Non hai conexión a Internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> ppp</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistema</translation> <translation id="2740531572673183784">Aceptar</translation> <translation id="2805756323405976993">Aplicacións</translation> +<translation id="2862104018715411648">Coloca o documento no escáner e selecciona Escanear para comezar</translation> <translation id="2872961005593481000">Pechar</translation> <translation id="2878387241690264070">Descargouse un <ph name="RATE" /> en <ph name="NUM_SECONDS" /> segundos.</translation> <translation id="3008341117444806826">ACTUALIZAR</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Seguro que queres borrar todo o historial de impresión? Non se borrarán os traballos de impresión en curso.</translation> <translation id="3435738964857648380">Seguranza</translation> <translation id="3456078764689556234">Páxina <ph name="PRINTED_PAGES" /> de <ph name="TOTAL_PAGES" /> impresa.</translation> +<translation id="345898999683440380">Escaneando páxina <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % completado.</translation> <translation id="3459509316159669723">Impresión</translation> <translation id="3515615323037921860">Traballos de impresión</translation> <translation id="3527036260304016759">Produciuse un erro descoñecido</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">NON SE SUPEROU</translation> <translation id="4176463684765177261">Desactivado</translation> <translation id="4227825898293920515">O contrasinal caduca en <ph name="TIME" /></translation> +<translation id="4228041325992544252">Memoria dispoñible: <ph name="AVAILABLE_MEMORY" /> GB de <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Non hai ningunha tarefa de impresión en curso</translation> <translation id="4297501883039923494">Detívose (produciuse un erro descoñecido)</translation> <translation id="4378373042927530923">Non se executou</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Volver executar rutinas</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Gardar</translation> +<translation id="5318334351163689047">Erros nas solicitudes de TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Escolle un novo agora</translation> <translation id="5333530671332546086">Descoñécese o estado do portal</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Non podes conectarte a ningún escáner?</translation> <translation id="6853312040151791195">Taxa de descarga</translation> <translation id="6898743098396957679">Non se puido completar o escaneado</translation> +<translation id="6911383237894364323">Non se puido establecer conexión cos servidores multimedia</translation> <translation id="6957231940976260713">Nome do servizo</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> xestiona este dispositivo e ten acceso a toda a actividade dos usuarios, como as páxinas web visitadas, os contrasinais e o correo electrónico.</translation> <translation id="7143207342074048698">Conectando</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Enderezo IPv6</translation> <translation id="7561454561030345039">O teu administrador xestiona esta acción</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Máis información no Centro de axuda</translation> <translation id="7648838807254605802">Latencia de HTTPS alta</translation> <translation id="7658239707568436148">Cancelar</translation> <translation id="7690294790491645610">Confirmar contrasinal novo</translation>
diff --git a/chromeos/strings/chromeos_strings_gu.xtb b/chromeos/strings/chromeos_strings_gu.xtb index a2ba61f..3fcd7446 100644 --- a/chromeos/strings/chromeos_strings_gu.xtb +++ b/chromeos/strings/chromeos_strings_gu.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS રિઝોલ્વરનું વર્તમાન પરીક્ષણ</translation> <translation id="1743558184855585519">એકવાર બૅટરી તેની મર્યાદાએ પહોંચી જાય પછી તેને ઉપયોગમાં લેવાયેલી માનવામાં આવે છે</translation> <translation id="1792647875738159689">સ્કૅન કરવાનું કાર્ય રદ કરી રહ્યાં છીએ</translation> +<translation id="1851218745569890714">વીડિયો કૉન્ફરન્સિંગ</translation> <translation id="1905710495812624430">મહત્તમ મંજૂર પ્રયત્નોની સંખ્યા ઓળંગાઈ.</translation> +<translation id="1908234395526491708">UDP વિનંતી નિષ્ફળ થઈ</translation> <translation id="1930797645656624981">Chrome OS ઇનપુટ પદ્ધતિ સેવા</translation> <translation id="1947737735496445907">પ્રિન્ટ થઈ ગયું</translation> <translation id="1979103255016296513">પાસવર્ડ બદલવાની તારીખ નીકળી ગઈ છે</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">મુખ્ય શોધ</translation> <translation id="2080070583977670716">વધુ સેટિંગ્સ</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">કતારમાં</translation> <translation id="2161394479394250669">પ્રિન્ટ જોબ રદ કરો</translation> <translation id="2224337661447660594">ઇન્ટરનેટ ઍક્સેસ નથી</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">સિસ્ટમ</translation> <translation id="2740531572673183784">બરાબર, સમજાઇ ગયું</translation> <translation id="2805756323405976993">એપ્સ</translation> +<translation id="2862104018715411648">તમારા દસ્તાવેજને સ્કૅનર પર મૂકો અને શરૂ કરવા માટે સ્કૅન કરો પસંદ કરો</translation> <translation id="2872961005593481000">શટ ડાઉન કરો</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" /> સેકન્ડમાં <ph name="RATE" /> ડિસ્ચાર્જ.</translation> <translation id="3008341117444806826">રિફ્રેશ કરો</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">શું તમે ખરેખર પ્રિન્ટનો બધો ઇતિહાસ સાફ કરવા માગો છો? તમારી હાલની પ્રિન્ટ જોબ સાફ કરવામાં આવશે નહીં.</translation> <translation id="3435738964857648380">સુરક્ષા</translation> <translation id="3456078764689556234"><ph name="TOTAL_PAGES" />માંથી <ph name="PRINTED_PAGES" /> પેજ પ્રિન્ટ કર્યા.</translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" /> નંબરનું પેજ સ્કૅન કરી રહ્યાં છીએ. <ph name="PERCENTAGE_VALUE" />% પૂર્ણ થયું.</translation> <translation id="3459509316159669723">છાપવું</translation> <translation id="3515615323037921860">પ્રિન્ટ જોબ</translation> <translation id="3527036260304016759">નિષ્ફળ થયું - અજાણી ભૂલ</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">નિષ્ફળ થયું</translation> <translation id="4176463684765177261">અક્ષમ કરેલું</translation> <translation id="4227825898293920515"><ph name="TIME" />માં પાસવર્ડની સમયસીમા સમાપ્ત થાય છે</translation> +<translation id="4228041325992544252"><ph name="TOTAL_MEMORY" /> GBમાંથી <ph name="AVAILABLE_MEMORY" /> GB ઉપલબ્ધ છે.</translation> <translation id="4238516577297848345">કોઈ પ્રિન્ટ કામ ચાલુ નથી</translation> <translation id="4297501883039923494">બંધ - અજાણી ભૂલ</translation> <translation id="4378373042927530923">ચલાવ્યું નથી</translation> @@ -157,6 +163,7 @@ <translation id="5275828089655680674">રૂટિન ફરીથી ચલાવો</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">સાચવો</translation> +<translation id="5318334351163689047">TCP વિનંતી નિષ્ફળ થઈ</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">કૃપા કરીને નવો પાસવર્ડ પસંદ કરો</translation> <translation id="5333530671332546086">પોર્ટલની અજાણી સ્થિતિ</translation> @@ -216,6 +223,7 @@ <translation id="6839141349259399400">સ્કૅનર સાથે કનેક્ટ કરી શકતા નથી?</translation> <translation id="6853312040151791195">ડિસ્ચાર્જ થવાની ટકાવારી</translation> <translation id="6898743098396957679">સ્કૅન કરવાની પ્રક્રિયા પૂર્ણ કરી શક્યાં નહીં</translation> +<translation id="6911383237894364323">મીડિયા સર્વર સાથે કનેક્ટ કરી શકાયું નથી</translation> <translation id="6957231940976260713">સેવાનું નામ</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> આ ડિવાઇસને મેનેજ કરે છે અને મુલાકાત લીધેલા વેબપેજ, પાસવર્ડ અને ઇમેઇલ સહિત, બધી વપરાશકર્તા પ્રવૃત્તિઓનો ઍક્સેસ ધરાવે છે.</translation> <translation id="7143207342074048698">કનેક્ટિંગ</translation> @@ -232,6 +240,7 @@ <translation id="7502658306369382406">IPv6 સરનામું</translation> <translation id="7561454561030345039">આ ક્રિયાને તમારા વ્યવસ્થાપક દ્વારા મેનેજ કરવામાં આવે છે</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">સહાયતા કેન્દ્રમાં વધુ જાણો</translation> <translation id="7648838807254605802">HTTPSની ઉચ્ચ વિલંબતા</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 23f6870e..654e843c 100644 --- a/chromeos/strings/chromeos_strings_hi.xtb +++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">डीएनएस रिज़ॉल्वर मौजूद है</translation> <translation id="1743558184855585519">सीमा पूरी होने का मतलब है कि बैटरी खत्म हो गई है</translation> <translation id="1792647875738159689">स्कैन करने की प्रोसेस रद्द की जा रही है</translation> +<translation id="1851218745569890714">वीडियो कॉन्फ़्रेंसिंग</translation> <translation id="1905710495812624430">अधिकतम स्वीकार्य प्रयासों की सीमा पार हो गई है.</translation> +<translation id="1908234395526491708">यूडीपी अनुरोध पूरे नहीं हो पाए</translation> <translation id="1930797645656624981">Chrome OS के इनपुट के तरीके की सेवा</translation> <translation id="1947737735496445907">प्रिंट किया गया</translation> <translation id="1979103255016296513">पासवर्ड बदलने का समय निकल चुका है</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">प्राइम सर्च</translation> <translation id="2080070583977670716">ज़्यादा सेटिंग</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">कतार में है</translation> <translation id="2161394479394250669">प्रिंट करना रद्द करें</translation> <translation id="2224337661447660594">इंटरनेट कनेक्शन नहीं है</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> डीपीआई</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">सिस्टम</translation> <translation id="2740531572673183784">ठीक है</translation> <translation id="2805756323405976993">ऐप्स</translation> +<translation id="2862104018715411648">स्कैनर पर अपना दस्तावेज़ रखें. इसके बाद, स्कैन करने की प्रोसेस शुरू करने के लिए, 'स्कैन करें' को चुनें</translation> <translation id="2872961005593481000">शट डाउन करें</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" /> सेकंड में <ph name="RATE" /> डिस्चार्ज हुई.</translation> <translation id="3008341117444806826">रीफ़्रेश करें</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">क्या आप वाकई अपना पूरा प्रिंट इतिहास मिटाना चाहते हैं? प्रिंट का जो काम अभी चल रहा है उसकी जानकारी (प्रिंट जॉब) नहीं मिटाई जाएगी.</translation> <translation id="3435738964857648380">सुरक्षा</translation> <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> में से <ph name="PRINTED_PAGES" /> पेज प्रिंट किए गए.</translation> +<translation id="345898999683440380">पेज <ph name="PAGE_NUM" /> को स्कैन किया जा रहा है. <ph name="PERCENTAGE_VALUE" />% पूरा हो गया.</translation> <translation id="3459509316159669723">प्रिंट करना</translation> <translation id="3515615323037921860">प्रिंट जॉब</translation> <translation id="3527036260304016759">प्रिंट नहीं हो पाया - अज्ञात गड़बड़ी</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">असफल</translation> <translation id="4176463684765177261">बंद किया गया</translation> <translation id="4227825898293920515"><ph name="TIME" /> में पासवर्ड की समयसीमा खत्म हो जाएगी</translation> +<translation id="4228041325992544252">कुल <ph name="TOTAL_MEMORY" /> जीबी में से <ph name="AVAILABLE_MEMORY" /> जीबी उपलब्ध है.</translation> <translation id="4238516577297848345">फ़िलहाल, कुछ प्रिंट नहीं हो रहा</translation> <translation id="4297501883039923494">बंद हो गया - अज्ञात गड़बड़ी</translation> <translation id="4378373042927530923">चल नहीं पाया</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">रूटीन फिर से चलाएं</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">सेव करें</translation> +<translation id="5318334351163689047">टीसीपी अनुरोध पूरे नहीं हो पाए</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">कोई नया पासवर्ड चुनें</translation> <translation id="5333530671332546086">पोर्टल की स्थिति की जानकारी नहीं है</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">क्या आप स्कैनर से कनेक्ट नहीं कर पा रहे हैं?</translation> <translation id="6853312040151791195">डिस्चार्ज होने की दर</translation> <translation id="6898743098396957679">स्कैन नहीं किया जा सका</translation> +<translation id="6911383237894364323">मीडिया सर्वर से कनेक्ट नहीं किया जा सका</translation> <translation id="6957231940976260713">सेवा का नाम</translation> <translation id="7028979494427204405">इस डिवाइस को <ph name="MANAGER" /> प्रबंधित करता है और इसके पास उपयोगकर्ता की सभी गतिविधियों का ऐक्सेस है. इन गतिविधियों में उपयोगकर्ता के पासवर्ड, ईमेल, और उन पेजों की जानकारी होती है जिन पर वह जाता है.</translation> <translation id="7143207342074048698">कनेक्टिंग</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 पता</translation> <translation id="7561454561030345039">इस कार्रवाई को आपका एडमिन प्रबंधित करता है</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">सहायता केंद्र पर इसके बारे में ज़्यादा जानें</translation> <translation id="7648838807254605802">एचटीटीपीएस अनुरोधों में इंतज़ार का समय ज़्यादा है</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 6750c49..2a65149 100644 --- a/chromeos/strings/chromeos_strings_hr.xtb +++ b/chromeos/strings/chromeos_strings_hr.xtb
@@ -35,7 +35,9 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">Prisutnost DNS prevoditelja</translation> <translation id="1792647875738159689">Otkazivanje skeniranja</translation> +<translation id="1851218745569890714">Videokonferencije</translation> <translation id="1905710495812624430">Premašen je maksimalan dopušteni broj pokušaja.</translation> +<translation id="1908234395526491708">Neuspješni UDP zahtjevi</translation> <translation id="1930797645656624981">Usluga načina unosa OS-a Chrome</translation> <translation id="1947737735496445907">Ispisano</translation> <translation id="1979103255016296513">Zakašnjela promjena zaporke</translation> @@ -44,6 +46,7 @@ <translation id="2008685064673031089">Glavno pretraživanje</translation> <translation id="2080070583977670716">Više postavki</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">NA ČEKANJU</translation> <translation id="2161394479394250669">Otkaži zadatak ispisa</translation> <translation id="2224337661447660594">Nema interneta</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -59,6 +62,7 @@ <translation id="2620436844016719705">Sustav</translation> <translation id="2740531572673183784">U redu</translation> <translation id="2805756323405976993">Aplikacije</translation> +<translation id="2862104018715411648">Postavite dokument na skener i odaberite opciju Skeniraj da biste započeli</translation> <translation id="2872961005593481000">Isključi</translation> <translation id="2878387241690264070">Ispražnjeno <ph name="RATE" /> za <ph name="NUM_SECONDS" /> s.</translation> <translation id="3008341117444806826">OSVJEŽI</translation> @@ -81,6 +85,7 @@ <translation id="3369013195428705271">Jeste li sigurni da želite izbrisati svu povijest ispisa? Zadaci ispisa u tijeku neće se izbrisati.</translation> <translation id="3435738964857648380">Sigurnost</translation> <translation id="3456078764689556234">Ispisane stranice: <ph name="PRINTED_PAGES" /> od <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Skeniranje stranice <ph name="PAGE_NUM" />. Dovršeno je <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">Ispis</translation> <translation id="3515615323037921860">Zadaci ispisa</translation> <translation id="3527036260304016759">Nije uspjelo – nepoznata pogreška</translation> @@ -103,6 +108,7 @@ <translation id="4170700058716978431">NIJE USPJELO</translation> <translation id="4176463684765177261">Onemogućeno</translation> <translation id="4227825898293920515">Zaporka istječe za <ph name="TIME" /></translation> +<translation id="4228041325992544252">Dostupno je <ph name="AVAILABLE_MEMORY" /> GB od <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Nema zadataka ispisa u tijeku</translation> <translation id="4297501883039923494">Zaustavljeno – nepoznata pogreška</translation> <translation id="4378373042927530923">Nije pokrenuto</translation> @@ -155,6 +161,7 @@ <translation id="5275828089655680674">Ponovo pokreni rutine</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Spremi</translation> +<translation id="5318334351163689047">Neuspješni TCP zahtjevi</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Odmah odaberite novu</translation> <translation id="5333530671332546086">Nepoznato stanje portala</translation> @@ -213,6 +220,7 @@ <translation id="6839141349259399400">Ne možete se povezati sa skenerima?</translation> <translation id="6853312040151791195">Brzina pražnjenja</translation> <translation id="6898743098396957679">Skeniranje nije dovršeno</translation> +<translation id="6911383237894364323">Povezivanje s medijskim poslužiteljima nije uspjelo</translation> <translation id="6957231940976260713">Naziv usluge</translation> <translation id="7028979494427204405">Uređajem upravlja <ph name="MANAGER" /> i taj upravitelj ima pristup svim aktivnostima korisnika, uključujući posjećene web-stranice, zaporke i e-poštu.</translation> <translation id="7143207342074048698">Povezivanje</translation> @@ -228,6 +236,7 @@ <translation id="7502658306369382406">IPv6 adresa</translation> <translation id="7561454561030345039">Tom radnjom upravlja vaš administrator</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Saznajte više u centru za pomoć</translation> <translation id="7648838807254605802">Visoka latencija HTTPS-a</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 beeba82..a873226 100644 --- a/chromeos/strings/chromeos_strings_hu.xtb +++ b/chromeos/strings/chromeos_strings_hu.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS-névfeloldó működik</translation> <translation id="1743558184855585519">Az akkumulátor lemerültnek tekinthető, ha elérte a korlátot</translation> <translation id="1792647875738159689">Beolvasás megszakítása…</translation> +<translation id="1851218745569890714">Videokonferencia</translation> <translation id="1905710495812624430">Elérte az engedélyezett kísérletek maximális számát.</translation> +<translation id="1908234395526491708">Hibás UDP-kérelmek.</translation> <translation id="1930797645656624981">Chrome OS beviteli módszere szolgáltatás</translation> <translation id="1947737735496445907">Sikeres nyomtatás</translation> <translation id="1979103255016296513">Esedékes a jelszó frissítése</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prímszámkeresés</translation> <translation id="2080070583977670716">További beállítások</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">VÁRAKOZIK</translation> <translation id="2161394479394250669">Nyomtatási feladat megszakítása</translation> <translation id="2224337661447660594">Nincs internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Rendszer</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Alkalmazások</translation> +<translation id="2862104018715411648">A kezdéshez helyezze a dokumentumot a szkennerre, és válassza a Scan (Beolvasás) gombot.</translation> <translation id="2872961005593481000">Leállítás</translation> <translation id="2878387241690264070"><ph name="RATE" /> lemerítve <ph name="NUM_SECONDS" /> másodperc alatt.</translation> <translation id="3008341117444806826">FRISSÍTÉS</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Biztosan törli a nyomtatási előzményeket? A folyamatban lévő nyomtatási feladatok nem szakadnak meg.</translation> <translation id="3435738964857648380">Biztonság</translation> <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> oldal kinyomtatva (összesen ennyiből: <ph name="TOTAL_PAGES" />).</translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" />. oldal beolvasása… <ph name="PERCENTAGE_VALUE" />% kész.</translation> <translation id="3459509316159669723">Nyomtatás</translation> <translation id="3515615323037921860">Nyomtatási feladatok</translation> <translation id="3527036260304016759">Sikertelen – Ismeretlen hiba</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">SIKERTELEN</translation> <translation id="4176463684765177261">Letiltva</translation> <translation id="4227825898293920515">A jelszó <ph name="TIME" /> múlva lejár</translation> +<translation id="4228041325992544252"><ph name="TOTAL_MEMORY" />/<ph name="AVAILABLE_MEMORY" /> GB áll rendelkezésre.</translation> <translation id="4238516577297848345">Nincsenek folyamatban lévő nyomtatási feladatok</translation> <translation id="4297501883039923494">Leállt – Ismeretlen hiba</translation> <translation id="4378373042927530923">Nem fut</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Rutinok újrafuttatása</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Mentés</translation> +<translation id="5318334351163689047">Hibás TCP-kérések.</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Válasszon most új jelszót</translation> <translation id="5333530671332546086">A portál állapota ismeretlen</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Nem tud szkennerhez csatlakozni?</translation> <translation id="6853312040151791195">Lemerítési sebesség</translation> <translation id="6898743098396957679">Nem sikerült befejezni a beolvasást</translation> +<translation id="6911383237894364323">Nem lehet csatlakozni a médiaszerverekhez.</translation> <translation id="6957231940976260713">Szolgáltatás neve</translation> <translation id="7028979494427204405">A(z) <ph name="MANAGER" /> kezeli ezt az eszközt, ezért hozzáfér az összes felhasználói tevékenységhez, köztük a felkeresett webhelyekhez, a jelszavakhoz és az e-mailekhez.</translation> <translation id="7143207342074048698">Csatlakozás</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6-cím</translation> <translation id="7561454561030345039">Ezt a műveletet a rendszergazdája kezeli.</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">További információ a Súgóban</translation> <translation id="7648838807254605802">Hosszú várakozási idő HTTPS esetén</translation> <translation id="7658239707568436148">Mégse</translation> <translation id="7690294790491645610">Új jelszó megerősítése</translation>
diff --git a/chromeos/strings/chromeos_strings_hy.xtb b/chromeos/strings/chromeos_strings_hy.xtb index 50efe04..ec11ce0 100644 --- a/chromeos/strings/chromeos_strings_hy.xtb +++ b/chromeos/strings/chromeos_strings_hy.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS լուծիչը առկա է</translation> <translation id="1743558184855585519">Մարտկոցը լիցքը համարվում է սպառված, երբ դրա մակարդակը հասնում է սահմանաչափին</translation> <translation id="1792647875738159689">Սկանավորումը չեղարկվում է</translation> +<translation id="1851218745569890714">Տեսակոնֆերանս</translation> <translation id="1905710495812624430">Փորձերի առավելագույն թույլատրելի քանակը սպառվել է:</translation> +<translation id="1908234395526491708">Ձախողված UDP հարցումներ</translation> <translation id="1930797645656624981">Chrome OS-ում ներածման եղանակի ծառայություն</translation> <translation id="1947737735496445907">Տպված է</translation> <translation id="1979103255016296513">Գաղտնաբառի փոփոխման ժամկետն անցել է</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prime որոնում</translation> <translation id="2080070583977670716">Այլ կարգավորումներ</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">ՀԵՐԹԱԳՐՎԱԾ Է</translation> <translation id="2161394479394250669">Չեղարկել տպման առաջադրանքը</translation> <translation id="2224337661447660594">Ինտերնետ կապ չկա</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Համակարգ</translation> <translation id="2740531572673183784">Եղավ</translation> <translation id="2805756323405976993">Հավելվածներ</translation> +<translation id="2862104018715411648">Փաստաթուղթը դրեք սկաների վրա և սեղմեք Սկանավորել</translation> <translation id="2872961005593481000">Անջատել</translation> <translation id="2878387241690264070">Լիցքաթափվել է <ph name="RATE" /> <ph name="NUM_SECONDS" /> վայրկյանում։</translation> <translation id="3008341117444806826">ԹԱՐՄԱՑՆԵԼ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Մաքրե՞լ ամբողջ տպման պատմությունը: Ընթացիկ տպման աշխատանքները չեն ջնջվի։</translation> <translation id="3435738964857648380">Անվտանգություն</translation> <translation id="3456078764689556234">Տպված էջ՝ <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" />։</translation> +<translation id="345898999683440380">Սկանավորվում է էջ <ph name="PAGE_NUM" />-ը։ Կատարված է <ph name="PERCENTAGE_VALUE" />%-ը։</translation> <translation id="3459509316159669723">Տպում</translation> <translation id="3515615323037921860">Տպման աշխատանքներ</translation> <translation id="3527036260304016759">Չհաջողվեց տպել – Անհայտ սխալ</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">ՁԱԽՈՂՎԵՑ</translation> <translation id="4176463684765177261">Անջատված է</translation> <translation id="4227825898293920515">Գաղտնաբառի գործողության ժամկետը <ph name="TIME" />ից կսպառվի</translation> +<translation id="4228041325992544252"><ph name="TOTAL_MEMORY" /> ԳԲ-ից հասանելի է <ph name="AVAILABLE_MEMORY" /> ԳԲ։</translation> <translation id="4238516577297848345">Տպելու ընթացիկ առաջադրանքներ չկան</translation> <translation id="4297501883039923494">Դադարեցվել է – Անհայտ սխալ</translation> <translation id="4378373042927530923">Չի գործարկվել</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Նորից գործարկել ծրագրերը</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Պահել</translation> +<translation id="5318334351163689047">Ձախողված TCP հարցումներ</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Հնարավորինս արագ փոխեք գաղտնաբառը</translation> <translation id="5333530671332546086">Ցանցային պորտալի անհայտ վիճակ</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Չի՞ հաջողվում միանալ սկաներներին։</translation> <translation id="6853312040151791195">Լիցքաթափման արագությունը</translation> <translation id="6898743098396957679">Չհաջողվեց ավարտել սկանավորումը</translation> +<translation id="6911383237894364323">Չհաջողվեց միանալ մեդիա սերվերներին</translation> <translation id="6957231940976260713">Ծառայության անվանումը</translation> <translation id="7028979494427204405">Այս սարքը կառավարվում է <ph name="MANAGER" />-ի կողմից, և վերջինիս տեսանելի են օգտատիրոջ բոլոր գործողությունները, այդ թվում՝ այցելած կայքերը, գաղտնաբառերը և նամակները:</translation> <translation id="7143207342074048698">Միացում</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 հասցե</translation> <translation id="7561454561030345039">Այս գործողությունը կառավարվում է ձեր ադմինիստրատորի կողմից</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Մանրամասն Օգնության կենտրոնի մասին</translation> <translation id="7648838807254605802">HTTPS-ի բարձր հապաղում</translation> <translation id="7658239707568436148">Չեղարկել</translation> <translation id="7690294790491645610">Հաստատեք նոր գաղտնաբառը</translation>
diff --git a/chromeos/strings/chromeos_strings_id.xtb b/chromeos/strings/chromeos_strings_id.xtb index 79e80e24..ff5433b 100644 --- a/chromeos/strings/chromeos_strings_id.xtb +++ b/chromeos/strings/chromeos_strings_id.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Keberadaan DNS Resolver</translation> <translation id="1743558184855585519">Daya baterai akan dianggap habis jika telah mencapai batas</translation> <translation id="1792647875738159689">Membatalkan pemindaian</translation> +<translation id="1851218745569890714">Konferensi Video</translation> <translation id="1905710495812624430">Melebihi batas percobaan maksimum yang diizinkan.</translation> +<translation id="1908234395526491708">Kegagalan permintaan UDP</translation> <translation id="1930797645656624981">Layanan Metode Masukan Chrome OS</translation> <translation id="1947737735496445907">Tercetak</translation> <translation id="1979103255016296513">Perubahan sandi melewati batas waktu</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Penelusuran bilangan prima</translation> <translation id="2080070583977670716">Setelan lain</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">DALAM ANTREAN</translation> <translation id="2161394479394250669">Batalkan tugas pencetakan</translation> <translation id="2224337661447660594">Tidak ada internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistem</translation> <translation id="2740531572673183784">Oke</translation> <translation id="2805756323405976993">Apl</translation> +<translation id="2862104018715411648">Letakkan dokumen Anda pada pemindai, lalu pilih Pindai untuk memulai</translation> <translation id="2872961005593481000">Matikan</translation> <translation id="2878387241690264070">Daya terpakai <ph name="RATE" /> dalam <ph name="NUM_SECONDS" /> detik.</translation> <translation id="3008341117444806826">PERBARUI</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Yakin ingin menghapus semua histori cetak? Pekerjaan cetak yang sedang berlangsung tidak akan dihapus.</translation> <translation id="3435738964857648380">Keamanan</translation> <translation id="3456078764689556234">Mencetak halaman <ph name="PRINTED_PAGES" /> dari <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Memindai halaman <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% selesai.</translation> <translation id="3459509316159669723">Pencetakan</translation> <translation id="3515615323037921860">Pekerjaan Cetak</translation> <translation id="3527036260304016759">Gagal - Error tidak diketahui</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">GAGAL</translation> <translation id="4176463684765177261">Dinonaktifkan</translation> <translation id="4227825898293920515">Sandi kedaluwarsa dalam <ph name="TIME" /></translation> +<translation id="4228041325992544252">Tersedia <ph name="AVAILABLE_MEMORY" /> GB dari <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Tidak ada tugas pencetakan yang sedang berlangsung</translation> <translation id="4297501883039923494">Dihentikan - Error tidak diketahui</translation> <translation id="4378373042927530923">Tidak Berjalan</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Jalankan Kembali Rutinitas</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Simpan</translation> +<translation id="5318334351163689047">Kegagalan permintaan TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Pilih satu sandi baru sekarang</translation> <translation id="5333530671332546086">Status portal tidak diketahui</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Tidak dapat terhubung ke pemindai?</translation> <translation id="6853312040151791195">Kecepatan pemakaian daya</translation> <translation id="6898743098396957679">Tidak dapat menyelesaikan pemindaian</translation> +<translation id="6911383237894364323">Tidak dapat terhubung ke server media</translation> <translation id="6957231940976260713">Nama layanan</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> akan mengelola perangkat ini dan memiliki akses ke semua aktivitas pengguna, termasuk halaman yang dikunjungi, sandi, dan email.</translation> <translation id="7143207342074048698">Menghubungkan</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Alamat IPv6</translation> <translation id="7561454561030345039">Tindakan ini dikelola oleh administrator Anda</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Pelajari lebih lanjut di Pusat Bantuan</translation> <translation id="7648838807254605802">Latensi HTTPS tinggi</translation> <translation id="7658239707568436148">Batal</translation> <translation id="7690294790491645610">Konfirmasi sandi baru</translation>
diff --git a/chromeos/strings/chromeos_strings_is.xtb b/chromeos/strings/chromeos_strings_is.xtb index 25a33ea..a2548b1f 100644 --- a/chromeos/strings/chromeos_strings_is.xtb +++ b/chromeos/strings/chromeos_strings_is.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS-úrlausn til staðar</translation> <translation id="1743558184855585519">Rafhlaðan telst tóm þegar hún nær takmörkunum</translation> <translation id="1792647875738159689">Hættir við að skanna</translation> +<translation id="1851218745569890714">Myndfundur</translation> <translation id="1905710495812624430">Farið var yfir hámarksfjölda tilrauna.</translation> +<translation id="1908234395526491708">UDP-beiðnir mistókust</translation> <translation id="1930797645656624981">Innfærsluaðferð Chrome OS þjónustu</translation> <translation id="1947737735496445907">Prentað</translation> <translation id="1979103255016296513">Breyting á aðgangsorði komin fram yfir tíma</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Aðalleit</translation> <translation id="2080070583977670716">Fleiri stillingar</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">Í BIÐRÖÐ</translation> <translation id="2161394479394250669">Hætta við prentverk</translation> <translation id="2224337661447660594">Engin nettenging</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Kerfi</translation> <translation id="2740531572673183784">Í lagi</translation> <translation id="2805756323405976993">Forrit</translation> +<translation id="2862104018715411648">Komdu skjalinu fyrir í skannanum og veldu „Skanna“ til að hefjast handa</translation> <translation id="2872961005593481000">Slökkva</translation> <translation id="2878387241690264070">Afhleðsla nam <ph name="RATE" /> á <ph name="NUM_SECONDS" /> sekúndum.</translation> <translation id="3008341117444806826">ENDURNÝJA</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Viltu örugglega hreinsa allan prentferil? Prentverk sem eru í gangi verða ekki hreinsuð.</translation> <translation id="3435738964857648380">Öryggi</translation> <translation id="3456078764689556234">Prentaði síðu <ph name="PRINTED_PAGES" /> af <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Skannar síðu <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% lokið.</translation> <translation id="3459509316159669723">Prentun</translation> <translation id="3515615323037921860">Prentverk</translation> <translation id="3527036260304016759">Mistókst – óþekkt villa</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">MISTÓKST</translation> <translation id="4176463684765177261">Óvirkt</translation> <translation id="4227825898293920515">Aðgangsorð rennur út eftir <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB af <ph name="TOTAL_MEMORY" /> GB tiltæk.</translation> <translation id="4238516577297848345">Engin prentun í gangi</translation> <translation id="4297501883039923494">Stöðvað – óþekkt villa</translation> <translation id="4378373042927530923">Ekki keyra</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Keyra rútínur aftur</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Vista</translation> +<translation id="5318334351163689047">TCP-beiðnir mistókust</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Veldu nýtt núna</translation> <translation id="5333530671332546086">Óþekkt staða gáttar</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Er ekki hægt að tengjast skönnum?</translation> <translation id="6853312040151791195">Afhleðsluhraði</translation> <translation id="6898743098396957679">Ekki var hægt að ljúka skönnun</translation> +<translation id="6911383237894364323">Ekki er hægt að tengjast efnisþjónum</translation> <translation id="6957231940976260713">Heiti þjónustu</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> hefur umsjón með þessu tæki og hefur aðgang að allri notendavirkni, þ.m.t. heimsóttum vefsíðum, aðgangsorðum og tölvupósti.</translation> <translation id="7143207342074048698">Tengist</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6-veffang</translation> <translation id="7561454561030345039">Kerfisstjórinn þinn stjórnar þessari stillingu</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Fáðu frekari upplýsingar í hjálparmiðstöðinni</translation> <translation id="7648838807254605802">Langur HTTPS-biðtími</translation> <translation id="7658239707568436148">Hætta við</translation> <translation id="7690294790491645610">Staðfestu nýtt aðgangsorð</translation>
diff --git a/chromeos/strings/chromeos_strings_it.xtb b/chromeos/strings/chromeos_strings_it.xtb index 69230e2..6fb02bb4 100644 --- a/chromeos/strings/chromeos_strings_it.xtb +++ b/chromeos/strings/chromeos_strings_it.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Resolver DNS presente</translation> <translation id="1743558184855585519">La batteria viene considerata esaurita quando raggiunge il limite</translation> <translation id="1792647875738159689">Annullamento scansione…</translation> +<translation id="1851218745569890714">Videoconferenze</translation> <translation id="1905710495812624430">Numero massimo di tentativi consentiti superato.</translation> +<translation id="1908234395526491708">Errori delle richieste UDP</translation> <translation id="1930797645656624981">Servizio metodo di immissione di Chrome OS</translation> <translation id="1947737735496445907">Stampato</translation> <translation id="1979103255016296513">Modifica della password scaduta</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prime search</translation> <translation id="2080070583977670716">Altre impostazioni</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">IN CODA</translation> <translation id="2161394479394250669">Annulla processo di stampa</translation> <translation id="2224337661447660594">Nessuna connessione a Internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistema</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">App</translation> +<translation id="2862104018715411648">Posiziona il documento sullo scanner e seleziona Scansiona per iniziare</translation> <translation id="2872961005593481000">Spegni</translation> <translation id="2878387241690264070">Riduzione della carica: <ph name="RATE" /> in <ph name="NUM_SECONDS" /> secondi.</translation> <translation id="3008341117444806826">AGGIORNA</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Vuoi cancellare l'intera cronologia di stampa? I processi di stampa in corso non verranno cancellati.</translation> <translation id="3435738964857648380">Sicurezza</translation> <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> pagina stampata su <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Scansione della pagina <ph name="PAGE_NUM" /> in corso. Completamento: <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">Stampa</translation> <translation id="3515615323037921860">Processi di stampa</translation> <translation id="3527036260304016759">Operazione non riuscita - Errore sconosciuto</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">OPERAZIONE NON RIUSCITA</translation> <translation id="4176463684765177261">Disattivato</translation> <translation id="4227825898293920515">La password scade tra <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB disponibili su <ph name="TOTAL_MEMORY" />.</translation> <translation id="4238516577297848345">Nessun processo di stampa in corso</translation> <translation id="4297501883039923494">Operazione interrotta - Errore sconosciuto</translation> <translation id="4378373042927530923">Non eseguito</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Riesegui le routine</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Salva</translation> +<translation id="5318334351163689047">Errori delle richieste TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Scegline ora una nuova</translation> <translation id="5333530671332546086">Stato del portale sconosciuto</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Non riesci a collegare gli scanner?</translation> <translation id="6853312040151791195">Velocità di riduzione della carica</translation> <translation id="6898743098396957679">Impossibile completare la scansione</translation> +<translation id="6911383237894364323">Impossibile connettersi ai server multimediali</translation> <translation id="6957231940976260713">Nome servizio</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> gestisce questo dispositivo e ha accesso a tutta l'attività utente, tra cui le pagine web visitate, le password e le email.</translation> <translation id="7143207342074048698">Connessione</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Indirizzo IPv6</translation> <translation id="7561454561030345039">Questa azione è gestita dall'amministratore</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Scopri di più nel Centro assistenza</translation> <translation id="7648838807254605802">Latenza HTTPS elevata</translation> <translation id="7658239707568436148">Annulla</translation> <translation id="7690294790491645610">Conferma nuova password</translation>
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb index 9034680..ccf7253 100644 --- a/chromeos/strings/chromeos_strings_ja.xtb +++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS Resolver の存在</translation> <translation id="1743558184855585519">バッテリーの制限値に達すると消費したものと見なされます</translation> <translation id="1792647875738159689">スキャンをキャンセルしています</translation> +<translation id="1851218745569890714">ビデオ会議</translation> <translation id="1905710495812624430">最大試行回数を超えました。</translation> +<translation id="1908234395526491708">UDP リクエストに失敗しました</translation> <translation id="1930797645656624981">Chrome OS の入力方法サービス</translation> <translation id="1947737735496445907">印刷完了</translation> <translation id="1979103255016296513">パスワードの変更期限を過ぎました</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prime サーチ</translation> <translation id="2080070583977670716">詳細設定</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">待機中</translation> <translation id="2161394479394250669">印刷ジョブをキャンセル</translation> <translation id="2224337661447660594">インターネットに接続されていません</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">システム</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">アプリ</translation> +<translation id="2862104018715411648">スキャナにドキュメントを置いて、[スキャン] を選択してスキャンを開始してください</translation> <translation id="2872961005593481000">終了</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" /> 秒で <ph name="RATE" /> 放電しました。</translation> <translation id="3008341117444806826">更新</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">印刷履歴をすべて削除してもよろしいですか?実行中の印刷ジョブは削除されません。</translation> <translation id="3435738964857648380">セキュリティ</translation> <translation id="3456078764689556234"><ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /> ページを印刷しました。</translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" /> ページ目をスキャンしています。<ph name="PERCENTAGE_VALUE" />% 完了。</translation> <translation id="3459509316159669723">印刷</translation> <translation id="3515615323037921860">印刷ジョブ</translation> <translation id="3527036260304016759">失敗 - 不明なエラー</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">失敗</translation> <translation id="4176463684765177261">停止中</translation> <translation id="4227825898293920515">パスワードの有効期限はあと <ph name="TIME" />です</translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB / <ph name="TOTAL_MEMORY" /> GB 使用可能。</translation> <translation id="4238516577297848345">実行中の印刷ジョブはありません</translation> <translation id="4297501883039923494">停止 - 不明なエラー</translation> <translation id="4378373042927530923">未実行</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">ルーティンを再実行</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">保存</translation> +<translation id="5318334351163689047">TCP リクエストに失敗しました</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />、<ph name="PRINTER_NAME" />、<ph name="CREATION_TIME" />、<ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">新しいパスワードを今すぐ選択してください</translation> <translation id="5333530671332546086">ポータルの状態が不明です</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">スキャナに接続できない場合</translation> <translation id="6853312040151791195">放電率</translation> <translation id="6898743098396957679">スキャンを完了できませんでした</translation> +<translation id="6911383237894364323">メディア サーバーに接続できません</translation> <translation id="6957231940976260713">サービス名</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> はこのデバイスを管理しており、閲覧したウェブページ、パスワード、メールなど、すべてのユーザー アクティビティにアクセスできます。</translation> <translation id="7143207342074048698">接続中</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 アドレス</translation> <translation id="7561454561030345039">この操作は管理者によって管理されています</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">詳しくはヘルプセンターをご覧ください</translation> <translation id="7648838807254605802">HTTPS レイテンシが高くなっています</translation> <translation id="7658239707568436148">キャンセル</translation> <translation id="7690294790491645610">新しいパスワードの確認入力</translation>
diff --git a/chromeos/strings/chromeos_strings_ka.xtb b/chromeos/strings/chromeos_strings_ka.xtb index 0d48fb9..73f822a 100644 --- a/chromeos/strings/chromeos_strings_ka.xtb +++ b/chromeos/strings/chromeos_strings_ka.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS-ის მომგვარებლის არსებობა</translation> <translation id="1743558184855585519">ლიმიტის მიღწევისას ბატარეა გამოყენებულად ჩაითვლება</translation> <translation id="1792647875738159689">მიმდინარეობს სკანირების გაუქმება</translation> +<translation id="1851218745569890714">ვიდეოკონფერენცია</translation> <translation id="1905710495812624430">გადაჭარბებულია მცდელობათა მაქსიმალური რაოდენობა.</translation> +<translation id="1908234395526491708">წარუმატებელი UDP მოთხოვნები</translation> <translation id="1930797645656624981">Chrome OS-ის შეყვანის მეთოდის სერვისი</translation> <translation id="1947737735496445907">დაბეჭდილი</translation> <translation id="1979103255016296513">პაროლის შეცვლა დაგვიანებულია</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prime Search</translation> <translation id="2080070583977670716">დამატებითი პარამეტრები</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">რიგშია</translation> <translation id="2161394479394250669">ბეჭდვის დავალების გაუქმება</translation> <translation id="2224337661447660594">ინტერნეტ-კავშირი არ არის</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">სისტემა</translation> <translation id="2740531572673183784">კარგი</translation> <translation id="2805756323405976993">პროგრამები</translation> +<translation id="2862104018715411648">დასაწყებად მოათავსეთ დოკუმენტი სკანერზე და აირჩიეთ სკანირება</translation> <translation id="2872961005593481000">გამორთვა</translation> <translation id="2878387241690264070"><ph name="RATE" /> განიმუხტა <ph name="NUM_SECONDS" /> წამში.</translation> <translation id="3008341117444806826">განახლება</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">ნამდვილად გსურთ ბეჭდვის ისტორიის მთლიანად გასუფთავება? ბეჭდვის მიმდინარე დავალებები არ წაიშლება.</translation> <translation id="3435738964857648380">უსაფრთხოება</translation> <translation id="3456078764689556234">ამობეჭდილი გვერდი <ph name="PRINTED_PAGES" /> / <ph name="TOTAL_PAGES" />-დან.</translation> +<translation id="345898999683440380">სკანირდება გვერდი <ph name="PAGE_NUM" />. დასრულებულია <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">ბეჭდვა</translation> <translation id="3515615323037921860">ბეჭდვის დავალებები</translation> <translation id="3527036260304016759">ვერ მოხერხდა — უცნობი შეცდომა</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">ვერ შესრულდა</translation> <translation id="4176463684765177261">გამორთული</translation> <translation id="4227825898293920515">პაროლი ძალაშია <ph name="TIME" /></translation> +<translation id="4228041325992544252">ხელმისაწვდომია <ph name="TOTAL_MEMORY" /> გბაიტიდან <ph name="AVAILABLE_MEMORY" /> გბაიტი.</translation> <translation id="4238516577297848345">ბეჭდვის მიმდინარე დავალებები არ არის</translation> <translation id="4297501883039923494">გაჩერდა — უცნობი შეცდომა</translation> <translation id="4378373042927530923">არ არის გაშვებული</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">რუტინების ხელახლა გაშვება</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">შენახვა</translation> +<translation id="5318334351163689047">წარუმატებელი TCP მოთხოვნები</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">ახლავე აირჩიეთ ახალი</translation> <translation id="5333530671332546086">პორტალის მდგომარეობა უცნობია</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">ვერ უკავშირდებით სკანერებს?</translation> <translation id="6853312040151791195">განმუხტვის სიჩქარე</translation> <translation id="6898743098396957679">სკანირება ვერ დასრულდა</translation> +<translation id="6911383237894364323">მედიასერვერებთან დაკავშირება ვერ მოხერხდა</translation> <translation id="6957231940976260713">სერვისის სახელი</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> მართავს ამ მოწყობილობას და აქვს წვდომა მომხმარებლების ნებისმიერ აქტივობაზე, მათ შორის, მონახულებულ ვებგვერდებზე, პაროლებსა და ელფოსტაზე.</translation> <translation id="7143207342074048698">დაკავშირება</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 მისამართი</translation> <translation id="7561454561030345039">ამ მოქმედებას მართავს თქვენი ადმინისტრატორი</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">შეიტყვეთ მეტი დახმარების ცენტრში</translation> <translation id="7648838807254605802">HTTPS რეაგირების დრო დიდია</translation> <translation id="7658239707568436148">გაუქმება</translation> <translation id="7690294790491645610">დაადასტურეთ ახალი პაროლი</translation>
diff --git a/chromeos/strings/chromeos_strings_kk.xtb b/chromeos/strings/chromeos_strings_kk.xtb index b0ce8eb..6b89f90 100644 --- a/chromeos/strings/chromeos_strings_kk.xtb +++ b/chromeos/strings/chromeos_strings_kk.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS түрлендіргіші бар</translation> <translation id="1743558184855585519">Батарея шегіне жеткенде, толықтай отырды дегенді білдіреді.</translation> <translation id="1792647875738159689">Сканерлеу тоқтатылуда</translation> +<translation id="1851218745569890714">Бейнеконференция жасау</translation> <translation id="1905710495812624430">Максималды рұқсат етілетін әрекеттер шегінен асып кетті.</translation> +<translation id="1908234395526491708">UDP сұрауының ақаулары</translation> <translation id="1930797645656624981">Chrome OS енгізу әдісі қызметі</translation> <translation id="1947737735496445907">Басып шығарылған</translation> <translation id="1979103255016296513">Құпия сөзді өзгертуге берілген мерзім аяқталды</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prime search</translation> <translation id="2080070583977670716">Қосымша параметрлер</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">КЕЗЕКТЕ</translation> <translation id="2161394479394250669">Баспа жұмысынан бас тарту</translation> <translation id="2224337661447660594">Интернет жоқ</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> нүкте/дюйм</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Жүйе</translation> <translation id="2740531572673183784">Жарайды</translation> <translation id="2805756323405976993">Қолданбалар</translation> +<translation id="2862104018715411648">Құжатты сканерге қойып, "Сканерлеу" опциясын таңдаңыз.</translation> <translation id="2872961005593481000">Өшіру</translation> <translation id="2878387241690264070">Заряд <ph name="NUM_SECONDS" /> секундта <ph name="RATE" /> азайды.</translation> <translation id="3008341117444806826">ЖАҢАРТУ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Басып шығару тарихын шынымен толығымен тазалағыңыз келе ме? Қазір орындалып жатқан басып шығару жұмысының деректері сақталады.</translation> <translation id="3435738964857648380">Қауіпсіздік</translation> <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> бет (жалпы саны: <ph name="TOTAL_PAGES" />) басып шығарылды.</translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" />-бет сканерленуде. <ph name="PERCENTAGE_VALUE" />% орындалды.</translation> <translation id="3459509316159669723">Басып шығару</translation> <translation id="3515615323037921860">Баспа жұмыстары</translation> <translation id="3527036260304016759">Сәтсіз: белгісіз қате шықты</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">СӘТСІЗ АЯҚТАЛДЫ</translation> <translation id="4176463684765177261">Өшірілген</translation> <translation id="4227825898293920515">Құпия сөздің мерзімі <ph name="TIME" /> өткен соң аяқталады.</translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" />/<ph name="TOTAL_MEMORY" /> ГБ қолжетімді.</translation> <translation id="4238516577297848345">Ешқандай баспа жұмысы орындалып жатқан жоқ.</translation> <translation id="4297501883039923494">Тоқтатылды: белгісіз қате</translation> <translation id="4378373042927530923">Іске қосылмаған</translation> @@ -157,6 +163,7 @@ <translation id="5275828089655680674">Режимдерді қайта іске қосу</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Сақтау</translation> +<translation id="5318334351163689047">TCP сұрауының ақаулары</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Жаңа құпия сөз енгізіңіз.</translation> <translation id="5333530671332546086">Портал күйі белгісіз.</translation> @@ -216,6 +223,7 @@ <translation id="6839141349259399400">Сканерлерге қосыла алмадыңыз ба?</translation> <translation id="6853312040151791195">Заряд азаюының жылдамдығы</translation> <translation id="6898743098396957679">Сканерлеуді аяқтау мүмкін болмады</translation> +<translation id="6911383237894364323">Медиасерверлерге қосылмады.</translation> <translation id="6957231940976260713">Қызмет атауы</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> осы құрылғыны басқарады және пайдаланушының барлық әрекетін (мысалы, кірген веб-сайттары, құпия сөздері және электрондық поштасы) көре алады.</translation> <translation id="7143207342074048698">Қосылып жатыр</translation> @@ -232,6 +240,7 @@ <translation id="7502658306369382406">IPv6 мекенжайы</translation> <translation id="7561454561030345039">Бұл әрекетті әкімшіңіз басқарады.</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Толығырақ ақпаратты Анықтамалық орталықтан қарау</translation> <translation id="7648838807254605802">HTTPS кідірісі жоғары.</translation> <translation id="7658239707568436148">Бас тарту</translation> <translation id="7690294790491645610">Жаңа құпия сөзді қайталаңыз</translation>
diff --git a/chromeos/strings/chromeos_strings_km.xtb b/chromeos/strings/chromeos_strings_km.xtb index ff39d61..f65f2ef6 100644 --- a/chromeos/strings/chromeos_strings_km.xtb +++ b/chromeos/strings/chromeos_strings_km.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">កម្មវិធីបំប្លែង DNS បច្ចុប្បន្ន</translation> <translation id="1743558184855585519">ថ្មត្រូវបានចាត់ទុកថាអស់ នៅពេលឈានដល់កម្រិតកំណត់</translation> <translation id="1792647875738159689">កំពុងបោះបង់ការស្កេន</translation> +<translation id="1851218745569890714">ការប្រជុំតាមវីដេអូ</translation> <translation id="1905710495812624430">បានលើសការព្យាយាមចូូលអតិបរមាដែលបានអនុញ្ញាតហើយ។</translation> +<translation id="1908234395526491708">សំណើ UDP មិនបានសម្រេច</translation> <translation id="1930797645656624981">សេវាកម្មវិធីបញ្ចូល Chrome OS</translation> <translation id="1947737735496445907">បានបោះពុម្ព</translation> <translation id="1979103255016296513">ការផ្លាស់ប្ដូរពាក្យសម្ងាត់បានផុតកំណត់ហើយ</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">ការស្វែងរកចម្បង</translation> <translation id="2080070583977670716">ការកំណត់ច្រើនទៀត</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">បានដាក់ជាជួរ</translation> <translation id="2161394479394250669">បោះបង់ការងារបោះពុម្ព</translation> <translation id="2224337661447660594">គ្មានអ៊ីនធឺណិតទេ</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">ប្រព័ន្ធ</translation> <translation id="2740531572673183784">យល់ព្រម</translation> <translation id="2805756323405976993">កម្មវិធី</translation> +<translation id="2862104018715411648">ដាក់ឯកសាររបស់អ្នកនៅលើម៉ាស៊ីនស្កេន រួចជ្រើសរើស "ស្កេន" ដើម្បីចាប់ផ្ដើម</translation> <translation id="2872961005593481000">បិទ</translation> <translation id="2878387241690264070">បានឈប់សាកថ្ម <ph name="RATE" /> ក្នុងរយៈពេល <ph name="NUM_SECONDS" /> វិនាទី។</translation> <translation id="3008341117444806826">ផ្ទុកឡើងវិញ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">តើអ្នកពិតជាចង់សម្អាតប្រវត្តិបោះពុម្ពទាំងអស់មែនឬ? ការងារបោះពុម្ពរបស់អ្នកដែលកំពុងដំណើរការនឹងមិនត្រូវបានសម្អាតទេ។</translation> <translation id="3435738964857648380">សុវត្ថិភាព</translation> <translation id="3456078764689556234">បានបោះពុម្ពទំព័រទី <ph name="PRINTED_PAGES" /> ក្នុងចំណោម <ph name="TOTAL_PAGES" />។</translation> +<translation id="345898999683440380">កំពុងស្កេនទំព័រទី <ph name="PAGE_NUM" />។ បានបញ្ចប់ <ph name="PERCENTAGE_VALUE" />%។</translation> <translation id="3459509316159669723">កំពុងបោះពុម្ព</translation> <translation id="3515615323037921860">ការងារបោះពុម្ព</translation> <translation id="3527036260304016759">មិនបានសម្រេច - មានបញ្ហាដែលមិនស្គាល់</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">មិនបានសម្រេច</translation> <translation id="4176463684765177261">បានបិទដំណើរការ</translation> <translation id="4227825898293920515">ពាក្យសម្ងាត់ផុតកំណត់ក្នុងរយៈពេល <ph name="TIME" /></translation> +<translation id="4228041325992544252">ទំនេរ <ph name="AVAILABLE_MEMORY" /> GB នៃ <ph name="TOTAL_MEMORY" /> GB។</translation> <translation id="4238516577297848345">មិនមានកិច្ចការបោះពុម្ពកំពុងដំណើរការទេ</translation> <translation id="4297501883039923494">បានឈប់ - មានបញ្ហាដែលមិនស្គាល់</translation> <translation id="4378373042927530923">មិនដំណើរការទេ</translation> @@ -157,6 +163,7 @@ <translation id="5275828089655680674">ដំណើរការទម្លាប់ឡើងវិញ</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">រក្សាទុក</translation> +<translation id="5318334351163689047">សំណើ TCP មិនបានសម្រេច</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">សូមជ្រើសរើសពាក្យសម្ងាត់ថ្មីឥឡូវនេះ</translation> <translation id="5333530671332546086">មិនស្គាល់ស្ថានភាពច្រកទេ</translation> @@ -216,6 +223,7 @@ <translation id="6839141349259399400">មិនអាចភ្ជាប់ម៉ាស៊ីនស្កេនបានទេឬ?</translation> <translation id="6853312040151791195">អត្រាឈប់សាកថ្ម</translation> <translation id="6898743098396957679">មិនអាចបញ្ចប់ការស្កេនបានទេ</translation> +<translation id="6911383237894364323">មិនអាចភ្ជាប់ម៉ាស៊ីនមេមេឌៀបានទេ</translation> <translation id="6957231940976260713">ឈ្មោះសេវាកម្ម</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> គ្រប់គ្រងឧបករណ៍នេះ និងមានសិទ្ធិចូលមើលសកម្មភាពអ្នកប្រើប្រាស់ទាំងអស់ រួមទាំងទំព័របណ្ដាញដែលបានចូលមើល ពាក្យសម្ងាត់ និងអ៊ីមែលផងដែរ។</translation> <translation id="7143207342074048698">កំពុងភ្ជាប់...</translation> @@ -232,6 +240,7 @@ <translation id="7502658306369382406">អាសយដ្ឋាន IPv6</translation> <translation id="7561454561030345039">សកម្មភាពនេះត្រូវបានគ្រប់គ្រងដោយអ្នកគ្រប់គ្រងរបស់អ្នក</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">ស្វែងយល់បន្ថែមនៅក្នុងមជ្ឈមណ្ឌលជំនួយ</translation> <translation id="7648838807254605802">ការពន្យារ HTTPS ខ្ពស់</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 3236c7cc..68260ca 100644 --- a/chromeos/strings/chromeos_strings_ko.xtb +++ b/chromeos/strings/chromeos_strings_ko.xtb
@@ -35,9 +35,11 @@ <translation id="1662989795263954667">중지됨 - 잉크 부족</translation> <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">DNS 리졸버 존재</translation> -<translation id="1743558184855585519">배터리가 한도에 도달하면 소모된 것으로 간주됨</translation> +<translation id="1743558184855585519">배터리가 충전 횟수 한도에 도달하면 소진된 것으로 간주함</translation> <translation id="1792647875738159689">스캔 취소 중</translation> +<translation id="1851218745569890714">화상 회의</translation> <translation id="1905710495812624430">허용되는 최대 시도 횟수를 초과했습니다.</translation> +<translation id="1908234395526491708">UDP 요청 실패</translation> <translation id="1930797645656624981">Chrome OS 입력 방법 서비스</translation> <translation id="1947737735496445907">인쇄됨</translation> <translation id="1979103255016296513">비밀번호 변경 기한 지남</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prime 검색</translation> <translation id="2080070583977670716">설정 더보기</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">대기 중</translation> <translation id="2161394479394250669">인쇄 작업 취소</translation> <translation id="2224337661447660594">인터넷 연결 없음</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" />dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">시스템</translation> <translation id="2740531572673183784">확인</translation> <translation id="2805756323405976993">앱</translation> +<translation id="2862104018715411648">시작하려면 스캐너에 문서를 놓고 스캔을 선택하세요.</translation> <translation id="2872961005593481000">종료</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" />초 내에 <ph name="RATE" /> 방전됨</translation> <translation id="3008341117444806826">새로고침</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">모든 인쇄 기록을 삭제하시겠습니까? 진행 중인 인쇄 작업은 삭제되지 않습니다.</translation> <translation id="3435738964857648380">보안</translation> <translation id="3456078764689556234">인쇄된 페이지 <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /></translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" />페이지를 스캔 중입니다. <ph name="PERCENTAGE_VALUE" />% 완료되었습니다.</translation> <translation id="3459509316159669723">인쇄</translation> <translation id="3515615323037921860">인쇄 작업</translation> <translation id="3527036260304016759">실패 - 알 수 없는 오류</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">실패</translation> <translation id="4176463684765177261">사용 중지됨</translation> <translation id="4227825898293920515">비밀번호가 <ph name="TIME" /> 후에 만료됨</translation> +<translation id="4228041325992544252"><ph name="TOTAL_MEMORY" />GB 중 <ph name="AVAILABLE_MEMORY" />GB를 사용할 수 있습니다.</translation> <translation id="4238516577297848345">진행 중인 인쇄 작업 없음</translation> <translation id="4297501883039923494">중지됨 - 알 수 없는 오류</translation> <translation id="4378373042927530923">실행되지 않음</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">루틴 다시 실행</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">저장</translation> +<translation id="5318334351163689047">TCP 요청 실패</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">지금 새 비밀번호를 선택하세요.</translation> <translation id="5333530671332546086">알 수 없는 포털 상태</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">스캐너에 연결할 수 없나요?</translation> <translation id="6853312040151791195">방전 속도</translation> <translation id="6898743098396957679">스캔을 완료할 수 없음</translation> +<translation id="6911383237894364323">미디어 서버에 연결할 수 없음</translation> <translation id="6957231940976260713">서비스 이름</translation> <translation id="7028979494427204405"><ph name="MANAGER" />에서 이 기기를 관리하고 방문한 웹페이지, 비밀번호, 이메일을 비롯한 모든 사용자 활동에 액세스합니다.</translation> <translation id="7143207342074048698">연결 중</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 주소</translation> <translation id="7561454561030345039">관리자가 관리하는 작업입니다.</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">고객센터에서 자세히 알아보기</translation> <translation id="7648838807254605802">HTTPS 지연 시간 높음</translation> <translation id="7658239707568436148">취소</translation> <translation id="7690294790491645610">새 비밀번호 확인</translation>
diff --git a/chromeos/strings/chromeos_strings_ky.xtb b/chromeos/strings/chromeos_strings_ky.xtb index b24c26b..5c17496 100644 --- a/chromeos/strings/chromeos_strings_ky.xtb +++ b/chromeos/strings/chromeos_strings_ky.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS которгучун текшерүү</translation> <translation id="1743558184855585519">Чекке жеткенде батарея сарпталды деп эсептелет</translation> <translation id="1792647875738159689">Скандоо токтотулууда</translation> +<translation id="1851218745569890714">Видео конференция</translation> <translation id="1905710495812624430">Аракеттер уруксат берилген чегинен ашты.</translation> +<translation id="1908234395526491708">Ишке ашпай калган UDP сурамдары</translation> <translation id="1930797645656624981">Chrome OS киргизүү ыкмасынын кызматы</translation> <translation id="1947737735496445907">Басып чыгарылды</translation> <translation id="1979103255016296513">Сырсөздү өзгөртүү мөөнөтү бүттү</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Баштапкы издөө</translation> <translation id="2080070583977670716">Дагы жөндөөлөр</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">КЕЗЕККЕ КОЮЛДУ</translation> <translation id="2161394479394250669">Басып чыгарууну токтотуу</translation> <translation id="2224337661447660594">Интернет жок</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Тутум</translation> <translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Колдонмолор</translation> +<translation id="2862104018715411648">Документиңизди сканерге коюп, Скандоо баскычын басыңыз</translation> <translation id="2872961005593481000">Жабуу</translation> <translation id="2878387241690264070">Батареянын кубаты <ph name="NUM_SECONDS" /> секундда <ph name="RATE" /> түгөндү.</translation> <translation id="3008341117444806826">ЖАҢЫРТУУ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Басып чыгаруу тарыхын өчүрөсүзбү? Учурда басылып жаткан документтериңиз өчүрүлбөйт.</translation> <translation id="3435738964857648380">Коопсуздук</translation> <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> ичинен <ph name="PRINTED_PAGES" /> барак басылып чыгарылды.</translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" />-бет скандалууда. <ph name="PERCENTAGE_VALUE" />% бүттү.</translation> <translation id="3459509316159669723">Басып чыгаруу</translation> <translation id="3515615323037921860">Басып чыгаруу тапшырмалары</translation> <translation id="3527036260304016759">Басылып чыгарылган жок - Белгисиз ката</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">АТКАРЫЛГАН ЖОК</translation> <translation id="4176463684765177261">Өчүк</translation> <translation id="4227825898293920515">Сырсөздүн мөөнөтү <ph name="TIME" /> кийин бүтөт</translation> +<translation id="4228041325992544252"><ph name="TOTAL_MEMORY" /> Гб ичинен <ph name="AVAILABLE_MEMORY" /> Гб жеткиликтүү.</translation> <translation id="4238516577297848345">Аткарылып жаткан иш жок</translation> <translation id="4297501883039923494">Токтоду – Белгисиз ката</translation> <translation id="4378373042927530923">Иштетилген жок</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Программаларды кайра иштетүү</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Сактоо</translation> +<translation id="5318334351163689047">Ишке ашпай калган TCP сурамдары</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Жаңысын азыр тандаңыз</translation> <translation id="5333530671332546086">Порталдын абалы белгисиз</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Сканерлерге туташуу мүмкүн болбой жатабы?</translation> <translation id="6853312040151791195">Батареянын кубатынын түгөнүү көрсөткүчү</translation> <translation id="6898743098396957679">Скандоо аягына чыккан жок</translation> +<translation id="6911383237894364323">Медиа серверлерине туташпай жатат</translation> <translation id="6957231940976260713">Кызматтын аталышы</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> бул түзмөктү башкарып, андагы колдонуучунун бардык аракеттерине, анын ичинде баш баккан веб-барактарга, сырсөздөргө жана электрондук каттарга кирүү мүмкүнчүлүгү бар.</translation> <translation id="7143207342074048698">Туташууда</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 дареги</translation> <translation id="7561454561030345039">Бул аракетти администраторуңуз башкарат</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Жардам борборуна өтүп, кененирээк маалымат алыңыз</translation> <translation id="7648838807254605802">HTTPS күтүү убакыты жогору</translation> <translation id="7658239707568436148">Жокко чыгаруу</translation> <translation id="7690294790491645610">Жаңы сырсөздү ырастаңыз</translation>
diff --git a/chromeos/strings/chromeos_strings_lo.xtb b/chromeos/strings/chromeos_strings_lo.xtb index a2ba33e..714224b 100644 --- a/chromeos/strings/chromeos_strings_lo.xtb +++ b/chromeos/strings/chromeos_strings_lo.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">ມີ DNS Resolver</translation> <translation id="1743558184855585519">ລະບົບຈະຖືວ່າມີການໃຊ້ແບັດເຕີຣີເມື່ອເຖິງຂີດຈຳກັດ</translation> <translation id="1792647875738159689">ກຳລັງຍົກເລີກການສະແກນ</translation> +<translation id="1851218745569890714">ການປະຊຸມຜ່ານວິດີໂອ</translation> <translation id="1905710495812624430">ເກີນຈຳນວນຄວາມພະຍາຍາມສູງສຸດແລ້ວ.</translation> +<translation id="1908234395526491708">ຂໍ UDP ບໍ່ສຳເລັດ</translation> <translation id="1930797645656624981">ການບໍລິການວິທີການປ້ອນຂໍ້ມູນຂອງ Chrome OS</translation> <translation id="1947737735496445907">ພິມແລ້ວ</translation> <translation id="1979103255016296513">ກາຍກຳນົດປ່ຽນລະຫັດຜ່ານແລ້ວ</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">ການຊອກຫາສຳຄັນ</translation> <translation id="2080070583977670716">ການຕັ້ງຄ່າເພີ່ມເຕີມ</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">ເຂົ້າຄິວແລ້ວ</translation> <translation id="2161394479394250669">ຍົກເລີກວຽກພິມ</translation> <translation id="2224337661447660594">ບໍ່ມີອິນເຕີເນັດ</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">ລະບົບ</translation> <translation id="2740531572673183784">ຕົກລົງ</translation> <translation id="2805756323405976993">ແອັບ</translation> +<translation id="2862104018715411648">ວາງເອກະສານຂອງທ່ານໃສ່ເຄື່ອງສະແກນ ແລ້ວເລືອກສະແກນເພື່ອເລີ່ມຕົ້ນ</translation> <translation id="2872961005593481000">ມອດ</translation> <translation id="2878387241690264070">ຄາຍປະຈຸ <ph name="RATE" /> ໃນ <ph name="NUM_SECONDS" /> ວິນາທີ.</translation> <translation id="3008341117444806826">ໂຫຼດຂໍ້ມູນໃໝ່</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">ທ່ານແນ່ໃຈບໍ່ວ່າທ່ານຕ້ອງການລຶບປະຫວັດການພິມທັງໝົດ? ວຽກການພິມທີ່ພວມດຳເນີນຢູ່ຂອງທ່ານຈະບໍ່ຖືກລຶບລ້າງ.</translation> <translation id="3435738964857648380">ຄວາມປອດໄພ</translation> <translation id="3456078764689556234">ພິມໜ້າ <ph name="PRINTED_PAGES" /> ຈາກທັງໝົດ <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">ກຳລັງສະແກນໜ້າ <ph name="PAGE_NUM" />. ສຳເລັດແລ້ວ <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">ກໍາລັງພິມ</translation> <translation id="3515615323037921860">ວຽກການພິມ</translation> <translation id="3527036260304016759">ບໍ່ສຳເລັດ, ບໍ່ຮູ້ຈັກຂໍ້ຜິດພາດ</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">ບໍ່ສຳເລັດ</translation> <translation id="4176463684765177261">ປິດໃຊ້ງານແລ້ວ</translation> <translation id="4227825898293920515">ລະຫັດຜ່ານໝົດອາຍຸໃນ <ph name="TIME" /></translation> +<translation id="4228041325992544252">ຫວ່າງ <ph name="AVAILABLE_MEMORY" /> GB ຈາກທັງໝົດ <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">ບໍ່ມີວຽກການພິມທີ່ພວມດຳເນີນຢູ່</translation> <translation id="4297501883039923494">ຢຸດພິມ, ບໍ່ຮູ້ຈັກຂໍ້ຜິດພາດ</translation> <translation id="4378373042927530923">ບໍ່ໄດ້ເອີ້ນໃຊ້</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">ເປີດສິ່ງທີ່ເຮັດປະຈຳຄືນໃໝ່</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">ບັນທຶກ</translation> +<translation id="5318334351163689047">ຂໍ TCP ບໍ່ສຳເລັດ</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">ເລືອກລະຫັດຜ່ານໃໝ່ຕອນນີ້ເລີຍ</translation> <translation id="5333530671332546086">ສະຖານະໜ້າເວັບທີ່ບໍ່ຮູ້ຈັກ</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບເຄື່ອງສະແກນໄດ້ບໍ?</translation> <translation id="6853312040151791195">ອັດຕາການຄາຍປະຈຸ</translation> <translation id="6898743098396957679">ບໍ່ສາມາດເຮັດສຳເລັດການສະແກນໄດ້</translation> +<translation id="6911383237894364323">ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບເຊີບເວີມີເດຍໄດ້</translation> <translation id="6957231940976260713">ຊື່ການບໍລິການ</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> ຈັດການອຸປະກອນນີ້ ແລະ ເຂົ້າເຖິງການເຄື່ອນໄຫວຜູ້ໃຊ້ທັງໝົດ, ຮວມທັງໜ້າເວັບທີ່ເຂົ້າເບິ່ງ, ລະຫັດຜ່ານ ແລະ ອີເມວ.</translation> <translation id="7143207342074048698">ກຳລັງເຊື່ອມຕໍ່</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">ທີ່ຢູ່ IPv6</translation> <translation id="7561454561030345039">ການດຳເນີນການນີ້ຈັດການໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">ສຶກສາເພີ່ມເຕີມໃນສູນຊ່ວຍເຫຼືອ</translation> <translation id="7648838807254605802">ເວລາແຝງ HTTPS ສູງ</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 c64d164..39bd76795 100644 --- a/chromeos/strings/chromeos_strings_lt.xtb +++ b/chromeos/strings/chromeos_strings_lt.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS pavadinimų vertimo programos aptikimas</translation> <translation id="1743558184855585519">Akumuliatorius laikomas išeikvotu, kai pasiekia apribojimą</translation> <translation id="1792647875738159689">Atšaukiamas nuskaitymas</translation> +<translation id="1851218745569890714">Vaizdo konferencijos</translation> <translation id="1905710495812624430">Viršytas didžiausias bandymų skaičius.</translation> +<translation id="1908234395526491708">Nepavyko pateikti UDP užklausų</translation> <translation id="1930797645656624981">„Chrome“ OS įvesties metodo paslauga</translation> <translation id="1947737735496445907">Atspausdinta</translation> <translation id="1979103255016296513">Vėluojama pakeisti slaptažodį</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Pagrindinė paieška</translation> <translation id="2080070583977670716">Daugiau nustatymų</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> proc.</translation> +<translation id="2157959690810728433">ĮTRAUKTAS Į EILĘ</translation> <translation id="2161394479394250669">Atšaukti spausdinimo užduotį</translation> <translation id="2224337661447660594">Nėra interneto ryšio</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> tšk./col.</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistema</translation> <translation id="2740531572673183784">Gerai</translation> <translation id="2805756323405976993">Taikomosios programos</translation> +<translation id="2862104018715411648">Jei norite pradėti, padėkite dokumentą ant skaitytuvo ir pasirinkite „Nuskaityti“</translation> <translation id="2872961005593481000">Stabdyti</translation> <translation id="2878387241690264070">Išsikrovė: <ph name="RATE" /> per <ph name="NUM_SECONDS" /> sek.</translation> <translation id="3008341117444806826">ATNAUJINTI</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Ar tikrai norite išvalyti visą spausdinimo istoriją? Vykdomos spausdinimo užduotys nebus išvalytos.</translation> <translation id="3435738964857648380">Sauga</translation> <translation id="3456078764689556234">Atspausdinta <ph name="PRINTED_PAGES" /> iš <ph name="TOTAL_PAGES" /> psl.</translation> +<translation id="345898999683440380">Nuskaitomas <ph name="PAGE_NUM" /> psl. Atlikta: <ph name="PERCENTAGE_VALUE" /> %.</translation> <translation id="3459509316159669723">Spausdinimas</translation> <translation id="3515615323037921860">Spausdinimo užduotys</translation> <translation id="3527036260304016759">Nepavyko – nežinoma klaida</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">NESĖKMINGAS</translation> <translation id="4176463684765177261">Išjungta</translation> <translation id="4227825898293920515">Slaptažodžio galiojimas baigsis už <ph name="TIME" /></translation> +<translation id="4228041325992544252">Pasiekiama: <ph name="AVAILABLE_MEMORY" /> GB iš <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Nėra vykstančių spausdinimo užduočių</translation> <translation id="4297501883039923494">Sustabdyta – nežinoma klaida</translation> <translation id="4378373042927530923">Nevykdyti</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Iš naujo vykdyti veiksmų sekas</translation> <translation id="5286252187236914003">L2TP / „IPsec“</translation> <translation id="5317780077021120954">Išsaugoti</translation> +<translation id="5318334351163689047">Nepavyko pateikti TCP užklausų</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Pasirinkite naują slaptažodį dabar</translation> <translation id="5333530671332546086">Nežinoma portalo būsena</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Nepavyko prisijungti prie skaitytuvų?</translation> <translation id="6853312040151791195">Išsikrovimo rodiklis</translation> <translation id="6898743098396957679">Nepavyko užbaigti nuskaitymo proceso</translation> +<translation id="6911383237894364323">Nepavyko prisijungti prie medijos serverių</translation> <translation id="6957231940976260713">Paslaugos pavadinimas</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> tvarko šį įrenginį ir gali pasiekti visus naudotojo veiklos duomenis, įskaitant tinklalapius, kuriuose lankėsi, slaptažodžius ir el. paštą.</translation> <translation id="7143207342074048698">Jungiama</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">„IPv6“ adresas</translation> <translation id="7561454561030345039">Šį veiksmą tvarko jūsų administratorius</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Sužinokite daugiau pagalbos centre</translation> <translation id="7648838807254605802">Didelė HTTPS delsa</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 711de39..0c37d89 100644 --- a/chromeos/strings/chromeos_strings_lv.xtb +++ b/chromeos/strings/chromeos_strings_lv.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS atrisinātāja pieejamība</translation> <translation id="1743558184855585519">Akumulators tiek uzskatīts par tukšu, kad tiek sasniegts ierobežojums.</translation> <translation id="1792647875738159689">Skenēšana tiek atcelta</translation> +<translation id="1851218745569890714">Videokonferences</translation> <translation id="1905710495812624430">Ir pārsniegts maksimālais atļautais mēģinājumu skaits.</translation> +<translation id="1908234395526491708">UDP pieprasījumu kļūmes</translation> <translation id="1930797645656624981">Chrome OS ievades metodes pakalpojums</translation> <translation id="1947737735496445907">Izdrukāts</translation> <translation id="1979103255016296513">Paroles maiņa ir nokavēta</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Pirmskaitļu meklēšana</translation> <translation id="2080070583977670716">Vairāk iestatījumu</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">IEVIETOTS RINDĀ</translation> <translation id="2161394479394250669">Atcelt drukas uzdevumu</translation> <translation id="2224337661447660594">Nav interneta savienojuma</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistēma</translation> <translation id="2740531572673183784">Labi</translation> <translation id="2805756323405976993">Lietotnes</translation> +<translation id="2862104018715411648">Lai sāktu darbu, novietojiet dokumentu uz skenera un atlasiet Skenēt.</translation> <translation id="2872961005593481000">Beidzēt</translation> <translation id="2878387241690264070">Izlādes apjoms <ph name="NUM_SECONDS" /> s laikā: <ph name="RATE" />.</translation> <translation id="3008341117444806826">ATSVAIDZINĀT</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Vai tiešām vēlaties notīrīt visu drukāšanas vēsturi? Netiks notīrīti drukas uzdevumi, kas tiek izpildīti.</translation> <translation id="3435738964857648380">Drošība</translation> <translation id="3456078764689556234">Izdrukāto lapu skaits: <ph name="PRINTED_PAGES" /> no<ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Notiek <ph name="PAGE_NUM" />. lapas skenēšana. Pabeigti: <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">Drukāšana</translation> <translation id="3515615323037921860">Drukas uzdevumi</translation> <translation id="3527036260304016759">Neizdevās — nezināma kļūda</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">NESEKMĪGA</translation> <translation id="4176463684765177261">Atspējota</translation> <translation id="4227825898293920515">Paroles derīguma termiņš: <ph name="TIME" /></translation> +<translation id="4228041325992544252">Pieejamais apjoms: <ph name="AVAILABLE_MEMORY" /> GB no <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Nenotiek neviens drukas darbs</translation> <translation id="4297501883039923494">Apturēts — nezināma kļūda</translation> <translation id="4378373042927530923">Nav veikta izpilde</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Atkārtoti izpildīt darbību secību</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Saglabāt</translation> +<translation id="5318334351163689047">TCP pieprasījumu kļūmes</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />: <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Izvēlieties jaunu jau tūlīt</translation> <translation id="5333530671332546086">Nezināms portāla statuss</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Vai nevar izveidot savienojumu ar skeneriem?</translation> <translation id="6853312040151791195">Izlādes ātrums</translation> <translation id="6898743098396957679">Nevarēja pabeigt skenēšanu</translation> +<translation id="6911383237894364323">Nevar izveidot savienojumu ar multivides satura serveriem.</translation> <translation id="6957231940976260713">Pakalpojuma nosaukums</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> pārvalda šo ierīci un var piekļūt visām lietotāja darbībām, tostarp apmeklētajām tīmekļa lapām, parolēm un e-pastam.</translation> <translation id="7143207342074048698">Notiek savienojuma izveide</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 adrese</translation> <translation id="7561454561030345039">Šo darbību pārvalda administrators</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Uzzināt vairāk palīdzības centrā</translation> <translation id="7648838807254605802">Liels HTTPS latentums</translation> <translation id="7658239707568436148">Atcelt</translation> <translation id="7690294790491645610">Apstipriniet jauno paroli</translation>
diff --git a/chromeos/strings/chromeos_strings_mk.xtb b/chromeos/strings/chromeos_strings_mk.xtb index 15ed219..f5364110 100644 --- a/chromeos/strings/chromeos_strings_mk.xtb +++ b/chromeos/strings/chromeos_strings_mk.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Има DNS-одредувач</translation> <translation id="1743558184855585519">Батеријата се смета за потрошена штом ќе го достигне ограничувањето</translation> <translation id="1792647875738159689">Се откажува скенирањето</translation> +<translation id="1851218745569890714">Видеоконференција</translation> <translation id="1905710495812624430">Максималниот број дозволени обиди е надминат.</translation> +<translation id="1908234395526491708">Неуспешни UDP-барања</translation> <translation id="1930797645656624981">Услуга за метод за внесување во Chrome OS</translation> <translation id="1947737735496445907">Отпечатено</translation> <translation id="1979103255016296513">Измина рокот за промена на лозинката</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Примарно пребарување</translation> <translation id="2080070583977670716">Повеќе поставки</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">ЧЕКА НА РЕД</translation> <translation id="2161394479394250669">Откажи го налогот за печатење</translation> <translation id="2224337661447660594">Нема интернет</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Систем</translation> <translation id="2740531572673183784">Во ред</translation> <translation id="2805756323405976993">Апликации</translation> +<translation id="2862104018715411648">Ставете го документот на скенерот и изберете „Скенирај“ за да започнете</translation> <translation id="2872961005593481000">Исклучи</translation> <translation id="2878387241690264070">Испразнета <ph name="RATE" /> за <ph name="NUM_SECONDS" /> секунди.</translation> <translation id="3008341117444806826">ОСВЕЖИ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Дали сте сигурни дека сакате да ја исчистите сета историја на печатење? Тековните задачи за печатење нема да бидат избришани.</translation> <translation id="3435738964857648380">Безбедност</translation> <translation id="3456078764689556234">Отпечатена страница <ph name="PRINTED_PAGES" /> од <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Се скенира страницата <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % завршено.</translation> <translation id="3459509316159669723">Се печати</translation> <translation id="3515615323037921860">Налози за печатење</translation> <translation id="3527036260304016759">Неуспешно - непозната грешка</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">НЕУСПЕШЕН</translation> <translation id="4176463684765177261">Оневозможено</translation> <translation id="4227825898293920515">Лозинката истекува за <ph name="TIME" /></translation> +<translation id="4228041325992544252">Достапно: <ph name="AVAILABLE_MEMORY" /> GB од <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Нема задачи за печатење во тек</translation> <translation id="4297501883039923494">Запрено - непозната грешка</translation> <translation id="4378373042927530923">Не е извршена</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Изврши ги рутините повторно</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Зачувај</translation> +<translation id="5318334351163689047">Неуспешни TCP-барања</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Може да изберете нова сега</translation> <translation id="5333530671332546086">Непозната состојба на портал</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Не може да се поврзете со скенерите?</translation> <translation id="6853312040151791195">Брзина на празнење</translation> <translation id="6898743098396957679">Скенирањето не можеше да се заврши</translation> +<translation id="6911383237894364323">Не може да се поврзе со медиумските сервери</translation> <translation id="6957231940976260713">Име на услугата</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> управува со уредов и има пристап до целата активност на корисникот, вклучувајќи ги и посетените веб-страници, лозинките и е-поштата.</translation> <translation id="7143207342074048698">Се поврзува</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6-адреса</translation> <translation id="7561454561030345039">Администраторот управува со дејствово</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Дознајте повеќе во „Центарот за помош“</translation> <translation id="7648838807254605802">Висока латенција на HTTPS</translation> <translation id="7658239707568436148">Откажи</translation> <translation id="7690294790491645610">Потврдете ја новата лозинка</translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb index 68758bf0..f0dc97d 100644 --- a/chromeos/strings/chromeos_strings_ml.xtb +++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS റിസോൾവർ അവതരണം</translation> <translation id="1743558184855585519">ബാറ്ററി അതിന്റെ പരിധിയിലെത്തിക്കഴിഞ്ഞാൽ അത് ഉപയോഗമായി കണക്കാക്കപ്പെടുന്നു</translation> <translation id="1792647875738159689">സ്കാൻ ചെയ്യൽ റദ്ദാക്കുന്നു</translation> +<translation id="1851218745569890714">വീഡിയോ കോൺഫറൻസിംഗ്</translation> <translation id="1905710495812624430">അനുവദനീയമായ പരമാവധി ശ്രമങ്ങൾ നടത്തിക്കഴിഞ്ഞു.</translation> +<translation id="1908234395526491708">പരാജയപ്പെട്ട UDP അഭ്യർത്ഥനകൾ</translation> <translation id="1930797645656624981">Chrome OS ഇൻപുട്ട് രീതി സേവനം</translation> <translation id="1947737735496445907">പ്രിന്റ് ചെയ്തു</translation> <translation id="1979103255016296513">പാസ്വേഡ് മാറ്റേണ്ട സമയം കഴിഞ്ഞു</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">പ്രധാന തിരയൽ</translation> <translation id="2080070583977670716">കൂടുതൽ ക്രമീകരണങ്ങൾ</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">ക്യൂവിലാണ്</translation> <translation id="2161394479394250669">പ്രിന്റ് ജോലി റദ്ദാക്കുക</translation> <translation id="2224337661447660594">ഇന്റർനെറ്റ് ഇല്ല</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">സിസ്റ്റം</translation> <translation id="2740531572673183784">ശരി</translation> <translation id="2805756323405976993">ആപ്സ്</translation> +<translation id="2862104018715411648">നിങ്ങളുടെ ഡോക്യുമെന്റ് സ്കാനറിൽ വയ്ക്കുക, ആരംഭിക്കാൻ സ്കാൻ ചെയ്യുക തിരഞ്ഞെടുക്കുക</translation> <translation id="2872961005593481000">അടയ്ക്കുക</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" /> സെക്കൻഡിൽ <ph name="RATE" /> ഡിസ്ചാർജ് ചെയ്തു.</translation> <translation id="3008341117444806826">പുതുക്കിയെടുക്കുക</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">എല്ലാ പ്രിന്റ് ചരിത്രവും മായ്ക്കണമെന്ന് തീർച്ചയാണോ? നിങ്ങളുടെ പുരോഗതിയിലുള്ള പ്രിന്റ് ജോലികൾ മായ്ക്കില്ല.</translation> <translation id="3435738964857648380">സുരക്ഷ</translation> <translation id="3456078764689556234"><ph name="TOTAL_PAGES" />-ൽ <ph name="PRINTED_PAGES" /> പേജ് പ്രിന്റ് ചെയ്തു.</translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" />-ാമത്തെ പേജ് സ്കാൻ ചെയ്യുന്നു. <ph name="PERCENTAGE_VALUE" />% പൂർത്തിയായി.</translation> <translation id="3459509316159669723">പ്രിന്റിംഗ്</translation> <translation id="3515615323037921860">പ്രിന്റ് ജോലികൾ</translation> <translation id="3527036260304016759">പ്രിന്റ് ചെയ്യാനായില്ല - അജ്ഞാതമായ പിശക്</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">പരാജയപ്പെട്ടു</translation> <translation id="4176463684765177261">അപ്രാപ്തമാക്കി</translation> <translation id="4227825898293920515">പാസ്വേഡ് <ph name="TIME" /> സമയത്തിനുള്ളിൽ കാലഹരണപ്പെടും</translation> +<translation id="4228041325992544252"><ph name="TOTAL_MEMORY" /> GB-യിൽ <ph name="AVAILABLE_MEMORY" /> GB ലഭ്യമാണ്.</translation> <translation id="4238516577297848345">പ്രിന്റ് ജോലികളൊന്നും പുരോഗമിക്കുന്നില്ല</translation> <translation id="4297501883039923494">പ്രിന്റ് ജോലി നിർത്തി - അജ്ഞാതമായ പിശക്</translation> <translation id="4378373042927530923">റൺ ചെയ്തിട്ടില്ല</translation> @@ -157,6 +163,7 @@ <translation id="5275828089655680674">ദിനചര്യകൾ വീണ്ടും റൺ ചെയ്യുക</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">സംരക്ഷിക്കുക</translation> +<translation id="5318334351163689047">പരാജയപ്പെട്ട TCP അഭ്യർത്ഥനകൾ</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">പുതിയ പാസ്വേഡ് തിരഞ്ഞെടുക്കുക</translation> <translation id="5333530671332546086">അജ്ഞാത പോര്ട്ടല് നില</translation> @@ -216,6 +223,7 @@ <translation id="6839141349259399400">സ്കാനറുകളിലേക്ക് കണക്റ്റ് ചെയ്യാനാകുന്നില്ലേ?</translation> <translation id="6853312040151791195">ഡിസ്ചാർജ് ചെയ്യൽ റേറ്റ്</translation> <translation id="6898743098396957679">സ്കാൻ ചെയ്യൽ പൂർത്തിയാക്കാനായില്ല</translation> +<translation id="6911383237894364323">മീഡിയ സെർവറുകളിലേക്ക് കണക്റ്റ് ചെയ്യാനാകുന്നില്ല</translation> <translation id="6957231940976260713">സേവനത്തിന്റെ പേര്</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> ഈ ഉപകരണം മാനേജ് ചെയ്യുന്നു, സന്ദർശിച്ച വെബ്പേജുകൾ, പാസ്വേഡുകൾ, ഇമെയിൽ എന്നിവയുൾപ്പെടെ ഉപയോക്താവിന്റെ എല്ലാ ആക്റ്റിവിറ്റികളിലേക്കും ആക്സസും ഉണ്ടായിരിക്കും.</translation> <translation id="7143207342074048698">കണക്റ്റിംഗ്</translation> @@ -232,6 +240,7 @@ <translation id="7502658306369382406">IPv6 വിലാസം</translation> <translation id="7561454561030345039">ഈ പ്രവർത്തനം മാനേജ് ചെയ്യുന്നത് നിങ്ങളുടെ അഡ്മിനാണ്</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">സഹായകേന്ദ്രത്തിൽ കൂടുതലറിയുക</translation> <translation id="7648838807254605802">ഉയർന്ന HTTPS പ്രതികരണ സമയം</translation> <translation id="7658239707568436148">റദ്ദാക്കൂ</translation> <translation id="7690294790491645610">പുതിയ പാസ്വേഡ് സ്ഥിരീകരിക്കുക</translation>
diff --git a/chromeos/strings/chromeos_strings_mn.xtb b/chromeos/strings/chromeos_strings_mn.xtb index cc4ed0b..9e43b21 100644 --- a/chromeos/strings/chromeos_strings_mn.xtb +++ b/chromeos/strings/chromeos_strings_mn.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS тайлагчийг үзүүлэх</translation> <translation id="1743558184855585519">Батарейг хязгаарт хүрмэгц хэрэглэсэн гэж үзнэ</translation> <translation id="1792647875738159689">Скан хийхийг цуцалж байна</translation> +<translation id="1851218745569890714">Видео хурал</translation> <translation id="1905710495812624430">Оролдлогын тоо дээд хэмжээнээс хэтэрсэн.</translation> +<translation id="1908234395526491708">UDP хүсэлтийн алдаа</translation> <translation id="1930797645656624981">Chrome OS-н оруулах аргын үйлчилгээ</translation> <translation id="1947737735496445907">Хэвлэсэн</translation> <translation id="1979103255016296513">Нууц үг солих хугацаа хэтэрсэн</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Үндсэн хайлт</translation> <translation id="2080070583977670716">Нэмэлт тохиргоо</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">ЖАГСААСАН</translation> <translation id="2161394479394250669">Хэвлэх ажлыг цуцлах</translation> <translation id="2224337661447660594">Интернэт алга</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Систем</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Програм</translation> +<translation id="2862104018715411648">Эхлүүлэхийн тулд документоо сканнер дээр байрлуулж, скан хийхийг сонгоно уу</translation> <translation id="2872961005593481000">Унтраах</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" /> секундэд <ph name="RATE" /> цэнэггүй болсон.</translation> <translation id="3008341117444806826">ДАХИН ШИНЭЧЛЭХ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Та хэвлэлийн бүх түүхийг арилгахдаа итгэлтэй байна уу? Таны хийж буй хэвлэлийн ажлуудыг арилгахгүй.</translation> <translation id="3435738964857648380">Нууцлал</translation> <translation id="3456078764689556234"><ph name="TOTAL_PAGES" />-с <ph name="PRINTED_PAGES" /> хуудсыг хэвлэсэн.</translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" />-р хуудсыг скан хийж байна. <ph name="PERCENTAGE_VALUE" />% дууссан.</translation> <translation id="3459509316159669723">Хэвлэж байна</translation> <translation id="3515615323037921860">Хэвлэх ажлууд</translation> <translation id="3527036260304016759">Амжилтгүй болсон - Үл мэдэгдэх алдаа</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">АМЖИЛТГҮЙ БОЛЛОО</translation> <translation id="4176463684765177261">Хаасан</translation> <translation id="4227825898293920515">Нууц үгний хугацаа <ph name="TIME" />-н дотор дуусна</translation> +<translation id="4228041325992544252"><ph name="TOTAL_MEMORY" /> ГБ-аас <ph name="AVAILABLE_MEMORY" /> ГБ боломжтой.</translation> <translation id="4238516577297848345">Хэвлэж байгаа ажил алга</translation> <translation id="4297501883039923494">Зогссон - Тодорхойгүй алдаа</translation> <translation id="4378373042927530923">Ажилдаггүй</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Хэвшлийг дахин ажиллуулах</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Хадгалах</translation> +<translation id="5318334351163689047">TCP хүсэлтийн алдаа</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Одоо шинийг сонгоно уу</translation> <translation id="5333530671332546086">Порталын тодорхойгүй төлөв</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Сканнертай холбогдож чадахгүй байна уу?</translation> <translation id="6853312040151791195">Цэнэггүй болох хурд</translation> <translation id="6898743098396957679">Скан хийхийг гүйцээж чадсангүй</translation> +<translation id="6911383237894364323">Медиа серверт холбогдох боломжгүй</translation> <translation id="6957231940976260713">Үйлчилгээний нэр</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> энэ төхөөрөмжийг удирддаг бөгөөд хэрэглэгчийн зочилсон веб хуудас, нууц үг болон имэйл зэрэг бүх үйл ажиллагаанд хандах эрхтэй.</translation> <translation id="7143207342074048698">Холбож байна</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 хаяг</translation> <translation id="7561454561030345039">Энэ үйлдлийг таны администратор удирддаг</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Тусламжийн төвөөс нэмэлт мэдээлэл авах</translation> <translation id="7648838807254605802">Өндөр HTTPS хоцролт</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 2be1bda..97604fe8 100644 --- a/chromeos/strings/chromeos_strings_mr.xtb +++ b/chromeos/strings/chromeos_strings_mr.xtb
@@ -135,6 +135,7 @@ <translation id="4832079907277790330">Files अॅपमध्ये फोल्डर निवडा...</translation> <translation id="4835901797422965222">कोणतीही अॅक्टिव्ह नेटवर्क नाहीत</translation> <translation id="4848429997038228357">रन होत आहे</translation> +<translation id="4861758251032006121">{ATTEMPTS_LEFT,plural, =1{<ph name="ERROR_MESSAGE" /> {0} प्रयत्न शिल्लक}other{<ph name="ERROR_MESSAGE" /> {0} प्रयत्न शिल्लक}}</translation> <translation id="4890353053343094602">तत्काळ नवीन निवडा</translation> <translation id="4891842000192098784">ताण</translation> <translation id="4917889632206600977">थांबले - कागद संपला आहे</translation> @@ -167,6 +168,7 @@ <translation id="5431825016875453137">OpenVPN / L2TP</translation> <translation id="5457599981699367932">अतिथी म्हणून ब्राउझ करा</translation> <translation id="54609108002486618">व्यवस्थापित</translation> +<translation id="5478289488939624992">{ATTEMPTS_LEFT,plural, =1{{0} प्रयत्न शिल्लक}other{{0} प्रयत्न शिल्लक}}</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5635169860413004179">अहवाल पहा</translation> <translation id="5670702108860320605">BSSID</translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb index 8ebd6c7..fbaae7bd 100644 --- a/chromeos/strings/chromeos_strings_ms.xtb +++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Pelerai DNS Ada</translation> <translation id="1743558184855585519">Bateri akan dianggap lupus sebaik sahaja had dicapai</translation> <translation id="1792647875738159689">Membatalkan pengimbasan</translation> +<translation id="1851218745569890714">Persidangan Video</translation> <translation id="1905710495812624430">Melebihi had maksimum percubaan yang dibenarkan.</translation> +<translation id="1908234395526491708">Kegagalan permintaan UDP</translation> <translation id="1930797645656624981">Perkhidmatan Kaedah Input OS Chrome</translation> <translation id="1947737735496445907">Dicetak</translation> <translation id="1979103255016296513">Kata laluan perlu ditukar</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Carian nombor perdana</translation> <translation id="2080070583977670716">Lagi tetapan</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">BERBARIS GILIR</translation> <translation id="2161394479394250669">Batalkan tugas cetak</translation> <translation id="2224337661447660594">Tiada Internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistem</translation> <translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Apl</translation> +<translation id="2862104018715411648">Letakkan dokumen anda di atas pengimbas dan pilih Imbas untuk bermula</translation> <translation id="2872961005593481000">Mematikan</translation> <translation id="2878387241690264070">Dinyahcas <ph name="RATE" /> dalam masa <ph name="NUM_SECONDS" /> saat.</translation> <translation id="3008341117444806826">MUAT SEMULA</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Adakah anda pasti anda ingin mengosongkan semua sejarah cetak? Tugas cetak anda yang masih dijalankan tidak akan dipadamkan.</translation> <translation id="3435738964857648380">Keselamatan</translation> <translation id="3456078764689556234">Mencetak halaman <ph name="PRINTED_PAGES" /> daripada <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Mengimbas halaman <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% selesai.</translation> <translation id="3459509316159669723">Mencetak</translation> <translation id="3515615323037921860">Tugas Cetak</translation> <translation id="3527036260304016759">Gagal - Ralat tidak diketahui</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">GAGAL</translation> <translation id="4176463684765177261">Dilumpuhkan</translation> <translation id="4227825898293920515">Kata laluan tamat tempoh dalam <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB daripada <ph name="TOTAL_MEMORY" /> GB tersedia.</translation> <translation id="4238516577297848345">Tiada tugas cetak yang sedang dijalankan</translation> <translation id="4297501883039923494">Dihentikan - Ralat tidak diketahui</translation> <translation id="4378373042927530923">Tidak Berjalan</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Jalankan Semula Rutin</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Simpan</translation> +<translation id="5318334351163689047">Kegagalan permintaan TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Pilih kata laluan baharu sekarang</translation> <translation id="5333530671332546086">Keadaan portal tidak diketahui</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Tidak dapat menyambung kepada pengimbas?</translation> <translation id="6853312040151791195">Kadar penyahcasan</translation> <translation id="6898743098396957679">Tidak dapat menyelesaikan pengimbasan</translation> +<translation id="6911383237894364323">Tidak dapat menyambung kepada pelayan media</translation> <translation id="6957231940976260713">Nama perkhidmatan</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> mengurus peranti ini dan mempunyai akses kepada semua aktiviti pengguna, termasuk halaman web yang dilawati, kata laluan dan e-mel.</translation> <translation id="7143207342074048698">Menyambung</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Alamat IPv6</translation> <translation id="7561454561030345039">Tindakan ini diurus oleh pentadbir anda</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Ketahui lebih lanjut dalam Pusat Bantuan</translation> <translation id="7648838807254605802">Kependaman HTTPS tinggi</translation> <translation id="7658239707568436148">Batal</translation> <translation id="7690294790491645610">Sahkan kata laluan baharu</translation>
diff --git a/chromeos/strings/chromeos_strings_my.xtb b/chromeos/strings/chromeos_strings_my.xtb index 748c0ac2..b86d368 100644 --- a/chromeos/strings/chromeos_strings_my.xtb +++ b/chromeos/strings/chromeos_strings_my.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS Resolver ရှိသည်</translation> <translation id="1743558184855585519">ကန့်သတ်ပမာဏသို့ ရောက်သွားသောအခါ ဘက်ထရီကုန်ပြီဟု သတ်မှတ်လိုက်သည်</translation> <translation id="1792647875738159689">စကင်ဖတ်ခြင်းကို ပယ်ဖျက်နေသည်</translation> +<translation id="1851218745569890714">ဗီဒီယိုအစည်းအဝေး</translation> <translation id="1905710495812624430">အများဆုံးခွင့်ပြုပေးထားသည့် အခေါက်အရေအတွက်ထက် ကျော်လွန်သွားပါပြီ။</translation> +<translation id="1908234395526491708">UDP တောင်းဆိုချက် ချွတ်ယွင်းမှုများ</translation> <translation id="1930797645656624981">Chrome OS လက်ကွက်ဝန်ဆောင်မှု</translation> <translation id="1947737735496445907">ပုံနှိပ်ထုတ်ပြီးပြီ</translation> <translation id="1979103255016296513">စကားဝှက်ပြောင်းလဲမှု သက်တမ်းကုန်သွားပါပြီ</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">အဓိက ရှာဖွေမှု</translation> <translation id="2080070583977670716">ဆက်တင်များ ပိုမိုပြရန်</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">စီထားသည်</translation> <translation id="2161394479394250669">ပရင့်ထုတ်ရန်ဖိုင် မထုတ်တော့ပါ</translation> <translation id="2224337661447660594">အင်တာနက် မရှိပါ</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">စနစ်</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">အက်ပ်များ</translation> +<translation id="2862104018715411648">စကင်ဖတ်စက်ပေါ်တွင် သင်၏စာရွက်စာတမ်းကို ထားရှိပြီး စတင်ရန်အတွက် 'စကင်ဖတ်ရန်' ကို ရွေးပါ</translation> <translation id="2872961005593481000">ပိတ်ရန်</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" /> စက္ကန့်အတွင်း <ph name="RATE" /> အားလျော့သွားသည်။</translation> <translation id="3008341117444806826">ပြန်လည်စတင်ရန်</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">ပုံနှိပ်မှတ်တမ်း အားလုံးကို ရှင်းထုတ်လိုသည်မှာ သေချာသလား။ ပုံနှိပ်ထုတ်နေသော ဖိုင်များကို ရှင်းထုတ်မည်မဟုတ်ပါ။</translation> <translation id="3435738964857648380">လုံခြုံရေး</translation> <translation id="3456078764689556234">စာမျက်နှာ <ph name="TOTAL_PAGES" /> မျက်နှာအနက် <ph name="PRINTED_PAGES" /> မျက်နှာကို ပုံနှိပ်ထုတ်ထားသည်။</translation> +<translation id="345898999683440380">စာမျက်နှာ <ph name="PAGE_NUM" /> ကို စကင်ဖတ်နေသည်။ <ph name="PERCENTAGE_VALUE" />% ပြီးသွားပါပြီ။</translation> <translation id="3459509316159669723">ပုံနှိပ်နေသည်</translation> <translation id="3515615323037921860">ပရင့်ထုတ်ရန် ဖိုင်များ</translation> <translation id="3527036260304016759">မအောင်မြင်ပါ - အမည်မသိ အမှား</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">မအောင်မြင်ပါ</translation> <translation id="4176463684765177261">ပိတ်ထားသည်။</translation> <translation id="4227825898293920515">စကားဝှက်သည် <ph name="TIME" /> တွင် သက်တမ်းကုန်ပါမည်</translation> +<translation id="4228041325992544252"><ph name="TOTAL_MEMORY" /> GB အနက် <ph name="AVAILABLE_MEMORY" /> GB ရနိုင်သည်။</translation> <translation id="4238516577297848345">ပရင့်ထုတ်ရန် ဖိုင်များ လုပ်ဆောင်မနေပါ</translation> <translation id="4297501883039923494">ရပ်သွားသည် - အမည်မသိ အမှား</translation> <translation id="4378373042927530923">မလုပ်ဆောင်ပါ</translation> @@ -157,6 +163,7 @@ <translation id="5275828089655680674">ပုံမှန်အစီအစဉ်များသို့ ပြန်သွားရန်</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">သိမ်းရန်</translation> +<translation id="5318334351163689047">TCP တောင်းဆိုချက် ချွတ်ယွင်းမှုများ</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />၊ <ph name="PRINTER_NAME" />၊ <ph name="CREATION_TIME" />၊ <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">ယခု အသစ်တစ်ခု ရွေးရန်</translation> <translation id="5333530671332546086">အမျိုးအမည်မသိ စာမျက်နှာအခြေအနေ</translation> @@ -216,6 +223,7 @@ <translation id="6839141349259399400">စကင်ဖတ်စက်များသို့ ချိတ်ဆက်၍မရဘူးလား။</translation> <translation id="6853312040151791195">အားလျော့နှုန်း</translation> <translation id="6898743098396957679">စကင်ဖတ်ခြင်းကို အပြီးသတ်၍မရပါ</translation> +<translation id="6911383237894364323">မီဒီယာဆာဗာများသို့ ချိတ်ဆက်၍ မရပါ</translation> <translation id="6957231940976260713">ဝန်ဆောင်မှုအမည်</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> က ဤကိရိယာကို စီမံခန့်ခွဲပြီး ဝင်ကြည့်ထားသည့် ဝဘ်စာမျက်နှာများ၊ စကားဝှက်များနှင့် အီးမေးလ်အပါအဝင် အသုံးပြုသူ၏ လုပ်ဆောင်ချက်အားလုံးကို အသုံးပြုခွင့်ရှိပါသည်။</translation> <translation id="7143207342074048698">ချိတ်ဆက်နေသည်</translation> @@ -232,6 +240,7 @@ <translation id="7502658306369382406">IPv6 လိပ်စာ</translation> <translation id="7561454561030345039">ဤလုပ်ဆောင်ချက်ကို သင့်စီမံခန့်ခွဲသူက စီမံသည်</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">'ကူညီရေးဌာန' တွင် ပိုမိုလေ့လာရန်</translation> <translation id="7648838807254605802">HTTPS တုံ့ပြန်ချိန် မြင့်သည်</translation> <translation id="7658239707568436148">မလုပ်တော့</translation> <translation id="7690294790491645610">စကားဝှက်အသစ်ကို အတည်ပြုပါ</translation>
diff --git a/chromeos/strings/chromeos_strings_nl.xtb b/chromeos/strings/chromeos_strings_nl.xtb index 65b22a4a..26782202 100644 --- a/chromeos/strings/chromeos_strings_nl.xtb +++ b/chromeos/strings/chromeos_strings_nl.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS-resolver aanwezig</translation> <translation id="1743558184855585519">De batterij wordt als verbruikt beschouwd zodra deze de limiet bereikt</translation> <translation id="1792647875738159689">Scannen annuleren</translation> +<translation id="1851218745569890714">Videovergaderingen</translation> <translation id="1905710495812624430">Maximumaantal toegestane pogingen overschreden.</translation> +<translation id="1908234395526491708">Mislukte UDP-verzoeken</translation> <translation id="1930797645656624981">Invoermethodeservice voor Chrome OS</translation> <translation id="1947737735496445907">Afgedrukt</translation> <translation id="1979103255016296513">Wachtwoord moet dringend worden gewijzigd</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Priemgetallen zoeken</translation> <translation id="2080070583977670716">Meer instellingen</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">IN DE WACHTRIJ</translation> <translation id="2161394479394250669">Afdruktaak annuleren</translation> <translation id="2224337661447660594">Geen internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Systeem</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Apps</translation> +<translation id="2862104018715411648">Leg je document op de scanner en selecteer Scannen om aan de slag te gaan</translation> <translation id="2872961005593481000">Afsluiten</translation> <translation id="2878387241690264070"><ph name="RATE" /> ontladen in <ph name="NUM_SECONDS" /> seconden.</translation> <translation id="3008341117444806826">VERNIEUWEN</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Weet je zeker dat je je hele afdrukgeschiedenis wilt verwijderen? Je actieve afdruktaken worden niet verwijderd.</translation> <translation id="3435738964857648380">Beveiliging</translation> <translation id="3456078764689556234">Pagina <ph name="PRINTED_PAGES" /> van <ph name="TOTAL_PAGES" /> afgedrukt.</translation> +<translation id="345898999683440380">Pagina <ph name="PAGE_NUM" /> scannen. <ph name="PERCENTAGE_VALUE" />% voltooid.</translation> <translation id="3459509316159669723">Afdrukken</translation> <translation id="3515615323037921860">Afdruktaken</translation> <translation id="3527036260304016759">Mislukt - Onbekende fout</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">MISLUKT</translation> <translation id="4176463684765177261">Uitgeschakeld</translation> <translation id="4227825898293920515">Wachtwoord verloopt over <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB van <ph name="TOTAL_MEMORY" /> GB beschikbaar.</translation> <translation id="4238516577297848345">Er worden geen afdruktaken uitgevoerd</translation> <translation id="4297501883039923494">Gestopt: onbekende fout</translation> <translation id="4378373042927530923">Niet uitgevoerd</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Routines opnieuw uitvoeren</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Opslaan</translation> +<translation id="5318334351163689047">Mislukte TCP-verzoeken</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Kies nu een nieuw wachtwoord</translation> <translation id="5333530671332546086">Onbekende portalstatus</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Kun je geen verbinding maken met scanners?</translation> <translation id="6853312040151791195">Ontlaadsnelheid</translation> <translation id="6898743098396957679">Kan de scan niet afronden</translation> +<translation id="6911383237894364323">Kan geen verbinding maken met mediaservers</translation> <translation id="6957231940976260713">Servicenaam</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> beheert dit apparaat en heeft toegang tot alle gebruikersactiviteit, waaronder bezochte webpagina's, wachtwoorden en e-mails.</translation> <translation id="7143207342074048698">Verbinden</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6-adres</translation> <translation id="7561454561030345039">Deze actie wordt beheerd door je beheerder</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Meer informatie in het Helpcentrum</translation> <translation id="7648838807254605802">Lage HTTPS-wachttijd</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 80f9f40..913396d 100644 --- a/chromeos/strings/chromeos_strings_no.xtb +++ b/chromeos/strings/chromeos_strings_no.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS-resolveren er til stede</translation> <translation id="1743558184855585519">Batteriet anses som oppbrukt når grensen er nådd</translation> <translation id="1792647875738159689">Avbryter skanningen</translation> +<translation id="1851218745569890714">Videokonferanser</translation> <translation id="1905710495812624430">Du har overskredet maksimumsgrensen for antall forsøk.</translation> +<translation id="1908234395526491708">Mislykkede UDP-forespørsler</translation> <translation id="1930797645656624981">Tjeneste for Chrome OS-inndatametode</translation> <translation id="1947737735496445907">Skrevet ut</translation> <translation id="1979103255016296513">Det er på høy tid å endre passordet</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Primtallsøk</translation> <translation id="2080070583977670716">Flere innstillinger</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">I KØ</translation> <translation id="2161394479394250669">Avbryt utskriftsjobben</translation> <translation id="2224337661447660594">Ingen nettilkobling</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">System</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Apper</translation> +<translation id="2862104018715411648">Legg dokumentet på skanneren, og velg Skann for å komme i gang</translation> <translation id="2872961005593481000">Slå av</translation> <translation id="2878387241690264070">Ladet ut <ph name="RATE" /> på <ph name="NUM_SECONDS" /> sekunder.</translation> <translation id="3008341117444806826">OPPDATER</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Er du sikker på at du vil tømme hele utskriftsloggen? Utskriftsjobber som allerede er i gang, fjernes ikke.</translation> <translation id="3435738964857648380">Sikkerhet</translation> <translation id="3456078764689556234">Skrev ut side <ph name="PRINTED_PAGES" /> av <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Skanner side <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % fullført.</translation> <translation id="3459509316159669723">Utskrift</translation> <translation id="3515615323037921860">Utskriftsjobber</translation> <translation id="3527036260304016759">Mislykket – ukjent feil</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">MISLYKKET</translation> <translation id="4176463684765177261">Deaktivert</translation> <translation id="4227825898293920515">Passordet utløper om <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB av <ph name="TOTAL_MEMORY" /> GB er tilgjengelig.</translation> <translation id="4238516577297848345">Ingen utskriftsjobber pågår</translation> <translation id="4297501883039923494">Stoppet – ukjent feil</translation> <translation id="4378373042927530923">Ikke kjørt</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Kjør rutinene på nytt</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Lagre</translation> +<translation id="5318334351163689047">Mislykkede TCP-forespørsler</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Velg et nytt passord nå</translation> <translation id="5333530671332546086">Ukjent portaltilstand</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Kan du ikke koble til noen skannere?</translation> <translation id="6853312040151791195">Utladingsfrekvens</translation> <translation id="6898743098396957679">Kunne ikke fullføre skanningen</translation> +<translation id="6911383237894364323">Kan ikke koble til medietjenere</translation> <translation id="6957231940976260713">Tjenestenavn</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> administrerer denne enheten og har tilgang til all brukeraktivitet, blant annet nettsteder som besøkes, passord og e-post.</translation> <translation id="7143207342074048698">Kobler til</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6-adresse</translation> <translation id="7561454561030345039">Denne handlingen administreres av administratoren</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Finn ut mer i Brukerstøtte</translation> <translation id="7648838807254605802">Høy HTTPS-tidsforsinkelse</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 64fd1c4..7df6569f 100644 --- a/chromeos/strings/chromeos_strings_pl.xtb +++ b/chromeos/strings/chromeos_strings_pl.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Resolver DNS – obecność</translation> <translation id="1743558184855585519">Kiedy bateria osiągnie limit, uważana jest za zużytą</translation> <translation id="1792647875738159689">Anuluję skanowanie</translation> +<translation id="1851218745569890714">Rozmowy wideo</translation> <translation id="1905710495812624430">Przekroczono maksymalną liczbę prób.</translation> +<translation id="1908234395526491708">Nieudane żądania UDP</translation> <translation id="1930797645656624981">Usługa Metoda wprowadzania Chrome OS</translation> <translation id="1947737735496445907">Wydrukowano</translation> <translation id="1979103255016296513">Zaległa zmiana hasła</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Znajdowanie liczb pierwszych</translation> <translation id="2080070583977670716">Więcej ustawień</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">W KOLEJCE</translation> <translation id="2161394479394250669">Anuluj zadanie drukowania</translation> <translation id="2224337661447660594">Brak internetu</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">System</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Aplikacje</translation> +<translation id="2862104018715411648">Na początek umieść dokument na skanerze i wybierz Skanuj</translation> <translation id="2872961005593481000">Wyłącz</translation> <translation id="2878387241690264070">Rozładowano <ph name="RATE" /> w ciągu <ph name="NUM_SECONDS" /> sekund.</translation> <translation id="3008341117444806826">ODŚWIEŻ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Czy na pewno chcesz usunąć całą historię drukowania? Bieżące zadania drukowania nie zostaną usunięte.</translation> <translation id="3435738964857648380">Bezpieczeństwo</translation> <translation id="3456078764689556234">Wydrukowano stronę <ph name="PRINTED_PAGES" /> z <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Skanuję stronę <ph name="PAGE_NUM" />. Ukończono <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">Drukowanie</translation> <translation id="3515615323037921860">Zadania drukowania</translation> <translation id="3527036260304016759">Niepowodzenie – nieznany błąd</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">NEGATYWNY</translation> <translation id="4176463684765177261">Wyłączone</translation> <translation id="4227825898293920515">Hasło wygasa za <ph name="TIME" /></translation> +<translation id="4228041325992544252">Dostępne: <ph name="AVAILABLE_MEMORY" /> GB z <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Brak zadań drukowania w toku</translation> <translation id="4297501883039923494">Zatrzymano – nieznany błąd</translation> <translation id="4378373042927530923">Nie wykonano</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Uruchom ponownie testy</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Zapisz</translation> +<translation id="5318334351163689047">Nieudane żądania TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Wybierz teraz nowe.</translation> <translation id="5333530671332546086">Nieznany stan portalu</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Nie możesz połączyć się ze skanerami?</translation> <translation id="6853312040151791195">Szybkość rozładowywania</translation> <translation id="6898743098396957679">Nie udało się ukończyć skanowania</translation> +<translation id="6911383237894364323">Nie udało się połączyć z serwerami multimediów</translation> <translation id="6957231940976260713">Nazwa usługi</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> zarządza tym urządzeniem i ma dostęp do wszelkiej aktywności użytkownika, w tym odwiedzanych stron internetowych, haseł i e-maili.</translation> <translation id="7143207342074048698">Łączenie</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Adres IPv6</translation> <translation id="7561454561030345039">Tym ustawieniem zarządza Twój administrator</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Dowiedz się więcej w Centrum pomocy</translation> <translation id="7648838807254605802">duże opóźnienie HTTPS</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 1fa5893..6192863 100644 --- a/chromeos/strings/chromeos_strings_pt-BR.xtb +++ b/chromeos/strings/chromeos_strings_pt-BR.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Resolvedor de DNS presente</translation> <translation id="1743558184855585519">A bateria é considerada consumida ao atingir o limite</translation> <translation id="1792647875738159689">Cancelando digitalização</translation> +<translation id="1851218745569890714">Videoconferência</translation> <translation id="1905710495812624430">O número máximo de tentativas permitidas foi excedido.</translation> +<translation id="1908234395526491708">Falhas de solicitações UDP</translation> <translation id="1930797645656624981">Serviço de método de entrada do Chrome OS</translation> <translation id="1947737735496445907">Impresso</translation> <translation id="1979103255016296513">O prazo para a alteração de senha foi ultrapassado</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Pesquisa de números primos</translation> <translation id="2080070583977670716">Mais definições</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">EM FILA</translation> <translation id="2161394479394250669">Cancelar trabalho de impressão</translation> <translation id="2224337661447660594">Sem Internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistema</translation> <translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Apps</translation> +<translation id="2862104018715411648">Para começar, coloque o documento no scanner e selecione "Digitalizar"</translation> <translation id="2872961005593481000">Desligar</translation> <translation id="2878387241690264070">Descarregou <ph name="RATE" /> em <ph name="NUM_SECONDS" /> segundos.</translation> <translation id="3008341117444806826">ATUALIZAR</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Tem certeza de que quer limpar todo o histórico? Os trabalhos de impressão atuais não serão apagados.</translation> <translation id="3435738964857648380">Segurança</translation> <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> página impressa de <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Digitalizando página <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% concluído.</translation> <translation id="3459509316159669723">Imprimir</translation> <translation id="3515615323037921860">Trabalhos de impressão</translation> <translation id="3527036260304016759">Falha - Erro desconhecido</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">FALHA</translation> <translation id="4176463684765177261">Desativado</translation> <translation id="4227825898293920515">A senha expirará em <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB de <ph name="TOTAL_MEMORY" /> GB disponíveis.</translation> <translation id="4238516577297848345">Nenhum trabalho de impressão em andamento</translation> <translation id="4297501883039923494">Parado (erro desconhecido)</translation> <translation id="4378373042927530923">Não executada</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Repetir rotinas</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Salvar</translation> +<translation id="5318334351163689047">Falhas de solicitação TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Escolha uma nova imediatamente</translation> <translation id="5333530671332546086">Estado de portal desconhecido</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Não foi possível se conectar aos scanners?</translation> <translation id="6853312040151791195">Taxa de descarregamento</translation> <translation id="6898743098396957679">Não foi possível concluir a digitalização</translation> +<translation id="6911383237894364323">Não foi possível se conectar aos servidores de mídia</translation> <translation id="6957231940976260713">Nome do serviço</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> gerencia este dispositivo e tem acesso a todas as atividades do usuário, incluindo páginas visitadas, senhas e e-mail.</translation> <translation id="7143207342074048698">Conectando</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Endereço IPv6</translation> <translation id="7561454561030345039">Essa ação é gerenciada pelo administrador</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Saiba mais na Central de Ajuda</translation> <translation id="7648838807254605802">Latência de HTTPS alta</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 1ea2c8b..91ca2f6 100644 --- a/chromeos/strings/chromeos_strings_pt-PT.xtb +++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Resolvedor de DNS presente</translation> <translation id="1743558184855585519">A bateria é considerada consumida quando atingir o limite.</translation> <translation id="1792647875738159689">A cancelar a digitalização…</translation> +<translation id="1851218745569890714">Videoconferências</translation> <translation id="1905710495812624430">Foi excedido o número máximo de tentativas permitidas.</translation> +<translation id="1908234395526491708">Falhas de pedidos de UDP.</translation> <translation id="1930797645656624981">Serviço do método de introdução do Chrome OS</translation> <translation id="1947737735496445907">Impressão concluída</translation> <translation id="1979103255016296513">Alteração da palavra-passe vencida</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Pesquisa Prime</translation> <translation id="2080070583977670716">Mais definições</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">EM LISTA DE ESPERA</translation> <translation id="2161394479394250669">Cancelar tarefa de impressão</translation> <translation id="2224337661447660594">Sem Internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> ppp</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistema</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Apps</translation> +<translation id="2862104018715411648">Coloque o documento no scanner e selecione Digitalizar para começar.</translation> <translation id="2872961005593481000">Encerrar</translation> <translation id="2878387241690264070">Descarregou <ph name="RATE" /> em <ph name="NUM_SECONDS" /> segundos.</translation> <translation id="3008341117444806826">ATUALIZAR</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Tem a certeza de que pretende limpar todo o histórico de impressões? As suas tarefas de impressão em curso não serão limpas.</translation> <translation id="3435738964857648380">Segurança</translation> <translation id="3456078764689556234">Página <ph name="PRINTED_PAGES" /> impressa de <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">A digitalizar a página <ph name="PAGE_NUM" />… <ph name="PERCENTAGE_VALUE" />% concluído.</translation> <translation id="3459509316159669723">Impressão</translation> <translation id="3515615323037921860">Tarefas de Impressão</translation> <translation id="3527036260304016759">Falha – Erro desconhecido</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">FALHOU</translation> <translation id="4176463684765177261">Desativado</translation> <translation id="4227825898293920515">A palavra-passe expira daqui a <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB de <ph name="TOTAL_MEMORY" /> GB disponíveis.</translation> <translation id="4238516577297848345">Nenhuma tarefa de impressão em curso.</translation> <translation id="4297501883039923494">Parada – Erro desconhecido</translation> <translation id="4378373042927530923">Não foi executada.</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Executar novamente as Rotinas</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Guardar</translation> +<translation id="5318334351163689047">Falhas de pedidos de TCP.</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Escolha uma nova agora.</translation> <translation id="5333530671332546086">Estado do portal desconhecido.</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Não consegue ligar aos scanners?</translation> <translation id="6853312040151791195">Velocidade de descarregamento</translation> <translation id="6898743098396957679">Não foi possível concluir a digitalização</translation> +<translation id="6911383237894364323">Não é possível estabelecer ligação aos servidores multimédia.</translation> <translation id="6957231940976260713">Nome do serviço</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> gere este dispositivo e tem acesso a todas as atividades do utilizador, incluindo páginas Web visitadas, palavras-passe e emails.</translation> <translation id="7143207342074048698">A ligar</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Endereço IPv6</translation> <translation id="7561454561030345039">Esta ação é gerida pelo seu administrador.</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Saber mais no Centro de Ajuda</translation> <translation id="7648838807254605802">Latência elevada de HTTPS</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 673723ef..cb87028 100644 --- a/chromeos/strings/chromeos_strings_ro.xtb +++ b/chromeos/strings/chromeos_strings_ro.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Rezolvitor DNS prezent</translation> <translation id="1743558184855585519">Se consideră că bateria este consumată când atinge limita</translation> <translation id="1792647875738159689">Se anulează scanarea</translation> +<translation id="1851218745569890714">Conferințe video</translation> <translation id="1905710495812624430">Ai depășit numărul maxim de încercări permise.</translation> +<translation id="1908234395526491708">Erori de solicitare UDP</translation> <translation id="1930797645656624981">Serviciul metodei de introducere a textului din sistemul de operare Chrome</translation> <translation id="1947737735496445907">Printată</translation> <translation id="1979103255016296513">Ai depășit timpul limită pentru schimbarea parolei</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Căutare de numere prime</translation> <translation id="2080070583977670716">Mai multe setări</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">ÎN COADĂ</translation> <translation id="2161394479394250669">Anulează sarcina de printare</translation> <translation id="2224337661447660594">Nu există conexiune la internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistem</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Aplicații</translation> +<translation id="2862104018715411648">Așază documentul pe scaner și selectează Scanează pentru a începe</translation> <translation id="2872961005593481000">Închide</translation> <translation id="2878387241690264070">S-a descărcat cu <ph name="RATE" /> în <ph name="NUM_SECONDS" /> secunde.</translation> <translation id="3008341117444806826">ACTUALIZEAZĂ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Sigur vrei să ștergi tot istoricul printărilor? Sarcinile de printare în curs nu vor fi șterse.</translation> <translation id="3435738964857648380">Securitate</translation> <translation id="3456078764689556234">S-a printat pagina <ph name="PRINTED_PAGES" /> din <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Se scanează pagina <ph name="PAGE_NUM" />. Progres: <ph name="PERCENTAGE_VALUE" /> %.</translation> <translation id="3459509316159669723">Printare</translation> <translation id="3515615323037921860">Sarcini de printare</translation> <translation id="3527036260304016759">Nereușită – Eroare necunoscută</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">NEREUȘIT</translation> <translation id="4176463684765177261">Dezactivat</translation> <translation id="4227825898293920515">Parola expiră în <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB din <ph name="TOTAL_MEMORY" /> GB disponibili.</translation> <translation id="4238516577297848345">Nicio sarcină de printare în desfășurare</translation> <translation id="4297501883039923494">Oprită – Eroare necunoscută</translation> <translation id="4378373042927530923">Nu a rulat</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Rulează din nou rutinele</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Salvează</translation> +<translation id="5318334351163689047">Erori de solicitare TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Alege una nouă acum</translation> <translation id="5333530671332546086">Stare necunoscută a portalului</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Nu te poți conecta la scanere?</translation> <translation id="6853312040151791195">Rata de descărcare</translation> <translation id="6898743098396957679">Nu s-a putut finaliza scanarea</translation> +<translation id="6911383237894364323">Nu se poate conecta la serverele media</translation> <translation id="6957231940976260713">Nume serviciu</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> gestionează acest dispozitiv și are acces la toată activitatea utilizatorului, inclusiv la paginile web accesate, parole și e-mail.</translation> <translation id="7143207342074048698">Se conectează</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Adresă IPv6</translation> <translation id="7561454561030345039">Această setare este gestionată de administrator</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Află mai multe din Centrul de ajutor</translation> <translation id="7648838807254605802">Latență mare a solicitărilor HTTPS</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 91fa13e8..760c120 100644 --- a/chromeos/strings/chromeos_strings_ru.xtb +++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Наличие DNS-резолвера</translation> <translation id="1743558184855585519">Ресурс батареи считается исчерпанным, когда достигнут предел по количеству циклов перезарядки</translation> <translation id="1792647875738159689">Отмена сканирования</translation> +<translation id="1851218745569890714">Видеоконференции</translation> <translation id="1905710495812624430">Превышено максимально допустимое число попыток.</translation> +<translation id="1908234395526491708">Невыполненные запросы UDP.</translation> <translation id="1930797645656624981">Выбор способа ввода в Chrome OS</translation> <translation id="1947737735496445907">Напечатано</translation> <translation id="1979103255016296513">Истек срок изменения пароля</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Поиск простых чисел</translation> <translation id="2080070583977670716">Дополнительные настройки</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">В ОЧЕРЕДИ</translation> <translation id="2161394479394250669">Отменить задание печати</translation> <translation id="2224337661447660594">Нет подключения к Интернету</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Система</translation> <translation id="2740531572673183784">ОК</translation> <translation id="2805756323405976993">Сервисы</translation> +<translation id="2862104018715411648">Положите документ в сканер и нажмите "Сканировать".</translation> <translation id="2872961005593481000">Завершить работу</translation> <translation id="2878387241690264070">Батарея разрядилась на <ph name="RATE" /> за <ph name="NUM_SECONDS" /> сек.</translation> <translation id="3008341117444806826">ОБНОВИТЬ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Очистить историю печати? Текущие задания печати не будут удалены.</translation> <translation id="3435738964857648380">Безопасность</translation> <translation id="3456078764689556234">Напечатано страниц: <ph name="PRINTED_PAGES" /> из <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Сканирование страницы <ph name="PAGE_NUM" />. Выполнено <ph name="PERCENTAGE_VALUE" /> %.</translation> <translation id="3459509316159669723">Печать</translation> <translation id="3515615323037921860">Задания печати</translation> <translation id="3527036260304016759">Сбой: неизвестная ошибка</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">ОШИБКА</translation> <translation id="4176463684765177261">Отключено</translation> <translation id="4227825898293920515">Срок действия пароля истекает через <ph name="TIME" /></translation> +<translation id="4228041325992544252">Доступно <ph name="AVAILABLE_MEMORY" /> из <ph name="TOTAL_MEMORY" /> ГБ.</translation> <translation id="4238516577297848345">Задания печати не выполняются</translation> <translation id="4297501883039923494">Печать прервана: неизвестная ошибка</translation> <translation id="4378373042927530923">Не проверено</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Запустить заново</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Сохранить</translation> +<translation id="5318334351163689047">Невыполненные запросы TCP.</translation> <translation id="5326394068492324457">Файл "<ph name="DOCUMENT_TITLE" />", принтер "<ph name="PRINTER_NAME" />", дата – <ph name="CREATION_TIME" />, состояние: "<ph name="COMPLETION_STATUS" />"</translation> <translation id="5332948983412042822">Смените пароль как можно скорее.</translation> <translation id="5333530671332546086">Неизвестное состояние сетевого портала.</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Не удается подключиться к сканерам?</translation> <translation id="6853312040151791195">Скорость разрядки</translation> <translation id="6898743098396957679">Не удалось выполнить сканирование</translation> +<translation id="6911383237894364323">Не удалось подключиться к медиасерверам.</translation> <translation id="6957231940976260713">Название службы</translation> <translation id="7028979494427204405">Этим устройством управляет <ph name="MANAGER" />. Администратору доступна информация обо всех действиях пользователя, в том числе о посещенных веб-страницах, а также адрес электронной почты и пароли.</translation> <translation id="7143207342074048698">Подключение</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Адрес IPv6</translation> <translation id="7561454561030345039">Этим действием управляет администратор.</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Узнать больше в Справочном центре</translation> <translation id="7648838807254605802">большое время ожидания HTTPS</translation> <translation id="7658239707568436148">Отмена</translation> <translation id="7690294790491645610">Введите новый пароль ещё раз</translation>
diff --git a/chromeos/strings/chromeos_strings_si.xtb b/chromeos/strings/chromeos_strings_si.xtb index b95ca6e7..ce668d5 100644 --- a/chromeos/strings/chromeos_strings_si.xtb +++ b/chromeos/strings/chromeos_strings_si.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS විසඳුම්කාරක පැවතීම</translation> <translation id="1743558184855585519">බැටරිය සීමාවට ළඟා වූ පසු එය පරිභෝජන කළ ලෙස සැලකේ</translation> <translation id="1792647875738159689">ස්කෑන් කිරීම අවලංගු කරමින්</translation> +<translation id="1851218745569890714">වීඩියෝ සම්මන්ත්රණය</translation> <translation id="1905710495812624430">ඉඩ දෙන උපරිම උත්සාහයන් ගණන ඉක්මවා ඇත.</translation> +<translation id="1908234395526491708">UDP ඉල්ලීම් අසාර්ථක වීම්</translation> <translation id="1930797645656624981">Chrome OS ආදාන ක්රම සේවය</translation> <translation id="1947737735496445907">මුද්රණය කරන ලදි</translation> <translation id="1979103255016296513">මුරපදය වෙනස් කිරීම කල් ගොස් ඇත</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">ප්රයිම් සෙවීම</translation> <translation id="2080070583977670716">තවත් සැකසුම්</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">පෙළ ගස්වන ලදි</translation> <translation id="2161394479394250669">මුද්රණ කාර්යය අවලංගු කරන්න</translation> <translation id="2224337661447660594">අන්තර්ජාලය නැත</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">පද්ධතිය</translation> <translation id="2740531572673183784">හරි</translation> <translation id="2805756323405976993">යෙදුම්</translation> +<translation id="2862104018715411648">ආරම්භ කිරීමට ඔබගේ ලේඛනය ස්කෑනරය මත තබා ස්කෑන් කරන්න තෝරන්න</translation> <translation id="2872961005593481000">වසන්න</translation> <translation id="2878387241690264070">තත්පර <ph name="NUM_SECONDS" />ක් තුළ <ph name="RATE" /> විසර්ජනය වේ.</translation> <translation id="3008341117444806826">නැවුම් කරන්න</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">ඔබට මුද්රණ ඉතිහාස සියල්ල හිස් කිරීමට අවශ්ය බව ඔබට තහවුරුද? ඔබේ පවතින මුද්රණ වැඩ හිස් නොකෙරේ.</translation> <translation id="3435738964857648380">ආරක්ෂක</translation> <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> න් මුද්රණය කළ පිටුව <ph name="PRINTED_PAGES" /></translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" /> පිටුව ස්කෑන් කරමින්. <ph name="PERCENTAGE_VALUE" />% සම්පූර්ණයි.</translation> <translation id="3459509316159669723">මුද්රණය කරමින්</translation> <translation id="3515615323037921860">මුද්රණ වැඩ</translation> <translation id="3527036260304016759">අසාර්ථක විය - නොදන්නා දෝෂයකි</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">අසාර්ථක විය</translation> <translation id="4176463684765177261">අබල කරන ලද</translation> <translation id="4227825898293920515">මුරපදය <ph name="TIME" /> තුළ කල් ඉකුත් වෙයි</translation> +<translation id="4228041325992544252"><ph name="TOTAL_MEMORY" />කින් <ph name="AVAILABLE_MEMORY" /> GB ලබා ගත හැකිය.</translation> <translation id="4238516577297848345">කෙරෙමින් පවතින මුද්රණ කාර්යයක් නැත</translation> <translation id="4297501883039923494">නැවතිණි - නොදන්නා දෝෂයකි</translation> <translation id="4378373042927530923">ධාවනය නොවේ</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">දින චර්යා යළි ධාවනය කරන්න</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">සුරකින්න</translation> +<translation id="5318334351163689047">TCP ඉල්ලීම් අසාර්ථක වීම්</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">දැන් අලුත් එකක් තෝරන්න</translation> <translation id="5333530671332546086">නොදන්නා ද්වාර තත්ත්වය</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">ස්කෑනර වෙත සම්බන්ධ විය නොහැකිද?</translation> <translation id="6853312040151791195">විසර්ජන වේගය</translation> <translation id="6898743098396957679">ස්කෑන් කිරීම සම්පූර්ණ කිරීමට නොහැකි විය</translation> +<translation id="6911383237894364323">මාධ්ය සේවාදායක වෙත සබැඳීමට නොහැකිය</translation> <translation id="6957231940976260713">සේවා නාමය</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> මෙම උපාංගය කළමනාකරණය කරන අතර, එයට පිවිසි වෙබ් පිටු, මුරපද සහ ඉ-තැපෑල ඇතුළුව සියලු පරිශීලක ක්රියාකාරකම් වෙත ප්රවේශය තිබේ.</translation> <translation id="7143207342074048698">සම්බන්ධ වෙමින්…</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 ලිපිනය</translation> <translation id="7561454561030345039">මෙම ක්රියාව ඔබේ පරිපාලක විසින් කළමනාකරණය කරයි</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">උදවු මධ්යස්ථානය තුළ තව දැන ගන්න</translation> <translation id="7648838807254605802">ඉහළ HTTPS පමාව</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 7e4206da..f3ec080 100644 --- a/chromeos/strings/chromeos_strings_sk.xtb +++ b/chromeos/strings/chromeos_strings_sk.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Prekladač DNS je prítomný</translation> <translation id="1743558184855585519">Keď batéria dosiahne tento limit, považuje sa to za koniec jej životnosti</translation> <translation id="1792647875738159689">Ruší sa skenovanie</translation> +<translation id="1851218745569890714">Videokonferencie</translation> <translation id="1905710495812624430">Maximálny počet povolených pokusov bol prekročený.</translation> +<translation id="1908234395526491708">Neúspešné žiadosti UDP</translation> <translation id="1930797645656624981">Služba metódy vstupu systému Chrome OS</translation> <translation id="1947737735496445907">Vytlačené</translation> <translation id="1979103255016296513">Uplynul termín zmeny hesla</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Vyhľadávanie prvočísel</translation> <translation id="2080070583977670716">Ďalšie nastavenia</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">V PORADÍ</translation> <translation id="2161394479394250669">Zrušiť tlačovú úlohu</translation> <translation id="2224337661447660594">Bez internetu</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Systém</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Aplikácie</translation> +<translation id="2862104018715411648">Položte dokument na skener a začnite výberom možnosti Skenovať</translation> <translation id="2872961005593481000">Vypnúť</translation> <translation id="2878387241690264070">Za <ph name="NUM_SECONDS" /> s sa batéria vybila o <ph name="RATE" /></translation> <translation id="3008341117444806826">OBNOVIŤ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Naozaj chcete vymazať celú históriu tlače? Prebiehajúce tlačové úlohy nebudú vymazané.</translation> <translation id="3435738964857648380">Bezpečnosť</translation> <translation id="3456078764689556234">Bola vytlačená <ph name="PRINTED_PAGES" />. strana z <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Skenuje sa <ph name="PAGE_NUM" />. strana. Dokončené: <ph name="PERCENTAGE_VALUE" /> %.</translation> <translation id="3459509316159669723">Tlač</translation> <translation id="3515615323037921860">Tlačové úlohy</translation> <translation id="3527036260304016759">Nepodarilo sa – neznáma chyba</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">NEPODARILO SA</translation> <translation id="4176463684765177261">Deaktivované</translation> <translation id="4227825898293920515">Platnosť hesla vyprší o <ph name="TIME" /></translation> +<translation id="4228041325992544252">K dispozícii je <ph name="AVAILABLE_MEMORY" /> GB z <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Neprebiehajú žiadne tlačové úlohy</translation> <translation id="4297501883039923494">Zastavené – neznáma chyba</translation> <translation id="4378373042927530923">Nebolo spustené</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Znova spustiť postupy</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Uložiť</translation> +<translation id="5318334351163689047">Neúspešné žiadosti TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Zvoľte si nové heslo teraz</translation> <translation id="5333530671332546086">Neznámy stav portálu</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Nemôžete sa pripojiť k skenerom?</translation> <translation id="6853312040151791195">Rýchlosť vybíjania</translation> <translation id="6898743098396957679">Skenovanie sa nepodarilo dokončiť</translation> +<translation id="6911383237894364323">Nepodarilo sa pripojiť k mediálnym serverom</translation> <translation id="6957231940976260713">Názov služby</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> spravuje toto zariadenie a má prístup k všetkým aktivitám používateľa vrátane navštívených webových stránok, hesiel a pošty.</translation> <translation id="7143207342074048698">Pripája sa</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Adresa IPv6</translation> <translation id="7561454561030345039">Túto akciu ovláda váš správca</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Ďalšie informácie v centre pomoci</translation> <translation id="7648838807254605802">Vysoká latencia protokolu HTTPS</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 edbfd6b..3fe5adb 100644 --- a/chromeos/strings/chromeos_strings_sl.xtb +++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Prisotnost razreševalnika DNS</translation> <translation id="1743558184855585519">Baterija se smatra kot izrabljena, ko doseže omejitev števila polnjenj.</translation> <translation id="1792647875738159689">Preklic optičnega branja</translation> +<translation id="1851218745569890714">Videokonference</translation> <translation id="1905710495812624430">Preseženo je največje dovoljeno število dovoljenih poskusov.</translation> +<translation id="1908234395526491708">Neuspele zahteve UDP</translation> <translation id="1930797645656624981">Storitev načina vnosa v okolju OS Chrome</translation> <translation id="1947737735496445907">Natisnjeno</translation> <translation id="1979103255016296513">Rok za spremembo gesla je potekel</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Začetno iskanje</translation> <translation id="2080070583977670716">Več nastavitev</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">NA ČAKANJU</translation> <translation id="2161394479394250669">Preklic tiskalnega opravila</translation> <translation id="2224337661447660594">Ni internetne povezave</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> pik na palec</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistem</translation> <translation id="2740531572673183784">V redu</translation> <translation id="2805756323405976993">Aplikacije</translation> +<translation id="2862104018715411648">Če želite začeti, dokument postavite na optični bralnik in izberite »Optično branje«.</translation> <translation id="2872961005593481000">Zaustavitev</translation> <translation id="2878387241690264070">Izpraznjeno: <ph name="RATE" /> v <ph name="NUM_SECONDS" /> s.</translation> <translation id="3008341117444806826">OSVEŽI</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Ali ste prepričani, da želite izbrisati vso zgodovino tiskanja? Tiskalna opravila, ki potekajo, ne bodo izbrisana.</translation> <translation id="3435738964857648380">Varnost</translation> <translation id="3456078764689556234">Natisnjena <ph name="PRINTED_PAGES" />. stran od <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Optično branje <ph name="PAGE_NUM" />. strani. Dokončano: <ph name="PERCENTAGE_VALUE" /> %.</translation> <translation id="3459509316159669723">Tiskanje</translation> <translation id="3515615323037921860">Tiskalni posli</translation> <translation id="3527036260304016759">Napaka – neznana napaka</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">NI USPEL</translation> <translation id="4176463684765177261">Onemogočeno</translation> <translation id="4227825898293920515">Geslo poteče čez toliko časa: <ph name="TIME" /></translation> +<translation id="4228041325992544252">Na voljo je <ph name="AVAILABLE_MEMORY" /> GB od skupno <ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Nobeno tiskalno opravilo ne poteka</translation> <translation id="4297501883039923494">Ustavljeno – neznana napaka</translation> <translation id="4378373042927530923">Ni se izvedlo</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Znova zaženi rutine</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Shrani</translation> +<translation id="5318334351163689047">Neuspele zahteve TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Izberite novo</translation> <translation id="5333530671332546086">Neznano stanje portala</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Ni mogoče vzpostaviti povezave z optičnimi bralniki?</translation> <translation id="6853312040151791195">Hitrost praznjenja</translation> <translation id="6898743098396957679">Optičnega branja ni bilo mogoče dokončati</translation> +<translation id="6911383237894364323">Povezave s strežniki za predstavnost ni bilo mogoče vzpostaviti.</translation> <translation id="6957231940976260713">Ime storitve</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> upravlja to napravo in ima dostop do vse dejavnosti uporabnika, vključno z obiskanimi spletnimi mesti, gesli in e-pošto.</translation> <translation id="7143207342074048698">Povezovanje</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Naslov IPv6</translation> <translation id="7561454561030345039">To dejanje upravlja skrbnik</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Preberite več v centru za pomoč</translation> <translation id="7648838807254605802">Velika zakasnitev HTTPS</translation> <translation id="7658239707568436148">Prekliči</translation> <translation id="7690294790491645610">Potrdite novo geslo</translation>
diff --git a/chromeos/strings/chromeos_strings_sq.xtb b/chromeos/strings/chromeos_strings_sq.xtb index be030d0..a8952a9 100644 --- a/chromeos/strings/chromeos_strings_sq.xtb +++ b/chromeos/strings/chromeos_strings_sq.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Zgjidhësi i DNS-së i pranishëm</translation> <translation id="1743558184855585519">Bateria konsiderohet e konsumuar pasi të arrijë kufirin</translation> <translation id="1792647875738159689">Skanimi po anulohet</translation> +<translation id="1851218745569890714">Videokonferenca</translation> <translation id="1905710495812624430">U kaluan përpjekjet maksimale të lejuara.</translation> +<translation id="1908234395526491708">Dështimet e kërkesave UDP</translation> <translation id="1930797645656624981">Shërbimi i metodës së hyrjes së Chrome OS</translation> <translation id="1947737735496445907">Printuar</translation> <translation id="1979103255016296513">Afati i ndryshimit të fjalëkalimit ka kaluar</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Kërkimi kryesor</translation> <translation id="2080070583977670716">Cilësime të tjera</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">NË RADHË</translation> <translation id="2161394479394250669">Anulo printimin</translation> <translation id="2224337661447660594">Nuk ka internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistemi</translation> <translation id="2740531572673183784">Në rregull</translation> <translation id="2805756323405976993">Aplikacionet</translation> +<translation id="2862104018715411648">Vendose dokumentin tënd në skaner dhe zgjidh "Skano" për të filluar</translation> <translation id="2872961005593481000">Ndërprit punën</translation> <translation id="2878387241690264070">U shkarkua <ph name="RATE" /> në <ph name="NUM_SECONDS" /> sekonda.</translation> <translation id="3008341117444806826">RIFRESKO</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Je i sigurt që do ta pastrosh të gjithë historikun e printimit? Printimet e tua në vazhdim nuk do të pastrohen.</translation> <translation id="3435738964857648380">Siguria</translation> <translation id="3456078764689556234">U printua faqja <ph name="PRINTED_PAGES" /> nga <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Po skanon faqen <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% e përfunduar.</translation> <translation id="3459509316159669723">Po printon</translation> <translation id="3515615323037921860">Printimet</translation> <translation id="3527036260304016759">Dështoi - Gabim i panjohur</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">DËSHTOI</translation> <translation id="4176463684765177261">I çaktivizuar</translation> <translation id="4227825898293920515">Fjalëkalimi skadon për <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB nga <ph name="TOTAL_MEMORY" /> GB të disponueshme.</translation> <translation id="4238516577297848345">Nuk ka printime në vazhdim</translation> <translation id="4297501883039923494">Ndaloi - Gabim i panjohur</translation> <translation id="4378373042927530923">Nuk u ekzekutua</translation> @@ -157,6 +163,7 @@ <translation id="5275828089655680674">Riekzekuto rutinat</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Ruaj</translation> +<translation id="5318334351163689047">Dështimet e kërkesave TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Zgjidh një të ri tani</translation> <translation id="5333530671332546086">Gjendje e panjohur portali</translation> @@ -216,6 +223,7 @@ <translation id="6839141349259399400">Nuk mund të lidhesh me skanerët?</translation> <translation id="6853312040151791195">Shpejtësia e shkarkimit</translation> <translation id="6898743098396957679">Skanimi nuk mund të përfundohej</translation> +<translation id="6911383237894364323">Nuk mund të lidhet me serverët e medias.</translation> <translation id="6957231940976260713">Emri i shërbimit</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> menaxhon këtë pajisje dhe ka qasje te i gjithë aktiviteti i përdoruesit, duke përfshirë faqet e uebit të vizituara, fjalëkalimet dhe email-i.</translation> <translation id="7143207342074048698">Po lidhet</translation> @@ -232,6 +240,7 @@ <translation id="7502658306369382406">Adresa IPv6</translation> <translation id="7561454561030345039">Ky veprim menaxhohet nga administratori yt</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Mëso më shumë në "Qendrën e ndihmës"</translation> <translation id="7648838807254605802">Vonesë e lartë në HTTPS</translation> <translation id="7658239707568436148">Anulo</translation> <translation id="7690294790491645610">Konfirmo fjalëkalimin e ri</translation>
diff --git a/chromeos/strings/chromeos_strings_sr-Latn.xtb b/chromeos/strings/chromeos_strings_sr-Latn.xtb index c40154e..c5ec793 100644 --- a/chromeos/strings/chromeos_strings_sr-Latn.xtb +++ b/chromeos/strings/chromeos_strings_sr-Latn.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Prisutan je DNS razrešivač</translation> <translation id="1743558184855585519">Baterija se smatra potrošenom kada dostigne ograničenje</translation> <translation id="1792647875738159689">Otkazuje se skeniranje</translation> +<translation id="1851218745569890714">Video konferencije</translation> <translation id="1905710495812624430">Premašen je maksimalni broj pokušaja.</translation> +<translation id="1908234395526491708">Neuspeli UDP zahtevi</translation> <translation id="1930797645656624981">Usluga metoda unosa za Chrome OS</translation> <translation id="1947737735496445907">Odštampano</translation> <translation id="1979103255016296513">Rok za promenu lozinke je istekao</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Primarna pretraga</translation> <translation id="2080070583977670716">Više podešavanja</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">NA ČEKANJU</translation> <translation id="2161394479394250669">Otkaži zadatak štampanja</translation> <translation id="2224337661447660594">Nema interneta</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistem</translation> <translation id="2740531572673183784">Potvrdi</translation> <translation id="2805756323405976993">Aplikacije</translation> +<translation id="2862104018715411648">Postavite dokument na skener i izaberite Skeniraj da biste započeli</translation> <translation id="2872961005593481000">Isključi</translation> <translation id="2878387241690264070">Ispražnjeno <ph name="RATE" /> za <ph name="NUM_SECONDS" /> sek.</translation> <translation id="3008341117444806826">OSVEŽI</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Želite li stvarno da obrišete svu istoriju štampanja? Zadaci štampanja koji su u toku se ne brišu.</translation> <translation id="3435738964857648380">Bezbednost</translation> <translation id="3456078764689556234">Odštampanih stranica: <ph name="PRINTED_PAGES" /> od <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Skenira se <ph name="PAGE_NUM" />. stranica. Dovršeno je <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">Štampanje</translation> <translation id="3515615323037921860">Zadaci štampanja</translation> <translation id="3527036260304016759">Nije uspelo – nepoznata greška</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">NIJE USPELO</translation> <translation id="4176463684765177261">Onemogućeno</translation> <translation id="4227825898293920515">Lozinka ističe za <ph name="TIME" /></translation> +<translation id="4228041325992544252">Dostupno: <ph name="AVAILABLE_MEMORY" /> GB od <ph name="TOTAL_MEMORY" /> GB</translation> <translation id="4238516577297848345">Nijedan zadatak štampanja nije u toku</translation> <translation id="4297501883039923494">Zaustavljeno – nepoznata greška</translation> <translation id="4378373042927530923">Nije pokrenuto</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Ponovo pokreni rutine</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Sačuvaj</translation> +<translation id="5318334351163689047">Neuspeli TCP zahtevi</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Odaberite novu</translation> <translation id="5333530671332546086">Stanje portala nije poznato</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Povezivanje sa skenerima nije uspelo?</translation> <translation id="6853312040151791195">Brzina pražnjenja</translation> <translation id="6898743098396957679">Dovršavanje skeniranja nije uspelo</translation> +<translation id="6911383237894364323">Povezivanje sa medijskim serverima nije uspelo</translation> <translation id="6957231940976260713">Naziv usluge</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> upravlja ovim uređajem i ima pristup svim aktivnostima korisnika, uključujući posećene veb-stranice, lozinke i imejlove.</translation> <translation id="7143207342074048698">Povezivanje</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 adresa</translation> <translation id="7561454561030345039">Ovim podešavanjem upravlja administrator</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Saznajte više u Centru za pomoć</translation> <translation id="7648838807254605802">Veliko HTTPS kašnjenje</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 0414eb9d1..bcd2d22 100644 --- a/chromeos/strings/chromeos_strings_sr.xtb +++ b/chromeos/strings/chromeos_strings_sr.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Присутан је DNS разрешивач</translation> <translation id="1743558184855585519">Батерија се сматра потрошеном када достигне ограничење</translation> <translation id="1792647875738159689">Отказује се скенирање</translation> +<translation id="1851218745569890714">Видео конференције</translation> <translation id="1905710495812624430">Премашен је максимални број покушаја.</translation> +<translation id="1908234395526491708">Неуспели UDP захтеви</translation> <translation id="1930797645656624981">Услуга метода уноса за Chrome ОС</translation> <translation id="1947737735496445907">Одштампано</translation> <translation id="1979103255016296513">Рок за промену лозинке је истекао</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Примарна претрага</translation> <translation id="2080070583977670716">Више подешавања</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">НА ЧЕКАЊУ</translation> <translation id="2161394479394250669">Откажи задатак штампања</translation> <translation id="2224337661447660594">Нема интернета</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Систем</translation> <translation id="2740531572673183784">Потврди</translation> <translation id="2805756323405976993">Апликације</translation> +<translation id="2862104018715411648">Поставите документ на скенер и изаберите Скенирај да бисте започели</translation> <translation id="2872961005593481000">Искључи</translation> <translation id="2878387241690264070">Испражњено <ph name="RATE" /> за <ph name="NUM_SECONDS" /> сек.</translation> <translation id="3008341117444806826">ОСВЕЖИ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Желите ли стварно да обришете сву историју штампања? Задаци штампања који су у току се не бришу.</translation> <translation id="3435738964857648380">Безбедност</translation> <translation id="3456078764689556234">Одштампаних страница: <ph name="PRINTED_PAGES" /> од <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Скенира се <ph name="PAGE_NUM" />. страница. Довршено је <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">Штампање</translation> <translation id="3515615323037921860">Задаци штампања</translation> <translation id="3527036260304016759">Није успело – непозната грешка</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">НИЈЕ УСПЕЛО</translation> <translation id="4176463684765177261">Онемогућено</translation> <translation id="4227825898293920515">Лозинка истиче за <ph name="TIME" /></translation> +<translation id="4228041325992544252">Доступно: <ph name="AVAILABLE_MEMORY" /> GB од <ph name="TOTAL_MEMORY" /> GB</translation> <translation id="4238516577297848345">Ниједан задатак штампања није у току</translation> <translation id="4297501883039923494">Заустављено – непозната грешка</translation> <translation id="4378373042927530923">Није покренуто</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Поново покрени рутине</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Сачувај</translation> +<translation id="5318334351163689047">Неуспели TCP захтеви</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Одаберите нову</translation> <translation id="5333530671332546086">Стање портала није познато</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Повезивање са скенерима није успело?</translation> <translation id="6853312040151791195">Брзина пражњења</translation> <translation id="6898743098396957679">Довршавање скенирања није успело</translation> +<translation id="6911383237894364323">Повезивање са медијским серверима није успело</translation> <translation id="6957231940976260713">Назив услуге</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> управља овим уређајем и има приступ свим активностима корисника, укључујући посећене веб-странице, лозинке и имејлове.</translation> <translation id="7143207342074048698">Повезивање</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 адреса</translation> <translation id="7561454561030345039">Овим подешавањем управља администратор</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Сазнајте више у Центру за помоћ</translation> <translation id="7648838807254605802">Велико HTTPS кашњење</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 b84ffa8..d9ffbec 100644 --- a/chromeos/strings/chromeos_strings_sv.xtb +++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS-resolver finns</translation> <translation id="1743558184855585519">Batteriet anses förbrukat när det når gränsen</translation> <translation id="1792647875738159689">Skanningen avbryts</translation> +<translation id="1851218745569890714">Videokonferenser</translation> <translation id="1905710495812624430">Du har försökt för många gånger.</translation> +<translation id="1908234395526491708">Misslyckade UDP-förfrågningar</translation> <translation id="1930797645656624981">Tjänst för inmatningsmetod för Chrome OS</translation> <translation id="1947737735496445907">Utskrivet</translation> <translation id="1979103255016296513">Tiden för att ändra lösenordet har gått ut</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Primtalssökning</translation> <translation id="2080070583977670716">Fler inställningar</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" /> %</translation> +<translation id="2157959690810728433">I KÖ</translation> <translation id="2161394479394250669">Avbryt utskriftsjobb</translation> <translation id="2224337661447660594">Inget internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">System</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Appar</translation> +<translation id="2862104018715411648">Sätt dokumentet i skannern och välj Skanna för att komma igång</translation> <translation id="2872961005593481000">Stäng av</translation> <translation id="2878387241690264070"><ph name="RATE" /> urladdat på <ph name="NUM_SECONDS" /> sekunder.</translation> <translation id="3008341117444806826">UPPDATERA</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Vill du rensa all utskriftshistorik? De pågående utskriftsjobben rensas inte.</translation> <translation id="3435738964857648380">Säkerhet</translation> <translation id="3456078764689556234">Sida <ph name="PRINTED_PAGES" /> av <ph name="TOTAL_PAGES" /> har skrivits ut.</translation> +<translation id="345898999683440380">Skannar sida <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % har slutförts.</translation> <translation id="3459509316159669723">Skriva ut</translation> <translation id="3515615323037921860">Utskriftsjobb</translation> <translation id="3527036260304016759">Misslyckades – okänt fel</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">MISSLYCKADES</translation> <translation id="4176463684765177261">Inaktiverad</translation> <translation id="4227825898293920515">Lösenordet upphör att gälla om <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" /> GB av <ph name="TOTAL_MEMORY" /> GB är tillgängligt.</translation> <translation id="4238516577297848345">Inga utskriftsjobb pågår</translation> <translation id="4297501883039923494">Har stoppats – okänt fel</translation> <translation id="4378373042927530923">Har inte körts</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Kör rutinerna igen</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Spara</translation> +<translation id="5318334351163689047">Misslyckad TCP-begäran</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Välj ett nytt nu</translation> <translation id="5333530671332546086">Okänd portalstatus</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Går det inte att ansluta till någon skanner?</translation> <translation id="6853312040151791195">Urladdningshastighet</translation> <translation id="6898743098396957679">Det gick inte att slutföra skanningen</translation> +<translation id="6911383237894364323">Det gick inte att ansluta till medieservrarna</translation> <translation id="6957231940976260713">Namn på tjänsten</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> hanterar den här enheten och har tillgång till all användaraktivitet, inklusive besökta webbsidor, lösenord och e-post.</translation> <translation id="7143207342074048698">Ansluter</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6-adress</translation> <translation id="7561454561030345039">Den här åtgärden hanteras av administratören</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Läs mer i hjälpcentret</translation> <translation id="7648838807254605802">Hög HTTPS-fördröjning</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 9ca5b4bd..73ddf56 100644 --- a/chromeos/strings/chromeos_strings_sw.xtb +++ b/chromeos/strings/chromeos_strings_sw.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Kisuluhishaji cha DNS Kinapatikana</translation> <translation id="1743558184855585519">Betri huchukuliwa kwamba imetumika ikishafikia kikomo</translation> <translation id="1792647875738159689">Inaghairi uchanganuzi</translation> +<translation id="1851218745569890714">Mikutano ya Video</translation> <translation id="1905710495812624430">Idadi ya juu ya majaribio yanayoruhusiwa.</translation> +<translation id="1908234395526491708">Maombi ya UDP ambayo hayakufaulu</translation> <translation id="1930797645656624981">Huduma ya Mbinu ya Kuingiza Data kwenye Mfumo wa Uendeshaji wa Chrome</translation> <translation id="1947737735496445907">Imechapishwa</translation> <translation id="1979103255016296513">Muda wa kubadilisha nenosiri umeisha</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prime search</translation> <translation id="2080070583977670716">Mipangilio zaidi</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">IMEWEKWA KWENYE FOLENI</translation> <translation id="2161394479394250669">Ghairi kazi ya kuchapisha</translation> <translation id="2224337661447660594">Hakuna intaneti</translation> <translation id="2326139988748364651">Dpi <ph name="RESOLUTION_VALUE" /></translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Mfumo</translation> <translation id="2740531572673183784">Sawa</translation> <translation id="2805756323405976993">Programu</translation> +<translation id="2862104018715411648">Weka hati yako kwenye kichanganuzi kisha uchague 'Changanua' ili uanze</translation> <translation id="2872961005593481000">Zima</translation> <translation id="2878387241690264070">Imetumia <ph name="RATE" /> ya chaji ndani ya sekunde <ph name="NUM_SECONDS" />.</translation> <translation id="3008341117444806826">ONYESHA UPYA</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Una uhakika kuwa ungependa kufuta historia yote ya kuchapisha? Kazi unazoendelea kuchapisha hazitafutwa.</translation> <translation id="3435738964857648380">Usalama</translation> <translation id="3456078764689556234">Imechapisha ukurasa wa <ph name="PRINTED_PAGES" /> kati ya <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Inachanganua ukurasa wa <ph name="PAGE_NUM" />. Asilimia <ph name="PERCENTAGE_VALUE" /> imekamilika.</translation> <translation id="3459509316159669723">Kuchapisha</translation> <translation id="3515615323037921860">Kazi za Kuchapisha</translation> <translation id="3527036260304016759">Haijakamilika - Hitilafu isiyojulikana</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">HALIJAFAULU</translation> <translation id="4176463684765177261">Imezimwa</translation> <translation id="4227825898293920515">Muda wa kutumia nenosiri utaisha baada ya <ph name="TIME" /></translation> +<translation id="4228041325992544252">Una GB <ph name="AVAILABLE_MEMORY" /> kati ya GB <ph name="TOTAL_MEMORY" />.</translation> <translation id="4238516577297848345">Hakuna kazi za kuchapisha zinazoendelea</translation> <translation id="4297501883039923494">Imesimama - Hitilafu isiyojulikana</translation> <translation id="4378373042927530923">Usitekeleze</translation> @@ -157,6 +163,7 @@ <translation id="5275828089655680674">Rudia Uchunguzi</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Hifadhi</translation> +<translation id="5318334351163689047">Maombi ya TCP ambayo hayakufaulu</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Chagua nenosiri jipya sasa</translation> <translation id="5333530671332546086">Hali ya ukurasa wa mwanzo isiyojulikana</translation> @@ -216,6 +223,7 @@ <translation id="6839141349259399400">Je, umeshindwa kuunganisha kwenye vichanganuzi?</translation> <translation id="6853312040151791195">Kasi ya kutumia chaji</translation> <translation id="6898743098396957679">Imeshindwa kukamilisha uchanganuzi</translation> +<translation id="6911383237894364323">Imeshindwa kuunganisha kwenye seva za maudhui</translation> <translation id="6957231940976260713">Jina la huduma</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> hudhibiti kifaa hiki na ina idhini ya kufikia shughuli zote za mtumiaji, zikiwemo kurasa za wavuti alizotembelea, manenosiri na anwani za barua pepe.</translation> <translation id="7143207342074048698">Inaunganisha</translation> @@ -232,6 +240,7 @@ <translation id="7502658306369382406">Anwani ya IPv6</translation> <translation id="7561454561030345039">Kitendo hiki kinadhibitiwa na msimamizi wako</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Pata maelezo zaidi katika Kituo cha Usaidizi</translation> <translation id="7648838807254605802">Muda mwingi wa kusubiri maombi ya HTTPS</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 236fefeb9..63cb3b1 100644 --- a/chromeos/strings/chromeos_strings_ta.xtb +++ b/chromeos/strings/chromeos_strings_ta.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS ரிசால்வர் இருப்பது</translation> <translation id="1743558184855585519">பேட்டரி அதன் வரம்பை அடைந்ததும் முழுவதுமாக உபயோகப்படுத்தப்பட்டதாகக் கருதப்படுகிறது</translation> <translation id="1792647875738159689">ஸ்கேன் செய்வதை ரத்துசெய்கிறது</translation> +<translation id="1851218745569890714">வீடியோ கான்ஃபிரன்ஸ்</translation> <translation id="1905710495812624430">அனுமதிக்கப்பட்ட அதிகபட்ச முயற்சிகளைக் கடந்துவிட்டீர்கள்.</translation> +<translation id="1908234395526491708">UDP கோரிக்கையை அனுப்ப முடியவில்லை</translation> <translation id="1930797645656624981">Chrome OS உள்ளீட்டு முறை சேவை</translation> <translation id="1947737735496445907">அச்சிடப்பட்டது</translation> <translation id="1979103255016296513">கடவுச்சொல்லை மாற்ற வேண்டும்</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">முதன்மைத் தேடல்</translation> <translation id="2080070583977670716">மேலும் அமைப்புகள்</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">வரிசையிலுள்ளது</translation> <translation id="2161394479394250669">அச்சுப் பணியை ரத்துசெய்</translation> <translation id="2224337661447660594">இணைய இணைப்பு இல்லை</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">அமைப்பு</translation> <translation id="2740531572673183784">சரி</translation> <translation id="2805756323405976993">ஆப்ஸ்</translation> +<translation id="2862104018715411648">ஸ்கேன் செய்ய, ஸ்கேனரில் ஆவணத்தை வைத்துவிட்டு ஸ்கேன் செய் என்பதைத் தேர்ந்தெடுக்கவும்</translation> <translation id="2872961005593481000">நிறுத்து</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" /> வினாடிகளில் <ph name="RATE" /> சார்ஜ் இறங்கியது.</translation> <translation id="3008341117444806826">புதுப்பி</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">இதுவரையிலான அச்சுப் பணிகள் அனைத்தையும் அழிக்கவா? செயல்பாட்டில் இருக்கும் அச்சுப் பணிகள் அழிக்கப்படாது.</translation> <translation id="3435738964857648380">பாதுகாப்பு</translation> <translation id="3456078764689556234">அச்சிடப்பட்ட பக்கங்கள்: <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">ஸ்கேன் செய்யப்படும் பக்கம்: <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% முடிந்தது.</translation> <translation id="3459509316159669723">அச்சிடல்</translation> <translation id="3515615323037921860">அச்சுப் பணிகள்</translation> <translation id="3527036260304016759">அறியப்படாத பிழை காரணமாக அச்சிட முடியவில்லை</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">தோல்வியடைந்தது</translation> <translation id="4176463684765177261">முடக்கப்பட்டது</translation> <translation id="4227825898293920515">கடவுச்சொல் காலாவதியாக இன்னும் <ph name="TIME" /></translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" />/<ph name="TOTAL_MEMORY" /> ஜி.பை. உள்ளது.</translation> <translation id="4238516577297848345">அச்சுப் பணி எதுவும் செயலில் இல்லை</translation> <translation id="4297501883039923494">அறியப்படாத பிழை காரணமாக அச்சிட முடியவில்லை</translation> <translation id="4378373042927530923">இயங்கவில்லை</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">வழக்கங்களை மீண்டும் இயக்கு</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">சேமி</translation> +<translation id="5318334351163689047">TCP கோரிக்கையை அனுப்ப முடியவில்லை</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">புதிய கடவுச்சொல்லை இப்போதே தேர்ந்தெடுக்கவும்</translation> <translation id="5333530671332546086">அறியப்படாத போர்டல் நிலை</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">ஸ்கேனர்களுடன் இணைக்க முடியவில்லையா?</translation> <translation id="6853312040151791195">சார்ஜ் இறங்கும் விகிதம்</translation> <translation id="6898743098396957679">ஸ்கேனிங்கை நிறைவுசெய்ய முடியவில்லை</translation> +<translation id="6911383237894364323">மீடியா சேவையகங்களுடன் இணைக்க முடியவில்லை</translation> <translation id="6957231940976260713">சேவைப் பெயர்</translation> <translation id="7028979494427204405">இந்தச் சாதனத்தை <ph name="MANAGER" /> நிர்வகிக்கிறது. பார்வையிட்ட இணையப்பக்கங்கள், கடவுச்சொற்கள், மின்னஞ்சல் உட்பட பயனரின் செயல்பாடு அனைத்திற்குமான அணுகலும் இதற்கு உள்ளது.</translation> <translation id="7143207342074048698">இணைத்தல்</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 முகவரி</translation> <translation id="7561454561030345039">இந்தச் செயல் உங்கள் நிர்வாகியால் நிர்வகிக்கப்படுகிறது</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">உதவி மையத்தில் மேலும் அறிக</translation> <translation id="7648838807254605802">HTTPS கோரிக்கைகள் அதிக நேரம் எடுக்கின்றன</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 52ccafe..cc48bae0 100644 --- a/chromeos/strings/chromeos_strings_th.xtb +++ b/chromeos/strings/chromeos_strings_th.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">มีรีโซลเวอร์ DNS</translation> <translation id="1743558184855585519">ระบบจะถือว่ามีการใช้แบตเตอรี่เมื่อถึงขีดจำกัด</translation> <translation id="1792647875738159689">กำลังยกเลิกการสแกน</translation> +<translation id="1851218745569890714">การประชุมทางวิดีโอ</translation> <translation id="1905710495812624430">ลองทำเกินจำนวนครั้งที่กำหนดไว้แล้ว</translation> +<translation id="1908234395526491708">ขอ UDP ไม่สำเร็จ</translation> <translation id="1930797645656624981">บริการวิธีการป้อนข้อมูลของ Chrome OS</translation> <translation id="1947737735496445907">พิมพ์แล้ว</translation> <translation id="1979103255016296513">เลยเวลาเปลี่ยนรหัสผ่านแล้ว</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Prime Search</translation> <translation id="2080070583977670716">การตั้งค่าเพิ่มเติม</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">อยู่ในคิว</translation> <translation id="2161394479394250669">ยกเลิกงานพิมพ์</translation> <translation id="2224337661447660594">ไม่มีอินเทอร์เน็ต</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">ระบบ</translation> <translation id="2740531572673183784">ตกลง</translation> <translation id="2805756323405976993">แอป</translation> +<translation id="2862104018715411648">วางเอกสารบนเครื่องสแกนและเลือก "สแกน" เพื่อเริ่มต้น</translation> <translation id="2872961005593481000">ปิด</translation> <translation id="2878387241690264070">คายประจุ <ph name="RATE" /> ใน <ph name="NUM_SECONDS" /> วินาที</translation> <translation id="3008341117444806826">รีเฟรช</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">คุณแน่ใจไหมว่าต้องการล้างประวัติการพิมพ์ทั้งหมด ทั้งนี้ ระบบจะไม่ล้างงานพิมพ์ที่กำลังดำเนินอยู่</translation> <translation id="3435738964857648380">ความปลอดภัย</translation> <translation id="3456078764689556234">พิมพ์แล้ว <ph name="PRINTED_PAGES" /> จาก <ph name="TOTAL_PAGES" /> หน้า</translation> +<translation id="345898999683440380">กำลังสแกนหน้า <ph name="PAGE_NUM" /> เสร็จแล้ว <ph name="PERCENTAGE_VALUE" />%</translation> <translation id="3459509316159669723">การพิมพ์</translation> <translation id="3515615323037921860">งานพิมพ์</translation> <translation id="3527036260304016759">ไม่สำเร็จ - ข้อผิดพลาดที่ไม่รู้จัก</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">ไม่สำเร็จ</translation> <translation id="4176463684765177261">ปิดการทำงาน</translation> <translation id="4227825898293920515">รหัสผ่านจะหมดอายุในอีก <ph name="TIME" /></translation> +<translation id="4228041325992544252">ใช้ได้ <ph name="AVAILABLE_MEMORY" /> GB จาก <ph name="TOTAL_MEMORY" /> GB</translation> <translation id="4238516577297848345">ไม่มีงานที่กำลังพิมพ์</translation> <translation id="4297501883039923494">หยุดพิมพ์ - ข้อผิดพลาดที่ไม่รู้จัก</translation> <translation id="4378373042927530923">ไม่ทำงาน</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">เรียกใช้กิจวัตรอีกครั้ง</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">บันทึก</translation> +<translation id="5318334351163689047">ขอ TCP ไม่สำเร็จ</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">เลือกรหัสผ่านใหม่เลย</translation> <translation id="5333530671332546086">สถานะพอร์ทัลที่ไม่รู้จัก</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">หากเชื่อมต่อกับเครื่องสแกนไม่ได้</translation> <translation id="6853312040151791195">อัตราการคายประจุ</translation> <translation id="6898743098396957679">สแกนไม่สำเร็จ</translation> +<translation id="6911383237894364323">เชื่อมต่อเซิร์ฟเวอร์สื่อไม่ได้</translation> <translation id="6957231940976260713">ชื่อบริการ</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> จัดการอุปกรณ์นี้และมีสิทธิ์เข้าถึงกิจกรรมทั้งหมดของผู้ใช้ ซึ่งรวมถึงหน้าเว็บที่เข้าชม รหัสผ่าน และอีเมล</translation> <translation id="7143207342074048698">กำลังเชื่อมต่อ</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">ที่อยู่ IPv6</translation> <translation id="7561454561030345039">การดำเนินการนี้จัดการโดยผู้ดูแลระบบ</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">ดูข้อมูลเพิ่มเติมในศูนย์ช่วยเหลือ</translation> <translation id="7648838807254605802">เวลาในการตอบสนองของ HTTPS สูง</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 4cf6acb8..1cc17cd 100644 --- a/chromeos/strings/chromeos_strings_tr.xtb +++ b/chromeos/strings/chromeos_strings_tr.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS Çözümleyici Varlığı</translation> <translation id="1743558184855585519">Pil, şarj döngüsü sınırına ulaştığında ömrünü tamamladığı kabul edilir</translation> <translation id="1792647875738159689">Tarama iptal ediliyor</translation> +<translation id="1851218745569890714">Video Konferansı</translation> <translation id="1905710495812624430">İzin verilen maksimum deneme sayısı aşıldı.</translation> +<translation id="1908234395526491708">UDP istek hataları</translation> <translation id="1930797645656624981">Chrome OS Giriş Yöntemi Hizmeti</translation> <translation id="1947737735496445907">Yazdırıldı</translation> <translation id="1979103255016296513">Şifre değişikliği zamanı geçti</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Birincil arama</translation> <translation id="2080070583977670716">Daha fazla ayar</translation> <translation id="2141644705054017895">%<ph name="PERCENTAGE_VALUE" /></translation> +<translation id="2157959690810728433">SIRAYA ALINDI</translation> <translation id="2161394479394250669">Yazdırma işini iptal et</translation> <translation id="2224337661447660594">İnternet bağlantısı yok</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Sistem</translation> <translation id="2740531572673183784">Tamam</translation> <translation id="2805756323405976993">Uygulamalar</translation> +<translation id="2862104018715411648">Dokümanınızı tarayıcıya yerleştirin ve başlamak için Tara'yı seçin</translation> <translation id="2872961005593481000">Kapat</translation> <translation id="2878387241690264070">Şarj, <ph name="NUM_SECONDS" /> saniye içinde <ph name="RATE" /> boşaldı.</translation> <translation id="3008341117444806826">YENİLE</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Tüm yazdırma geçmişini temizlemek istediğinizden emin misiniz? Devam eden yazdırma işleriniz silinmez.</translation> <translation id="3435738964857648380">Güvenlik</translation> <translation id="3456078764689556234">Yazdırılan sayfa: <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" />. sayfa taranıyor %<ph name="PERCENTAGE_VALUE" /> tamamlandı</translation> <translation id="3459509316159669723">Yazdırma</translation> <translation id="3515615323037921860">Yazdırma İşleri</translation> <translation id="3527036260304016759">İşlem başarısız - Bilinmeyen hata</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">BAŞARISIZ</translation> <translation id="4176463684765177261">Devre dışı</translation> <translation id="4227825898293920515">Şifrenin süresi <ph name="TIME" /> içinde doluyor</translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" />/<ph name="TOTAL_MEMORY" /> GB mevcut.</translation> <translation id="4238516577297848345">Devam eden bir yazdırma işi yok</translation> <translation id="4297501883039923494">Durduruldu - Bilinmeyen hata</translation> <translation id="4378373042927530923">Çalıştırılmadı</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Rutinleri Tekrar Çalıştır</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Kaydet</translation> +<translation id="5318334351163689047">TCP istek hataları</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Yeni bir tane seçin</translation> <translation id="5333530671332546086">Bilinmeyen portal durumu</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Tarayıcılara bağlanamıyor musunuz?</translation> <translation id="6853312040151791195">Şarjın boşalma hızı</translation> <translation id="6898743098396957679">Tarama tamamlanamadı</translation> +<translation id="6911383237894364323">Medya sunucularına bağlanılamadı</translation> <translation id="6957231940976260713">Hizmet adı</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> bu cihazı yönetir ve ziyaret edilen web sayfaları, şifreler ve e-posta dahil tüm kullanıcı etkinliğine erişebilir.</translation> <translation id="7143207342074048698">Bağlanıyor</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 adresi</translation> <translation id="7561454561030345039">Bu işlem, yöneticiniz tarafından yönetilir.</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Yardım Merkezi'nde daha fazla bilgi edinin</translation> <translation id="7648838807254605802">Yüksek HTTPS gecikmesi</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 65eff0e..55fd0026 100644 --- a/chromeos/strings/chromeos_strings_uk.xtb +++ b/chromeos/strings/chromeos_strings_uk.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Є резолвер DNS</translation> <translation id="1743558184855585519">Після максимальної кількості циклів акумулятор вважається відпрацьованим</translation> <translation id="1792647875738159689">Сканування скасовується</translation> +<translation id="1851218745569890714">Відеоконференції</translation> <translation id="1905710495812624430">Перевищено максимальну кількість дозволених спроб.</translation> +<translation id="1908234395526491708">Не виконано запити за протоколом UDP</translation> <translation id="1930797645656624981">Сервіс методів введення в ОС Chrome</translation> <translation id="1947737735496445907">Надруковано</translation> <translation id="1979103255016296513">Час для зміни пароля минув</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Пошук Prime</translation> <translation id="2080070583977670716">Більше налаштувань</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">У ЧЕРЗІ</translation> <translation id="2161394479394250669">Скасувати завдання друку</translation> <translation id="2224337661447660594">Немає Інтернету</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Система</translation> <translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Додатки</translation> +<translation id="2862104018715411648">Щоб почати, покладіть документ і виберіть опцію "Сканувати"</translation> <translation id="2872961005593481000">Завершити роботу</translation> <translation id="2878387241690264070">Акумулятор розрядився на <ph name="RATE" /> за <ph name="NUM_SECONDS" /> с.</translation> <translation id="3008341117444806826">ОНОВИТИ</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Видалити всю історію друку? Поточні завдання друку збережуться.</translation> <translation id="3435738964857648380">Безпека</translation> <translation id="3456078764689556234">Надруковано сторінку <ph name="PRINTED_PAGES" /> з <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Сканування сторінки <ph name="PAGE_NUM" />. Виконано <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">Друк</translation> <translation id="3515615323037921860">Завдання друку</translation> <translation id="3527036260304016759">Не надруковано – невідома помилка</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">НЕ ПРОЙДЕНО</translation> <translation id="4176463684765177261">Вимкнено</translation> <translation id="4227825898293920515">Термін дії пароля закінчиться через <ph name="TIME" /></translation> +<translation id="4228041325992544252">Доступно <ph name="AVAILABLE_MEMORY" /> з <ph name="TOTAL_MEMORY" /> ГБ.</translation> <translation id="4238516577297848345">Немає активних завдань друку</translation> <translation id="4297501883039923494">Зупинено – невідома помилка</translation> <translation id="4378373042927530923">Не виконано</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Повторити програми</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Зберегти</translation> +<translation id="5318334351163689047">Не виконано запити за протоколом TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Виберіть новий зараз</translation> <translation id="5333530671332546086">Невідомий стан порталу</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Не вдається підключитися до сканерів?</translation> <translation id="6853312040151791195">Швидкість розряджання</translation> <translation id="6898743098396957679">Не вдалося зісканувати</translation> +<translation id="6911383237894364323">Не вдалося підключитися до медіасерверів</translation> <translation id="6957231940976260713">Назва служби</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> керує цим пристроєм і має доступ до всіх дій користувача, зокрема відвіданих веб-сторінок, паролів і електронних листів.</translation> <translation id="7143207342074048698">Під’єднання</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Адреса IPv6</translation> <translation id="7561454561030345039">Цією дією керує адміністратор</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Дізнатися більше в Довідковому центрі</translation> <translation id="7648838807254605802">велика затримка HTTPS</translation> <translation id="7658239707568436148">Скасувати</translation> <translation id="7690294790491645610">Підтвердьте новий пароль</translation>
diff --git a/chromeos/strings/chromeos_strings_ur.xtb b/chromeos/strings/chromeos_strings_ur.xtb index b741c72..215649e 100644 --- a/chromeos/strings/chromeos_strings_ur.xtb +++ b/chromeos/strings/chromeos_strings_ur.xtb
@@ -135,6 +135,7 @@ <translation id="4832079907277790330">فائلز ایپ میں فولڈر منتخب کریں...</translation> <translation id="4835901797422965222">کوئی فعال نیٹ ورک نہیں</translation> <translation id="4848429997038228357">جاری ہے</translation> +<translation id="4861758251032006121">{ATTEMPTS_LEFT,plural, =1{<ph name="ERROR_MESSAGE" /> {0} کوشش باقی ہے}other{<ph name="ERROR_MESSAGE" /> {0} کوششیں باقی ہیں}}</translation> <translation id="4890353053343094602">فوری طور پر نیا پاس ورڈ منتخب کریں</translation> <translation id="4891842000192098784">اسٹریس</translation> <translation id="4917889632206600977">رک گیا - کاغذ ختم ہو گیا</translation> @@ -166,6 +167,7 @@ <translation id="5431825016875453137">OpenVPN / L2TP</translation> <translation id="5457599981699367932">مہمان کے بطور براؤز کریں</translation> <translation id="54609108002486618">نظم کردہ</translation> +<translation id="5478289488939624992">{ATTEMPTS_LEFT,plural, =1{{0} کوشش باقی ہے}other{{0} کوششیں باقی ہیں}}</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5635169860413004179">رپورٹ دیکھیں</translation> <translation id="5670702108860320605">BSSID</translation>
diff --git a/chromeos/strings/chromeos_strings_uz.xtb b/chromeos/strings/chromeos_strings_uz.xtb index 7d092e24..278faee2 100644 --- a/chromeos/strings/chromeos_strings_uz.xtb +++ b/chromeos/strings/chromeos_strings_uz.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS vositasi mavjud</translation> <translation id="1743558184855585519">Batareya ishlatish chekloviga yetganda eskirgan hisoblanadi</translation> <translation id="1792647875738159689">Skanerlash bekor qilinmoqda</translation> +<translation id="1851218745569890714">Videokonferensiya</translation> <translation id="1905710495812624430">Urinishlar soni cheklovdan oshib ketdi.</translation> +<translation id="1908234395526491708">Bajarilmagan UDP soʻrovlari</translation> <translation id="1930797645656624981">Chrome OS matn kiritish xizmati</translation> <translation id="1947737735496445907">Chop etildi</translation> <translation id="1979103255016296513">Parolni almashtirish muddati tugadi</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Oddiy sonlarni qidirish</translation> <translation id="2080070583977670716">Kengaytirilgan sozlamalar</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">NAVBATDA</translation> <translation id="2161394479394250669">Chop etish vazifasini bekor qilish</translation> <translation id="2224337661447660594">Internet yo‘q</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Tizim</translation> <translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Ilovalar</translation> +<translation id="2862104018715411648">Hujjatni skanerga joylang va boshlash uchun Skanerlash tugmasini bosing</translation> <translation id="2872961005593481000">Ishni tamomlash</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" /> soniyada <ph name="RATE" /> quvvat sarflandi.</translation> <translation id="3008341117444806826">YANGILASH</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Chop etish tarixi tozalansinmi? Joriy chop etish vazifalari oʻchirib tashlanmaydi.</translation> <translation id="3435738964857648380">Xavfsizlik</translation> <translation id="3456078764689556234">Sahifa chop etildi: <ph name="PRINTED_PAGES" /> / <ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380"><ph name="PAGE_NUM" /> ta sahifa skanerlandi. <ph name="PERCENTAGE_VALUE" />% tugallandi.</translation> <translation id="3459509316159669723">Chop etish</translation> <translation id="3515615323037921860">Chop etish vazifalari</translation> <translation id="3527036260304016759">Bajarilmadi - Notanish xato</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">BAJARILMADI</translation> <translation id="4176463684765177261">O‘chirib qo‘yilgan</translation> <translation id="4227825898293920515">Parol muddati tugashiga <ph name="TIME" /> qoldi</translation> +<translation id="4228041325992544252"><ph name="AVAILABLE_MEMORY" />/<ph name="TOTAL_MEMORY" /> GB joy bor.</translation> <translation id="4238516577297848345">Hozir hech nima chop etilmayapti</translation> <translation id="4297501883039923494">Toʻxtatildi – Notanish xato</translation> <translation id="4378373042927530923">Ishga tushmadi</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Dasturlarni qayta bajarish</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Saqlash</translation> +<translation id="5318334351163689047">Bajarilmagan TCP soʻrovlari</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Hoziroq yangi parol tanlang</translation> <translation id="5333530671332546086">Portal holati noaniq</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Skanerlarga ulanmadimi?</translation> <translation id="6853312040151791195">Quvvat sarflanishi tezligi</translation> <translation id="6898743098396957679">Skanerlash yakunlanmadi</translation> +<translation id="6911383237894364323">Media serverlarga ulana olmadi</translation> <translation id="6957231940976260713">Xizmat nomi</translation> <translation id="7028979494427204405">Bu qurilma va uning foydalanuvchilari harakatlari, ochilgan sahifalar, parollar va emaillar <ph name="MANAGER" /> domenida boshqariladi.</translation> <translation id="7143207342074048698">Ulanmoqda</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 manzil</translation> <translation id="7561454561030345039">Bu sozlama administrator tomonidan boshqariladi</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Yordam markazi orqali batafsil</translation> <translation id="7648838807254605802">HTTPS kechikishi yuqori</translation> <translation id="7658239707568436148">Bekor qilish</translation> <translation id="7690294790491645610">Yangi parolni tasdiqlang.</translation>
diff --git a/chromeos/strings/chromeos_strings_vi.xtb b/chromeos/strings/chromeos_strings_vi.xtb index 4383d46..ec2f1745 100644 --- a/chromeos/strings/chromeos_strings_vi.xtb +++ b/chromeos/strings/chromeos_strings_vi.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Tồn tại trình phân giải hệ thống tên miền (DNS)</translation> <translation id="1743558184855585519">Pin được xem là hết thời gian sử dụng sau khi đạt đến giới hạn này</translation> <translation id="1792647875738159689">Đang hủy quá trình quét</translation> +<translation id="1851218745569890714">Hội nghị truyền hình</translation> <translation id="1905710495812624430">Đã vượt quá số lần thử tối đa được phép.</translation> +<translation id="1908234395526491708">Không gửi được yêu cầu UDP</translation> <translation id="1930797645656624981">Dịch vụ cung cấp phương thức nhập trên Chrome OS</translation> <translation id="1947737735496445907">Đã in</translation> <translation id="1979103255016296513">Đã quá hạn thay đổi mật khẩu</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Tìm kiếm quan trọng</translation> <translation id="2080070583977670716">Cài đặt khác</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">ĐÃ XẾP VÀO HÀNG ĐỢI</translation> <translation id="2161394479394250669">Hủy lệnh in</translation> <translation id="2224337661447660594">Không có Internet</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Hệ thống</translation> <translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Ứng dụng</translation> +<translation id="2862104018715411648">Đặt tài liệu lên máy quét rồi chọn Quét để bắt đầu</translation> <translation id="2872961005593481000">Tắt</translation> <translation id="2878387241690264070">Đã xả <ph name="RATE" /> pin sau <ph name="NUM_SECONDS" /> giây.</translation> <translation id="3008341117444806826">LÀM MỚI</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Bạn có chắc chắn muốn xóa toàn bộ lịch sử in không? Các lệnh in đang thực hiện sẽ không bị xóa.</translation> <translation id="3435738964857648380">Bảo mật</translation> <translation id="3456078764689556234">Đã in trang <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Đang quét trang <ph name="PAGE_NUM" />. Ðã quét được <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">In</translation> <translation id="3515615323037921860">Lệnh in</translation> <translation id="3527036260304016759">Không thành công – Lỗi không xác định</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">KHÔNG THÀNH CÔNG</translation> <translation id="4176463684765177261">Đã tắt</translation> <translation id="4227825898293920515">Mật khẩu sẽ hết hạn sau <ph name="TIME" /></translation> +<translation id="4228041325992544252">Còn <ph name="AVAILABLE_MEMORY" /> GB/<ph name="TOTAL_MEMORY" /> GB.</translation> <translation id="4238516577297848345">Không có lệnh in nào đang xử lý</translation> <translation id="4297501883039923494">Đã dừng – Lỗi không xác định</translation> <translation id="4378373042927530923">Không chạy</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Chạy lại quy trình</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">Lưu</translation> +<translation id="5318334351163689047">Không gửi được yêu cầu TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Chọn ngay một mật khẩu mới</translation> <translation id="5333530671332546086">Trạng thái cổng không xác định</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Không thể kết nối với các máy quét?</translation> <translation id="6853312040151791195">Tốc độ xả pin</translation> <translation id="6898743098396957679">Không thể hoàn tất quy trình quét</translation> +<translation id="6911383237894364323">Không thể kết nối với máy chủ phương tiện</translation> <translation id="6957231940976260713">Tên dịch vụ</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> quản lý thiết bị này và có quyền truy cập vào tất cả hoạt động của người dùng, bao gồm cả các trang web đã truy cập, mật khẩu và email.</translation> <translation id="7143207342074048698">Đang kết nối</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Địa chỉ IPv6</translation> <translation id="7561454561030345039">Quản trị viên của bạn quản lý thao tác này</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Tìm hiểu thêm trong Trung tâm trợ giúp</translation> <translation id="7648838807254605802">Yêu cầu HTTPS có độ trễ cao</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-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb index a16e27f..859bd64c 100644 --- a/chromeos/strings/chromeos_strings_zh-HK.xtb +++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS 解析器存在</translation> <translation id="1743558184855585519">當電池到達上限時,即表示已耗盡電力</translation> <translation id="1792647875738159689">取消掃瞄中</translation> +<translation id="1851218745569890714">視像會議</translation> <translation id="1905710495812624430">允許的嘗試次數超過上限。</translation> +<translation id="1908234395526491708">UDP 要求失敗</translation> <translation id="1930797645656624981">Chrome 作業系統輸入方法服務</translation> <translation id="1947737735496445907">已列印</translation> <translation id="1979103255016296513">變更密碼已逾期</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">尖峰搜尋</translation> <translation id="2080070583977670716">顯示更多設定</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">已排入序列</translation> <translation id="2161394479394250669">取消列印工作</translation> <translation id="2224337661447660594">沒有互聯網</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">系統</translation> <translation id="2740531572673183784">確定</translation> <translation id="2805756323405976993">應用程式</translation> +<translation id="2862104018715411648">將文件放到掃瞄器上,並選取 [掃瞄] 以開始掃瞄</translation> <translation id="2872961005593481000">關閉</translation> <translation id="2878387241690264070">已在 <ph name="NUM_SECONDS" /> 秒內放電 <ph name="RATE" />。</translation> <translation id="3008341117444806826">更新</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">您確定要清除所有列印記錄嗎?系統不會清除進行中的列印工作。</translation> <translation id="3435738964857648380">安全性</translation> <translation id="3456078764689556234">印咗 <ph name="PRINTED_PAGES" /> 頁,總共有 <ph name="TOTAL_PAGES" /> 頁。</translation> +<translation id="345898999683440380">掃瞄緊第 <ph name="PAGE_NUM" /> 頁。完成咗 <ph name="PERCENTAGE_VALUE" />%。</translation> <translation id="3459509316159669723">列印</translation> <translation id="3515615323037921860">列印工作</translation> <translation id="3527036260304016759">失敗 - 不明錯誤</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">失敗</translation> <translation id="4176463684765177261">已停用</translation> <translation id="4227825898293920515">密碼在 <ph name="TIME" />後到期</translation> +<translation id="4228041325992544252">可用空間:<ph name="AVAILABLE_MEMORY" /> GB (共 <ph name="TOTAL_MEMORY" /> GB)。</translation> <translation id="4238516577297848345">沒有進行中的列印工作</translation> <translation id="4297501883039923494">已停止 - 不明錯誤</translation> <translation id="4378373042927530923">未執行</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">重新執行日常安排</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">儲存</translation> +<translation id="5318334351163689047">TCP 要求失敗</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />、<ph name="PRINTER_NAME" />、<ph name="CREATION_TIME" />、<ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">立即選擇新密碼</translation> <translation id="5333530671332546086">入口網站狀態不明</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">無法連接至掃瞄器嗎?</translation> <translation id="6853312040151791195">放電率</translation> <translation id="6898743098396957679">無法完成掃瞄</translation> +<translation id="6911383237894364323">無法連線至媒體伺服器</translation> <translation id="6957231940976260713">服務名稱</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> 會管理此裝置並可存取所有使用者活動,包括網頁瀏覽記錄、密碼和電郵。</translation> <translation id="7143207342074048698">正在連接</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 位址</translation> <translation id="7561454561030345039">此操作由管理員管理</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">前往說明中心瞭解詳情</translation> <translation id="7648838807254605802">HTTPS 延遲時間長</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 90564c0..b206307 100644 --- a/chromeos/strings/chromeos_strings_zh-TW.xtb +++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">DNS 解析器存在</translation> <translation id="1743558184855585519">一旦電池的充電循環次數達到上限,即表示電池壽命已盡</translation> <translation id="1792647875738159689">正在取消掃描</translation> +<translation id="1851218745569890714">視訊會議</translation> <translation id="1905710495812624430">超過嘗試次數上限。</translation> +<translation id="1908234395526491708">UDP 要求失敗</translation> <translation id="1930797645656624981">Chrome 作業系統輸入法服務</translation> <translation id="1947737735496445907">已列印</translation> <translation id="1979103255016296513">已超過密碼變更期限</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">尖峰搜尋</translation> <translation id="2080070583977670716">顯示更多設定</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">已排入佇列</translation> <translation id="2161394479394250669">取消列印工作</translation> <translation id="2224337661447660594">沒有網際網路連線</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">系統</translation> <translation id="2740531572673183784">確定</translation> <translation id="2805756323405976993">應用程式</translation> +<translation id="2862104018715411648">將文件放到掃描器上,並選取 [掃描] 即可開始掃描</translation> <translation id="2872961005593481000">關閉</translation> <translation id="2878387241690264070">在 <ph name="NUM_SECONDS" /> 秒內放電 <ph name="RATE" />。</translation> <translation id="3008341117444806826">更新</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">確定要清除所有列印記錄嗎?系統不會清除進行中的列印工作。</translation> <translation id="3435738964857648380">安全性</translation> <translation id="3456078764689556234">已列印 <ph name="PRINTED_PAGES" /> 頁 (共 <ph name="TOTAL_PAGES" /> 頁)。</translation> +<translation id="345898999683440380">正在掃描第 <ph name="PAGE_NUM" /> 頁,目前已完成 <ph name="PERCENTAGE_VALUE" />%。</translation> <translation id="3459509316159669723">列印</translation> <translation id="3515615323037921860">列印工作</translation> <translation id="3527036260304016759">失敗 - 不明的錯誤</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">失敗</translation> <translation id="4176463684765177261">已停用</translation> <translation id="4227825898293920515">密碼將在 <ph name="TIME" />後到期</translation> +<translation id="4228041325992544252">可用空間:<ph name="AVAILABLE_MEMORY" /> GB (共 <ph name="TOTAL_MEMORY" /> GB)。</translation> <translation id="4238516577297848345">沒有任何進行中的列印工作</translation> <translation id="4297501883039923494">已停止 - 不明的錯誤</translation> <translation id="4378373042927530923">未執行</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">返回日常診斷</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5317780077021120954">儲存</translation> +<translation id="5318334351163689047">TCP 要求失敗</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />,<ph name="PRINTER_NAME" />,<ph name="CREATION_TIME" />,<ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">立即選擇新密碼</translation> <translation id="5333530671332546086">入口狀態不明</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">無法連線至掃描器嗎?</translation> <translation id="6853312040151791195">放電率</translation> <translation id="6898743098396957679">無法完成掃描</translation> +<translation id="6911383237894364323">無法連線至媒體伺服器</translation> <translation id="6957231940976260713">服務名稱</translation> <translation id="7028979494427204405"><ph name="MANAGER" /> 管理這個裝置,且可存取所有使用者活動,包括網頁造訪記錄、密碼和電子郵件。</translation> <translation id="7143207342074048698">連線中</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">IPv6 位址</translation> <translation id="7561454561030345039">這個動作是由系統管理員管理</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">前往說明中心瞭解詳情</translation> <translation id="7648838807254605802">高 HTTPS 延遲</translation> <translation id="7658239707568436148">取消</translation> <translation id="7690294790491645610">確認新密碼</translation>
diff --git a/chromeos/strings/chromeos_strings_zu.xtb b/chromeos/strings/chromeos_strings_zu.xtb index 4190ee2..6f5aed0 100644 --- a/chromeos/strings/chromeos_strings_zu.xtb +++ b/chromeos/strings/chromeos_strings_zu.xtb
@@ -37,7 +37,9 @@ <translation id="1706391837335750954">Isixazululi se-DNS Sikhona</translation> <translation id="1743558184855585519">Ibhethri licatshangelwa njengelidlekile lapho lifinyelela umkhawulo</translation> <translation id="1792647875738159689">Ikhansela ukuskena</translation> +<translation id="1851218745569890714">Inkomfa ngevidiyo</translation> <translation id="1905710495812624430">Imizamo emikhulu evunyelwe idluliwe.</translation> +<translation id="1908234395526491708">Ukwehluleka kwesicelo se-UDP</translation> <translation id="1930797645656624981">Isevisi yendlela yokufaka kwe-Chrome OS</translation> <translation id="1947737735496445907">Kuphrintiwe</translation> <translation id="1979103255016296513">Ukushintsha iphasiwedi kudlulelwe isikhathi</translation> @@ -46,6 +48,7 @@ <translation id="2008685064673031089">Usesho oluphakeme</translation> <translation id="2080070583977670716">Ezinye izilungiselelo</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> +<translation id="2157959690810728433">KUSEMUGQENI</translation> <translation id="2161394479394250669">Khansela umsebenzi wokuphrinta</translation> <translation id="2224337661447660594">Ayikho i-inthanethi</translation> <translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> @@ -62,6 +65,7 @@ <translation id="2620436844016719705">Isistimu</translation> <translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Izinhlelo zokusebenza</translation> +<translation id="2862104018715411648">Beka idokhumenti yakho kuskena bese ukhetha okuthi Skena ukuze uqalise</translation> <translation id="2872961005593481000">Cisha</translation> <translation id="2878387241690264070">Iyekiswe ukushaja ngokungu-<ph name="RATE" /> kumasekhondi angu-<ph name="NUM_SECONDS" />.</translation> <translation id="3008341117444806826">VUSELELA</translation> @@ -84,6 +88,7 @@ <translation id="3369013195428705271">Uqinisekile ukuthi ufuna ukusula wonke umlando wokuphrinta? Imisebenzi yakho yokuphrinta eqhubekayo ngeke isulwe.</translation> <translation id="3435738964857648380">Ukuvikela</translation> <translation id="3456078764689556234">Iphrinte ikhasi elingu-<ph name="PRINTED_PAGES" /> kwangu-<ph name="TOTAL_PAGES" />.</translation> +<translation id="345898999683440380">Iskena ikhasi <ph name="PAGE_NUM" />. Kuqedwe <ph name="PERCENTAGE_VALUE" />%.</translation> <translation id="3459509316159669723">Iyaphrinta</translation> <translation id="3515615323037921860">Imisebenzi yokuphrinta</translation> <translation id="3527036260304016759">Yehlukile - Iphutha elingaziwa</translation> @@ -106,6 +111,7 @@ <translation id="4170700058716978431">YEHLULEKILE</translation> <translation id="4176463684765177261">Kukhutshaziwe</translation> <translation id="4227825898293920515">Iphasiwedi iphelelwa isikhathi ngo-<ph name="TIME" /></translation> +<translation id="4228041325992544252">Kuno-<ph name="AVAILABLE_MEMORY" /> GB kokungu-<ph name="TOTAL_MEMORY" /> GB otholakalayo.</translation> <translation id="4238516577297848345">Ayikho imisebenzi yokuphrinta eqhubekayo</translation> <translation id="4297501883039923494">Imile - Iphutha elingaziwa</translation> <translation id="4378373042927530923">Akuqaliswanga</translation> @@ -158,6 +164,7 @@ <translation id="5275828089655680674">Sebenzisa kabusha Imijikelezo</translation> <translation id="5286252187236914003">I-L2TP/IPsec</translation> <translation id="5317780077021120954">Londoloza</translation> +<translation id="5318334351163689047">Ukwehluleka kwesicelo se-TCP</translation> <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation> <translation id="5332948983412042822">Khetha elisha elilodwa manje</translation> <translation id="5333530671332546086">Isimo sephothali esingaziwa</translation> @@ -217,6 +224,7 @@ <translation id="6839141349259399400">Awukwazi ukuxhuma kuzikena?</translation> <translation id="6853312040151791195">Isilinganisela sokuyeka ukushaja</translation> <translation id="6898743098396957679">Ayikwazanga ukuqeda ukuskena</translation> +<translation id="6911383237894364323">Ayikwazi ukuxhuma kumaseva wemidiya</translation> <translation id="6957231940976260713">Igama le sevisi</translation> <translation id="7028979494427204405">I-<ph name="MANAGER" /> iphatha le divayisi futhi inokufinyelela kuwo wonke umsebenzi womsebenzisi, kufaka phakathi amakhasi ewebhu avakashelwe, amaphasiwedi, ne-imeyili.</translation> <translation id="7143207342074048698">Iyaxhuma</translation> @@ -233,6 +241,7 @@ <translation id="7502658306369382406">Ikheli le-IPv^</translation> <translation id="7561454561030345039">Lesi senzo siphethwe umlawuli wakho</translation> <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> +<translation id="7620771111601174153">Funda kabanzi Esikhungweni sosizo</translation> <translation id="7648838807254605802">Ukubambezeleka okuphezulu kwe-HTTPS</translation> <translation id="7658239707568436148">Khansela</translation> <translation id="7690294790491645610">Qinisekisa iphasiwedi entsha</translation>
diff --git a/components/browser_ui/display_cutout/OWNERS b/components/browser_ui/display_cutout/OWNERS index 70313512..2d28246 100644 --- a/components/browser_ui/display_cutout/OWNERS +++ b/components/browser_ui/display_cutout/OWNERS
@@ -1,2 +1 @@ -beccahughes@chromium.org mlamouri@chromium.org
diff --git a/components/component_updater/component_updater_service.h b/components/component_updater/component_updater_service.h index 2c9bf5a..9de20a6 100644 --- a/components/component_updater/component_updater_service.h +++ b/components/component_updater/component_updater_service.h
@@ -172,8 +172,7 @@ friend class ::PluginObserver; friend class SwReporterOnDemandFetcher; friend class SodaComponentInstallerPolicy; - friend class SodaEnUsComponentInstallerPolicy; - friend class SodaJaJpComponentInstallerPolicy; + friend class SodaLanguagePackComponentInstallerPolicy; #if BUILDFLAG(IS_CHROMEOS_ASH) friend class CrOSComponentInstaller; #endif // BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/components/crash/core/app/crashpad_linux.cc b/components/crash/core/app/crashpad_linux.cc index 8e020bf..7a8c37c69 100644 --- a/components/crash/core/app/crashpad_linux.cc +++ b/components/crash/core/app/crashpad_linux.cc
@@ -121,7 +121,7 @@ // to ChromeOS's /sbin/crash_reporter which in turn passes the dump to // crash_sender which handles the upload. std::string url; -#if !BUILDFLAG(IS_CHROMEOS_ASH) +#if !(BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)) url = crash_reporter_client->GetUploadUrl(); #else url = std::string(); @@ -157,7 +157,7 @@ // contain these annotations. arguments.push_back("--monitor-self-annotation=ptype=crashpad-handler"); -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) arguments.push_back("--use-cros-crash-reporter"); if (crash_reporter_client->IsRunningUnattended()) {
diff --git a/components/dom_distiller/core/BUILD.gn b/components/dom_distiller/core/BUILD.gn index 3c60b0d61..c03dbc9 100644 --- a/components/dom_distiller/core/BUILD.gn +++ b/components/dom_distiller/core/BUILD.gn
@@ -76,7 +76,10 @@ "dom_distiller_service_android.h", "url_utils_android.cc", ] - deps += [ ":jni_headers" ] + deps += [ + ":jni_headers", + "//url:gurl_android", + ] } }
diff --git a/components/dom_distiller/core/android/java/src/org/chromium/components/dom_distiller/core/DomDistillerUrlUtils.java b/components/dom_distiller/core/android/java/src/org/chromium/components/dom_distiller/core/DomDistillerUrlUtils.java index a0caff3..f16b2d60 100644 --- a/components/dom_distiller/core/android/java/src/org/chromium/components/dom_distiller/core/DomDistillerUrlUtils.java +++ b/components/dom_distiller/core/android/java/src/org/chromium/components/dom_distiller/core/DomDistillerUrlUtils.java
@@ -38,7 +38,7 @@ @Deprecated public static String getOriginalUrlFromDistillerUrl(String url) { if (TextUtils.isEmpty(url)) return url; - return DomDistillerUrlUtilsJni.get().getOriginalUrlFromDistillerUrl(url); + return DomDistillerUrlUtilsJni.get().getOriginalUrlFromDistillerUrl(url).getSpec(); } /** @@ -47,8 +47,8 @@ * @param url The current viewer URL. * @return the URL of the original page. */ - public static String getOriginalUrlFromDistillerUrl(GURL url) { - if (url.isEmpty()) return url.getSpec(); + public static GURL getOriginalUrlFromDistillerUrl(GURL url) { + if (url.isEmpty()) return url; return DomDistillerUrlUtilsJni.get().getOriginalUrlFromDistillerUrl(url.getSpec()); } @@ -77,7 +77,7 @@ @VisibleForTesting public interface Natives { String getDistillerViewUrlFromUrl(String scheme, String url, String title); - String getOriginalUrlFromDistillerUrl(String viewerUrl); + GURL getOriginalUrlFromDistillerUrl(String viewerUrl); boolean isDistilledPage(String url); String getValueForKeyInUrl(String url, String key); }
diff --git a/components/dom_distiller/core/url_utils_android.cc b/components/dom_distiller/core/url_utils_android.cc index f51db0f..35dafde 100644 --- a/components/dom_distiller/core/url_utils_android.cc +++ b/components/dom_distiller/core/url_utils_android.cc
@@ -9,6 +9,7 @@ #include "components/dom_distiller/core/url_constants.h" #include "components/dom_distiller/core/url_utils.h" #include "net/base/url_util.h" +#include "url/android/gurl_android.h" #include "url/gurl.h" using base::android::JavaParamRef; @@ -39,7 +40,7 @@ return base::android::ConvertUTF8ToJavaString(env, view_url.spec()); } -ScopedJavaLocalRef<jstring> +ScopedJavaLocalRef<jobject> JNI_DomDistillerUrlUtils_GetOriginalUrlFromDistillerUrl( JNIEnv* env, const JavaParamRef<jstring>& j_url) { @@ -50,9 +51,9 @@ GURL original_url = dom_distiller::url_utils::GetOriginalUrlFromDistillerUrl(url); if (!original_url.is_valid()) - return ScopedJavaLocalRef<jstring>(); + return url::GURLAndroid::EmptyGURL(env); - return base::android::ConvertUTF8ToJavaString(env, original_url.spec()); + return url::GURLAndroid::FromNativeGURL(env, original_url); } jboolean JNI_DomDistillerUrlUtils_IsDistilledPage(
diff --git a/components/feed/core/proto/v2/wire/capability.proto b/components/feed/core/proto/v2/wire/capability.proto index c9a2f38..496562fc 100644 --- a/components/feed/core/proto/v2/wire/capability.proto +++ b/components/feed/core/proto/v2/wire/capability.proto
@@ -25,7 +25,9 @@ // UNUSED_IN_CHROME INLINE_VIDEO_AUTOPLAY = 18; CARD_MENU = 19; REQUEST_SCHEDULE = 20; + HEART = 23; OPEN_IN_TAB = 27; DOWNLOAD_LINK = 28; + LOTTIE_ANIMATIONS = 37; PREFETCH_METADATA = 43; }
diff --git a/components/feed/core/v2/proto_util.cc b/components/feed/core/v2/proto_util.cc index d680ecfc..64ec810 100644 --- a/components/feed/core/v2/proto_util.cc +++ b/components/feed/core/v2/proto_util.cc
@@ -122,6 +122,9 @@ feed_request.add_client_capability(feedwire::Capability::CARD_MENU); for (auto capability : GetFeedConfig().experimental_capabilities) feed_request.add_client_capability(capability); + if (base::FeatureList::IsEnabled(kInterestFeedV2Hearts)) { + feed_request.add_client_capability(feedwire::Capability::HEART); + } *feed_request.mutable_client_info() = CreateClientInfo(request_metadata); feedwire::FeedQuery& query = *feed_request.mutable_feed_query();
diff --git a/components/feed/core/v2/proto_util_unittest.cc b/components/feed/core/v2/proto_util_unittest.cc index 8d53ebe0..71a7eb4d 100644 --- a/components/feed/core/v2/proto_util_unittest.cc +++ b/components/feed/core/v2/proto_util_unittest.cc
@@ -14,20 +14,12 @@ #include "components/feed/core/v2/types.h" #include "components/feed/feed_feature_list.h" #include "components/version_info/channel.h" +#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" namespace feed { namespace { -bool HasCapability(const feedwire::FeedRequest& request, - feedwire::Capability wanted_capability) { - for (auto capability : request.client_capability()) { - if (wanted_capability == capability) - return true; - } - return false; -} - TEST(ProtoUtilTest, CreateClientInfo) { RequestMetadata request_metadata; request_metadata.chrome_info.version = base::Version({1, 2, 3, 4}); @@ -62,21 +54,35 @@ /*consistency_token=*/std::string()) .feed_request(); - ASSERT_EQ(10, request.client_capability_size()); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::BASE_UI)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::REQUEST_SCHEDULE)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::OPEN_IN_TAB)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::CARD_MENU)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::DOWNLOAD_LINK)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::INFINITE_FEED)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::DISMISS_COMMAND)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::UI_THEME_V2)); - EXPECT_TRUE( - HasCapability(request, feedwire::Capability::UNDO_FOR_DISMISS_COMMAND)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::PREFETCH_METADATA)); + ASSERT_THAT( + request.client_capability(), + testing::UnorderedElementsAre( + feedwire::Capability::BASE_UI, feedwire::Capability::REQUEST_SCHEDULE, + feedwire::Capability::OPEN_IN_TAB, feedwire::Capability::CARD_MENU, + feedwire::Capability::DOWNLOAD_LINK, + feedwire::Capability::INFINITE_FEED, + feedwire::Capability::DISMISS_COMMAND, + feedwire::Capability::UI_THEME_V2, + feedwire::Capability::UNDO_FOR_DISMISS_COMMAND, + feedwire::Capability::PREFETCH_METADATA)); +} + +TEST(ProtoUtilTest, HeartsEnabled) { + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitWithFeatures({kInterestFeedV2Hearts}, {}); + feedwire::FeedRequest request = + CreateFeedQueryRefreshRequest(feedwire::FeedQuery::MANUAL_REFRESH, + /*request_metadata=*/{}, + /*consistency_token=*/std::string()) + .feed_request(); + + ASSERT_THAT(request.client_capability(), + testing::Contains(feedwire::Capability::HEART)); } TEST(ProtoUtilTest, DisableCapabilitiesWithFinch) { + // Try to disable BASE_UI and _INFINITE_FEED. BASE_UI is not an experimental + // capability, and should not be affected. base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitAndEnableFeatureWithParameters( kInterestFeedV2, @@ -89,23 +95,16 @@ /*consistency_token=*/std::string()) .feed_request(); - ASSERT_EQ(9, request.client_capability_size()); - - // Optional capabilities can be disabled. - EXPECT_FALSE(HasCapability(request, feedwire::Capability::INFINITE_FEED)); - - // Required capabilities can't be disabled. - EXPECT_TRUE(HasCapability(request, feedwire::Capability::BASE_UI)); - - EXPECT_TRUE(HasCapability(request, feedwire::Capability::REQUEST_SCHEDULE)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::OPEN_IN_TAB)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::CARD_MENU)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::DOWNLOAD_LINK)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::DISMISS_COMMAND)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::UI_THEME_V2)); - EXPECT_TRUE( - HasCapability(request, feedwire::Capability::UNDO_FOR_DISMISS_COMMAND)); - EXPECT_TRUE(HasCapability(request, feedwire::Capability::PREFETCH_METADATA)); + ASSERT_THAT( + request.client_capability(), + testing::UnorderedElementsAre( + feedwire::Capability::BASE_UI, feedwire::Capability::REQUEST_SCHEDULE, + feedwire::Capability::OPEN_IN_TAB, feedwire::Capability::CARD_MENU, + feedwire::Capability::DOWNLOAD_LINK, + feedwire::Capability::DISMISS_COMMAND, + feedwire::Capability::UI_THEME_V2, + feedwire::Capability::UNDO_FOR_DISMISS_COMMAND, + feedwire::Capability::PREFETCH_METADATA)); } TEST(ProtoUtilTest, NoticeCardAcknowledged) {
diff --git a/components/feed/feed_feature_list.cc b/components/feed/feed_feature_list.cc index 841252e..dacf284 100644 --- a/components/feed/feed_feature_list.cc +++ b/components/feed/feed_feature_list.cc
@@ -18,6 +18,9 @@ const base::Feature kInterestFeedV2{"InterestFeedV2", base::FEATURE_DISABLED_BY_DEFAULT}; +const base::Feature kInterestFeedV2Hearts{"InterestFeedV2Hearts", + base::FEATURE_DISABLED_BY_DEFAULT}; + const base::FeatureParam<std::string> kDisableTriggerTypes{ &kInterestFeedContentSuggestions, "disable_trigger_types", ""}; const base::FeatureParam<int> kSuppressRefreshDurationMinutes{
diff --git a/components/feed/feed_feature_list.h b/components/feed/feed_feature_list.h index fa5d9222..0221555 100644 --- a/components/feed/feed_feature_list.h +++ b/components/feed/feed_feature_list.h
@@ -14,6 +14,7 @@ extern const base::Feature kInterestFeedContentSuggestions; extern const base::Feature kInterestFeedV2; +extern const base::Feature kInterestFeedV2Hearts; bool IsV1Enabled(); bool IsV2Enabled();
diff --git a/components/guest_os/DIR_METADATA b/components/guest_os/DIR_METADATA index a1cea97..f461eb4 100644 --- a/components/guest_os/DIR_METADATA +++ b/components/guest_os/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Shell>Containers" +monorail: { + component: "UI>Shell>Containers" }
diff --git a/components/lookalikes/core/BUILD.gn b/components/lookalikes/core/BUILD.gn index 30aab5617..fccb480 100644 --- a/components/lookalikes/core/BUILD.gn +++ b/components/lookalikes/core/BUILD.gn
@@ -18,6 +18,7 @@ "//components/security_state/core:features", "//components/strings", "//components/url_formatter", + "//components/url_formatter/spoof_checks/common_words:common", "//components/url_formatter/spoof_checks/top_domains:common", "//components/url_formatter/spoof_checks/top_domains:top500_domains", "//components/url_formatter/spoof_checks/top_domains:top500_domains_header",
diff --git a/components/lookalikes/core/lookalike_url_util.cc b/components/lookalikes/core/lookalike_url_util.cc index c65ba8d6..05e00289 100644 --- a/components/lookalikes/core/lookalike_url_util.cc +++ b/components/lookalikes/core/lookalike_url_util.cc
@@ -28,6 +28,7 @@ #include "components/lookalikes/core/features.h" #include "components/security_interstitials/core/pref_names.h" #include "components/security_state/core/features.h" +#include "components/url_formatter/spoof_checks/common_words/common_words_util.h" #include "components/url_formatter/spoof_checks/top_domains/top500_domains.h" #include "components/url_formatter/spoof_checks/top_domains/top_domain_util.h" #include "components/url_formatter/url_formatter.h" @@ -57,18 +58,15 @@ // This list will be added to the static list of common words so common words // could be added to the list using a flag if needed. -const base::FeatureParam<std::string> kAdditionalCommonWords{ +const base::FeatureParam<std::string> kRemoveAdditionalCommonWords{ &lookalikes::features::kDetectTargetEmbeddingLookalikes, "additional_common_words", ""}; // We might not protect a domain whose e2LD is a common word in target embedding -// based on the TLD that is paired with it. -const char* kCommonWords[] = { - "shop", "jobs", "live", "info", "study", "asahi", - "weather", "health", "forum", "radio", "ideal", "research", - "france", "free", "mobile", "sky", "ask", "booking", - "canada", "dating", "dictionary", "express", "hoteles", "hotels", - "investing", "jharkhand", "nifty"}; +// based on the TLD that is paired with it. This list supplements words from +// url_formatter::common_words::IsCommonWord(). +const char* kLocalAdditionalCommonWords[] = {"asahi", "hoteles", "jharkhand", + "nifty"}; // These domains are plausible lookalike targets, but they also use common words // in their names. Selectively prevent flagging embeddings where the embedder @@ -272,17 +270,33 @@ // weather.com, ask.com). Target embeddings of these domains are often false // positives (e.g. "super-best-fancy-hotels.com" isn't spoofing "hotels.com"). bool UsesCommonWord(const DomainInfo& domain) { - std::vector<std::string> additional_common_words = - base::SplitString(kAdditionalCommonWords.Get(), ",", - base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); - if (base::Contains(additional_common_words, domain.domain_without_registry)) { + // kDomainsPermittedInEndEmbeddings are based on domains with common words, + // but they should not be excluded here (and instead are checked later). + for (auto* permitted_ending : kDomainsPermittedInEndEmbeddings) { + if (domain.domain_and_registry == permitted_ending) { + return false; + } + } + + // Search for words in the big common word list. + if (url_formatter::common_words::IsCommonWord( + domain.domain_without_registry)) { return true; } - for (auto* common_word : kCommonWords) { + + // Also check the local lists. + for (auto* common_word : kLocalAdditionalCommonWords) { if (domain.domain_without_registry == common_word) { return true; } } + std::vector<std::string> additional_common_words = + base::SplitString(kRemoveAdditionalCommonWords.Get(), ",", + base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (base::Contains(additional_common_words, domain.domain_without_registry)) { + return true; + } + return false; }
diff --git a/components/lookalikes/core/lookalike_url_util_unittest.cc b/components/lookalikes/core/lookalike_url_util_unittest.cc index 86cdf75..e5b3d065 100644 --- a/components/lookalikes/core/lookalike_url_util_unittest.cc +++ b/components/lookalikes/core/lookalike_url_util_unittest.cc
@@ -215,6 +215,9 @@ TargetEmbeddingType::kInterstitial}, {"foo.jobs.org-foo.com", "", TargetEmbeddingType::kNone}, {"foo.office.org-foo.com", "", TargetEmbeddingType::kNone}, + // Common words (like 'jobs' are included in the big common word list. + // Ensure that the supplemental kCommonWords list is also checked. + {"foo.hoteles.com-foo.com", "", TargetEmbeddingType::kNone}, // Targets could be embedded without their dots and dashes. {"googlecom-foo.com", "google.com", TargetEmbeddingType::kInterstitial}, @@ -299,7 +302,12 @@ << test_case.expected_safe_host << ", but " << (safe_hostname.empty() ? "it didn't trigger at all." : "triggered on " + safe_hostname); - EXPECT_EQ(embedding_type, test_case.expected_type); + EXPECT_EQ(embedding_type, test_case.expected_type) + << test_case.hostname << " should trigger on " + << test_case.expected_safe_host << " but it returned " + << (embedding_type == TargetEmbeddingType::kNone + ? "kNone." + : "something unexpected"); } else { EXPECT_EQ(embedding_type, TargetEmbeddingType::kNone) << test_case.hostname << " unexpectedly triggered on "
diff --git a/components/media_message_center/OWNERS b/components/media_message_center/OWNERS index e4ffdff8..c48e48e 100644 --- a/components/media_message_center/OWNERS +++ b/components/media_message_center/OWNERS
@@ -1,2 +1 @@ -beccahughes@chromium.org steimel@chromium.org
diff --git a/components/messages/android/BUILD.gn b/components/messages/android/BUILD.gn index 7a8cfe4..f37b0a6 100644 --- a/components/messages/android/BUILD.gn +++ b/components/messages/android/BUILD.gn
@@ -20,7 +20,6 @@ "java/src/org/chromium/components/messages/MessageDispatcherBridge.java", "java/src/org/chromium/components/messages/MessageDispatcherProvider.java", "java/src/org/chromium/components/messages/MessageStateHandler.java", - "java/src/org/chromium/components/messages/MessageUtils.java", "java/src/org/chromium/components/messages/MessageWrapper.java", "java/src/org/chromium/components/messages/SingleActionMessage.java", ]
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageDispatcherImpl.java b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageDispatcherImpl.java index ee79a341..e1934fe 100644 --- a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageDispatcherImpl.java +++ b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageDispatcherImpl.java
@@ -6,6 +6,7 @@ import org.chromium.base.supplier.Supplier; import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.ui.util.AccessibilityUtil; /** * This class implements public MessageDispatcher interface, delegating the actual work to @@ -15,23 +16,27 @@ private final MessageQueueManager mMessageQueueManager = new MessageQueueManager(); private final MessageContainer mMessageContainer; private final Supplier<Integer> mMessageMaxTranslationSupplier; + private final AccessibilityUtil mAccessibilityUtil; /** * Build a new message dispatcher * @param messageContainer A container view for displaying message banners. * @param messageMaxTranslationSupplier A {@link Supplier} that supplies the maximum translation * Y value the message banner can have as a result of the animations or the gestures. + * @param accessibilityUtil A util to expose information related to system accessibility state. */ - public MessageDispatcherImpl( - MessageContainer messageContainer, Supplier<Integer> messageMaxTranslation) { + public MessageDispatcherImpl(MessageContainer messageContainer, + Supplier<Integer> messageMaxTranslation, AccessibilityUtil accessibilityUtil) { mMessageContainer = messageContainer; mMessageMaxTranslationSupplier = messageMaxTranslation; + mAccessibilityUtil = accessibilityUtil; } @Override public void enqueueMessage(PropertyModel messageProperties) { - MessageStateHandler messageStateHandler = new SingleActionMessage(mMessageContainer, - messageProperties, this::dismissMessage, mMessageMaxTranslationSupplier); + MessageStateHandler messageStateHandler = + new SingleActionMessage(mMessageContainer, messageProperties, this::dismissMessage, + mMessageMaxTranslationSupplier, mAccessibilityUtil); mMessageQueueManager.enqueueMessage(messageStateHandler, messageProperties); }
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/MessagesFactory.java b/components/messages/android/internal/java/src/org/chromium/components/messages/MessagesFactory.java index 39b1eb0..aacaf60 100644 --- a/components/messages/android/internal/java/src/org/chromium/components/messages/MessagesFactory.java +++ b/components/messages/android/internal/java/src/org/chromium/components/messages/MessagesFactory.java
@@ -6,6 +6,7 @@ import org.chromium.base.supplier.Supplier; import org.chromium.ui.base.WindowAndroid; +import org.chromium.ui.util.AccessibilityUtil; /** A factory for constructing different Messages related objects. */ public class MessagesFactory { @@ -17,11 +18,12 @@ * to the MessageContainer. When messages are shown, they will be animated down the * screen, starting at the negative |messageMaxTranslation| y translation to the resting * position in the MessageContainer. + * @param accessibilityUtil A util to expose information related to system accessibility state. * @return The constructed ManagedMessageDispatcher. */ - public static ManagedMessageDispatcher createMessageDispatcher( - MessageContainer container, Supplier<Integer> messageMaxTranslation) { - return new MessageDispatcherImpl(container, messageMaxTranslation); + public static ManagedMessageDispatcher createMessageDispatcher(MessageContainer container, + Supplier<Integer> messageMaxTranslation, AccessibilityUtil accessibilityUtil) { + return new MessageDispatcherImpl(container, messageMaxTranslation, accessibilityUtil); } /**
diff --git a/components/messages/android/java/src/org/chromium/components/messages/MessageUtils.java b/components/messages/android/java/src/org/chromium/components/messages/MessageUtils.java deleted file mode 100644 index e6f39e9..0000000 --- a/components/messages/android/java/src/org/chromium/components/messages/MessageUtils.java +++ /dev/null
@@ -1,31 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.components.messages; - -import org.chromium.ui.util.AccessibilityUtil; - -/** - * A util class designed for messages. - */ -public class MessageUtils { - private static AccessibilityUtil sUtil; - - /** - * @return True if a11y is enabled. - */ - public static boolean isA11yEnabled() { - assert sUtil != null; - return sUtil.isAccessibilityEnabled(); - } - - /** - * Set an {@link AccessibilityUtil} to know if a11y is enabled. - * Should set null when message infra is destroyed. - * @param util The {@link AccessibilityUtil} instance. - */ - public static void setAccessibilityUtil(AccessibilityUtil util) { - sUtil = util; - } -}
diff --git a/components/messages/android/java/src/org/chromium/components/messages/SingleActionMessage.java b/components/messages/android/java/src/org/chromium/components/messages/SingleActionMessage.java index de6b7583..5fc09ab 100644 --- a/components/messages/android/java/src/org/chromium/components/messages/SingleActionMessage.java +++ b/components/messages/android/java/src/org/chromium/components/messages/SingleActionMessage.java
@@ -14,6 +14,7 @@ import org.chromium.base.Callback; import org.chromium.base.supplier.Supplier; import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.ui.util.AccessibilityUtil; /** * Coordinator to show / hide a banner message on given container and delegate events. @@ -29,6 +30,7 @@ private final Callback<PropertyModel> mDismissHandler; private MessageAutoDismissTimer mAutoDismissTimer; private final Supplier<Integer> mMaxTranslationSupplier; + private final AccessibilityUtil mAccessibilityUtil; /** * @param container The container holding messages. @@ -37,13 +39,15 @@ * @param dismissHandler The {@link Callback<PropertyModel>} able to dismiss a message by given * property model. * @param maxTranslationSupplier A {@link Supplier} that supplies the maximum translation Y - * value the message banner can have as a result of the animations or the gestures. + * @param accessibilityUtil A util to expose information related to system accessibility state. */ public SingleActionMessage(MessageContainer container, PropertyModel model, - Callback<PropertyModel> dismissHandler, Supplier<Integer> maxTranslationSupplier) { + Callback<PropertyModel> dismissHandler, Supplier<Integer> maxTranslationSupplier, + AccessibilityUtil accessibilityUtil) { mModel = model; mContainer = container; mDismissHandler = dismissHandler; + mAccessibilityUtil = accessibilityUtil; mAutoDismissTimer = new MessageAutoDismissTimer(getAutoDismissDuration()); mMaxTranslationSupplier = maxTranslationSupplier; @@ -110,8 +114,9 @@ mDismissHandler.onResult(mModel); } - private long getAutoDismissDuration() { - return MessageUtils.isA11yEnabled() ? DURATION_ON_A11Y : DURATION; + @VisibleForTesting + long getAutoDismissDuration() { + return mAccessibilityUtil.isAccessibilityEnabled() ? DURATION_ON_A11Y : DURATION; } @VisibleForTesting
diff --git a/components/messages/android/java/src/org/chromium/components/messages/SingleActionMessageTest.java b/components/messages/android/java/src/org/chromium/components/messages/SingleActionMessageTest.java index 54bfdf5..065067e8 100644 --- a/components/messages/android/java/src/org/chromium/components/messages/SingleActionMessageTest.java +++ b/components/messages/android/java/src/org/chromium/components/messages/SingleActionMessageTest.java
@@ -41,13 +41,14 @@ private CallbackHelper mDismissCallback; private Callback<PropertyModel> mEmptyDismissCallback = (model) -> {}; + private AccessibilityUtil mAccessibilityUtil; + @Override public void setUpTest() throws Exception { super.setUpTest(); mDismissCallback = new CallbackHelper(); - AccessibilityUtil util = Mockito.mock(AccessibilityUtil.class); - when(util.isAccessibilityEnabled()).thenReturn(false); - MessageUtils.setAccessibilityUtil(util); + mAccessibilityUtil = Mockito.mock(AccessibilityUtil.class); + when(mAccessibilityUtil.isAccessibilityEnabled()).thenReturn(false); } @Test @@ -55,8 +56,8 @@ public void testAddAndRemoveSingleActionMessage() throws Exception { MessageContainer container = new MessageContainer(getActivity(), null); PropertyModel model = createBasicSingleActionMessageModel(); - SingleActionMessage message = - new SingleActionMessage(container, model, mEmptyDismissCallback, () -> 0); + SingleActionMessage message = new SingleActionMessage( + container, model, mEmptyDismissCallback, () -> 0, mAccessibilityUtil); final MessageBannerCoordinator messageBanner = Mockito.mock(MessageBannerCoordinator.class); doNothing().when(messageBanner).show(any(Runnable.class)); doNothing().when(messageBanner).setOnTouchRunnable(any(Runnable.class)); @@ -81,14 +82,29 @@ "Dismiss callback should be called when message is dismissed"); } + @Test + @MediumTest + public void testAutoDismissDuration() { + MessageContainer container = new MessageContainer(getActivity(), null); + PropertyModel model = createBasicSingleActionMessageModel(); + SingleActionMessage message = new SingleActionMessage( + container, model, mEmptyDismissCallback, () -> 0, mAccessibilityUtil); + when(mAccessibilityUtil.isAccessibilityEnabled()).thenReturn(true); + long durationOnA11y = message.getAutoDismissDuration(); + when(mAccessibilityUtil.isAccessibilityEnabled()).thenReturn(false); + long duration = message.getAutoDismissDuration(); + Assert.assertTrue( + "Message duration should be longer when a11y is on", durationOnA11y > duration); + } + @Test(expected = IllegalStateException.class) @MediumTest public void testAddMultipleSingleActionMessage() { MessageContainer container = new MessageContainer(getActivity(), null); PropertyModel m1 = createBasicSingleActionMessageModel(); PropertyModel m2 = createBasicSingleActionMessageModel(); - SingleActionMessage message1 = - new SingleActionMessage(container, m1, mEmptyDismissCallback, () -> 0); + SingleActionMessage message1 = new SingleActionMessage( + container, m1, mEmptyDismissCallback, () -> 0, mAccessibilityUtil); final MessageBannerCoordinator messageBanner1 = Mockito.mock(MessageBannerCoordinator.class); doNothing().when(messageBanner1).show(any(Runnable.class)); @@ -96,8 +112,8 @@ view1.setId(R.id.message_banner); message1.setMessageBannerForTesting(messageBanner1); message1.setViewForTesting(view1); - SingleActionMessage message2 = - new SingleActionMessage(container, m2, mEmptyDismissCallback, () -> 0); + SingleActionMessage message2 = new SingleActionMessage( + container, m2, mEmptyDismissCallback, () -> 0, mAccessibilityUtil); final MessageBannerCoordinator messageBanner2 = Mockito.mock(MessageBannerCoordinator.class); doNothing().when(messageBanner2).show(any(Runnable.class));
diff --git a/components/no_state_prefetch/DIR_METADATA b/components/no_state_prefetch/DIR_METADATA index fe82ff61..eaf73c7 100644 --- a/components/no_state_prefetch/DIR_METADATA +++ b/components/no_state_prefetch/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Preload" +monorail: { + component: "Internals>Preload" }
diff --git a/components/omnibox/browser/autocomplete_match.cc b/components/omnibox/browser/autocomplete_match.cc index 3e09cd5cd..3f9db909 100644 --- a/components/omnibox/browser/autocomplete_match.cc +++ b/components/omnibox/browser/autocomplete_match.cc
@@ -150,8 +150,7 @@ typed_count(match.typed_count), deletable(match.deletable), fill_into_edit(match.fill_into_edit), - fill_into_edit_additional_text(match.fill_into_edit_additional_text), - swapped_fill_into_edit(match.swapped_fill_into_edit), + additional_text(match.additional_text), inline_autocompletion(match.inline_autocompletion), rich_autocompletion_triggered(match.rich_autocompletion_triggered), prefix_autocompletion(match.prefix_autocompletion), @@ -211,8 +210,7 @@ typed_count = match.typed_count; deletable = match.deletable; fill_into_edit = match.fill_into_edit; - fill_into_edit_additional_text = match.fill_into_edit_additional_text; - swapped_fill_into_edit = match.swapped_fill_into_edit; + additional_text = match.additional_text; inline_autocompletion = match.inline_autocompletion; rich_autocompletion_triggered = match.rich_autocompletion_triggered; prefix_autocompletion = match.prefix_autocompletion; @@ -1113,7 +1111,7 @@ size_t res = 0; res += base::trace_event::EstimateMemoryUsage(fill_into_edit); - res += base::trace_event::EstimateMemoryUsage(fill_into_edit_additional_text); + res += base::trace_event::EstimateMemoryUsage(additional_text); res += base::trace_event::EstimateMemoryUsage(inline_autocompletion); res += base::trace_event::EstimateMemoryUsage(prefix_autocompletion); res += base::trace_event::EstimateMemoryUsage(destination_url); @@ -1197,13 +1195,6 @@ bool counterfactual = OmniboxFieldTrial::RichAutocompletionCounterfactual(); - // If the appropriate param is enabled, titles should be shown in the omnibox - // regardless of whether the suggestion can be the default. By default, - // secondary text should be displayed unless we autocomplete the secondary - // text, in which case |fill_into_edit_additional_text| will be overridden. - if (OmniboxFieldTrial::RichAutocompletionShowTitles() && !counterfactual) - fill_into_edit_additional_text = secondary_text; - if (input.prevent_inline_autocomplete()) return false; @@ -1215,7 +1206,6 @@ // Try matching the prefix of |primary_text|. if (base::StartsWith(primary_text_lower, input_text_lower, base::CompareCase::SENSITIVE)) { - // |fill_into_edit| should already be set to |primary_text|. if (counterfactual) return false; // This case intentionally doesn't set |rich_autocompletion_triggered| to @@ -1239,9 +1229,7 @@ rich_autocompletion_triggered = true; if (counterfactual) return false; - fill_into_edit = secondary_text; - fill_into_edit_additional_text = primary_text; - swapped_fill_into_edit = true; + additional_text = primary_text; inline_autocompletion = secondary_text.substr(input_text_lower.length()); allowed_to_be_default_match = true; RecordAdditionalInfo("autocompletion", "secondary & prefix"); @@ -1270,7 +1258,6 @@ rich_autocompletion_triggered = true; if (counterfactual) return false; - // |fill_into_edit| should already be set to |primary_text|. inline_autocompletion = primary_text.substr(find_index + input_text_lower.length()); prefix_autocompletion = primary_text.substr(0, find_index); @@ -1286,9 +1273,7 @@ rich_autocompletion_triggered = true; if (counterfactual) return false; - fill_into_edit = secondary_text; - fill_into_edit_additional_text = primary_text; - swapped_fill_into_edit = true; + additional_text = primary_text; inline_autocompletion = secondary_text.substr(find_index + input_text_lower.length()); prefix_autocompletion = secondary_text.substr(0, find_index); @@ -1312,7 +1297,6 @@ rich_autocompletion_triggered = true; if (counterfactual) return false; - // |fill_into_edit| should already be set to |primary_text|. split_autocompletion = SplitAutocompletion( primary_text_lower, TermMatchesToSelections(primary_text_lower.length(), input_words)); @@ -1335,9 +1319,7 @@ rich_autocompletion_triggered = true; if (counterfactual) return false; - fill_into_edit = secondary_text; - fill_into_edit_additional_text = primary_text; - swapped_fill_into_edit = true; + additional_text = primary_text; split_autocompletion = SplitAutocompletion( secondary_text_lower, TermMatchesToSelections(secondary_text_lower.length(), input_words));
diff --git a/components/omnibox/browser/autocomplete_match.h b/components/omnibox/browser/autocomplete_match.h index 4e72c1b0..bf830c96 100644 --- a/components/omnibox/browser/autocomplete_match.h +++ b/components/omnibox/browser/autocomplete_match.h
@@ -526,20 +526,11 @@ // by pressing the arrow keys. This may be different than a URL, for example, // for search suggestions, this would just be the search terms. base::string16 fill_into_edit; - // This string is displayed adjacent to |fill_into_edit|. Will usually be - // either the |description| or |content|, whichever isn't represented by - // |fill_into_edit|. Always empty if kRichAutocompletionShowTitlesParam is - // disabled. - base::string16 fill_into_edit_additional_text; - // When rich autocompleting titles, |fill_into_edit| & - // |fill_into_edit_additional_text| are swapped (i.e. the former contains the - // title, and the latter contains the URL). This is consistent with how the - // suggestion should be displayed. But the shortcut DB must persist the - // original (i.e. URL) |fill_into_edit|; otherwise the shortcut provider may - // autocomplete the title even when title autocompletion is inappropriate - // (e.g. because the input is too short). Therefore, |swapped_fill_into_edit| - // is set to true when rich autocompleting titles. - bool swapped_fill_into_edit = false; + + // This string is displayed adjacent to the omnibox if this match is the + // default. Will usually be URL when autocompleting a title, and empty + // otherwise. + base::string16 additional_text; // The inline autocompletion to display after the user's input in the // omnibox, if this match becomes the default match. It may be empty.
diff --git a/components/omnibox/browser/autocomplete_match_unittest.cc b/components/omnibox/browser/autocomplete_match_unittest.cc index 7fdf8e01..18e5c09 100644 --- a/components/omnibox/browser/autocomplete_match_unittest.cc +++ b/components/omnibox/browser/autocomplete_match_unittest.cc
@@ -505,8 +505,7 @@ bool expected_rich_autocompletion_triggered, const std::string expected_inline_autocompletion, const std::string expected_prefix_autocompletion, - const std::string expected_fill_into_edit_second_line, - bool expected_swapped_fill_into_edit, + const std::string expected_additional_text, bool expected_allowed_to_be_default_match) { AutocompleteInput input(base::UTF8ToUTF16(input_text), metrics::OmniboxEventProto::OTHER, @@ -527,9 +526,8 @@ EXPECT_EQ(base::UTF16ToUTF8(match.prefix_autocompletion).c_str(), expected_prefix_autocompletion); EXPECT_TRUE(match.split_autocompletion.Empty()); - EXPECT_EQ(base::UTF16ToUTF8(match.fill_into_edit_additional_text).c_str(), - expected_fill_into_edit_second_line); - EXPECT_EQ(match.swapped_fill_into_edit, expected_swapped_fill_into_edit); + EXPECT_EQ(base::UTF16ToUTF8(match.additional_text).c_str(), + expected_additional_text); EXPECT_EQ(match.allowed_to_be_default_match, expected_allowed_to_be_default_match); }; @@ -543,7 +541,6 @@ omnibox::kRichAutocompletion, { {"RichAutocompletionAutocompleteTitles", "true"}, - {"RichAutocompletionShowTitles", "true"}, {"RichAutocompletionAutocompleteNonPrefixAll", "true"}, {"RichAutocompletionSplitTitleCompletion", "true"}, {"RichAutocompletionSplitUrlCompletion", "true"}, @@ -554,28 +551,28 @@ { SCOPED_TRACE("primary prefix"); test("x", false, "x_mixd_x_primary", "x_mixd_x_secondary", true, false, - "_mixd_x_primary", "", "x_mixd_x_secondary", false, true); + "_mixd_x_primary", "", "", true); } // Otherwise, prefer secondary text prefix. { SCOPED_TRACE("secondary prefix"); test("x", false, "y_mixd_x_primary", "x_mixd_x_secondary", true, true, - "_mixd_x_secondary", "", "y_mixd_x_primary", true, true); + "_mixd_x_secondary", "", "y_mixd_x_primary", true); } // Otherwise, prefer primary text non-prefix (wordbreak). { SCOPED_TRACE("primary non-prefix"); test("x", false, "y_mixd_x_primary", "y_mixd_x_secondary", true, true, - "_primary", "y_mixd_", "y_mixd_x_secondary", false, true); + "_primary", "y_mixd_", "", true); } // Otherwise, prefer secondary text non-prefix (wordbreak). { SCOPED_TRACE("secondary non-prefix"); test("x", false, "y_mid_y_primary", "y_mixd_x_secondary", true, true, - "_secondary", "y_mixd_", "y_mid_y_primary", true, true); + "_secondary", "y_mixd_", "y_mid_y_primary", true); } // We don't explicitly test that non-wordbreak matches aren't autocompleted, @@ -585,18 +582,18 @@ // We test split autocompletion in separate test below since it has a few // edge cases. - // Otherwise, don't autocomplete but still set |fill_into_edit_second_line| + // Otherwise, don't autocomplete but still set |additional_text| { SCOPED_TRACE("no autocompletion applicable"); test("x", false, "y_mid_y_primary", "y_mid_y_secondary", false, false, "", - "", "y_mid_y_secondary", false, false); + "", "", false); } // Don't autocomplete if |prevent_inline_autocomplete| is true. { SCOPED_TRACE("prevent inline autocomplete"); test("x", true, "x_mixd_x_primary", "x_mixd_x_secondary", false, false, - "", "", "x_mixd_x_secondary", false, false); + "", "", "", false); } } @@ -607,7 +604,6 @@ { {"RichAutocompletionAutocompleteTitles", "true"}, {"RichAutocompletionTwoLineOmnibox", "true"}, - {"RichAutocompletionShowTitles", "true"}, {"RichAutocompletionAutocompleteNonPrefixAll", "true"}, {"RichAutocompletionAutocompleteTitlesMinChar", "3"}, {"RichAutocompletionAutocompleteNonPrefixMinChar", "2"}, @@ -618,7 +614,7 @@ { SCOPED_TRACE("min char shorter than input"); test("x_prim", false, "y_mixd_x_primary", "x_mixd_x_secondary", true, - true, "ary", "y_mixd_", "x_mixd_x_secondary", false, true); + true, "ary", "y_mixd_", "", true); } // Usually, title autocompletion is preferred to non-prefix. Autocomplete @@ -627,14 +623,14 @@ SCOPED_TRACE( "title min char longer & non-prefix min char shorter than input"); test("x_", false, "y_mixd_x_primary", "x_mixd_x_secondary", true, true, - "primary", "y_mixd_", "x_mixd_x_secondary", false, true); + "primary", "y_mixd_", "", true); } // Don't autocomplete title and non-prefix if input is less than limits. { SCOPED_TRACE("min char longer than input"); test("x", false, "y_mixd_x_primary", "x_mixd_x_secondary", false, false, - "", "", "x_mixd_x_secondary", false, false); + "", "", "", false); } } @@ -642,7 +638,7 @@ { SCOPED_TRACE("feature disabled"); test("x", false, "x_mixd_x_primary", "x_mixd_x_secondary", false, false, "", - "", "", false, false); + "", "", false); } // Don't autocomplete if RichAutocompletionCounterfactual param is enabled; @@ -654,7 +650,6 @@ { {"RichAutocompletionAutocompleteTitles", "true"}, {"RichAutocompletionTwoLineOmnibox", "true"}, - {"RichAutocompletionShowTitles", "true"}, {"RichAutocompletionAutocompleteNonPrefixAll", "true"}, {"RichAutocompletionAutocompleteTitlesMinChar", "3"}, {"RichAutocompletionAutocompleteNonPrefixMinChar", "2"}, @@ -666,7 +661,7 @@ { SCOPED_TRACE("min char shorter than input, counterfactual"); test("x_prim", false, "y_mixd_x_primary", "x_mixd_x_secondary", false, - true, "", "", "", false, false); + true, "", "", "", false); } { @@ -674,14 +669,14 @@ "title min char longer & non-prefix min char shorter than input, " "counterfactual"); test("x_", false, "y_mixd_x_primary", "x_mixd_x_secondary", false, true, - "", "", "", false, false); + "", "", "", false); } // Don't trigger if input is less than limits. { SCOPED_TRACE("min char longer than input, counterfactual"); test("x", false, "y_mixd_x_primary", "x_mixd_x_secondary", false, false, - "", "", "", false, false); + "", "", "", false); } } } @@ -690,8 +685,7 @@ auto test = [](const std::string input_text, const std::string primary_text, const std::string secondary_text, bool expected_return, const std::vector<gfx::Range> expected_split_autocompletion, - const std::string expected_fill_into_edit_second_line, - bool expected_swapped_fill_into_edit, + const std::string expected_additional_text, bool expected_allowed_to_be_default_match) { AutocompleteInput input(base::UTF8ToUTF16(input_text), metrics::OmniboxEventProto::OTHER, @@ -707,9 +701,8 @@ EXPECT_TRUE(match.prefix_autocompletion.empty()); EXPECT_EQ(match.split_autocompletion.selections, expected_split_autocompletion); - EXPECT_EQ(base::UTF16ToUTF8(match.fill_into_edit_additional_text).c_str(), - expected_fill_into_edit_second_line); - EXPECT_EQ(match.swapped_fill_into_edit, expected_swapped_fill_into_edit); + EXPECT_EQ(base::UTF16ToUTF8(match.additional_text).c_str(), + expected_additional_text); EXPECT_EQ(match.allowed_to_be_default_match, expected_allowed_to_be_default_match); }; @@ -719,7 +712,6 @@ omnibox::kRichAutocompletion, { {"RichAutocompletionAutocompleteTitles", "true"}, - {"RichAutocompletionShowTitles", "true"}, {"RichAutocompletionSplitTitleCompletion", "true"}, {"RichAutocompletionSplitUrlCompletion", "true"}, }); @@ -730,15 +722,14 @@ SCOPED_TRACE("primary split"); test("x_z ", "y_mixd_x_x_primary_z_suf fix", "y_mixd_x_x_secondary_z_suffix", true, - {{28, 25}, {24, 20}, {19, 9}, {7, 0}}, "y_mixd_x_x_secondary_z_suffix", - false, true); + {{28, 25}, {24, 20}, {19, 9}, {7, 0}}, "", true); } // Match the secondary text if the primary text does not match. { SCOPED_TRACE("secondary split"); test("x_z", "y_mixd_x_x_primary_y_suffix", "y_mixd_x_x_secondary_z_suffix", - true, {{29, 22}, {21, 9}, {7, 0}}, "y_mixd_x_x_primary_y_suffix", true, + true, {{29, 22}, {21, 9}, {7, 0}}, "y_mixd_x_x_primary_y_suffix", true); } @@ -746,19 +737,18 @@ { SCOPED_TRACE("primary split, distant delimiter"); test("x_z", "y_mixd_xx_primary_z_suffix", "y_mixd_x_x_secondary_z_suffix", - true, {{26, 19}, {18, 10}, {9, 8}, {7, 0}}, - "y_mixd_x_x_secondary_z_suffix", false, true); + true, {{26, 19}, {18, 10}, {9, 8}, {7, 0}}, "", true); } // Don't match if the delimiter can't be matched. { SCOPED_TRACE("primary split, no delimiter"); - test("x_z", "x z", "xz", false, {}, "xz", false, false); + test("x_z", "x z", "xz", false, {}, "", false); } // Don't match if word order is not preserved. { SCOPED_TRACE("primary split, incorrect order"); - test("x_y_z", "z_y_x_", "x_z_y_", false, {}, "x_z_y_", false, false); + test("x_y_z", "z_y_x_", "x_z_y_", false, {}, "", false); } }
diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc index e81522b..e9549d4a 100644 --- a/components/omnibox/browser/history_url_provider.cc +++ b/components/omnibox/browser/history_url_provider.cc
@@ -971,8 +971,6 @@ // We have data for this match, use it. params->what_you_typed_match.deletable = true; auto title = classifier.url_row().title(); - if (OmniboxFieldTrial::RichAutocompletionShowTitles()) - params->what_you_typed_match.fill_into_edit_additional_text = title; params->what_you_typed_match.description = title; params->what_you_typed_match.destination_url = classifier.url_row().url(); RecordAdditionalInfoFromUrlRow(classifier.url_row(),
diff --git a/components/omnibox/browser/omnibox_edit_model.cc b/components/omnibox/browser/omnibox_edit_model.cc index 28f6f29..2b8621a 100644 --- a/components/omnibox/browser/omnibox_edit_model.cc +++ b/components/omnibox/browser/omnibox_edit_model.cc
@@ -1546,12 +1546,11 @@ const base::string16 inline_autocompletion(match.inline_autocompletion); const base::string16 prefix_autocompletion(match.prefix_autocompletion); const auto split_autocompletion(match.split_autocompletion); - const base::string16 fill_into_edit_additional_text( - match.fill_into_edit_additional_text); + const base::string16 additional_text(match.additional_text); OnPopupDataChanged(base::string16(), /*is_temporary_text=*/false, inline_autocompletion, prefix_autocompletion, split_autocompletion, keyword, - is_keyword_hint, fill_into_edit_additional_text); + is_keyword_hint, additional_text); } // static
diff --git a/components/omnibox/browser/omnibox_edit_model.h b/components/omnibox/browser/omnibox_edit_model.h index 3730f3e4..c5bd344 100644 --- a/components/omnibox/browser/omnibox_edit_model.h +++ b/components/omnibox/browser/omnibox_edit_model.h
@@ -359,9 +359,9 @@ // efficiently. Specifically, it's invoked for temporary text, autocompletion, // and keyword changes. // |temporary_text| is the new temporary text from the user selecting a - // different match. This will be empty when selecting a suggestion - // without a |fill_into_edit| (e.g. FOCUSED_BUTTON_HEADER) and when - // |is_temporary_test| is false. + // different match. This will be empty when selecting a suggestion + // without a |fill_into_edit| (e.g. FOCUSED_BUTTON_HEADER) and when + // |is_temporary_test| is false. // |is_temporary_text| is true if invoked because of a temporary text change // or false if |temporary_text| should be ignored. // |inline_autocompletion|, |prefix_autocompletion|, and
diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc index 661fa95..f127838 100644 --- a/components/omnibox/browser/omnibox_field_trial.cc +++ b/components/omnibox/browser/omnibox_field_trial.cc
@@ -685,11 +685,6 @@ false); } -bool OmniboxFieldTrial::RichAutocompletionShowTitles() { - return base::GetFieldTrialParamByFeatureAsBool( - omnibox::kRichAutocompletion, kRichAutocompletionShowTitlesParam, false); -} - bool OmniboxFieldTrial::RichAutocompletionAutocompleteNonPrefixAll() { return base::GetFieldTrialParamByFeatureAsBool( omnibox::kRichAutocompletion, @@ -946,8 +941,6 @@ "RichAutocompletionAutocompleteTitlesMinChar"; const char OmniboxFieldTrial::kRichAutocompletionTwoLineOmniboxParam[] = "RichAutocompletionTwoLineOmnibox"; -const char OmniboxFieldTrial::kRichAutocompletionShowTitlesParam[] = - "RichAutocompletionShowTitles"; const char OmniboxFieldTrial::kRichAutocompletionAutocompleteNonPrefixAllParam[] = "RichAutocompletionAutocompleteNonPrefixAll";
diff --git a/components/omnibox/browser/omnibox_field_trial.h b/components/omnibox/browser/omnibox_field_trial.h index 82a701d..11952dc 100644 --- a/components/omnibox/browser/omnibox_field_trial.h +++ b/components/omnibox/browser/omnibox_field_trial.h
@@ -402,7 +402,6 @@ bool RichAutocompletionAutocompleteTitles(); size_t RichAutocompletionAutocompleteTitlesMinChar(); bool RichAutocompletionTwoLineOmnibox(); -bool RichAutocompletionShowTitles(); bool RichAutocompletionAutocompleteNonPrefixAll(); bool RichAutocompletionAutocompleteNonPrefixShortcutProvider(); size_t RichAutocompletionAutocompleteNonPrefixMinChar(); @@ -540,7 +539,6 @@ extern const char kRichAutocompletionAutocompleteTitlesParam[]; extern const char kRichAutocompletionAutocompleteTitlesMinCharParam[]; extern const char kRichAutocompletionTwoLineOmniboxParam[]; -extern const char kRichAutocompletionShowTitlesParam[]; extern const char kRichAutocompletionAutocompleteNonPrefixAllParam[]; extern const char kRichAutocompletionAutocompleteNonPrefixShortcutProviderParam[];
diff --git a/components/omnibox/browser/omnibox_popup_model.cc b/components/omnibox/browser/omnibox_popup_model.cc index c243497..6117483 100644 --- a/components/omnibox/browser/omnibox_popup_model.cc +++ b/components/omnibox/browser/omnibox_popup_model.cc
@@ -190,12 +190,12 @@ base::string16(), /*is_temporary_text=*/false, match.inline_autocompletion, match.prefix_autocompletion, match.split_autocompletion, keyword, - is_keyword_hint, match.fill_into_edit_additional_text); + is_keyword_hint, match.additional_text); } else { edit_model_->OnPopupDataChanged( match.fill_into_edit, /*is_temporary_text=*/true, base::string16(), base::string16(), {}, - keyword, is_keyword_hint, match.fill_into_edit_additional_text); + keyword, is_keyword_hint, base::string16()); } } }
diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc index 9b63bf6..0fc765c 100644 --- a/components/omnibox/browser/search_provider.cc +++ b/components/omnibox/browser/search_provider.cc
@@ -1537,8 +1537,6 @@ match.contents_class = navigation.match_contents_class(); match.description = navigation.description(); match.description_class = navigation.description_class(); - if (OmniboxFieldTrial::RichAutocompletionShowTitles()) - match.fill_into_edit_additional_text = match.description; match.RecordAdditionalInfo( kRelevanceFromServerKey,
diff --git a/components/omnibox/browser/shortcuts_backend.cc b/components/omnibox/browser/shortcuts_backend.cc index 3155a01a..926cead 100644 --- a/components/omnibox/browser/shortcuts_backend.cc +++ b/components/omnibox/browser/shortcuts_backend.cc
@@ -176,12 +176,8 @@ ? normalized_match->description_class : normalized_match->description_class_for_shortcuts; - auto fill_into_edit = normalized_match->swapped_fill_into_edit - ? normalized_match->fill_into_edit_additional_text - : normalized_match->fill_into_edit; - return ShortcutsDatabase::Shortcut::MatchCore( - fill_into_edit, normalized_match->destination_url, + normalized_match->fill_into_edit, normalized_match->destination_url, static_cast<int>(normalized_match->document_type), normalized_match->contents, StripMatchMarkers(normalized_match->contents_class), description,
diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java index 95d7272..98b4e3f 100644 --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java
@@ -168,14 +168,15 @@ }; // Long press the url text to copy it to the clipboard. viewParams.urlTitleLongClickCallback = - () -> Clipboard.getInstance().copyUrlToClipboard(mFullUrl.getSpec()); + () -> Clipboard.getInstance().copyUrlToClipboard(mFullUrl); // Work out the URL and connection message and status visibility. // TODO(crbug.com/1033178): dedupe the DomDistillerUrlUtils#getOriginalUrlFromDistillerUrl() // calls. String url = mDelegate.isShowingOfflinePage() ? mDelegate.getOfflinePageUrl() - : DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(webContents.getVisibleUrl()); + : DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(webContents.getVisibleUrl()) + .getSpec(); // This can happen if an invalid chrome-distiller:// url was entered. if (url == null) url = "";
diff --git a/components/page_load_metrics/common/page_end_reason.h b/components/page_load_metrics/common/page_end_reason.h index f6ab8eb..bf618f8 100644 --- a/components/page_load_metrics/common/page_end_reason.h +++ b/components/page_load_metrics/common/page_end_reason.h
@@ -17,7 +17,7 @@ enum PageEndReason { // Page lifetime has not yet ended (page is still active). Pages that // become hidden are logged in END_HIDDEN, so we expect low numbers in this - // bucket from the end of May 2020, i.e. in Navigation.PageEndReason2. + // bucket from the end of May 2020. END_NONE = 0, // The page was reloaded, possibly by the user. @@ -53,9 +53,14 @@ END_OTHER = 9, // The page became hidden but is still active. Added end of May 2020 for - // Navigation.PageEndReason2. + // Navigation.PageEndReason2. Deprecated Jan 2021 with + // Navigation.PageEndReason3. END_HIDDEN = 10, + // The page load has not yet ended but we need to flush the metrics because + // the app has entered the background. + END_APP_ENTER_BACKGROUND = 11, + PAGE_END_REASON_COUNT };
diff --git a/components/password_manager_strings_grdp/DIR_METADATA b/components/password_manager_strings_grdp/DIR_METADATA index 41b767ea..17b7d3f 100644 --- a/components/password_manager_strings_grdp/DIR_METADATA +++ b/components/password_manager_strings_grdp/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "UI>Browser>Passwords" +monorail: { + component: "UI>Browser>Passwords" }
diff --git a/components/payments/content/BUILD.gn b/components/payments/content/BUILD.gn index 163639e..e111e59 100644 --- a/components/payments/content/BUILD.gn +++ b/components/payments/content/BUILD.gn
@@ -40,6 +40,7 @@ "payment_request_converter.h", "payment_request_spec.cc", "payment_request_spec.h", + "payment_ui_observer.h", "payments_userdata_key.cc", "payments_userdata_key.h", "secure_payment_confirmation_app.cc",
diff --git a/components/payments/content/content_payment_request_delegate.h b/components/payments/content/content_payment_request_delegate.h index 60bef446..24babbc1 100644 --- a/components/payments/content/content_payment_request_delegate.h +++ b/components/payments/content/content_payment_request_delegate.h
@@ -24,6 +24,7 @@ class PaymentManifestWebDataService; class PaymentRequestDialog; class PaymentRequestDisplayManager; +class PaymentUIObserver; // The delegate for PaymentRequest that can use content. class ContentPaymentRequestDelegate : public PaymentRequestDelegate { @@ -74,6 +75,8 @@ virtual PaymentRequestDialog* GetDialogForTesting() = 0; + virtual const PaymentUIObserver* GetPaymentUIObserver() const = 0; + // Returns a weak pointer to this delegate. base::WeakPtr<ContentPaymentRequestDelegate> GetContentWeakPtr();
diff --git a/components/payments/content/payment_ui_observer.h b/components/payments/content/payment_ui_observer.h new file mode 100644 index 0000000..1ffb4441 --- /dev/null +++ b/components/payments/content/payment_ui_observer.h
@@ -0,0 +1,21 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_PAYMENTS_CONTENT_PAYMENT_UI_OBSERVER_H_ +#define COMPONENTS_PAYMENTS_CONTENT_PAYMENT_UI_OBSERVER_H_ + +namespace payments { + +// Interface for cross-platform tests to observe UI events. +class PaymentUIObserver { + public: + virtual void OnUIDisplayed() const = 0; + + protected: + virtual ~PaymentUIObserver() = default; +}; + +} // namespace payments + +#endif // COMPONENTS_PAYMENTS_CONTENT_PAYMENT_UI_OBSERVER_H_
diff --git a/components/payments/content/secure_payment_confirmation_controller.cc b/components/payments/content/secure_payment_confirmation_controller.cc index c84508a..39ba28b 100644 --- a/components/payments/content/secure_payment_confirmation_controller.cc +++ b/components/payments/content/secure_payment_confirmation_controller.cc
@@ -11,6 +11,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" +#include "components/payments/content/content_payment_request_delegate.h" #include "components/payments/content/payment_request.h" #include "components/payments/core/currency_formatter.h" #include "components/payments/core/method_strings.h" @@ -107,7 +108,8 @@ request_->state()->GetApplicationLocale()) .Format(total->amount->value)})); - view_ = SecurePaymentConfirmationView::Create(); + view_ = SecurePaymentConfirmationView::Create( + request_->state()->GetPaymentRequestDelegate()->GetPaymentUIObserver()); view_->ShowDialog( request_->web_contents(), model_.GetWeakPtr(), base::BindOnce(&SecurePaymentConfirmationController::OnConfirm,
diff --git a/components/payments/content/secure_payment_confirmation_view.h b/components/payments/content/secure_payment_confirmation_view.h index ea80e2b..e71d128f 100644 --- a/components/payments/content/secure_payment_confirmation_view.h +++ b/components/payments/content/secure_payment_confirmation_view.h
@@ -14,6 +14,7 @@ namespace payments { +class PaymentUIObserver; class SecurePaymentConfirmationModel; // Draws the user interface in the secure payment confirmation flow. Owned by @@ -23,7 +24,8 @@ using VerifyCallback = base::OnceCallback<void()>; using CancelCallback = base::OnceCallback<void()>; - static base::WeakPtr<SecurePaymentConfirmationView> Create(); + static base::WeakPtr<SecurePaymentConfirmationView> Create( + const PaymentUIObserver* payment_ui_observer); virtual ~SecurePaymentConfirmationView() = 0;
diff --git a/components/payments/content/secure_payment_confirmation_view_stub.cc b/components/payments/content/secure_payment_confirmation_view_stub.cc index 6241d62..73185d29 100644 --- a/components/payments/content/secure_payment_confirmation_view_stub.cc +++ b/components/payments/content/secure_payment_confirmation_view_stub.cc
@@ -8,7 +8,8 @@ // static base::WeakPtr<SecurePaymentConfirmationView> -SecurePaymentConfirmationView::Create() { +SecurePaymentConfirmationView::Create( + const PaymentUIObserver* payment_ui_observer) { return nullptr; }
diff --git a/components/payments/content/test_content_payment_request_delegate.cc b/components/payments/content/test_content_payment_request_delegate.cc index 0a26df9..dba39f2 100644 --- a/components/payments/content/test_content_payment_request_delegate.cc +++ b/components/payments/content/test_content_payment_request_delegate.cc
@@ -143,4 +143,9 @@ core_delegate_.CompleteFullCardRequest(); } +const PaymentUIObserver* +TestContentPaymentRequestDelegate::GetPaymentUIObserver() const { + return nullptr; +} + } // namespace payments
diff --git a/components/payments/content/test_content_payment_request_delegate.h b/components/payments/content/test_content_payment_request_delegate.h index 6f63a00..340c77c0 100644 --- a/components/payments/content/test_content_payment_request_delegate.h +++ b/components/payments/content/test_content_payment_request_delegate.h
@@ -21,6 +21,8 @@ namespace payments { +class PaymentUIObserver; + class TestContentPaymentRequestDelegate : public ContentPaymentRequestDelegate { public: TestContentPaymentRequestDelegate( @@ -65,6 +67,7 @@ autofill::TestAddressNormalizer* test_address_normalizer(); void DelayFullCardRequestCompletion(); void CompleteFullCardRequest(); + const PaymentUIObserver* GetPaymentUIObserver() const override; private: TestPaymentRequestDelegate core_delegate_;
diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc index bec42e4..6e98cd0 100644 --- a/components/permissions/permission_request_manager.cc +++ b/components/permissions/permission_request_manager.cc
@@ -796,12 +796,6 @@ } } - if (!prediction_grant_likelihood_.has_value()) { - prediction_grant_likelihood_ = - notification_permission_ui_selectors_[selector_index] - ->PredictedGrantLikelihoodForUKM(); - } - // We have already made a decision because of a higher priority selector // therefore this selector's decision can be discarded. if (current_request_ui_to_use_.has_value()) @@ -814,12 +808,20 @@ while (decision_index < selector_decisions_.size() && selector_decisions_[decision_index].has_value()) { const UiDecision& current_decision = - selector_decisions_[decision_index++].value(); + selector_decisions_[decision_index].value(); + + if (!prediction_grant_likelihood_.has_value()) { + prediction_grant_likelihood_ = + notification_permission_ui_selectors_[decision_index] + ->PredictedGrantLikelihoodForUKM(); + } if (current_decision.quiet_ui_reason.has_value()) { current_request_ui_to_use_ = current_decision; break; } + + ++decision_index; } // All decisions have been considered and none was conclusive.
diff --git a/components/permissions/permission_request_manager.h b/components/permissions/permission_request_manager.h index ede1fc3..6a9f374 100644 --- a/components/permissions/permission_request_manager.h +++ b/components/permissions/permission_request_manager.h
@@ -175,6 +175,11 @@ PermissionPrompt* view_for_testing() { return view_.get(); } + base::Optional<PermissionUmaUtil::PredictionGrantLikelihood> + prediction_grant_likelihood_for_testing() { + return prediction_grant_likelihood_; + } + private: friend class test::PermissionRequestManagerTestApi; friend class content::WebContentsUserData<PermissionRequestManager>;
diff --git a/components/permissions/permission_request_manager_unittest.cc b/components/permissions/permission_request_manager_unittest.cc index 3aa022b..090486e5 100644 --- a/components/permissions/permission_request_manager_unittest.cc +++ b/components/permissions/permission_request_manager_unittest.cc
@@ -687,10 +687,12 @@ public: explicit MockNotificationPermissionUiSelector( base::Optional<QuietUiReason> quiet_ui_reason, - bool async) { - quiet_ui_reason_ = quiet_ui_reason; - async_ = async; - } + base::Optional<PermissionUmaUtil::PredictionGrantLikelihood> + prediction_likelihood, + bool async) + : quiet_ui_reason_(quiet_ui_reason), + prediction_likelihood_(prediction_likelihood), + async_(async) {} void SelectUiToUse(PermissionRequest* request, DecisionMadeCallback callback) override { @@ -703,16 +705,26 @@ } } - static void CreateForManager(PermissionRequestManager* manager, - base::Optional<QuietUiReason> quiet_ui_reason, - bool async) { + base::Optional<PermissionUmaUtil::PredictionGrantLikelihood> + PredictedGrantLikelihoodForUKM() override { + return prediction_likelihood_; + } + + static void CreateForManager( + PermissionRequestManager* manager, + base::Optional<QuietUiReason> quiet_ui_reason, + bool async, + base::Optional<PermissionUmaUtil::PredictionGrantLikelihood> + prediction_likelihood = base::nullopt) { manager->add_notification_permission_ui_selector_for_testing( - std::make_unique<MockNotificationPermissionUiSelector>(quiet_ui_reason, - async)); + std::make_unique<MockNotificationPermissionUiSelector>( + quiet_ui_reason, prediction_likelihood, async)); } private: base::Optional<QuietUiReason> quiet_ui_reason_; + base::Optional<PermissionUmaUtil::PredictionGrantLikelihood> + prediction_likelihood_; bool async_; }; @@ -867,6 +879,61 @@ } } +TEST_P(PermissionRequestManagerTest, SelectorsPredictionLikelihood) { + using QuietUiReason = NotificationPermissionUiSelector::QuietUiReason; + using PredictionLikelihood = PermissionUmaUtil::PredictionGrantLikelihood; + const auto VeryLikely = PredictionLikelihood:: + PermissionSuggestion_Likelihood_DiscretizedLikelihood_VERY_LIKELY; + const auto Neutral = PredictionLikelihood:: + PermissionSuggestion_Likelihood_DiscretizedLikelihood_NEUTRAL; + + const struct { + std::vector<bool> enable_quiet_uis; + std::vector<base::Optional<PredictionLikelihood>> prediction_likelihoods; + base::Optional<PredictionLikelihood> expected_prediction_likelihood; + } kTests[] = { + // Sanity check: prediction likelihood is populated correctly. + {{true}, {VeryLikely}, VeryLikely}, + {{false}, {Neutral}, Neutral}, + + // Prediction likelihood is populated only if the selector was considered. + {{true, true}, {base::nullopt, VeryLikely}, base::nullopt}, + {{false, true}, {base::nullopt, VeryLikely}, VeryLikely}, + {{false, false}, {base::nullopt, VeryLikely}, VeryLikely}, + + // First considered selector is preserved. + {{true, true}, {Neutral, VeryLikely}, Neutral}, + {{false, true}, {Neutral, VeryLikely}, Neutral}, + {{false, false}, {Neutral, VeryLikely}, Neutral}, + }; + + for (const auto& test : kTests) { + manager_->clear_notification_permission_ui_selector_for_testing(); + for (size_t i = 0; i < test.enable_quiet_uis.size(); ++i) { + MockNotificationPermissionUiSelector::CreateForManager( + manager_, + test.enable_quiet_uis[i] + ? base::Optional<QuietUiReason>(QuietUiReason::kEnabledInPrefs) + : base::nullopt, + false /* async */, test.prediction_likelihoods[i]); + } + + MockPermissionRequest request("foo", RequestType::kNotifications, + PermissionRequestGestureType::GESTURE); + + manager_->AddRequest(web_contents()->GetMainFrame(), &request); + WaitForBubbleToBeShown(); + + EXPECT_TRUE(prompt_factory_->is_visible()); + EXPECT_TRUE(prompt_factory_->RequestTypeSeen(request.GetRequestType())); + EXPECT_EQ(test.expected_prediction_likelihood, + manager_->prediction_grant_likelihood_for_testing()); + + Accept(); + EXPECT_TRUE(request.granted()); + } +} + INSTANTIATE_TEST_SUITE_P(All, PermissionRequestManagerTest, ::testing::Values(false, true));
diff --git a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc index d63300cd..7349ab7e 100644 --- a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc +++ b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
@@ -204,6 +204,19 @@ return policy_data.SerializeAsString(); } +em::DeviceManagementRequest GetPolicyRequest() { + em::DeviceManagementRequest policy_request; + + em::PolicyFetchRequest* policy_fetch_request = + policy_request.mutable_policy_request()->add_requests(); + policy_fetch_request->set_policy_type(dm_protocol::kChromeUserPolicyType); + policy_fetch_request->set_signature_type(em::PolicyFetchRequest::SHA1_RSA); + policy_fetch_request->set_verification_key_hash(kPolicyVerificationKeyHash); + policy_fetch_request->set_device_dm_token(kDeviceDMToken); + + return policy_request; +} + em::DeviceManagementResponse GetPolicyResponse() { em::DeviceManagementResponse policy_response; policy_response.mutable_policy_response()->add_responses()->set_policy_data( @@ -279,13 +292,6 @@ data.SerializeAsString(), cert_based_register_request->mutable_signed_request()); - em::PolicyFetchRequest* policy_fetch_request = - policy_request_.mutable_policy_request()->add_requests(); - policy_fetch_request->set_policy_type(dm_protocol::kChromeUserPolicyType); - policy_fetch_request->set_signature_type(em::PolicyFetchRequest::SHA1_RSA); - policy_fetch_request->set_verification_key_hash(kPolicyVerificationKeyHash); - policy_fetch_request->set_device_dm_token(kDeviceDMToken); - registration_response_.mutable_register_response() ->set_device_management_token(kDMToken); @@ -498,7 +504,6 @@ em::DeviceManagementRequest reregistration_request_; em::DeviceManagementRequest cert_based_registration_request_; em::DeviceManagementRequest enrollment_token_request_; - em::DeviceManagementRequest policy_request_; em::DeviceManagementRequest unregistration_request_; em::DeviceManagementRequest upload_machine_certificate_request_; em::DeviceManagementRequest upload_enrollment_certificate_request_; @@ -577,7 +582,7 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + GetPolicyRequest().SerializePartialAsString()); EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); CheckPolicyResponse(policy_response); } @@ -603,7 +608,7 @@ EXPECT_THAT(query_params_, Contains(Pair(dm_protocol::kParamOAuthToken, kOAuthToken))); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + GetPolicyRequest().SerializePartialAsString()); EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); CheckPolicyResponse(policy_response); } @@ -635,7 +640,7 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + GetPolicyRequest().SerializePartialAsString()); EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); CheckPolicyResponse(policy_response); } @@ -673,7 +678,7 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + GetPolicyRequest().SerializePartialAsString()); EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); CheckPolicyResponse(policy_response); } @@ -713,7 +718,7 @@ EXPECT_THAT(query_params_, Contains(Pair(dm_protocol::kParamOAuthToken, kOAuthToken))); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + GetPolicyRequest().SerializePartialAsString()); EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); CheckPolicyResponse(policy_response); } @@ -750,7 +755,7 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + GetPolicyRequest().SerializePartialAsString()); EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); CheckPolicyResponse(policy_response); } @@ -890,6 +895,8 @@ } TEST_F(CloudPolicyClientTest, PolicyUpdate) { + const em::DeviceManagementRequest policy_request = GetPolicyRequest(); + RegisterClient(); { @@ -903,7 +910,7 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + policy_request.SerializePartialAsString()); CheckPolicyResponse(policy_response); } @@ -920,25 +927,28 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + policy_request.SerializePartialAsString()); EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); CheckPolicyResponse(policy_response); } } TEST_F(CloudPolicyClientTest, PolicyFetchWithMetaData) { + const int kPublicKeyVersion = 42; + const base::Time kTimestamp(base::Time::UnixEpoch() + + base::TimeDelta::FromDays(20)); + em::DeviceManagementRequest policy_request = GetPolicyRequest(); + em::PolicyFetchRequest* policy_fetch_request = + policy_request.mutable_policy_request()->mutable_requests(0); + policy_fetch_request->set_timestamp(kTimestamp.ToJavaTime()); + policy_fetch_request->set_public_key_version(kPublicKeyVersion); + em::DeviceManagementResponse policy_response = GetPolicyResponse(); RegisterClient(); - const base::Time timestamp(base::Time::UnixEpoch() + - base::TimeDelta::FromDays(20)); - client_->set_last_policy_timestamp(timestamp); - client_->set_public_key_version(42); - em::PolicyFetchRequest* policy_fetch_request = - policy_request_.mutable_policy_request()->mutable_requests(0); - policy_fetch_request->set_timestamp(timestamp.ToJavaTime()); - policy_fetch_request->set_public_key_version(42); + client_->set_last_policy_timestamp(kTimestamp); + client_->set_public_key_version(kPublicKeyVersion); ExpectAndCaptureJob(/*response=*/policy_response); EXPECT_CALL(observer_, OnPolicyFetched(_)); @@ -948,22 +958,27 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + policy_request.SerializePartialAsString()); CheckPolicyResponse(policy_response); } TEST_F(CloudPolicyClientTest, PolicyFetchWithInvalidation) { + const int64_t kInvalidationVersion = 12345; + const std::string kInvalidationPayload("12345"); + + em::DeviceManagementRequest policy_request = GetPolicyRequest(); + em::PolicyFetchRequest* policy_fetch_request = + policy_request.mutable_policy_request()->mutable_requests(0); + policy_fetch_request->set_invalidation_version(kInvalidationVersion); + policy_fetch_request->set_invalidation_payload(kInvalidationPayload); + em::DeviceManagementResponse policy_response = GetPolicyResponse(); RegisterClient(); int64_t previous_version = client_->fetched_invalidation_version(); - client_->SetInvalidationInfo(12345, "12345"); + client_->SetInvalidationInfo(kInvalidationVersion, kInvalidationPayload); EXPECT_EQ(previous_version, client_->fetched_invalidation_version()); - em::PolicyFetchRequest* policy_fetch_request = - policy_request_.mutable_policy_request()->mutable_requests(0); - policy_fetch_request->set_invalidation_version(12345); - policy_fetch_request->set_invalidation_payload("12345"); ExpectAndCaptureJob(/*response=*/policy_response); EXPECT_CALL(observer_, OnPolicyFetched(_)); @@ -973,7 +988,7 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + policy_request.SerializePartialAsString()); CheckPolicyResponse(policy_response); EXPECT_EQ(12345, client_->fetched_invalidation_version()); } @@ -995,7 +1010,7 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + GetPolicyRequest().SerializePartialAsString()); CheckPolicyResponse(policy_response); EXPECT_EQ(-12345, client_->fetched_invalidation_version()); } @@ -1003,6 +1018,7 @@ // Tests that previous OAuth token is no longer sent in policy fetch after its // value was cleared. TEST_F(CloudPolicyClientTest, PolicyFetchClearOAuthToken) { + em::DeviceManagementRequest policy_request = GetPolicyRequest(); const em::DeviceManagementResponse policy_response = GetPolicyResponse(); RegisterClient(); @@ -1018,7 +1034,7 @@ EXPECT_THAT(query_params_, Contains(Pair(dm_protocol::kParamOAuthToken, kOAuthToken))); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + policy_request.SerializePartialAsString()); CheckPolicyResponse(policy_response); ExpectAndCaptureJob(/*response=*/policy_response); @@ -1030,11 +1046,12 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + policy_request.SerializePartialAsString()); CheckPolicyResponse(policy_response); } TEST_F(CloudPolicyClientTest, BadPolicyResponse) { + const em::DeviceManagementRequest policy_request = GetPolicyRequest(); em::DeviceManagementResponse policy_response; RegisterClient(); @@ -1047,7 +1064,7 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + policy_request.SerializePartialAsString()); EXPECT_FALSE(client_->GetPolicyFor(policy_type_, std::string())); EXPECT_EQ(DM_STATUS_RESPONSE_DECODING_ERROR, client_->status()); @@ -1063,7 +1080,7 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + policy_request.SerializePartialAsString()); EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); CheckPolicyResponse(policy_response); } @@ -1171,11 +1188,11 @@ } // Make a policy fetch. + em::DeviceManagementRequest request; DeviceManagementService::JobConfiguration::JobType job_type; EXPECT_CALL(service_, StartJob(_)) .WillOnce(DoAll( - service_.CaptureJobType(&job_type), - service_.CaptureRequest(&policy_request_), + service_.CaptureJobType(&job_type), service_.CaptureRequest(&request), service_.StartJobAsync(net::OK, DeviceManagementService::kSuccess, policy_response))); EXPECT_CALL(observer_, OnPolicyFetched(_)); @@ -1187,9 +1204,8 @@ job_type); // Verify that the request includes the expected namespaces. - ASSERT_TRUE(policy_request_.has_policy_request()); - const em::DevicePolicyRequest& policy_request = - policy_request_.policy_request(); + ASSERT_TRUE(request.has_policy_request()); + const em::DevicePolicyRequest& policy_request = request.policy_request(); ASSERT_EQ(2, policy_request.requests_size()); for (int i = 0; i < policy_request.requests_size(); ++i) { const em::PolicyFetchRequest& fetch_request = policy_request.requests(i); @@ -1427,7 +1443,7 @@ job_type_); EXPECT_EQ(auth_data_, DMAuth::FromDMToken(kDMToken)); EXPECT_EQ(job_request_.SerializePartialAsString(), - policy_request_.SerializePartialAsString()); + GetPolicyRequest().SerializePartialAsString()); CheckPolicyResponse(policy_response); // upload_status_job->SendResponse(DM_STATUS_SUCCESS,
diff --git a/components/policy/core/common/policy_loader_mac.mm b/components/policy/core/common/policy_loader_mac.mm index f56505d1..db8b33ce9 100644 --- a/components/policy/core/common/policy_loader_mac.mm +++ b/components/policy/core/common/policy_loader_mac.mm
@@ -188,7 +188,7 @@ void PolicyLoaderMac::LoadPolicyForDomain(PolicyDomain domain, const std::string& domain_name, PolicyBundle* bundle) { - std::string id_prefix(base::mac::BaseBundleID()); + std::string id_prefix(base::SysCFStringRefToUTF8(application_id_)); id_prefix.append(".").append(domain_name).append("."); const ComponentMap* components = schema_map()->GetComponents(domain);
diff --git a/components/policy/proto/record.proto b/components/policy/proto/record.proto index d046b39..557b418 100644 --- a/components/policy/proto/record.proto +++ b/components/policy/proto/record.proto
@@ -66,7 +66,7 @@ // Hash of the public key used to do encryption. Used to identity the // private key for decryption. If no key_id is present, it is assumed that // |key| has been transferred in plaintext. - optional uint64 public_key_id = 2; + optional int64 public_key_id = 2; } // Tracking information for what order a record appears in. @@ -78,11 +78,11 @@ // certain number is absent when higher are encountered, it indicates that // some records have been lost and there is a gap in the records stream // (what to do with that is a decision that the caller needs to make). - optional uint64 sequencing_id = 1; + optional int64 sequencing_id = 1; // Generation ID (required). Unique per device and priority. Generated anew // when previous record digest is not found at startup (e.g. after powerwash). - optional uint64 generation_id = 2; + optional int64 generation_id = 2; // Priority (required). optional Priority priority = 3;
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json index 3d664b4d..ff444733 100644 --- a/components/policy/resources/policy_templates.json +++ b/components/policy/resources/policy_templates.json
@@ -4479,7 +4479,7 @@ 'future_on' : ['chrome_os'], 'example_value': False, 'features':{ - 'dynamic_refresh': False, + 'dynamic_refresh': True, 'per_profile': True, }, 'items': [ @@ -24050,14 +24050,11 @@ 'id': 791, 'caption': 'Browsing Data Lifetime Settings', 'tags': [], - 'desc': '''Configures browsing data lifetime settings for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. - This policy controls the time to live of selected browsing data. + 'desc': '''Configures browsing data lifetime settings for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. This policy allows admins to configure (per data-type) when data is deleted by <ph name="PRODUCT_NAME">$1<ex>Chrome</ex></ph>. This is useful for customers that work with sensitive customer data. The policy will only take effect if <ph name="SYNC_DISABLED_POLICY_NAME">SyncDisabled</ph> is set to true. + The available data types are <ph name="DATA_TYPE_BROWSING_HISTORY">'browsing_history'</ph>, <ph name="DATA_TYPE_DOWNLOAD_HISTORY">'download_history'</ph>, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA">'cookies_and_other_site_data'</ph>, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES">'cached_images_and_files'</ph>, <ph name="DATA_TYPE_PASSWORD">'password_signin'</ph>, <ph name="DATA_TYPE_AUTOFILL">'autofill'</ph>, <ph name="DATA_TYPE_SITE_SETTINGS">'site_settings'</ph> and <ph name="DATA_TYPE_HOSTED_APP_DATA">'hosted_app_data'</ph>. - Chrome will regularly remove data of selected types that is older than <ph name="TIME_TO_LIVE_IN_HOURS">'time_to_live_in_hours'</ph>. As this deletion only happens in certain intervals, some data might live for slightly longer but never more than twice its expected <ph name="TIME_TO_LIVE_IN_HOURS">'time_to_live_in_hours'</ph>. - This policy requires the <ph name="SYNC_DISABLED_POLICY_NAME">SyncDisabled</ph> policy to be set to true, otherwise it will be ignored. - If this policy is set at platform level, Sync should be disabled at platform level. - If this policy is set at user level, Sync should be disabled for that user in order for this policy to take effect. - ''' + + <ph name="PRODUCT_NAME">$1<ex>Chrome</ex></ph> will automatically remove data of selected types that is older than <ph name="TIME_TO_LIVE_IN_HOURS">'time_to_live_in_hours'</ph>. The minimum value that can be set is 1 hour. In some rare cases the data may take longer to delete, but the data will eventually be deleted.''' }, { 'name': 'LacrosAllowed',
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb index 622b69d6..733121e 100644 --- a/components/policy/resources/policy_templates_es-419.xtb +++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -410,6 +410,7 @@ <translation id="1561424797596341174">Anulaciones de políticas en compilaciones de depuración del host de acceso remoto</translation> <translation id="1561967320164410511">U2F más extensiones para atestación individual</translation> <translation id="1575015449587326319">Política de configuración para el Conector de Chrome Enterprise OnFileDownloaded</translation> +<translation id="1576684007051137182">Inhabilita la cámara, las funciones de análisis y de Web Store y la configuración del navegador y del SO</translation> <translation id="1583248206450240930">Utilizar <ph name="PRODUCT_FRAME_NAME" /> de manera predeterminada</translation> <translation id="1588240398285670601">Configuración del navegador</translation> <translation id="1593245608325508847">Si estableces la política, se activará la función de acceso restringido de Chrome en G Suite, y los usuarios no podrán cambiar esta configuración. Los usuarios solo podrán acceder a las herramientas de Google mediante cuentas de dominios específicos (para permitir cuentas de gmail o googlemail, debes agregar consumer_accounts a la lista de dominios). Esta configuración no permite que los usuarios accedan ni agreguen una cuenta secundaria en un dispositivo administrado que requiera autenticación de Google, en caso de que esa cuenta no pertenezca a uno de los dominios permitidos de forma explícita. @@ -2299,6 +2300,7 @@ <translation id="4138655880188755661">Límite de tiempo</translation> <translation id="4147818922357566987">Habilitar solo variaciones relacionadas con correcciones críticas</translation> <translation id="4150201353443180367">Pantalla</translation> +<translation id="415445772247959702">Web Store (compatible desde la versión 89)</translation> <translation id="4157003184375321727">Informar la versión de firmware y SO.</translation> <translation id="4157594634940419685">Permitir el acceso a las impresoras de CUPS nativas</translation> <translation id="4160962198980004898">Fuente de la dirección MAC del dispositivo cuando está conectado</translation>
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb index 758d95f..d3c53dc 100644 --- a/components/policy/resources/policy_templates_es.xtb +++ b/components/policy/resources/policy_templates_es.xtb
@@ -410,6 +410,7 @@ <translation id="1561424797596341174">La política anula las compilaciones de depuración del host de acceso remoto.</translation> <translation id="1561967320164410511">U2F y extensiones de confirmación individual</translation> <translation id="1575015449587326319">Política de configuración del conector OnFileDownloaded de Chrome Enterprise Connectors</translation> +<translation id="1576684007051137182">Inhabilita la cámara, los ajustes del navegador y del sistema operativo, y las funciones de análisis y de Web Store</translation> <translation id="1583248206450240930">Utilizar <ph name="PRODUCT_FRAME_NAME" /> de forma predeterminada</translation> <translation id="1588240398285670601">Configuración del navegador</translation> <translation id="1593245608325508847">Si esta política se define, se activará la función de inicio de sesión restringido de Chrome en G Suite. Los usuarios no podrán cambiar esta opción. Los usuarios solo podrán acceder a las herramientas de Google desde cuentas de los dominios especificados (para dar permiso a cuentas de gmail o googlemail, añade consumer_accounts a la lista de dominios). Este ajuste impide que los usuarios inicien sesión y añadan una cuenta secundaria en un dispositivo gestionado que requiera autenticación de Google si esa cuenta no pertenece a uno de los dominios explícitamente permitidos. @@ -2308,6 +2309,7 @@ <translation id="4138655880188755661">Límite de tiempo</translation> <translation id="4147818922357566987">Habilitar variaciones referentes solo a correcciones críticas</translation> <translation id="4150201353443180367">Pantalla</translation> +<translation id="415445772247959702">Web Store (compatible a partir de la versión 89)</translation> <translation id="4157003184375321727">Informar de la versión del firmware y del sistema operativo</translation> <translation id="4157594634940419685">Permitir el acceso a impresoras CUPS nativas</translation> <translation id="4160962198980004898">Fuente de la dirección MAC del dispositivo cuando esté conectado a una base</translation>
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb index 8efc443..8c288de 100644 --- a/components/policy/resources/policy_templates_id.xtb +++ b/components/policy/resources/policy_templates_id.xtb
@@ -409,6 +409,7 @@ <translation id="1561424797596341174">Penggantian kebijakan untuk versi Debug host akses jarak jauh</translation> <translation id="1561967320164410511">U2F ditambah beberapa ekstensi untuk masing-masing pengesahan</translation> <translation id="1575015449587326319">Kebijakan konfigurasi untuk Konektor Chrome Enterprise OnFileDownloaded</translation> +<translation id="1576684007051137182">Mengonfigurasi kamera, setelan browser, setelan OS, serta fitur pemindaian dan Web Store untuk dinonaktifkan</translation> <translation id="1583248206450240930">Gunakan <ph name="PRODUCT_FRAME_NAME" /> jika tidak diubah</translation> <translation id="1588240398285670601">Setelan Browser</translation> <translation id="1593245608325508847">Jika kebijakan ditetapkan, fitur login terbatas Chrome di G Suite akan diaktifkan dan pengguna tidak dapat mengubah setelan ini. Pengguna hanya dapat mengakses alat Google menggunakan akun dari domain yang telah ditentukan (untuk mengizinkan akun gmail atau googlemail, tambahkan consumer_accounts ke daftar domain). Setelan ini mencegah pengguna untuk login dan menambahkan Akun Sekunder di perangkat terkelola yang memerlukan autentikasi Google, jika akun tersebut bukan milik salah satu domain yang diizinkan secara eksplisit. @@ -2308,6 +2309,7 @@ <translation id="4138655880188755661">Batas Waktu</translation> <translation id="4147818922357566987">Aktifkan variasi terkait perbaikan penting saja</translation> <translation id="4150201353443180367">Tampilan</translation> +<translation id="415445772247959702">Web Store (didukung sejak versi 89)</translation> <translation id="4157003184375321727">Laporkan versi OS dan firmware</translation> <translation id="4157594634940419685">Izinkan akses ke printer CUPS native</translation> <translation id="4160962198980004898">Sumber alamat MAC perangkat saat dipasang di dok</translation>
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb index 2ea7def7..c57d836 100644 --- a/components/policy/resources/policy_templates_it.xtb +++ b/components/policy/resources/policy_templates_it.xtb
@@ -81,7 +81,8 @@ <translation id="1087707496788636333">L'elenco dei criteri di Chrome Enterprise è in fase di trasferimento. Aggiorna i tuoi preferiti con l'URL <ph name="POLICY_DOCUMENTATION_URL" />.</translation> <translation id="1095209545735032039">Blocca l'API Serial su questi siti</translation> <translation id="1096105751829466145">Provider di ricerca predefinito</translation> -<translation id="1099282607296956954">Attiva isolamento sito per ogni sito</translation> +<translation id="1099282607296956954">Attiva isolamento dei siti per ogni sito +</translation> <translation id="1117535567637097036">I gestori di protocollo impostati tramite questa norma non sono utilizzati durante la gestione degli intent di Android.</translation> <translation id="1118093128235245168">Consenti ai siti di chiedere all'utente di concedere l'accesso a un dispositivo USB collegato</translation> <translation id="111910763555783249">Impostazioni di notifica</translation> @@ -2617,7 +2618,8 @@ Se questo criterio non viene impostato o viene attivato, i controlli dell'intercettazione DNS vengono eseguiti. Se viene disattivato, i controlli non vengono eseguiti.</translation> <translation id="4700190441681139987">Non consentire a nessun sito di accedere ai sensori</translation> <translation id="4703402283970867140">Attiva il modello di oscuramento smart per ritardare l'oscuramento dello schermo</translation> -<translation id="4722122254122249791">Attiva isolamento sito per origini specificate</translation> +<translation id="4722122254122249791">Attiva isolamento dei siti per origini specificate +</translation> <translation id="4723122879352880315">Questa impostazione consente agli utenti di eseguire l'autenticazione su un proxy gestito protetto tramite l'autenticazione NTLM usando le credenziali di accesso di <ph name="PRODUCT_OS_NAME" />. Se questo criterio viene impostato su Falso o se non viene configurato, non verranno usate le credenziali di accesso di <ph name="PRODUCT_OS_NAME" /> per l'autenticazione della rete.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb index 8182303..6612742e 100644 --- a/components/policy/resources/policy_templates_ja.xtb +++ b/components/policy/resources/policy_templates_ja.xtb
@@ -406,6 +406,7 @@ <translation id="1561424797596341174">リモート アクセス ホストの Debug ビルドでのポリシー オーバーライド</translation> <translation id="1561967320164410511">U2F と個人認証用拡張機能</translation> <translation id="1575015449587326319">OnFileDownloaded Chrome Enterprise コネクタの設定ポリシー</translation> +<translation id="1576684007051137182">カメラ、ブラウザ設定、OS 設定、スキャン、ウェブストア機能を無効に設定します</translation> <translation id="1583248206450240930">デフォルトで <ph name="PRODUCT_FRAME_NAME" /> を使用する</translation> <translation id="1588240398285670601">ブラウザの設定</translation> <translation id="1593245608325508847">このポリシーでは、Chrome の制限付きログイン機能を G Suite で有効にするとともに、ユーザーがこの設定を変更できないようにします。ユーザーは、指定ドメインのアカウントでのみ、Google のツールにアクセスできます(Gmail アカウントまたは GoogleMail アカウントを許可する場合は、consumer_accounts をドメインリストに追加します)。この設定により、Google の認証を必要とする管理対象のデバイス上では、アカウントが明示的に許可されたドメインのいずれにも属していない場合に、ユーザーは予備のアカウントへのログインや追加ができなくなります。 @@ -2267,6 +2268,7 @@ <translation id="4138655880188755661">時間制限</translation> <translation id="4147818922357566987">重要な修正に関するバリエーションのみ有効にする</translation> <translation id="4150201353443180367">表示</translation> +<translation id="415445772247959702">ウェブストア(バージョン 89 以降でサポート)</translation> <translation id="4157003184375321727">OS とファームウェアのバージョンを報告する</translation> <translation id="4157594634940419685">ネイティブの CUPS プリンタへのアクセスを許可する</translation> <translation id="4160962198980004898">ホルダー装着時のデバイスの MAC アドレスソース</translation>
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb index 04409b2a..0f08003 100644 --- a/components/policy/resources/policy_templates_ko.xtb +++ b/components/policy/resources/policy_templates_ko.xtb
@@ -410,6 +410,7 @@ <translation id="1561424797596341174">정책은 원격 액세스 호스트의 디버그 빌드를 무시합니다.</translation> <translation id="1561967320164410511">개별 인증을 위한 U2F 및 확장 프로그램</translation> <translation id="1575015449587326319">OnFileDownloaded Chrome Enterprise Connector 설정 정책</translation> +<translation id="1576684007051137182">카메라, 브라우저 설정, OS 설정, 스캔, 웹 스토어 기능이 중지되도록 설정</translation> <translation id="1583248206450240930">기본으로 <ph name="PRODUCT_FRAME_NAME" /> 사용</translation> <translation id="1588240398285670601">브라우저 설정</translation> <translation id="1593245608325508847">이 정책을 설정하면 G Suite 내 Chrome의 제한된 로그인 기능이 사용 설정되고 사용자가 설정을 변경할 수 없습니다. 사용자는 특정 도메인의 계정을 사용해서만 gmail 또는 googlemail 계정을 허용하고 도메인 목록에 consumer_accounts를 추가하기 위해 Google 도구에 액세스할 수 있습니다. 이 설정은 보조 계정이 명시적으로 허용된 도메인에 속하지 않은 경우 사용자가 Google 인증이 필요한 관리 대상 기기에 보조 계정을 추가하고 보조 계정으로 로그인하는 것을 차단합니다. @@ -2302,6 +2303,7 @@ <translation id="4138655880188755661">시간 제한</translation> <translation id="4147818922357566987">중요한 수정사항과 관련된 변형만 사용</translation> <translation id="4150201353443180367">디스플레이</translation> +<translation id="415445772247959702">웹 스토어(버전 89부터 지원됨)</translation> <translation id="4157003184375321727">OS 및 펌웨어 버전을 보고합니다.</translation> <translation id="4157594634940419685">자체 CUPS 프린터 액세스 허용</translation> <translation id="4160962198980004898">도킹 시 기기 MAC 주소의 소스입니다.</translation>
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb index 27cea476..b9b40e7 100644 --- a/components/policy/resources/policy_templates_pt-BR.xtb +++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -5118,7 +5118,7 @@ Não é necessário definir essas configurações manualmente. Modelos fáceis de usar para Windows, Mac e Linux estão disponíveis para download em <ph name="POLICY_TEMPLATE_DOWNLOAD_URL" />. -O modo recomendado para configurar políticas no Windows é por meio de GPO, embora o aprovisionamento de políticas por meio de registro ainda seja compatível com instâncias do Windows que estejam vinculadas a um domínio <ph name="MS_AD_NAME" />.</translation> +O modo recomendado para configurar políticas no Windows é por meio de GPO, embora o provisionamento de políticas por meio de registro ainda seja compatível com instâncias do Windows que estejam vinculadas a um domínio <ph name="MS_AD_NAME" />.</translation> <translation id="8261874086461353268">Se a política for definida, será possível mesclar as políticas selecionadas quando elas vierem de fontes diferentes com os mesmos escopos e níveis. Essa mesclagem ocorre nas chaves de primeiro nível do dicionário de cada fonte. A chave da fonte de maior prioridade tem precedência. Se uma política estiver na lista e houver um conflito entre fontes com:
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb index 78b557b4..66572fe 100644 --- a/components/policy/resources/policy_templates_th.xtb +++ b/components/policy/resources/policy_templates_th.xtb
@@ -400,6 +400,7 @@ <translation id="1561424797596341174">การลบล้างนโยบายสำหรับเวอร์ชันการแก้ปัญหาของโฮสต์การเข้าถึงระยะไกล</translation> <translation id="1561967320164410511">U2F พร้อมส่วนขยายสำหรับการรับรองแต่ละรายการ</translation> <translation id="1575015449587326319">นโยบายการกำหนดค่าสำหรับเครื่องมือเชื่อมต่อ Chrome Enterprise OnFileDownloaded</translation> +<translation id="1576684007051137182">กำหนดค่ากล้อง การตั้งค่าเบราว์เซอร์ การตั้งค่าระบบปฏิบัติการ ฟีเจอร์การสแกน และฟีเจอร์ในเว็บสโตร์ที่จะปิดใช้</translation> <translation id="1583248206450240930">ใช้ <ph name="PRODUCT_FRAME_NAME" /> โดยค่าเริ่มต้น</translation> <translation id="1588240398285670601">การตั้งค่าเบราว์เซอร์</translation> <translation id="1593245608325508847">การตั้งค่านโยบายจะเปิดฟีเจอร์การลงชื่อเข้าใช้แบบจำกัดของ Chrome ใน G Suite และป้องกันไม่ให้ผู้ใช้เปลี่ยนการตั้งค่านี้ ผู้ใช้จะเข้าถึงเครื่องมือของ Google ได้โดยใช้บัญชีจากโดเมนที่ระบุเท่านั้น (หากต้องการอนุญาตบัญชี gmail หรือ googlemail ให้เพิ่ม consumer_accounts ลงในรายการโดเมน) การตั้งค่านี้จะป้องกันไม่ให้ผู้ใช้ลงชื่อเข้าใช้และเพิ่มบัญชีรองในอุปกรณ์ที่จัดการซึ่งต้องมีการตรวจสอบสิทธิ์จาก Google หากบัญชีดังกล่าวไม่ได้อยู่ในโดเมนที่อนุญาตอย่างชัดแจ้ง @@ -2270,6 +2271,7 @@ <translation id="4138655880188755661">การจำกัดเวลา</translation> <translation id="4147818922357566987">เปิดใช้รูปแบบต่างๆ ที่เกี่ยวข้องกับการแก้ไขที่สำคัญเท่านั้น</translation> <translation id="4150201353443180367">การแสดงผล</translation> +<translation id="415445772247959702">เว็บสโตร์ (เริ่มรองรับตั้งแต่เวอร์ชัน 89)</translation> <translation id="4157003184375321727">รายงานรุ่นของระบบปฏิบัติการและเฟิร์มแวร์</translation> <translation id="4157594634940419685">อนุญาตให้เข้าถึงเครื่องพิมพ์ CUPS ดั้งเดิม</translation> <translation id="4160962198980004898">แหล่งที่มาของที่อยู่ MAC ของอุปกรณ์เมื่อเสียบแท่นชาร์จอยู่</translation>
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb index 6f4ae5f..c56ee3f 100644 --- a/components/policy/resources/policy_templates_tr.xtb +++ b/components/policy/resources/policy_templates_tr.xtb
@@ -399,6 +399,7 @@ <translation id="1561424797596341174">Politika, uzaktan erişim ana makinesinin Hata Ayıklama yapılarını geçersiz kılar</translation> <translation id="1561967320164410511">Bağımsız doğrulama için U2F plus uzantıları</translation> <translation id="1575015449587326319">OnFileDownloaded Chrome Enterprise Bağlayıcı için yapılandırma politikası</translation> +<translation id="1576684007051137182">Devre dışı bırakılacak kamera, tarayıcı ayarları, OS ayarları, tarama ve web mağazası özellikleri yapılandırması</translation> <translation id="1583248206450240930">Varsayılan olarak <ph name="PRODUCT_FRAME_NAME" /> ürününü kullan</translation> <translation id="1588240398285670601">Tarayıcı Ayarları</translation> <translation id="1593245608325508847">Politika ayarlanırsa G Suite'te Chrome'un kısıtlı oturum açma özelliği etkinleştirilir ve kullanıcılar bu ayarı değiştiremezler. Kullanıcılar sadece belirtilen alan adlarındaki hesapları kullanarak Google araçlarına erişebilirler (gmail veya googlemail hesaplarına izin vermek için alan adı listesine consumer_accounts öğesini ekleyin). Bu ayar, kullanıcıların Google kimlik doğrulaması gerektiren yönetilen bir cihazda oturum açmalarını ve açıkça izin verilen alan adlarından birine ait olmadığı sürece İkincil Hesap eklemelerini engeller. @@ -2282,6 +2283,7 @@ <translation id="4138655880188755661">Zaman Limiti</translation> <translation id="4147818922357566987">Yalnızca önemli düzeltmelerle ilgili varyasyonları etkinleştir</translation> <translation id="4150201353443180367">Ekran</translation> +<translation id="415445772247959702">Web Mağazası (sürüm 89'dan beri destekleniyor)</translation> <translation id="4157003184375321727">İşletim sistemi ve donanım yazılımı sürümünü rapor et</translation> <translation id="4157594634940419685">Yerel CUPS yazıcılarına erişim izni ver</translation> <translation id="4160962198980004898">Yuvaya yerleştirildiğinde cihaz MAC adresi kaynağı</translation>
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb index 5a85ce41..2c85d9d 100644 --- a/components/policy/resources/policy_templates_uk.xtb +++ b/components/policy/resources/policy_templates_uk.xtb
@@ -409,6 +409,7 @@ <translation id="1561424797596341174">Правило замінює налагоджувальні складання хосту віддаленого доступу</translation> <translation id="1561967320164410511">Автентифікація U2F і розширення для особистого підтвердження</translation> <translation id="1575015449587326319">Правило для налаштування конектора Chrome Enterprise OnFileDownloaded</translation> +<translation id="1576684007051137182">Вимкнути камеру, налаштування веб-переглядача й ОС, а також функції сканування та веб-магазину</translation> <translation id="1583248206450240930">Використовувати <ph name="PRODUCT_FRAME_NAME" /> за умовчанням</translation> <translation id="1588240398285670601">Налаштування веб-переглядача</translation> <translation id="1593245608325508847">Якщо це правило налаштовано, в Chrome вмикається функція обмеженого входу в G Suite. Користувачі не можуть змінити цей параметр. Вони отримують доступ до інструментів Google лише з облікових записів вказаних доменів (для облікових записів gmail чи googlemail потрібно додати значення consumer_accounts у список доменів). Це налаштування забороняє користувачам входити в додатковий обліковий запис і зберігати його на керованому пристрої, де потрібна автентифікація Google, якщо цього облікового запису немає в списку дозволених доменів. @@ -2307,6 +2308,7 @@ <translation id="4138655880188755661">Ліміт часу</translation> <translation id="4147818922357566987">Увімкнути варіанти, які стосуються лише важливих виправлень</translation> <translation id="4150201353443180367">Екран</translation> +<translation id="415445772247959702">Веб-магазин (підтримується, починаючи з версії 89)</translation> <translation id="4157003184375321727">Повідомляти версію ОС і мікропрограми</translation> <translation id="4157594634940419685">Надавати доступ до рідних принтерів CUPS</translation> <translation id="4160962198980004898">Джерело MAC-адреси пристрою, пристикованого до док-станції</translation>
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb index 753c40a8..cc2a739 100644 --- a/components/policy/resources/policy_templates_vi.xtb +++ b/components/policy/resources/policy_templates_vi.xtb
@@ -410,6 +410,7 @@ <translation id="1561424797596341174">Chính sách ghi đè dành cho bản dựng Gỡ lỗi của máy chủ truy cập từ xa</translation> <translation id="1561967320164410511">Tiện ích U2F+ để chứng thực cá nhân</translation> <translation id="1575015449587326319">Chính sách cấu hình dành cho Trình kết nối OnFileDownloaded của Chrome Enterprise</translation> +<translation id="1576684007051137182">Định cấu hình để tắt máy ảnh, các chế độ cài đặt của trình duyệt, chế độ cài đặt của hệ điều hành, tính năng quét và tính năng của cửa hàng trực tuyến</translation> <translation id="1583248206450240930">Sử dụng <ph name="PRODUCT_FRAME_NAME" /> theo mặc định</translation> <translation id="1588240398285670601">Cài đặt của trình duyệt</translation> <translation id="1593245608325508847">Khi bạn đặt chính sách này, tính năng đăng nhập có giới hạn của Chrome sẽ được bật trong G Suite và người dùng sẽ không thể thay đổi tùy chọn cài đặt này. Người dùng chỉ có thể truy cập vào các công cụ của Google bằng tài khoản thuộc miền được chỉ định (để cho phép tài khoản gmail hoặc googlemail, hãy thêm consumer_accounts vào danh sách miền). Tùy chọn cài đặt này ngăn người dùng đăng nhập và thêm Tài khoản phụ trên một thiết bị được quản lý có yêu cầu quy trình xác thực của Google, nếu tài khoản đó không thuộc một trong những miền được cho phép rõ ràng. @@ -2307,6 +2308,7 @@ <translation id="4138655880188755661">Giới hạn thời gian</translation> <translation id="4147818922357566987">Chỉ bật các biến thể liên quan đến những bản sửa lỗi quan trọng</translation> <translation id="4150201353443180367">Hiển thị</translation> +<translation id="415445772247959702">Cửa hàng trực tuyến (được hỗ trợ kể từ phiên bản 89)</translation> <translation id="4157003184375321727">Báo cáo phiên bản hệ điều hành và chương trình cơ sở</translation> <translation id="4157594634940419685">Cho phép truy cập vào các máy in gốc sử dụng hệ thống in Unix chung (CUPS)</translation> <translation id="4160962198980004898">Nguồn địa chỉ MAC của thiết bị khi được gắn vào đế sạc</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb index cc45e3c..c14efba15 100644 --- a/components/policy/resources/policy_templates_zh-CN.xtb +++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -341,7 +341,7 @@ 如果此政策设为 False 或未设置,系统会阻止扩展程序使用该 API。 请注意:此政策也适用于组件扩展程序,例如 Hangout Services 扩展程序。</translation> -<translation id="148194404518916594">允许用户使用“触摸搜索”功能</translation> +<translation id="148194404518916594">允许用户使用“轻触搜索”功能</translation> <translation id="1486021504508098388">报告背光信息</translation> <translation id="1487916040416013623">通过设置此政策,您可以指定应允许哪些服务器进行集成身份验证。仅当收到由此许可名单中的代理服务器或服务器发出的身份验证请求时,<ph name="PRODUCT_NAME" /> 才会启用集成式身份验证机制。 @@ -3414,7 +3414,7 @@ “<ph name="WARNING_PERIOD_PROPERTY_NAME" />”和“<ph name="AUE_WARNING_PERIOD_PROPERTY_NAME" />”都是可选值,在使用时应以天数为单位指定。这两个期限的默认值都是 0 天,表示没有警告期。 <ph name="UNMANAGED_USER_RESTRICTED_PROPERTY_NAME" /> 是一项可选属性,默认值为 False。</translation> <translation id="5879014913445067283">控制网络文件共享功能是否通过“<ph name="NETBIOS_NAME" />”来搜索共享文件</translation> -<translation id="588135807064822874">启用“触摸搜索”功能</translation> +<translation id="588135807064822874">启用“轻触搜索”功能</translation> <translation id="5882345429632338713">在启动替代浏览器之前的延迟时间(以毫秒为单位)</translation> <translation id="5883015257301027298">默认 Cookie 设置</translation> <translation id="5883754873839596178">通过设置此政策,您可以指定可同时连接到代理服务器的连接数上限。某些代理服务器无法处理由同一客户端同时发出的大量连接,您只需将此政策设为较小的值即可解决该问题。此政策的值应大于 6 且小于 100。众所周知,某些 Web 应用采用了挂起 GET,这样会消耗大量连接,因此如果打开的此类 Web 应用过多,将政策值设为小于 32 就可能会导致浏览器网络连接挂起。如果所设的政策值小于默认值,您需自担风险。 @@ -4969,9 +4969,9 @@ <translation id="8118665053362250806">设置媒体磁盘缓存大小</translation> <translation id="8124468781472887384">设备打印机配置访问政策。</translation> <translation id="8128192446158421884">AutoOpenFileTypes 可应用到的网址</translation> -<translation id="8133152694354699657">如果此政策设为 True 或未设置,用户将能够使用“触摸搜索”功能,并能够开启或关闭该功能。 +<translation id="8133152694354699657">如果此政策设为 True 或未设置,用户将能够使用“轻触搜索”功能,并能够开启或关闭该功能。 - 如果此政策设为 False,系统会彻底关闭“触摸搜索”功能。</translation> + 如果此政策设为 False,系统会彻底关闭“轻触搜索”功能。</translation> <translation id="8135271712389620651">以列表形式配置一系列规则,防止 <ph name="PRODUCT_OS_NAME" />上发生数据泄露。 复制并粘贴数据、传输文件、打印、共享屏幕或截屏等操作都可能会导致数据泄露。 @@ -5383,7 +5383,7 @@ 默认情况下,<ph name="PRODUCT_NAME" /> 不会自动播放媒体。但是,对于某些网址格式,您可以使用 <ph name="AUTOPLAY_ALLOWLIST_POLICY_NAME" /> 政策来更改此设置。 如果此政策在 <ph name="PRODUCT_NAME" /> 运行期间发生了更改,相应更改将仅适用于新打开的标签页。</translation> -<translation id="8685748277907759932">阻止用户使用“触摸搜索”功能</translation> +<translation id="8685748277907759932">阻止用户使用“轻触搜索”功能</translation> <translation id="8687958770985542440">重新启用 Web Components v0 API 直至 M84。</translation> <translation id="8693243869659262736">使用内置 DNS 客户端</translation> <translation id="8698286761337647563">用于指定提前多少天通知密码快要到期的 SAML 用户</translation>
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb index 154eb75..f429575 100644 --- a/components/policy/resources/policy_templates_zh-TW.xtb +++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -390,6 +390,7 @@ <translation id="1561424797596341174">針對遠端存取主機的偵錯版本覆寫政策</translation> <translation id="1561967320164410511">用於個人認證的 U2F 和擴充功能</translation> <translation id="1575015449587326319">OnFileDownloaded Chrome Enterprise Connector 的配置政策</translation> +<translation id="1576684007051137182">設定要停用的攝影機、瀏覽器設定、OS 設定、掃描功能和線上應用程式商店功能</translation> <translation id="1583248206450240930">根據預設使用 <ph name="PRODUCT_FRAME_NAME" /></translation> <translation id="1588240398285670601">瀏覽器設定</translation> <translation id="1593245608325508847">設定這項政策會開啟 Chrome 在 G Suite 中的限制登入功能,並防止使用者變更這項設定。使用者只能透過指定網域的帳戶存取 Google 工具,如要允許 gmail 或 googlemail 帳戶,請將 consumer_accounts 新增至網域清單。這項設定可防止使用者在需要 Google 授權的受管理裝置上,使用不屬於明確允許網域的帳戶登入及新增次要帳戶。 @@ -1376,7 +1377,7 @@ 另請參閲 <ph name="COOKIES_BLOCKED_FOR_URLS_POLICY_NAME" /> 和 <ph name="COOKIES_SESSIONS_ONLY_FOR_URLS" /> 政策。請注意,這三項政策的網址模式不可發生衝突,否則系統將無法判斷應優先採用哪項政策。 想進一步瞭解有效的網址模式,請參閱 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。<ph name="WILDCARD_VALUE" /> 不是這項政策許可的值。</translation> -<translation id="3000238720665173643">布林值旗標,表示螢幕小鍵盤是否能提供自動更正功能。</translation> +<translation id="3000238720665173643">布林值標記,表示螢幕小鍵盤是否能提供自動更正功能。</translation> <translation id="3001285126226650303">允許 <ph name="PRODUCT_NAME" /> 載入實驗性政策。 警告:實驗性政策不受支援,且在未來的瀏覽器版本中如有變動或遭到移除,恕不另行通知。 @@ -2250,6 +2251,7 @@ <translation id="4138655880188755661">時間限制</translation> <translation id="4147818922357566987">僅啟用與重大修正項目相關的變化版本</translation> <translation id="4150201353443180367">顯示設定</translation> +<translation id="415445772247959702">線上應用程式商店 (自 89 版開始支援)</translation> <translation id="4157003184375321727">回報作業系統和韌體版本</translation> <translation id="4157594634940419685">允許存取原生 CUPS 印表機</translation> <translation id="4160962198980004898">裝置插入座架時的 MAC 位址來源</translation> @@ -2733,7 +2735,7 @@ 如果設定這項政策,使用者將無法變更。如果未設定這項政策,則使用者可自行決定是否要傳送報告。 如要進一步瞭解「安全瀏覽」功能,請前往 https://developers.google.com/safe-browsing。</translation> -<translation id="4960597185231686653">布林值旗標,表示螢幕小鍵盤是否能提供語音輸入功能。</translation> +<translation id="4960597185231686653">布林值標記,表示螢幕小鍵盤是否能提供語音輸入功能。</translation> <translation id="4962262530309732070">如果將這項政策設為 True 或未設定,<ph name="PRODUCT_NAME" /> 將允許從使用者管理工具新增使用者。 如果將這項政策設為 False,<ph name="PRODUCT_NAME" /> 就無法讓使用者從使用者管理工具建立新設定檔。</translation> @@ -2881,7 +2883,7 @@ 如果不設定這項政策,使用者將可自行選擇 Proxy 設定。</translation> <translation id="5177260184597743704">OnSecurityEvent Chrome Enterprise Connector 的配置政策</translation> -<translation id="5178479074002209469">布林值旗標,表示這項政策要求進行更新時,是否要讓未受管理的使用者工作階段接收通知並強制登出。</translation> +<translation id="5178479074002209469">布林值標記,表示這項政策要求進行更新時,是否要讓未受管理的使用者工作階段接收通知並強制登出。</translation> <translation id="5182055907976889880">設定在 <ph name="PRODUCT_OS_NAME" /> 中使用 Google 雲端硬碟。</translation> <translation id="5182483318861266793">將檔案櫃放在畫面的右側</translation> <translation id="5190426551516379357">如果設定這項政策,系統會在 YouTube 上強制執行低度的嚴格篩選模式,並禁止使用者選擇更寬鬆的模式。這項政策可設定的選項如下: @@ -3154,12 +3156,12 @@ 如果這份清單未包含任何內容,系統就不會分階段安裝更新,而會依其他裝置政策套用更新。 版本切換不適用這項政策。</translation> -<translation id="5519331583722582543">布林值旗標,表示螢幕小鍵盤是否能透過手寫辨識技術提供輸入功能。</translation> +<translation id="5519331583722582543">布林值標記,表示螢幕小鍵盤是否能透過手寫辨識技術提供輸入功能。</translation> <translation id="5526184558582921522">允許向 Quirks Server 發送查詢,並有機會下載硬體專屬設定檔</translation> <translation id="5526701598901867718">全部 (不安全)</translation> <translation id="5530347722229944744">封鎖有安全疑慮的下載作業</translation> <translation id="5535973522252703021">Kerberos 委派伺服器許可清單</translation> -<translation id="553806128266843748">布林值旗標,表示是否已啟用節流功能。</translation> +<translation id="553806128266843748">布林值標記,表示是否已啟用節流功能。</translation> <translation id="554903022911579950">Kerberos</translation> <translation id="555022085242359084">在登入畫面上啟用高對比模式</translation> <translation id="555077880566103058">允許所有網站自動執行 <ph name="FLASH_PLUGIN_NAME" /> 外掛程式</translation> @@ -3881,7 +3883,7 @@ 如要進行隔離並降低對使用者的影響,請使用 <ph name="ISOLATE_ORIGINS_ANDROID_POLICY_NAME" /> 列出要隔離的網站。 注意:目前 Android 的網站隔離支援可能會導致效能問題,但日後將會改善。執行 Chrome 的 Android 系統必須運行於 RAM 實際超過 1 GB 的裝置上,才適用這項政策。如要在非 Android 平台上套用這項政策,請使用 <ph name="SITE_PER_PROCESS_POLICY_NAME" />。</translation> -<translation id="6625136649067113817">布林值旗標,表示螢幕小鍵盤是否能提供拼字檢查功能。</translation> +<translation id="6625136649067113817">布林值標記,表示螢幕小鍵盤是否能提供拼字檢查功能。</translation> <translation id="66265932317331474">回報 CPU 資訊</translation> <translation id="6628120204569232711">回報儲存空間狀態</translation> <translation id="663685822663765995">限制列印色彩模式</translation> @@ -4210,7 +4212,7 @@ 注意:如需詳細範例,請前往 Chromium 計畫 (網址為 https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett )。</translation> <translation id="7002040773317582266">已啟用主頁框網址的即時檢查功能。</translation> <translation id="7003746348783715221"><ph name="PRODUCT_NAME" /> 偏好設定</translation> -<translation id="7007283257527015835">布林值旗標,表示是否應將通訊協定處理常式設為預設值。</translation> +<translation id="7007283257527015835">布林值標記,表示是否應將通訊協定處理常式設為預設值。</translation> <translation id="7008308728445338159">已啟用 DNS 攔截檢查功能</translation> <translation id="7016736684656067099">如果將這項政策設為 1,所有網站皆可顯示圖片。如果將這項政策設為 2,所有網站都無法顯示圖片。 @@ -4537,7 +4539,7 @@ 這項功能取決於要啟用的 Chrome 同步功能中的 <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> 資料類型。如果在 <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> 政策中停用 <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" />,或是在 <ph name="SYNC_DISABLED_POLICY_NAME" /> 政策中停用 Chrome 同步功能,使用者將無法啟用這項功能。 如果未設定這項政策,在預設情況下,受管理的使用者將無法使用這項功能。</translation> -<translation id="7477149584454865826">布林值旗標,表示是否要使用 IPP Everywhere 設定印表機。</translation> +<translation id="7477149584454865826">布林值標記,表示是否要使用 IPP Everywhere 設定印表機。</translation> <translation id="7477231245051133709">啟用單聲道音訊無障礙功能</translation> <translation id="7477239290070847560">可支援無須調整設定 (mDNS 和 DNS-SD) 的通訊協定目的地</translation> <translation id="7485481791539008776">預設印表機選取規則</translation> @@ -4933,7 +4935,7 @@ <translation id="8078297389450285582">如果將這項政策設為啟用或不設定,系統會開啟智慧調光模式,並可延後螢幕調暗時間。一旦延後螢幕調暗時間,螢幕關閉、螢幕鎖定和閒置狀態的延遲時間也會隨之調整,以維持與原先設定相同的間隔時間。 如果將這項政策設為停用,智慧調光模式並不會影響螢幕調暗設定。</translation> -<translation id="8091982561085048989">布林值旗標,表示是否要使用 IPP Everywhere 設定印表機。<ph name="PRODUCT_OS_NAME" /> 76 以上版本支援這個旗標。</translation> +<translation id="8091982561085048989">布林值標記,表示是否要使用 IPP Everywhere 設定印表機。<ph name="PRODUCT_OS_NAME" /> 76 以上版本支援這個標記。</translation> <translation id="8099880303030573137">在電池供電環境下執行時的閒置延遲時間</translation> <translation id="8101381354936029836">政策不可部分完成的群組:</translation> <translation id="8102913158860568230">預設媒體串流設定</translation> @@ -5054,7 +5056,7 @@ <translation id="8214600119442850823">設定密碼管理員</translation> <translation id="8220023426952118761">理想的下載速率 (kbit/秒)。</translation> <translation id="8220156281401380422">設定內建訊息傳遞許可清單</translation> -<translation id="8238421250255592181">布林值旗標,表示螢幕小鍵盤是否能提供自動完成功能。</translation> +<translation id="8238421250255592181">布林值標記,表示螢幕小鍵盤是否能提供自動完成功能。</translation> <translation id="8244171102276095471">在傳輸層安全標準 (TLS) 中啟用 RC4 加密套件</translation> <translation id="8244525275280476362">政策失效後的最大擷取延遲</translation> <translation id="8251411417369363637">如果將這項政策設為 True,系統會在允許 <ph name="FLASH_PLUGIN_NAME" /> 的網站上執行所有內嵌的 <ph name="FLASH_PLUGIN_NAME" /> 內容,包括來自其他來源的內容或檔案較小的內容。
diff --git a/components/power_metrics/DIR_METADATA b/components/power_metrics/DIR_METADATA index 7618d29..e80036e 100644 --- a/components/power_metrics/DIR_METADATA +++ b/components/power_metrics/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Speed>Metrics" +monorail: { + component: "Speed>Metrics" }
diff --git a/components/qr_code_generator/DIR_METADATA b/components/qr_code_generator/DIR_METADATA index 90f0e485..9e9b906 100644 --- a/components/qr_code_generator/DIR_METADATA +++ b/components/qr_code_generator/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>WebAuthentication" +monorail: { + component: "Blink>WebAuthentication" } -team_email: "identity-dev@chromium.org" +team_email: "identity-dev@chromium.org"
diff --git a/components/safe_browsing/content/browser/threat_details.cc b/components/safe_browsing/content/browser/threat_details.cc index 7300055..4a9de7a 100644 --- a/components/safe_browsing/content/browser/threat_details.cc +++ b/components/safe_browsing/content/browser/threat_details.cc
@@ -118,7 +118,7 @@ case SB_THREAT_TYPE_SAFE: case SB_THREAT_TYPE_URL_BINARY_MALWARE: case SB_THREAT_TYPE_EXTENSION: - case SB_THREAT_TYPE_BLACKLISTED_RESOURCE: + case SB_THREAT_TYPE_BLOCKLISTED_RESOURCE: case SB_THREAT_TYPE_API_ABUSE: case SB_THREAT_TYPE_SUBRESOURCE_FILTER: case SB_THREAT_TYPE_CSD_WHITELIST:
diff --git a/components/safe_browsing/content/common/safe_browsing.mojom b/components/safe_browsing/content/common/safe_browsing.mojom index 72c2181..337a85b 100644 --- a/components/safe_browsing/content/common/safe_browsing.mojom +++ b/components/safe_browsing/content/common/safe_browsing.mojom
@@ -16,7 +16,7 @@ // SafeBrowsingUrlChecker interface. // // The check and (subsequent checks performed using SafeBrowsingUrlChecker) - // checks against SafeBrowsing's Malware, Phishing, and UwS blacklists. + // checks against SafeBrowsing's Malware, Phishing, and UwS blocklists. // // The SafeBrowsingUrlChecker interface should be used (and only used) for // subsequent checks of redirects, so that the server side could keep track of
diff --git a/components/safe_browsing/core/browser/safe_browsing_url_checker_impl.h b/components/safe_browsing/core/browser/safe_browsing_url_checker_impl.h index 6cdbabc7..4c8cd4c 100644 --- a/components/safe_browsing/core/browser/safe_browsing_url_checker_impl.h +++ b/components/safe_browsing/core/browser/safe_browsing_url_checker_impl.h
@@ -43,7 +43,7 @@ // queries from the browser. In that case, the public methods are called // directly instead of through Mojo. // -// To be considered "safe", a URL must not appear in the SafeBrowsing blacklists +// To be considered "safe", a URL must not appear in the SafeBrowsing blocklists // (see SafeBrowsingService for details). // // Note that the SafeBrowsing check takes at most kCheckUrlTimeoutMs
diff --git a/components/safe_browsing/core/common/safebrowsing_switches.cc b/components/safe_browsing/core/common/safebrowsing_switches.cc index 1cae3f4..c6a91688 100644 --- a/components/safe_browsing/core/common/safebrowsing_switches.cc +++ b/components/safe_browsing/core/common/safebrowsing_switches.cc
@@ -13,7 +13,7 @@ // be whitelisted otherwise (by signature or URL) and must be on a supported // OS. Hashes are in hex. This is used for manual testing when looking // for ways to by-pass download protection. -const char kSbManualDownloadBlacklist[] = +const char kSbManualDownloadBlocklist[] = "safebrowsing-manual-download-blacklist"; // Enable Safe Browsing Enhanced Protection.
diff --git a/components/safe_browsing/core/common/safebrowsing_switches.h b/components/safe_browsing/core/common/safebrowsing_switches.h index cf52e5e6..85ab629 100644 --- a/components/safe_browsing/core/common/safebrowsing_switches.h +++ b/components/safe_browsing/core/common/safebrowsing_switches.h
@@ -8,7 +8,7 @@ namespace safe_browsing { namespace switches { -extern const char kSbManualDownloadBlacklist[]; +extern const char kSbManualDownloadBlocklist[]; extern const char kSbEnableEnhancedProtection[]; } // namespace switches
diff --git a/components/safe_browsing/core/db/database_manager.cc b/components/safe_browsing/core/db/database_manager.cc index 89502136..3aaef14 100644 --- a/components/safe_browsing/core/db/database_manager.cc +++ b/components/safe_browsing/core/db/database_manager.cc
@@ -38,7 +38,7 @@ return false; } -bool SafeBrowsingDatabaseManager::CheckApiBlacklistUrl(const GURL& url, +bool SafeBrowsingDatabaseManager::CheckApiBlocklistUrl(const GURL& url, Client* client) { DCHECK(CurrentlyOnThread(ThreadID::IO)); DCHECK(v4_get_hash_protocol_manager_); @@ -107,7 +107,7 @@ if (it == api_checks_.end()) return; - check->client()->OnCheckApiBlacklistUrlResult(check->url(), md); + check->client()->OnCheckApiBlocklistUrlResult(check->url(), md); api_checks_.erase(it); } @@ -129,7 +129,7 @@ // Delete pending checks, calling back any clients with empty metadata. for (const SafeBrowsingApiCheck* check : api_checks_) { if (check->client()) { - check->client()->OnCheckApiBlacklistUrlResult(check->url(), + check->client()->OnCheckApiBlocklistUrlResult(check->url(), ThreatMetadata()); } }
diff --git a/components/safe_browsing/core/db/database_manager.h b/components/safe_browsing/core/db/database_manager.h index c2ec7de..f61c370 100644 --- a/components/safe_browsing/core/db/database_manager.h +++ b/components/safe_browsing/core/db/database_manager.h
@@ -69,9 +69,9 @@ public: virtual ~Client() {} - // Called when the result of checking the API blacklist is known. + // Called when the result of checking the API blocklist is known. // TODO(kcarattini): Consider if we need |url| passed here, remove if not. - virtual void OnCheckApiBlacklistUrlResult(const GURL& url, + virtual void OnCheckApiBlocklistUrlResult(const GURL& url, const ThreatMetadata& metadata) {} // Called when the result of checking a browse URL is known or the result of @@ -88,7 +88,7 @@ virtual void OnCheckExtensionsResult(const std::set<std::string>& threats) { } - // Called when the result of checking the resource blacklist is known. + // Called when the result of checking the resource blocklist is known. virtual void OnCheckResourceUrlResult(const GURL& url, SBThreatType threat_type, const std::string& threat_hash) {} @@ -140,7 +140,7 @@ // the resource is known. // - // Called on the IO thread to check if the given url has blacklisted APIs. + // Called on the IO thread to check if the given url has blocklisted APIs. // |client| is called asynchronously with the result when it is ready. Callers // should wait for results before calling this method a second time with the // same client. This method has the same implementation for both the local and @@ -148,7 +148,7 @@ // without accessing the database at all. Returns true if we can // synchronously determine that the url is safe. Otherwise it returns false, // and |client| is called asynchronously with the result when it is ready. - virtual bool CheckApiBlacklistUrl(const GURL& url, Client* client); + virtual bool CheckApiBlocklistUrl(const GURL& url, Client* client); // Check if the |url| matches any of the full-length hashes from the client- // side phishing detection whitelist. The 3-state return value indicates @@ -169,13 +169,13 @@ virtual bool CheckDownloadUrl(const std::vector<GURL>& url_chain, Client* client) = 0; - // Check which prefixes in |extension_ids| are in the safebrowsing blacklist. + // Check which prefixes in |extension_ids| are in the safebrowsing blocklist. // Returns true if not, false if further checks need to be made in which case // the result will be passed to |client|. virtual bool CheckExtensionIDs(const std::set<std::string>& extension_ids, Client* client) = 0; - // Check if |url| is in the resources blacklist. Returns true if not, false + // Check if |url| is in the resources blocklist. Returns true if not, false // if further checks need to be made in which case the result will be passed // to callback in |client|. virtual bool CheckResourceUrl(const GURL& url, Client* client) = 0; @@ -214,7 +214,7 @@ virtual bool MatchDownloadWhitelistUrl(const GURL& url) = 0; // Check if the given IP address (either IPv4 or IPv6) matches the malware - // IP blacklist. + // IP blocklist. virtual bool MatchMalwareIP(const std::string& ip_address) = 0; // @@ -296,7 +296,7 @@ friend class V4LocalDatabaseManager; FRIEND_TEST_ALL_PREFIXES(SafeBrowsingDatabaseManagerTest, - CheckApiBlacklistUrlPrefixes); + CheckApiBlocklistUrlPrefixes); FRIEND_TEST_ALL_PREFIXES(SafeBrowsingDatabaseManagerTest, HandleGetHashesWithApisResults); FRIEND_TEST_ALL_PREFIXES(SafeBrowsingDatabaseManagerTest, @@ -315,7 +315,7 @@ // Called on the IO thread when the SafeBrowsingProtocolManager has received // the full hash and api results for prefixes of the |url| argument in - // CheckApiBlacklistUrl. + // CheckApiBlocklistUrl. void OnThreatMetadataResponse(std::unique_ptr<SafeBrowsingApiCheck> check, const ThreatMetadata& md); @@ -330,8 +330,8 @@ bool enabled_; // Make callbacks about the completion of database update process. This is - // currently used by the extension blacklist checker to disable any installed - // extensions that have been blacklisted since. + // currently used by the extension blocklist checker to disable any installed + // extensions that have been blocklisted since. void NotifyDatabaseUpdateFinished(); // Created and destroyed via StartOnIOThread/StopOnIOThread.
diff --git a/components/safe_browsing/core/db/database_manager_unittest.cc b/components/safe_browsing/core/db/database_manager_unittest.cc index a10406e..cdafb92 100644 --- a/components/safe_browsing/core/db/database_manager_unittest.cc +++ b/components/safe_browsing/core/db/database_manager_unittest.cc
@@ -39,7 +39,7 @@ TestClient() : callback_invoked_(false) {} ~TestClient() override {} - void OnCheckApiBlacklistUrlResult(const GURL& url, + void OnCheckApiBlocklistUrlResult(const GURL& url, const ThreatMetadata& metadata) override { blocked_permissions_ = metadata.api_permissions; callback_invoked_ = true; @@ -113,16 +113,16 @@ std::unique_ptr<base::test::TaskEnvironment> task_environment_; }; -TEST_F(SafeBrowsingDatabaseManagerTest, CheckApiBlacklistUrlWrongScheme) { +TEST_F(SafeBrowsingDatabaseManagerTest, CheckApiBlocklistUrlWrongScheme) { EXPECT_TRUE( - db_manager_->CheckApiBlacklistUrl(GURL("file://example.txt"), nullptr)); + db_manager_->CheckApiBlocklistUrl(GURL("file://example.txt"), nullptr)); } TEST_F(SafeBrowsingDatabaseManagerTest, CancelApiCheck) { TestClient client; const GURL url("https://www.example.com/more"); - EXPECT_FALSE(db_manager_->CheckApiBlacklistUrl(url, &client)); + EXPECT_FALSE(db_manager_->CheckApiBlocklistUrl(url, &client)); EXPECT_TRUE(db_manager_->CancelApiCheck(&client)); base::RunLoop().RunUntilIdle(); @@ -141,7 +141,7 @@ request_url = request.url; })); - EXPECT_FALSE(db_manager_->CheckApiBlacklistUrl(url, &client)); + EXPECT_FALSE(db_manager_->CheckApiBlocklistUrl(url, &client)); test_url_loader_factory_.AddResponse(request_url.spec(), GetStockV4GetHashResponse()); base::RunLoop().RunUntilIdle();
diff --git a/components/safe_browsing/core/db/safebrowsing.proto b/components/safe_browsing/core/db/safebrowsing.proto index eff947dd..d51daa57 100644 --- a/components/safe_browsing/core/db/safebrowsing.proto +++ b/components/safe_browsing/core/db/safebrowsing.proto
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// This file includes Safe Browsing V4 API blacklist request and response +// This file includes Safe Browsing V4 API blocklist request and response // protocol buffers. They should be kept in sync with the server implementation. syntax = "proto2";
diff --git a/components/safe_browsing/core/db/util.h b/components/safe_browsing/core/db/util.h index 60439ac..fe28410e 100644 --- a/components/safe_browsing/core/db/util.h +++ b/components/safe_browsing/core/db/util.h
@@ -59,7 +59,7 @@ // Returns the metadata in a format tracing can support. std::unique_ptr<base::trace_event::TracedValue> ToTracedValue() const; - // Type of blacklisted page. Used on malware and UwS lists. + // Type of blocklisted page. Used on malware and UwS lists. // This will be NONE if it wasn't present in the reponse. ThreatPatternType threat_pattern_type;
diff --git a/components/safe_browsing/core/db/v4_local_database_manager.cc b/components/safe_browsing/core/db/v4_local_database_manager.cc index c58f030..9ee9fd5 100644 --- a/components/safe_browsing/core/db/v4_local_database_manager.cc +++ b/components/safe_browsing/core/db/v4_local_database_manager.cc
@@ -88,7 +88,7 @@ GetCertCsdDownloadWhitelistId(), SB_THREAT_TYPE_UNUSED), ListInfo(kSyncOnChromeDesktopBuilds, "ChromeUrlClientIncident.store", GetChromeUrlClientIncidentId(), - SB_THREAT_TYPE_BLACKLISTED_RESOURCE), + SB_THREAT_TYPE_BLOCKLISTED_RESOURCE), ListInfo(kSyncAlways, "UrlBilling.store", GetUrlBillingId(), SB_THREAT_TYPE_BILLING), ListInfo(kSyncOnChromeDesktopBuilds, "UrlCsdDownloadWhitelist.store", @@ -100,7 +100,8 @@ ListInfo(kSyncOnChromeDesktopBuilds, "UrlSuspiciousSite.store", GetUrlSuspiciousSiteId(), SB_THREAT_TYPE_SUSPICIOUS_SITE), ListInfo(kSyncNever, "", GetChromeUrlApiId(), SB_THREAT_TYPE_API_ABUSE), - ListInfo(kSyncOnChromeDesktopBuilds || kSyncOnIos, "UrlHighConfidenceAllowlist.store", + ListInfo(kSyncOnChromeDesktopBuilds || kSyncOnIos, + "UrlHighConfidenceAllowlist.store", GetUrlHighConfidenceAllowlistId(), SB_THREAT_TYPE_HIGH_CONFIDENCE_ALLOWLIST), });
diff --git a/components/safe_browsing/core/db/v4_local_database_manager.h b/components/safe_browsing/core/db/v4_local_database_manager.h index b55897e..5b38af6 100644 --- a/components/safe_browsing/core/db/v4_local_database_manager.h +++ b/components/safe_browsing/core/db/v4_local_database_manager.h
@@ -196,7 +196,7 @@ // for that URL. ThreatMetadata url_metadata; - // The full hash that matched for a blacklisted resource URL. Used only for + // The full hash that matched for a blocklisted resource URL. Used only for // |CheckResourceUrl| case. FullHash matching_full_hash; };
diff --git a/components/safe_browsing/core/db/v4_local_database_manager_unittest.cc b/components/safe_browsing/core/db/v4_local_database_manager_unittest.cc index 5534f937..b2fc87f8 100644 --- a/components/safe_browsing/core/db/v4_local_database_manager_unittest.cc +++ b/components/safe_browsing/core/db/v4_local_database_manager_unittest.cc
@@ -1121,9 +1121,9 @@ ReplaceV4Database(store_and_hash_prefixes); EXPECT_FALSE(v4_local_database_manager_->MatchMalwareIP("")); - // Not blacklisted. + // Not blocklisted. EXPECT_FALSE(v4_local_database_manager_->MatchMalwareIP("192.168.1.1")); - // Blacklisted. + // Blocklisted. EXPECT_TRUE(v4_local_database_manager_->MatchMalwareIP("192.168.1.2")); EXPECT_FALSE(FakeV4LocalDatabaseManager::PerformFullHashCheckCalled( @@ -1240,14 +1240,14 @@ ReplaceV4Database(store_and_hash_prefixes, /* stores_available= */ true); const GURL url_bad("https://" + url_bad_no_scheme); - TestClient client(SB_THREAT_TYPE_BLACKLISTED_RESOURCE, url_bad); + TestClient client(SB_THREAT_TYPE_BLOCKLISTED_RESOURCE, url_bad); EXPECT_FALSE(v4_local_database_manager_->CheckResourceUrl(url_bad, &client)); EXPECT_FALSE(client.on_check_resource_url_result_called()); WaitForTasksOnTaskRunner(); EXPECT_TRUE(client.on_check_resource_url_result_called()); } -TEST_F(V4LocalDatabaseManagerTest, TestCheckExtensionIDsNothingBlacklisted) { +TEST_F(V4LocalDatabaseManagerTest, TestCheckExtensionIDsNothingBlocklisted) { // Setup to receive full-hash misses. ScopedFakeGetHashProtocolManagerFactory pin(FullHashInfos({})); @@ -1275,7 +1275,7 @@ EXPECT_TRUE(client.on_check_extensions_result_called()); } -TEST_F(V4LocalDatabaseManagerTest, TestCheckExtensionIDsOneIsBlacklisted) { +TEST_F(V4LocalDatabaseManagerTest, TestCheckExtensionIDsOneIsBlocklisted) { // bad_extension_id is in the local DB and the full hash will match. const FullHash bad_extension_id("aaaabbbbccccdddd"), good_extension_id("ddddccccbbbbaaaa"); @@ -1304,7 +1304,7 @@ EXPECT_TRUE(client.on_check_extensions_result_called()); } -TEST_F(V4LocalDatabaseManagerTest, TestCheckDownloadUrlNothingBlacklisted) { +TEST_F(V4LocalDatabaseManagerTest, TestCheckDownloadUrlNothingBlocklisted) { // Setup to receive full-hash misses. ScopedFakeGetHashProtocolManagerFactory pin(FullHashInfos({})); @@ -1332,7 +1332,7 @@ EXPECT_TRUE(client.on_check_download_urls_result_called()); } -TEST_F(V4LocalDatabaseManagerTest, TestCheckDownloadUrlWithOneBlacklisted) { +TEST_F(V4LocalDatabaseManagerTest, TestCheckDownloadUrlWithOneBlocklisted) { // Setup to receive full-hash hit. std::string url_bad_no_scheme("example.com/bad/"); FullHash bad_full_hash(crypto::SHA256HashString(url_bad_no_scheme));
diff --git a/components/safe_browsing/core/db/v4_protocol_manager_util.cc b/components/safe_browsing/core/db/v4_protocol_manager_util.cc index c4689db1..4602bf4a 100644 --- a/components/safe_browsing/core/db/v4_protocol_manager_util.cc +++ b/components/safe_browsing/core/db/v4_protocol_manager_util.cc
@@ -585,11 +585,11 @@ // // Note that we don't need to be clever about stopping at the "real" eTLD -- // the data on the server side has been filtered to ensure it will not - // blacklist a whole TLD, and it's not significantly slower on our side to + // blocklist a whole TLD, and it's not significantly slower on our side to // just check too much. // - // Also note that because we have a simple blacklist, not some sort of complex - // whitelist-in-blacklist or vice versa, it doesn't matter what order we check + // Also note that because we have a simple blocklist, not some sort of complex + // allowlist-in-blocklist or vice versa, it doesn't matter what order we check // these in. const size_t kMaxHostsToCheck = 4; bool skipped_last_component = false;
diff --git a/components/safe_browsing/core/db/v4_protocol_manager_util.h b/components/safe_browsing/core/db/v4_protocol_manager_util.h index 823b6b38..8089655 100644 --- a/components/safe_browsing/core/db/v4_protocol_manager_util.h +++ b/components/safe_browsing/core/db/v4_protocol_manager_util.h
@@ -129,9 +129,9 @@ // of the client side detection model. SB_THREAT_TYPE_URL_CLIENT_SIDE_MALWARE = 8, - // Url leads to a blacklisted resource script. Note that no warnings should be + // Url leads to a blocklisted resource script. Note that no warnings should be // shown on this threat type, but an incident report might be sent. - SB_THREAT_TYPE_BLACKLISTED_RESOURCE = 9, + SB_THREAT_TYPE_BLOCKLISTED_RESOURCE = 9, // Url abuses a permission API. SB_THREAT_TYPE_API_ABUSE = 10,
diff --git a/components/safe_browsing/core/db/v4_rice.h b/components/safe_browsing/core/db/v4_rice.h index 4ea0572..cc5b6c9 100644 --- a/components/safe_browsing/core/db/v4_rice.h +++ b/components/safe_browsing/core/db/v4_rice.h
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Rice-Golomb decoder for blacklist updates. +// Rice-Golomb decoder for blocklist updates. // Details at: https://en.wikipedia.org/wiki/Golomb_coding #ifndef COMPONENTS_SAFE_BROWSING_CORE_DB_V4_RICE_H_
diff --git a/components/safe_browsing/core/password_protection/DIR_METADATA b/components/safe_browsing/core/password_protection/DIR_METADATA index 53bb65b..ee2d9cf5 100644 --- a/components/safe_browsing/core/password_protection/DIR_METADATA +++ b/components/safe_browsing/core/password_protection/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Services>Safebrowsing" +monorail: { + component: "Services>Safebrowsing" } -team_email: "safebrowsing@chromium.org" +team_email: "safebrowsing@chromium.org"
diff --git a/components/safe_browsing/core/proto/csd.proto b/components/safe_browsing/core/proto/csd.proto index 844d8fe..02f0d5a 100644 --- a/components/safe_browsing/core/proto/csd.proto +++ b/components/safe_browsing/core/proto/csd.proto
@@ -418,7 +418,7 @@ SAFE = 1; // The site has low reputation or low popularity. LOW_REPUTATION = 2; - // The url matches with blacklist entries. + // The url matches with blocklist entries. PHISHING = 3; } optional VerdictType verdict_type = 1; @@ -1125,7 +1125,7 @@ optional ClientDownloadRequest.ImageHeaders image_headers = 5; } repeated Dll dll = 9; - repeated string blacklisted_dll = 10; + repeated string blocklisted_dll = 10; message ModuleState { enum ModifiedState { UNKNOWN = 0; @@ -1158,7 +1158,7 @@ STATE_UNKNOWN = 0; STATE_ENABLED = 1; STATE_DISABLED = 2; - STATE_BLACKLISTED = 3; + STATE_BLOCKLISTED = 3; STATE_BLOCKED = 4; STATE_TERMINATED = 5; }
diff --git a/components/schema_org/OWNERS b/components/schema_org/OWNERS index 65f49a1..c48e48e 100644 --- a/components/schema_org/OWNERS +++ b/components/schema_org/OWNERS
@@ -1,3 +1 @@ -beccahughes@chromium.org steimel@chromium.org -sgbowen@google.com
diff --git a/components/search/ntp_features.cc b/components/search/ntp_features.cc index c3a33183..29ad564 100644 --- a/components/search/ntp_features.cc +++ b/components/search/ntp_features.cc
@@ -75,6 +75,10 @@ const base::Feature kWebUIThemeModeDoodles{"WebUIThemeModeDoodles", base::FEATURE_ENABLED_BY_DEFAULT}; +// If enabled, shortcuts will be shown. +const base::Feature kNtpShortcuts{"NtpShortcuts", + base::FEATURE_ENABLED_BY_DEFAULT}; + // If enabled, modules will be shown. const base::Feature kModules{"NtpModules", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/components/search/ntp_features.h b/components/search/ntp_features.h index c6e0ed23..727c7d1 100644 --- a/components/search/ntp_features.h +++ b/components/search/ntp_features.h
@@ -26,6 +26,7 @@ extern const base::Feature kRealboxUseGoogleGIcon; extern const base::Feature kWebUI; extern const base::Feature kWebUIThemeModeDoodles; +extern const base::Feature kNtpShortcuts; extern const base::Feature kModules; extern const base::Feature kNtpRecipeTasksModule; extern const base::Feature kNtpShoppingTasksModule;
diff --git a/components/security_state/ios/security_state_utils.mm b/components/security_state/ios/security_state_utils.mm index 6d3a43e7..8969f99 100644 --- a/components/security_state/ios/security_state_utils.mm +++ b/components/security_state/ios/security_state_utils.mm
@@ -63,7 +63,7 @@ DEPRECATED_SB_THREAT_TYPE_URL_PASSWORD_PROTECTION_PHISHING: case safe_browsing::SB_THREAT_TYPE_URL_BINARY_MALWARE: case safe_browsing::SB_THREAT_TYPE_EXTENSION: - case safe_browsing::SB_THREAT_TYPE_BLACKLISTED_RESOURCE: + case safe_browsing::SB_THREAT_TYPE_BLOCKLISTED_RESOURCE: case safe_browsing::SB_THREAT_TYPE_API_ABUSE: case safe_browsing::SB_THREAT_TYPE_SUBRESOURCE_FILTER: case safe_browsing::SB_THREAT_TYPE_CSD_WHITELIST:
diff --git a/components/services/storage/DEPS b/components/services/storage/DEPS index f1ac868..3a2477e6 100644 --- a/components/services/storage/DEPS +++ b/components/services/storage/DEPS
@@ -1,5 +1,6 @@ include_rules = [ "+third_party/blink/public/common", + "+third_party/blink/public/mojom", "+third_party/leveldatabase", "+sql", ]
diff --git a/components/services/storage/public/cpp/BUILD.gn b/components/services/storage/public/cpp/BUILD.gn index f8875bc..30d12827 100644 --- a/components/services/storage/public/cpp/BUILD.gn +++ b/components/services/storage/public/cpp/BUILD.gn
@@ -5,13 +5,20 @@ component("cpp") { output_name = "storage_service_public" - public = [ "constants.h" ] + public = [ + "constants.h", + "quota_client_callback_wrapper.h", + ] - sources = [ "constants.cc" ] + sources = [ + "constants.cc", + "quota_client_callback_wrapper.cc", + ] public_deps = [ "//base", "//components/services/storage/public/cpp/filesystem", + "//components/services/storage/public/mojom", ] defines = [ "IS_STORAGE_SERVICE_PUBLIC_IMPL" ]
diff --git a/components/services/storage/public/cpp/quota_client_callback_wrapper.cc b/components/services/storage/public/cpp/quota_client_callback_wrapper.cc new file mode 100644 index 0000000..c31059a --- /dev/null +++ b/components/services/storage/public/cpp/quota_client_callback_wrapper.cc
@@ -0,0 +1,82 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/services/storage/public/cpp/quota_client_callback_wrapper.h" + +#include <utility> + +#include "base/check_op.h" +#include "base/sequence_checker.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" +#include "mojo/public/cpp/bindings/callback_helpers.h" +#include "third_party/blink/public/mojom/quota/quota_types.mojom.h" + +namespace storage { + +QuotaClientCallbackWrapper::QuotaClientCallbackWrapper( + mojom::QuotaClient* wrapped_client) + : wrapped_client_(wrapped_client) { + DCHECK(wrapped_client); + DETACH_FROM_SEQUENCE(sequence_checker_); +} + +QuotaClientCallbackWrapper::~QuotaClientCallbackWrapper() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +} + +void QuotaClientCallbackWrapper::GetOriginUsage( + const url::Origin& origin, + blink::mojom::StorageType type, + GetOriginUsageCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + wrapped_client_->GetOriginUsage( + origin, type, + mojo::WrapCallbackWithDefaultInvokeIfNotRun(std::move(callback), 0)); +} + +void QuotaClientCallbackWrapper::GetOriginsForType( + blink::mojom::StorageType type, + GetOriginsForTypeCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + wrapped_client_->GetOriginsForType( + type, mojo::WrapCallbackWithDefaultInvokeIfNotRun( + std::move(callback), std::vector<url::Origin>())); +} + +void QuotaClientCallbackWrapper::GetOriginsForHost( + blink::mojom::StorageType type, + const std::string& host, + GetOriginsForHostCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + wrapped_client_->GetOriginsForHost( + type, host, + mojo::WrapCallbackWithDefaultInvokeIfNotRun(std::move(callback), + std::vector<url::Origin>())); +} + +void QuotaClientCallbackWrapper::DeleteOriginData( + const url::Origin& origin, + blink::mojom::StorageType type, + DeleteOriginDataCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + wrapped_client_->DeleteOriginData( + origin, type, + mojo::WrapCallbackWithDefaultInvokeIfNotRun( + std::move(callback), blink::mojom::QuotaStatusCode::kErrorAbort)); +} + +void QuotaClientCallbackWrapper::PerformStorageCleanup( + blink::mojom::StorageType type, + PerformStorageCleanupCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + wrapped_client_->PerformStorageCleanup( + type, mojo::WrapCallbackWithDefaultInvokeIfNotRun(std::move(callback))); +} + +} // namespace storage
diff --git a/components/services/storage/public/cpp/quota_client_callback_wrapper.h b/components/services/storage/public/cpp/quota_client_callback_wrapper.h new file mode 100644 index 0000000..5fd63ee --- /dev/null +++ b/components/services/storage/public/cpp/quota_client_callback_wrapper.h
@@ -0,0 +1,75 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_SERVICES_STORAGE_PUBLIC_CPP_QUOTA_CLIENT_CALLBACK_WRAPPER_H_ +#define COMPONENTS_SERVICES_STORAGE_PUBLIC_CPP_QUOTA_CLIENT_CALLBACK_WRAPPER_H_ + +#include "base/sequence_checker.h" +#include "base/thread_annotations.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" + +namespace storage { + +// Stopgap for QuotaClients in systems with an unclear ownership graph. +// +// Implements the QuotaClient interface by proxying to a "real" implementation. +// Proxying wraps mojo callbacks so that they are always called. In other words, +// if the "real" implementation drops the callback it receives (instead of +// Run()ning it) then the underlying mojo callback is called with default +// values. +// +// This is useful for mojofying QuotaClient implementations in systems with +// unclear object ownerships. More concretely, QuotaClients usually perform +// asynchronous work, which involves posting tasks across sequences. Tasks that +// use WeakPtrs may get dropped (which in turn drops the QuotaClient callbacks) +// if the WeakPtr objects get destroyed before the QuotaClient mojo connection. +// +// The situation above can be broken down into multiple subproblems, whose +// solutions can be landed separately. +// 1) Migrate the storage::QuotaClient implementation to a +// storage::mojom::QuotaClient implementation and wrap it with a +// storage::QuotaClientCallbackWrapper. Fix the issues introduced by +// mojofication. +// 2) Simplify the system's threading model, taking advantage of the fact that +// storage::mojom::QuotaClient implementations are not restricted to the +// browser process' IO thread. +// 3) Remove the storage::QuotaClientCallbackWrapper. Fix shutdown issues, +// potentially by further simplifying the system's threading model. +class COMPONENT_EXPORT(STORAGE_SERVICE_PUBLIC) QuotaClientCallbackWrapper + : public mojom::QuotaClient { + public: + // `wrapped_client` must outlive this instance. + explicit QuotaClientCallbackWrapper(mojom::QuotaClient* wrapped_client); + + QuotaClientCallbackWrapper(const QuotaClientCallbackWrapper&) = delete; + QuotaClientCallbackWrapper& operator=(const QuotaClientCallbackWrapper&) = + delete; + + ~QuotaClientCallbackWrapper() override; + + // mojom::QuotaClient. + void GetOriginUsage(const url::Origin& origin, + blink::mojom::StorageType type, + GetOriginUsageCallback callback) override; + void GetOriginsForType(blink::mojom::StorageType type, + GetOriginsForTypeCallback callback) override; + void GetOriginsForHost(blink::mojom::StorageType type, + const std::string& host, + GetOriginsForHostCallback callback) override; + void DeleteOriginData(const url::Origin& origin, + blink::mojom::StorageType type, + DeleteOriginDataCallback callback) override; + void PerformStorageCleanup(blink::mojom::StorageType type, + PerformStorageCleanupCallback callback) override; + + private: + SEQUENCE_CHECKER(sequence_checker_); + + mojom::QuotaClient* const wrapped_client_ + GUARDED_BY_CONTEXT(sequence_checker_); +}; + +} // namespace storage + +#endif // COMPONENTS_SERVICES_STORAGE_PUBLIC_CPP_QUOTA_CLIENT_CALLBACK_WRAPPER_H_
diff --git a/components/services/storage/public/mojom/BUILD.gn b/components/services/storage/public/mojom/BUILD.gn index 7cb4ffc..4fa70bd 100644 --- a/components/services/storage/public/mojom/BUILD.gn +++ b/components/services/storage/public/mojom/BUILD.gn
@@ -14,6 +14,7 @@ "local_storage_control.mojom", "origin_context.mojom", "partition.mojom", + "quota_client.mojom", "service_worker_database.mojom", "service_worker_storage_control.mojom", "session_storage_control.mojom",
diff --git a/components/services/storage/public/mojom/quota_client.mojom b/components/services/storage/public/mojom/quota_client.mojom new file mode 100644 index 0000000..eb35385 --- /dev/null +++ b/components/services/storage/public/mojom/quota_client.mojom
@@ -0,0 +1,41 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module storage.mojom; + +import "third_party/blink/public/mojom/quota/quota_types.mojom"; +import "url/mojom/origin.mojom"; + +// Interface between each storage API and the quota manager. +// +// Each storage API must register an implementation of this interface with +// the quota manager, by calling QuotaManager::RegisterClient(). +// +// Storage APIs may implement this interface in the browser process or in the +// Storage Service process. The interface is consumed by QuotaManager, which +// currently lives in the browser process, and will eventually move to the +// Storage Service process. +interface QuotaClient { + // Returns the amount of data stored in the storage specified by `origin` and + // `type`. + GetOriginUsage(url.mojom.Origin origin, blink.mojom.StorageType type) + => (int64 usage); + + // Returns a list of origins that have data in the `type` storage. + GetOriginsForType(blink.mojom.StorageType type) + => (array<url.mojom.Origin> origins); + + // Returns a list of origins that match the `host` and have data in the `type` + // storage. + GetOriginsForHost(blink.mojom.StorageType type, string host) + => (array<url.mojom.Origin> origins); + + // Returns after all data belonging to `origin` in the `type` storage has been + // deleted. + DeleteOriginData(url.mojom.Origin origin, blink.mojom.StorageType type) + => (blink.mojom.QuotaStatusCode status); + + // An opportunity to perform a cleanup step after major deletions. + PerformStorageCleanup(blink.mojom.StorageType type) => (); +};
diff --git a/components/site_engagement/DIR_METADATA b/components/site_engagement/DIR_METADATA index f0a3d39..bd5759d 100644 --- a/components/site_engagement/DIR_METADATA +++ b/components/site_engagement/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Permissions>SiteEngagement" +monorail: { + component: "Internals>Permissions>SiteEngagement" }
diff --git a/components/soda/OWNERS b/components/soda/OWNERS index 9d6ce60..a8d94654 100644 --- a/components/soda/OWNERS +++ b/components/soda/OWNERS
@@ -1,3 +1,2 @@ evliu@google.com -beccahughes@chromium.org
diff --git a/components/soda/constants.cc b/components/soda/constants.cc index b7aaf75..06360df4 100644 --- a/components/soda/constants.cc +++ b/components/soda/constants.cc
@@ -26,12 +26,6 @@ constexpr base::FilePath::CharType kSodaLanguagePacksRelativePath[] = FILE_PATH_LITERAL("SODALanguagePacks"); -constexpr base::FilePath::CharType kSodaEnUsInstallationRelativePath[] = - FILE_PATH_LITERAL("SODALanguagePacks/en-US"); - -constexpr base::FilePath::CharType kSodaJaJpInstallationRelativePath[] = - FILE_PATH_LITERAL("SODALanguagePacks/ja-JP"); - constexpr base::FilePath::CharType kSodaLanguagePackDirectoryRelativePath[] = FILE_PATH_LITERAL("SODAModels"); @@ -74,36 +68,4 @@ : soda_dir.Append(kSodaBinaryRelativePath); } -LanguageCode GetLanguageCode(std::string language) { - if (language.empty()) { - return LanguageCode::kNone; - } - - if (language == "en-US") { - return LanguageCode::kEnUs; - } - - if (language == "ja-JP") { - return LanguageCode::kJaJp; - } - - NOTREACHED(); - return LanguageCode::kNone; -} - -std::vector<base::FilePath> GetSodaLanguagePackDirectories() { - std::vector<base::FilePath> paths; - - base::FilePath components_dir; - base::PathService::Get(component_updater::DIR_COMPONENT_USER, - &components_dir); - - if (!components_dir.empty()) { - paths.push_back(components_dir.Append(kSodaEnUsInstallationRelativePath)); - paths.push_back(components_dir.Append(kSodaJaJpInstallationRelativePath)); - } - - return paths; -} - } // namespace speech
diff --git a/components/soda/constants.h b/components/soda/constants.h index 5a8bd2a..e867c3c 100644 --- a/components/soda/constants.h +++ b/components/soda/constants.h
@@ -13,6 +13,10 @@ kNone = 0, kEnUs = 1, kJaJp = 2, + kDeDe = 3, + kEsEs = 4, + kFrFr = 5, + kItIt = 6, }; // Location of the libsoda binary within the SODA installation directory. @@ -25,14 +29,6 @@ // directory. extern const base::FilePath::CharType kSodaLanguagePacksRelativePath[]; -// Location of the SODA en-US language pack component relative to the components -// directory. -extern const base::FilePath::CharType kSodaEnUsInstallationRelativePath[]; - -// Location of the SODA ja-JP language pack component relative to the components -// directory. -extern const base::FilePath::CharType kSodaJaJpInstallationRelativePath[]; - // Location of the SODA models directory relative to the language pack // installation directory. extern const base::FilePath::CharType kSodaLanguagePackDirectoryRelativePath[]; @@ -54,11 +50,6 @@ // installed. const base::FilePath GetSodaBinaryPath(); -LanguageCode GetLanguageCode(std::string language); - -// Gets a collection of paths to SODA language pack directories. -std::vector<base::FilePath> GetSodaLanguagePackDirectories(); - } // namespace speech #endif // COMPONENTS_SODA_CONSTANTS_H_
diff --git a/components/strings/components_strings_af.xtb b/components/strings/components_strings_af.xtb index d17bc97..c9e9294 100644 --- a/components/strings/components_strings_af.xtb +++ b/components/strings/components_strings_af.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">Installeer ARCore om verhoogderealiteitinhoud te bekyk</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Gebind</translation> +<translation id="7992044431894087211">Skermdeling met <ph name="APPLICATION_TITLE" /> is hervat</translation> <translation id="7995512525968007366">Nie gespesifiseer nie</translation> <translation id="800218591365569300">Probeer ander oortjies of programme toemaak om berging beskikbaar te maak.</translation> <translation id="8004582292198964060">Blaaier</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> gebruik gewoonlik enkripsie om jou inligting te beskerm. Toe Chromium hierdie keer aan <ph name="SITE" /> probeer koppel het, het die webwerf ongewone en verkeerde eiebewyse teruggestuur. Dit kan gebeur wanneer 'n aanvaller probeer voorgee om <ph name="SITE" /> te wees, óf wanneer 'n Wi-Fi-aanmeldskerm die verbinding onderbreek het. Jou inligting is steeds veilig, want Chromium het die verbinding gestaak voordat enige data uitgeruil is.</translation> <translation id="9106062320799175032">Voeg faktureringadres by</translation> <translation id="9107467864910557787">Jou blaaier word bestuur deur <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Administrateursbeleid deaktiveer skermdeling met <ph name="APPLICATION_TITLE" /> wanneer vertroulike inhoud sigbaar is</translation> <translation id="9114524666733003316">Bevestig tans kaart …</translation> <translation id="9114581008513152754">Hierdie blaaier word nie deur 'n maatskappy of ander organisasie bestuur nie. Aktiwiteit op hierdie toestel kan buite Chrome bestuur word. <ph name="BEGIN_LINK" />Kom meer te wete<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Opgelaai</translation>
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb index 85de865f..1c3ad83b 100644 --- a/components/strings/components_strings_am.xtb +++ b/components/strings/components_strings_am.xtb
@@ -1767,6 +1767,7 @@ <translation id="79859296434321399">የትክክለኛ እውነታ ይዘትን ለማየት ARCore ይጫኑ</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">ጠርዝ</translation> +<translation id="7992044431894087211">ከ <ph name="APPLICATION_TITLE" /> ጋር የማያ ገጽ መጋራት ከቆመበት ቀጥሏል</translation> <translation id="7995512525968007366">አልተጠቀሰም</translation> <translation id="800218591365569300">የማህደረ ትውስታ ቦታን ለማስለቀቅ ሌሎች ትሮችን ወይም ፕሮግራሞችን ዘግተው ይሞክሩ።</translation> <translation id="8004582292198964060">አሳሽ</translation> @@ -2041,6 +2042,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> የእርስዎን መረጃ ለመጠበቅ በመደበኝነት ምስጠራን ይጠቀማል። Chromium አሁን ከ<ph name="SITE" /> ጋር ለመገናኘት ሲሞክር ድር ጣቢያው ያልተለመዱ እና ትክክል ያልሆኑ ምስክርነቶችን መልሷል። ይህ አንድ አጥቂ <ph name="SITE" />ን አስመስሎ ለመቅረብ ሲሞክር ነው ወይም አንድ የWi-Fi መግቢያ ገጽ ግንኙነቱን ሲቋረጥ ሊከሰት ይችላል። Chromium ማንኛውም የውሂብ ልውውጥ ከመካሄዱ በፊት ግንኙነቱን ስላቋረጠው አሁንም የእርስዎ መረጃ ደህንነት የተጠበቀ ነው።</translation> <translation id="9106062320799175032">የመክፈያ አድራሻ ያክሉ</translation> <translation id="9107467864910557787">የእርስዎ አሳሽ የሚተዳደረው በ<ph name="MANAGER" /> ነው</translation> +<translation id="91108059142052966">ሚስጥራዊ ይዘት በሚታይበት ጊዜ የአስተዳዳሪ ፖሊሲ ከ <ph name="APPLICATION_TITLE" /> ጋር የማያ ገጽ መጋራትን ያሰናክላል</translation> <translation id="9114524666733003316">ካርድን በማረጋገጥ ላይ...</translation> <translation id="9114581008513152754">ይህ አሳሽ በኩባንያ ወይም ሌላ ድርጅት አይተዳደርም። በዚህ መሣሪያ ላይ ያለ እንቅስቃሴ ከChrome ውጭ ሊተዳደር ይችላል። <ph name="BEGIN_LINK" />የበለጠ ለመረዳት<ph name="END_LINK" /></translation> <translation id="9119042192571987207">ተሰቅሏል</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb index 55b38f3..340b759 100644 --- a/components/strings/components_strings_ar.xtb +++ b/components/strings/components_strings_ar.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">لعرض محتوى الواقع المُعزَّز، يُرجى تثبيت ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">التجليد</translation> +<translation id="7992044431894087211">تم استئناف "مشاركة الشاشة" مع <ph name="APPLICATION_TITLE" />.</translation> <translation id="7995512525968007366">غير محدد</translation> <translation id="800218591365569300">جرّب إغلاق علامات التبويب أو البرامج الأخرى لتفريغ مساحة من الذاكرة.</translation> <translation id="8004582292198964060">المتصفّح</translation> @@ -2051,6 +2052,7 @@ <translation id="9103872766612412690">يستخدم <ph name="SITE" /> التشفير عادة لحماية معلوماتك. عندما حاول Chromium الاتصال بموقع <ph name="SITE" /> هذه المرة، أرجَع الموقع الإلكتروني بيانات اعتماد غير عادية وغير صحيحة. وقد يحدث هذا عندما يحاول أحد المهاجمين التظاهر بأنه موقع <ph name="SITE" />، أو إذا قاطعت شاشة تسجيل دخول Wi-Fi الاتصال. ولكن لا تزال معلوماتك آمنة نظرًا لأن Chromium أوقَفَ الاتصال قبل تبادل أي بيانات.</translation> <translation id="9106062320799175032">إضافة عنوان إرسال الفواتير</translation> <translation id="9107467864910557787">تتم إدارة متصفِّحك من خلال <ph name="MANAGER" /></translation> +<translation id="91108059142052966">تحظر سياسة المشرف إمكانية مشاركة الشاشة مع <ph name="APPLICATION_TITLE" /> عند عرض محتوى سري.</translation> <translation id="9114524666733003316">جارٍ التحقق من البطاقة...</translation> <translation id="9114581008513152754">لا تتم إدارة هذا المتصفِّح من خلال شركة أو مؤسسة أخرى. وقد تتم إدارة النشاط على هذا الجهاز خارج Chrome. <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /></translation> <translation id="9119042192571987207">تم التحميل</translation>
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb index 8365af2d0..2c201a1 100644 --- a/components/strings/components_strings_as.xtb +++ b/components/strings/components_strings_as.xtb
@@ -1767,6 +1767,7 @@ <translation id="79859296434321399">পৰিৱৰ্ধিত বাস্তৱিকতাৰ সমল চাবলৈ ARCore ইনষ্টল কৰক</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">সংযুক্ত কৰক</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" />ৰ সৈতে স্ক্ৰীন শ্বেয়াৰ কৰাৰ সুবিধাটো পুনৰ আৰম্ভ কৰা হৈছে</translation> <translation id="7995512525968007366">নির্দিষ্ট কৰা হোৱা নাই</translation> <translation id="800218591365569300">মেম’ৰী খালী কৰিবলৈ অন্য টেব বা প্র’গ্ৰেম বন্ধ কৰি চাওক।</translation> <translation id="8004582292198964060">ব্ৰাউজাৰ</translation> @@ -2040,6 +2041,7 @@ <translation id="9103872766612412690">আপোনাৰ তথ্য সুৰক্ষিত কৰিবলৈ <ph name="SITE" />এ সচৰাচৰতে এনক্ৰিপশ্বন ব্যৱহাৰ কৰে৷ Chromiumএ <ph name="SITE" />ৰ সৈতে সংযোগ কৰিবলৈ চেষ্টা কৰোঁতে ৱেবছাইটটোৱে সচৰাচৰতে ব্যৱহাৰ নোহোৱা আৰু অশুদ্ধ ক্ৰেডেনশ্বিয়েল পঠিয়াইছে৷ কোনো আক্ৰমণকাৰীয়ে <ph name="SITE" />ৰ ভেশ ধৰিলে বা কোনো ৱাই-ফাই ছাইন ইন স্ক্ৰীণে সংযোগত বাধা প্ৰদান কৰিলে এনে হ’ব পাৰে৷ আপোনাৰ ডেটা এতিয়াও সুৰক্ষিত হৈ আছে কিয়নো Chromiumএ কোনো ডেটা আদান-প্ৰদান হোৱাৰ পূৰ্বেই সংযোগ বন্ধ কৰিছে৷</translation> <translation id="9106062320799175032">বিলিঙৰ ঠিকনা যোগ কৰক</translation> <translation id="9107467864910557787"><ph name="MANAGER" />এ আপোনাৰ ব্ৰাউজাৰটো পৰিচালনা কৰে</translation> +<translation id="91108059142052966">প্ৰশাসকৰ নীতিয়ে গোপনীয় সমল দৃশ্যমান হৈ থাকোঁতে <ph name="APPLICATION_TITLE" />ৰ সৈতে স্ক্ৰীন শ্বেয়াৰ কৰাৰ সুবিধাটো অক্ষম কৰে</translation> <translation id="9114524666733003316">কার্ড নিশ্চিত কৰি থকা হৈছে...</translation> <translation id="9114581008513152754">এই ব্ৰাউজাৰটো কোনো কোম্পানী অথবা অন্য প্ৰতিষ্ঠানৰ দ্বাৰা পৰিচালিত। এই ডিভাইচটোৰ কাৰ্যকলাপ Chromeৰ বাহিৰত পৰিচালনা কৰা হৈ থাকিব পাৰে। <ph name="BEGIN_LINK" />অধিক জানক<ph name="END_LINK" /></translation> <translation id="9119042192571987207">আপল’ড কৰা হৈছে</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb index 42cb579..97f8b16e 100644 --- a/components/strings/components_strings_az.xtb +++ b/components/strings/components_strings_az.xtb
@@ -1772,6 +1772,7 @@ <translation id="79859296434321399">Təkmilləşdirilmiş virtual reallıq kontentinə baxmaq üçün ARCore'u quraşdırın</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Uclarını qovuşdurun</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> ilə ekran paylaşımı davam etdirilib</translation> <translation id="7995512525968007366">Göstərilməəyib</translation> <translation id="800218591365569300">Yaddaşı boşaltmaq üçün digər tab və proqramları bağlayın.</translation> <translation id="8004582292198964060">Brauzer</translation> @@ -2045,6 +2046,7 @@ <translation id="9103872766612412690">Məlumatınızı qorumaq üçün <ph name="SITE" /> adətən şifrələmə istifadə edir. Chromium bu dəfə <ph name="SITE" /> üzərinə qoşulmağa çalışanda sayt qeyri-adi və yanlış kredensialları qaytarmağa başladı. Bu, hücum edən özünü <ph name="SITE" /> kimi apardıqda, və ya Wi-Fi tərəfindən bağlantı kəsintisi olduqda baş verir. Məlumatınız hələ də güvənlidir, çünki Chromium datanın mübadiləsindən öncə bağlantını kəsib.</translation> <translation id="9106062320799175032">Faktura Ünvanı Əlavə Edin</translation> <translation id="9107467864910557787">Brauzeriniz <ph name="MANAGER" /> tərəfindən idarə edilir</translation> +<translation id="91108059142052966">Administrator suyasəti məxfi məzmun göründüyü zaman <ph name="APPLICATION_TITLE" /> ilə ekran paylaşımını deaktiv edir</translation> <translation id="9114524666733003316">Kart təsdiqlənir...</translation> <translation id="9114581008513152754">Bu brauzer şirkət və ya başqa təşkilat tərəfindən idarə edilmir. Bu cihazdakı fəaliyyət Chrome'dan kənarda idarə edilə bilər. <ph name="BEGIN_LINK" />Ətraflı məlumat<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Yüklənib</translation>
diff --git a/components/strings/components_strings_be.xtb b/components/strings/components_strings_be.xtb index fce28d4..338bb32 100644 --- a/components/strings/components_strings_be.xtb +++ b/components/strings/components_strings_be.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">Каб праглядаць змесціва ў рэжыме дапоўненай рэальнасці, усталюйце ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Пераплёт</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> зноў абагульвае экран</translation> <translation id="7995512525968007366">Не вызначана</translation> <translation id="800218591365569300">Каб вызваліць памяць, закрыйце іншыя ўкладкі або праграмы.</translation> <translation id="8004582292198964060">Браўзер</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> звычайна выкарыстоўвае шыфраванне для абароны вашай інфармацыі. Пры спробе Chromium падключыцца да <ph name="SITE" />, вэб-сайт адправіў незнаёмыя і няправільныя ўліковыя даныя. Гэта можа адбывацца, калі зламыснік спрабуе выдаць сябе за <ph name="SITE" />, або экран уваходу ў сетцы Wi-Fi перарваў падключэнне. Ваша інфармацыя ўсё роўна абаронена, паколькі Chromium перарваў падключэнне да абмену данымі.</translation> <translation id="9106062320799175032">Дадаць адрас для выстаўлення рахункаў</translation> <translation id="9107467864910557787">Браўзерам кіруе <ph name="MANAGER" />.</translation> +<translation id="91108059142052966">Згодна з палітыкай, зададзенай адміністратарам, <ph name="APPLICATION_TITLE" /> не можа выкарыстоўвацца для абагульвання экрана, калі на ім паказваецца прыватнае змесціва.</translation> <translation id="9114524666733003316">Пацвярджаюцца даныя карткі...</translation> <translation id="9114581008513152754">Гэты браўзер не знаходзіцца пад кіраваннем кампаніі або іншай арганізацыі. Аднак сама прылада можа знаходзіцца пад знешнім кіраваннем. <ph name="BEGIN_LINK" />Даведацца больш<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Запампавана</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb index 074cf94..dff4d16 100644 --- a/components/strings/components_strings_bg.xtb +++ b/components/strings/components_strings_bg.xtb
@@ -1773,6 +1773,7 @@ <translation id="79859296434321399">За да гледате съдържание с обогатена реалност, инсталирайте ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Подвързване</translation> +<translation id="7992044431894087211">Споделянето на екрана с(ъс) <ph name="APPLICATION_TITLE" /> бе възобновено</translation> <translation id="7995512525968007366">Не е посочено</translation> <translation id="800218591365569300">Затворете другите раздели или програми, за да освободите памет.</translation> <translation id="8004582292198964060">Браузър</translation> @@ -2046,6 +2047,7 @@ <translation id="9103872766612412690">Обикновено <ph name="SITE" /> използва шифроване за защита на информацията ви. Когато Chromium опита да установи връзка с/ъс <ph name="SITE" /> този път, уебсайтът върна необичайни и неправилни идентификационни данни. Това може да се случи, когато извършител на атака пробва да се представи за <ph name="SITE" /> или връзката е прекъсната от екран за вход в Wi-Fi. Информацията ви продължава да е защитена, тъй като Chromium спря връзката, преди да бъдат обменени данни.</translation> <translation id="9106062320799175032">Добавяне на адрес за фактуриране</translation> <translation id="9107467864910557787">Браузърът ви се управлява от <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Споделянето на екрана с(ъс) <ph name="APPLICATION_TITLE" />, когато се вижда поверително съдържание, е деактивирано от администраторски правила</translation> <translation id="9114524666733003316">Картата се потвърждава...</translation> <translation id="9114581008513152754">Този браузър не се управлява от дружество или друга организация. Възможно е активността на устройството да се управлява извън Chrome. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Качено</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb index 7e799a8..d3857c9 100644 --- a/components/strings/components_strings_bs.xtb +++ b/components/strings/components_strings_bs.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">Instalirajte ARCore da vidite sadržaj proširene realnosti</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Povezivanje</translation> +<translation id="7992044431894087211">Dijeljenje ekrana s aplikacijom <ph name="APPLICATION_TITLE" /> je nastavljeno</translation> <translation id="7995512525968007366">Nije navedeno</translation> <translation id="800218591365569300">Pokušajte zatvoriti druge kartice ili programe da oslobodite memoriju.</translation> <translation id="8004582292198964060">Preglednik</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> obično koristi šifriranje za zaštitu vaših informacija. Kada se Chromium ovaj put pokušao povezati s web lokacijom <ph name="SITE" />, web lokacija je vratila neobične i netačne akreditive. To se može dogoditi kada se napadač pokušava predstaviti kao web lokacija <ph name="SITE" /> ili kada vezu prekine ekran za prijavu na WiFi. Vaše informacije su i dalje sigurne jer je Chromium prekinuo vezu prije bilo kakve razmjene podataka.</translation> <translation id="9106062320799175032">Dodaj adresu za naplatu</translation> <translation id="9107467864910557787">Vašim preglednikom upravlja <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Pravilo administratora onemogućava dijeljenje ekrana s aplikacijom <ph name="APPLICATION_TITLE" /> kada je vidljiv povjerljivi sadržaj</translation> <translation id="9114524666733003316">Potvrđivanje kartice...</translation> <translation id="9114581008513152754">Ovim preglednikom ne upravlja kompanija ili neka druga organizacija. Aktivnostima na ovom uređaju se može upravljati van Chromea. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Otpremljeno</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb index 024d9774..a307de1 100644 --- a/components/strings/components_strings_ca.xtb +++ b/components/strings/components_strings_ca.xtb
@@ -1766,6 +1766,7 @@ <translation id="79859296434321399">Per veure contingut en realitat augmentada, instal·la ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Enquadernació</translation> +<translation id="7992044431894087211">S'ha reprès la compartició de la pantalla amb <ph name="APPLICATION_TITLE" /></translation> <translation id="7995512525968007366">No especificat</translation> <translation id="800218591365569300">Prova de tancar altres pestanyes o programes per alliberar memòria.</translation> <translation id="8004582292198964060">Navegador</translation> @@ -2039,6 +2040,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> utilitza normalment l'encriptació per protegir la vostra informació. En aquesta ocasió, quan Chromium ha provat de connectar-se a <ph name="SITE" />, el lloc web ha enviat credencials poc comunes i incorrectes. Pot ser que un atacant estigui provant de fer-se passar per <ph name="SITE" /> o que una pantalla d'inici de sessió a la xarxa Wi-Fi hagi interromput la connexió. En qualsevol cas, la vostra informació continua estant segura, perquè Chromium ha aturat la connexió abans no s'intercanviés cap dada.</translation> <translation id="9106062320799175032">Afegeix una adreça de facturació</translation> <translation id="9107467864910557787">El navegador està gestionat per <ph name="MANAGER" /></translation> +<translation id="91108059142052966">La política de l'administrador desactiva la compartició de pantalla amb <ph name="APPLICATION_TITLE" /> quan s'hi mostra contingut confidencial</translation> <translation id="9114524666733003316">S'està confirmant la targeta...</translation> <translation id="9114581008513152754">Cap empresa ni cap altra organització no gestiona aquest navegador. És possible que l'activitat d'aquest dispositiu es gestioni fora de Chrome. <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Penjat</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb index 2e14f734..ea3d99f 100644 --- a/components/strings/components_strings_cs.xtb +++ b/components/strings/components_strings_cs.xtb
@@ -1760,6 +1760,7 @@ <translation id="79859296434321399">Chcete-li zobrazit obsah pro rozšířenou realitu, nainstalujte ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Vazba</translation> +<translation id="7992044431894087211">Sdílení obrazovky s aplikací <ph name="APPLICATION_TITLE" /> bylo obnoveno</translation> <translation id="7995512525968007366">Není zadáno</translation> <translation id="800218591365569300">Zkuste uvolnit paměť tím, že zavřete ostatní karty nebo programy.</translation> <translation id="8004582292198964060">Prohlížeč</translation> @@ -2034,6 +2035,7 @@ <translation id="9103872766612412690">Web <ph name="SITE" /> vaše informace běžně chrání šifrováním. Když se prohlížeč Chromium k webu <ph name="SITE" /> pokusil připojit tentokrát, web vrátil neobvyklé a nesprávné identifikační údaje. K tomuto problému může dojít, pokud se za web <ph name="SITE" /> pokouší vydávat nějaký útočník nebo pokud bylo připojení přerušeno přihlašovací obrazovkou sítě Wi-Fi. Vaše informace jsou i nadále v bezpečí, protože prohlížeč Chromium připojení přerušil dříve, než došlo k odeslání jakýchkoliv dat.</translation> <translation id="9106062320799175032">Přidání fakturační adresy</translation> <translation id="9107467864910557787">Prohlížeč je spravován doménou <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Zásada administrátora zakazuje sdílení obrazovky s aplikací <ph name="APPLICATION_TITLE" />, když je viditelný důvěrný obsah</translation> <translation id="9114524666733003316">Ověřování karty...</translation> <translation id="9114581008513152754">Tento prohlížeč není spravován administrátorem ani jinou organizací. Aktivita na tomto zařízení může být spravována mimo Chrome. <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Nahráno</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb index 9ccdc9f..f53a060 100644 --- a/components/strings/components_strings_da.xtb +++ b/components/strings/components_strings_da.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">Installer ARCore for at se augmented reality-indhold</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Bind</translation> +<translation id="7992044431894087211">Skærmdelingen med <ph name="APPLICATION_TITLE" /> blev genoptaget</translation> <translation id="7995512525968007366">Ikke angivet</translation> <translation id="800218591365569300">Prøv at lukke andre faner eller programmer for at frigøre hukommelse.</translation> <translation id="8004582292198964060">Browser</translation> @@ -2051,6 +2052,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> bruger normalt kryptering til at beskytte dine oplysninger. Da Chromium forsøgte at oprette forbindelse til <ph name="SITE" /> denne gang, returnerede websitet usædvanlige og forkerte loginoplysninger. Dette kan skyldes, at en hacker forsøger at udgive sig for at være <ph name="SITE" />, eller at en Wi-Fi-loginskærm har forstyrret forbindelsen. Dine oplysninger er stadig sikre, idet Chromium afbrød forbindelsen, inden der blev udvekslet data.</translation> <translation id="9106062320799175032">Tilføj faktureringsadresse</translation> <translation id="9107467864910557787">Din browser administreres af <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Administratorpolitikken deaktiverer skærmdeling med <ph name="APPLICATION_TITLE" />, når fortroligt indhold er synligt</translation> <translation id="9114524666733003316">Bekræfter kort...</translation> <translation id="9114581008513152754">Denne browser administreres ikke af en virksomhed eller en anden organisation. Aktivitet på denne enhed administreres muligvis uden for Chrome. <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Uploadet</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb index 0099f8c..503d3cb 100644 --- a/components/strings/components_strings_el.xtb +++ b/components/strings/components_strings_el.xtb
@@ -1778,6 +1778,7 @@ <translation id="79859296434321399">Για να δείτε περιεχόμενο επαυξημένης πραγματικότητας, εγκαταστήστε το ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Δέσιμο</translation> +<translation id="7992044431894087211">Έγινε συνέχιση της κοινής χρήσης οθόνης με την εφαρμογή <ph name="APPLICATION_TITLE" />.</translation> <translation id="7995512525968007366">Δεν καθορίστηκε</translation> <translation id="800218591365569300">Δοκιμάστε να κλείσετε τις άλλες καρτέλες ή τα άλλα προγράμματα για να απελευθερώσετε μνήμη.</translation> <translation id="8004582292198964060">Πρόγραμμα περιήγησης</translation> @@ -2052,6 +2053,7 @@ <translation id="9103872766612412690">Κανονικά, ο ιστότοπος <ph name="SITE" /> χρησιμοποιεί κρυπτογράφηση για να προστατεύει τα στοιχεία σας. Όταν το Chromium επιχείρησε πρόσφατα να συνδεθεί στο <ph name="SITE" />, ο ιστότοπος ανταποκρίθηκε δημιουργώντας ασυνήθιστα και εσφαλμένα διαπιστευτήρια. Αυτό μπορεί να συμβεί όταν κάποιος εισβολέας προσπαθεί να υποκριθεί ότι είναι ο ιστότοπος <ph name="SITE" /> ή όταν κάποια οθόνη σύνδεσης Wi-Fi έχει διακόψει τη σύνδεσή σας. Τα στοιχεία σας εξακολουθούν να είναι ασφαλή επειδή το Chromium διέκοψε τη σύνδεση πριν από την ανταλλαγή δεδομένων.</translation> <translation id="9106062320799175032">Προσθήκη διεύθυνσης χρέωσης</translation> <translation id="9107467864910557787">Η διαχείριση του προγράμματος περιήγησής σας γίνεται από τον τομέα <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Η πολιτική διαχειριστή απενεργοποιεί την κοινή χρήση οθόνης με την εφαρμογή <ph name="APPLICATION_TITLE" /> όταν εμφανίζεται εμπιστευτικό περιεχόμενο.</translation> <translation id="9114524666733003316">Επιβεβαίωση κάρτας…</translation> <translation id="9114581008513152754">Αυτός ο ιστότοπος δεν είναι διαχειριζόμενος από κάποια εταιρεία ή άλλον οργανισμό. Η διαχείριση της δραστηριότητας σε αυτήν τη συσκευή μπορεί να πραγματοποιηθεί εκτός Chrome. <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Έγινε μεταφόρτωση</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb index 77c3448d..4cbad14 100644 --- a/components/strings/components_strings_en-GB.xtb +++ b/components/strings/components_strings_en-GB.xtb
@@ -1776,6 +1776,7 @@ <translation id="79859296434321399">To view augmented reality content, install ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Bind</translation> +<translation id="7992044431894087211">Screen sharing with <ph name="APPLICATION_TITLE" /> was resumed</translation> <translation id="7995512525968007366">Not Specified</translation> <translation id="800218591365569300">Try closing other tabs or programmes to free up memory.</translation> <translation id="8004582292198964060">Browser</translation> @@ -2049,6 +2050,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> normally uses encryption to protect your information. When Chromium tried to connect to <ph name="SITE" /> this time, the website sent back unusual and incorrect credentials. This may happen when an attacker is trying to pretend to be <ph name="SITE" />, or a Wi-Fi sign-in screen has interrupted the connection. Your information is still secure because Chromium stopped the connection before any data was exchanged.</translation> <translation id="9106062320799175032">Add Billing Address</translation> <translation id="9107467864910557787">Your browser is managed by <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Administrator policy disables screen sharing with <ph name="APPLICATION_TITLE" /> when confidential content is visible</translation> <translation id="9114524666733003316">Confirming card...</translation> <translation id="9114581008513152754">This browser is not managed by a company or other organisation. Activity on this device may be managed outside of Chrome. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Uploaded</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb index cce61c79..8fb4ddb8 100644 --- a/components/strings/components_strings_es-419.xtb +++ b/components/strings/components_strings_es-419.xtb
@@ -1767,6 +1767,7 @@ <translation id="79859296434321399">Para ver contenido de realidad aumentada, instala ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Encuadernado</translation> +<translation id="7992044431894087211">Se reanudó el uso compartido de la pantalla con <ph name="APPLICATION_TITLE" /></translation> <translation id="7995512525968007366">Sin especificar</translation> <translation id="800218591365569300">Prueba cerrar las demás pestañas o programas para liberar memoria.</translation> <translation id="8004582292198964060">Navegador</translation> @@ -2041,6 +2042,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> suele utilizar la encriptación para proteger la información. Cuando Chromium intentó conectarse a <ph name="SITE" />, el sitio web devolvió credenciales incorrectas y poco comunes. Es posible que un atacante quiera suplantar a <ph name="SITE" /> o que una pantalla de acceso Wi-Fi haya interrumpido la conexión. Tu información permanece segura porque Chromium detuvo la conexión para evitar el intercambio de datos.</translation> <translation id="9106062320799175032">Agregar dirección de facturación</translation> <translation id="9107467864910557787"><ph name="MANAGER" /> administra tu navegador</translation> +<translation id="91108059142052966">La política del administrador inhabilita el uso compartido de pantallas con <ph name="APPLICATION_TITLE" /> cuando se muestra contenido confidencial</translation> <translation id="9114524666733003316">Confirmando tarjeta…</translation> <translation id="9114581008513152754">Este navegador no está administrado por una empresa ni por otra organización. Es posible que la actividad de este dispositivo se administre fuera de Chrome. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Subido</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb index 996c38f..6de07a3211 100644 --- a/components/strings/components_strings_es.xtb +++ b/components/strings/components_strings_es.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">Instala ARCore para visualizar contenido de realidad aumentada</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Encuadernar</translation> +<translation id="7992044431894087211">Se ha reanudado la pantalla compartida con <ph name="APPLICATION_TITLE" /></translation> <translation id="7995512525968007366">Sin especificar</translation> <translation id="800218591365569300">Prueba a cerrar otros programas o pestañas para liberar memoria.</translation> <translation id="8004582292198964060">Navegador</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> utiliza normalmente el cifrado para proteger tu información. Cuando Chromium intentó establecer conexión con <ph name="SITE" />, el sitio web devolvió unas credenciales inusuales e incorrectas. Esto puede ocurrir si un atacante intenta suplantar la identidad de <ph name="SITE" /> o si una pantalla de inicio de sesión Wi-Fi interrumpe la conexión. Tu información sigue estando protegida, ya que Chromium detuvo la conexión antes de que se intercambiaran datos.</translation> <translation id="9106062320799175032">Añade una dirección de facturación</translation> <translation id="9107467864910557787"><ph name="MANAGER" /> gestiona el navegador</translation> +<translation id="91108059142052966">La política del administrador inhabilita la pantalla compartida con <ph name="APPLICATION_TITLE" /> cuando se muestra contenido confidencial</translation> <translation id="9114524666733003316">Confirmando tarjeta...</translation> <translation id="9114581008513152754">Este navegador no lo administra ninguna empresa ni organización. Es posible que se administre la actividad de este dispositivo fuera de Chrome. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Subido</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb index f5db622..7ac66c0 100644 --- a/components/strings/components_strings_et.xtb +++ b/components/strings/components_strings_et.xtb
@@ -1776,6 +1776,7 @@ <translation id="79859296434321399">Liitreaalsuse sisu vaatamiseks installige ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Köide</translation> +<translation id="7992044431894087211">Ekraanikuva jagamist rakendusega <ph name="APPLICATION_TITLE" /> jätkati</translation> <translation id="7995512525968007366">Ei ole määratud</translation> <translation id="800218591365569300">Sulgege muud vahelehed või programmid, et mälu vabastada.</translation> <translation id="8004582292198964060">Brauser</translation> @@ -2049,6 +2050,7 @@ <translation id="9103872766612412690">Sait <ph name="SITE" /> kasutab teie teabe kaitsmiseks tavaliselt krüpteerimist. Kui Chromium püüdis seekord saidiga <ph name="SITE" /> ühendust luua, tagastas veebisait ebatavalised ja valed mandaadid. See võib juhtuda siis, kui ründaja proovib teeselda, et on sait <ph name="SITE" />, või WiFi sisselogimisekraan on ühenduse katkestanud. Teie teave on endiselt kaitstud, sest Chromium peatas ühenduse enne andmevahetust.</translation> <translation id="9106062320799175032">Arveldusaadressi lisamine</translation> <translation id="9107467864910557787">Teie brauserit haldab <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Administraatori eeskirjad keelavad ekraanikuva jagamise rakendusega <ph name="APPLICATION_TITLE" />, kui konfidentsiaalne sisu on nähtaval</translation> <translation id="9114524666733003316">Kaardi kinnitamine …</translation> <translation id="9114581008513152754">Seda brauserit ei halda ettevõte ega muu organisatsioon. Selle seadme tegevusi võidakse hallata ka väljaspool Chrome'i. <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Üles laaditud</translation>
diff --git a/components/strings/components_strings_eu.xtb b/components/strings/components_strings_eu.xtb index 012ec14..6edb7e87 100644 --- a/components/strings/components_strings_eu.xtb +++ b/components/strings/components_strings_eu.xtb
@@ -1761,6 +1761,7 @@ <translation id="79859296434321399">Errealitate areagotuko edukia ikusteko, instalatu ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" />, <ph name="TIME" />, <ph name="BOOKMARKED" />, <ph name="TITLE" />, <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Koadernatu</translation> +<translation id="7992044431894087211">Berrekin zaio <ph name="APPLICATION_TITLE" /> aplikazioaren bidez pantaila partekatzeari</translation> <translation id="7995512525968007366">Ez da zehaztu</translation> <translation id="800218591365569300">Saiatu beste fitxa edo programa batzuk ixten memoria gehiago uzteko erabilgarri.</translation> <translation id="8004582292198964060">Arakatzailea</translation> @@ -2034,6 +2035,7 @@ <translation id="9103872766612412690">Eskuarki, <ph name="SITE" /> webguneak enkriptatzea erabiltzen du informazioa babesteko. Chromium <ph name="SITE" /> webgunera konektatzen saiatu denean, webguneak kredentzial desegokiak eta ezohikoak bidali ditu. Erasotzaile bat <ph name="SITE" /> webgunearen plantak egiten ari delako gerta daiteke hori, edo Wi-Fi sarean saioa hasteko pantailak konexioa eten duelako. Zure informazioa seguru dago, datuak trukatu aurretik eten baitu Chromium-ek konexioa.</translation> <translation id="9106062320799175032">Gehitu fakturazio-helbidea</translation> <translation id="9107467864910557787"><ph name="MANAGER" /> domeinuak kudeatzen du arakatzailea</translation> +<translation id="91108059142052966">Administratzailearen gidalerroek <ph name="APPLICATION_TITLE" /> aplikazioaren bidez pantaila partekatzea eragozten dute isilpeko edukia ikusgai dagoenean</translation> <translation id="9114524666733003316">Txartela berresten…</translation> <translation id="9114581008513152754">Arakatzailea ez du enpresa edo erakunde batek kudeatzen. Baliteke gailu honetako jarduerak Chrome-tik kanpo kudeatzea. <ph name="BEGIN_LINK" />Lortu informazio gehiago<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Kargatuta</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb index 47c052b2..27c9bc40 100644 --- a/components/strings/components_strings_fa.xtb +++ b/components/strings/components_strings_fa.xtb
@@ -1775,6 +1775,7 @@ <translation id="79859296434321399">برای مشاهده محتوای واقعیت افزوده، ARCore را نصب کنید</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">بههم چسباندن</translation> +<translation id="7992044431894087211">همرسانی صفحهنمایش با <ph name="APPLICATION_TITLE" /> ازسر گرفته شد</translation> <translation id="7995512525968007366">تعیین نشده</translation> <translation id="800218591365569300">سعی کنید برگهها یا برنامههای دیگر را ببندید تا حافظه آزاد شود.</translation> <translation id="8004582292198964060">مرورگر</translation> @@ -2048,6 +2049,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> معمولاً برای محافظت از اطلاعات شما از رمزگذاری استفاده میکند. اما این بار که Chromium تلاش کرد به <ph name="SITE" /> متصل شود، وبسایت اعتبارنامهای نامعمول و نادرست را برگرداند. ممکن است مهاجمی در تلاش باشد خود را بهجای <ph name="SITE" /> معرفی کند یا یک صفحه ورود به سیستم Wi-Fi در ارتباط اختلال ایجاد کرده باشد. اطلاعات شما همچنان ایمن است، زیرا Chromium قبل از هرگونه تبادل داده، اتصال را متوقف کرد.</translation> <translation id="9106062320799175032">افزودن نشانی صورتحساب</translation> <translation id="9107467864910557787">مرورگرتان توسط <ph name="MANAGER" /> مدیریت میشود</translation> +<translation id="91108059142052966">هروقت محتوای محرمانه نمایان باشد، خطمشی سرپرست همرسانی صفحهنمایش با <ph name="APPLICATION_TITLE" /> را غیرفعال میکند</translation> <translation id="9114524666733003316">درحال تأیید کردن کارت…</translation> <translation id="9114581008513152754">این مرورگر را شرکت یا سازمان دیگری مدیریت نمیکند. فعالیت در این دستگاه ممکن است خارج از Chrome مدیریت شود. <ph name="BEGIN_LINK" />بیشتر بدانید<ph name="END_LINK" /></translation> <translation id="9119042192571987207">بارگذاریشده</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb index 538f3fa..a2d6e315 100644 --- a/components/strings/components_strings_fi.xtb +++ b/components/strings/components_strings_fi.xtb
@@ -1778,6 +1778,7 @@ <translation id="79859296434321399">Asenna ARCore, niin voit nähdä AR-sisältöä.</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Sidonta</translation> +<translation id="7992044431894087211">Näytön jakamista (<ph name="APPLICATION_TITLE" />) jatkettu</translation> <translation id="7995512525968007366">Ei määritetty</translation> <translation id="800218591365569300">Yritä vapauttaa muistia sulkemalla muita välilehtiä tai ohjelmia.</translation> <translation id="8004582292198964060">Selain</translation> @@ -2052,6 +2053,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> suojaa tietosi normaalisti salauksen avulla. Kun Chromium yritti tällä kertaa yhdistää sivustoon <ph name="SITE" />, sivusto palautti epätavalliset ja virheelliset kirjautumistiedot. Hyökkääjä saattaa yrittää esiintyä sivustona <ph name="SITE" />, tai Wi-Fi-kirjautumisruutu on keskeyttänyt yhteyden. Tietosi ovat edelleen turvassa, sillä Chromium katkaisi yhteyden, ennen kuin mitään tietoja vaihdettiin.</translation> <translation id="9106062320799175032">Lisää laskutusosoite</translation> <translation id="9107467864910557787"><ph name="MANAGER" /> ylläpitää selaintasi</translation> +<translation id="91108059142052966">Järjestelmänvalvojakäytäntö poistaa näytön jakamisen (<ph name="APPLICATION_TITLE" />) käytöstä, kun näkyvissä on luottamuksellista sisältöä</translation> <translation id="9114524666733003316">Vahvistetaan korttia…</translation> <translation id="9114581008513152754">Yritys tai muu organisaatio ei ylläpidä selainta. Laitteen toimintaa saatetaan ylläpitää Chromen ulkopuolelta. <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Lähetetty</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb index bb4cd1b..adb4a9d 100644 --- a/components/strings/components_strings_fil.xtb +++ b/components/strings/components_strings_fil.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">Para matingnan ang augmented reality na content, i-install ang ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Bind</translation> +<translation id="7992044431894087211">Ipinagpatuloy ang pagbabahagi ng screen sa <ph name="APPLICATION_TITLE" /></translation> <translation id="7995512525968007366">Hindi Tinukoy</translation> <translation id="800218591365569300">Subukang isara ang iba pang tab o program upang magbakante ng memory.</translation> <translation id="8004582292198964060">Browser</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690">Karaniwang gumagamit ang <ph name="SITE" /> ng pag-encrypt upang protektahan ang iyong impormasyon. Noong sinubukang kumonekta ng Chromium sa <ph name="SITE" /> sa pagkakataong ito, nagbalik ang website ng mga hindi pangkaraniwan at maling kredensyal. Maaari itong mangyari kapag sinusubukan ng isang attacker na magpanggap bilang <ph name="SITE" />, o naputol ang koneksyon dahil sa isang screen ng pag-sign in sa Wi-Fi. Secure pa rin ang iyong impormasyon dahil inihinto ng Chromium ang koneksyon bago magkaroon ng palitan ng anumang data.</translation> <translation id="9106062320799175032">Magdagdag ng Billing Address</translation> <translation id="9107467864910557787">Pinapamahalaan ng <ph name="MANAGER" /> ang iyong browser</translation> +<translation id="91108059142052966">Dini-disable ng patakaran ng administrator ang pagbabahagi ng screen sa <ph name="APPLICATION_TITLE" /> kapag may nakikitang kumpidensyal na content</translation> <translation id="9114524666733003316">Kinukumpirma ang card...</translation> <translation id="9114581008513152754">Hindi pinapamahalaan ng kumpanya o iba pang organisasyon ang browser na ito. Posibleng pinapamahalaan sa labas ng Chrome ang aktibidad sa device na ito. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Na-upload</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb index 6165684..b5d6c08d 100644 --- a/components/strings/components_strings_fr.xtb +++ b/components/strings/components_strings_fr.xtb
@@ -1775,6 +1775,7 @@ <translation id="79859296434321399">Pour afficher des contenus en réalité augmentée, installez ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Reliure</translation> +<translation id="7992044431894087211">Le partage d'écran avec <ph name="APPLICATION_TITLE" /> a repris</translation> <translation id="7995512525968007366">Non spécifié</translation> <translation id="800218591365569300">Essayez de fermer les autres onglets ou programmes pour libérer de la mémoire.</translation> <translation id="8004582292198964060">Navigateur</translation> @@ -2048,6 +2049,7 @@ <translation id="9103872766612412690">Un chiffrement est normalement utilisé sur le site <ph name="SITE" /> pour protéger vos informations. Lors de la dernière tentative de connexion de Chromium au site <ph name="SITE" />, des identifiants inhabituels et incorrects ont été retournés. Il est possible qu'un individu malveillant tente de se faire passer pour <ph name="SITE" /> ou qu'un écran de connexion Wi-Fi ait interrompu la connexion. Vos informations restent sécurisées, car nous avons arrêté la connexion avant l'échange des données.</translation> <translation id="9106062320799175032">Ajouter une adresse de facturation</translation> <translation id="9107467864910557787">Votre navigateur est géré par <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Les règles définies par l'administrateur désactivent le partage d'écran avec <ph name="APPLICATION_TITLE" /> lorsque le contenu affiché est confidentiel</translation> <translation id="9114524666733003316">Validation de la carte…</translation> <translation id="9114581008513152754">Ce navigateur n'est géré par aucune entreprise ni aucune autre organisation. Il se peut que l'activité sur cet appareil soit gérée en dehors de Chrome. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Importation terminée</translation>
diff --git a/components/strings/components_strings_gl.xtb b/components/strings/components_strings_gl.xtb index bbeddbd..0023ae59 100644 --- a/components/strings/components_strings_gl.xtb +++ b/components/strings/components_strings_gl.xtb
@@ -1774,6 +1774,7 @@ <translation id="79859296434321399">Para ver contido de realidade aumentada, instala ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Encadernación</translation> +<translation id="7992044431894087211">Retomouse a pantalla compartida con <ph name="APPLICATION_TITLE" /></translation> <translation id="7995512525968007366">Non especificado</translation> <translation id="800218591365569300">Proba a pechar outras pestanas ou programas para liberar memoria.</translation> <translation id="8004582292198964060">Navegador</translation> @@ -2047,6 +2048,7 @@ <translation id="9103872766612412690">Normalmente, <ph name="SITE" /> encripta a túa información para protexela. Nesta ocasión, cando Chromium tentou conectar con <ph name="SITE" />, o sitio web devolveu credenciais estrañas e incorrectas. É posible que un atacante tentase facerse pasar por <ph name="SITE" /> ou que a pantalla de inicio de sesión de wifi interrompese a conexión. Non obstante, a túa información segue a salvo porque Chromium detivo a conexión antes de intercambiar datos.</translation> <translation id="9106062320799175032">Engade un enderezo de facturación</translation> <translation id="9107467864910557787"><ph name="MANAGER" /> xestiona o teu navegador</translation> +<translation id="91108059142052966">A política do administrador desactiva a pantalla compartida con <ph name="APPLICATION_TITLE" /> cando hai contido confidencial á vista</translation> <translation id="9114524666733003316">Confirmando tarxeta…</translation> <translation id="9114581008513152754">Ningunha compañía ou organización xestiona este navegador. A actividade deste dispositivo pódese xestionar fóra de Chrome. <ph name="BEGIN_LINK" />Máis información<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Cargouse</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb index e6f2e95..aab7e71c 100644 --- a/components/strings/components_strings_gu.xtb +++ b/components/strings/components_strings_gu.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">ઑગ્મેન્ટેડ રિયાલિટી કન્ટેન્ટ જોવા માટે, ARCore ઇન્સ્ટૉલ કરો</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">જોડો</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> સાથે સ્ક્રીન શેરિંગની સુવિધા ફરી શરૂ કરવામાં આવી</translation> <translation id="7995512525968007366">નિર્દિષ્ટ કરાયેલ નથી</translation> <translation id="800218591365569300">મેમરી ખાલી કરવા માટે અન્ય ટૅબ અથવા પ્રોગ્રામને બંધ કરવાનો પ્રયાસ કરો.</translation> <translation id="8004582292198964060">બ્રાઉઝર</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> સામાન્ય રીતે તમારી માહિતીને સુરક્ષિત રાખવા માટે એન્ક્રિપ્શનનો ઉપયોગ કરે છે. જ્યારે આ સમયે Chromium દ્વારા <ph name="SITE" />થી કનેક્ટ કરવાનો પ્રયાસ થયો, ત્યારે વેબસાઇટે અસામાન્ય અને ખોટા લૉગ ઇન વિગતને પાછા મોકલ્યાં. આવું ત્યારે થઈ શકે જ્યારે કોઈ હુમલાખોર <ph name="SITE" /> હોવાનો ડોળ કરવાનો પ્રયાસ કરી રહ્યો હોવ અથવા કોઈ Wi-Fi સાઇન-ઇન સ્ક્રીને કનેક્શનમાં વિક્ષેપ પાડ્યો હોય. તમારી માહિતી હજી પણ સુરક્ષિત છે કારણ કે Chromium એ કોઈ પણ ડેટા વિનિમય થાય એ પહેલાં જ કનેક્શન રોકી દીધું.</translation> <translation id="9106062320799175032">બિલિંગ સરનામું ઉમેરો</translation> <translation id="9107467864910557787">તમારું બ્રાઉઝર <ph name="MANAGER" /> દ્વારા મેનેજ કરવામાં આવે છે</translation> +<translation id="91108059142052966">ગોપનીય કન્ટેન્ટ દેખાય ત્યારે વ્યવસ્થાપક પૉલિસી <ph name="APPLICATION_TITLE" /> સાથે સ્ક્રીન શેરિંગની સુવિધા બંધ કરે છે</translation> <translation id="9114524666733003316">કાર્ડ કન્ફર્મ કરી રહ્યાં છીએ...</translation> <translation id="9114581008513152754">આ બ્રાઉઝર કંપની દ્વારા અથવા અન્ય સંસ્થા દ્વારા મેનેજ કરવામાં આવતું નથી. આ ડિવાઇસ પરની પ્રવૃત્તિ Chromeની બહાર મેનેજ કરી શકાય છે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation> <translation id="9119042192571987207">અપલોડ કર્યો</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb index a59086c..22229232 100644 --- a/components/strings/components_strings_hi.xtb +++ b/components/strings/components_strings_hi.xtb
@@ -1774,6 +1774,7 @@ <translation id="79859296434321399">'बढ़ी हुई वास्तविकता' की सामग्री देखने के लिए, ARCore इंस्टॉल करें</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">बाइंड</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> के साथ फिर से स्क्रीन शेयर की जा रही है</translation> <translation id="7995512525968007366">बताया नहीं गया है</translation> <translation id="800218591365569300">जगह खाली करने के लिए दूसरे टैब या प्रोग्राम बंद करके देखें.</translation> <translation id="8004582292198964060">ब्राउज़र</translation> @@ -2048,6 +2049,7 @@ <translation id="9103872766612412690">आपकी जानकारी की सुरक्षा करने के लिए <ph name="SITE" /> आम तौर पर, सुरक्षित करने के तरीके (एन्क्रिप्शन) का उपयोग करती है. जब 'क्रोमियम' ने इस बार <ph name="SITE" /> से कनेक्ट करने की कोशिश की तो, वेबसाइट ने असामान्य और गलत क्रेडेंशियल वापस भेजे. ऐसा तब हो सकता है जब कोई हमलावर <ph name="SITE" /> होने का दावा करने की कोशिश कर रहा हो या किसी वाई-फ़ाई 'साइन इन स्क्रीन' की वजह से कनेक्शन में खराबी आ गई हो. आपकी जानकारी अभी भी सुरक्षित है क्योंकि किसी भी डेटा को एक्सचेंज करने से पहले ही 'क्रोमियम' ने कनेक्शन रोक दिया था.</translation> <translation id="9106062320799175032">बिलिंग पता जोड़ें</translation> <translation id="9107467864910557787"><ph name="MANAGER" /> आपके ब्राउज़र को प्रबंधित करता है</translation> +<translation id="91108059142052966">स्क्रीन पर गोपनीय कॉन्टेंट दिखने पर एडमिन नीति, <ph name="APPLICATION_TITLE" /> के साथ स्क्रीन शेयर करना बंद कर देती है</translation> <translation id="9114524666733003316">कार्ड की पुष्टि की जा रही है...</translation> <translation id="9114581008513152754">यह ब्राउज़र कोई कंपनी या दूसरा संगठन प्रबंधित नहीं करता. इस डिवाइस की गतिविधि Chrome से बाहर प्रबंधित की जा सकती है. <ph name="BEGIN_LINK" />ज़्यादा जानें<ph name="END_LINK" /></translation> <translation id="9119042192571987207">अपलोड किया गया</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb index ba590b9a..31073fa 100644 --- a/components/strings/components_strings_hr.xtb +++ b/components/strings/components_strings_hr.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">Za prikaz sadržaja proširene stvarnosti instalirajte ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Uvez</translation> +<translation id="7992044431894087211">Dijeljenje zaslona s aplikacijom <ph name="APPLICATION_TITLE" /> je nastavljeno</translation> <translation id="7995512525968007366">Nije navedeno</translation> <translation id="800218591365569300">Pokušajte zatvoriti ostale kartice ili programe da biste oslobodili memoriju.</translation> <translation id="8004582292198964060">Preglednik</translation> @@ -2052,6 +2053,7 @@ i netočne vjerodajnice. To može značiti da se neki napadač pokušava predstaviti kao <ph name="SITE" /> ili je zaslon za prijavu na Wi-Fi prekinuo vezu. Vaši su podaci još uvijek sigurni jer je Chromium zaustavio povezivanje prije razmjene podataka.</translation> <translation id="9106062320799175032">Dodajte adresu za naplatu</translation> <translation id="9107467864910557787">Vašim preglednikom upravlja <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Administratorsko pravilo onemogućuje dijeljenje zaslona s aplikacijom <ph name="APPLICATION_TITLE" /> ako je vidljiv povjerljiv sadržaj</translation> <translation id="9114524666733003316">Potvrđivanje kartice...</translation> <translation id="9114581008513152754">Preglednikom ne upravlja tvrtka ili neka druga organizacija. Aktivnostima na ovom uređaju možda se upravlja izvan Chromea. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Preneseno</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb index 2bc01de8a4..9fe79254 100644 --- a/components/strings/components_strings_hu.xtb +++ b/components/strings/components_strings_hu.xtb
@@ -1773,6 +1773,7 @@ <translation id="79859296434321399">A kiterjesztett valósággal kapcsolatos tartalmak megtekintéséhez telepítse az ARCore-t</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Kötés</translation> +<translation id="7992044431894087211">Képernyőmegosztás folytatva a(z) <ph name="APPLICATION_TITLE" /> alkalmazással</translation> <translation id="7995512525968007366">Nincs megadva</translation> <translation id="800218591365569300">Próbáljon meg bezárni más lapokat vagy programokat memória felszabadítása céljából.</translation> <translation id="8004582292198964060">Böngésző</translation> @@ -2047,6 +2048,7 @@ <translation id="9103872766612412690">A(z) <ph name="SITE" /> webhely rendes esetben titkosítást alkalmaz az Ön adatainak védelme érdekében. Amikor a Chromium most csatlakozni próbált, a(z) <ph name="SITE" /> webhely szokatlan és helytelen hitelesítési adatokat küldött vissza.Ez olyankor fordulhat elő, amikor egy támadó megpróbálja magát kiadni a(z) <ph name="SITE" /> webhelynek, vagy valamilyen Wi-Fi-bejelentkezési képernyő megszakította a kapcsolatot. Adatai továbbra is biztonságban vannak, mivel a Chromium még azt megelőzően megszakította a kapcsolatot, hogy bármiféle adatcserére sor kerülhetett volna.</translation> <translation id="9106062320799175032">Számlázási cím hozzáadása</translation> <translation id="9107467864910557787">Böngészőjét a(z) <ph name="MANAGER" /> kezeli</translation> +<translation id="91108059142052966">Rendszergazdai házirend tiltja a(z) <ph name="APPLICATION_TITLE" /> alkalmazással való képernyőmegosztást, ha bizalmas tartalom látható a képernyőn.</translation> <translation id="9114524666733003316">Kártya ellenőrzése…</translation> <translation id="9114581008513152754">Ezt a böngészőt nem kezeli cég vagy más szervezet. Lehetséges, hogy az eszközön végzett tevékenységeket a Chrome-on kívülről felügyelik. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" />.</translation> <translation id="9119042192571987207">Feltöltve</translation>
diff --git a/components/strings/components_strings_hy.xtb b/components/strings/components_strings_hy.xtb index 4147790..0ede3ad 100644 --- a/components/strings/components_strings_hy.xtb +++ b/components/strings/components_strings_hy.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">Լրացված իրականության ռեժիմում բովանդակությունը դիտելու համար տեղադրեք ARCore հավելվածը</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Ամրակար</translation> +<translation id="7992044431894087211">Էկրանի ցուցադրումը <ph name="APPLICATION_TITLE" /> հավելվածին վերականգնվել է</translation> <translation id="7995512525968007366">Նշված չէ</translation> <translation id="800218591365569300">Փակեք մյուս ներդիրներն ու ծրագրերը՝ տարածք ազատելու համար:</translation> <translation id="8004582292198964060">Դիտարկիչ</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690">Ձեր տվյալները պաշտպանելու համար <ph name="SITE" /> կայքը սովորաբար գաղտնագրում է օգտագործում: Chromium-ի՝ <ph name="SITE" /> կայքին կապակցվելու փորձի ժամանակ կայքը վերադարձրեց արտասովոր և սխալ մուտքային տվյալներ: Հնարավոր է, որ <ph name="SITE" /> կայքի անվան տակ նենգորդ է հանդես գալիս, կամ Wi-Fi մուտքի էկրանի կապն ընդհատվել է: Ձեր տվյալները, այնուամենայնիվ, ապահով են, քանի որ Chromium-ն ընդհատել էր կապը՝ նախքան տեղի կունենար տվյալների փոխանակում:</translation> <translation id="9106062320799175032">Ավելացրեք վճարային հասցեն</translation> <translation id="9107467864910557787">Ձեր դիտարկիչը կառավարվում է <ph name="MANAGER" />-ի կողմից</translation> +<translation id="91108059142052966">Ադմինիստրատորն անջատել է էկրանի ցուցադրումը <ph name="APPLICATION_TITLE" /> հավելվածին, երբ գաղտնի բովանդակություն է տեսանելի</translation> <translation id="9114524666733003316">Քարտի հաստատում...</translation> <translation id="9114581008513152754">Ձեր դիտարկիչը չի կառավարվում որևէ ընկերության կամ կազմակերպության կողմից։ Սարքում արվող գործողությունները կարող են կառավարվել Chrome-ից դուրս։ <ph name="BEGIN_LINK" />Իմանալ ավելին<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Վերբեռնված է</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb index 0adc3c59..7468c7dcd 100644 --- a/components/strings/components_strings_id.xtb +++ b/components/strings/components_strings_id.xtb
@@ -1765,6 +1765,7 @@ <translation id="79859296434321399">Untuk melihat konten augmented reality, instal ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Jilid</translation> +<translation id="7992044431894087211">Berbagi layar dengan <ph name="APPLICATION_TITLE" /> dilanjutkan</translation> <translation id="7995512525968007366">Tidak Ditentukan</translation> <translation id="800218591365569300">Coba tutup tab atau program lain untuk mengosongkan memori.</translation> <translation id="8004582292198964060">Browser</translation> @@ -2036,6 +2037,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> biasanya menggunakan enkripsi untuk melindungi informasi Anda. Saat Chromium mencoba menyambung ke <ph name="SITE" /> kali ini, situs web mengembalikan kredensial yang salah dan tidak biasa. Hal ini dapat terjadi jika ada penyerang yang berpura-pura menjadi <ph name="SITE" />, atau layar masuk Wi-Fi mengganggu sambungan. Informasi Anda masih aman karena Chromium menghentikan sambungan sebelum terjadi pertukaran data apa pun.</translation> <translation id="9106062320799175032">Tambahkan Alamat Penagihan</translation> <translation id="9107467864910557787">Browser Anda dikelola oleh <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Kebijakan administrator menonaktifkan berbagi layar dengan <ph name="APPLICATION_TITLE" /> saat konten rahasia terlihat</translation> <translation id="9114524666733003316">Mengonfirmasi kartu...</translation> <translation id="9114581008513152754">Browser ini tidak dikelola oleh perusahaan atau organisasi lain. Aktivitas di perangkat ini mungkin dikelola di luar Chrome. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Diupload</translation>
diff --git a/components/strings/components_strings_is.xtb b/components/strings/components_strings_is.xtb index 17806aec..202e236d 100644 --- a/components/strings/components_strings_is.xtb +++ b/components/strings/components_strings_is.xtb
@@ -1778,6 +1778,7 @@ <translation id="79859296434321399">Til að skoða efni aukins veruleika skaltu setja upp ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Binda</translation> +<translation id="7992044431894087211">Skjádeilingu með <ph name="APPLICATION_TITLE" /> var haldið áfram</translation> <translation id="7995512525968007366">Ekki tilgreint</translation> <translation id="800218591365569300">Prófaðu að loka öðrum forritum til að losa um minni.</translation> <translation id="8004582292198964060">Vafri</translation> @@ -2051,6 +2052,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> notast yfirleitt við dulkóðun til að vernda upplýsingarnar þínar. Þegar Chromium reyndi að tengjast <ph name="SITE" /> í þetta skiptið sendi vefsvæðið óvenjuleg og röng skilríki til baka. Þetta getur gerst þegar tölvuþrjótur reynir að þykjast vera <ph name="SITE" /> eða innskráningarskjár fyrir Wi-Fi hefur truflað tenginguna. Upplýsingarnar þínar eru enn öruggar vegna þess að Chromium sleit tengingunni áður en skipst var á gögnum.</translation> <translation id="9106062320799175032">Bæta við heimilisfangi greiðanda</translation> <translation id="9107467864910557787"><ph name="MANAGER" /> hefur umsjón með vafranum þínum</translation> +<translation id="91108059142052966">Reglur stjórnenda útiloka skjádeilingu með <ph name="APPLICATION_TITLE" /> þegar trúnaðarefni er sýnilegt</translation> <translation id="9114524666733003316">Staðfestir kort...</translation> <translation id="9114581008513152754">Þessi vafri er ekki í umsjón fyrirtækis eða annarrar stofnunar. Hægt er að hafa umsjón með aðgerðum í þessu tæki utan Chrome. <ph name="BEGIN_LINK" />Frekari upplýsingar<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Sent</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb index 910dd96..82cf05e 100644 --- a/components/strings/components_strings_it.xtb +++ b/components/strings/components_strings_it.xtb
@@ -1773,6 +1773,7 @@ <translation id="79859296434321399">Per visualizzare i contenuti di realtà aumentata, installa ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Rilegatura</translation> +<translation id="7992044431894087211">La condivisione dello schermo con <ph name="APPLICATION_TITLE" /> è stata ripristinata</translation> <translation id="7995512525968007366">Non specificato</translation> <translation id="800218591365569300">Prova a chiudere altri programmi o schede per liberare spazio in memoria.</translation> <translation id="8004582292198964060">Browser</translation> @@ -2046,6 +2047,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> in genere utilizza la crittografia per proteggere le tue informazioni. Questa volta, quando Chromium ha provato a connettersi a <ph name="SITE" />, il sito web ha restituito credenziali insolite e sbagliate. È possibile che un malintenzionato stia cercando di spacciarsi per il sito <ph name="SITE" /> oppure che una schermata di accesso alla rete Wi-Fi abbia interrotto la connessione. Le tue informazioni sono ancora al sicuro perché Chromium ha interrotto la connessione prima che avvenissero scambi di dati.</translation> <translation id="9106062320799175032">Aggiungi indirizzo di fatturazione</translation> <translation id="9107467864910557787">Il browser in uso è gestito da <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Il criterio dell'amministratore disattiva la condivisione dello schermo con <ph name="APPLICATION_TITLE" /> quando sono visibili contenuti riservati</translation> <translation id="9114524666733003316">Conferma della carta...</translation> <translation id="9114581008513152754">Questo browser non è gestito da un'azienda o da un'altra organizzazione. L'attività svolta su questo dispositivo potrebbe essere gestita al di fuori di Chrome. <ph name="BEGIN_LINK" />Ulteriori informazioni<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Caricato</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb index 049e8660..a00c608 100644 --- a/components/strings/components_strings_ja.xtb +++ b/components/strings/components_strings_ja.xtb
@@ -1766,6 +1766,7 @@ <translation id="79859296434321399">拡張現実(AR)コンテンツを表示するには ARCore をインストールしてください</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">製本</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> との画面共有が再開されました</translation> <translation id="7995512525968007366">指定なし</translation> <translation id="800218591365569300">メモリを解放するために、他のタブやプログラムを閉じてみてください。</translation> <translation id="8004582292198964060">ブラウザ</translation> @@ -2040,6 +2041,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> では通常、暗号化して情報を保護しています。今回、Chromium から <ph name="SITE" /> への接続試行時に、このウェブサイトからいつもとは異なる誤った認証情報が返されました。悪意のあるユーザーが <ph name="SITE" /> になりすまそうとしているか、Wi-Fi ログイン画面で接続が中断された可能性があります。データのやり取りが行われる前に Chromium によって接続が停止されたため、情報は引き続き保護されています。</translation> <translation id="9106062320799175032">請求先住所の追加</translation> <translation id="9107467864910557787">ご使用のブラウザは <ph name="MANAGER" /> によって管理されています</translation> +<translation id="91108059142052966">管理者のポリシーによって、機密コンテンツが表示されているときは、<ph name="APPLICATION_TITLE" /> との画面共有が無効になります</translation> <translation id="9114524666733003316">カードを確認しています…</translation> <translation id="9114581008513152754">このブラウザは、会社またはその他の組織によって管理されていません。このデバイスでのアクティビティは、Chrome 以外で管理されている可能性があります。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation> <translation id="9119042192571987207">アップロード済み</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb index bb3b25f..20e03b2 100644 --- a/components/strings/components_strings_ka.xtb +++ b/components/strings/components_strings_ka.xtb
@@ -1766,6 +1766,7 @@ <translation id="79859296434321399">აუგმენტური რეალობის კონტენტის სანახავად დააინსტალირეთ ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">აკინძვა</translation> +<translation id="7992044431894087211">ეკრანის <ph name="APPLICATION_TITLE" />-თან გაზიარება აღდგენილია</translation> <translation id="7995512525968007366">არ არის მითითებული</translation> <translation id="800218591365569300">მეხსიერების გამოსათავისუფლებლად ცადეთ სხვა ჩანართების ან პროგრამების დახურვა.</translation> <translation id="8004582292198964060">ბრაუზერი</translation> @@ -2039,6 +2040,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> დაშიფვრას, ჩვეულებრივ, თქვენი ინფორმაციის დაცვის მიზნით იყენებს. Chromium-ის მიერ <ph name="SITE" />-თან დაკავშირების მცდელობისას, ვებსაიტმა ამჯერად უჩვეულო და არასწორი ავტორიზაციის მონაცემები გამოგზავნა. ეს შეიძლება მოხდეს მაშინ, როცა თავდამსხმელი თავს <ph name="SITE" />-ად ასაღებს, ან დაკავშირების შეფერხების მიზეზი Wi-Fi შესვლის ეკრანი გახდა. თქვენი ინფორმაცია დაცულია, რადგან Chromium-მა დაკავშირება მონაცემების მიმოცვლამდე შეწყვიტა.</translation> <translation id="9106062320799175032">დაამატეთ ბილინგის მისამართი</translation> <translation id="9107467864910557787">თქვენს ბრაუზერს მართავს <ph name="MANAGER" /></translation> +<translation id="91108059142052966"><ph name="APPLICATION_TITLE" />-თან ეკრანის გაზიარება დაბლოკილია ადმინისტრატორის წესების მიხედვით, როცა ხილულია კონფიდენციალური კონტენტი</translation> <translation id="9114524666733003316">მიმდინარეობს ბარათის დადასტურება...</translation> <translation id="9114581008513152754">ამ ბრაუზერს არ მართავს კომპანია თუ სხვა ორგანიზაცია. ამ მოწყობილობაზე აქტივობა შეიძლება იმართებოდეს Chrome-ს მიღმა. <ph name="BEGIN_LINK" />შეიტყვეთ მეტი<ph name="END_LINK" /></translation> <translation id="9119042192571987207">ატვირთულია</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb index b456cb32..e981149 100644 --- a/components/strings/components_strings_kk.xtb +++ b/components/strings/components_strings_kk.xtb
@@ -1776,6 +1776,7 @@ <translation id="79859296434321399">Толықтырылған шындық мазмұнын көру үшін ARCore платформасын орнатыңыз</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Байлау</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> веб-сайтына экранды көрсету жалғастырылды.</translation> <translation id="7995512525968007366">Көрсетілмеген</translation> <translation id="800218591365569300">Жадты босату үшін басқа қойындылары не бағдарламаларды жауып көріңіз</translation> <translation id="8004582292198964060">Браузер</translation> @@ -2049,6 +2050,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> әдетте ақпаратыңызды қорғау үшін шифрлауды қолданады. Осы жолы Chromium <ph name="SITE" /> сайтына қосылуға әрекет еткенде, веб-сайт әдеттен тыс және қате тіркелгі деректерін жіберді. Бұл жағдай қаскүнем <ph name="SITE" /> болып көрінгісі келгенде немесе Wi-Fi кіру экраны байланысқа кедергі болғанда пайда болуы мүмкін. Ақпаратыңыз қауіпсіз күйде, себебі Chromium ешқандай дерек алмасу болмай тұрып байланысты үзді.</translation> <translation id="9106062320799175032">Төлем мекенжайын қосу</translation> <translation id="9107467864910557787">Браузеріңізді <ph name="MANAGER" /> басқарады</translation> +<translation id="91108059142052966">Құпия мазмұн көрініп тұрса, әкімші саясаты <ph name="APPLICATION_TITLE" /> веб-сайтына экранды көрсетпейді.</translation> <translation id="9114524666733003316">Карта расталуда...</translation> <translation id="9114581008513152754">Бұл браузер компания немесе басқа ұйым арқылы басқарылмайды. Құрылғыдағы әрекет Chrome браузерінен тыс басқарылуы мүмкін. <ph name="BEGIN_LINK" />Толығырақ<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Жүктеп салынды</translation>
diff --git a/components/strings/components_strings_km.xtb b/components/strings/components_strings_km.xtb index a117c2f..0814cf2b 100644 --- a/components/strings/components_strings_km.xtb +++ b/components/strings/components_strings_km.xtb
@@ -1782,6 +1782,7 @@ <translation id="79859296434321399">ដើម្បីមើលខ្លឹមសារ AR សូមដំឡើង ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">ភ្ជាប់</translation> +<translation id="7992044431894087211">ការបង្ហាញអេក្រង់ជាមួយ <ph name="APPLICATION_TITLE" /> ត្រូវបានបន្ត</translation> <translation id="7995512525968007366">មិនបានបញ្ជាក់</translation> <translation id="800218591365569300">សាកល្បងបិទផ្ទាំង ឬកម្មវិធីផ្សេងទៀត ដើម្បីបង្កើនទំហំអង្គចងចាំ។</translation> <translation id="8004582292198964060">កម្មវិធីរុករក</translation> @@ -2055,6 +2056,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> ជាធម្មតាប្រើការអ៊ិនគ្រីបដើម្បីការពារព័ត៌មានរបស់អ្នក។ នៅពេលដែល Chromium ព្យាយាមភ្ជាប់ទៅ <ph name="SITE" /> នៅពេលនេះ នោះគេហទំព័រនឹងផ្ញើត្រឡប់មកវិញនូវព័ត៌មានអត្តសញ្ញាណដែលមិនប្រក្រតី និងមិនត្រឹមត្រូវ។ វាអាចកើតឡើងនៅពេលដែលអ្នកវាយប្រហារកំពុងព្យាយាមក្លែងជា <ph name="SITE" /> ឬនៅពេលដែលអេក្រង់ចូល Wi-Fi បង្កការរំខានដល់ការតភ្ជាប់។ ព័ត៌មានរបស់អ្នកគឺនៅតែមានសុវត្ថិភាពដដែល ពីព្រោះ Chromium បានបញ្ឈប់ការតភ្ជាប់នោះ មុនពេលដែលមានការផ្តោះប្តូរទិន្នន័យ។</translation> <translation id="9106062320799175032">បញ្ចូលអាសយដ្ឋានចេញវិក្កយបត្រ</translation> <translation id="9107467864910557787">កម្មវិធីរុករកតាមអ៊ីនធឺណិតរបស់អ្នកស្ថិតក្រោមការគ្រប់គ្រងរបស់ <ph name="MANAGER" /></translation> +<translation id="91108059142052966">គោលការណ៍របស់អ្នកគ្រប់គ្រងបិទការបង្ហាញអេក្រង់ជាមួយ <ph name="APPLICATION_TITLE" /> នៅពេលអាចមើលឃើញខ្លឹមសារសម្ងាត់</translation> <translation id="9114524666733003316">កំពុងបញ្ជាក់បណ្ណឥណទាន...</translation> <translation id="9114581008513152754">កម្មវិធីរុករកតាមអ៊ីនធឺណិតនេះមិនស្ថិតក្រោមការគ្រប់គ្រងរបស់ក្រុមហ៊ុន ឬស្ថាប័នផ្សេងទេ។ សកម្មភាពនៅលើឧបករណ៍នេះអាចនឹងត្រូវបានគ្រប់គ្រងក្រៅពី Chrome។ <ph name="BEGIN_LINK" />ស្វែងយល់បន្ថែម<ph name="END_LINK" /></translation> <translation id="9119042192571987207">បានបង្ហោះ</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb index f884c8a..051f3fe 100644 --- a/components/strings/components_strings_ko.xtb +++ b/components/strings/components_strings_ko.xtb
@@ -1765,6 +1765,7 @@ <translation id="79859296434321399">증강 현실 콘텐츠를 보려면 ARCore를 설치하세요.</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">바인드</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" />과(와)의 화면 공유가 재개되었습니다.</translation> <translation id="7995512525968007366">지정되지 않음</translation> <translation id="800218591365569300">다른 탭이나 프로그램을 종료하여 메모리를 확보하세요.</translation> <translation id="8004582292198964060">브라우저</translation> @@ -2038,6 +2039,7 @@ <translation id="9103872766612412690"><ph name="SITE" />에서는 사용자 정보를 보호하기 위해 일반적으로 암호화를 사용합니다. 이번에 Chromium에서 <ph name="SITE" />에 연결을 시도했을 때 웹사이트에서 비정상적이고 잘못된 사용자 인증 정보를 반환했습니다. 이는 공격자가 <ph name="SITE" />인 것처럼 가장하려고 하거나 Wi-Fi 로그인 화면이 연결을 방해했기 때문일 수 있습니다. 데이터 교환이 발생하기 전에 Chromium에서 연결을 중단했으므로 사용자 정보는 안전합니다.</translation> <translation id="9106062320799175032">청구서 주소 추가</translation> <translation id="9107467864910557787">내 브라우저는 <ph name="MANAGER" />에서 관리합니다</translation> +<translation id="91108059142052966">관리자 정책에 따라 기밀 콘텐츠가 보일 때 <ph name="APPLICATION_TITLE" />과(와)의 화면 공유가 중지됩니다.</translation> <translation id="9114524666733003316">카드 확인 중...</translation> <translation id="9114581008513152754">이 브라우저는 회사 또는 다른 조직에서 관리하지 않습니다. 이 기기의 활동은 Chrome 외부에서도 관리할 수 있습니다. <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation> <translation id="9119042192571987207">업로드됨</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb index 9f4ef90..5f00802 100644 --- a/components/strings/components_strings_ky.xtb +++ b/components/strings/components_strings_ky.xtb
@@ -1776,6 +1776,7 @@ <translation id="79859296434321399">Кошумчаланган чындыкты көрүү үчүн ARCore кызматын орнотуңуз</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Байлоо</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> колдонмосу менен экранды бөлүшүү улантылды</translation> <translation id="7995512525968007366">Белгиленген эмес</translation> <translation id="800218591365569300">Эстутумду бошотуу үчүн башка өтмөктөрдү же программаларды жаап көрүңүз.</translation> <translation id="8004582292198964060">Серепчи</translation> @@ -2049,6 +2050,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> сайты маалыматыңызды коргоо үчүн адатта шифрлөөнү колдонот. Chromium бул жолу <ph name="SITE" /> сайтына туташууга аракет кылганда, вебсайт адаттан тышкары жана туура эмес эсептик дайындарды жөнөттү. Бул чабуулчу өзүн <ph name="SITE" /> катары көрсөткөнгө аракет кылып жатканда же Wi-Fi'дын кирүү экраны туташууну үзгүлтүккө учуратканда орун алышы мүмкүн. Chromium дайындар алмашылганга чейин туташууну үзүп койгондуктан, маалыматыңыздын коопсуздугу бузулган жок.</translation> <translation id="9106062320799175032">Төлөмдүн дарегин кошуу</translation> <translation id="9107467864910557787">Серепчиңиз <ph name="MANAGER" /> тарабынан башкарылат</translation> +<translation id="91108059142052966">Купуя мазмун көрүнүп турганда Администратордун саясатына ылайык экранды <ph name="APPLICATION_TITLE" /> менен бөлүшүүгө болбойт</translation> <translation id="9114524666733003316">Карта текшерилүүдө…</translation> <translation id="9114581008513152754">Бул серепчи компанияңыз же башка уюм тарабынан башкарылбайт. Бул түзмөктө аткарылган аракеттер Chrome'дон тышкары башкарылышы мүмкүн. <ph name="BEGIN_LINK" />Кеңири маалымат<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Жүктөлүп берилди</translation>
diff --git a/components/strings/components_strings_lo.xtb b/components/strings/components_strings_lo.xtb index 8a715c3..d2853a1 100644 --- a/components/strings/components_strings_lo.xtb +++ b/components/strings/components_strings_lo.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">ເພື່ອເບິ່ງເນື້ອຫາອາກິວເມັນ ຣີອາລິຕີ, ກະລຸນາຕິດຕັ້ງ ARCore ກ່ອນ</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">ຫບິບເຫຼັ້ມ</translation> +<translation id="7992044431894087211">ສືບຕໍ່ການແບ່ງປັນໜ້າຈໍກັບ <ph name="APPLICATION_TITLE" /> ແລ້ວ</translation> <translation id="7995512525968007366">ບໍ່ໄດ້ລະບຸ</translation> <translation id="800218591365569300">ລອງປິດແຖບ ຫຼື ໂປຣແກຣມອື່ນເພື່ອຂະຫຍາຍຄວາມຈຳ.</translation> <translation id="8004582292198964060">ບຣາວເຊີ</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690">ໂດຍປົກກະຕິ <ph name="SITE" /> ໃຊ້ການເຂົ້າລະຫັດເພື່ອປົກປ້ອງຂໍ້ມູນຂອງທ່ານ. ເມື່ອ Chromium ພະຍາຍາມເຊື່ອມຕໍ່ກັບ <ph name="SITE" /> ໃນເທື່ອນີ້, ເວັບໄຊໄດ້ມີການສົ່ງຂໍ້ມູນປະຈຳຕົວທີ່ຜິດປົກກະຕິ ແລະບໍ່ຖືກຕ້ອງກັບຄືນ. ນີ້ອາດຈະເກີດຂຶ້ນເມື່ອຜູ້ໂຈມຕີພະຍາຍາມປອມເປັນ <ph name="SITE" /> ຫຼື ໜ້າຈໍການເຂົ້າສູ່ລະບົບ Wi-Fi ໄດ້ຂັດຈັງຫວະການເຊື່ອມຕໍ່. ຂໍ້ມູນຂອງທ່ານຍັງປອດໄພຢູ່ເພາະວ່າ Chromium ໄດ້ຢຸດການເຊື່ອມຕໍ່ກ່ອນທີ່ຈະມີການແລກປ່ຽນຂໍ້ມູນ.</translation> <translation id="9106062320799175032">ເພີ່ມທີ່ຢູ່ການຮຽກເກັບເງິນ</translation> <translation id="9107467864910557787">ໂປຣແກຣມທ່ອງເວັບຂອງທ່ານຖືກຈັດໂດຍ <ph name="MANAGER" /></translation> +<translation id="91108059142052966">ນະໂຍບາຍຂອງຜູ້ເບິ່ງແຍງລະບົບປິດການນຳໃຊ້ການແບ່ງປັນໜ້າຈໍກັບ <ph name="APPLICATION_TITLE" /> ເມື່ອມີເນື້ອຫາສະແດງຢູ່</translation> <translation id="9114524666733003316">ກຳລັງຢືນຢັນບັດ...</translation> <translation id="9114581008513152754">ໂປຣແກຣມທ່ອງເວັບນີ້ບໍ່ໄດ້ຖືກຈັດການໂດຍບໍລິສັດ ຫຼື ອົງການຈັດຕັ້ງອື່ນ. ການເຄື່ອນໄຫວໃນອຸປະກອນນີ້ອາດຈະຖືກຈັດການຢູ່ນອກ Chrome ໄດ້. <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" /></translation> <translation id="9119042192571987207">ອັບໂຫລດແລ້ວ</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb index ef12118..aced8019 100644 --- a/components/strings/components_strings_lt.xtb +++ b/components/strings/components_strings_lt.xtb
@@ -1778,6 +1778,7 @@ <translation id="79859296434321399">Norėdami peržiūrėti išplėstosios realybės turinį įdiekite „ARCore“</translation> <translation id="7986319120639858961">„<ph name="CARD_TITLE" />“ <ph name="TIME" /> <ph name="BOOKMARKED" /> „<ph name="TITLE" />“ <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Įrišimas</translation> +<translation id="7992044431894087211">Ekrano bendrinimas su „<ph name="APPLICATION_TITLE" />“ tęsiamas</translation> <translation id="7995512525968007366">Nenurodytas</translation> <translation id="800218591365569300">Pabandykite uždaryti skirtukus arba kitas programas, kad atlaisvintumėte atminties.</translation> <translation id="8004582292198964060">Naršyklė</translation> @@ -2052,6 +2053,7 @@ <translation id="9103872766612412690">Svetainėje <ph name="SITE" /> įprastai naudojama šifruotė informacijai apsaugoti. Šį kartą „Chromium“ bandant prisijungti prie <ph name="SITE" />, ji pateikė neįprastus ir netinkamus prisijungimo duomenis. Gali būti, kad užpuolėjas bando apsimesti svetaine <ph name="SITE" /> arba „Wi-Fi“ prisijungimo ekrane nutrūko ryšys. Jūsų informacija vis tiek liko apsaugota, nes „Chromium“ sustabdė prisijungimą prieš apsikeitimą bet kokiais duomenimis.</translation> <translation id="9106062320799175032">Atsiskaitymo adreso pridėjimas</translation> <translation id="9107467864910557787">Jūsų naršyklę tvarko <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Pagal administratoriaus politiką ekrano bendrinimas su „<ph name="APPLICATION_TITLE" />“ išjungiamas, kai matomas konfidencialus turinys</translation> <translation id="9114524666733003316">Kortelė patvirtinama...</translation> <translation id="9114581008513152754">Šios naršyklės netvarko įmonė ar kita organizacija. Veiklą šiame įrenginyje galima tvarkyti ne naršyklėje „Chrome“. <ph name="BEGIN_LINK" />Sužinokite daugiau<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Įkelta</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb index 64a9de4..d49e99b 100644 --- a/components/strings/components_strings_lv.xtb +++ b/components/strings/components_strings_lv.xtb
@@ -1774,6 +1774,7 @@ <translation id="79859296434321399">Lai skatītu papildinātās realitātes saturu, instalējiet ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" />, <ph name="BOOKMARKED" />, <ph name="TITLE" />, <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Iesējums</translation> +<translation id="7992044431894087211">Ekrāna kopīgošana ar lietojumprogrammu <ph name="APPLICATION_TITLE" /> ir atsākta.</translation> <translation id="7995512525968007366">Nav norādīts</translation> <translation id="800218591365569300">Aizveriet citas cilnes vai programmas, lai atbrīvotu vietu atmiņā.</translation> <translation id="8004582292198964060">Pārlūkprogramma</translation> @@ -2048,6 +2049,7 @@ <translation id="9103872766612412690">Vietnē <ph name="SITE" /> informācijas aizsargāšanai parasti tiek izmantota šifrēšana. Kad pārlūkā Chromium tika mēģināts izveidot savienojumu ar vietni <ph name="SITE" />, šoreiz tā nosūtīja neparastus un nepareizus akreditācijas datus. Iespējams, tas notika, jo uzbrucējs mēģināja uzdoties par vietni <ph name="SITE" />, vai arī Wi-Fi pierakstīšanās ekrāns pārtrauca savienojumu. Jūsu informācija joprojām ir drošībā, jo pārlūks Chromium pārtrauca savienojumu, pirms tika veikta jebkādu datu apmaiņa.</translation> <translation id="9106062320799175032">Norēķinu adreses pievienošana</translation> <translation id="9107467864910557787">Jūsu pārlūku pārvalda <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Saskaņā ar administratora iestatīto politiku ekrāna kopīgošana ar lietojumprogrammu <ph name="APPLICATION_TITLE" /> tiek atspējota, kad ir redzams konfidenciāls saturs.</translation> <translation id="9114524666733003316">Notiek kartes apstiprināšana...</translation> <translation id="9114581008513152754">Šo pārlūku nepārvalda uzņēmums vai cita organizācija. Darbību šajā ierīcē var pārvaldīt ārpus pārlūka Chrome. <ph name="BEGIN_LINK" />Uzzināt vairāk<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Augšupielādēts</translation>
diff --git a/components/strings/components_strings_mk.xtb b/components/strings/components_strings_mk.xtb index e38f8c6..0bec054f 100644 --- a/components/strings/components_strings_mk.xtb +++ b/components/strings/components_strings_mk.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">За да прегледувате содржини во проширена реалност, инсталирајте го ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Врзување</translation> +<translation id="7992044431894087211">Споделувањето екран со <ph name="APPLICATION_TITLE" /> продолжи</translation> <translation id="7995512525968007366">Не е наведено</translation> <translation id="800218591365569300">Обидете се да ги затворите другите картички или програми за да ослободите меморија.</translation> <translation id="8004582292198964060">Прелистувач</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> обично користи шифрирање за да ги заштити вашите информации. Кога Chromium овој пат се обиде да се поврзе на <ph name="SITE" />, веб-сајтот врати невообичаени и неточни акредитиви. Ова може да се случи кога напаѓач се преправа дека е <ph name="SITE" /> или кога екран за најавување на Wi-Fi го прекинува поврзувањето. Вашите информации сѐ уште се безбедни, затоа што Chromium го запре поврзувањето пред да се разменат податоци.</translation> <translation id="9106062320799175032">Додајте адреса за наплата</translation> <translation id="9107467864910557787"><ph name="MANAGER" /> управува со прелистувачот</translation> +<translation id="91108059142052966">Политиката на администраторот оневозможува споделување екран со <ph name="APPLICATION_TITLE" /> кога се видливи доверливи содржини</translation> <translation id="9114524666733003316">Се потврдува картичката…</translation> <translation id="9114581008513152754">Прелистувачов не е управуван од компанија или друга организација. Активноста на уредов можеби се управува надвор од Chrome. <ph name="BEGIN_LINK" />Дознајте повеќе<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Прикачен</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb index 0a36af0..e11971b2 100644 --- a/components/strings/components_strings_ml.xtb +++ b/components/strings/components_strings_ml.xtb
@@ -1769,6 +1769,7 @@ <translation id="79859296434321399">അനുബന്ധ യാഥാർത്ഥ്യ ഉള്ളടക്കം കാണാൻ, ARCore ഇൻസ്റ്റാൾ ചെയ്യൂ</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">ബൈൻഡ് ചെയ്യുക</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> എന്നതുമായി സ്ക്രീൻ പങ്കിടൽ പുനരാരംഭിച്ചു</translation> <translation id="7995512525968007366">വ്യക്തമാക്കിയിട്ടില്ല</translation> <translation id="800218591365569300">ഇടം സൃഷ്ടിക്കാൻ മറ്റ് ടാബുകളോ പ്രോഗ്രാമുകളോ അടയ്ക്കുന്നത് പരീക്ഷിക്കൂ.</translation> <translation id="8004582292198964060">ബ്രൗസര്</translation> @@ -2042,6 +2043,7 @@ <translation id="9103872766612412690">നിങ്ങളുടെ വിവരങ്ങൾ പരിരക്ഷിക്കാൻ സാധാരണയായി <ph name="SITE" />, എൻക്രിപ്ഷൻ ഉപയോഗിക്കുന്നു. ഇപ്പോൾ <ph name="SITE" /> സൈറ്റിലേക്ക് കണക്റ്റ് ചെയ്യാൻ Chromium ശ്രമിച്ചപ്പോൾ, അസാധാരണമായതും തെറ്റായതുമായ ക്രെഡൻഷ്യലുകൾ വെബ്സൈറ്റ് തിരികെ അയച്ചു. ഒരു ആക്രമണകാരി <ph name="SITE" /> എന്നതായി ഭാവിക്കാൻ ശ്രമിക്കുമ്പോഴോ Wi-Fi സൈൻ ഇൻ സ്ക്രീൻ, കണക്ഷനെ തടസ്സപ്പെടുത്തുമ്പോഴോ ആണ് ഇങ്ങനെ സംഭവിക്കാനിടയുള്ളത്. ഏതെങ്കിലും ഡാറ്റ കൈമാറുന്നതിനുമുമ്പ് Chromium കണക്ഷൻ അവസാനിപ്പിച്ചതിനാൽ, നിങ്ങളുടെ വിവരങ്ങൾ തുടർന്നും സുരക്ഷിതമായിരിക്കും.</translation> <translation id="9106062320799175032">ബില്ലിംഗ് വിലാസം ചേർക്കുക</translation> <translation id="9107467864910557787">നിങ്ങളുടെ ബ്രൗസർ മാനേജ് ചെയ്യുന്നത് <ph name="MANAGER" /> ആണ്</translation> +<translation id="91108059142052966">രഹസ്യാത്മകമായ ഉള്ളടക്കം ദൃശ്യമാകുമ്പോൾ <ph name="APPLICATION_TITLE" /> എന്നതുമായി സ്ക്രീൻ പങ്കിടുന്നത് അഡ്മിൻ നയം പ്രവർത്തനരഹിതമാക്കുന്നു</translation> <translation id="9114524666733003316">കാർഡ് സ്ഥിരീകരിക്കുന്നു...</translation> <translation id="9114581008513152754">കമ്പനിയോ മറ്റേതെങ്കിലും സ്ഥാപനമോ മാനേജ് ചെയ്യുന്നതല്ല ഈ ബ്രൗസർ. ഈ ഉപകരണത്തിലെ ആക്റ്റിവിറ്റി Chrome-ന് പുറത്ത് മാനേജ് ചെയ്തേക്കാം. <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /></translation> <translation id="9119042192571987207">അപ്ലോഡ് ചെയ്തു</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb index 0658234..892fc43f 100644 --- a/components/strings/components_strings_mn.xtb +++ b/components/strings/components_strings_mn.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">Өргөтгөсөн бодит орчны (АR) агуулга харахын тулд ARCore-г суулгана уу</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Үдэж хавтаслах</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" />-тай дэлгэц хуваалцахыг үргэлжлүүлсэн</translation> <translation id="7995512525968007366">Зааж өгөөгүй</translation> <translation id="800218591365569300">Санах ойн багтаамжийг нэмэгдүүлэхийн тулд бусад таб, эсвэл программыг хаана уу.</translation> <translation id="8004582292198964060">Хөтөч</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> ихэвчлэн таны мэдээллийг хамгаалах зорилгоор шифр ашигладаг. Энэ удаад Chromium <ph name="SITE" />-тай холбогдохыг оролдоход тус веб сайтаас хэвийн бус, буруу өгөгдөл илгээлээ. Халдагч <ph name="SITE" /> юм шиг дүр үзүүлж байгаа, эсвэл Wi-Fi-д нэвтрэх дэлгэц холболтод саад учруулсан байж болзошгүй. Chromium ямар нэгэн өгөгдөл солилцохоос өмнө холболтыг зогсоосон тул таны мэдээлэл аюулгүй.</translation> <translation id="9106062320799175032">Тооцооны хаяг нэмэх</translation> <translation id="9107467864910557787"><ph name="MANAGER" /> таны хөтчийг удирддаг</translation> +<translation id="91108059142052966">Администраторын бодлого нь нууцлалтай контент харагдах үед <ph name="APPLICATION_TITLE" />-тай дэлгэц хуваалцахыг идэвхгүй болгоно</translation> <translation id="9114524666733003316">Картыг баталгаажуулж байна...</translation> <translation id="9114581008513152754">Энэ хөтчийг компани эсвэл бусад байгууллагаас удирддаггүй. Энэ төхөөрөмж дээрх үйл ажиллагааг Chrome-с гадуур удирддаг байж болзошгүй. <ph name="BEGIN_LINK" />Нэмэлт мэдээлэл авах<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Байршуулсан</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb index 5c8a818..d4ff1191 100644 --- a/components/strings/components_strings_ms.xtb +++ b/components/strings/components_strings_ms.xtb
@@ -1778,6 +1778,7 @@ <translation id="79859296434321399">Untuk melihat kandungan realiti tambahan, pasang ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Ikatan</translation> +<translation id="7992044431894087211">Perkongsian skrin dengan <ph name="APPLICATION_TITLE" /> telah disambung semula</translation> <translation id="7995512525968007366">Tidak Ditentukan</translation> <translation id="800218591365569300">Cuba tutup tab atau atur cara lain untuk mengosongkan memori.</translation> <translation id="8004582292198964060">Penyemak Imbas</translation> @@ -2052,6 +2053,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> biasanya menggunakan penyulitan untuk melindungi maklumat anda. Apabila Chromium cuba menyambung ke <ph name="SITE" /> pada kali ini, tapak web tersebut mengembalikan bukti kelayakan yang luar biasa dan salah. Hal ini boleh berlaku apabila penyerang sedang cuba menyamar sebagai <ph name="SITE" /> atau skrin log masuk Wi-Fi telah memutuskan sambungan. Maklumat anda masih selamat kerana Chromium menghentikan sambungan sebelum sebarang pertukaran data berlaku.</translation> <translation id="9106062320799175032">Tambahkan Alamat Pengebilan</translation> <translation id="9107467864910557787">Penyemak imbas anda diurus oleh <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Dasar pentadbir melumpuhkan perkongsian skrin dengan <ph name="APPLICATION_TITLE" /> apabila kandungan sulit kelihatan</translation> <translation id="9114524666733003316">Mengesahkan kad...</translation> <translation id="9114581008513152754">Penyemak imbas ini tidak diurus oleh syarikat atau organisasi lain. Aktiviti pada peranti ini mungkin diurus di luar Chrome. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Dimuat naik</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb index 46830a3..359c3f9 100644 --- a/components/strings/components_strings_my.xtb +++ b/components/strings/components_strings_my.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">လွန်ကဲပကတိအသွင်ကို ကြည့်ရန် ARCore ကို ထည့်ပါ</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">တွဲချုပ်ရန်</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> အား မျက်နှာပြင်မျှဝေခြင်းကို ဆက်လုပ်ထားသည်</translation> <translation id="7995512525968007366">သတ်မှတ်မထားပါ</translation> <translation id="800218591365569300">မှတ်ဉာဏ်နေရာလွတ်ရရှိစေရန် တဘ် သို့မဟုတ် ပရိုဂရမ်များကို ပိတ်ကြည့်ပါ။</translation> <translation id="8004582292198964060">ဘရောင်ဇာ</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> သည် သင်၏ အချက်အလက်များကို ကာကွယ်ပေးရန် ပုံမှန်အားဖြင့် လျှို့ဝှက်ကုဒ် သွင်းမှုကို အသုံးပြုသည်။ Chromium က <ph name="SITE" />အား ယခုဆက်သွယ်ရန် ကြိုးပမ်းစဉ်၊ ဝဘ်ဆိုက်သည် ပုံမှန် မဟုတ်သည့် မမှန်သည့် အထောက်အထားများကို ပြန်ပို့ပေးခဲ့သည်။ တိုက်ခိုက်သူ တစ်ဦးက <ph name="SITE" /> ဖြစ်သယောင် ကြိုးစားနေသည်၊ သို့မဟုတ် ကြိုးမဲ့ လက်မှတ်ထိုး ဝင်ရေး မျက်နှာပြင် တစ်ခုက ချိတ်ဆက်မှုကို ဖြတ်တောက် ပစ်ခဲ့သည်။ မည်သည့် ဒေတာကိုမှ ဖလှယ်ခင် Chrome က ချိတ်ဆက်မှုကို ရပ်ပစ်ခဲ့၍ သင်၏ အချက်အလက်များ လုံခြုံစွာ ရှိနေကြပါသည်။</translation> <translation id="9106062320799175032">ငွေတောင်းခံလွှာပို့ရန် လိပ်စာ ထည့်ခြင်း</translation> <translation id="9107467864910557787"><ph name="MANAGER" /> က သင့်ဘရောင်ဇာကို စီမံခန့်ခွဲသည်</translation> +<translation id="91108059142052966">လျှို့ဝှက်အကြောင်းအရာများကို မြင်နိုင်ချိန်တွင် <ph name="APPLICATION_TITLE" /> အား မျက်နှာပြင်မျှဝေခြင်းကို စီမံခန့်ခွဲသူမူဝါဒက ပိတ်ထားသည်</translation> <translation id="9114524666733003316">ကတ် အတည်ပြုနေသည်...</translation> <translation id="9114581008513152754">ဤဘရောင်ဇာကို ကုမ္ပဏီ သို့မဟုတ် အခြားအဖွဲ့အစည်းက စီမံခန့်ခွဲမထားပါ။ ဤစက်ပေါ်ရှိ လုပ်ဆောင်ချက်ကို Chrome ပြင်ပမှ စီမံခန့်ခွဲထားခြင်း ဖြစ်နိုင်သည်။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" /></translation> <translation id="9119042192571987207">အပ်လုဒ်လုပ်ပြီးပြီ</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb index da0fca1..1ac6a6c7 100644 --- a/components/strings/components_strings_nl.xtb +++ b/components/strings/components_strings_nl.xtb
@@ -1762,6 +1762,7 @@ <translation id="79859296434321399">Installeer ARCore om augmented reality-content te bekijken</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Inbinden</translation> +<translation id="7992044431894087211">Scherm delen met <ph name="APPLICATION_TITLE" /> is hervat</translation> <translation id="7995512525968007366">Niet opgegeven</translation> <translation id="800218591365569300">Probeer andere tabbladen en programma's te sluiten om geheugen vrij te maken.</translation> <translation id="8004582292198964060">Browser</translation> @@ -2033,6 +2034,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> gebruikt gewoonlijk versleuteling om je gegevens te beschermen. Toen Chromium deze keer probeerde verbinding te maken met <ph name="SITE" />, retourneerde de website ongewone en onjuiste inloggegevens. Dit gebeurt wanneer een aanvaller probeert zich als <ph name="SITE" /> voor te doen of wanneer een wifi-inlogscherm de verbinding heeft verbroken. Je gegevens zijn nog steeds beveiligd omdat Chromium de verbinding heeft beëindigd voordat er gegevens konden worden uitgewisseld.</translation> <translation id="9106062320799175032">Factuuradres toevoegen</translation> <translation id="9107467864910557787">Je browser wordt beheerd door <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Op basis van het beheerdersbeleid wordt scherm delen met <ph name="APPLICATION_TITLE" /> uitgezet als er vertrouwelijke content zichtbaar is</translation> <translation id="9114524666733003316">Creditcard bevestigen...</translation> <translation id="9114581008513152754">Deze browser wordt niet beheerd door een bedrijf of andere organisatie. Activiteit op dit apparaat kan buiten Chrome worden beheerd. <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Geüpload</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb index 36dae3f..d2addf2 100644 --- a/components/strings/components_strings_no.xtb +++ b/components/strings/components_strings_no.xtb
@@ -1776,6 +1776,7 @@ <translation id="79859296434321399">Du må installere ARCore for å se innhold med utvidet virkelighet</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Innbinding</translation> +<translation id="7992044431894087211">Skjermdeling med <ph name="APPLICATION_TITLE" /> er gjenopptatt</translation> <translation id="7995512525968007366">Ikke spesifisert</translation> <translation id="800218591365569300">Prøv å lukke andre faner eller programmer for å frigjøre minne.</translation> <translation id="8004582292198964060">Nettleser</translation> @@ -2049,6 +2050,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> bruker vanligvis kryptering for å beskytte informasjonen din. Da Chromium prøvde å koble til <ph name="SITE" /> denne gangen, sendte nettstedet tilbake uvanlig og feil legitimasjon. Dette kan skje hvis en angriper prøver å utgi seg for å være <ph name="SITE" />, eller hvis en Wi-Fi-påloggingsskjerm har avbrutt tilkoblingen. Informasjonen din er likevel sikker fordi Chromium stoppet tilkoblingen før det ble utvekslet noen data.</translation> <translation id="9106062320799175032">Legg til faktureringsadresse</translation> <translation id="9107467864910557787">Nettleseren administreres av <ph name="MANAGER" /></translation> +<translation id="91108059142052966">En administratorregel deaktiverer skjermdeling med <ph name="APPLICATION_TITLE" /> når konfidensielt innhold er synlig</translation> <translation id="9114524666733003316">Bekrefter kortet …</translation> <translation id="9114581008513152754">Denne nettleseren administreres ikke av et selskap eller en annen organisasjon. Aktiviteten på denne enheten kan bli administrert utenfor Chrome. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Opplastet</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb index dd4fe97..a40ce698 100644 --- a/components/strings/components_strings_pl.xtb +++ b/components/strings/components_strings_pl.xtb
@@ -1768,6 +1768,7 @@ <translation id="79859296434321399">Aby oglądać treści rzeczywistości rozszerzonej, zainstaluj ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Wiązanie</translation> +<translation id="7992044431894087211">Udostępnianie ekranu w aplikacji <ph name="APPLICATION_TITLE" /> zostało wznowione</translation> <translation id="7995512525968007366">Nie określono</translation> <translation id="800218591365569300">Zamknij inne karty lub programy, by zwolnić pamięć.</translation> <translation id="8004582292198964060">Przeglądarka</translation> @@ -2041,6 +2042,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> zazwyczaj używa szyfrowania do ochrony Twoich informacji. Gdy tym razem przeglądarka Chromium próbowała połączyć się ze stroną <ph name="SITE" />, odesłała ona nietypowe i nieprawidłowe dane logowania. Może się tak zdarzyć, gdy pod stronę <ph name="SITE" /> podszywa się osoba atakująca albo gdy ekran logowania do sieci Wi-Fi przerwie połączenie. Twoje informacje są nadal bezpieczne, bo połączenie w Chromium zakończyło się przed wymianą jakichkolwiek danych.</translation> <translation id="9106062320799175032">Dodaj adres rozliczeniowy</translation> <translation id="9107467864910557787">Twoją przeglądarką zarządza <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Zgodnie z polityką administratora udostępnianie ekranu w aplikacji <ph name="APPLICATION_TITLE" /> zostanie wyłączone, gdy wyświetlą się treści poufne</translation> <translation id="9114524666733003316">Sprawdzam kartę…</translation> <translation id="9114581008513152754">Ta przeglądarka nie jest zarządzana przez firmę ani inną organizację. Aktywność na tym urządzeniu może być zarządzana poza Chrome. <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Przesłano</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb index 269b422..2c11d29 100644 --- a/components/strings/components_strings_pt-BR.xtb +++ b/components/strings/components_strings_pt-BR.xtb
@@ -1766,6 +1766,7 @@ <translation id="79859296434321399">Para ver conteúdo de realidade aumentada, instale o ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Encadernar</translation> +<translation id="7992044431894087211">O compartilhamento de tela com <ph name="APPLICATION_TITLE" /> foi retomado</translation> <translation id="7995512525968007366">Não especificado</translation> <translation id="800218591365569300">Tente fechar outras guias ou programas para liberar memória.</translation> <translation id="8004582292198964060">Navegador</translation> @@ -2041,6 +2042,7 @@ incomuns e incorretas. Isso pode acontecer quando um invasor está fingindo ser <ph name="SITE" /> ou quando uma tela de login por Wi-Fi interrompeu a conexão. Suas informações ainda estão protegidas, porque o Chromium interrompeu a conexão antes que os dados fossem trocados.</translation> <translation id="9106062320799175032">Adicione um Endereço de Faturamento</translation> <translation id="9107467864910557787">Seu navegador é gerenciado por <ph name="MANAGER" /></translation> +<translation id="91108059142052966">A política do administrador desativará o compartilhamento de tela com <ph name="APPLICATION_TITLE" /> quando houver conteúdo confidencial visível</translation> <translation id="9114524666733003316">Confirmando cartão…</translation> <translation id="9114581008513152754">Este navegador não é gerenciado por uma empresa ou outra organização. A atividade deste dispositivo pode ser gerenciada fora do Chrome. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Enviado</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb index 6ce54184..20d755b 100644 --- a/components/strings/components_strings_pt-PT.xtb +++ b/components/strings/components_strings_pt-PT.xtb
@@ -1776,6 +1776,7 @@ <translation id="79859296434321399">Para ver conteúdo de realidade aumentada, instale o ARCore.</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Encadernar</translation> +<translation id="7992044431894087211">A partilha de ecrã com a aplicação <ph name="APPLICATION_TITLE" /> foi retomada.</translation> <translation id="7995512525968007366">Não especificado</translation> <translation id="800218591365569300">Experimente fechar outros separadores ou programas para libertar memória.</translation> <translation id="8004582292198964060">Navegador</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690">Normalmente, o site <ph name="SITE" /> utiliza a encriptação para proteger as suas informações. Quando o Chromium tentou estabelecer ligação a <ph name="SITE" /> desta vez, o Website devolveu credenciais invulgares e incorretas. Isto pode acontecer quando um utilizador mal intencionado tenta simular ser <ph name="SITE" /> ou quando um ecrã de início de sessão Wi-Fi interrompe a ligação. As suas informações continuam seguras porque o Chromium interrompeu a ligação antes de qualquer troca de dados.</translation> <translation id="9106062320799175032">Adicionar endereço de faturação</translation> <translation id="9107467864910557787">O navegador é gerido por <ph name="MANAGER" /></translation> +<translation id="91108059142052966">A política do administrador desativa a partilha de ecrã com <ph name="APPLICATION_TITLE" /> quando existe conteúdo confidencial visível.</translation> <translation id="9114524666733003316">A confirmar o cartão…</translation> <translation id="9114581008513152754">Este navegador não é gerido por uma empresa ou outra entidade. A atividade neste dispositivo pode ser gerida fora do Chrome. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Carregado</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb index b0ceeec9..9ef36de 100644 --- a/components/strings/components_strings_ro.xtb +++ b/components/strings/components_strings_ro.xtb
@@ -1775,6 +1775,7 @@ <translation id="79859296434321399">Pentru a vedea conținut din realitatea augmentată, instalează ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Legare</translation> +<translation id="7992044431894087211">Permiterea accesului la eran pentru <ph name="APPLICATION_TITLE" /> a fost reluată</translation> <translation id="7995512525968007366">Nespecificată</translation> <translation id="800218591365569300">Încearcă să închizi celelalte file sau programe pentru a elibera memoria.</translation> <translation id="8004582292198964060">Browser</translation> @@ -2049,6 +2050,7 @@ <translation id="9103872766612412690">Site-ul <ph name="SITE" /> folosește în mod obișnuit criptarea pentru a-ți proteja informațiile. Când Chromium a încercat să se conecteze la <ph name="SITE" /> de această dată, site-ul a returnat date de conectare neobișnuite și incorecte. Acest lucru s-a întâmplat fie pentru că un atacator încearcă să falsifice site-ul <ph name="SITE" />, fie pentru că un ecran de conectare Wi-Fi a întrerupt conexiunea. Securitatea informațiilor tale nu a fost afectată, deoarece Chromium a oprit conexiunea înainte ca datele să fie transferate.</translation> <translation id="9106062320799175032">Adaugă o adresă de facturare</translation> <translation id="9107467864910557787">Browserul este gestionat de <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Politica implementată de administrator dezactivează permiterea accesului la ecran pentru <ph name="APPLICATION_TITLE" /> atunci când este vizibil conținut confidențial</translation> <translation id="9114524666733003316">Se confirmă cardul…</translation> <translation id="9114581008513152754">Browserul nu este gestionat de o companie sau o altă organizație. Este posibil ca activitatea de pe acest dispozitiv să fie gestionată în afara Chrome. <ph name="BEGIN_LINK" />Află mai multe<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Încărcat</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb index 0d20d40..076cddb 100644 --- a/components/strings/components_strings_ru.xtb +++ b/components/strings/components_strings_ru.xtb
@@ -1765,6 +1765,7 @@ <translation id="79859296434321399">Чтобы просматривать контент в режиме дополненной реальности, установите приложение ARCore.</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Скрепление</translation> +<translation id="7992044431894087211">Демонстрация экрана для приложения <ph name="APPLICATION_TITLE" /> возобновлена.</translation> <translation id="7995512525968007366">Не указано</translation> <translation id="800218591365569300">Закройте другие вкладки и программы, чтобы освободить память.</translation> <translation id="8004582292198964060">Браузер</translation> @@ -2038,6 +2039,7 @@ <translation id="9103872766612412690">На сайте <ph name="SITE" /> для защиты ваших данных обычно используется шифрование. Однако учетные данные, которые мы получили от сайта <ph name="SITE" /> сейчас, отличаются от тех, которые он отправляет обычно. Вероятно, вредоносный сайт пытается выдать себя за <ph name="SITE" />, либо страница подключения к сети Wi-Fi прервала соединение. Ваша информация по-прежнему в безопасности, так как браузер Chromium разорвал соединение до того, как произошел обмен данными.</translation> <translation id="9106062320799175032">Добавьте платежный адрес</translation> <translation id="9107467864910557787">Вашим браузером управляет <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Администратор запретил демонстрацию экрана для приложения <ph name="APPLICATION_TITLE" />, когда видны конфиденциальные данные.</translation> <translation id="9114524666733003316">Подтверждение карты...</translation> <translation id="9114581008513152754">Компания или организация не управляет этим браузером. Действиями на этом устройстве можно управлять вне браузера Chrome. <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Загружен</translation>
diff --git a/components/strings/components_strings_si.xtb b/components/strings/components_strings_si.xtb index 5251a9c3..91b9e1b 100644 --- a/components/strings/components_strings_si.xtb +++ b/components/strings/components_strings_si.xtb
@@ -1772,6 +1772,7 @@ <translation id="79859296434321399">වැඩි දියුණු කළ යතාර්ථ අන්තර්ගතය බැලීමට, ARCore ස්ථාපනය කරන්න</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">බඳින්න</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> සමග තිරය බෙදා ගැනීම නැවත පටන් ගන්නා ලදි</translation> <translation id="7995512525968007366">නියම නොකළ</translation> <translation id="800218591365569300">මතකය නිදහස් කිරීමට වෙනත් පටිති හෝ වැඩසටහන් වැසීමට උත්සාහ කරන්න.</translation> <translation id="8004582292198964060">බ්රවුසරය</translation> @@ -2045,6 +2046,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> සාමාන්යයෙන් ඔබගේ තොරතුරු ආරක්ෂා කිරීමට සංකේතනය භාවිත කරයි. මෙම අවස්ථාවේ දී Chromium <ph name="SITE" /> වෙත සබැඳීමට උත්සාහ කළ විට, වෙබ් අඩවිය අසාමාන්ය සහ වැරදි අක්තපත්ර ආපසු එවයි. ප්රහාරකයෙක් <ph name="SITE" /> මෙන් ඇඟවීමට උත්සාහ කරමින් සිටින විට, හෝ Wi-Fi පිරීම් තිරයට බාධා වූ විට මෙය සිදු විය හැකිය. දත්ත කිසිවක් හුවමාරු කර ගැනීමට පෙර Chromium සබැඳුම නතර කළ නිසා ඔබගේ තොරතුරු තවමත් සුරක්ෂිතය.</translation> <translation id="9106062320799175032">බිල්පත් ලිපිනය එක් කරන්න</translation> <translation id="9107467864910557787">ඔබගේ බ්රවුසරය <ph name="MANAGER" /> විසින් කළමනාකරණය කෙරේ</translation> +<translation id="91108059142052966">රහසිගත අන්තර්ගතය දෘශ්යමාන විට පරිපාලක ප්රතිපත්තිය <ph name="APPLICATION_TITLE" /> සමග තිරය බෙදා ගැනීම අබල කරයි</translation> <translation id="9114524666733003316">කාඩ්පත තහවුරු කරමින්...</translation> <translation id="9114581008513152754">මෙම බ්රවුසරය සමාගමකින් හෝ වෙනත් සංවිධානයකින් කළමනාකරණය නොකරයි. මෙම උපාංගයේ ක්රියාකාරකම් Chrome වලින් පිටත ඇතැම් විට කළමනාකරණය කළ හැකිය. <ph name="BEGIN_LINK" />තව දැන ගන්න<ph name="END_LINK" /></translation> <translation id="9119042192571987207">උඩුගත කළා</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb index 632bc3f..c69a9bfb 100644 --- a/components/strings/components_strings_sk.xtb +++ b/components/strings/components_strings_sk.xtb
@@ -1761,6 +1761,7 @@ <translation id="79859296434321399">Ak chcete zobraziť obsah v rozšírenej realite, nainštalujte si ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Zviazať</translation> +<translation id="7992044431894087211">Zdieľanie obrazovky pomocou aplikácie <ph name="APPLICATION_TITLE" /> bolo obnovené</translation> <translation id="7995512525968007366">Nie je upresnené</translation> <translation id="800218591365569300">Skúste zavrieť ostatné karty alebo programy a uvoľniť tak miesto v pamäti.</translation> <translation id="8004582292198964060">Prehliadač</translation> @@ -2035,6 +2036,7 @@ <translation id="9103872766612412690">Web <ph name="SITE" /> zvyčajne chráni vaše informácie pomocou šifrovania. Keď sa prehliadač Chromium tentokrát pokúsil pripojiť k webu <ph name="SITE" />, odoslal späť nezvyčajné a nesprávne poverenia. Môže sa to stať vtedy, keď sa za web <ph name="SITE" /> snaží vydávať útočník alebo keď pripojenie preruší prihlasovacia obrazovka siete Wi‑Fi. Vaše informácie sú stále zabezpečené, pretože prehliadač Chromium zastavil pripojenie ešte pred výmenou dát.</translation> <translation id="9106062320799175032">Pridanie fakturačnej adresy</translation> <translation id="9107467864910557787">Váš prehliadač spravuje <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Keď je viditeľný dôverný obsah, pravidlá správcu deaktivujú zdieľanie obrazovky pomocou aplikácie <ph name="APPLICATION_TITLE" /></translation> <translation id="9114524666733003316">Overuje sa karta…</translation> <translation id="9114581008513152754">Tento prehliadač nespravuje firma ani iná organizácia. Aktivita v tomto zariadení môže byť spravovaná mimo Chromu. <ph name="BEGIN_LINK" />Ďalšie informácie<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Nahrané</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb index 038464cd..57b3647d 100644 --- a/components/strings/components_strings_sl.xtb +++ b/components/strings/components_strings_sl.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">Če si želite ogledati vsebino v razširjeni resničnosti, namestite ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Vezava</translation> +<translation id="7992044431894087211">Deljenje zaslona z aplikacijo <ph name="APPLICATION_TITLE" /> se nadaljuje.</translation> <translation id="7995512525968007366">Ni navedeno</translation> <translation id="800218591365569300">Poskusite zapreti druge zavihke ali programe, da boste tako sprostili pomnilnik.</translation> <translation id="8004582292198964060">Brskalnik</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690">Spletno mesto <ph name="SITE" /> za zaščito vaših podatkov običajno uporablja šifriranje. Ko se je Chromium tokrat poskusil povezati s spletnim mestom <ph name="SITE" />, je to vrnilo nenavadne in nepravilne poverilnice. Do tega lahko pride, če se napadalec lažno predstavlja za spletno mesto <ph name="SITE" /> ali če je povezavo prekinil zaslon za prijavo v omrežje Wi-Fi. Vaši podatki so še vedno varni, saj je Chromium pred izmenjavo podatkov prekinil povezavo.</translation> <translation id="9106062320799175032">Dodajanje naslova za izstavitev računa</translation> <translation id="9107467864910557787">Vaš brskalnik upravlja domena <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Pravilnik skrbnika onemogoča deljenje zaslona z aplikacijo <ph name="APPLICATION_TITLE" />, če je vidna zaupna vsebina.</translation> <translation id="9114524666733003316">Potrjevanje kartice …</translation> <translation id="9114581008513152754">Tega brskalnika ne upravlja podjetje ali druga organizacija. Dejavnost v tej napravi morda upravljajo zunaj Chroma. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Naloženo</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb index fd7af34a..159106f 100644 --- a/components/strings/components_strings_sq.xtb +++ b/components/strings/components_strings_sq.xtb
@@ -1771,6 +1771,7 @@ <translation id="79859296434321399">Për të parë përmbajtje realiteti të zgjeruar, instalo ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Lidhje</translation> +<translation id="7992044431894087211">U riaktivizua ndarja e ekranit me <ph name="APPLICATION_TITLE" /></translation> <translation id="7995512525968007366">Nuk është specifikuar</translation> <translation id="800218591365569300">Provo të mbyllësh skedat ose programet e tjera për të liruar memorien.</translation> <translation id="8004582292198964060">Shfletuesi</translation> @@ -2044,6 +2045,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> përdor zakonisht enkriptimin për mbrojtjen e informacioneve të tua. Kur Chromium u përpoq të lidhej me <ph name="SITE" /> këtë herë, sajti i uebit dërgoi prapa kredenciale të pazakonta dhe të pasakta. Kjo mund të ndodhë kur një sulmues pretendon se është <ph name="SITE" /> ose kur lidhja është ndërprerë nga një ekran i identifikimit të Wi-Fi. Informacionet e tua janë ende të sigurta sepse Chromium e ndaloi lidhjen përpara se të shkëmbeheshin të dhënat.</translation> <translation id="9106062320799175032">Shto adresë faturimi</translation> <translation id="9107467864910557787">Shfletuesi yt menaxhohet nga <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Politika e administratorit çaktivizon ndarjen e ekranit me <ph name="APPLICATION_TITLE" /> kur përmbajtja konfidenciale është e dukshme</translation> <translation id="9114524666733003316">Karta po konfirmohet…</translation> <translation id="9114581008513152754">Ky shfletues nuk menaxhohet nga një kompani ose organizatë tjetër. Aktiviteti në këtë pajisje mund të menaxhohet jashtë Chrome. <ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Ngarkuar</translation>
diff --git a/components/strings/components_strings_sr-Latn.xtb b/components/strings/components_strings_sr-Latn.xtb index 7270184..a5fbdaf0 100644 --- a/components/strings/components_strings_sr-Latn.xtb +++ b/components/strings/components_strings_sr-Latn.xtb
@@ -1776,6 +1776,7 @@ <translation id="79859296434321399">Da biste videli sadržaj proširene realnosti, instalirajte ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Povezivanje</translation> +<translation id="7992044431894087211">Nastavljeno je deljenje sadržaja ekrana sa aplikacijom <ph name="APPLICATION_TITLE" /></translation> <translation id="7995512525968007366">Nije navedeno</translation> <translation id="800218591365569300">Probajte da zatvorite druge kartice ili programe da biste oslobodili memoriju.</translation> <translation id="8004582292198964060">Pregledač</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> obično koristi šifrovanje da bi zaštitio informacije. Kada je Chromium ovog puta pokušao da se poveže sa <ph name="SITE" />, veb-sajt je vratio neobične i netačne akreditive. Ili napadač pokušava da se predstavi kao <ph name="SITE" /> ili je ekran za WiFi prijavljivanje prekinuo vezu. Informacije su i dalje bezbedne zato što je Chromium prekinuo vezu pre nego što su razmenjeni bilo kakvi podaci.</translation> <translation id="9106062320799175032">Dodajte adresu za obračun</translation> <translation id="9107467864910557787">Pregledačem upravlja <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Smernice za administratore onemogućavaju deljenje sadržaja ekrana sa aplikacijom <ph name="APPLICATION_TITLE" /> kada je vidljiv poverljivi sadržaj</translation> <translation id="9114524666733003316">Kartica se potvrđuje...</translation> <translation id="9114581008513152754">Ovim pregledačem ne upravlja kompanija niti druga organizacija. Aktivnostima na ovom uređaju se možda upravlja van Chrome-a. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Otpremljeno</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb index bcc695e..3b5db0ec 100644 --- a/components/strings/components_strings_sr.xtb +++ b/components/strings/components_strings_sr.xtb
@@ -1776,6 +1776,7 @@ <translation id="79859296434321399">Да бисте видели садржај проширене реалности, инсталирајте ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Повезивање</translation> +<translation id="7992044431894087211">Настављено је дељење садржаја екрана са апликацијом <ph name="APPLICATION_TITLE" /></translation> <translation id="7995512525968007366">Није наведено</translation> <translation id="800218591365569300">Пробајте да затворите друге картице или програме да бисте ослободили меморију.</translation> <translation id="8004582292198964060">Прегледач</translation> @@ -2050,6 +2051,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> обично користи шифровање да би заштитио информације. Када је Chromium овог пута покушао да се повеже са <ph name="SITE" />, веб-сајт је вратио необичне и нетачне акредитиве. Или нападач покушава да се представи као <ph name="SITE" /> или је екран за WiFi пријављивање прекинуо везу. Информације су и даље безбедне зато што је Chromium прекинуо везу пре него што су размењени било какви подаци.</translation> <translation id="9106062320799175032">Додајте адресу за обрачун</translation> <translation id="9107467864910557787">Прегледачем управља <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Смернице за администраторе онемогућавају дељење садржаја екрана са апликацијом <ph name="APPLICATION_TITLE" /> када је видљив поверљиви садржај</translation> <translation id="9114524666733003316">Картица се потврђује...</translation> <translation id="9114581008513152754">Овим прегледачем не управља компанија нити друга организација. Активностима на овом уређају се можда управља ван Chrome-а. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Отпремљено</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb index 05e700c0..661a3e5f 100644 --- a/components/strings/components_strings_sv.xtb +++ b/components/strings/components_strings_sv.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">Installera ARCore om du vill visa innehåll med förstärkt verklighet</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Bind</translation> +<translation id="7992044431894087211">Skärmdelningen med <ph name="APPLICATION_TITLE" /> återupptogs</translation> <translation id="7995512525968007366">Inte specificerad</translation> <translation id="800218591365569300">Testa att stänga andra flikar eller program för att frigöra minne.</translation> <translation id="8004582292198964060">Webbläsare</translation> @@ -2051,6 +2052,7 @@ <translation id="9103872766612412690">På <ph name="SITE" /> används normalt kryptering (SSL) för att skydda din information. När Chromium försökte ansluta till <ph name="SITE" /> den här gången skickade webbplatsen tillbaka ovanliga och felaktiga uppgifter. Sådant kan hända när en angripare utger sig för att vara <ph name="SITE" /> eller när anslutningen har avbrutits av en Wi-Fi-inloggningsskärm. Din information är fortfarande säker eftersom Chromium avbröt anslutningen innan någon data utbyttes.</translation> <translation id="9106062320799175032">Lägg till faktureringsadress</translation> <translation id="9107467864910557787">Din webbläsare hanteras av <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Administratören har angett en princip som inaktiverar skärmdelning med <ph name="APPLICATION_TITLE" /> när konfidentiellt innehåll visas på skärmen</translation> <translation id="9114524666733003316">Kortet kontrolleras …</translation> <translation id="9114581008513152754">Den här webbläsaren hanteras inte av ett företag eller en organisation. Aktiviteter på den här enheten kan hanteras utanför Chrome. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Uppladdad</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb index 9952de8..3453434 100644 --- a/components/strings/components_strings_sw.xtb +++ b/components/strings/components_strings_sw.xtb
@@ -1774,6 +1774,7 @@ <translation id="79859296434321399">Sakinisha ARCore ili uangalie maudhui ya uhalisia ulioboreshwa</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Unganisha</translation> +<translation id="7992044431894087211">Uwezo wa kushiriki skrini na <ph name="APPLICATION_TITLE" /> umerejeshwa</translation> <translation id="7995512525968007366">Hakijabainishwa</translation> <translation id="800218591365569300">Jaribu kufunga vichupo au programu nyingine upate nafasi zaidi.</translation> <translation id="8004582292198964060">Kivinjari</translation> @@ -2046,6 +2047,7 @@ <translation id="9103872766612412690">Kwa kawaida <ph name="SITE" /> hutumia usimbaji fiche ili kulinda maelezo yako. Chromium ilipojaribu kuunganisha kwenye <ph name="SITE" /> wakati huu, tovuti ilituma kitambulisho kisicho cha kawaida na kisicho sahihi. Hili linaweza kutokea mvamizi anapojaribu kujifanya kuwa <ph name="SITE" />, au uchanganuzi wa kuingia katika Wi-Fi umeingilia muunganisho. Maelezo yako yangali salama kwa sababu Chromium ilisimamisha muunganisho kabla data yoyote itumwe.</translation> <translation id="9106062320799175032">Ongeza Anwani ya Kutuma Bili</translation> <translation id="9107467864910557787">Kivinjari chako kinadhibitiwa na <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Sera ya msimamizi huzuia kushiriki skrini na <ph name="APPLICATION_TITLE" /> wakati maudhui ya siri yanaonekana</translation> <translation id="9114524666733003316">Inathibitisha kadi…</translation> <translation id="9114581008513152754">Kivinjari hiki hakidhibitiwi na kampuni au shirika lingine. Huenda shughuli kwenye kifaa hiki zinadhibitiwa nje ya Chrome. <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Imepakiwa</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb index e6fbccf..33cd777 100644 --- a/components/strings/components_strings_ta.xtb +++ b/components/strings/components_strings_ta.xtb
@@ -1770,6 +1770,7 @@ <translation id="79859296434321399">ஆக்மென்ட்டட் ரியாலிட்டி உள்ளடக்கத்தைப் பார்க்க, ARCoreஐ நிறுவவும்</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">பைண்டு</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> உடன் திரையைப் பகிர்வது மீண்டும் தொடங்கப்பட்டது</translation> <translation id="7995512525968007366">குறிப்பிடப்படவில்லை</translation> <translation id="800218591365569300">பிற தாவல்கள் அல்லது நிரல்களை மூடி, நினைவகத்தைக் காலியாக்கவும்.</translation> <translation id="8004582292198964060">உலாவி</translation> @@ -2044,6 +2045,7 @@ இந்த முறை <ph name="SITE" /> உடன் இணைவதற்கு Chromium முயற்சித்தபோது வழக்கத்திற்கு மாறான, தவறான நற்சான்றிதழ்களை இணையதளம் வழங்கியது. தாக்குபவர் தன்னை <ph name="SITE" /> ஆகக் காட்ட முயற்சிக்கும் போது அல்லது இணைப்பை வைஃபை உள்நுழைவுத் திரை குறுக்கிடும் போது இது ஏற்படலாம். இருப்பினும், தரவு எதுவும் பரிமாற்றப்படுவதற்கு முன் Chromium இணைப்பை நிறுத்தியதால் உங்கள் தகவல் பாதுகாப்பாகவே இருக்கிறது.</translation> <translation id="9106062320799175032">பில்லிங் முகவரியைச் சேர்க்கவும்</translation> <translation id="9107467864910557787">உங்கள் உலாவியை <ph name="MANAGER" /> நிர்வகிக்கிறது</translation> +<translation id="91108059142052966">ரகசியமான உள்ளடக்கம் காட்டப்பட்டதால் <ph name="APPLICATION_TITLE" /> உடன் திரையைப் பகிர்வதை நிர்வாகக் கொள்கை முடக்கியது</translation> <translation id="9114524666733003316">கார்டை உறுதிசெய்கிறது...</translation> <translation id="9114581008513152754">இந்த உலாவியை ஒரு நிறுவனமோ பிற அமைப்போ நிர்வகிக்கவில்லை. இந்தச் சாதனத்தின் செயல்பாடுகளை Chromeமுக்கு வெளியிலிருந்து நிர்வகிக்கலாம். <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation> <translation id="9119042192571987207">பதிவேற்றப்பட்டது</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb index db05f4c..bc19ff7 100644 --- a/components/strings/components_strings_te.xtb +++ b/components/strings/components_strings_te.xtb
@@ -138,7 +138,7 @@ <translation id="1413809658975081374">గోప్యతా ఎర్రర్</translation> <translation id="1426410128494586442">అవును</translation> <translation id="1428146450423315676">స్టాకర్ 7</translation> -<translation id="1430915738399379752">ముద్రించు</translation> +<translation id="1430915738399379752">ప్రింట్</translation> <translation id="1442386063175183758">కుడివైపు గేట్ ఫోల్డ్</translation> <translation id="1442987760062738829">రంధ్రం</translation> <translation id="1447067628680007684">(x86_64)</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb index f43b83ed..d91c850 100644 --- a/components/strings/components_strings_th.xtb +++ b/components/strings/components_strings_th.xtb
@@ -1765,6 +1765,7 @@ <translation id="79859296434321399">ติดตั้ง ARCore เพื่อดูเนื้อหา Augmented Reality</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">เย็บเล่ม</translation> +<translation id="7992044431894087211">กลับมาแชร์หน้าจอกับ <ph name="APPLICATION_TITLE" /> อีกครั้ง</translation> <translation id="7995512525968007366">ไม่ได้ระบุ</translation> <translation id="800218591365569300">ลองปิดแท็บหรือโปรแกรมอื่นๆ เพื่อเพิ่มหน่วยความจำ</translation> <translation id="8004582292198964060">เบราว์เซอร์</translation> @@ -2039,6 +2040,7 @@ <translation id="9103872766612412690">โดยทั่วไป <ph name="SITE" /> จะใช้การเข้ารหัสเพื่อปกป้องข้อมูลของคุณ เมื่อ Chromium พยายามเชื่อมต่อกับ <ph name="SITE" /> ในครั้งนี้ เว็บไซต์ดังกล่าวส่งข้อมูลรับรองที่ผิดปกติและไม่ถูกต้องกลับมา เหตุการณ์นี้อาจเกิดขึ้นเมื่อผู้บุกรุกพยายามปลอมเป็น <ph name="SITE" /> หรือหน้าจอการลงชื่อเข้าใช้ Wi-Fi รบกวนการเชื่อมต่อ ข้อมูลของคุณยังปลอดภัยอยู่เนื่องจาก Chromium หยุดการเชื่อมต่อก่อนมีการแลกเปลี่ยนข้อมูล</translation> <translation id="9106062320799175032">เพิ่มที่อยู่สำหรับการเรียกเก็บเงิน</translation> <translation id="9107467864910557787">เบราว์เซอร์ของคุณจัดการโดย <ph name="MANAGER" /></translation> +<translation id="91108059142052966">นโยบายของผู้ดูแลระบบปิดใช้การแชร์หน้าจอกับ <ph name="APPLICATION_TITLE" /> เมื่อมีเนื้อหาลับแสดงอยู่</translation> <translation id="9114524666733003316">กำลังยืนยันบัตร…</translation> <translation id="9114581008513152754">เบราว์เซอร์นี้ไม่ได้จัดการโดยบริษัทหรือองค์กรอื่นๆ กิจกรรมในอุปกรณ์นี้อาจมีการจัดการภายนอก Chrome <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation> <translation id="9119042192571987207">อัปโหลดแล้ว</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb index c00ea80..b63628a 100644 --- a/components/strings/components_strings_tr.xtb +++ b/components/strings/components_strings_tr.xtb
@@ -1768,6 +1768,7 @@ <translation id="79859296434321399">Artırılmış gerçeklik içeriğini görüntülemek için ARCore'u yükleyin</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Bağlama</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> ile ekran paylaşımı devam ettirildi</translation> <translation id="7995512525968007366">Belirtilmedi</translation> <translation id="800218591365569300">Bellekte yer açmak için diğer sekmeleri veya programları kapatmayı deneyin.</translation> <translation id="8004582292198964060">Tarayıcı</translation> @@ -2042,6 +2043,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> normalde bilgilerinizi korumak için şifreleme kullanmaktadır. Chromium bu sefer <ph name="SITE" /> sitesine bağlanmayı denediğinde, web sitesi sıra dışı ve yanlış kimlik bilgileri döndürdü. Bir saldırgan <ph name="SITE" /> gibi davranmaya çalışıyor olabilir ya da bir Kablosuz oturum açma ekranı bağlantıyı kesmiştir. Chromium herhangi bir veri alışverişinden önce bağlantıyı durdurduğu için bilgileriniz hâlâ güvendedir.</translation> <translation id="9106062320799175032">Fatura Adresi Ekleyin</translation> <translation id="9107467864910557787">Tarayıcınız <ph name="MANAGER" /> tarafından yönetiliyor</translation> +<translation id="91108059142052966">Yönetici politikası, gizli içerik görünür haldeyken <ph name="APPLICATION_TITLE" /> ile ekran paylaşımını devre dışı bırakır</translation> <translation id="9114524666733003316">Kart onaylanıyor...</translation> <translation id="9114581008513152754">Bu tarayıcı bir şirket veya başka bir kuruluş tarafından yönetilmemektedir. Bu cihazdaki etkinlikler Chrome dışında yönetilebilir. <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Yüklendi</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb index 9b6360e..d45179f 100644 --- a/components/strings/components_strings_uk.xtb +++ b/components/strings/components_strings_uk.xtb
@@ -1775,6 +1775,7 @@ <translation id="79859296434321399">Щоб переглядати вміст у режимі доповненої реальності, установіть ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Зшити</translation> +<translation id="7992044431894087211">Показ екрана за допомогою додатка <ph name="APPLICATION_TITLE" /> відновлено</translation> <translation id="7995512525968007366">Не вказано</translation> <translation id="800218591365569300">Щоб звільнити пам’ять, закрийте інші вкладки та програми.</translation> <translation id="8004582292198964060">Переглядач</translation> @@ -2049,6 +2050,7 @@ <translation id="9103872766612412690">Веб-сайт <ph name="SITE" /> зазвичай використовує шифрування для захисту вашої інформації. Під час цієї спроби Chromium під’єднатися до сторінки <ph name="SITE" /> з неї отримано незвичні й неправильні облікові дані. Це може статися, коли зловмисник намагається видавати себе за веб-сайт <ph name="SITE" /> або з’єднання перервано екраном входу Wi-Fi. Ваша інформація залишається захищеною, оскільки Chromium припинив з’єднання до того, як почався обмін будь-якими даними.</translation> <translation id="9106062320799175032">Додайте платіжну адресу</translation> <translation id="9107467864910557787">Вашим веб-переглядачем керує <ph name="MANAGER" /></translation> +<translation id="91108059142052966">Адміністратор заборонив показувати екран за допомогою додатка <ph name="APPLICATION_TITLE" />, коли видно конфіденційний контент</translation> <translation id="9114524666733003316">Підтверджуються дані картки…</translation> <translation id="9114581008513152754">Цим веб-переглядачем не керує адміністратор компанії чи іншої організації. Діями на цьому пристрої можна керувати за межами Chrome. <ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Завантажено</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb index 9fcc00b..012bb6c1 100644 --- a/components/strings/components_strings_uz.xtb +++ b/components/strings/components_strings_uz.xtb
@@ -1771,6 +1771,7 @@ <translation id="79859296434321399">Virtual reallik kontentini ochish uchun ARCore ilovasini yuklab oling</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Belgilash</translation> +<translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> ilovasiga ekranni ulashish davom ettirildi</translation> <translation id="7995512525968007366">Ko‘rsatilmagan</translation> <translation id="800218591365569300">Xotirani bo‘shatish uchun boshqa oyna va dasturlarni yopib ko‘ring</translation> <translation id="8004582292198964060">Brauzer</translation> @@ -2044,6 +2045,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> sayti ma’lumotlaringizni himoyalash uchun shifrlashdan foydalanadi, lekin hozir Chromium <ph name="SITE" /> saytiga ulanish uchun uringanda, ushbu sayt shubhali va noto‘g‘ri tasdiqlash ma’lumotlarini qaytarmoqda. Bunday holat zararli sayt o‘zini <ph name="SITE" /> o‘rnida ko‘rsatayotganda yoki Wi-Fi ulanishi uzilib qolganda yuz berishi mumkin. Shaxsiy ma’lumotlaringizga hech qanday xavf tug‘ilgani yo‘q, chunki Chromium aloqani ma’lumotlar almashinuvidan oldin uzib qo‘ydi.</translation> <translation id="9106062320799175032">To‘lov manzilini kiriting</translation> <translation id="9107467864910557787">Brauzeringiz <ph name="MANAGER" /> tomonidan boshqariladi</translation> +<translation id="91108059142052966">Maxfiy axborotlar koʻrinib turganda administrator ekran namoyishini <ph name="APPLICATION_TITLE" /> uchun taqiqlagan</translation> <translation id="9114524666733003316">Karta tasdiqlanmoqda...</translation> <translation id="9114581008513152754">Bu brauzer kompaniya yoki tashkilot boshqaruvida emas. Bu qurilmadagi amallar Chromedan tashqarida boshqarilishi mumkin. <ph name="BEGIN_LINK" />Batafsil<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Yuklangan</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb index b432557..aa4cc2a 100644 --- a/components/strings/components_strings_vi.xtb +++ b/components/strings/components_strings_vi.xtb
@@ -1777,6 +1777,7 @@ <translation id="79859296434321399">Để xem nội dung thực tế tăng cường, hãy cài đặt bộ công cụ ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Đóng gáy</translation> +<translation id="7992044431894087211">Đã tiếp tục chia sẻ màn hình với <ph name="APPLICATION_TITLE" /></translation> <translation id="7995512525968007366">Không chỉ định</translation> <translation id="800218591365569300">Thử đóng các thẻ hoặc chương trình khác để giải phóng bộ nhớ.</translation> <translation id="8004582292198964060">Trình duyệt</translation> @@ -2051,6 +2052,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> thường sử dụng mã hóa để bảo vệ thông tin của bạn. Khi Chromium cố gắng kết nối với <ph name="SITE" /> tại thời điểm này, trang web đã gửi lại thông tin đăng nhập không chính xác và bất thường. Điều này có thể xảy ra khi kẻ tấn công đang cố gắng giả mạo là <ph name="SITE" /> hoặc màn hình đăng nhập Wi-Fi đã làm gián đoạn kết nối. Thông tin của bạn vẫn an toàn do Chromium đã ngừng kết nối trước khi bất kỳ dữ liệu nào được trao đổi.</translation> <translation id="9106062320799175032">Thêm địa chỉ thanh toán</translation> <translation id="9107467864910557787"><ph name="MANAGER" /> quản lý trình duyệt của bạn</translation> +<translation id="91108059142052966">Tính năng chia sẻ màn hình với <ph name="APPLICATION_TITLE" /> khi hiển thị nội dung bí mật bị vô hiệu hóa theo chính sách của quản trị viên</translation> <translation id="9114524666733003316">Đang xác nhận thẻ...</translation> <translation id="9114581008513152754">Không có công ty hay tổ chức nào quản lý trình duyệt này. Hoạt động trên thiết bị này có thể được quản lý ở bên ngoài Chrome. <ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Đã tải lên</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb index 969efed..c2e24f4 100644 --- a/components/strings/components_strings_zh-HK.xtb +++ b/components/strings/components_strings_zh-HK.xtb
@@ -1765,6 +1765,7 @@ <translation id="79859296434321399">如要觀看擴張實境內容,請先安裝 ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">釘裝</translation> +<translation id="7992044431894087211">已繼續與「<ph name="APPLICATION_TITLE" />」分享螢幕畫面的功能</translation> <translation id="7995512525968007366">未指定 </translation> <translation id="800218591365569300">嘗試關閉其他分頁或應用程式,以釋出記憶體。</translation> <translation id="8004582292198964060">瀏覽器</translation> @@ -2038,6 +2039,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> 通常會透過加密方式保護您的資料。Chromium 這次嘗試連線至 <ph name="SITE" /> 時,該網站傳回異常且錯誤的憑證。這可能是因為有攻擊者試圖偽裝成 <ph name="SITE" />,或 Wi-Fi 登入畫面導致連線中斷。請放心,Chromium 未有交換任何資料並已終止連線,所以您的資料仍然安全。</translation> <translation id="9106062320799175032">新增帳單地址</translation> <translation id="9107467864910557787">您的瀏覽器由 <ph name="MANAGER" /> 管理</translation> +<translation id="91108059142052966">當畫面上出現機密內容,管理員政策就會停用與「<ph name="APPLICATION_TITLE" />」分享螢幕畫面的功能</translation> <translation id="9114524666733003316">正在驗證信用卡…</translation> <translation id="9114581008513152754">此瀏覽器未受任何公司或其他機構管理。此裝置上的活動可透過 Chrome 以外的服務管理。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation> <translation id="9119042192571987207">已上載</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb index 060642b..58b417f 100644 --- a/components/strings/components_strings_zh-TW.xtb +++ b/components/strings/components_strings_zh-TW.xtb
@@ -1766,6 +1766,7 @@ <translation id="79859296434321399">如要查看擴增實境內容,請安裝 ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">裝訂</translation> +<translation id="7992044431894087211">已重新啟用與「<ph name="APPLICATION_TITLE" />」分享螢幕畫面的功能</translation> <translation id="7995512525968007366">未指定</translation> <translation id="800218591365569300">嘗試關閉其他分頁或程式,以釋出記憶體。</translation> <translation id="8004582292198964060">瀏覽器</translation> @@ -2039,6 +2040,7 @@ <translation id="9103872766612412690"><ph name="SITE" /> 通常使用加密方式保護您的資訊。但 Chromium 這次嘗試連線到 <ph name="SITE" /> 時,該網站傳回了異常且錯誤的憑證。這可能是因為有攻擊者企圖偽裝成 <ph name="SITE" />,或是受到 Wi-Fi 登入畫面影響而造成連線中斷。不過請放心,Chromium 已及時停止連線,並未傳輸任何資料,因此您的資訊仍然安全無虞。</translation> <translation id="9106062320799175032">新增帳單地址</translation> <translation id="9107467864910557787">你的瀏覽器是由 <ph name="MANAGER" /> 管理</translation> +<translation id="91108059142052966">當畫面上出現機密內容,系統管理員政策就會停用與「<ph name="APPLICATION_TITLE" />」分享螢幕畫面的功能</translation> <translation id="9114524666733003316">正在驗證信用卡...</translation> <translation id="9114581008513152754">這個瀏覽器未受到任何公司或其他機構管理。這部裝置上的活動可透過 Chrome 以外的服務管理。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation> <translation id="9119042192571987207">已上傳</translation>
diff --git a/components/strings/components_strings_zu.xtb b/components/strings/components_strings_zu.xtb index 620904b..e609a6a 100644 --- a/components/strings/components_strings_zu.xtb +++ b/components/strings/components_strings_zu.xtb
@@ -1774,6 +1774,7 @@ <translation id="79859296434321399">Ukuze ubuke okuqukethwe kwe-augmented reality, faka i-ARCore</translation> <translation id="7986319120639858961"><ph name="CARD_TITLE" /> <ph name="TIME" /> <ph name="BOOKMARKED" /> <ph name="TITLE" /> <ph name="DOMAIN" /></translation> <translation id="799149739215780103">Ukubophezela</translation> +<translation id="7992044431894087211">Ukwabelana ngesikrini ne-<ph name="APPLICATION_TITLE" /> kuqhubekisiwe</translation> <translation id="7995512525968007366">Akucacisiwe</translation> <translation id="800218591365569300">Zama ukuvala amanye amathebhu noma izinhlelo ukuze ukhulule imemori.</translation> <translation id="8004582292198964060">Isiphequluli</translation> @@ -2047,6 +2048,7 @@ <translation id="9103872766612412690">I-<ph name="SITE" /> ngokuvamile isebenzisa ukubethela ukuvikela ulwazi lwakho. Uma i-Chromium izame ukuxhuma ku-<ph name="SITE" /> ngalesi sikhathi, iwebhusayithi ithumele emuva imininingwane engavamile nengalungile. Lokhu kungenzeka uma umhlaseli ezama ukuzenza i-<ph name="SITE" />, noma isikrini sokungena se-Wi-Fi siphazamise uxhumo. Ulwazi lwakho lusaphephile ngoba i-Chromium imise uxhumo ngaphambi kokuthi idatha ishintshwe.</translation> <translation id="9106062320799175032">Engeza ikheli lokukhokha</translation> <translation id="9107467864910557787">Isiphequluli sakho siphethwe yi-<ph name="MANAGER" /></translation> +<translation id="91108059142052966">Inqubomgomo yomlawuli ikhubaza ukwabelana ngesikrini ne-<ph name="APPLICATION_TITLE" /> lapho okuqukethwe okuyimfihlo kubonakala</translation> <translation id="9114524666733003316">Iqinisekisa ikhadi...</translation> <translation id="9114581008513152754">Lesi siphequluli asiphethwe inkampani noma enye inhlangano. Umsebenzi kule divayisi ungaphathwa ngaphandle kwe-Chrome. <ph name="BEGIN_LINK" />Funda kabanzi<ph name="END_LINK" /></translation> <translation id="9119042192571987207">Kulayishiwe</translation>
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc index f13f837..192dda3 100644 --- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc +++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
@@ -492,7 +492,9 @@ } void ContentSubresourceFilterThrottleManager::OnReloadRequested() { - client_->OnReloadRequested(); + if (auto* profile_interaction_manager = + client_->GetProfileInteractionManager()) + profile_interaction_manager->OnReloadRequested(); } // static
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager_unittest.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager_unittest.cc index a3e338e..cae1216 100644 --- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager_unittest.cc +++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager_unittest.cc
@@ -194,7 +194,6 @@ override { return nullptr; } - void OnReloadRequested() override {} void CreateSafeBrowsingDatabaseManager() { database_manager_ =
diff --git a/components/subresource_filter/content/browser/subresource_filter_client.h b/components/subresource_filter/content/browser/subresource_filter_client.h index cdd3b9e..27bff32 100644 --- a/components/subresource_filter/content/browser/subresource_filter_client.h +++ b/components/subresource_filter/content/browser/subresource_filter_client.h
@@ -42,10 +42,6 @@ // longer calls into it, replacing this method with a getter for // SubresourceFilterProfileContext. virtual ProfileInteractionManager* GetProfileInteractionManager() = 0; - - // Invoked when the user has requested a reload of a page with blocked ads - // (e.g., via an infobar). - virtual void OnReloadRequested() = 0; }; } // namespace subresource_filter
diff --git a/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc b/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc index a86533d..8c9e4a9 100644 --- a/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc +++ b/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc
@@ -120,7 +120,6 @@ const scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager>()); MOCK_METHOD0(GetProfileInteractionManager, subresource_filter::ProfileInteractionManager*()); - MOCK_METHOD0(OnReloadRequested, void()); private: DISALLOW_COPY_AND_ASSIGN(MockSubresourceFilterClient); @@ -613,7 +612,7 @@ safe_browsing::SB_THREAT_TYPE_API_ABUSE, safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, {mojom::ActivationLevel::kDisabled, ActivationList::PHISHING_INTERSTITIAL, - safe_browsing::SB_THREAT_TYPE_BLACKLISTED_RESOURCE, + safe_browsing::SB_THREAT_TYPE_BLOCKLISTED_RESOURCE, safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, {mojom::ActivationLevel::kDisabled, ActivationList::PHISHING_INTERSTITIAL, safe_browsing::SB_THREAT_TYPE_URL_CLIENT_SIDE_MALWARE,
diff --git a/components/ui_devtools/views/overlay_agent_aura.cc b/components/ui_devtools/views/overlay_agent_aura.cc index 8cbf447..604ad99 100644 --- a/components/ui_devtools/views/overlay_agent_aura.cc +++ b/components/ui_devtools/views/overlay_agent_aura.cc
@@ -22,6 +22,7 @@ } OverlayAgentAura::~OverlayAgentAura() { + RemovePreTargetHandler(); overlay_agent_aura_ = nullptr; }
diff --git a/components/ukm/ukm_recorder_impl.cc b/components/ukm/ukm_recorder_impl.cc index aaa28a3..5799b157 100644 --- a/components/ukm/ukm_recorder_impl.cc +++ b/components/ukm/ukm_recorder_impl.cc
@@ -55,34 +55,6 @@ GetSourceIdType(source_id) == SourceIdType::PAYMENT_APP_ID; } -// Gets the maximum number of Sources we'll keep in memory before discarding any -// new ones being added. -size_t GetMaxSources() { - constexpr size_t kDefaultMaxSources = 500; - static auto value = static_cast<size_t>(base::GetFieldTrialParamByFeatureAsInt( - kUkmFeature, "MaxSources", kDefaultMaxSources)); - return value; -} - -// Gets the maximum number of Sources we can keep in memory at the end of the -// current reporting cycle that will stay accessible in the next reporting -// interval. -size_t GetMaxKeptSources() { - constexpr size_t kDefaultMaxKeptSources = 100; - static auto value = static_cast<size_t>(base::GetFieldTrialParamByFeatureAsInt( - kUkmFeature, "MaxKeptSources", kDefaultMaxKeptSources)); - return value; -} - -// Gets the maximum number of Entries we'll keep in memory before discarding any -// new ones being added. -size_t GetMaxEntries() { - constexpr size_t kDefaultMaxEntries = 5000; - static auto value = static_cast<size_t>(base::GetFieldTrialParamByFeatureAsInt( - kUkmFeature, "MaxEntries", kDefaultMaxEntries)); - return value; -} - // Returns whether |url| has one of the schemes supported for logging to UKM. // URLs with other schemes will not be logged. bool HasSupportedScheme(const GURL& url) { @@ -218,8 +190,16 @@ } // namespace UkmRecorderImpl::UkmRecorderImpl() - : recording_enabled_(false), - sampling_seed_(static_cast<uint32_t>(base::RandUint64())) {} + : sampling_seed_(static_cast<uint32_t>(base::RandUint64())) { + max_sources_ = static_cast<size_t>(base::GetFieldTrialParamByFeatureAsInt( + kUkmFeature, "MaxSources", max_sources_)); + max_kept_sources_ = + static_cast<size_t>(base::GetFieldTrialParamByFeatureAsInt( + kUkmFeature, "MaxKeptSources", max_kept_sources_)); + max_entries_ = static_cast<size_t>(base::GetFieldTrialParamByFeatureAsInt( + kUkmFeature, "MaxEntries", max_entries_)); +} + UkmRecorderImpl::~UkmRecorderImpl() = default; // static @@ -523,7 +503,7 @@ // Defer at most GetMaxKeptSources() sources to the next report, // prioritizing most recently created ones. - int pruned_sources_age = PruneOldSources(GetMaxKeptSources()); + int pruned_sources_age = PruneOldSources(max_kept_sources_); // Record how old the newest truncated source is. source_counts_proto->set_pruned_sources_age_seconds(pruned_sources_age); @@ -671,7 +651,7 @@ return false; } - if (recordings_.sources.size() >= GetMaxSources()) { + if (recordings_.sources.size() >= max_sources_) { RecordDroppedSource(DroppedDataReason::MAX_HIT); return false; } @@ -770,7 +750,7 @@ } } - if (recordings_.entries.size() >= GetMaxEntries()) { + if (recordings_.entries.size() >= max_entries_) { RecordDroppedEntry(entry->event_hash, DroppedDataReason::MAX_HIT); event_aggregate.dropped_due_to_limits++; for (auto& metric : entry->metrics)
diff --git a/components/ukm/ukm_recorder_impl.h b/components/ukm/ukm_recorder_impl.h index 8e066a5..20395e0 100644 --- a/components/ukm/ukm_recorder_impl.h +++ b/components/ukm/ukm_recorder_impl.h
@@ -274,6 +274,19 @@ }; Recordings recordings_; + // The maximum number of Sources we'll keep in memory before discarding any + // new ones being added. + size_t max_sources_ = 500; + + // The maximum number of Sources we can keep in memory at the end of the + // current reporting cycle that will stay accessible in the next reporting + // interval. + size_t max_kept_sources_ = 100; + + // The maximum number of Entries we'll keep in memory before discarding any + // new ones being added. + size_t max_entries_ = 5000; + SEQUENCE_CHECKER(sequence_checker_); };
diff --git a/components/user_manager/user_manager.h b/components/user_manager/user_manager.h index 82a9bbf..99069608 100644 --- a/components/user_manager/user_manager.h +++ b/components/user_manager/user_manager.h
@@ -356,7 +356,7 @@ virtual bool IsStubAccountId(const AccountId& account_id) const = 0; // Returns true if |account_id| is deprecated supervised. - // TODO(crbug.com/1155729): Check it is not used anymore and remove it. + // TODO(crbug/1155729): Check it is not used anymore and remove it. virtual bool IsDeprecatedSupervisedAccountId( const AccountId& account_id) const = 0;
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl.cc b/components/viz/service/display_embedder/skia_output_surface_impl.cc index 7782531..4e181f5 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl.cc
@@ -901,6 +901,7 @@ // Reset |damage_of_buffers_|, if buffers are new created. if (params.swap_response.result == gfx::SwapResult::SWAP_NAK_RECREATE_BUFFERS) { + client_->SetNeedsRedrawRect(gfx::Rect(size_)); for (auto& damage : damage_of_buffers_) damage = gfx::Rect(size_); }
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc index ffe68a0..221039896 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -1450,6 +1450,20 @@ scoped_output_device_paint_.reset(); if (frame) { + if (waiting_for_full_damage_) { + // If we're using partial swap, we need to check whether the sub-buffer + // rect is actually the entire screen, but otherwise, the damage is + // always the full surface. + if (frame->sub_buffer_rect && + capabilities().supports_post_sub_buffer && + frame->sub_buffer_rect->size() != size_) { + output_surface_plane_.reset(); + destroy_after_swap_.clear(); + return; + } + waiting_for_full_damage_ = false; + } + if (output_surface_plane_) DCHECK(output_device_->IsPrimaryPlaneOverlay()); output_device_->SchedulePrimaryPlane(output_surface_plane_); @@ -1540,6 +1554,16 @@ // Mark the context lost if not already lost. MarkContextLost(ContextLostReason::CONTEXT_LOST_SWAP_FAILED); } + } else if (params.swap_response.result == + gfx::SwapResult::SWAP_NAK_RECREATE_BUFFERS) { + // We shouldn't present newly reallocated buffers until we have fully + // initialized their contents. SWAP_NAK_RECREAETE_BUFFERS should trigger a + // full-screen damage in DirectRenderer, but there is no guarantee that it + // will happen immediately since the SwapBuffersComplete task gets posted + // back to the Viz thread and will race with the next invocation of + // DrawFrame. To ensure we do not display uninitialized memory, we hold + // off on submitting new frames until we have received a full damage. + waiting_for_full_damage_ = true; } #if defined(OS_APPLE)
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h index fb7fe6d..e7b6f8a 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h
@@ -343,6 +343,8 @@ // Micro-optimization to get to issuing GPU SwapBuffers as soon as possible. std::vector<sk_sp<SkDeferredDisplayList>> destroy_after_swap_; + bool waiting_for_full_damage_ = false; + int num_readbacks_pending_ = 0; bool readback_poll_pending_ = false;
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index c32e705..7f7ebda 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn
@@ -2399,8 +2399,6 @@ "renderer_host/pepper/quota_reservation.h", "renderer_host/plugin_registry_impl.cc", "renderer_host/plugin_registry_impl.h", - "renderer_host/render_frame_message_filter.cc", - "renderer_host/render_frame_message_filter.h", ] deps += [ "//ppapi/host",
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc index 6a90ae07..d9223ab 100644 --- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc +++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -1017,7 +1017,14 @@ RunAriaTest(FILE_PATH_LITERAL("aria-owns.html")); } -IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaOwnsCrash) { +// Flaky on CrOS MSAN: https://crbug.com/1167331 +#if defined(OS_CHROMEOS) && defined(MEMORY_SANITIZER) +#define MAYBE_AccessibilityAriaOwnsCrash DISABLED_AccessibilityAriaOwnsCrash +#else +#define MAYBE_AccessibilityAriaOwnsCrash AccessibilityAriaOwnsCrash +#endif +IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, + MAYBE_AccessibilityAriaOwnsCrash) { RunAriaTest(FILE_PATH_LITERAL("aria-owns-crash.html")); }
diff --git a/content/browser/appcache/appcache_host_unittest.cc b/content/browser/appcache/appcache_host_unittest.cc index 3e49ee1..dd0a6e6d 100644 --- a/content/browser/appcache/appcache_host_unittest.cc +++ b/content/browser/appcache/appcache_host_unittest.cc
@@ -115,7 +115,7 @@ MockQuotaManagerProxy() : QuotaManagerProxy(nullptr, nullptr) {} // Not needed for our tests. - void RegisterClient( + void RegisterLegacyClient( scoped_refptr<storage::QuotaClient> client, storage::QuotaClientType client_type, const std::vector<blink::mojom::StorageType>& storage_types) override {}
diff --git a/content/browser/appcache/appcache_service_impl.cc b/content/browser/appcache/appcache_service_impl.cc index 46ecc33..0347e53 100644 --- a/content/browser/appcache/appcache_service_impl.cc +++ b/content/browser/appcache/appcache_service_impl.cc
@@ -456,9 +456,10 @@ quota_client_ = base::MakeRefCounted<AppCacheQuotaClient>(std::move(appcache_service)); - quota_manager_proxy->RegisterClient(quota_client_, - storage::QuotaClientType::kAppcache, - {blink::mojom::StorageType::kTemporary}); + // TODO(crbug.com/1163048): Use mojo and switch to RegisterClient(). + quota_manager_proxy->RegisterLegacyClient( + quota_client_, storage::QuotaClientType::kAppcache, + {blink::mojom::StorageType::kTemporary}); } void AppCacheServiceImpl::QuotaClientHolder::NotifyStorageReadyOnIOThread() {
diff --git a/content/browser/appcache/appcache_storage_impl_unittest.cc b/content/browser/appcache/appcache_storage_impl_unittest.cc index 5e96ff5..62784ea1 100644 --- a/content/browser/appcache/appcache_storage_impl_unittest.cc +++ b/content/browser/appcache/appcache_storage_impl_unittest.cc
@@ -27,6 +27,7 @@ #include "base/test/task_environment.h" #include "base/threading/sequenced_task_runner_handle.h" #include "base/threading/thread.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" #include "content/browser/appcache/appcache.h" #include "content/browser/appcache/appcache_database.h" #include "content/browser/appcache/appcache_entry.h" @@ -58,7 +59,7 @@ #include "third_party/blink/public/mojom/appcache/appcache.mojom.h" #include "third_party/blink/public/mojom/appcache/appcache_info.mojom.h" #include "third_party/blink/public/mojom/devtools/console_message.mojom.h" -#include "third_party/blink/public/mojom/quota/quota_types.mojom-shared.h" +#include "third_party/blink/public/mojom/quota/quota_types.mojom.h" #include "url/gurl.h" #include "url/origin.h" @@ -200,6 +201,10 @@ // Not needed for our tests. void RegisterClient( + mojo::PendingRemote<storage::mojom::QuotaClient> client, + storage::QuotaClientType client_type, + const std::vector<blink::mojom::StorageType>& storage_types) override {} + void RegisterLegacyClient( scoped_refptr<storage::QuotaClient> client, storage::QuotaClientType quota_client_type, const std::vector<blink::mojom::StorageType>& storage_types) override {}
diff --git a/content/browser/background_fetch/background_fetch_test_data_manager.cc b/content/browser/background_fetch/background_fetch_test_data_manager.cc index 09a37d4d..09bd945 100644 --- a/content/browser/background_fetch/background_fetch_test_data_manager.cc +++ b/content/browser/background_fetch/background_fetch_test_data_manager.cc
@@ -8,12 +8,14 @@ #include "base/run_loop.h" #include "base/task/post_task.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" #include "content/browser/blob_storage/chrome_blob_storage_context.h" #include "content/browser/cache_storage/cache_storage_manager.h" #include "content/browser/cache_storage/legacy/legacy_cache_storage_manager.h" #include "content/browser/service_worker/service_worker_context_wrapper.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/storage_partition.h" +#include "mojo/public/cpp/bindings/pending_remote.h" #include "storage/browser/blob/blob_storage_context.h" #include "storage/browser/test/mock_quota_manager.h" #include "storage/browser/test/mock_quota_manager_proxy.h" @@ -32,6 +34,10 @@ // Ignore quota client, it is irrelevant for these tests. void RegisterClient( + mojo::PendingRemote<storage::mojom::QuotaClient> client, + storage::QuotaClientType client_type, + const std::vector<blink::mojom::StorageType>& storage_types) override {} + void RegisterLegacyClient( scoped_refptr<storage::QuotaClient> client, storage::QuotaClientType client_type, const std::vector<blink::mojom::StorageType>& storage_types) override {}
diff --git a/content/browser/cache_storage/cache_storage_context_impl.cc b/content/browser/cache_storage/cache_storage_context_impl.cc index 6c8ac38..fefa20c8 100644 --- a/content/browser/cache_storage/cache_storage_context_impl.cc +++ b/content/browser/cache_storage/cache_storage_context_impl.cc
@@ -309,12 +309,16 @@ scoped_refptr<CacheStorageManager> manager = CacheManager(); if (!manager) return; - quota_manager_proxy->RegisterClient( + + // TODO(crbug.com/1163048): Use mojo and switch to RegisterClient(). + quota_manager_proxy->RegisterLegacyClient( base::MakeRefCounted<CacheStorageQuotaClient>( manager, storage::mojom::CacheStorageOwner::kCacheAPI), storage::QuotaClientType::kServiceWorkerCache, {blink::mojom::StorageType::kTemporary}); - quota_manager_proxy->RegisterClient( + + // TODO(crbug.com/1163048): Use mojo and switch to RegisterClient(). + quota_manager_proxy->RegisterLegacyClient( base::MakeRefCounted<CacheStorageQuotaClient>( manager, storage::mojom::CacheStorageOwner::kBackgroundFetch), storage::QuotaClientType::kBackgroundFetch,
diff --git a/content/browser/cache_storage/cache_storage_manager_unittest.cc b/content/browser/cache_storage/cache_storage_manager_unittest.cc index 8bb2398b..04a71b9 100644 --- a/content/browser/cache_storage/cache_storage_manager_unittest.cc +++ b/content/browser/cache_storage/cache_storage_manager_unittest.cc
@@ -19,6 +19,7 @@ #include "base/macros.h" #include "base/memory/ptr_util.h" #include "base/memory/scoped_refptr.h" +#include "base/notreached.h" #include "base/run_loop.h" #include "base/stl_util.h" #include "base/strings/string_number_conversions.h" @@ -176,6 +177,13 @@ : MockQuotaManagerProxy(quota_manager, task_runner) {} void RegisterClient( + mojo::PendingRemote<storage::mojom::QuotaClient> client, + storage::QuotaClientType client_type, + const std::vector<blink::mojom::StorageType>& storage_types) override { + NOTREACHED(); + } + + void RegisterLegacyClient( scoped_refptr<storage::QuotaClient> client, storage::QuotaClientType client_type, const std::vector<blink::mojom::StorageType>& storage_types) override {
diff --git a/content/browser/find_request_manager_browsertest.cc b/content/browser/find_request_manager_browsertest.cc index b0b5b54..f5414b1 100644 --- a/content/browser/find_request_manager_browsertest.cc +++ b/content/browser/find_request_manager_browsertest.cc
@@ -25,6 +25,10 @@ #include "third_party/blink/public/common/web_preferences/web_preferences.h" #include "third_party/blink/public/mojom/page/widget.mojom-test-utils.h" +#if defined(OS_ANDROID) +#include "ui/android/view_android.h" +#endif + namespace content { namespace { @@ -725,6 +729,84 @@ EXPECT_EQ(gfx::RectF(), delegate()->active_match_rect()); } +class MainFrameSizeChangedWaiter : public WebContentsObserver { + public: + MainFrameSizeChangedWaiter(WebContents* web_contents) + : WebContentsObserver(web_contents) {} + void Wait() { run_loop_.Run(); } + + private: + void FrameSizeChanged(RenderFrameHost* render_frame_host, + const gfx::Size& frame_size) override { + if (render_frame_host == web_contents()->GetMainFrame()) + run_loop_.Quit(); + } + + base::RunLoop run_loop_; +}; + +// Tests match rects in the iframe are updated with the size of the main frame, +// and the active match rect should be in it. +IN_PROC_BROWSER_TEST_F(FindRequestManagerTest, + RectsUpdateWhenMainFrameSizeChanged) { + LoadAndWait("/find_in_page.html"); + + // Make a initial size for native view. + const int kWidth = 1080; + const int kHeight = 1286; + gfx::Size size(kWidth, kHeight); + contents()->GetNativeView()->OnSizeChanged(kWidth, kHeight); + contents()->GetNativeView()->OnPhysicalBackingSizeChanged(size); + + // Make a FindRequest for "result". + auto options = blink::mojom::FindOptions::New(); + options->run_synchronously_for_testing = true; + Find("result", options->Clone()); + delegate()->WaitForFinalReply(); + FindResults results = delegate()->GetFindResults(); + EXPECT_EQ(19, results.number_of_matches); + + contents()->RequestFindMatchRects(-1); + delegate()->WaitForMatchRects(); + + // Change the size of native view. + const int kNewHeight = 2121; + size = gfx::Size(kWidth, kNewHeight); + contents()->GetNativeView()->OnSizeChanged(kWidth, kNewHeight); + contents()->GetNativeView()->OnPhysicalBackingSizeChanged(size); + + // Wait for the size of the mainframe to change, and then the position + // of match rects should change as expected. + MainFrameSizeChangedWaiter(contents()).Wait(); + + contents()->RequestFindMatchRects(-1); + delegate()->WaitForMatchRects(); + std::vector<gfx::RectF> new_rects = delegate()->find_match_rects(); + + // The first match should be active. + EXPECT_EQ(new_rects[0], delegate()->active_match_rect()); + + // Check that all active rects (including iframe) matches with corresponding + // match rect. + for (int i = 1; i < 19; i++) { + options->new_session = false; + options->forward = true; + Find("result", options->Clone()); + delegate()->WaitForFinalReply(); + + FindResults results = delegate()->GetFindResults(); + EXPECT_EQ(19, results.number_of_matches); + + // Request the find match rects. + contents()->RequestFindMatchRects(-1); + delegate()->WaitForMatchRects(); + new_rects = delegate()->find_match_rects(); + + // The active rect should be equal to the corresponding match rect. + EXPECT_EQ(new_rects[i], delegate()->active_match_rect()); + } +} + // TODO(wjmaclean): This test, if re-enabled, may require work to make it // OOPIF-compatible. // Tests requesting find match rects.
diff --git a/content/browser/indexed_db/indexed_db_context_impl.cc b/content/browser/indexed_db/indexed_db_context_impl.cc index d11344cc..411d5a95 100644 --- a/content/browser/indexed_db/indexed_db_context_impl.cc +++ b/content/browser/indexed_db/indexed_db_context_impl.cc
@@ -142,7 +142,9 @@ clock_(clock), filesystem_proxy_(storage::CreateFilesystemProxy()) { IDB_TRACE("init"); - quota_manager_proxy_->RegisterClient( + + // TODO(crbug.com/1163048): Use mojo and switch to RegisterClient(). + quota_manager_proxy_->RegisterLegacyClient( base::MakeRefCounted<IndexedDBQuotaClient>(this), storage::QuotaClientType::kIndexedDatabase, {blink::mojom::StorageType::kTemporary});
diff --git a/content/browser/isolated_origin_browsertest.cc b/content/browser/isolated_origin_browsertest.cc index f1f5f0b3..778b6d0 100644 --- a/content/browser/isolated_origin_browsertest.cc +++ b/content/browser/isolated_origin_browsertest.cc
@@ -640,7 +640,8 @@ WebContentsConsoleObserver console_observer(shell()->web_contents()); console_observer.SetPattern( - "The page did not request origin isolation, but was isolated anyway*"); + "The page did not request an origin-keyed agent cluster, but was put in " + "one anyway*"); EXPECT_TRUE( NavigateToURLFromRenderer(child_frame_node1, isolated_suborigin_url)); @@ -693,7 +694,8 @@ WebContentsConsoleObserver console_observer(shell()->web_contents()); console_observer.SetPattern( - "The page requested origin isolation, but could not be isolated*"); + "The page requested an origin-keyed agent cluster using the " + "Origin-Agent-Cluster header, but could not be origin-keyed*"); EXPECT_TRUE( NavigateToURLFromRenderer(child_frame_node1, isolated_suborigin_url));
diff --git a/content/browser/manifest/manifest_browsertest.cc b/content/browser/manifest/manifest_browsertest.cc index 93d6892..b6e764a 100644 --- a/content/browser/manifest/manifest_browsertest.cc +++ b/content/browser/manifest/manifest_browsertest.cc
@@ -426,7 +426,8 @@ // If a page's manifest is in an insecure origin while the page is in a secure // origin, requesting the manifest should return the empty manifest. -IN_PROC_BROWSER_TEST_F(ManifestBrowserTest, MixedContentManifest) { +// TODO(crbug.com/1167226): Flaky test. +IN_PROC_BROWSER_TEST_F(ManifestBrowserTest, DISABLED_MixedContentManifest) { ASSERT_TRUE(cors_embedded_test_server()->Start()); std::unique_ptr<net::EmbeddedTestServer> https_server( new net::EmbeddedTestServer(net::EmbeddedTestServer::TYPE_HTTPS));
diff --git a/content/browser/media/android/media_resource_getter_impl.cc b/content/browser/media/android/media_resource_getter_impl.cc index c7821a5..5ff57d3 100644 --- a/content/browser/media/android/media_resource_getter_impl.cc +++ b/content/browser/media/android/media_resource_getter_impl.cc
@@ -51,16 +51,9 @@ StoragePartition* storage_partition = BrowserContext::GetDefaultStoragePartition(browser_context); - net::IsolationInfo isolation_info = - render_frame_host - ? render_frame_host->GetIsolationInfoForSubresources() - : net::IsolationInfo::Create(net::IsolationInfo::RequestType::kOther, - top_frame_origin, origin, - site_for_cookies, base::nullopt); - DCHECK_EQ(origin, isolation_info.frame_origin().value()); - DCHECK_EQ(top_frame_origin, isolation_info.top_frame_origin().value()); - // TODO(https://crbug.com/911299): Check `site_for_cookies` and - // `isolation_info.site_for_cookies` are equivalent. + net::IsolationInfo isolation_info = net::IsolationInfo::Create( + net::IsolationInfo::RequestType::kOther, top_frame_origin, origin, + site_for_cookies, base::nullopt); mojo::PendingRemote<network::mojom::RestrictedCookieManager> pipe; static_cast<StoragePartitionImpl*>(storage_partition)
diff --git a/content/browser/media/media_web_contents_observer.cc b/content/browser/media/media_web_contents_observer.cc index f8bd5ec..30ff0cc 100644 --- a/content/browser/media/media_web_contents_observer.cc +++ b/content/browser/media/media_web_contents_observer.cc
@@ -528,14 +528,11 @@ MediaPlayerId(render_frame_host, delegate_id), raw_device_id); } -media::mojom::MediaPlayer* MediaWebContentsObserver::GetMediaPlayerRemote( - const MediaPlayerId& player_id) { - if (media_player_remotes_.contains(player_id)) { - DCHECK(media_player_remotes_[player_id].is_bound()); - return media_player_remotes_.at(player_id).get(); - } - - return nullptr; +mojo::Remote<media::mojom::MediaPlayer>& +MediaWebContentsObserver::GetMediaPlayerRemote(const MediaPlayerId& player_id) { + DCHECK(media_player_remotes_.contains(player_id)); + DCHECK(media_player_remotes_[player_id].is_bound()); + return media_player_remotes_.at(player_id); } void MediaWebContentsObserver::OnMediaPlayerHostDisconnected(
diff --git a/content/browser/media/media_web_contents_observer.h b/content/browser/media/media_web_contents_observer.h index dfbc1dcc..704ecf0 100644 --- a/content/browser/media/media_web_contents_observer.h +++ b/content/browser/media/media_web_contents_observer.h
@@ -110,11 +110,9 @@ int delegate_id, const std::string& raw_device_id); - // Return an already bound mojo Remote for the MediaPlayer mojo interface. - // Return null if no player with |player_id| exists. - // TODO(https://crbug.com/1161551): Revert to returning a reference and make - // it an error to call this method if no MediaPlayer with |player_id| exists. - media::mojom::MediaPlayer* GetMediaPlayerRemote( + // Return an already bound mojo Remote for the MediaPlayer mojo interface. It + // is an error to call this method if no MediaPlayer with |player_id| exists. + mojo::Remote<media::mojom::MediaPlayer>& GetMediaPlayerRemote( const MediaPlayerId& player_id); // Creates a new MediaPlayerObserverHostImpl associated to |player_id| if
diff --git a/content/browser/media/session/media_session_controller.cc b/content/browser/media/session/media_session_controller.cc index a92a949..90b5962 100644 --- a/content/browser/media/session/media_session_controller.cc +++ b/content/browser/media/session/media_session_controller.cc
@@ -50,62 +50,34 @@ void MediaSessionController::OnSuspend(int player_id) { DCHECK_EQ(player_id_, player_id); - - media::mojom::MediaPlayer* remote = - web_contents_->media_web_contents_observer()->GetMediaPlayerRemote(id_); - if (!remote) { - // TODO(https://crbug.com/1161551): Remove this when lifetime bug is fixed. - NOTREACHED() << "Controller should not outlive remote MediaPlayer"; - return; - } - // TODO(crbug.com/953645): Set triggered_by_user to true ONLY if that action // was actually triggered by user as this will activate the frame. - remote->RequestPause(/*triggered_by_user=*/true); + web_contents_->media_web_contents_observer() + ->GetMediaPlayerRemote(id_) + ->RequestPause(/*triggered_by_user=*/true); } void MediaSessionController::OnResume(int player_id) { DCHECK_EQ(player_id_, player_id); - - media::mojom::MediaPlayer* remote = - web_contents_->media_web_contents_observer()->GetMediaPlayerRemote(id_); - if (!remote) { - // TODO(https://crbug.com/1161551): Remove this when lifetime bug is fixed. - NOTREACHED() << "Controller should not outlive remote MediaPlayer"; - return; - } - - remote->RequestPlay(); + web_contents_->media_web_contents_observer() + ->GetMediaPlayerRemote(id_) + ->RequestPlay(); } void MediaSessionController::OnSeekForward(int player_id, base::TimeDelta seek_time) { DCHECK_EQ(player_id_, player_id); - - media::mojom::MediaPlayer* remote = - web_contents_->media_web_contents_observer()->GetMediaPlayerRemote(id_); - if (!remote) { - // TODO(https://crbug.com/1161551): Remove this when lifetime bug is fixed. - NOTREACHED() << "Controller should not outlive remote MediaPlayer"; - return; - } - - remote->RequestSeekForward(seek_time); + web_contents_->media_web_contents_observer() + ->GetMediaPlayerRemote(id_) + ->RequestSeekForward(seek_time); } void MediaSessionController::OnSeekBackward(int player_id, base::TimeDelta seek_time) { DCHECK_EQ(player_id_, player_id); - - media::mojom::MediaPlayer* remote = - web_contents_->media_web_contents_observer()->GetMediaPlayerRemote(id_); - if (!remote) { - // TODO(https://crbug.com/1161551): Remove this when lifetime bug is fixed. - NOTREACHED() << "Controller should not outlive remote MediaPlayer"; - return; - } - - remote->RequestSeekBackward(seek_time); + web_contents_->media_web_contents_observer() + ->GetMediaPlayerRemote(id_) + ->RequestSeekBackward(seek_time); } void MediaSessionController::OnSetVolumeMultiplier(int player_id, @@ -119,29 +91,17 @@ void MediaSessionController::OnEnterPictureInPicture(int player_id) { DCHECK_EQ(player_id_, player_id); - media::mojom::MediaPlayer* remote = - web_contents_->media_web_contents_observer()->GetMediaPlayerRemote(id_); - if (!remote) { - // TODO(https://crbug.com/1161551): Remove this when lifetime bug is fixed. - NOTREACHED() << "Controller should not outlive remote MediaPlayer"; - return; - } - - remote->RequestEnterPictureInPicture(); + web_contents_->media_web_contents_observer() + ->GetMediaPlayerRemote(id_) + ->RequestEnterPictureInPicture(); } void MediaSessionController::OnExitPictureInPicture(int player_id) { DCHECK_EQ(player_id_, player_id); - media::mojom::MediaPlayer* remote = - web_contents_->media_web_contents_observer()->GetMediaPlayerRemote(id_); - if (!remote) { - // TODO(https://crbug.com/1161551): Remove this when lifetime bug is fixed. - NOTREACHED() << "Controller should not outlive remote MediaPlayer"; - return; - } - - remote->RequestExitPictureInPicture(); + web_contents_->media_web_contents_observer() + ->GetMediaPlayerRemote(id_) + ->RequestExitPictureInPicture(); } void MediaSessionController::OnSetAudioSinkId(
diff --git a/content/browser/native_io/native_io_manager.cc b/content/browser/native_io/native_io_manager.cc index 83449410..4583930 100644 --- a/content/browser/native_io/native_io_manager.cc +++ b/content/browser/native_io/native_io_manager.cc
@@ -36,7 +36,8 @@ special_storage_policy_(std::move(special_storage_policy)), quota_manager_proxy_(std::move(quota_manager_proxy)) { if (quota_manager_proxy_) { - quota_manager_proxy_->RegisterClient( + // TODO(crbug.com/1163048): Use mojo and switch to RegisterClient(). + quota_manager_proxy_->RegisterLegacyClient( base::MakeRefCounted<NativeIOQuotaClient>(), storage::QuotaClientType::kNativeIO, {blink::mojom::StorageType::kTemporary});
diff --git a/content/browser/net/http_cookie_browsertest.cc b/content/browser/net/http_cookie_browsertest.cc new file mode 100644 index 0000000..ba19ad8 --- /dev/null +++ b/content/browser/net/http_cookie_browsertest.cc
@@ -0,0 +1,477 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/strings/strcat.h" +#include "base/strings/string_split.h" +#include "content/browser/web_contents/web_contents_impl.h" +#include "content/public/browser/browser_context.h" +#include "content/public/browser/web_contents.h" +#include "content/public/test/browser_test.h" +#include "content/public/test/browser_test_utils.h" +#include "content/public/test/content_browser_test.h" +#include "content/public/test/test_navigation_observer.h" +#include "content/shell/browser/shell.h" +#include "net/base/features.h" +#include "net/dns/mock_host_resolver.h" +#include "net/test/embedded_test_server/embedded_test_server.h" +#include "services/network/public/cpp/network_switches.h" +#include "testing/gmock/include/gmock/gmock-matchers.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace content { +namespace { + +using ::testing::IsEmpty; +using ::testing::Key; +using ::testing::UnorderedElementsAre; + +// Matches a CanonicalCookie with the given name. +MATCHER_P(CookieWithName, name, "") { + return testing::ExplainMatchResult(testing::Eq(name), arg.Name(), + result_listener); +} + +// Splits a string into key-value pairs, and executes the provided matcher on +// the result. +MATCHER_P3(WhenKVSplit, pair_delim, kv_delim, inner_matcher, "") { + std::vector<std::pair<std::string, std::string>> pairs; + // Ignore the return value of SplitStringIntoKeyValuePairs, to allow pairs + // with no associated value. + base::SplitStringIntoKeyValuePairs(arg, kv_delim, pair_delim, &pairs); + return testing::ExplainMatchResult(inner_matcher, pairs, result_listener); +} + +// Splits a ';'-delimited string of Cookie 'name=value' or 'name' pairs, and +// executes the provided matcher on the result. +MATCHER_P(CookieString, inner_matcher, "") { + return testing::ExplainMatchResult(WhenKVSplit(';', '=', inner_matcher), arg, + result_listener); +} + +// This file contains tests for cookie access via HTTP requests. +// See also (tests for cookie access via JavaScript): +// //content/browser/renderer_host/cookie_browsertest.cc + +class HttpCookieBrowserTest : public ContentBrowserTest { + public: + HttpCookieBrowserTest() + : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {} + + ~HttpCookieBrowserTest() override = default; + + void SetUpOnMainThread() override { + ContentBrowserTest::SetUpOnMainThread(); + host_resolver()->AddRule("*", "127.0.0.1"); + https_server()->SetSSLConfig(net::EmbeddedTestServer::CERT_TEST_NAMES); + https_server()->AddDefaultHandlers(GetTestDataFilePath()); + ASSERT_TRUE(https_server()->Start()); + } + + void SetUpCommandLine(base::CommandLine* command_line) override { + ContentBrowserTest::SetUpCommandLine(command_line); + command_line->AppendSwitchASCII( + network::switches::kUseFirstPartySet, + base::StringPrintf("https://%s,https://%s,https://%s", kHostA, kHostB, + kHostC)); + } + + const char* kHostA = "a.test"; + const char* kHostB = "b.test"; + const char* kHostC = "c.test"; + const char* kHostD = "d.test"; + const char* kSameSiteStrictCookieName = "samesite_strict_cookie"; + const char* kSameSiteLaxCookieName = "samesite_lax_cookie"; + const char* kSameSiteNoneCookieName = "samesite_none_cookie"; + const char* kSameSiteUnspecifiedCookieName = "samesite_unspecified_cookie"; + const char* kSamePartyLaxCookieName = "sameparty_lax_cookie"; + const char* kSamePartyNoneCookieName = "sameparty_none_cookie"; + const char* kSamePartyUnspecifiedCookieName = "sameparty_unspecified_cookie"; + const std::string kSetSameSiteCookiesURL = base::StrCat({ + "/set-cookie?", + kSameSiteStrictCookieName, + "=1;SameSite=Strict&", + kSameSiteLaxCookieName, + "=1;SameSite=Lax&", + kSameSiteUnspecifiedCookieName, + "=1&", + kSameSiteNoneCookieName, + "=1;Secure;SameSite=None", + }); + const std::string kSetSamePartyCookiesURL = base::StrCat({ + "/set-cookie?", + kSamePartyLaxCookieName, + "=1;SameParty;Secure;SameSite=Lax&", + kSamePartyNoneCookieName, + "=1;SameParty;Secure;SameSite=None&", + kSamePartyUnspecifiedCookieName, + "=1;SameParty;Secure", + }); + + void SetSameSiteCookies(const std::string& host) { + BrowserContext* context = shell()->web_contents()->GetBrowserContext(); + EXPECT_TRUE(SetCookie( + context, https_server()->GetURL(host, "/"), + base::StrCat({kSameSiteStrictCookieName, "=1; samesite=strict"}))); + EXPECT_TRUE( + SetCookie(context, https_server()->GetURL(host, "/"), + base::StrCat({kSameSiteLaxCookieName, "=1; samesite=lax"}))); + EXPECT_TRUE(SetCookie( + context, https_server()->GetURL(host, "/"), + base::StrCat({kSameSiteNoneCookieName, "=1; samesite=none; secure"}))); + EXPECT_TRUE( + SetCookie(context, https_server()->GetURL(host, "/"), + base::StrCat({kSameSiteUnspecifiedCookieName, "=1"}))); + } + + void SetSamePartyCookies(const std::string& host) { + BrowserContext* context = shell()->web_contents()->GetBrowserContext(); + EXPECT_TRUE( + SetCookie(context, https_server()->GetURL(host, "/"), + base::StrCat({kSamePartyLaxCookieName, + "=1; samesite=lax; secure; sameparty"}))); + EXPECT_TRUE( + SetCookie(context, https_server()->GetURL(host, "/"), + base::StrCat({kSamePartyNoneCookieName, + "=1; samesite=none; secure; sameparty"}))); + EXPECT_TRUE(SetCookie(context, https_server()->GetURL(host, "/"), + base::StrCat({kSamePartyUnspecifiedCookieName, + "=1; secure; sameparty"}))); + } + + RenderFrameHostImpl* SelectDescendentFrame( + const std::vector<int>& indices) const { + RenderFrameHostImpl* selected_frame = static_cast<RenderFrameHostImpl*>( + shell()->web_contents()->GetMainFrame()); + for (int index : indices) { + selected_frame = selected_frame->child_at(index)->current_frame_host(); + } + return selected_frame; + } + + std::string ExtractFrameContent(RenderFrameHost* frame) const { + std::string content; + EXPECT_TRUE(ExecuteScriptAndExtractString( + frame, "window.domAutomationController.send(document.body.textContent)", + &content)); + return content; + } + + void NavigateFrameHostToURL(RenderFrameHost* iframe, const GURL& url) { + TestNavigationObserver nav_observer(shell()->web_contents()); + ExecuteScriptAsync(iframe, JsReplace("location = $1", url)); + nav_observer.Wait(); + } + + RenderFrameHostImpl* ArrangeFrames(const std::string& frame_tree, + const std::vector<int>& leaf_path) { + EXPECT_TRUE(NavigateToURL( + shell()->web_contents(), + https_server()->GetURL( + frame_tree.substr(0, frame_tree.find("(")), + base::StrCat({"/cross_site_iframe_factory.html?", frame_tree})))); + return SelectDescendentFrame(leaf_path); + } + + // Returns the contents of the Cookie header from the leaf frame. + std::string ArrangeFramesAndGetCookiesFromLeaf( + const std::string& frame_tree, + const std::vector<int>& leaf_path) { + // NB: This doesn't get the cookies that were sent when the leaf is + // initially loaded; it instead loads the leaf, then does a same-site + // navigation to get to /echoheader?Cookie. This results in a different + // initiator origin; loading /echoheader?Cookie directly would have been a + // cross-site navigation. + // + // In practice this is ok, since the scenarios where + // this difference matters are the scenarios where the frame is cross-site + // anyway, so the only cookies that would be sent are SameSite=None (or + // potentially SameParty). + // + // We could consider making a custom cross_site_iframe_factory (or modifying + // the existing one) to navigate to /echoheader?Cookie directly in the + // leaves. + RenderFrameHostImpl* leaf = ArrangeFrames(frame_tree, leaf_path); + NavigateFrameHostToURL( + leaf, https_server()->GetURL(leaf->GetLastCommittedOrigin().host(), + "/echoheader?Cookie")); + return ExtractFrameContent(leaf); + } + + // Returns the cookies set by the leaf frame. + std::vector<net::CanonicalCookie> ArrangeFramesAndSetCookiesInLeaf( + const std::string& frame_tree, + const std::vector<int>& leaf_path, + const std::string& cookies_url) { + RenderFrameHostImpl* leaf = ArrangeFrames(frame_tree, leaf_path); + const std::string& leaf_host = leaf->GetLastCommittedOrigin().host(); + NavigateFrameHostToURL(leaf, + https_server()->GetURL(leaf_host, cookies_url)); + return GetCanonicalCookies(shell()->web_contents()->GetBrowserContext(), + https_server()->GetURL(leaf_host, "/")); + } + + uint32_t ClearCookies() { + return DeleteCookies(shell()->web_contents()->GetBrowserContext(), + network::mojom::CookieDeletionFilter()); + } + + net::EmbeddedTestServer* https_server() { return &https_server_; } + + private: + net::test_server::EmbeddedTestServer https_server_; +}; + +IN_PROC_BROWSER_TEST_F(HttpCookieBrowserTest, SendSameSiteCookies) { + SetSameSiteCookies(kHostA); + SetSameSiteCookies(kHostB); + + WebContentsImpl* web_contents = + static_cast<WebContentsImpl*>(shell()->web_contents()); + + // Main frame browser-initiated navigation sends all SameSite cookies. + ASSERT_TRUE(NavigateToURL( + web_contents, https_server()->GetURL(kHostA, "/echoheader?Cookie"))); + EXPECT_THAT( + ExtractFrameContent(web_contents->GetMainFrame()), + CookieString(UnorderedElementsAre( + Key(kSameSiteStrictCookieName), Key(kSameSiteLaxCookieName), + Key(kSameSiteNoneCookieName), Key(kSameSiteUnspecifiedCookieName)))); + + // Main frame same-site (A => A) navigation sends all SameSite cookies. + ASSERT_TRUE(NavigateToURLFromRenderer( + web_contents->GetMainFrame(), + https_server()->GetURL(kHostA, "/echoheader?Cookie"))); + EXPECT_THAT( + ExtractFrameContent(web_contents->GetMainFrame()), + CookieString(UnorderedElementsAre( + Key(kSameSiteStrictCookieName), Key(kSameSiteLaxCookieName), + Key(kSameSiteNoneCookieName), Key(kSameSiteUnspecifiedCookieName)))); + + // Main frame cross-site (A => B) navigation sends all but Strict cookies. + ASSERT_TRUE(NavigateToURLFromRenderer( + web_contents->GetMainFrame(), + https_server()->GetURL(kHostB, "/echoheader?Cookie"))); + EXPECT_THAT(ExtractFrameContent(web_contents->GetMainFrame()), + CookieString(UnorderedElementsAre( + Key(kSameSiteLaxCookieName), Key(kSameSiteNoneCookieName), + Key(kSameSiteUnspecifiedCookieName)))); + + ASSERT_TRUE(NavigateToURL( + web_contents, https_server()->GetURL(kHostA, "/page_with_iframe.html"))); + + // Same-site iframe (A embedded in A) sends all SameSite cookies. + ASSERT_TRUE(NavigateIframeToURL( + web_contents, "test_iframe", + https_server()->GetURL(kHostA, "/echoheader?Cookie"))); + EXPECT_THAT( + ExtractFrameContent(SelectDescendentFrame({0})), + CookieString(UnorderedElementsAre( + Key(kSameSiteStrictCookieName), Key(kSameSiteLaxCookieName), + Key(kSameSiteNoneCookieName), Key(kSameSiteUnspecifiedCookieName)))); + + // Cross-site iframe (B embedded in A) sends only None cookies. + ASSERT_TRUE(NavigateIframeToURL( + web_contents, "test_iframe", + https_server()->GetURL(kHostB, "/echoheader?Cookie"))); + EXPECT_THAT(ExtractFrameContent(SelectDescendentFrame({0})), + CookieString(UnorderedElementsAre(Key(kSameSiteNoneCookieName)))); +} + +IN_PROC_BROWSER_TEST_F(HttpCookieBrowserTest, SetSameSiteCookies) { + WebContentsImpl* web_contents = + static_cast<WebContentsImpl*>(shell()->web_contents()); + + // Main frame can set all SameSite cookies. + ASSERT_TRUE(NavigateToURL( + web_contents, https_server()->GetURL(kHostA, kSetSameSiteCookiesURL))); + EXPECT_THAT( + GetCanonicalCookies(web_contents->GetBrowserContext(), + https_server()->GetURL(kHostA, "/")), + UnorderedElementsAre(CookieWithName(kSameSiteStrictCookieName), + CookieWithName(kSameSiteLaxCookieName), + CookieWithName(kSameSiteNoneCookieName), + CookieWithName(kSameSiteUnspecifiedCookieName))); + ASSERT_EQ(4U, ClearCookies()); + + // Same-site iframe (A embedded in A) sets all SameSite cookies. + EXPECT_THAT( + ArrangeFramesAndSetCookiesInLeaf("a.test(a.test)", {0}, + kSetSameSiteCookiesURL), + UnorderedElementsAre(CookieWithName(kSameSiteStrictCookieName), + CookieWithName(kSameSiteLaxCookieName), + CookieWithName(kSameSiteNoneCookieName), + CookieWithName(kSameSiteUnspecifiedCookieName))); + ASSERT_EQ(4U, ClearCookies()); + + // Cross-site iframe (B embedded in A) sets only None cookies. + EXPECT_THAT(ArrangeFramesAndSetCookiesInLeaf("a.test(b.test)", {0}, + kSetSameSiteCookiesURL), + UnorderedElementsAre(CookieWithName(kSameSiteNoneCookieName))); + ASSERT_EQ(1U, ClearCookies()); +} + +IN_PROC_BROWSER_TEST_F(HttpCookieBrowserTest, SendSamePartyCookies) { + SetSamePartyCookies(kHostA); + SetSamePartyCookies(kHostD); + + WebContentsImpl* web_contents = + static_cast<WebContentsImpl*>(shell()->web_contents()); + + // No embedded frame. The top-level site has access to its cookies. + ASSERT_TRUE(NavigateToURL( + web_contents, https_server()->GetURL(kHostA, "/echoheader?Cookie"))); + EXPECT_THAT(ExtractFrameContent(web_contents->GetMainFrame()), + CookieString(UnorderedElementsAre( + Key(kSamePartyLaxCookieName), Key(kSamePartyNoneCookieName), + Key(kSamePartyUnspecifiedCookieName)))); + + // Same-site FPS-member iframe (A embedded in A) sends A's SameParty cookies. + EXPECT_THAT(ArrangeFramesAndGetCookiesFromLeaf("a.test(a.test)", {0}), + CookieString(UnorderedElementsAre( + Key(kSamePartyLaxCookieName), Key(kSamePartyNoneCookieName), + Key(kSamePartyUnspecifiedCookieName)))); + + // Cross-site, same-party iframe (B embedded in A) does not send A's SameParty + // cookies (since it's the wrong domain). + EXPECT_EQ(ArrangeFramesAndGetCookiesFromLeaf("a.test(b.test)", {0}), "None"); + + // Cross-site, same-party iframe (A embedded in B) sends A's SameParty + // cookies. + EXPECT_THAT(ArrangeFramesAndGetCookiesFromLeaf("b.test(a.test)", {0}), + CookieString(UnorderedElementsAre( + Key(kSamePartyLaxCookieName), Key(kSamePartyNoneCookieName), + Key(kSamePartyUnspecifiedCookieName)))); + + // Cross-site, same-party nested iframe (A embedded in B embedded in A) sends + // A's SameParty cookies. + EXPECT_THAT( + ArrangeFramesAndGetCookiesFromLeaf("a.test(b.test(a.test))", {0, 0}), + CookieString(UnorderedElementsAre(Key(kSamePartyLaxCookieName), + Key(kSamePartyNoneCookieName), + Key(kSamePartyUnspecifiedCookieName)))); + + // Cross-site, same-party nested iframe (A embedded in B embedded in C + // embedded in A) sends A's SameParty cookies. + EXPECT_THAT(ArrangeFramesAndGetCookiesFromLeaf( + "a.test(c.test(b.test(a.test)))", {0, 0, 0}), + CookieString(UnorderedElementsAre( + Key(kSamePartyLaxCookieName), Key(kSamePartyNoneCookieName), + Key(kSamePartyUnspecifiedCookieName)))); + + // Cross-site, cross-party iframe (D embedded in A) sends only D's + // SameSite=None cookie, since D is not in A's First-Party Set. + EXPECT_THAT( + ArrangeFramesAndGetCookiesFromLeaf("a.test(d.test)", {0}), + CookieString(UnorderedElementsAre(Key(kSamePartyNoneCookieName)))); + + // Cross-site, cross-party iframe (A embedded in D) doesn't send A's SameParty + // cookies. + EXPECT_EQ(ArrangeFramesAndGetCookiesFromLeaf("d.test(a.test)", {0}), "None"); + + // Cross-site, cross-party nested iframe (A embedded in B embedded in D) + // doesn't send A's SameParty cookies. + EXPECT_EQ( + ArrangeFramesAndGetCookiesFromLeaf("d.test(b.test(a.test))", {0, 0}), + "None"); + + // No embedded frame. The top-level site has access to its cookies, regardless + // of whether the site is in an FPS, or whether the cookies are SameParty. + ASSERT_TRUE(NavigateToURL( + web_contents, https_server()->GetURL(kHostD, "/echoheader?Cookie"))); + EXPECT_THAT(ExtractFrameContent(web_contents->GetMainFrame()), + CookieString(UnorderedElementsAre( + Key(kSamePartyLaxCookieName), Key(kSamePartyNoneCookieName), + Key(kSamePartyUnspecifiedCookieName)))); +} + +IN_PROC_BROWSER_TEST_F(HttpCookieBrowserTest, SetSamePartyCookies) { + WebContentsImpl* web_contents = + static_cast<WebContentsImpl*>(shell()->web_contents()); + + // No embedded frame, FPS member. The top-level FPS site can set its cookies. + ASSERT_TRUE(NavigateToURL( + web_contents, https_server()->GetURL(kHostA, kSetSamePartyCookiesURL))); + EXPECT_THAT( + GetCanonicalCookies(web_contents->GetBrowserContext(), + https_server()->GetURL(kHostA, "/")), + UnorderedElementsAre(CookieWithName(kSamePartyLaxCookieName), + CookieWithName(kSamePartyNoneCookieName), + CookieWithName(kSamePartyUnspecifiedCookieName))); + ASSERT_EQ(3U, ClearCookies()); + + // Same-site FPS-member iframe (A embedded in A) sets A's SameParty cookies. + EXPECT_THAT( + ArrangeFramesAndSetCookiesInLeaf("a.test(a.test)", {0}, + kSetSamePartyCookiesURL), + UnorderedElementsAre(CookieWithName(kSamePartyLaxCookieName), + CookieWithName(kSamePartyNoneCookieName), + CookieWithName(kSamePartyUnspecifiedCookieName))); + ASSERT_EQ(3U, ClearCookies()); + + // Cross-site, same-party iframe (A embedded in B) sets A's SameParty + // cookies. + EXPECT_THAT( + ArrangeFramesAndSetCookiesInLeaf("b.test(a.test)", {0}, + kSetSamePartyCookiesURL), + UnorderedElementsAre(CookieWithName(kSamePartyLaxCookieName), + CookieWithName(kSamePartyNoneCookieName), + CookieWithName(kSamePartyUnspecifiedCookieName))); + ASSERT_EQ(3U, ClearCookies()); + + // Cross-site, same-party nested iframe (A embedded in B embedded in A) sets + // A's SameParty cookies. + EXPECT_THAT( + ArrangeFramesAndSetCookiesInLeaf("a.test(b.test(a.test))", {0, 0}, + kSetSamePartyCookiesURL), + UnorderedElementsAre(CookieWithName(kSamePartyLaxCookieName), + CookieWithName(kSamePartyNoneCookieName), + CookieWithName(kSamePartyUnspecifiedCookieName))); + ASSERT_EQ(3U, ClearCookies()); + + // Cross-site, same-party nested iframe (A embedded in B embedded in C + // embedded in A) sets A's SameParty cookies. + EXPECT_THAT( + ArrangeFramesAndSetCookiesInLeaf("a.test(c.test(b.test(a.test)))", + {0, 0, 0}, kSetSamePartyCookiesURL), + UnorderedElementsAre(CookieWithName(kSamePartyLaxCookieName), + CookieWithName(kSamePartyNoneCookieName), + CookieWithName(kSamePartyUnspecifiedCookieName))); + ASSERT_EQ(3U, ClearCookies()); + + // Cross-site, cross-party iframe (D embedded in A) sets D's SameSite=None + // cookie, since it's not an FPS member (and SameParty is ignored). + EXPECT_THAT(ArrangeFramesAndSetCookiesInLeaf("a.test(d.test)", {0}, + kSetSamePartyCookiesURL), + UnorderedElementsAre(CookieWithName(kSamePartyNoneCookieName))); + ASSERT_EQ(1U, ClearCookies()); + + // Cross-site, cross-party iframe (A embedded in D) doesn't set A's SameParty + // cookies, since A is an FPS member and SameParty is not ignored.. + EXPECT_THAT(ArrangeFramesAndSetCookiesInLeaf("d.test(a.test)", {0}, + kSetSamePartyCookiesURL), + IsEmpty()); + ASSERT_EQ(0U, ClearCookies()); + + // Cross-site, cross-party nested iframe (A embedded in B embedded in D) + // doesn't set A's SameParty cookies. + EXPECT_THAT(ArrangeFramesAndSetCookiesInLeaf("d.test(b.test(a.test))", {0, 0}, + kSetSamePartyCookiesURL), + IsEmpty()); + ASSERT_EQ(0U, ClearCookies()); + + // No embedded frame, non-FPS member. The top-level site can set its cookies. + ASSERT_TRUE(NavigateToURL( + web_contents, https_server()->GetURL(kHostD, kSetSamePartyCookiesURL))); + EXPECT_THAT( + GetCanonicalCookies(web_contents->GetBrowserContext(), + https_server()->GetURL(kHostD, "/")), + UnorderedElementsAre(CookieWithName(kSamePartyLaxCookieName), + CookieWithName(kSamePartyNoneCookieName), + CookieWithName(kSamePartyUnspecifiedCookieName))); + ASSERT_EQ(3U, ClearCookies()); +} + +} // namespace +} // namespace content
diff --git a/content/browser/renderer_host/cross_process_frame_connector.cc b/content/browser/renderer_host/cross_process_frame_connector.cc index 047e61a..5e9f2324 100644 --- a/content/browser/renderer_host/cross_process_frame_connector.cc +++ b/content/browser/renderer_host/cross_process_frame_connector.cc
@@ -150,7 +150,10 @@ } void CrossProcessFrameConnector::SynchronizeVisualProperties( - const blink::FrameVisualProperties& visual_properties) { + const blink::FrameVisualProperties& visual_properties, + bool propagate) { + last_received_zoom_level_ = visual_properties.zoom_level; + last_received_local_frame_size_ = visual_properties.local_frame_size; screen_info_ = visual_properties.screen_info; local_surface_id_ = visual_properties.local_surface_id; @@ -176,7 +179,7 @@ visual_properties.compositor_viewport, visual_properties.root_widget_window_segments); - render_widget_host->SynchronizeVisualProperties(); + render_widget_host->UpdateVisualProperties(propagate); } void CrossProcessFrameConnector::UpdateCursor(const WebCursor& cursor) { @@ -320,16 +323,25 @@ return; } - last_received_zoom_level_ = visual_properties.zoom_level; - last_received_local_frame_size_ = visual_properties.local_frame_size; SynchronizeVisualProperties(visual_properties); } void CrossProcessFrameConnector::UpdateViewportIntersection( + const blink::mojom::ViewportIntersectionState& intersection_state, + const base::Optional<blink::FrameVisualProperties>& visual_properties) { + base::AutoReset<bool>(&is_processing_viewport_intersection_, true); + if (visual_properties.has_value()) + SynchronizeVisualProperties(visual_properties.value(), false); + UpdateViewportIntersectionInternal(intersection_state); +} + +void CrossProcessFrameConnector::UpdateViewportIntersectionInternal( const blink::mojom::ViewportIntersectionState& intersection_state) { intersection_state_ = intersection_state; - if (view_) - view_->UpdateViewportIntersection(intersection_state_); + if (view_) { + view_->UpdateViewportIntersection( + intersection_state_, view_->host()->LastComputedVisualProperties()); + } if (IsVisible()) { // Record metrics if a crashed subframe became visible as a result of this
diff --git a/content/browser/renderer_host/cross_process_frame_connector.h b/content/browser/renderer_host/cross_process_frame_connector.h index adeb65a..e60c322 100644 --- a/content/browser/renderer_host/cross_process_frame_connector.h +++ b/content/browser/renderer_host/cross_process_frame_connector.h
@@ -109,9 +109,11 @@ // its corresponding remote frame in the parent frame's renderer. void SendIntrinsicSizingInfoToParent(blink::mojom::IntrinsicSizingInfoPtr); - // Sends new resize parameters to the subframe's renderer. + // Record and apply new visual properties for the subframe. If 'propagate' is + // true, the new properties will be sent to the subframe's renderer process. void SynchronizeVisualProperties( - const blink::FrameVisualProperties& visual_properties); + const blink::FrameVisualProperties& visual_properties, + bool propagate = true); // Return the size of the CompositorFrame to use in the child renderer. const gfx::Size& local_frame_size_in_pixels() const { @@ -283,7 +285,8 @@ bool subtree_throttled, bool display_locked); void UpdateViewportIntersection( - const blink::mojom::ViewportIntersectionState& intersection_state); + const blink::mojom::ViewportIntersectionState& intersection_state, + const base::Optional<blink::FrameVisualProperties>& visual_properties); // These enums back crashed frame histograms - see MaybeLogCrash() and // MaybeLogShownCrash() below. Please do not modify or remove existing enum @@ -331,8 +334,17 @@ use_zoom_for_device_scale_factor_ = use_zoom_for_device_scale_factor; } + // TODO(szager): This is a hack piled on top of a hack; see + // RenderWidgetHostViewChildFrame::WillSendScreenRects. We need a better way + // to initialize renderer process state after a frame migrates to a different + // process due to navigation. + bool IsProcessingViewportIntersection() const { + return is_processing_viewport_intersection_; + } + protected: friend class MockCrossProcessFrameConnector; + friend class SitePerProcessBrowserTestBase; FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewChildFrameZoomForDSFTest, CompositorViewportPixelSize); @@ -350,6 +362,9 @@ // Stability.ChildFrameCrash.Visibility.ShownAfterCrashing* metrics. void MaybeLogShownCrash(ShownAfterCrashingReason reason); + void UpdateViewportIntersectionInternal( + const blink::mojom::ViewportIntersectionState& intersection_state); + // The RenderWidgetHostView for the frame. Initially nullptr. RenderWidgetHostViewChildFrame* view_ = nullptr; @@ -407,6 +422,9 @@ // shown after a crash. This is only used when recording renderer crashes. bool delegate_was_shown_after_crash_ = false; + // This is used to prevent re-entry into UpdateViewportIntersection. + bool is_processing_viewport_intersection_ = false; + // The last pre-transform frame size received from the parent renderer. // |last_received_local_frame_size_| may be in DIP if use zoom for DSF is // off.
diff --git a/content/browser/renderer_host/navigation_controller_impl.cc b/content/browser/renderer_host/navigation_controller_impl.cc index 8b36fd13..2c1ace6 100644 --- a/content/browser/renderer_host/navigation_controller_impl.cc +++ b/content/browser/renderer_host/navigation_controller_impl.cc
@@ -3467,7 +3467,6 @@ std::string(), /* data_url_as_string */ #endif !params.is_renderer_initiated, /* is_browser_initiated */ - network::mojom::IPAddressSpace::kUnknown, GURL() /* web_bundle_physical_url */, GURL() /* base_url_override_for_web_bundle */, ukm::kInvalidSourceId /* document_ukm_source_id */,
diff --git a/content/browser/renderer_host/navigation_controller_impl_browsertest.cc b/content/browser/renderer_host/navigation_controller_impl_browsertest.cc index d9126ec..2d103f3 100644 --- a/content/browser/renderer_host/navigation_controller_impl_browsertest.cc +++ b/content/browser/renderer_host/navigation_controller_impl_browsertest.cc
@@ -1078,8 +1078,15 @@ // interfere with navigations. We switched to a different scheme, so now this is // just a test to make sure we can still navigate once we prune the history // list. +// Test is flaky on Win and debug builds. +#if defined(OS_WIN) || !defined(NDEBUG) +#define MAYBE_DontIgnoreBackAfterNavEntryLimit \ + DISABLED_DontIgnoreBackAfterNavEntryLimit +#else +#define MAYBE_DontIgnoreBackAfterNavEntryLimit DontIgnoreBackAfterNavEntryLimit +#endif IN_PROC_BROWSER_TEST_P(NavigationControllerBrowserTest, - DontIgnoreBackAfterNavEntryLimit) { + MAYBE_DontIgnoreBackAfterNavEntryLimit) { NavigationController& controller = shell()->web_contents()->GetController(); const int kMaxEntryCount =
diff --git a/content/browser/renderer_host/navigation_entry_impl.cc b/content/browser/renderer_host/navigation_entry_impl.cc index dea691c..e9968fb 100644 --- a/content/browser/renderer_host/navigation_entry_impl.cc +++ b/content/browser/renderer_host/navigation_entry_impl.cc
@@ -786,8 +786,7 @@ #if defined(OS_ANDROID) std::string(), #endif - false, network::mojom::IPAddressSpace::kUnknown, - GURL() /* web_bundle_physical_url */, + false, GURL() /* web_bundle_physical_url */, GURL() /* base_url_override_for_web_bundle */, ukm::kInvalidSourceId /* document_ukm_source_id */, frame_policy, std::vector<std::string>() /* force_enabled_origin_trials */,
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc index ff7bf9a..ae1a117 100644 --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc
@@ -866,7 +866,6 @@ /*data_url_as_string=*/std::string(), #endif /*is_browser_initiated=*/false, - network::mojom::IPAddressSpace::kUnknown, /*web_bundle_physical_url=*/GURL(), /*base_url_override_for_web_bundle=*/GURL(), /*document_ukm_source_id=*/ukm::kInvalidSourceId, @@ -984,7 +983,6 @@ std::string() /* data_url_as_string */, #endif false /* is_browser_initiated */, - network::mojom::IPAddressSpace::kUnknown, GURL() /* web_bundle_physical_url */, GURL() /* base_url_override_for_web_bundle */, ukm::kInvalidSourceId /* document_ukm_source_id */, @@ -1357,7 +1355,7 @@ if (IsNavigationStarted()) { GetDelegate()->DidFinishNavigation(this); - ProcessOriginIsolationEndResult(); + ProcessOriginAgentClusterEndResult(); if (IsInMainFrame()) { TRACE_EVENT_NESTABLE_ASYNC_END2( "navigation", "Navigation StartToCommit", @@ -2105,7 +2103,8 @@ return false; } -void NavigationRequest::DetermineOriginIsolationEndResult(bool is_requested) { +void NavigationRequest::DetermineOriginAgentClusterEndResult( + bool is_requested) { DCHECK_EQ(state_, WILL_PROCESS_RESPONSE); auto* policy = ChildProcessSecurityPolicyImpl::GetInstance(); @@ -2116,14 +2115,14 @@ isolation_context, origin, is_requested); if (is_requested) { - origin_isolation_end_result_ = - got_isolated ? OptInOriginIsolationEndResult::kRequestedAndIsolated - : OptInOriginIsolationEndResult::kRequestedButNotIsolated; + origin_agent_cluster_end_result_ = + got_isolated ? OriginAgentClusterEndResult::kRequestedAndOriginKeyed + : OriginAgentClusterEndResult::kRequestedButNotOriginKeyed; } else { - origin_isolation_end_result_ = + origin_agent_cluster_end_result_ = got_isolated - ? OptInOriginIsolationEndResult::kNotRequestedButIsolated - : OptInOriginIsolationEndResult::kNotRequestedAndNotIsolated; + ? OriginAgentClusterEndResult::kNotRequestedButOriginKeyed + : OriginAgentClusterEndResult::kNotRequestedAndNotOriginKeyed; } // This needs to be computed separately from origin.opaque() because, per @@ -2135,50 +2134,52 @@ // The origin_agent_cluster navigation commit parameter communicates to the // renderer about origin-keying, so it should be true for opaque origin - // cases (e.g., for data: URLs). origin_isolation_end_result_ shouldn't be + // cases (e.g., for data: URLs). origin_agent_cluster_end_result_ shouldn't be // modified since it's used for warnings and use counters, i.e. things that // don't apply to this sort of "automatic" origin-keying. commit_params_->origin_agent_cluster = is_opaque_origin_because_sandbox || origin.opaque() || - origin_isolation_end_result_ == - OptInOriginIsolationEndResult::kRequestedAndIsolated || - origin_isolation_end_result_ == - OptInOriginIsolationEndResult::kNotRequestedButIsolated; + origin_agent_cluster_end_result_ == + OriginAgentClusterEndResult::kRequestedAndOriginKeyed || + origin_agent_cluster_end_result_ == + OriginAgentClusterEndResult::kNotRequestedButOriginKeyed; } -void NavigationRequest::ProcessOriginIsolationEndResult() { +void NavigationRequest::ProcessOriginAgentClusterEndResult() { if (!HasCommitted() || IsErrorPage() || IsSameDocument()) return; - if (origin_isolation_end_result_ == - OptInOriginIsolationEndResult::kRequestedAndIsolated || - origin_isolation_end_result_ == - OptInOriginIsolationEndResult::kRequestedButNotIsolated) + if (origin_agent_cluster_end_result_ == + OriginAgentClusterEndResult::kRequestedAndOriginKeyed || + origin_agent_cluster_end_result_ == + OriginAgentClusterEndResult::kRequestedButNotOriginKeyed) GetContentClient()->browser()->LogWebFeatureForCurrentPage( render_frame_host_, blink::mojom::WebFeature::kOriginIsolationHeader); const url::Origin origin = url::Origin::Create(GetURL()); - if (origin_isolation_end_result_ == - OptInOriginIsolationEndResult::kRequestedButNotIsolated) + if (origin_agent_cluster_end_result_ == + OriginAgentClusterEndResult::kRequestedButNotOriginKeyed) render_frame_host_->AddMessageToConsole( blink::mojom::ConsoleMessageLevel::kWarning, base::StringPrintf( - "The page requested origin isolation, but could not be isolated " - "since the origin '%s' had previously been seen with no " - "isolation. Update your headers to uniformly isolate all pages " - "on the origin.", + "The page requested an origin-keyed agent cluster using the " + "Origin-Agent-Cluster header, but could not be origin-keyed since " + "the origin '%s' had previously been placed in a site-keyed agent " + "cluster. Update your headers to uniformly request origin-keying " + "for all pages on the origin.", origin.Serialize().c_str())); - if (origin_isolation_end_result_ == - OptInOriginIsolationEndResult::kNotRequestedButIsolated) + if (origin_agent_cluster_end_result_ == + OriginAgentClusterEndResult::kNotRequestedButOriginKeyed) render_frame_host_->AddMessageToConsole( blink::mojom::ConsoleMessageLevel::kWarning, - base::StringPrintf("The page did not request origin isolation, but " - "was isolated anyway because the origin '%s' had " - "previously been isolated. Update your headers to " - "uniformly isolate all pages on the origin.", - origin.Serialize().c_str())); + base::StringPrintf( + "The page did not request an origin-keyed agent cluster, but was " + "put in one anyway because the origin '%s' had previously been " + "placed in an origin-keyed agent cluster. Update your headers to " + "uniformly request origin-keying for all pages on the origin.", + origin.Serialize().c_str())); } UrlInfo NavigationRequest::GetUrlInfo() { @@ -2431,7 +2432,7 @@ DCHECK(!response_should_be_rendered_); if (render_frame_host_) - DetermineOriginIsolationEndResult(IsOptInIsolationRequested()); + DetermineOriginAgentClusterEndResult(IsOptInIsolationRequested()); cross_origin_embedder_policy_ = cross_origin_embedder_policy; @@ -4446,8 +4447,6 @@ if (!IsSameDocument() && !IsServedFromBackForwardCache()) { UpdateClientSecurityStateInternals(); - commit_params_->ip_address_space = - policy_container_host_->ip_address_space(); } if (appcache_handle_) {
diff --git a/content/browser/renderer_host/navigation_request.h b/content/browser/renderer_host/navigation_request.h index 63cc56b..f59ac70 100644 --- a/content/browser/renderer_host/navigation_request.h +++ b/content/browser/renderer_host/navigation_request.h
@@ -245,17 +245,17 @@ // origin-isolation. bool IsOptInIsolationRequested(); - // The origin isolation end result is determined early in the lifecycle of a - // NavigationRequest, but used late. In particular, we want to trigger use + // The Origin-Agent-Cluster end result is determined early in the lifecycle of + // a NavigationRequest, but used late. In particular, we want to trigger use // counters and console warnings once navigation has committed. - enum class OptInOriginIsolationEndResult { - kNotRequestedAndNotIsolated, - kNotRequestedButIsolated, - kRequestedButNotIsolated, - kRequestedAndIsolated + enum class OriginAgentClusterEndResult { + kNotRequestedAndNotOriginKeyed, + kNotRequestedButOriginKeyed, + kRequestedButNotOriginKeyed, + kRequestedAndOriginKeyed }; - void DetermineOriginIsolationEndResult(bool is_requested); - void ProcessOriginIsolationEndResult(); + void DetermineOriginAgentClusterEndResult(bool is_requested); + void ProcessOriginAgentClusterEndResult(); // NavigationHandle implementation: int64_t GetNavigationId() override; @@ -823,9 +823,8 @@ int initiator_process_id, bool was_opener_suppressed); - // Checks if the response requests an isolated origin (using either origin - // policy or the Origin-Isolation header), and if so opts in the origin to be - // isolated. + // Checks if the response requests an isolated origin via the + // Origin-Agent-Cluster header, and if so opts in the origin to be isolated. void CheckForIsolationOptIn(const GURL& url); // NavigationURLLoaderDelegate implementation. @@ -1549,8 +1548,8 @@ // The sandbox flags of the document to be loaded. base::Optional<network::mojom::WebSandboxFlags> sandbox_flags_to_commit_; - OptInOriginIsolationEndResult origin_isolation_end_result_ = - OptInOriginIsolationEndResult::kNotRequestedAndNotIsolated; + OriginAgentClusterEndResult origin_agent_cluster_end_result_ = + OriginAgentClusterEndResult::kNotRequestedAndNotOriginKeyed; net::IsolationInfo isolation_info_for_subresources_;
diff --git a/content/browser/renderer_host/policy_container_host.cc b/content/browser/renderer_host/policy_container_host.cc index 0dbba08b..c0bba85d 100644 --- a/content/browser/renderer_host/policy_container_host.cc +++ b/content/browser/renderer_host/policy_container_host.cc
@@ -29,7 +29,8 @@ policy_container_host_receiver_.reset(); return blink::mojom::PolicyContainer::New( blink::mojom::PolicyContainerDocumentPolicies::New( - document_policies_.referrer_policy), + document_policies_.referrer_policy, + document_policies_.ip_address_space), policy_container_host_receiver_.BindNewEndpointAndPassRemote()); }
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc index 4214b353a..ba76dc4 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -266,6 +266,10 @@ #include "content/browser/renderer_host/popup_menu_helper_mac.h" #endif +#if BUILDFLAG(ENABLE_PLUGINS) +#include "content/browser/plugin_service_impl.h" +#endif + namespace content { #if defined(AX_FAIL_FAST_BUILD) @@ -10399,6 +10403,19 @@ {plugin_child_id, path}); } +void RenderFrameHostImpl::GetPluginInfo(const GURL& url, + const url::Origin& main_frame_origin, + const std::string& mime_type, + GetPluginInfoCallback callback) { + bool allow_wildcard = true; + WebPluginInfo info; + std::string actual_mime_type; + bool found = PluginServiceImpl::GetInstance()->GetPluginInfo( + GetProcess()->GetID(), routing_id_, url, main_frame_origin, mime_type, + allow_wildcard, nullptr, &info, &actual_mime_type); + std::move(callback).Run(found, info, actual_mime_type); +} + void RenderFrameHostImpl::PluginHung(bool is_hung) { const HungDetectorContext& context = pepper_hung_detectors_.current_context(); delegate()->OnPepperPluginHung(this, context.plugin_child_id,
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h index cbdd042..f282f19 100644 --- a/content/browser/renderer_host/render_frame_host_impl.h +++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -2186,6 +2186,10 @@ mojo::PendingReceiver<mojom::PepperHungDetectorHost> hung_host, int32_t plugin_child_id, const base::FilePath& path) override; + void GetPluginInfo(const GURL& url, + const url::Origin& main_frame_origin, + const std::string& mime_type, + GetPluginInfoCallback callback) override; // mojom::PepperHungDetectorHost overrides: void PluginHung(bool is_hung) override;
diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc index 8c5937f1..a75a543 100644 --- a/content/browser/renderer_host/render_frame_host_manager.cc +++ b/content/browser/renderer_host/render_frame_host_manager.cc
@@ -678,9 +678,10 @@ const { if (render_frame_host_->HasPendingCommitForCrossDocumentNavigation()) return true; - // All speculative RenderFrameHosts load a fresh document. - if (speculative_render_frame_host_) - return speculative_render_frame_host_->HasPendingCommitNavigation(); + if (speculative_render_frame_host_) { + return speculative_render_frame_host_ + ->HasPendingCommitForCrossDocumentNavigation(); + } return false; }
diff --git a/content/browser/renderer_host/render_frame_message_filter.cc b/content/browser/renderer_host/render_frame_message_filter.cc deleted file mode 100644 index 17247f44..0000000 --- a/content/browser/renderer_host/render_frame_message_filter.cc +++ /dev/null
@@ -1,122 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/browser/renderer_host/render_frame_message_filter.h" - -#include <memory> -#include <string> -#include <utility> -#include <vector> - -#include "base/bind.h" -#include "build/build_config.h" -#include "content/browser/bad_message.h" -#include "content/browser/child_process_security_policy_impl.h" -#include "content/browser/plugin_service_impl.h" -#include "content/browser/ppapi_plugin_process_host.h" -#include "content/common/frame_messages.h" -#include "content/public/browser/browser_context.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/content_browser_client.h" -#include "content/public/browser/plugin_service_filter.h" -#include "content/public/browser/resource_context.h" -#include "content/public/browser/storage_partition.h" -#include "content/public/common/content_client.h" -#include "content/public/common/content_constants.h" -#include "url/gurl.h" -#include "url/origin.h" - -#if !BUILDFLAG(ENABLE_PLUGINS) -#error "RenderFrameMessageFilter is only used for plugin builds." -#endif - -namespace content { - -namespace { - -// Common functionality for converting a sync renderer message to a callback -// function in the browser. Derive from this, create it on the heap when -// issuing your callback. When done, write your reply parameters into -// reply_msg(), and then call SendReplyAndDeleteThis(). -class RenderMessageCompletionCallback { - public: - RenderMessageCompletionCallback(RenderFrameMessageFilter* filter, - IPC::Message* reply_msg) - : filter_(filter), reply_msg_(reply_msg) {} - - virtual ~RenderMessageCompletionCallback() { - if (reply_msg_) { - // If the owner of this class failed to call SendReplyAndDeleteThis(), - // send an error reply to prevent the renderer from being hung. - reply_msg_->set_reply_error(); - filter_->Send(reply_msg_); - } - } - - RenderFrameMessageFilter* filter() { return filter_.get(); } - IPC::Message* reply_msg() { return reply_msg_; } - - void SendReplyAndDeleteThis() { - filter_->Send(reply_msg_); - reply_msg_ = nullptr; - delete this; - } - - private: - scoped_refptr<RenderFrameMessageFilter> filter_; - IPC::Message* reply_msg_; -}; - -} // namespace - -RenderFrameMessageFilter::RenderFrameMessageFilter( - int render_process_id, - PluginServiceImpl* plugin_service, - BrowserContext* browser_context, - StoragePartition* storage_partition) - : BrowserMessageFilter(FrameMsgStart), - plugin_service_(plugin_service), - render_process_id_(render_process_id) {} - -RenderFrameMessageFilter::~RenderFrameMessageFilter() { - // This function should be called on the IO thread. - DCHECK_CURRENTLY_ON(BrowserThread::IO); -} - -bool RenderFrameMessageFilter::OnMessageReceived(const IPC::Message& message) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(RenderFrameMessageFilter, message) - IPC_MESSAGE_HANDLER(FrameHostMsg_GetPluginInfo, OnGetPluginInfo) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - - return handled; -} - -void RenderFrameMessageFilter::OnDestruct() const { - BrowserThread::DeleteOnIOThread::Destruct(this); -} - -void RenderFrameMessageFilter::OverrideThreadForMessage( - const IPC::Message& message, - BrowserThread::ID* thread) { - if (message.type() == FrameHostMsg_GetPluginInfo::ID) - *thread = BrowserThread::UI; -} - -void RenderFrameMessageFilter::OnGetPluginInfo( - int render_frame_id, - const GURL& url, - const url::Origin& main_frame_origin, - const std::string& mime_type, - bool* found, - WebPluginInfo* info, - std::string* actual_mime_type) { - bool allow_wildcard = true; - *found = plugin_service_->GetPluginInfo( - render_process_id_, render_frame_id, url, main_frame_origin, mime_type, - allow_wildcard, nullptr, info, actual_mime_type); -} - -} // namespace content
diff --git a/content/browser/renderer_host/render_frame_message_filter.h b/content/browser/renderer_host/render_frame_message_filter.h deleted file mode 100644 index 74c9535..0000000 --- a/content/browser/renderer_host/render_frame_message_filter.h +++ /dev/null
@@ -1,80 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_MESSAGE_FILTER_H_ -#define CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_MESSAGE_FILTER_H_ - -#include <stdint.h> - -#include <set> -#include <string> - -#include "base/optional.h" -#include "content/common/frame_replication_state.h" -#include "content/common/pepper_renderer_instance_data.h" -#include "content/public/browser/browser_associated_interface.h" -#include "content/public/browser/browser_message_filter.h" -#include "ppapi/buildflags/buildflags.h" -#include "services/network/public/mojom/network_service.mojom.h" -#include "third_party/blink/public/mojom/blob/blob_url_store.mojom.h" -#include "third_party/blink/public/mojom/frame/tree_scope_type.mojom.h" -#include "url/origin.h" - -#if !BUILDFLAG(ENABLE_PLUGINS) -#error "RenderFrameMessageFilter is only used for plugin builds." -#endif - -class GURL; - -namespace url { -class Origin; -} - -namespace content { -class BrowserContext; -class PluginServiceImpl; -class StoragePartition; -struct WebPluginInfo; - -// RenderFrameMessageFilter intercepts FrameHost messages on the IO thread -// that require low-latency processing. The canonical example of this is -// child-frame creation which is a sync IPC that provides the renderer -// with the routing id for a newly created RenderFrame. -// -// This object is created on the UI thread and used on the IO thread. -class CONTENT_EXPORT RenderFrameMessageFilter : public BrowserMessageFilter { - public: - RenderFrameMessageFilter(int render_process_id, - PluginServiceImpl* plugin_service, - BrowserContext* browser_context, - StoragePartition* storage_partition); - - // BrowserMessageFilter methods: - bool OnMessageReceived(const IPC::Message& message) override; - void OnDestruct() const override; - void OverrideThreadForMessage(const IPC::Message& message, - BrowserThread::ID* thread) override; - - private: - friend class BrowserThread; - friend class base::DeleteHelper<RenderFrameMessageFilter>; - - ~RenderFrameMessageFilter() override; - - void OnGetPluginInfo(int render_frame_id, - const GURL& url, - const url::Origin& main_frame_origin, - const std::string& mime_type, - bool* found, - WebPluginInfo* info, - std::string* actual_mime_type); - - PluginServiceImpl* plugin_service_; - - const int render_process_id_; -}; - -} // namespace content - -#endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_MESSAGE_FILTER_H_
diff --git a/content/browser/renderer_host/render_frame_proxy_host.cc b/content/browser/renderer_host/render_frame_proxy_host.cc index 24cc67b..0ce21b7 100644 --- a/content/browser/renderer_host/render_frame_proxy_host.cc +++ b/content/browser/renderer_host/render_frame_proxy_host.cc
@@ -745,9 +745,10 @@ } void RenderFrameProxyHost::UpdateViewportIntersection( - blink::mojom::ViewportIntersectionStatePtr intersection_state) { + blink::mojom::ViewportIntersectionStatePtr intersection_state, + const base::Optional<blink::FrameVisualProperties>& visual_properties) { cross_process_frame_connector_->UpdateViewportIntersection( - *intersection_state); + *intersection_state, visual_properties); } void RenderFrameProxyHost::DidChangeOpener(
diff --git a/content/browser/renderer_host/render_frame_proxy_host.h b/content/browser/renderer_host/render_frame_proxy_host.h index eab125ad..844ddb7 100644 --- a/content/browser/renderer_host/render_frame_proxy_host.h +++ b/content/browser/renderer_host/render_frame_proxy_host.h
@@ -184,7 +184,9 @@ int document_cookie) override; void Detach() override; void UpdateViewportIntersection( - blink::mojom::ViewportIntersectionStatePtr intersection_state) override; + blink::mojom::ViewportIntersectionStatePtr intersection_state, + const base::Optional<blink::FrameVisualProperties>& visual_properties) + override; void SynchronizeVisualProperties( const blink::FrameVisualProperties& frame_visual_properties) override;
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index f478602..d77cc6c 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -263,7 +263,6 @@ #include "content/browser/plugin_service_impl.h" #include "content/browser/renderer_host/pepper/pepper_message_filter.h" #include "content/browser/renderer_host/pepper/pepper_renderer_connection.h" -#include "content/browser/renderer_host/render_frame_message_filter.h" #include "ppapi/shared_impl/ppapi_switches.h" // nogncheck #endif @@ -1926,10 +1925,6 @@ AddFilter(render_message_filter.get()); #if BUILDFLAG(ENABLE_PLUGINS) - AddFilter(new RenderFrameMessageFilter( - GetID(), PluginServiceImpl::GetInstance(), GetBrowserContext(), - storage_partition_impl_)); - AddFilter(new PepperRendererConnection( GetID(), PluginServiceImpl::GetInstance(), GetBrowserContext(), storage_partition_impl_));
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc index e23394a..92d88b6 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -1062,8 +1062,12 @@ return visual_properties; } +bool RenderWidgetHostImpl::UpdateVisualProperties(bool propagate) { + return SynchronizeVisualProperties(false, propagate); +} + bool RenderWidgetHostImpl::SynchronizeVisualProperties() { - return SynchronizeVisualProperties(false); + return SynchronizeVisualProperties(false, true); } bool RenderWidgetHostImpl::SynchronizeVisualPropertiesIgnoringPendingAck() { @@ -1072,7 +1076,8 @@ } bool RenderWidgetHostImpl::SynchronizeVisualProperties( - bool scroll_focused_node_into_view) { + bool scroll_focused_node_into_view, + bool propagate) { // If the RenderViewHost is inactive, then there is no RenderWidget that can // receive visual properties yet, even though we are setting them on the // browser side. Wait until there is a local main frame with a RenderWidget @@ -1125,7 +1130,8 @@ visual_properties->scroll_focused_node_into_view = scroll_focused_node_into_view; - blink_widget_->UpdateVisualProperties(*visual_properties); + if (propagate) + blink_widget_->UpdateVisualProperties(*visual_properties); bool width_changed = !old_visual_properties_ || old_visual_properties_->new_size.width() != @@ -1772,12 +1778,10 @@ void RenderWidgetHostImpl::AddObserver(RenderWidgetHostObserver* observer) { observers_.AddObserver(observer); - observers_size_for_debug_++; } void RenderWidgetHostImpl::RemoveObserver(RenderWidgetHostObserver* observer) { observers_.RemoveObserver(observer); - observers_size_for_debug_--; } void RenderWidgetHostImpl::GetScreenInfo(blink::ScreenInfo* result) { @@ -2230,28 +2234,11 @@ } void RenderWidgetHostImpl::Destroy(bool also_delete) { - // TODO(https://crbug.com/1153966): Turns this back into a DCHECK once the bug - // is fixed. - CHECK(!destroyed_); + DCHECK(!destroyed_); destroyed_ = true; - // TODO(https://crbug.com/1153966): This is instrumentation about a bug - // happening while iterating on the |observers_|. Remove this when the bug - // will be fixed. - base::WeakPtr<RenderWidgetHostImpl> weak_ptr = GetWeakPtr(); - int observer_list_iteration_before_call = 0; - int observer_list_iteration_after_call = 0; - int observer_list_size = observers_size_for_debug_; - base::debug::Alias(&observer_list_iteration_before_call); - base::debug::Alias(&observer_list_iteration_after_call); - base::debug::Alias(&observer_list_size); - - for (auto& observer : observers_) { - observer_list_iteration_before_call++; + for (auto& observer : observers_) observer.RenderWidgetHostDestroyed(this); - observer_list_iteration_after_call++; - CHECK(weak_ptr); - } NotificationService::current()->Notify( NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, Source<RenderWidgetHost>(this), @@ -2958,7 +2945,7 @@ } base::Optional<blink::VisualProperties> -RenderWidgetHostImpl::GetLastVisualPropertiesSentToRendererForTesting() { +RenderWidgetHostImpl::LastComputedVisualProperties() const { if (!old_visual_properties_) return base::nullopt; return *old_visual_properties_;
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h index 3dd95dc..42b1a91 100644 --- a/content/browser/renderer_host/render_widget_host_impl.h +++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -307,6 +307,10 @@ void SetPopupBounds(const gfx::Rect& bounds, SetPopupBoundsCallback callback) override; + // Update the stored set of visual properties for the renderer. If 'propagate' + // is true, the new properties will be sent to the renderer process. + bool UpdateVisualProperties(bool propagate); + // Notification that the screen info has changed. void NotifyScreenInfoChanged(); @@ -665,7 +669,8 @@ // Pushes updated visual properties to the renderer as well as whether the // focused node should be scrolled into view. - bool SynchronizeVisualProperties(bool scroll_focused_node_into_view); + bool SynchronizeVisualProperties(bool scroll_focused_node_into_view, + bool propagate = true); // Similar to SynchronizeVisualProperties(), but performed even if // |visual_properties_ack_pending_| is set. Used to guarantee that the @@ -823,6 +828,8 @@ base::Optional<blink::VisualProperties> GetLastVisualPropertiesSentToRendererForTesting(); + base::Optional<blink::VisualProperties> LastComputedVisualProperties() const; + protected: // |routing_id| must not be MSG_ROUTING_NONE. // If this object outlives |delegate|, DetachDelegate() must be called when @@ -1226,9 +1233,6 @@ // The observers watching us. base::ObserverList<RenderWidgetHostObserver> observers_; - // TODO(https://crbug.com/1153966): Remove this after closing this bug. - int observers_size_for_debug_ = 0; - // This is true if the renderer is currently unresponsive. bool is_unresponsive_ = false;
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.cc b/content/browser/renderer_host/render_widget_host_view_child_frame.cc index ce37e22..66077de 100644 --- a/content/browser/renderer_host/render_widget_host_view_child_frame.cc +++ b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
@@ -429,7 +429,8 @@ } void RenderWidgetHostViewChildFrame::UpdateViewportIntersection( - const blink::mojom::ViewportIntersectionState& intersection_state) { + const blink::mojom::ViewportIntersectionState& intersection_state, + const base::Optional<blink::VisualProperties>& visual_properties) { if (host()) { host()->SetIntersectsViewport( !intersection_state.viewport_intersection.IsEmpty()); @@ -437,7 +438,7 @@ // Do not send viewport intersection to main frames. if (!host()->owner_delegate()) { host()->GetAssociatedFrameWidget()->SetViewportIntersection( - intersection_state.Clone()); + intersection_state.Clone(), visual_properties); } } } @@ -739,7 +740,10 @@ // spammy way to do this, but triggering on SendScreenRects() is reasonable // until somebody figures that out. RWHVCF::Init() is too early. if (frame_connector_) { - UpdateViewportIntersection(frame_connector_->intersection_state()); + if (!frame_connector_->IsProcessingViewportIntersection()) { + UpdateViewportIntersection(frame_connector_->intersection_state(), + base::nullopt); + } SetIsInert(); UpdateInheritedEffectiveTouchAction(); UpdateRenderThrottlingStatus();
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.h b/content/browser/renderer_host/render_widget_host_view_child_frame.h index 9d782bb..14626ec 100644 --- a/content/browser/renderer_host/render_widget_host_view_child_frame.h +++ b/content/browser/renderer_host/render_widget_host_view_child_frame.h
@@ -27,6 +27,7 @@ #include "content/common/content_export.h" #include "content/public/browser/touch_selection_controller_client_manager.h" #include "services/viz/public/mojom/compositing/compositor_frame_sink.mojom.h" +#include "third_party/blink/public/common/widget/visual_properties.h" #include "third_party/blink/public/mojom/frame/intrinsic_sizing_info.mojom-forward.h" #include "third_party/blink/public/mojom/frame/viewport_intersection_state.mojom-forward.h" #include "third_party/blink/public/mojom/input/input_event_result.mojom-shared.h" @@ -181,7 +182,8 @@ void UnregisterFrameSinkId(); void UpdateViewportIntersection( - const blink::mojom::ViewportIntersectionState& intersection_state); + const blink::mojom::ViewportIntersectionState& intersection_state, + const base::Optional<blink::VisualProperties>& visual_properties); // TODO(sunxd): Rename SetIsInert to UpdateIsInert. void SetIsInert();
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame_browsertest.cc b/content/browser/renderer_host/render_widget_host_view_child_frame_browsertest.cc index 16b1b07..9b17e62 100644 --- a/content/browser/renderer_host/render_widget_host_view_child_frame_browsertest.cc +++ b/content/browser/renderer_host/render_widget_host_view_child_frame_browsertest.cc
@@ -233,7 +233,7 @@ // Wait to see the size sent to the child RenderWidget. while (true) { base::Optional<blink::VisualProperties> properties = - child_rwh->GetLastVisualPropertiesSentToRendererForTesting(); + child_rwh->LastComputedVisualProperties(); if (properties && properties->visible_viewport_size == initial_size) break; base::RunLoop().RunUntilIdle(); @@ -250,7 +250,7 @@ // Wait to see the size sent to the child RenderWidget. while (true) { base::Optional<blink::VisualProperties> properties = - nested_child_rwh->GetLastVisualPropertiesSentToRendererForTesting(); + nested_child_rwh->LastComputedVisualProperties(); if (properties && properties->visible_viewport_size == nested_initial_size) break; @@ -279,14 +279,14 @@ // Wait to see both RenderWidgets receive the message. while (true) { base::Optional<blink::VisualProperties> properties = - root_rwh->GetLastVisualPropertiesSentToRendererForTesting(); + root_rwh->LastComputedVisualProperties(); if (properties && properties->visible_viewport_size == resize_to) break; base::RunLoop().RunUntilIdle(); } while (true) { base::Optional<blink::VisualProperties> properties = - child_rwh->GetLastVisualPropertiesSentToRendererForTesting(); + child_rwh->LastComputedVisualProperties(); if (properties && properties->visible_viewport_size == resize_to) break; base::RunLoop().RunUntilIdle(); @@ -310,14 +310,14 @@ // Wait to see both RenderWidgets receive the message. while (true) { base::Optional<blink::VisualProperties> properties = - nested_root_rwh->GetLastVisualPropertiesSentToRendererForTesting(); + nested_root_rwh->LastComputedVisualProperties(); if (properties && properties->visible_viewport_size == resize_to) break; base::RunLoop().RunUntilIdle(); } while (true) { base::Optional<blink::VisualProperties> properties = - nested_child_rwh->GetLastVisualPropertiesSentToRendererForTesting(); + nested_child_rwh->LastComputedVisualProperties(); if (properties && properties->visible_viewport_size == resize_to) break; base::RunLoop().RunUntilIdle(); @@ -350,14 +350,14 @@ // waterfall to pass the new |visible_viewport_size| down. while (true) { base::Optional<blink::VisualProperties> properties = - root_rwh->GetLastVisualPropertiesSentToRendererForTesting(); + root_rwh->LastComputedVisualProperties(); if (properties && properties->visible_viewport_size == auto_resize_to) break; base::RunLoop().RunUntilIdle(); } while (true) { base::Optional<blink::VisualProperties> properties = - child_rwh->GetLastVisualPropertiesSentToRendererForTesting(); + child_rwh->LastComputedVisualProperties(); if (properties && properties->visible_viewport_size == auto_resize_to) break; base::RunLoop().RunUntilIdle(); @@ -556,7 +556,7 @@ base::Optional<blink::VisualProperties> properties = oopchild->current_frame_host() ->GetRenderWidgetHost() - ->GetLastVisualPropertiesSentToRendererForTesting(); + ->LastComputedVisualProperties(); EXPECT_TRUE(properties); EXPECT_TRUE(properties->local_surface_id); viz::LocalSurfaceId oopchild_initial_lsid = @@ -564,7 +564,7 @@ properties = oopdescendant->current_frame_host() ->GetRenderWidgetHost() - ->GetLastVisualPropertiesSentToRendererForTesting(); + ->LastComputedVisualProperties(); EXPECT_TRUE(properties); EXPECT_TRUE(properties->local_surface_id); viz::LocalSurfaceId oopdescendant_initial_lsid = @@ -583,7 +583,7 @@ base::Optional<blink::VisualProperties> properties = oopchild->current_frame_host() ->GetRenderWidgetHost() - ->GetLastVisualPropertiesSentToRendererForTesting(); + ->LastComputedVisualProperties(); if (properties && properties->local_surface_id && oopchild_initial_lsid < properties->local_surface_id) { EXPECT_EQ(properties->root_widget_window_segments, expected_segments); @@ -595,7 +595,7 @@ base::Optional<blink::VisualProperties> properties = oopdescendant->current_frame_host() ->GetRenderWidgetHost() - ->GetLastVisualPropertiesSentToRendererForTesting(); + ->LastComputedVisualProperties(); if (properties && properties->local_surface_id && oopdescendant_initial_lsid < properties->local_surface_id) { EXPECT_EQ(properties->root_widget_window_segments, expected_segments); @@ -617,7 +617,7 @@ base::Optional<blink::VisualProperties> properties = oopdescendant->current_frame_host() ->GetRenderWidgetHost() - ->GetLastVisualPropertiesSentToRendererForTesting(); + ->LastComputedVisualProperties(); // This check is needed, since we'll get an IPC originating from // RenderWidgetHostImpl immediately after the frame is added with the // incorrect value (the segments are cascaded from the parent renderer
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc index 02b08703..6789097 100644 --- a/content/browser/service_worker/service_worker_browsertest.cc +++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -446,7 +446,7 @@ return data_saver_enabled_; } - void OverrideWebkitPrefs(RenderViewHost* render_view_host, + void OverrideWebkitPrefs(WebContents* web_contents, blink::web_pref::WebPreferences* prefs) override { prefs->data_saver_enabled = data_saver_enabled_; }
diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc index ac4ace3..6895fd5 100644 --- a/content/browser/service_worker/service_worker_context_wrapper.cc +++ b/content/browser/service_worker/service_worker_context_wrapper.cc
@@ -249,7 +249,8 @@ browser_context); if (quota_manager_proxy) { - quota_manager_proxy->RegisterClient( + // TODO(crbug.com/1163048): Use mojo and switch to RegisterClient(). + quota_manager_proxy->RegisterLegacyClient( base::MakeRefCounted<ServiceWorkerQuotaClient>(this), storage::QuotaClientType::kServiceWorker, {blink::mojom::StorageType::kTemporary});
diff --git a/content/browser/service_worker/service_worker_version_browsertest.cc b/content/browser/service_worker/service_worker_version_browsertest.cc index 2fc43ee..89f152bd 100644 --- a/content/browser/service_worker/service_worker_version_browsertest.cc +++ b/content/browser/service_worker/service_worker_version_browsertest.cc
@@ -742,7 +742,7 @@ return data_saver_enabled_; } - void OverrideWebkitPrefs(RenderViewHost* render_view_host, + void OverrideWebkitPrefs(WebContents* web_contents, blink::web_pref::WebPreferences* prefs) override { prefs->data_saver_enabled = data_saver_enabled_; }
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc index fe24c5ce..159fffb 100644 --- a/content/browser/site_per_process_browsertest.cc +++ b/content/browser/site_per_process_browsertest.cc
@@ -666,7 +666,9 @@ } void UpdateViewportIntersection( - blink::mojom::ViewportIntersectionStatePtr intersection_state) override { + blink::mojom::ViewportIntersectionStatePtr intersection_state, + const base::Optional<blink::FrameVisualProperties>& visual_properties) + override { intersection_state_ = std::move(intersection_state); msg_received_ = true; if (run_loop_) @@ -733,6 +735,15 @@ ASSERT_TRUE(embedded_test_server()->Start()); } +void SitePerProcessBrowserTestBase::ForceUpdateViewportIntersection( + FrameTreeNode* frame_tree_node, + const blink::mojom::ViewportIntersectionState& intersection_state) { + frame_tree_node->render_manager() + ->GetProxyToParent() + ->cross_process_frame_connector() + ->UpdateViewportIntersectionInternal(intersection_state); +} + // // SitePerProcessBrowserTest // @@ -13272,7 +13283,7 @@ while (true) { auto* rwh_b = child_b->current_frame_host()->GetRenderWidgetHost(); base::Optional<blink::VisualProperties> properties = - rwh_b->GetLastVisualPropertiesSentToRendererForTesting(); + rwh_b->LastComputedVisualProperties(); if (properties && cc::MathUtil::IsFloatNearlyTheSame( properties->compositing_scale_factor, 0.5f)) { break; @@ -13288,7 +13299,7 @@ while (true) { auto* rwh_c = child_c->current_frame_host()->GetRenderWidgetHost(); base::Optional<blink::VisualProperties> properties = - rwh_c->GetLastVisualPropertiesSentToRendererForTesting(); + rwh_c->LastComputedVisualProperties(); if (properties && cc::MathUtil::IsFloatNearlyTheSame( properties->compositing_scale_factor, 0.5f)) { break; @@ -13303,7 +13314,7 @@ while (true) { auto* rwh_d = child_d->current_frame_host()->GetRenderWidgetHost(); base::Optional<blink::VisualProperties> properties = - rwh_d->GetLastVisualPropertiesSentToRendererForTesting(); + rwh_d->LastComputedVisualProperties(); if (properties && cc::MathUtil::IsFloatNearlyTheSame( properties->compositing_scale_factor, 0.25f)) { break; @@ -13343,7 +13354,7 @@ while (true) { auto* rwh_b = child_b->current_frame_host()->GetRenderWidgetHost(); base::Optional<blink::VisualProperties> properties = - rwh_b->GetLastVisualPropertiesSentToRendererForTesting(); + rwh_b->LastComputedVisualProperties(); if (properties && cc::MathUtil::IsFloatNearlyTheSame( properties->compositing_scale_factor, 0.5f)) { break; @@ -13362,7 +13373,7 @@ while (true) { auto* rwh_b = child_b->current_frame_host()->GetRenderWidgetHost(); base::Optional<blink::VisualProperties> properties = - rwh_b->GetLastVisualPropertiesSentToRendererForTesting(); + rwh_b->LastComputedVisualProperties(); if (properties && !cc::MathUtil::IsFloatNearlyTheSame( properties->compositing_scale_factor, 0.5f)) { EXPECT_GT(properties->compositing_scale_factor, 0.0f); @@ -13860,10 +13871,10 @@ public: EnableForceZoomContentClient() = default; - void OverrideWebkitPrefs(RenderViewHost* render_view_host, + void OverrideWebkitPrefs(WebContents* web_contents, blink::web_pref::WebPreferences* prefs) override { DCHECK(old_client_); - old_client_->OverrideWebkitPrefs(render_view_host, prefs); + old_client_->OverrideWebkitPrefs(web_contents, prefs); prefs->force_enable_zoom = true; } @@ -15379,7 +15390,7 @@ DoubleTapZoomContentBrowserClient() = default; void OverrideWebkitPrefs( - content::RenderViewHost* rvh, + content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) override { web_prefs->double_tap_to_zoom_enabled = true; } @@ -16464,10 +16475,7 @@ b1_intersection_state.viewport_intersection.set_height( b1_intersection_state.viewport_intersection.height() - 7); - b1_node->render_manager() - ->GetProxyToParent() - ->cross_process_frame_connector() - ->UpdateViewportIntersection(b1_intersection_state); + ForceUpdateViewportIntersection(b1_node, b1_intersection_state); auto b2_intersection_state = b2_node->render_manager() ->GetProxyToParent() @@ -16480,10 +16488,7 @@ b2_intersection_state.viewport_intersection.set_height( b2_intersection_state.viewport_intersection.height() - 7); - b2_node->render_manager() - ->GetProxyToParent() - ->cross_process_frame_connector() - ->UpdateViewportIntersection(b2_intersection_state); + ForceUpdateViewportIntersection(b2_node, b2_intersection_state); // Once IPC's have been flushed to the C frames, we should see conflicting // values for main_frame_scroll_offset.
diff --git a/content/browser/site_per_process_browsertest.h b/content/browser/site_per_process_browsertest.h index 171c98b1..ba34258 100644 --- a/content/browser/site_per_process_browsertest.h +++ b/content/browser/site_per_process_browsertest.h
@@ -33,6 +33,10 @@ return static_cast<WebContentsImpl*>(shell()->web_contents()); } + static void ForceUpdateViewportIntersection( + FrameTreeNode* frame_tree_node, + const blink::mojom::ViewportIntersectionState& intersection_state); + private: FrameTreeVisualizer visualizer_; base::test::ScopedFeatureList feature_list_;
diff --git a/content/browser/storage_partition_impl_unittest.cc b/content/browser/storage_partition_impl_unittest.cc index e399008d..94f8382 100644 --- a/content/browser/storage_partition_impl_unittest.cc +++ b/content/browser/storage_partition_impl_unittest.cc
@@ -778,9 +778,13 @@ browser_context_->IsOffTheRecord(), browser_context_->GetPath(), GetIOThreadTaskRunner({}).get(), browser_context_->GetSpecialStoragePolicy()); - auto quota_client = base::MakeRefCounted<storage::MockQuotaClient>( - quota_manager_->proxy(), base::span<const storage::MockOriginData>(), - storage::QuotaClientType::kFileSystem); + mojo::PendingRemote<storage::mojom::QuotaClient> quota_client; + mojo::MakeSelfOwnedReceiver( + std::make_unique<storage::MockQuotaClient>( + quota_manager_->proxy(), + base::span<const storage::MockOriginData>(), + storage::QuotaClientType::kFileSystem), + quota_client.InitWithNewPipeAndPassReceiver()); quota_manager_->proxy()->RegisterClient( std::move(quota_client), storage::QuotaClientType::kFileSystem, {blink::mojom::StorageType::kTemporary,
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index 496c364..a160f48 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc
@@ -2498,8 +2498,7 @@ static_cast<int>(min_width / display.device_scale_factor())); #endif // OS_ANDROID - GetContentClient()->browser()->OverrideWebkitPrefs(GetRenderViewHost(), - &prefs); + GetContentClient()->browser()->OverrideWebkitPrefs(this, &prefs); return prefs; }
diff --git a/content/browser/web_contents/web_contents_impl_browsertest.cc b/content/browser/web_contents/web_contents_impl_browsertest.cc index 5ce270d..2572c48 100644 --- a/content/browser/web_contents/web_contents_impl_browsertest.cc +++ b/content/browser/web_contents/web_contents_impl_browsertest.cc
@@ -109,28 +109,6 @@ shell->ResizeWebContentForTests(size); } -// Class to test that OverrideWebkitPrefs has been called for all relevant -// RenderViewHosts. -class NotifyPreferencesChangedTestContentBrowserClient - : public TestContentBrowserClient { - public: - NotifyPreferencesChangedTestContentBrowserClient() = default; - - void OverrideWebkitPrefs(RenderViewHost* render_view_host, - blink::web_pref::WebPreferences* prefs) override { - override_webkit_prefs_rvh_set_.insert(render_view_host); - } - - const std::unordered_set<RenderViewHost*>& override_webkit_prefs_rvh_set() { - return override_webkit_prefs_rvh_set_; - } - - private: - std::unordered_set<RenderViewHost*> override_webkit_prefs_rvh_set_; - - DISALLOW_COPY_AND_ASSIGN(NotifyPreferencesChangedTestContentBrowserClient); -}; - class WebContentsImplBrowserTest : public ContentBrowserTest { public: WebContentsImplBrowserTest() {} @@ -2981,32 +2959,6 @@ a_response->Done(); } -IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, NotifyPreferencesChanged) { - ASSERT_TRUE(embedded_test_server()->Start()); - WebContentsImpl* web_contents = - static_cast<WebContentsImpl*>(shell()->web_contents()); - RenderFrameHost* main_frame = web_contents->GetMainFrame(); - - // Navigate to a site with two iframes in different origins. - GURL url = embedded_test_server()->GetURL( - "a.com", "/cross_site_iframe_factory.html?a(b,c)"); - EXPECT_TRUE(NavigateToURL(shell(), url)); - - auto* main_frame_rvh = main_frame->GetRenderViewHost(); - - NotifyPreferencesChangedTestContentBrowserClient new_client; - ContentBrowserClient* old_client = SetBrowserClientForTesting(&new_client); - - web_contents->NotifyPreferencesChanged(); - - // We should have updated the preferences for the WebContents, and should call - // OverrideWebkitPrefs with the main RenderViewHost only (not subframe RVHs). - EXPECT_EQ(std::unordered_set<RenderViewHost*>({main_frame_rvh}), - new_client.override_webkit_prefs_rvh_set()); - - SetBrowserClientForTesting(old_client); -} - namespace { class OutgoingSetRendererPrefsMojoWatcher {
diff --git a/content/browser/xr/metrics/webxr_session_tracker.cc b/content/browser/xr/metrics/webxr_session_tracker.cc index 439780d..84612d2 100644 --- a/content/browser/xr/metrics/webxr_session_tracker.cc +++ b/content/browser/xr/metrics/webxr_session_tracker.cc
@@ -80,6 +80,7 @@ case XRSessionFeature::PLANE_DETECTION: case XRSessionFeature::DEPTH: case XRSessionFeature::IMAGE_TRACKING: + case XRSessionFeature::HAND_INPUT: // Not recording metrics for these features currently. // TODO(https://crbug.com/965729): Add metrics for the AR-related features // that are enabled by default. @@ -121,6 +122,7 @@ case XRSessionFeature::PLANE_DETECTION: case XRSessionFeature::DEPTH: case XRSessionFeature::IMAGE_TRACKING: + case XRSessionFeature::HAND_INPUT: // Not recording metrics for these features currently. // TODO(https://crbug.com/965729): Add metrics for the AR-related features // that are enabled by default.
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc index 4662a4f..fad7f8c 100644 --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc
@@ -213,6 +213,7 @@ {wf::EnablePeriodicBackgroundSync, features::kPeriodicBackgroundSync}, {wf::EnableWebXR, features::kWebXr}, {wf::EnableWebXRARModule, features::kWebXrArModule}, + {wf::EnableWebXRHandInput, features::kWebXrHandInput}, {wf::EnableWebXRHitTest, features::kWebXrHitTest}, {wf::EnableWebXRAnchors, features::kWebXrIncubations}, {wf::EnableWebXRCameraAccess, features::kWebXrIncubations},
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h index 04eeff9..daabbda4 100644 --- a/content/common/frame_messages.h +++ b/content/common/frame_messages.h
@@ -234,22 +234,6 @@ // ----------------------------------------------------------------------------- // Messages sent from the renderer to the browser. -#if BUILDFLAG(ENABLE_PLUGINS) -// Return information about a plugin for the given URL and MIME -// type. If there is no matching plugin, |found| is false. -// |actual_mime_type| is the actual mime type supported by the -// found plugin. -IPC_SYNC_MESSAGE_CONTROL4_3(FrameHostMsg_GetPluginInfo, - int /* render_frame_id */, - GURL /* url */, - url::Origin /* main_frame_origin */, - std::string /* mime_type */, - bool /* found */, - content::WebPluginInfo /* plugin info */, - std::string /* actual_mime_type */) - -#endif // BUILDFLAG(ENABLE_PLUGINS) - // Used to tell the parent that the user right clicked on an area of the // content area, and a context menu should be shown for it. The params // object contains information about the node(s) that were selected when the
diff --git a/content/common/navigation_params.mojom b/content/common/navigation_params.mojom index 72f184b..cb4fe5c 100644 --- a/content/common/navigation_params.mojom +++ b/content/common/navigation_params.mojom
@@ -11,7 +11,6 @@ import "mojo/public/mojom/base/values.mojom"; import "services/network/public/mojom/content_security_policy.mojom"; import "services/network/public/mojom/fetch_api.mojom"; -import "services/network/public/mojom/ip_address_space.mojom"; import "services/network/public/mojom/source_location.mojom"; import "services/network/public/mojom/trust_tokens.mojom"; import "services/network/public/mojom/url_loader.mojom"; @@ -408,11 +407,6 @@ // Whether this navigation was browser initiated. bool is_browser_initiated = false; - // The IP address space into which this document is committing. - // https://wicg.github.io/cors-rfc1918/#address-space - network.mojom.IPAddressSpace ip_address_space = - network.mojom.IPAddressSpace.kUnknown; - // The physical URL of Web Bundle from which the document is loaded. // Used as an additional identifier for MemoryCache. url.mojom.Url web_bundle_physical_url;
diff --git a/content/common/pepper_plugin.mojom b/content/common/pepper_plugin.mojom index 8627c0a..a415743 100644 --- a/content/common/pepper_plugin.mojom +++ b/content/common/pepper_plugin.mojom
@@ -4,6 +4,7 @@ module content.mojom; +import "content/public/common/webplugininfo.mojom"; import "mojo/public/mojom/base/file_path.mojom"; import "mojo/public/mojom/base/process_id.mojom"; import "url/mojom/origin.mojom"; @@ -21,6 +22,18 @@ BindHungDetectorHost(pending_receiver<PepperHungDetectorHost> host, int32 plugin_child_id, mojo_base.mojom.FilePath plugin_path); + + // Return information about a plugin for the given URL and MIME + // type. If there is no matching plugin, |found| is false. + // |actual_mime_type| is the actual mime type supported by the + // found plugin. + [Sync] + GetPluginInfo(url.mojom.Url url, + url.mojom.Origin main_frame_origin, + string mime_type) => + (bool found, + content.mojom.WebPluginInfo plugin_info, + string actual_mime_type); }; // Generic Pepper messages that run on the IO thread in the browser process. @@ -49,13 +62,14 @@ // to the browser that assume the browser knows about the instance. We need to // make sure that the browser actually knows about the instance before we tell // the plugin to run. - [Sync] DidCreateOutOfProcessPepperInstance(int32 plugin_child_id, - int32 pp_instance, - bool is_external, - int32 frame_routing_id, - url.mojom.Url document_url, - url.mojom.Url plugin_url, - bool is_privileged_context) => (); + [Sync] + DidCreateOutOfProcessPepperInstance(int32 plugin_child_id, + int32 pp_instance, + bool is_external, + int32 frame_routing_id, + url.mojom.Url document_url, + url.mojom.Url plugin_url, + bool is_privileged_context) => (); // Notification that a plugin has destroyed an instance. DidDeleteOutOfProcessPepperInstance(int32 plugin_child_id, @@ -79,12 +93,13 @@ // RenderFrameHostImpl::GetLastCommittedOrigin). // // On error null handles are returned. - [Sync] OpenChannelToPepperPlugin(url.mojom.Origin embedder_origin, - mojo_base.mojom.FilePath path, - url.mojom.Origin? origin_lock) => - (handle<message_pipe>? handle_to_channel, - mojo_base.mojom.ProcessId plugin_pid, - int32 plugin_child_id); + [Sync] + OpenChannelToPepperPlugin(url.mojom.Origin embedder_origin, + mojo_base.mojom.FilePath path, + url.mojom.Origin? origin_lock) => + (handle<message_pipe>? handle_to_channel, + mojo_base.mojom.ProcessId plugin_pid, + int32 plugin_child_id); }; // This interface is used on the renderer IO thread and is received on the
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeArrayTest.java b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeArrayTest.java index 51d0ecf..7ed0645d 100644 --- a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeArrayTest.java +++ b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeArrayTest.java
@@ -200,7 +200,7 @@ @Test @SmallTest @Feature({"AndroidWebView", "Android-JavaBridge"}) - @UseMethodParameter(JavaBridgeActivityTestRule.LegacyTestParams.class) + @UseMethodParameter(JavaBridgeActivityTestRule.MojoTestParams.class) public void testObjectWithLengthProperty(boolean useMojo) throws Throwable { mActivityTestRule.executeJavaScript("testObject.setIntArray({length: 3, 1: 42});"); int[] result = mTestObject.waitForIntArray(); @@ -213,7 +213,7 @@ @Test @SmallTest @Feature({"AndroidWebView", "Android-JavaBridge"}) - @UseMethodParameter(JavaBridgeActivityTestRule.LegacyTestParams.class) + @UseMethodParameter(JavaBridgeActivityTestRule.MojoTestParams.class) public void testNonNumericLengthProperty(boolean useMojo) throws Throwable { // LIVECONNECT_COMPLIANCE: This should not count as an array, so we // should raise a JavaScript exception. @@ -224,7 +224,7 @@ @Test @SmallTest @Feature({"AndroidWebView", "Android-JavaBridge"}) - @UseMethodParameter(JavaBridgeActivityTestRule.LegacyTestParams.class) + @UseMethodParameter(JavaBridgeActivityTestRule.MojoTestParams.class) public void testLengthOutOfBounds(boolean useMojo) throws Throwable { // LIVECONNECT_COMPLIANCE: This should not count as an array, so we // should raise a JavaScript exception. @@ -305,7 +305,7 @@ @Test @SmallTest @Feature({"AndroidWebView", "Android-JavaBridge"}) - @UseMethodParameter(JavaBridgeActivityTestRule.LegacyTestParams.class) + @UseMethodParameter(JavaBridgeActivityTestRule.MojoTestParams.class) public void testPassArrayBuffer(boolean useMojo) throws Throwable { mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(16);"); mActivityTestRule.executeJavaScript("testObject.setIntArray(buffer);"); @@ -321,7 +321,7 @@ @Test @SmallTest @Feature({"AndroidWebView", "Android-JavaBridge"}) - @UseMethodParameter(JavaBridgeActivityTestRule.LegacyTestParams.class) + @UseMethodParameter(JavaBridgeActivityTestRule.MojoTestParams.class) public void testPassDataView(boolean useMojo) throws Throwable { mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(16);"); mActivityTestRule.executeJavaScript("testObject.setIntArray(new DataView(buffer));");
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityTest.java b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityTest.java index 8e8eb0a5..6abb311 100644 --- a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityTest.java +++ b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityTest.java
@@ -196,7 +196,10 @@ return waitForNodeMatching(provider, new AccessibilityNodeInfoMatcher() { @Override public boolean matches(AccessibilityNodeInfo node) { - return text.equals(node.getText()) && node.isVisibleToUser(); + if (node.getText() == null) { + return false; + } + return text.equals(node.getText().toString()) && node.isVisibleToUser(); } }); } @@ -210,7 +213,11 @@ return waitForNodeMatching(provider, new AccessibilityNodeInfoMatcher() { @Override public boolean matches(AccessibilityNodeInfo node) { - return text.equals(node.getText()) || text.equals(node.getContentDescription()); + if (node.getText() == null) { + return text.equals(node.getContentDescription()); + } + return text.equals(node.getText().toString()) + || text.equals(node.getContentDescription()); } }); } @@ -223,7 +230,10 @@ return waitForNodeMatching(provider, new AccessibilityNodeInfoMatcher() { @Override public boolean matches(AccessibilityNodeInfo node) { - return text.equals(node.getText()); + if (node.getText() == null) { + return false; + } + return text.equals(node.getText().toString()); } }); }
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h index 886684d..6dd4570d 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h
@@ -209,7 +209,6 @@ class ReceiverPresentationServiceDelegate; class RenderFrameHost; class RenderProcessHost; -class RenderViewHost; class SerialDelegate; class SiteInstance; class SpeechRecognitionManagerDelegate; @@ -924,7 +923,7 @@ // Called by WebContents to override the WebKit preferences that are used by // the renderer. The content layer will add its own settings, and then it's up // to the embedder to update it if it wants. - virtual void OverrideWebkitPrefs(RenderViewHost* render_view_host, + virtual void OverrideWebkitPrefs(WebContents* web_contents, blink::web_pref::WebPreferences* prefs) {} // Similar to OverrideWebkitPrefs, but is only called after navigations. Some
diff --git a/content/public/browser/render_process_host_observer.cc b/content/public/browser/render_process_host_observer.cc index 44606995..b885e098 100644 --- a/content/public/browser/render_process_host_observer.cc +++ b/content/public/browser/render_process_host_observer.cc
@@ -8,9 +8,7 @@ namespace content { RenderProcessHostObserver::~RenderProcessHostObserver() { - // TODO(https://crbug.com/1153961): Instrumentation. When fixed, decide if - // this CHECK should be removed or turned into a DCHECK. - CHECK(!IsInObserverList()); + DCHECK(!IsInObserverList()); } } // namespace content
diff --git a/content/public/browser/render_widget_host.h b/content/public/browser/render_widget_host.h index b52c080..8e6e3519 100644 --- a/content/public/browser/render_widget_host.h +++ b/content/public/browser/render_widget_host.h
@@ -219,7 +219,7 @@ virtual bool IsCurrentlyUnresponsive() = 0; // Called to propagate updated visual properties to the renderer. Returns - // whether the renderer has been informed of updated properties. + // true if visual properties have changed since last call. virtual bool SynchronizeVisualProperties() = 0; // Access to the implementation's IPC::Listener::OnMessageReceived. Intended
diff --git a/content/public/browser/render_widget_host_observer.cc b/content/public/browser/render_widget_host_observer.cc index ecc744e9..7eb8b10 100644 --- a/content/public/browser/render_widget_host_observer.cc +++ b/content/public/browser/render_widget_host_observer.cc
@@ -8,9 +8,7 @@ namespace content { RenderWidgetHostObserver::~RenderWidgetHostObserver() { - // TODO(https://crbug.com/1153966): Instrumentation. When fixed, decide if - // this CHECK should be removed or turned into a DCHECK. - CHECK(!IsInObserverList()); + DCHECK(!IsInObserverList()); } } // namespace content
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc index 13b009e..83c3ce62 100644 --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc
@@ -131,10 +131,6 @@ #endif }; -// Enables the use of out of process rasterization for canvas. -const base::Feature kCanvasOopRasterization{"CanvasOopRasterization", - base::FEATURE_DISABLED_BY_DEFAULT}; - // Clear the frame name for the top-level cross-browsing-context-group // navigation. const base::Feature kClearCrossBrowsingContextGroupMainFrameName{ @@ -441,9 +437,12 @@ const base::Feature kNotificationTriggers{"NotificationTriggers", base::FEATURE_ENABLED_BY_DEFAULT}; -// Origin Isolation, via a header. See https://crbug.com/1042415 -// Note that the origin policy-based variant of origin isolation is controlled -// by kOriginPolicy, instead. +// Controls the Origin-Agent-Cluster header. Tracking bug +// https://crbug.com/1042415; flag removal bug (for when this is fully launched) +// https://crbug.com/1148057. +// +// The name is "OriginIsolationHeader" because that was the old name when the +// feature was under development. const base::Feature kOriginIsolationHeader{"OriginIsolationHeader", base::FEATURE_DISABLED_BY_DEFAULT}; @@ -857,6 +856,10 @@ const base::Feature kWebXrArModule{"WebXRARModule", base::FEATURE_ENABLED_BY_DEFAULT}; +// Enables access to articulated hand tracking sensor input. +const base::Feature kWebXrHandInput{"WebXRHandInput", + base::FEATURE_DISABLED_BY_DEFAULT}; + // Enables access to raycasting against estimated XR scene geometry. const base::Feature kWebXrHitTest{"WebXRHitTest", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h index 72d0ff5..d10e411 100644 --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h
@@ -35,7 +35,6 @@ CONTENT_EXPORT extern const base::Feature kCacheInlineScriptCode; CONTENT_EXPORT extern const base::Feature kCacheStorageParallelOps; CONTENT_EXPORT extern const base::Feature kCanvas2DImageChromium; -CONTENT_EXPORT extern const base::Feature kCanvasOopRasterization; CONTENT_EXPORT extern const base::Feature kClearCrossBrowsingContextGroupMainFrameName; CONTENT_EXPORT extern const base::Feature kClickPointerEvent; @@ -194,6 +193,7 @@ CONTENT_EXPORT extern const base::Feature kWebUsb; CONTENT_EXPORT extern const base::Feature kWebXr; CONTENT_EXPORT extern const base::Feature kWebXrArModule; +CONTENT_EXPORT extern const base::Feature kWebXrHandInput; CONTENT_EXPORT extern const base::Feature kWebXrHitTest; CONTENT_EXPORT extern const base::Feature kWebXrIncubations;
diff --git a/content/public/renderer/render_frame.h b/content/public/renderer/render_frame.h index 9bc2eef5..c141dd1097 100644 --- a/content/public/renderer/render_frame.h +++ b/content/public/renderer/render_frame.h
@@ -248,11 +248,14 @@ // |replace_current_item| should be true if we load html instead of the // existing page. In this case |unreachable_url| might be the original url // which did fail loading. - virtual void LoadHTMLString(const std::string& html, - const GURL& base_url, - const std::string& text_encoding, - const GURL& unreachable_url, - bool replace_current_item) = 0; + // + // This should be used only for testing. Real code should follow the + // navigation code path and inherit the correct security properties + virtual void LoadHTMLStringForTesting(const std::string& html, + const GURL& base_url, + const std::string& text_encoding, + const GURL& unreachable_url, + bool replace_current_item) = 0; // Returns true in between the time that Blink requests navigation until the // browser responds with the result.
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc index c4692d2..60c6fffdf 100644 --- a/content/public/test/browser_test_utils.cc +++ b/content/public/test/browser_test_utils.cc
@@ -6,6 +6,7 @@ #include <stddef.h> +#include <cstdint> #include <set> #include <tuple> #include <utility> @@ -1913,7 +1914,8 @@ bool SetCookie(BrowserContext* browser_context, const GURL& url, const std::string& value, - net::CookieOptions::SameSiteCookieContext context) { + net::CookieOptions::SameSiteCookieContext context, + net::CookieOptions::SamePartyCookieContextType party_context) { bool result = false; base::RunLoop run_loop; mojo::Remote<network::mojom::CookieManager> cookie_manager; @@ -1927,6 +1929,7 @@ net::CookieOptions options; options.set_include_httponly(); options.set_same_site_cookie_context(context); + options.set_same_party_cookie_context_type(party_context); cookie_manager->SetCanonicalCookie( *cc.get(), url, options, base::BindOnce( @@ -1940,6 +1943,29 @@ return result; } +uint32_t DeleteCookies(BrowserContext* browser_context, + network::mojom::CookieDeletionFilter filter) { + base::RunLoop run_loop; + mojo::Remote<network::mojom::CookieManager> cookie_manager; + BrowserContext::GetDefaultStoragePartition(browser_context) + ->GetNetworkContext() + ->GetCookieManager(cookie_manager.BindNewPipeAndPassReceiver()); + + uint32_t result = 0U; + cookie_manager->DeleteCookies( + network::mojom::CookieDeletionFilter::New(filter), + base::BindOnce( + [](uint32_t* result, base::RunLoop* run_loop, + uint32_t cookies_cleared) { + *result = cookies_cleared; + run_loop->Quit(); + }, + &result, &run_loop)); + + run_loop.Run(); + return result; +} + void FetchHistogramsFromChildProcesses() { // Wait for all the renderer processes to be initialized before fetching // histograms for the first time.
diff --git a/content/public/test/browser_test_utils.h b/content/public/test/browser_test_utils.h index a338f88b..76c9777cb 100644 --- a/content/public/test/browser_test_utils.h +++ b/content/public/test/browser_test_utils.h
@@ -902,14 +902,21 @@ BrowserContext* browser_context, const GURL& url); -// Sets a cookie for the given url. Uses an inclusive SameSiteCookieContext by -// default, which gets cookies regardless of their SameSite attribute. Returns -// true on success. +// Sets a cookie for the given url. Uses inclusive SameSiteCookieContext and +// SamePartyCookieContextType by default, which get cookies regardless of their +// SameSite and SameParty attributes. Returns true on success. bool SetCookie(BrowserContext* browser_context, const GURL& url, const std::string& value, net::CookieOptions::SameSiteCookieContext context = - net::CookieOptions::SameSiteCookieContext::MakeInclusive()); + net::CookieOptions::SameSiteCookieContext::MakeInclusive(), + net::CookieOptions::SamePartyCookieContextType party_context = + net::CookieOptions::SamePartyCookieContextType::kSameParty); + +// Deletes cookies matching the provided filter. Returns the number of cookies +// that were deleted. +uint32_t DeleteCookies(BrowserContext* browser_context, + network::mojom::CookieDeletionFilter filter); // Fetch the histograms data from other processes. This should be called after // the test code has been executed but before performing assertions.
diff --git a/content/public/test/fake_frame_widget.cc b/content/public/test/fake_frame_widget.cc index 2bc8c1a..4c30d1ab 100644 --- a/content/public/test/fake_frame_widget.cc +++ b/content/public/test/fake_frame_widget.cc
@@ -42,7 +42,8 @@ } void FakeFrameWidget::SetViewportIntersection( - blink::mojom::ViewportIntersectionStatePtr intersection_state) { + blink::mojom::ViewportIntersectionStatePtr intersection_state, + const base::Optional<blink::VisualProperties>& visual_properties) { intersection_state_ = std::move(intersection_state); }
diff --git a/content/public/test/fake_frame_widget.h b/content/public/test/fake_frame_widget.h index 65ca492..bdf92d6c 100644 --- a/content/public/test/fake_frame_widget.h +++ b/content/public/test/fake_frame_widget.h
@@ -82,7 +82,9 @@ void BindInputTargetClient( mojo::PendingReceiver<viz::mojom::InputTargetClient> receiver) override {} void SetViewportIntersection( - blink::mojom::ViewportIntersectionStatePtr intersection_state) override; + blink::mojom::ViewportIntersectionStatePtr intersection_state, + const base::Optional<blink::VisualProperties>& visual_properties) + override; mojo::AssociatedReceiver<blink::mojom::FrameWidget> receiver_; base::i18n::TextDirection text_direction_ =
diff --git a/content/public/test/render_view_test.cc b/content/public/test/render_view_test.cc index 7be10c4..13e097e 100644 --- a/content/public/test/render_view_test.cc +++ b/content/public/test/render_view_test.cc
@@ -358,8 +358,8 @@ std::string url_string = "data:text/html;charset=utf-8,"; url_string.append(net::EscapeQueryParamValue(html, false)); RenderFrame::FromWebFrame(GetMainFrame()) - ->LoadHTMLString(html, GURL(url_string), "UTF-8", GURL(), - false /* replace_current_item */); + ->LoadHTMLStringForTesting(html, GURL(url_string), "UTF-8", GURL(), + false /* replace_current_item */); // The load may happen asynchronously, so we pump messages to process // the pending continuation. waiter.Wait(); @@ -371,8 +371,8 @@ const char* url_override) { FrameLoadWaiter waiter(view_->GetMainRenderFrame()); RenderFrame::FromWebFrame(GetMainFrame()) - ->LoadHTMLString(html, GURL(url_override), "UTF-8", GURL(), - false /* replace_current_item */); + ->LoadHTMLStringForTesting(html, GURL(url_override), "UTF-8", GURL(), + false /* replace_current_item */); // The load may happen asynchronously, so we pump messages to process // the pending continuation. waiter.Wait();
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index aab6e3e..50ee54e 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc
@@ -431,7 +431,6 @@ navigation_params->http_method = WebString::FromASCII( !commit_params.original_method.empty() ? commit_params.original_method : common_params.method); - navigation_params->ip_address_space = commit_params.ip_address_space; if (common_params.referrer->url.is_valid()) { WebString referrer = WebSecurityPolicy::GenerateReferrerHeader( @@ -1149,7 +1148,8 @@ return nullptr; return std::make_unique<blink::WebPolicyContainer>( - blink::WebPolicyContainerDocumentPolicies{in->policies->referrer_policy}, + blink::WebPolicyContainerDocumentPolicies{in->policies->referrer_policy, + in->policies->ip_address_space}, std::move(in->remote)); } @@ -2069,9 +2069,6 @@ // We delay calling this until we have the WebFrame so that any observer or // embedder can call GetWebFrame on any RenderFrame. GetContentClient()->renderer()->RenderFrameCreated(this); - // Dispatch events for the initial empty document after all frame observers - // have been created. - RunScriptsAtDocumentElementAvailable(); // blink::WebAudioOutputIPCFactory::io_task_runner_ may be null in tests. auto& factory = blink::WebAudioOutputIPCFactory::GetInstance(); @@ -3638,9 +3635,9 @@ WebPluginInfo info; std::string mime_type; bool found = false; - Send(new FrameHostMsg_GetPluginInfo( - routing_id_, params.url, frame_->Top()->GetSecurityOrigin(), - params.mime_type.Utf8(), &found, &info, &mime_type)); + GetPepperHost()->GetPluginInfo(params.url, frame_->Top()->GetSecurityOrigin(), + params.mime_type.Utf8(), &found, &info, + &mime_type); if (!found) return nullptr; @@ -6164,11 +6161,11 @@ return browser_side_navigation_pending_; } -void RenderFrameImpl::LoadHTMLString(const std::string& html, - const GURL& base_url, - const std::string& text_encoding, - const GURL& unreachable_url, - bool replace_current_item) { +void RenderFrameImpl::LoadHTMLStringForTesting(const std::string& html, + const GURL& base_url, + const std::string& text_encoding, + const GURL& unreachable_url, + bool replace_current_item) { AssertNavigationCommits assert_navigation_commits( this, kMayReplaceInitialEmptyDocument);
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h index 1a01e4f..79c803c 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h
@@ -378,11 +378,11 @@ blink::PreviewsState GetPreviewsState() override; bool IsPasting() override; bool IsBrowserSideNavigationPending() override; - void LoadHTMLString(const std::string& html, - const GURL& base_url, - const std::string& text_encoding, - const GURL& unreachable_url, - bool replace_current_item) override; + void LoadHTMLStringForTesting(const std::string& html, + const GURL& base_url, + const std::string& text_encoding, + const GURL& unreachable_url, + bool replace_current_item) override; scoped_refptr<base::SingleThreadTaskRunner> GetTaskRunner( blink::TaskType task_type) override; int GetEnabledBindings() override;
diff --git a/content/renderer/render_frame_impl_browsertest.cc b/content/renderer/render_frame_impl_browsertest.cc index 7b96402..1a9cbba 100644 --- a/content/renderer/render_frame_impl_browsertest.cc +++ b/content/renderer/render_frame_impl_browsertest.cc
@@ -1023,9 +1023,9 @@ // Test the case where we have an unreachable URL. GURL unreachable_url = GURL("http://www.example.com"); waiter = std::make_unique<FrameLoadWaiter>(GetMainRenderFrame()); - GetMainRenderFrame()->LoadHTMLString("test", data_url, "UTF-8", - unreachable_url, - false /* replace_current_item */); + GetMainRenderFrame()->LoadHTMLStringForTesting( + "test", data_url, "UTF-8", unreachable_url, + false /* replace_current_item */); waiter->Wait(); EXPECT_EQ(GURL(GetMainRenderFrame()->LastCommittedUrlForUKM()), unreachable_url);
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index aa1fc382..dbbc882b 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc
@@ -96,6 +96,7 @@ #include "gpu/command_buffer/client/gles2_interface.h" #include "gpu/command_buffer/client/raster_interface.h" #include "gpu/command_buffer/client/shared_memory_limits.h" +#include "gpu/config/gpu_finch_features.h" #include "gpu/config/gpu_switches.h" #include "gpu/ipc/client/command_buffer_proxy_impl.h" #include "gpu/ipc/client/gpu_channel_host.h"
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc index 19dcacac..3c39a36 100644 --- a/content/renderer/render_view_browsertest.cc +++ b/content/renderer/render_view_browsertest.cc
@@ -2703,8 +2703,9 @@ TEST_F(RenderViewImplTest, RendererNavigationStartTransmittedToBrowser) { base::TimeTicks lower_bound_navigation_start(base::TimeTicks::Now()); FrameLoadWaiter waiter(frame()); - frame()->LoadHTMLString("hello world", GURL("data:text/html,"), "UTF-8", - GURL(), false /* replace_current_item */); + frame()->LoadHTMLStringForTesting("hello world", GURL("data:text/html,"), + "UTF-8", GURL(), + false /* replace_current_item */); waiter.Wait(); NavigationState* navigation_state = NavigationState::FromDocumentLoader( frame()->GetWebFrame()->GetDocumentLoader());
diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc index d21f7e95..4964d35 100644 --- a/content/renderer/renderer_blink_platform_impl.cc +++ b/content/renderer/renderer_blink_platform_impl.cc
@@ -56,6 +56,7 @@ #include "content/renderer/worker/worker_thread_registry.h" #include "device/gamepad/public/cpp/gamepads.h" #include "gpu/command_buffer/client/gles2_interface.h" +#include "gpu/config/gpu_finch_features.h" #include "gpu/config/gpu_info.h" #include "gpu/ipc/client/gpu_channel_host.h" #include "media/audio/audio_output_device.h"
diff --git a/content/shell/browser/shell_content_browser_client.cc b/content/shell/browser/shell_content_browser_client.cc index 0cf3c29..2d75f3b 100644 --- a/content/shell/browser/shell_content_browser_client.cc +++ b/content/shell/browser/shell_content_browser_client.cc
@@ -280,7 +280,7 @@ } void ShellContentBrowserClient::OverrideWebkitPrefs( - RenderViewHost* render_view_host, + WebContents* web_contents, blink::web_pref::WebPreferences* prefs) { if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kForceDarkMode)) {
diff --git a/content/shell/browser/shell_content_browser_client.h b/content/shell/browser/shell_content_browser_client.h index af0417d..78ed1083 100644 --- a/content/shell/browser/shell_content_browser_client.h +++ b/content/shell/browser/shell_content_browser_client.h
@@ -60,7 +60,7 @@ std::unique_ptr<ClientCertificateDelegate> delegate) override; SpeechRecognitionManagerDelegate* CreateSpeechRecognitionManagerDelegate() override; - void OverrideWebkitPrefs(RenderViewHost* render_view_host, + void OverrideWebkitPrefs(WebContents* web_contents, blink::web_pref::WebPreferences* prefs) override; base::FilePath GetFontLookupTableCacheDir() override; DevToolsManagerDelegate* GetDevToolsManagerDelegate() override;
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index 7c3a5f56..7390c0e 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -1074,6 +1074,7 @@ "../browser/navigation_browsertest.cc", "../browser/navigation_mhtml_browsertest.cc", "../browser/net/accept_header_browsertest.cc", + "../browser/net/http_cookie_browsertest.cc", "../browser/net/net_command_line_flags_browsertest.cc", "../browser/net/network_field_trial_browsertest.cc", "../browser/net/split_cache_browsertest.cc",
diff --git a/content/test/gpu/measure_power_intel.py b/content/test/gpu/measure_power_intel.py index 5769984..5fc0820 100644 --- a/content/test/gpu/measure_power_intel.py +++ b/content/test/gpu/measure_power_intel.py
@@ -13,6 +13,8 @@ https://www.microsoft.com/en-us/download/details.aspx?id=14632 Install selenium via pip: `pip install selenium` +Selenium 4 is required for Edge. Selenium 4.00-alpha5 or later is recommended: + `pip install selenium==4.0.0a5` And finally install the web drivers for Chrome (and Edge if needed): http://chromedriver.chromium.org/downloads @@ -24,6 +26,10 @@ --verbose --url="https://www.youtube.com/watch?v=0XdS37Re1XQ" --extra-browser-args="--no-sandbox" +Supported browsers (--browser=xxx): 'stable', 'beta', 'dev', 'canary', + 'chromium', 'edge', and path_to_exe_file. +For Edge from insider channels (beta, dev, can), use path_to_exe_file. + It is recommended to test with optimized builds of Chromium e.g. these GN args: is_debug = false @@ -146,8 +152,17 @@ def CreateWebDriver(browser, user_data_dir, url, fullscreen, extra_browser_args): - if browser == 'edge': - driver = webdriver.Edge() + if browser == 'edge' or browser.endswith('msedge.exe'): + options = webdriver.EdgeOptions() + # Set use_chromium to true or an error will be triggered that the latest + # MSEdgeDriver doesn't support an older version (non-chrome based) of + # MSEdge. + options.use_chromium = True + options.binary_location = browser + for arg in extra_browser_args: + options.add_argument(arg) + logging.debug(" ".join(options.arguments)) + driver = webdriver.Edge(options=options) else: options = webdriver.ChromeOptions() options.binary_location = browser
diff --git a/content/web_test/browser/web_test_content_browser_client.cc b/content/web_test/browser/web_test_content_browser_client.cc index 52bfdcf..4c2bd00 100644 --- a/content/web_test/browser/web_test_content_browser_client.cc +++ b/content/web_test/browser/web_test_content_browser_client.cc
@@ -318,7 +318,7 @@ } void WebTestContentBrowserClient::OverrideWebkitPrefs( - RenderViewHost* render_view_host, + WebContents* web_contents, blink::web_pref::WebPreferences* prefs) { if (WebTestControlHost::Get()) WebTestControlHost::Get()->OverrideWebkitPrefs(prefs);
diff --git a/content/web_test/browser/web_test_content_browser_client.h b/content/web_test/browser/web_test_content_browser_client.h index 15262ff3..06f4d851 100644 --- a/content/web_test/browser/web_test_content_browser_client.h +++ b/content/web_test/browser/web_test_content_browser_client.h
@@ -62,7 +62,7 @@ service_manager::BinderRegistry* registry, blink::AssociatedInterfaceRegistry* associated_registry, RenderProcessHost* render_process_host) override; - void OverrideWebkitPrefs(RenderViewHost* render_view_host, + void OverrideWebkitPrefs(WebContents* web_contents, blink::web_pref::WebPreferences* prefs) override; void AppendExtraCommandLineSwitches(base::CommandLine* command_line, int child_process_id) override;
diff --git a/device/vr/public/mojom/vr_service.mojom b/device/vr/public/mojom/vr_service.mojom index ac53d1b..fd77143d 100644 --- a/device/vr/public/mojom/vr_service.mojom +++ b/device/vr/public/mojom/vr_service.mojom
@@ -66,6 +66,7 @@ PLANE_DETECTION = 11, // Experimental feature. DEPTH = 12, // Experimental feature. IMAGE_TRACKING = 13, // Experimental feature. + HAND_INPUT = 14, // Experimental feature. }; // These values are persisted to logs. Entries should not be renumbered and
diff --git a/docs/accessibility/switch_access.md b/docs/accessibility/switch_access.md index 8b1fe09..3d27858f 100644 --- a/docs/accessibility/switch_access.md +++ b/docs/accessibility/switch_access.md
@@ -31,11 +31,12 @@ The user can identify which element is currently focused because it is surrounded by a **focus ring**, which is two concentric rounded rectangles of -contrasting colors (currently fixed at light blue and black) that surround the +contrasting colors (currently fixed at light and dark blue) that surround the element. Sometimes, a second focus ring will appear onscreen, which has dashed -rather than solid lines. This dashed focus ring provides a preview of which node -will be focused, if the user selects the current node. It also provides a hint -that the current node is a navigational node, and is not directly actionable. +line for the inner rectangle. This dashed focus ring provides a preview of which +node will be focused next, if the user selects the current node. It also +provides a hint that the current node is a navigational node, and is not +directly actionable. There are two types of navigational nodes: nodes that group other nodes together, and the **back button**. The back button allows a user to exit the @@ -136,9 +137,9 @@ - If it is a select command, the available actions are determined. -If there is only one, it is performed (Note that for navigational nodes, this -means entering or exiting a group). If more than one action is available, the -menu is opened and focus jumps into the menu. + - If there is only one action, it is performed (Note that for navigational + nodes, this means entering or exiting a group). If more than one action is + available, the menu is opened and focus jumps into the menu. 3. Listens for focus events, and moves Switch Access focus to follow system focus.
diff --git a/docs/accessibility/tests.md b/docs/accessibility/tests.md index 6b00f0ec..ecd6489 100644 --- a/docs/accessibility/tests.md +++ b/docs/accessibility/tests.md
@@ -130,7 +130,7 @@ * [chrome/android/javatests/src/org/chromium/chrome/browser/accessibility](https://cs.chromium.org/chromium/src/chrome/android/javatests/src/org/chromium/chrome/browser/accessibility/) * [chrome/browser/accessibility](https://cs.chromium.org/chromium/src/chrome/browser/accessibility/) -* [chrome/browser/chromeos/accessibility/](https://cs.chromium.org/chromium/src/chrome/browser/chromeos/accessibility/) +* [chrome/browser/ash/accessibility/](https://cs.chromium.org/chromium/src/chrome/browser/ash/accessibility/) * [ui/chromeos](https://cs.chromium.org/chromium/src/ui/chromeos/) * [ui/views/accessibility](https://cs.chromium.org/chromium/src/ui/views/accessibility/)
diff --git a/docs/speed/benchmark/harnesses/desktop_ui.md b/docs/speed/benchmark/harnesses/desktop_ui.md index d6aaf646..8e2060d9 100644 --- a/docs/speed/benchmark/harnesses/desktop_ui.md +++ b/docs/speed/benchmark/harnesses/desktop_ui.md
@@ -42,7 +42,7 @@ There are 3 ways to add metrics to the benchmarking code -1. Add UMA metrics to your code and include them in the [story definition](../../../../tools/perf/page_sets/tab_search_story.py). The listed UMA metrics will show up on the result page automatically. +1. Add UMA metrics to your code and include them in the [story definition](../../../../tools/perf/page_sets/desktop_ui/tab_search_story.py). The listed UMA metrics will show up on the result page automatically. 2. Add C++ trace with name starts with "webui_metric:". Make sure your trace has category "browser" or add other categories that you use to the story definition. For example: ```c++ void Foo::DoWork() {
diff --git a/docs/testing/web_test_expectations.md b/docs/testing/web_test_expectations.md index cd64c88d..bc37e1f 100644 --- a/docs/testing/web_test_expectations.md +++ b/docs/testing/web_test_expectations.md
@@ -166,7 +166,7 @@ longer than the usual timeout to run. Slow tests are given 5x the usual timeout. * [SmokeTests](../../third_party/blink/web_tests/SmokeTests): A small subset - of tests that we run on the Android bot. + of tests that we run on the Fuchsia bots. * [StaleTestExpectations](../../third_party/blink/web_tests/StaleTestExpectations): Platform-specific lines that have been in TestExpectations for many months. They're moved here to get them out of the way of people doing rebaselines
diff --git a/docs/testing/web_tests.md b/docs/testing/web_tests.md index 1811c4da..168155a 100644 --- a/docs/testing/web_tests.md +++ b/docs/testing/web_tests.md
@@ -23,6 +23,15 @@ ## Running Web Tests +### Supported Platforms + +* Linux +* MacOS +* Windows +* Fuchsia + +Android is [not supported](https://crbug.com/567947). + ### Initial Setup Before you can run the web tests, you need to build the `blink_tests` target @@ -32,16 +41,6 @@ autoninja -C out/Default blink_tests ``` -On **Android** (web test support -[currently limited to KitKat and earlier](https://crbug.com/567947)) you need to -build and install `content_shell_apk` instead. See also: -[Android Build Instructions](../android_build_instructions.md). - -```bash -autoninja -C out/Default content_shell_apk -adb install -r out/Default/apks/ContentShell.apk -``` - On **Mac**, you probably want to strip the content_shell binary before starting the tests. If you don't, you'll have 5-10 running concurrently, all stuck being examined by the OS crash reporter. This may cause other failures like timeouts @@ -63,12 +62,6 @@ third_party/blink/tools/run_web_tests.py -t Default ``` -For Android (if your build directory is `out/android`): - -```bash -third_party/blink/tools/run_web_tests.py -t android --android -``` - *** promo * Windows users need to use `third_party/blink/tools/run_web_tests.bat` instead. * Linux users should not use `testing/xvfb.py`; `run_web_tests.py` manages Xvfb @@ -86,12 +79,11 @@ *** promo Currently only the tests listed in -[SmokeTests](../../third_party/blink/web_tests/SmokeTests) -are run on the Android bots, since running all web tests takes too long on -Android (and may still have some infrastructure issues). Most developers focus -their Blink testing on Linux. We rely on the fact that the Linux and Android -behavior is nearly identical for scenarios outside those covered by the smoke -tests. +[SmokeTests](../../third_party/blink/web_tests/SmokeTests) are run on the +Fuchsia bots, since running all web tests takes too long on Fuchshia. Most +developers focus their Blink testing on Linux. We rely on the fact that the +Linux and Fuchsia behavior is nearly identical for scenarios outside those +covered by the smoke tests. *** To run only some of the tests, specify their directories or filenames as
diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc index 2ad828ee..18f04da 100644 --- a/extensions/renderer/dispatcher.cc +++ b/extensions/renderer/dispatcher.cc
@@ -289,6 +289,11 @@ void Dispatcher::OnRenderFrameCreated(content::RenderFrame* render_frame) { script_injection_manager_->OnRenderFrameCreated(render_frame); content_watcher_->OnRenderFrameCreated(render_frame); + + // The RenderFrame comes with the initial empty document already created. + DidCreateDocumentElement(render_frame->GetWebFrame()); + // We run scripts on the empty document. + RunScriptsAtDocumentStart(render_frame); } bool Dispatcher::IsExtensionActive(const std::string& extension_id) const {
diff --git a/extensions/renderer/extension_frame_helper.cc b/extensions/renderer/extension_frame_helper.cc index f2f3829..d0c99f8 100644 --- a/extensions/renderer/extension_frame_helper.cc +++ b/extensions/renderer/extension_frame_helper.cc
@@ -118,9 +118,6 @@ // Manages its own lifetime. new AutomationApiHelper(render_frame); } - // The RenderFrame comes with the initial empty document already created, and - // we want to act on it in the same way as a new document. - DidCreateDocumentElement(); } ExtensionFrameHelper::~ExtensionFrameHelper() {
diff --git a/extensions/renderer/extension_frame_helper.h b/extensions/renderer/extension_frame_helper.h index dff575b..e89220a 100644 --- a/extensions/renderer/extension_frame_helper.h +++ b/extensions/renderer/extension_frame_helper.h
@@ -174,10 +174,12 @@ Dispatcher* extension_dispatcher_; - // Whether or not the current document element has been created. + // Whether or not the current document element has been created. This starts + // true as the initial empty document is already created when this class is + // instantiated. // TODO(danakj): Does this still need to be tracked? We now have consisitent // notifications for initial empty documents on all frames. - bool did_create_current_document_element_ = false; + bool did_create_current_document_element_ = true; // Callbacks to be run at the next RunScriptsAtDocumentStart notification. std::vector<base::OnceClosure> document_element_created_callbacks_;
diff --git a/extensions/renderer/script_context_browsertest.cc b/extensions/renderer/script_context_browsertest.cc index b78e8c2..233ff13 100644 --- a/extensions/renderer/script_context_browsertest.cc +++ b/extensions/renderer/script_context_browsertest.cc
@@ -65,7 +65,7 @@ ASSERT_TRUE(frame); blink::WebRuntimeFeatures::EnableDisallowDocumentAccess(true); - content::RenderFrame::FromWebFrame(frame)->LoadHTMLString( + content::RenderFrame::FromWebFrame(frame)->LoadHTMLStringForTesting( frame_html, top_url, "UTF-8", GURL(), false /* replace_current_item */); content::FrameLoadWaiter(content::RenderFrame::FromWebFrame(frame)).Wait(); @@ -98,7 +98,7 @@ ASSERT_EQ("frame6", frame6->AssignedName()); // Load a blank document in a frame from a different origin. - content::RenderFrame::FromWebFrame(frame3)->LoadHTMLString( + content::RenderFrame::FromWebFrame(frame3)->LoadHTMLStringForTesting( frame3_html, different_url, "UTF-8", GURL(), false /* replace_current_item */); content::FrameLoadWaiter(content::RenderFrame::FromWebFrame(frame3)).Wait();
diff --git a/fuchsia/engine/browser/accessibility_bridge_browsertest.cc b/fuchsia/engine/browser/accessibility_bridge_browsertest.cc index df5641f82..e5d7e20 100644 --- a/fuchsia/engine/browser/accessibility_bridge_browsertest.cc +++ b/fuchsia/engine/browser/accessibility_bridge_browsertest.cc
@@ -616,7 +616,8 @@ } } -IN_PROC_BROWSER_TEST_F(AccessibilityBridgeTest, OutOfProcessIframe) { +// TODO(crbug.com/1167266): Flaky test. +IN_PROC_BROWSER_TEST_F(AccessibilityBridgeTest, DISABLED_OutOfProcessIframe) { constexpr int64_t kBindingsId = 1234; // Start a different embedded test server, and load a page on it. The URL for
diff --git a/fuchsia/engine/browser/web_engine_content_browser_client.cc b/fuchsia/engine/browser/web_engine_content_browser_client.cc index a324a4204..18f6640 100644 --- a/fuchsia/engine/browser/web_engine_content_browser_client.cc +++ b/fuchsia/engine/browser/web_engine_content_browser_client.cc
@@ -115,7 +115,7 @@ } void WebEngineContentBrowserClient::OverrideWebkitPrefs( - content::RenderViewHost* rvh, + content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) { // Disable WebSQL support since it's being removed from the web platform. web_prefs->databases_enabled = false;
diff --git a/fuchsia/engine/browser/web_engine_content_browser_client.h b/fuchsia/engine/browser/web_engine_content_browser_client.h index e30c5bc2..7c571cd 100644 --- a/fuchsia/engine/browser/web_engine_content_browser_client.h +++ b/fuchsia/engine/browser/web_engine_content_browser_client.h
@@ -34,7 +34,7 @@ content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() final; std::string GetProduct() final; std::string GetUserAgent() final; - void OverrideWebkitPrefs(content::RenderViewHost* rvh, + void OverrideWebkitPrefs(content::WebContents* web_contents, blink::web_pref::WebPreferences* web_prefs) final; void RegisterBrowserInterfaceBindersForFrame( content::RenderFrameHost* render_frame_host,
diff --git a/fuchsia/engine/context_provider_impl.cc b/fuchsia/engine/context_provider_impl.cc index a3510d0..8026515 100644 --- a/fuchsia/engine/context_provider_impl.cc +++ b/fuchsia/engine/context_provider_impl.cc
@@ -156,8 +156,8 @@ static const base::StringPiece kAllowedArgs[] = { blink::switches::kGpuRasterizationMSAASampleCount, blink::switches::kMinHeightForGpuRasterTile, - cc::switches::kEnableGpuBenchmarking, cc::switches::kEnableClippedImageScaling, + cc::switches::kEnableGpuBenchmarking, switches::kDisableFeatures, switches::kDisableGpuWatchdog, switches::kDisableMipmapGeneration, @@ -171,10 +171,10 @@ switches::kGoogleApiKey, switches::kMaxDecodedImageSizeMb, switches::kRendererProcessLimit, - switches::kWebglAntialiasingMode, - switches::kWebglMSAASampleCount, switches::kVulkanHeapMemoryLimitMb, switches::kVulkanSyncCpuMemoryLimitMb, + switches::kWebglAntialiasingMode, + switches::kWebglMSAASampleCount, }; for (const auto& arg : args->DictItems()) {
diff --git a/gpu/command_buffer/service/raster_decoder.cc b/gpu/command_buffer/service/raster_decoder.cc index 526399e..d07b1bd 100644 --- a/gpu/command_buffer/service/raster_decoder.cc +++ b/gpu/command_buffer/service/raster_decoder.cc
@@ -58,6 +58,7 @@ #include "gpu/command_buffer/service/shared_image_representation.h" #include "gpu/command_buffer/service/skia_utils.h" #include "gpu/command_buffer/service/wrapped_sk_image.h" +#include "gpu/config/gpu_finch_features.h" #include "gpu/vulkan/buildflags.h" #include "skia/ext/legacy_display_globals.h" #include "third_party/skia/include/core/SkCanvas.h" @@ -1948,7 +1949,8 @@ return; } - if (!shared_context_state_->GrContextIsGL()) { + if (!shared_context_state_->GrContextIsGL() || + base::FeatureList::IsEnabled(features::kCanvasOopRasterization)) { // Use Skia to copy texture if raster's gr_context() is not using GL. DoCopySubTextureINTERNALSkia(xoffset, yoffset, x, y, width, height, unpack_flip_y, source_mailbox, dest_mailbox); @@ -2290,6 +2292,8 @@ std::vector<GrBackendSemaphore> begin_semaphores; std::vector<GrBackendSemaphore> end_semaphores; + shared_context_state_->set_need_context_state_reset(true); + // Allow uncleared access, as we manually handle clear tracking. std::unique_ptr<SharedImageRepresentationSkia::ScopedWriteAccess> dest_scoped_access = dest_shared_image->BeginScopedWriteAccess(
diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc index a46c09e..66b6e6d 100644 --- a/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc
@@ -94,6 +94,10 @@ const base::Feature kDefaultEnableOopRasterization{ "DefaultEnableOopRasterization", base::FEATURE_ENABLED_BY_DEFAULT}; +// Enables the use of out of process rasterization for canvas. +const base::Feature kCanvasOopRasterization{"CanvasOopRasterization", + base::FEATURE_DISABLED_BY_DEFAULT}; + #if defined(OS_WIN) // Use a high priority for GPU process on Windows. const base::Feature kGpuProcessHighPriorityWin{
diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h index 350a3f4c..ddfd223a 100644 --- a/gpu/config/gpu_finch_features.h +++ b/gpu/config/gpu_finch_features.h
@@ -29,6 +29,8 @@ GPU_EXPORT extern const base::Feature kDefaultEnableOopRasterization; +GPU_EXPORT extern const base::Feature kCanvasOopRasterization; + #if defined(OS_WIN) GPU_EXPORT extern const base::Feature kGpuProcessHighPriorityWin;
diff --git a/headless/lib/browser/headless_content_browser_client.cc b/headless/lib/browser/headless_content_browser_client.cc index e867e9e..8bcee472 100644 --- a/headless/lib/browser/headless_content_browser_client.cc +++ b/headless/lib/browser/headless_content_browser_client.cc
@@ -24,6 +24,7 @@ #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/storage_partition.h" +#include "content/public/browser/web_contents.h" #include "content/public/common/content_switches.h" #include "headless/app/headless_shell_switches.h" #include "headless/lib/browser/headless_browser_context_impl.h" @@ -159,10 +160,10 @@ } void HeadlessContentBrowserClient::OverrideWebkitPrefs( - content::RenderViewHost* render_view_host, + content::WebContents* web_contents, blink::web_pref::WebPreferences* prefs) { - auto* browser_context = HeadlessBrowserContextImpl::From( - render_view_host->GetProcess()->GetBrowserContext()); + auto* browser_context = + HeadlessBrowserContextImpl::From(web_contents->GetBrowserContext()); base::RepeatingCallback<void(blink::web_pref::WebPreferences*)> callback = browser_context->options()->override_web_preferences_callback(); if (callback)
diff --git a/headless/lib/browser/headless_content_browser_client.h b/headless/lib/browser/headless_content_browser_client.h index 37225f495..e39ac90 100644 --- a/headless/lib/browser/headless_content_browser_client.h +++ b/headless/lib/browser/headless_content_browser_client.h
@@ -24,7 +24,7 @@ // content::ContentBrowserClient implementation: std::unique_ptr<content::BrowserMainParts> CreateBrowserMainParts( const content::MainFunctionParams&) override; - void OverrideWebkitPrefs(content::RenderViewHost* render_view_host, + void OverrideWebkitPrefs(content::WebContents* web_contents, blink::web_pref::WebPreferences* prefs) override; void RegisterBrowserInterfaceBindersForFrame( content::RenderFrameHost* render_frame_host,
diff --git a/infra/config/generated/commit-queue.cfg b/infra/config/generated/commit-queue.cfg index 06a6e76f..690958077 100644 --- a/infra/config/generated/commit-queue.cfg +++ b/infra/config/generated/commit-queue.cfg
@@ -1660,6 +1660,7 @@ ref_regexp_exclude: "refs/branch-heads/4240" ref_regexp_exclude: "refs/branch-heads/4280" ref_regexp_exclude: "refs/branch-heads/4324" + ref_regexp_exclude: "refs/branch-heads/4389" } } verifiers {
diff --git a/infra/config/generated/luci-milo.cfg b/infra/config/generated/luci-milo.cfg index 84903abc..4aca8d6 100644 --- a/infra/config/generated/luci-milo.cfg +++ b/infra/config/generated/luci-milo.cfg
@@ -700,6 +700,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -1412,6 +1416,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -1729,6 +1737,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -2254,6 +2266,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -2750,6 +2766,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -3082,6 +3102,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -3559,6 +3583,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -3906,6 +3934,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -4398,6 +4430,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -4805,6 +4841,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -5241,6 +5281,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -5897,6 +5941,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -6276,6 +6324,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -6664,6 +6716,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -7007,6 +7063,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -7709,6 +7769,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -8106,6 +8170,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -8453,6 +8521,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -8835,6 +8907,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -9141,6 +9217,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -9443,6 +9523,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -9800,6 +9884,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -10207,6 +10295,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -10539,6 +10631,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -10911,6 +11007,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -11253,6 +11353,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -11662,6 +11766,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console" @@ -11977,6 +12085,10 @@ url: "/p/chromium-m88/g/main/console" } links { + text: "m89" + url: "/p/chromium-m89/g/main/console" + } + links { text: "trunk" url: "/p/chromium/g/main/console" alt: "Trunk (ToT) console"
diff --git a/infra/config/generated/realms.cfg b/infra/config/generated/realms.cfg index 3fe2bbb..3d8472f 100644 --- a/infra/config/generated/realms.cfg +++ b/infra/config/generated/realms.cfg
@@ -143,6 +143,7 @@ principals: "project:chromium-m86" principals: "project:chromium-m87" principals: "project:chromium-m88" + principals: "project:chromium-m89" principals: "user:chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" principals: "user:findit-for-me@appspot.gserviceaccount.com" } @@ -189,6 +190,7 @@ principals: "project:chromium-m86" principals: "project:chromium-m87" principals: "project:chromium-m88" + principals: "project:chromium-m89" principals: "user:infra-try-recipes-tester@chops-service-accounts.iam.gserviceaccount.com" } }
diff --git a/infra/config/milestones.json b/infra/config/milestones.json index 49827d19..4b5cd6bb 100644 --- a/infra/config/milestones.json +++ b/infra/config/milestones.json
@@ -13,5 +13,10 @@ "name": "m88", "project": "chromium-m88", "ref": "refs/branch-heads/4324" + }, + "89": { + "name": "m89", + "project": "chromium-m89", + "ref": "refs/branch-heads/4389" } }
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_af.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_af.xtb index 0944a2a..398bef1d 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_af.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_af.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Welkom by Chromium</translation> <translation id="5945387852661427312">Jy meld tans aan met 'n rekening wat deur <ph name="DOMAIN" /> bestuur word en gee sy administrateur beheer oor jou Chromium-data. Jou data sal permanent met hierdie rekening verbind word. As jy uit Chromium afmeld, sal jou data van hierdie toestel af uitgevee word, maar dit sal steeds in jou Google-rekening geberg word.</translation> <translation id="602807004951640891">Deur Chromium te gebruik, stem jy in tot die <ph name="BEGIN_LINK_TOS" />diensbepalings<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Om Chromium jou verstekblaaier te maak: +1. Maak Instellings oop +2. Tik op Verstekblaaierprogram +3. Kies Chromium.</translation> <translation id="6268381023930128611">Meld by Chromium af?</translation> <translation id="6424492062988593837">Chromium het pas beter geword! 'n Nuwe weergawe is beskikbaar.</translation> <translation id="6604711459180487467">Kry 'n beter ervaring in Chromium gegrond op jou ligging.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb index 0bd57d5..8d0f4557 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb
@@ -46,6 +46,10 @@ <translation id="5862307444128926510">ወደ Chromium እንኳን በደህና መጡ</translation> <translation id="5945387852661427312">በ<ph name="DOMAIN" /> ከሚተዳደር መለያ ዘግተው እየወጡና ለአስተዳዳሪው ሙሉውን በChromium ውሂብዎ ቁጥጥር እየሰጡ ነው። የእርስዎ ውሂብ እስከመጨረሻው ከዚህ መለያ ጋር ይተሳሰራል። ከChromium ዘግቶ መውጣት ውሂብዎን ከዚህ መሣሪያ ይሰርዘዋል፣ ነገር ግን በእርስዎ Google መለያ ላይ እንደተከማቸ ይቆያል።</translation> <translation id="602807004951640891">Chromium በመጠቀምዎ በ<ph name="BEGIN_LINK_TOS" />አገልግሎት ውሉ<ph name="END_LINK_TOS" /> ተስማማተዋል።</translation> +<translation id="6119647025869519954">Chromiumን የእርስዎ ነባሪ ለማድረግ፦ +1. ቅንብሮችን ይክፈቱ +2. ነባሪ የአሳሽ መተግበሪያን መታ ያድርጉ +3. Chromiumን ይምረጡ።</translation> <translation id="6268381023930128611">ከChromium ተዘግቶ ይውጣ?</translation> <translation id="6424492062988593837">Chromium አሁን ተሻሽሏል! አዲስ ስሪት አለ።</translation> <translation id="6604711459180487467">Chromium ውስጥ በአካባቢዎ ላይ የተመሠረተ የተሻለ ተሞክሮ ያግኙ።</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ar.xtb index 08526efc..83ba40d 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ar.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ar.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">مرحبًا بك في Chromium</translation> <translation id="5945387852661427312">إنك تسجل الدخول باستخدام حساب تتم إدارته من خلال <ph name="DOMAIN" /> وتمنح مشرفه الحق في التحكم في بياناتك على Chromium. سيؤدي ذلك إلى جعل بياناتك مرتبطة دائمًا بهذا الحساب. كما سيؤدي الخروج من Chromium إلى حذف بياناتك من هذا الجهاز، ولكن ستظل هذه البيانات مخزَّنة على حسابك في Google.</translation> <translation id="602807004951640891">يعني استخدامك لمتصفّح Chromium موافقتك على <ph name="BEGIN_LINK_TOS" />بنود الخدمة<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">لجعل Chromium المتصفِّح التلقائي، اتّبِع الخطوات التالية: +1. افتح Settings (الإعدادات). +2. انقر على Default Browser App (تطبيق المتصفِّح التلقائي). +3. اختَر Chromium.</translation> <translation id="6268381023930128611">هل تريد الخروج من Chromium؟</translation> <translation id="6424492062988593837">لقد أصبح Chromium أفضل من ذي قبل! يتوفر إصدار جديد.</translation> <translation id="6604711459180487467">استمتع بتجربة أفضل في Chromium حسب موقعك.</translation>
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 01fddf33..53d187c 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium লৈ স্বাগতম</translation> <translation id="5945387852661427312">আপুনি <ph name="DOMAIN" />এ পৰিচালনা কৰা এটা একাউণ্টৰ জৰিয়তে ছাইন ইন কৰিছে আৰু সেইটোৰ প্ৰশাসকক আপোনাৰ Chromium ডেটা নিয়ন্ত্ৰণ কৰিবলৈ সুবিধা দিছে। আপোনাৰ ডেটা এই একাউণ্টটোৰ সৈতে স্থায়ীভাৱে সংযুক্ত হৈ থাকিব। Chromiumৰ পৰা ছাইন আউট কৰিলে আপোনাৰ ডেটা মচা যাব কিন্ত সেইবোৰ আপোনাৰ Google একাউণ্টত জমা হৈয়ে থাকিব।</translation> <translation id="602807004951640891">আপুনি Chromium ব্যৱহাৰ কৰি <ph name="BEGIN_LINK_TOS" />সেৱাৰ চৰ্তাৱলী<ph name="END_LINK_TOS" />ত সন্মত হৈছে।</translation> +<translation id="6119647025869519954">Chromiumক আপোনাৰ ডিফ’ল্ট ব্ৰাউজাৰ কৰিবলৈ: +১) ছেটিং খোলক +২) ডিফ’ল্ট ব্ৰাউজাৰ এপত টিপক +৩) Chromium বাছনি কৰক।</translation> <translation id="6268381023930128611">Chromiumৰ পৰা ছাইন আউট কৰিবনে?</translation> <translation id="6424492062988593837">Chromium আৰু উন্নত হৈছে! এটা নতুন সংস্কৰণ আছে।</translation> <translation id="6604711459180487467">আপোনাৰ অৱস্থানৰ ওপৰত ভিত্তি কৰি Chromiumত উৎকৃষ্ট অভিজ্ঞতা লাভ কৰক।</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_az.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_az.xtb index c73944ad..98c6a7d 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_az.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_az.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium'a xoş gəlmisiniz</translation> <translation id="5945387852661427312"><ph name="DOMAIN" /> tərəfindən idarə olunan hesab ilə daxil olursunuz və onun administratoruna Chromium datanız üzərində nəzarəti verirsiniz. Datanız həmişəlik bu hesab ilə əlaqələndiriləcək. Chromium'dan çıxmaq datanızı bu cihazdan siləcək, lakin data Google Hesabında qalacaq.</translation> <translation id="602807004951640891">Chromium istifadə etməklə, <ph name="BEGIN_LINK_TOS" />Xidmət Şərtləri<ph name="END_LINK_TOS" /> ilə razılaşırsınız.</translation> +<translation id="6119647025869519954">Chromium'u defolt etmək üçün: +1. Ayarları açın +2. Defolt Brauzer Tətbiqinə toxunun +3. Chromium seçin.</translation> <translation id="6268381023930128611">Chromium'dan çıxılsın?</translation> <translation id="6424492062988593837">Chromium yeniləndi! Yeni versiya əlçatandır.</translation> <translation id="6604711459180487467">Məkanınıza əsasən Chromium'da daha yaxşı təcrübə əldə edin.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_be.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_be.xtb index d0cbc59..eaab0d58 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_be.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_be.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Вас вітае Chromium</translation> <translation id="5945387852661427312">Вы ўваходзіце праз уліковы запіс, які кіруецца даменам <ph name="DOMAIN" />, што дае адміністратару кантроль над вашымі данымі з браўзера Chromium. Вашы даныя будуць назаўсёды прывязаны да гэтага ўліковага запісу. Калі выйсці з браўзера Chromium, вашы даныя будуць выдалены з гэтай прылады, але застануцца ва Уліковым запісе Google.</translation> <translation id="602807004951640891">Карыстаючыся Chromium, вы згаджаецеся з <ph name="BEGIN_LINK_TOS" />Умовамі выкарыстання<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Як зрабіць Chromium стандартным браўзерам: +1. Адкрыйце Settings. +2. Націсніце Default Browser App. +3. Выберыце Chromium.</translation> <translation id="6268381023930128611">Выйсці з уліковага запісу ў браўзеры Chromium?</translation> <translation id="6424492062988593837">Chromium стаў яшчэ лепшым! З'явілася новая версія.</translation> <translation id="6604711459180487467">Дзякуючы даным аб вашым месцазнаходжанні вы зможаце карыстацца палепшанымі функцыямі Chromium.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_bg.xtb index 739f7732..711fa075 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_bg.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_bg.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Добре дошли в Chromium</translation> <translation id="5945387852661427312">Влизате с профил, управляван от <ph name="DOMAIN" />, и предоставяте на администратора му контрол над данните си в Chromium. Те ще се свържат за постоянно с този профил. При излизане от браузъра информацията ви ще се изтрие от устройството, но ще продължи да се съхранява в профила ви в Google.</translation> <translation id="602807004951640891">С използването на Chromium приемате <ph name="BEGIN_LINK_TOS" />Общите условия<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">За да зададете Chromium като браузъра си по подразбиране: +1. Отворете настройките. +2. Докоснете „Стандартно прилож. за браузър“. +3. Изберете Chromium.</translation> <translation id="6268381023930128611">Искате ли да излезете от Chromium?</translation> <translation id="6424492062988593837">Chromium току-що се подобри! Налице е нова версия.</translation> <translation id="6604711459180487467">Подобрете работата си в Chromium въз основа на местоположението си.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_bs.xtb index d9ca4e91..cbacf16 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_bs.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_bs.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Dobro došli u Chromium</translation> <translation id="5945387852661427312">Prijavljujete se s računom kojim upravlja domena <ph name="DOMAIN" /> i dajete njenom administratoru kontrolu nad svojim podacima iz Chromiuma. Vaši podaci će se trajno povezati s ovim računom. Odjavom iz Chromiuma će se izbrisati vaši podaci s ovog uređaja, ali će ostati pohranjeni na vašem Google računu.</translation> <translation id="602807004951640891">Korištenjem Chromiuma prihvatate <ph name="BEGIN_LINK_TOS" />Uslove korištenja usluge<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Da postavite Chromium kao zadani preglednik: +1. Otvorite Postavke +2. Dodirnite Zadana aplikacija preglednika +3. Odaberite Chromium.</translation> <translation id="6268381023930128611">Odjaviti se iz Chromiuma?</translation> <translation id="6424492062988593837">Chromium je sada još bolji! Dostupna je nova verzija.</translation> <translation id="6604711459180487467">Ostvarite bolje iskustvo u Chromiumu prema vašoj lokaciji.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ca.xtb index 439450d..f20ce5e3 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ca.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ca.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Us donem la benvinguda a Chromium</translation> <translation id="5945387852661427312">Estàs iniciant la sessió amb un compte gestionat per <ph name="DOMAIN" /> i estàs donant a l'administrador el control de les teves dades de Chromium. Les dades passaran a estar vinculades a aquest compte permanentment. Si tanques la sessió de Chromium, se suprimiran les teves dades d'aquest dispositiu, però continuaran emmagatzemades al teu compte de Google.</translation> <translation id="602807004951640891">En utilitzar Chromium, acceptes les <ph name="BEGIN_LINK_TOS" />condicions del servei<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Per establir Chromium com a navegador predeterminat: +1. Obre Configuració. +2. Toca Aplicació de navegador predeterminada. +3. Selecciona Chromium.</translation> <translation id="6268381023930128611">Voleu tancar la sessió de Chromium?</translation> <translation id="6424492062988593837">Chrome ara és millor. Hi ha una versió nova disponible.</translation> <translation id="6604711459180487467">Comparteix la teva ubicació per gaudir dels avantatges de Chromium.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_cs.xtb index 43158a9..11107e1 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_cs.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_cs.xtb
@@ -46,6 +46,10 @@ <translation id="5862307444128926510">Vítejte v prohlížeči Chromium</translation> <translation id="5945387852661427312">Přihlašujete se pomocí účtu spravovaného doménou <ph name="DOMAIN" /> a poskytujete jeho správci kontrolu nad svými daty prohlížeče Chromium. Vaše data budou trvale přidružena k tomuto účtu. Odhlášením z prohlížeče Chromium svá data smažete z tohoto zařízení, ve vašem účtu Google však uložena zůstanou.</translation> <translation id="602807004951640891">Používáním prohlížeče Chromium vyjadřujete souhlas se <ph name="BEGIN_LINK_TOS" />smluvními podmínkami<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Postup nastavení Chromia jako výchozího prohlížeče: +1. Otevřete nastavení. +2. Klepněte na Výchozí prohlížeč. +3. Vyberte Chromium.</translation> <translation id="6268381023930128611">Odhlásit se z prohlížeče Chromium?</translation> <translation id="6424492062988593837">Chromium je opět o něco lepší. K dispozici je nová verze.</translation> <translation id="6604711459180487467">Získejte v prohlížeči Chromium lepší funkce založené na poloze.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_da.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_da.xtb index f9f0f20..b3a4b8c 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_da.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_da.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Velkommen til Chromium</translation> <translation id="5945387852661427312">Du er ved at logge ind med en konto, der administreres af <ph name="DOMAIN" />, hvilket giver administratoren kontrol over dine Chromium-data. Dine data tilknyttes denne konto permanent. Hvis du logger ud af Chromium, slettes dine data fra denne enhed, men de forbliver gemt på din Google-konto.</translation> <translation id="602807004951640891">Når du bruger Chromium, accepterer du <ph name="BEGIN_LINK_TOS" />servicevilkårene<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Sådan gør du Chromium til din standardbrowser: +1. Åbn Indstillinger +2. Tryk på Standardbrowserapp +3. Vælg Chromium.</translation> <translation id="6268381023930128611">Vil du logge ud af Chromium?</translation> <translation id="6424492062988593837">Chromium er lige blevet bedre! Der er en ny tilgængelig version.</translation> <translation id="6604711459180487467">Angiv din placering, og få en bedre oplevelse, når du bruger Chromium.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_el.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_el.xtb index c5c3e07..2b0d75f 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_el.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_el.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Καλώς ήρθατε στο Chromium</translation> <translation id="5945387852661427312">Συνδέεστε με έναν λογαριασμό του οποίου η διαχείριση γίνεται από <ph name="DOMAIN" /> και παραχωρείτε τον έλεγχο της διαχείρισης των δεδομένων σας Chromium. Τα δεδομένα θα συσχετιστούν με τον λογαριασμό. Η αποσύνδεση από το Chromium θα διαγράψει τα δεδομένα από τη συσκευή, αλλά θα διατηρηθούν στο Λογαριασμό σας Google.</translation> <translation id="602807004951640891">Με τη χρήση του Chromium, αποδέχεστε τους <ph name="BEGIN_LINK_TOS" />Όρους Παροχής Υπηρεσιών<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Για να κάνετε το Chromium το προεπιλεγμένο πρόγραμμα περιήγησής σας: +1. Ανοίξτε τις Ρυθμίσεις. +2. Πατήστε Προεπιλεγμένη εφαρμογή προγράμματος περιήγησης. +3. Επιλέξτε το Chromium.</translation> <translation id="6268381023930128611">Θέλετε να αποσυνδεθείτε από το Chromium;</translation> <translation id="6424492062988593837">Το Chromium μόλις βελτιώθηκε! Μια νέα έκδοση είναι διαθέσιμη.</translation> <translation id="6604711459180487467">Απολαύστε μια καλύτερη εμπειρία στο Chromium βάσει της τοποθεσίας σας.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_en-GB.xtb index 8652ec1..0f3a102 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_en-GB.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_en-GB.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Welcome to Chromium</translation> <translation id="5945387852661427312">You are signing in with an account managed by <ph name="DOMAIN" /> and giving its administrator control over your Chromium data. Your data will become permanently tied to this account. Signing out of Chromium will delete your data from this device, but it will remain stored in your Google Account.</translation> <translation id="602807004951640891">By using Chromium, you agree to the <ph name="BEGIN_LINK_TOS" />Terms of Service<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">To make Chromium your default: +1. Open settings +2. Tap the default browser app +3. Select Chromium.</translation> <translation id="6268381023930128611">Sign out of Chromium?</translation> <translation id="6424492062988593837">Chromium just got better! A new version is available.</translation> <translation id="6604711459180487467">Get a better experience in Chromium based on your location.</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 07f0fd4d..e0d19cc0 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
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Bienvenido a Chromium</translation> <translation id="5945387852661427312">Estás accediendo con una cuenta que administra <ph name="DOMAIN" /> y dándole permiso a su administrador para que controle tus datos de Chromium. Tus datos se vincularán de forma permanente a esta cuenta. Si sales de Chromium, los datos se borrarán de este dispositivo, pero quedarán almacenados en tu cuenta de Google.</translation> <translation id="602807004951640891">Al usar Chromium, aceptas las <ph name="BEGIN_LINK_TOS" />Condiciones del Servicio<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Para establecer Chromium como navegador predeterminado, haz lo siguiente: +1. Abre Ajustes. +2. Presiona App de navegador predeterminada +3. Selecciona Chromium.</translation> <translation id="6268381023930128611">¿Salir de Chromium?</translation> <translation id="6424492062988593837">¡Chromium mejoró! Hay una nueva versión disponible.</translation> <translation id="6604711459180487467">Disfruta de una mejor experiencia en Chromium según tu ubicación.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_es.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_es.xtb index bc9d073..2171f8b 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_es.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_es.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Te damos la bienvenida a Chromium</translation> <translation id="5945387852661427312">Estás iniciando sesión con una cuenta gestionada por <ph name="DOMAIN" /> y vas a otorgar a su administrador el control sobre tus datos de Chromium. Tus datos se vincularán de forma permanente a esta cuenta. Al cerrar sesión en Chromium, tus datos se eliminarán de este dispositivo, pero permanecerán almacenados en tu cuenta de Google.</translation> <translation id="602807004951640891">Al usar Chromium, aceptas los <ph name="BEGIN_LINK_TOS" />Términos del Servicio<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Para establecer Chromium como navegador predeterminado, haz lo siguiente: +1. Abre Configuración +2. Toca Aplicación de navegador predeterminada +3. Selecciona Chromium.</translation> <translation id="6268381023930128611">¿Cerrar sesión en Chromium?</translation> <translation id="6424492062988593837">Chromium sigue mejorando. Hay una nueva versión disponible.</translation> <translation id="6604711459180487467">Disfruta de una mejor experiencia en Chromium según tu ubicación.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_et.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_et.xtb index 5ac2803..210e52af 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_et.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_et.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Tere tulemast Chromiumi</translation> <translation id="5945387852661427312">Logite sisse kontoga, mida haldab <ph name="DOMAIN" />, ja annate selle administraatorile üle Chromiumi andmete juhtimise. Teie andmed seotakse jäädavalt selle kontoga. Chromiumist väljalogimisel kustutatakse teie andmed sellest seadmest, kuid need jäävad alles teie Google'i kontole.</translation> <translation id="602807004951640891">Chromiumi kasutamisel nõustute <ph name="BEGIN_LINK_TOS" />teenusetingimustega<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Chromiumi vaikebrauseriks määramiseks tehke järgmist. +1. Avage menüü Seaded. +2. Puudutage valikut Vaikebrauserirakendus. +3. Valige Chromium.</translation> <translation id="6268381023930128611">Kas logida Chromiumist välja?</translation> <translation id="6424492062988593837">Chromium muutus just veelgi paremaks! Saadaval on uus versioon.</translation> <translation id="6604711459180487467">Täiustage Chromiumis oma kasutuskogemust asukohateabe abil.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_eu.xtb index 17ecd05f..eedf3a5 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_eu.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_eu.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Ongi etorri Chromium-era</translation> <translation id="5945387852661427312"><ph name="DOMAIN" /> domeinuak kudeatutako kontu batekin hasi duzu saioa eta administratzaileari eman diozu Chromium datuen kontrola. Datuak betiko lotuko dira kontu honekin. Saioa amaitzen baduzu, Chromium datuak ezabatu egingo dira gailutik, baina Google-ko kontuan izango dituzu gordeta.</translation> <translation id="602807004951640891">Chromium erabiltzen baduzu, onartu egingo dituzu <ph name="BEGIN_LINK_TOS" />Zerbitzu-baldintzak<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Chromium arakatzaile lehenetsi bihurtzeko: +1. Ireki Ezarpenak. +2. Sakatu Arakatzaile lehenetsia. +3. Hautatu Chromium.</translation> <translation id="6268381023930128611">Chromium-eko saioa amaitu?</translation> <translation id="6424492062988593837">Chromium hobetu egin dugu! Bertsio berria duzu erabilgarri.</translation> <translation id="6604711459180487467">Atera etekin handiagoa Chromium-i kokapena erabilita.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb index 5e9daaa..d8539f6 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">به Chromium خوش آمدید</translation> <translation id="5945387852661427312">هماکنون درحال ورود به سیستم با حسابی مدیریتشده توسط <ph name="DOMAIN" /> و دادن کنترل دادههای Chromium خود به سرپرست این حساب هستید. دادههایتان بهطور دائم به این حساب مرتبط میشوند. با خروج از Chrome، دادههایتان از این دستگاه حذف میشوند اما همچنان در حساب Google شما باقی میماند.</translation> <translation id="602807004951640891">بااستفاده از Chromium، موافقت خود را با <ph name="BEGIN_LINK_TOS" />شرایط خدمات<ph name="END_LINK_TOS" /> اعلام میکنید.</translation> +<translation id="6119647025869519954">برای تنظیم Chromium بهعنوان مرورگر پیشفرض: +۱. «تنظیمات» را باز کنید +۲. روی «برنامه مرورگر پیشفرض» ضربه بزنید +۳. Chromium را انتخاب کنید.</translation> <translation id="6268381023930128611">از Chromium خارج میشوید؟</translation> <translation id="6424492062988593837">Chromium بهتر شده است! نسخه جدید آن در دسترس است.</translation> <translation id="6604711459180487467">تجربه بهتری از Chromium بر مبنای مکانتان کسب کنید.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fi.xtb index 9e6740a54..6ea8a3be 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_fi.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fi.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Tervetuloa Chromiumiin</translation> <translation id="5945387852661427312">Olet kirjautumassa sisään verkkotunnuksen <ph name="DOMAIN" /> hallitsemalla tilillä ja antamassa sen järjestelmänvalvojalle oikeuden hallita Chromium-tietojasi. Tietosi liitetään pysyvästi tähän tiliin. Chromiumista uloskirjautuminen poistaa tietosi tältä laitteelta, mutta ne säilyvät Google-tililläsi.</translation> <translation id="602807004951640891">Käyttämällä Chromiumia hyväksyt <ph name="BEGIN_LINK_TOS" />käyttöehdot<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Näin teet Chromiumista oletusselaimesi: +1. Avaa asetukset +2. Valitse Oletusselain +3. Valitse Chromium.</translation> <translation id="6268381023930128611">Kirjaudutaanko ulos?</translation> <translation id="6424492062988593837">Chromiumista tuli juuri entistä parempi! Uusi versio on saatavilla.</translation> <translation id="6604711459180487467">Parannamme Chromium-käyttökokemustasi sijaintisi perusteella.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb index 5b42171..3fb5c05 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Maligayang Pagdating sa Chromium</translation> <translation id="5945387852661427312">Nag-sign in ka gamit ang account na pinamamahalaan ng <ph name="DOMAIN" /> at binibigyan mo ang administrator nito ng kontrol sa iyong data sa Chromium. Permanenteng mauugnay ang data mo sa account na ito. Made-delete ang data mo sa device na ito kapag nag-sign out ka sa Chromium, ngunit mananatili itong naka-store sa Google Account mo.</translation> <translation id="602807004951640891">Sa paggamit ng Chromium, sumasang-ayon ka sa <ph name="BEGIN_LINK_TOS" />Mga Tuntunin ng Serbisyo<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Para itakda ang Chromium bilang iyong default: +1. Buksan ang Mga Setting +2. I-tap ang Default na Browser App +3. Piliin ang Chromium.</translation> <translation id="6268381023930128611">Mag-sign out sa Chromium?</translation> <translation id="6424492062988593837">Naging mas mahusay na ang Chromium! Available na ang bagong bersyon.</translation> <translation id="6604711459180487467">Magkaroon ng mas mahusay na karanasan sa Chromium batay sa iyong lokasyon.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fr.xtb index e1da138..c46a9fea 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_fr.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fr.xtb
@@ -47,6 +47,9 @@ <translation id="5862307444128926510">Bienvenue dans Chromium</translation> <translation id="5945387852661427312">Vous vous connectez avec un compte géré par <ph name="DOMAIN" />, ce qui permettra à son administrateur de contrôler vos données Chromium. Celles-ci seront définitivement associées à ce compte. Si vous vous déconnectez de Chromium, vos données seront supprimées de cet appareil, mais elles seront conservées dans votre compte Google.</translation> <translation id="602807004951640891">En utilisant Chromium, vous acceptez les <ph name="BEGIN_LINK_TOS" />Conditions d'utilisation<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Pour définir Chromium comme votre navigateur par défaut, procédez comme suit : +1. Accédez à "Réglages" Appuyez sur "Navigateur par défaut" +3. Sélectionnez "Chromium".</translation> <translation id="6268381023930128611">Se déconnecter de Chromium ?</translation> <translation id="6424492062988593837">Chromium a été amélioré ! Une nouvelle version est désormais disponible.</translation> <translation id="6604711459180487467">Améliorez votre expérience dans Chromium grâce à votre position.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_gl.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_gl.xtb index 09a08f5c..bedc207 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_gl.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_gl.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Dámosche a benvida a Chromium</translation> <translation id="5945387852661427312">Estás iniciando sesión cunha conta xestionada por <ph name="DOMAIN" /> e proporcionándolle ao seu administrador o control dos teus datos de Chromium, que quedarán ligados permanentemente a esta conta. Se pechas sesión en Chromium, eliminaranse os teus datos deste dispositivo, pero seguirán almacenados na túa conta de Google.</translation> <translation id="602807004951640891">Ao usar Chromium, aceptas as <ph name="BEGIN_LINK_TOS" />Condicións de servizo<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Para facer que Chromium sexa o teu navegador predeterminado, sigue estes pasos: +1. Abre Configuración +2. Toca Aplicación de navegador predeterminada +3. Selecciona Chromium.</translation> <translation id="6268381023930128611">Pechar sesión en Chromium?</translation> <translation id="6424492062988593837">Chromium introduciu melloras. Está dispoñible unha nova versión.</translation> <translation id="6604711459180487467">Obtén unha mellor experiencia en Chromium baseada na túa localización.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb index edd03e7..3c535e6f 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium માં સ્વાગત છે</translation> <translation id="5945387852661427312">તમે <ph name="DOMAIN" /> દ્વારા મેનેજ એકાઉન્ટમાં સાઇન ઇન કરી રહ્યાં છો અને તમારા Chromium ડેટા પર એનું એડમિન નિયંત્રણ આપી રહ્યાં છો. તમારો ડેટા આ એકાઉન્ટ સાથે કાયમીરૂપે જોડાયેલું રહેશે. Chromiumમાંથી સાઇન આઉટ કરવું આ ડિવાઇસ પરથી તમારો ડેટા ડિલીટ કરશે, પરંતુ એ તમારા Google એકાઉન્ટમાં સ્ટોર રહેશે.</translation> <translation id="602807004951640891">Chromiumનો ઉપયોગ કરીને, તમે તેની <ph name="BEGIN_LINK_TOS" />સેવાની શરતો<ph name="END_LINK_TOS" /> સાથે સંમત થાઓ છો.</translation> +<translation id="6119647025869519954">Chromiumને તમારું ડિફૉલ્ટ બ્રાઉઝર બનાવવા માટે: +1. સેટિંગ ખોલો +2. ડિફૉલ્ટ બ્રાઉઝર ઍપ પર ટૅપ કરો +3. Chromium પસંદ કરો.</translation> <translation id="6268381023930128611">Chromiumમાંથી સાઇન આઉટ કરીએ?</translation> <translation id="6424492062988593837">Chrome હવે વધારે સારું બન્યું છે! નવું વર્ઝન ઉપલબ્ધ છે.</translation> <translation id="6604711459180487467">તમારા સ્થાનના આધારે Chromium માં બહેતર અનુભવ મેળવો.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_hi.xtb index 73ee6fa..0b1c898 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_hi.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_hi.xtb
@@ -46,6 +46,10 @@ <translation id="5862307444128926510">क्रोमियम में आपका स्वागत है</translation> <translation id="5945387852661427312">आप <ph name="DOMAIN" /> से प्रबंधित खाते में साइन इन कर रहे हैं और उसके एडमिन को अपने क्रोमियम डेटा पर नियंत्रण दे रहे हैं. आपका डेटा इस खाते से स्थायी रूप से जुड़ जाएगा. क्रोमियम से साइन आउट करने से आपका डेटा इस डिवाइस से मिट जाएगा, लेकिन वह आपके Google खाते में बना रहेगा.</translation> <translation id="602807004951640891">Chromium का इस्तेमाल करने का मतलब है कि आप <ph name="BEGIN_LINK_TOS" />सेवा की शर्तों<ph name="END_LINK_TOS" /> से सहमत हैं.</translation> +<translation id="6119647025869519954">Chromium को डिफ़ॉल्ट ब्राउज़र के तौर पर सेट करने के लिए: +1. Settings खोलें +2. डिफ़ॉल्ट ब्राउज़र ऐप्लिकेशन पर टैप करें +3. Chromium चुनें.</translation> <translation id="6268381023930128611">क्रोमियम से प्रस्थान करें?</translation> <translation id="6424492062988593837">Chrome अब बेहतर हो गया है! नया वर्शन उपलब्ध है.</translation> <translation id="6604711459180487467">अपने स्थान के आधार पर क्रोमियम में बेहतर अनुभव पाएं.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_hr.xtb index 1dbc322..4787053 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_hr.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_hr.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Dobro došli u Chromium</translation> <translation id="5945387852661427312">Prijavljujete se računom kojim upravlja <ph name="DOMAIN" /> i njegovom administratoru dajete kontrolu nad svojim podacima u Chromiumu. Vaši će se podaci trajno povezati s tim računom. Ako se odjavite s Chromiuma, vaši će se podaci izbrisati s ovog uređaja, no ostat će pohranjeni na vašem Google računu.</translation> <translation id="602807004951640891">Upotrebom Chromiuma pristajete na <ph name="BEGIN_LINK_TOS" />Uvjete pružanja usluge<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Da biste postavili Chromium kao zadani preglednik: +1. Otvorite postavke. +2. Dodirnite opciju Zadana aplikacija preglednika. +3. Odaberite Chromium.</translation> <translation id="6268381023930128611">Želite li se odjaviti iz Chromiuma?</translation> <translation id="6424492062988593837">Chromium je postao još bolji! Dostupna je nova verzija.</translation> <translation id="6604711459180487467">Chromium će vam pružiti više ako mu omogućite pristup lokaciji.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_hu.xtb index adab387f..4350c8aa 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_hu.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_hu.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Üdvözli a Chromium!</translation> <translation id="5945387852661427312">Egy <ph name="DOMAIN" /> által felügyelt fiókkal jelentkezik be, és engedélyezi az adminisztrátor számára a Chromium-adatok kezelését. Adatai állandó jelleggel ehhez a fiókhoz lesznek társítva. A Chromiumból való kijelentkezéssel törli adatait erről az eszközről, de azok továbbra is megmaradnak Google-fiókjában.</translation> <translation id="602807004951640891">A Chromium használatával elfogadja az <ph name="BEGIN_LINK_TOS" />általános szerződési feltételeket<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">A Chromium beállítása alapértelmezett böngészőként: +1. Nyissa meg a Beállításokat. +2. Koppintson az Alapértelmezett böngésző lehetőségre. +3. Válassza ki a Chromium böngészőt.</translation> <translation id="6268381023930128611">Kijelentkezik a Chromiumból?</translation> <translation id="6424492062988593837">A Chromium most még jobb lett! Új verzió áll rendelkezésre.</translation> <translation id="6604711459180487467">A helyadatokkal jobb felhasználói élményben lehet része a Chromium használatakor.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_hy.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_hy.xtb index c5039d3..6873124 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_hy.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_hy.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Բարի գալուստ Chromium</translation> <translation id="5945387852661427312">Դուք մուտք եք գործում <ph name="DOMAIN" /> տիրույթի կողմից կառավարվող հաշիվ՝ դրա ադմինիստրատորին թույլ տալով վերահսկել ձեր Chromium-ի տվյալները: Ձեր տվյալները մշտապես կկապվեն այս հաշվի հետ: Եթե դուրս գաք Chromium-ից, այս սարքում պահված տվյալները կջնջվեն, սակայն կպահպանվեն ձեր Google հաշվում:</translation> <translation id="602807004951640891">Օգտագործելով Chromium-ը՝ դուք ընդունում եք <ph name="BEGIN_LINK_TOS" />Օգտագործման պայմանները<ph name="END_LINK_TOS" />։</translation> +<translation id="6119647025869519954">Chromium-ը ձեր կանխադրված դիտարկիչը դարձնելու համար․ +1. Բացեք կարգավորումները։ +2. Հպեք «Դիտարկիչի կանխադրված հավելված»։ +3. Ընտրեք Chromium-ը։</translation> <translation id="6268381023930128611">Դուրս գա՞լ Chromium-ից:</translation> <translation id="6424492062988593837">Chromium-ը կատարելագործվել է: Մատչելի է նոր տարբերակ:</translation> <translation id="6604711459180487467">Chromium-ի աշխատանքն ավելի արդյունավետ դարձնելու համար թույլատրեք ձեր տեղադրության տվյալների օգտագործումը:</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_id.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_id.xtb index 15191cf..91b5879 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_id.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_id.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Selamat Datang di Chromium</translation> <translation id="5945387852661427312">Anda masuk dengan akun yang dikelola oleh <ph name="DOMAIN" /> dan memberikan kontrol data Chromium kepada administrator. Data Anda akan terikat dengan akun ini secara permanen. Bila Anda keluar dari Chromium, data akan dihapus dari perangkat ini, namun tetap disimpan di Akun Google.</translation> <translation id="602807004951640891">Dengan menggunakan Chromium, Anda menyetujui <ph name="BEGIN_LINK_TOS" />Persyaratan Layanan<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Untuk menjadikan Chromium sebagai default: +1. Buka Setelan +2. Ketuk Aplikasi Browser Default +3. Pilih Chromium.</translation> <translation id="6268381023930128611">Keluar dari Chromium?</translation> <translation id="6424492062988593837">Chromium jadi semakin baik! Versi baru telah tersedia.</translation> <translation id="6604711459180487467">Dapatkan pengalaman yang lebih baik di Chromium berdasarkan lokasi Anda.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_is.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_is.xtb index 3c06690..3f5706f9 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_is.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_is.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Velkomin(n) í Chromium</translation> <translation id="5945387852661427312">Þú ert að skrá þig út af reikningi sem stýrt er af <ph name="DOMAIN" /> og veitir í leiðinni stjórnanda lénsins umsjón með Chromium gögnunum þínum. Gögnin þín verða tengd við þennan reikning til frambúðar. Ef þú skráir þig út af Chromium verður gögnunum þínum á þessu tæki eytt, en þau verða áfram geymd á Google reikningnum þínum.</translation> <translation id="602807004951640891">Með því að nota Chromium samþykkirðu <ph name="BEGIN_LINK_TOS" />þjónustuskilmálana<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Til að gera Chromium að sjálfgefnum vafra: +1. Opnaðu Stillingar +2. Ýttu á „Sjálfgefið vafraforrit“ +3. Veldu Chromium.</translation> <translation id="6268381023930128611">Skrá út af Chromium?</translation> <translation id="6424492062988593837">Chromium er nú enn betra! Ný útgáfa er í boði.</translation> <translation id="6604711459180487467">Fáðu betri upplifun í Chromium út frá staðsetningu þinni.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_it.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_it.xtb index 0af53ee..dc3c10d 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_it.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_it.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Benvenuto in Chromium</translation> <translation id="5945387852661427312">Stai per eseguire l'accesso con un account gestito da <ph name="DOMAIN" /> e consentire al relativo amministratore di avere il controllo dei tuoi dati di Chromium. I tuoi dati verranno associati definitivamente a questo account. Se esci da Chromium, i dati verranno eliminati da questo dispositivo, ma rimarranno memorizzati nel tuo Account Google.</translation> <translation id="602807004951640891">Se utilizzi Chromium, accetti i <ph name="BEGIN_LINK_TOS" />Termini di servizio<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Per impostare Chromium come browser predefinito: +1. Apri le Impostazioni. +2. Tocca App browser predefinita. +3. Seleziona Chromium.</translation> <translation id="6268381023930128611">Uscire da Chromium?</translation> <translation id="6424492062988593837">Chromium è stato migliorato. È disponibile una nuova versione.</translation> <translation id="6604711459180487467">Migliora la tua esperienza in Chromium tramite l'accesso alla tua posizione.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb index 007325c7..46f5f4f 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium へようこそ</translation> <translation id="5945387852661427312"><ph name="DOMAIN" /> で管理されているアカウントでログインして、Chromium データの管理を管理者に委ねようとしています。この操作を行うと、データはこのアカウントに恒久的に関連付けられます。Chromium からログアウトすると、データはこのデバイスから削除されますが、Google アカウントには残ります。</translation> <translation id="602807004951640891">Chromium を使用すると、<ph name="BEGIN_LINK_TOS" />利用規約<ph name="END_LINK_TOS" />に同意したことになります。</translation> +<translation id="6119647025869519954">Chromium を既定のブラウザにするには: +1. [設定] を開きます。 +2. [デフォルトのブラウザアプリ] をタップします。 +3. Chromium を選択します。</translation> <translation id="6268381023930128611">Chromium からログアウトしますか?</translation> <translation id="6424492062988593837">Chromium のアップデートが見つかりました。新しいバージョンが利用可能です。</translation> <translation id="6604711459180487467">ユーザーの場所に応じて Chromium を使いやすくします。</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ka.xtb index 64cd23bf..8af5b42 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ka.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ka.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">მოგესალმებათ Chromium!</translation> <translation id="5945387852661427312">თქვენ შედიხართ ანგარიშით, რომელსაც მართავს <ph name="DOMAIN" /> და მის ადმინისტრატორს თქვენი Chromium მონაცემების მართვის საშუალებას აძლევთ. Chromium-იდან გასვლის შემთხვევაში, თქვენი მონაცემები წაიშლება ამ მოწყობილობიდან, თუმცა ისინი თქვენს Google ანგარიშში შენარჩუნდება.</translation> <translation id="602807004951640891">Chromium-ის გამოყენებით თქვენ ეთანხმებით <ph name="BEGIN_LINK_TOS" />მომსახურების პირობებს<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Chromium-ის ნაგულისხმევად დასაყენებლად: +1. გახსენით „პარამეტრები“ +2. შეეხეთ „ბრაუზერის ნაგულისხმევ აპს“ +3. აირჩიეთ Chromium.</translation> <translation id="6268381023930128611">გსურთ Chromium-იდან გამოსვლა?</translation> <translation id="6424492062988593837">Chromium გაუმჯობესდა! ხელმისაწვდომია ახალი ვერსია.</translation> <translation id="6604711459180487467">გააუმჯობესეთ Chromium-ის ფუნქციები თქვენი მდებარეობის საფუძველზე.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_kk.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_kk.xtb index 74914c8..2dd6d335 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_kk.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_kk.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium жүйесіне қош келдіңіз</translation> <translation id="5945387852661427312"><ph name="DOMAIN" /> басқаратын есептік жазбамен кірудесіз және оның әкімшісіне Chromium деректерін басқару құқығы берілуде. Деректер бұл есептік жазбаға біржола байланыстырылады. Chromium жүйесінен шыққанда, деректер бұл құрылғыдан жойылады, бірақ Google есептік жазбасында сақталады.</translation> <translation id="602807004951640891">Chromium пайдалана отырып, <ph name="BEGIN_LINK_TOS" />Қызмет көрсету шарттарына<ph name="END_LINK_TOS" /> келісесіз.</translation> +<translation id="6119647025869519954">Chromium браузерін әдепкі браузер ету үшін: +1. Параметрлерді ашыңыз. +2. "Әдепкі браузер қолданбасы" түймесін түртіңіз. +3. Chromium браузерін таңдаңыз.</translation> <translation id="6268381023930128611">Chromium жүйесінен шығасыз ба?</translation> <translation id="6424492062988593837">Chromium жақсара түсті! Жаңа нұсқасы қолжетімді.</translation> <translation id="6604711459180487467">Орналасқан жеріңізге байланысты Chromium браузерін пайдалануда жақсырақ тәжірибеге қол жеткізіңіз.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_km.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_km.xtb index bd0176ec..2d49799 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_km.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_km.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">ស្វាគមន៍មកកាន់ Chromium</translation> <translation id="5945387852661427312">អ្នកកំពុងចូលដោយប្រើគណនីដែលគ្រប់គ្រងដោយ <ph name="DOMAIN" /> និងអនុញ្ញាតឲ្យអ្នកគ្រប់គ្រងរបស់វាធ្វើការគ្រប់គ្រងទិន្នន័យ Chromium របស់អ្នក។ ទិន្នន័យរបស់អ្នកនឹងភ្ជាប់ជាមួយគណនីនេះជាអចិន្ត្រៃយ៍។ ការចេញពី Chromium នឹងលុបទិន្នន័យរបស់អ្នកចេញពីឧបករណ៍នេះ ប៉ុន្តែវានឹងនៅតែរក្សាទុកក្នុងគណនី Google របស់អ្នកដដែល។</translation> <translation id="602807004951640891">ប្រសិនបើប្រើ Chromium មានន័យថាអ្នកយល់ព្រមតាម<ph name="BEGIN_LINK_TOS" />លក្ខខណ្ឌប្រើប្រាស់<ph name="END_LINK_TOS" />។</translation> +<translation id="6119647025869519954">ដើម្បីកំណត់ Chromium ជាកម្មវិធីរុករកតាមអ៊ីនធឺណិតលំនាំដើមរបស់អ្នក៖ +1. បើកការកំណត់ +2. ចុចកម្មវិធីរុករកតាមអ៊ីនធឺណិតលំនាំដើម +3. ជ្រើសរើស Chromium។</translation> <translation id="6268381023930128611">ចាកចេញពី Chromium ឬ?</translation> <translation id="6424492062988593837">Chromium កាន់តែប្រសើរជាងមុន! មានកំណែថ្មី។</translation> <translation id="6604711459180487467">ទទួលបានការប្រើប្រាស់ Chromium ប្រសើរជាងមុន ដោយផ្អែកលើទីតាំងរបស់អ្នក។</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ko.xtb index 97d799f..6b8c6da 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ko.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ko.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium에 오신 것을 환영합니다.</translation> <translation id="5945387852661427312"><ph name="DOMAIN" />에서 관리하는 계정으로 로그인합니다. 계정 관리자가 내 Chromium 데이터를 관리하게 되며 데이터는 이 계정에 영구적으로 연결됩니다. Chromium에서 로그아웃하면 데이터가 기기에서 삭제되지만 Google 계정에는 그대로 유지됩니다.</translation> <translation id="602807004951640891">Chromium을 사용하면 <ph name="BEGIN_LINK_TOS" />서비스 약관<ph name="END_LINK_TOS" />에 동의하게 됩니다.</translation> +<translation id="6119647025869519954">Chromium을 기본 브라우저로 설정하려면 다음 단계를 따르세요. +1. 설정을 엽니다. +2. 기본 브라우저 앱을 탭합니다. +3. Chromium을 선택합니다.</translation> <translation id="6268381023930128611">Chromium에서 로그아웃</translation> <translation id="6424492062988593837">한층 개선된 Chromium의 최신 버전이 출시되었습니다.</translation> <translation id="6604711459180487467">위치 정보를 기반으로 Chromium에서 더 나은 서비스를 이용할 수 있습니다.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ky.xtb index 4cdc04b..f7d75bc 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ky.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ky.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium'га кош келиңиз</translation> <translation id="5945387852661427312">Сиз <ph name="DOMAIN" /> доменинин администратору башкарган аккаунтка кирип жатасыз. Анын бул аккаунтка байланып кала турган Chromium дайын-даректериңизды башкаруу мүмкүнчүлүгү бар. Chromium аккаунткан чыксаңыз, бул түзмөктөн дайын-даректериңиз өчүрүлөт, бирок алар Google Аккаунтуңузда сакталып кала берет.</translation> <translation id="602807004951640891">Chromium'ду колдонуу менен, <ph name="BEGIN_LINK_TOS" />Тейлөө шарттарына<ph name="END_LINK_TOS" /> макулдугуңузду билдиресиз.</translation> +<translation id="6119647025869519954">Chromium'ду демейки серепчи кылуу үчүн: +1. Жөндөөлөрдү ачыңыз +2. Демейки серепчи колдонмосун басыңыз +3. Chromium'ду тандаңыз.</translation> <translation id="6268381023930128611">Chromium'дан чыгасызбы?</translation> <translation id="6424492062988593837">Chromium жаңы эле жакшыртылды! Эми жаңы нускасы бар.</translation> <translation id="6604711459180487467">Chromium'ду жайгашкан жериңизге ылайык пайдаланыңыз.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_lo.xtb index b82f4e2..8be8a39 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_lo.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_lo.xtb
@@ -47,6 +47,9 @@ <translation id="5862307444128926510">ຍິນດີຕ້ອນຮັບສູ່ Chromium</translation> <translation id="5945387852661427312">ທ່ານກຳລັງເຂົ້າສູ່ລະບົບດ້ວຍບັນຊີທີ່ຖືກຈັດການໂດຍ <ph name="DOMAIN" /> ແລະ ກຳລັງໃຫ້ການຄວບຄຸມຂໍ້ມູນ Chromium ຂອງທ່ານແກ່ຜູ້ເບິ່ງແຍງລະບົບຂອງມັນ. ຂໍ້ມູນຂອງທ່ານຈະຖືກເຊື່ອມໂຍງຢ່າງຖາວອນກັບບັນຊີນີ້. ການອອກຈາກລະບົບ Chromium ຈະລຶບຂໍ້ມູນຂອງທ່ານອອກຈາກອຸປະກອນນີ້, ແຕ່ຂໍ້ມູນຈະຍັງຄົງຖືກຮັກສາໄວ້ຢູ່ໃນບັນຊີ Google ຂອງທ່ານ.</translation> <translation id="602807004951640891">ໂດຍການໃຊ້ Chromium, ແມ່ນຖືວ່າທ່ານເຫັນນຳ <ph name="BEGIN_LINK_TOS" />ຂໍ້ກຳນົດການບໍລິການ<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">ເພື່ອເຮັດໃຫ້ Chromium ເປັນໂປຣແກຣມເລີ່ມຕົ້ນຂອງທ່ານ: +1. ເປີດການຕັ້ງຄ່າ ແຕະແອັບໂປຣແກຣມທ່ອງເວັບເລີ່ມຕົ້ນ +3. ເລືອກ Chromium.</translation> <translation id="6268381023930128611">ອອກຈາກລະບົບ Chromium ບໍ?</translation> <translation id="6424492062988593837">Chromium ດີກວ່າເກົ່າແລ້ວ! ມີລຸ້ນໃຫມ່ໃຫ້ໃຊ້.</translation> <translation id="6604711459180487467">ມີປະສົບການທີ່ດີກວ່າໃນ Chromium ໂດຍອີງໃສ່ສະຖານທີ່ຂອງທ່ານ.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_lt.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_lt.xtb index 3d999ce..6943ecab 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_lt.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_lt.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Sveiki, tai „Chromium“</translation> <translation id="5945387852661427312">Prisijungiate naudodami <ph name="DOMAIN" /> valdomą paskyrą ir suteikiate jos administratoriui galimybę valdyti jūsų „Chromium“ duomenis. Duomenys bus visam laikui susieti su šia paskyra. Atsijungę nuo „Chromium“ ištrinsite duomenis iš šio įrenginio, bet jie ir toliau bus saugomi „Google“ paskyroje.</translation> <translation id="602807004951640891">Naudodami „Chromium“ sutinkate su <ph name="BEGIN_LINK_TOS" />paslaugų teikimo sąlygomis<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Jei norite nustatyti „Chromium“ kaip numatytąją naršyklę, atlikite toliau nurodytus veiksmus. +1. Atidarykite skiltį „Nustatymai“. +2. Palieskite „Numatytoji naršyklės programa“. +3. Pasirinkite „Chromium“.</translation> <translation id="6268381023930128611">Atsijungti nuo „Chromium“?</translation> <translation id="6424492062988593837">„Chromium“ patobulėjo! Galima nauja versija.</translation> <translation id="6604711459180487467">Gaukite geresnių funkcijų naudodami vietove pagrįstą „Chromium“.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_lv.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_lv.xtb index bac37392..43fb235 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_lv.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_lv.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Laipni lūdzam pārlūkā Chromium!</translation> <translation id="5945387852661427312">Jūs pierakstāties kontā, kas tiek pārvaldīts domēnā <ph name="DOMAIN" />, un sniedzat tā administratoram kontroli pār saviem Chromium datiem. Jūsu dati tiks neatgriezeniski saistīti ar šo kontu. Izrakstoties no pārlūka Chromium, jūsu dati tiks dzēsti no šīs ierīces, taču tie tiks saglabāti jūsu Google kontā.</translation> <translation id="602807004951640891">Izmantojot pārlūkprogrammu Chromium, jūs piekrītat <ph name="BEGIN_LINK_TOS" />pakalpojumu sniegšanas noteikumiem<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Lai iestatītu Chromium kā noklusējuma pārlūku, veiciet tālāk norādītās darbības. +1. Atveriet iestatījumus. +2. Pieskarieties vienumam “Noklusējuma pārlūka lietotne”. +3. Atlasiet Chromium.</translation> <translation id="6268381023930128611">Vai izrakstīties no Chromium?</translation> <translation id="6424492062988593837">Lietojumprogramma Chromium ir uzlabota! Ir pieejama jauna versija.</translation> <translation id="6604711459180487467">Uzlabojiet savu pieredzi pārlūkā Chromium, sūtot informāciju par savu atrašanās vietu.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_mk.xtb index 5eb2bd4..53070eb1 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_mk.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_mk.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Добре дојдовте во Chromium</translation> <translation id="5945387852661427312">Се најавувате со сметка управувана од <ph name="DOMAIN" /> и му давате контрола на нејзиниот администратор над податоците на Chromium. Вашите податоци ќе бидат трајно врзани за оваа сметка. Одјавувањето од Chromium ќе ги избрише податоците од уредов, но тие ќе останат зачувани на сметката на Google.</translation> <translation id="602807004951640891">Ако го користите Chromium, се согласувате со <ph name="BEGIN_LINK_TOS" />Условите за користење<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">За да го поставите Chromium како стандарден прелистувач: +1. Отворете „Поставки“ +2. Допрете „Стандардна апликација за прелистување“ +3. Изберете Chromium.</translation> <translation id="6268381023930128611">Ќе се одјавите од Chromium?</translation> <translation id="6424492062988593837">Chromium е подобрен! Достапна е нова верзија.</translation> <translation id="6604711459180487467">Добијте подобро искуство со Chromium според вашата локација.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ml.xtb index d5152ad..b894d330 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ml.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ml.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium-ത്തിലേക്ക് സ്വാഗതം</translation> <translation id="5945387852661427312"><ph name="DOMAIN" /> മാനേജ് ചെയ്യുന്ന ഒരു അക്കൗണ്ട് ഉപയോഗിച്ച് നിങ്ങൾ സൈൻ ഇൻ ചെയ്യുകയും ഇതിന്റെ അഡ്മിനിസ്ട്രേറ്റർക്ക് നിങ്ങളുടെ Chromium വിവരങ്ങളിൽ നിയന്ത്രണം നൽകുകയും ചെയ്യുന്നു. വിവരങ്ങളെ ഈ അക്കൗണ്ടുമായി ശാശ്വതമായി ബന്ധിപ്പിക്കും. Chromium-ൽ നിന്ന് സൈൻ ഔട്ട് ചെയ്യുന്നത് ഈ ഉപകരണത്തിൽ നിന്ന് നിങ്ങളുടെ വിവരങ്ങളെ ഇല്ലാതാക്കുമെങ്കിലും, Google അക്കൗണ്ടിൽ തുടർന്നും അവ സൂക്ഷിക്കുന്നതാണ്.</translation> <translation id="602807004951640891">Chromium ഉപയോഗിക്കുന്നതിലൂടെ, <ph name="BEGIN_LINK_TOS" />സേവന നിബന്ധനകള്<ph name="END_LINK_TOS" /> നിങ്ങൾ അംഗീകരിക്കുന്നു.</translation> +<translation id="6119647025869519954">Chromium നിങ്ങളുടെ ഡിഫോൾട്ട് ബ്രൗസർ ആക്കാൻ: +1. ക്രമീകരണം തുറക്കുക +2. ഡിഫോൾട്ട് ബ്രൗസർ ആപ്പ് ടാപ്പ് ചെയ്യുക +3. Chromium തിരഞ്ഞെടുക്കുക.</translation> <translation id="6268381023930128611">Chromium-ത്തിൽ നിന്ന് സൈൻ ഔട്ട് ചെയ്യണോ?</translation> <translation id="6424492062988593837">Chromium ഒന്നുകൂടി മികച്ചതായി! പുതിയ പതിപ്പ് ലഭ്യമാണ്.</translation> <translation id="6604711459180487467">നിങ്ങളുടെ ലൊക്കേഷൻ അടിസ്ഥാനമാക്കി Chromium-ത്തിൽ മികച്ച അനുഭവം സ്വന്തമാക്കുക.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_mn.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_mn.xtb index 6c9a71a..d7dfda4 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_mn.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_mn.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium-д тавтай морил</translation> <translation id="5945387852661427312">Та <ph name="DOMAIN" />-с удирддаг бүртгэлээр нэвтэрч байгаа бөгөөд үүнд таны Chromium-н өгөгдлийг удирдах админ эрхийг олгож байна. Таны өгөгдөл энэ бүртгэлтэй бүрмөсөн холбоотой болно. Chromium-с гарснаар таны бүх өгөгдлийг энэ төхөөрөмжөөс устгах бөгөөд тэдгээр өгөгдөл таны Google бүртгэлд хэвээр үлдэнэ.</translation> <translation id="602807004951640891">Chromium-г суулгаснаар та <ph name="BEGIN_LINK_TOS" />Үйлчилгээний нөхцөлийг<ph name="END_LINK_TOS" /> зөвшөөрч байна.</translation> +<translation id="6119647025869519954">Chromium-г өгөгдмөлөө болгохын тулд: +1. Тохиргоог нээнэ үү +2. Өгөгдмөл хөтчийн аппыг товшино уу +3. Chromium-г сонгоно уу.</translation> <translation id="6268381023930128611">Chromium-с гарах уу?</translation> <translation id="6424492062988593837">Chromium-ыг сайжрууллаа! Одоо шинэ хувилбарыг ашиглах боломжтой.</translation> <translation id="6604711459180487467">Өөрийн байршилд тулгуурлан Chromium-н хэрэглээгээ сайжруулна уу.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ms.xtb index 1f41c9d..22e192ae6 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ms.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ms.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Selamat datang ke Chromium</translation> <translation id="5945387852661427312">Anda mengelog masuk dengan akaun yang diurus oleh <ph name="DOMAIN" /> dan memberi kawalan terhadap data Chromium anda kepada pentadbirnya. Data anda akan terikat secara kekal kepada akaun ini. Tindakan mengelog keluar daripada Chromium akan memadamkan data anda daripada peranti ini, tetapi data itu akan kekal disimpan dalam Akaun Google anda.</translation> <translation id="602807004951640891">Dengan menggunakan Chromium, anda bersetuju untuk menerima <ph name="BEGIN_LINK_TOS" />Syarat Perkhidmatan<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Untuk menjadikan Chromium sebagai penyemak imbas lalai anda: +1. Buka Tetapan +2. Ketik Apl Penyemak Imbas Lalai +3. Pilih Chromium.</translation> <translation id="6268381023930128611">Log keluar daripada Chromium?</translation> <translation id="6424492062988593837">Chromium telah dipertingkatkan! Versi baharu kini boleh didapati.</translation> <translation id="6604711459180487467">Dapatkan pengalaman yang lebih baik di Chromium berdasarkan lokasi anda.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_my.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_my.xtb index 6a3685a..45f6cf6 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_my.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_my.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium မှ ကြိုဆိုပါ၏</translation> <translation id="5945387852661427312">သင်သည် <ph name="DOMAIN" /> က စီမံခန့်ခွဲထားသည့် အကောင့်ဖြင့် လက်မှတ်ထိုးဝင်နေပြီး သင့် Chromium ဒေတာကို ထိန်းချုပ်ခွင့်ပေးထားပါသည်။ သင့်ဒေတာများသည် ဤအကောင့်နှင့် အပြီးအပိုင် ချိတ်ဆက်ထားပါမည်။ Chromium မှ ထွက်လိုက်ခြင်းဖြင့် ဤစက်ပစ္စည်းပေါ်ရှိ ဒေတာများကို ဖျက်လိုက်မည် ဖြစ်သော်လည်း ၎င်းတို့သည် သင့် Google အကောင့်တွင် ကျန်ရှိနေဦးမည် ဖြစ်သည်။</translation> <translation id="602807004951640891">Chromium အသုံးပြုခြင်းဖြင့် သင်သည် <ph name="BEGIN_LINK_TOS" />ဝန်ဆောင်မှု စည်းကမ်းများ<ph name="END_LINK_TOS" /> ကို သဘောတူရာ ရောက်ပါသည်။</translation> +<translation id="6119647025869519954">Chromium ကို မူရင်းသတ်မှတ်ရန်- +၁။ 'ဆက်တင်များ' ဖွင့်ပါ +၂။ 'မူရင်း ဘရောင်ဇာအက်ပ်' ကို တို့ပါ +၃။ Chromium ကို ရွေးပါ။</translation> <translation id="6268381023930128611">Chromium မှထွက်မလား။</translation> <translation id="6424492062988593837">Chromium သည် ပိုလို့ကို ကောင်းလာပါပြီ! ဗားရှင်း အသစ် ရနိုင်ပြီ။</translation> <translation id="6604711459180487467">သင့်တည်နေရာကို အခြေခံ၍ Chromium တွင် ပိုမိုကောင်းမွန်သည့် အသုံးပြုမှု အတွေ့အကြုံကို ရယူပါ။</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_nl.xtb index 7916330..71e1214 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_nl.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_nl.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Welkom bij Chromium</translation> <translation id="5945387852661427312">Je logt in met een account dat wordt beheerd door <ph name="DOMAIN" />, waarmee je de eigenaar beheer geeft over je Chromium-gegevens. Je gegevens worden permanent gekoppeld aan dit account. Als je uitlogt van Chromium, worden je gegevens van dit apparaat verwijderd. Ze blijven echter opgeslagen in je Google-account.</translation> <translation id="602807004951640891">Door Chromium te gebruiken, ga je akkoord met de <ph name="BEGIN_LINK_TOS" />servicevoorwaarden<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Zo stel je Chromium in als standaardbrowser: +1. Open Instellingen. +2. Tik op Standaard browser-app. +3. Selecteer Chromium.</translation> <translation id="6268381023930128611">Uitloggen bij Chromium?</translation> <translation id="6424492062988593837">Chromium is nu nog beter! Er is een nieuwe versie beschikbaar.</translation> <translation id="6604711459180487467">Een betere ervaring in Chromium op basis van je locatie.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_no.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_no.xtb index 24a80e0..1c798fe 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_no.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_no.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Velkommen til Chromium</translation> <translation id="5945387852661427312">Du logger på med en konto som administreres av <ph name="DOMAIN" />, og du gir dermed administratoren for dette domenet kontroll over Chromium-dataene dine. Dataene dine blir knyttet til denne kontoen permanent. Når du logger av Chromium, slettes dataene dine fra denne enheten, men de er fortsatt lagret i Google-kontoen din.</translation> <translation id="602807004951640891">Ved å bruke Chromium samtykker du i <ph name="BEGIN_LINK_TOS" />vilkårene for bruk<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Slik velger du Chromium som standardnettleser: +1. Åpne Innstillinger. +2. Trykk på Standard nettleserapp. +3. Velg Chromium.</translation> <translation id="6268381023930128611">Vil du logge av Chromium?</translation> <translation id="6424492062988593837">Chromium har blitt enda bedre. En ny versjon er nå tilgjengelig.</translation> <translation id="6604711459180487467">Få en bedre Chromium-opplevelse basert på hvor du er.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_pl.xtb index b3c4d87..fc2ab60e 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_pl.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_pl.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium – witamy!</translation> <translation id="5945387852661427312">Logujesz się na konto, którym zarządza <ph name="DOMAIN" />, i przekazujesz jego administratorowi kontrolę nad Twoimi danymi Chromium. Zostaną one trwale przypisane do tego konta. Gdy się wylogujesz, znikną one z tego urządzenia, ale pozostaną zapisane na Twoim koncie Google.</translation> <translation id="602807004951640891">Używając Chromium, wyrażasz zgodę na <ph name="BEGIN_LINK_TOS" />Warunki korzystania z usługi<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Aby ustawić Chromium jako przeglądarkę domyślną: +1. Otwórz Ustawienia. +2. Kliknij Domyślna przeglądarka. +3. Wybierz Chromium.</translation> <translation id="6268381023930128611">Wylogować z Chromium?</translation> <translation id="6424492062988593837">Chromium jest teraz jeszcze lepsze! Dostępna jest nowa wersja.</translation> <translation id="6604711459180487467">Dzięki dostępowi do Twojej lokalizacji Chromium będzie działać lepiej.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_pt-BR.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_pt-BR.xtb index d853e22..ce04502f 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_pt-BR.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_pt-BR.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Bem-vindo ao Chromium</translation> <translation id="5945387852661427312">Você está fazendo login com uma conta gerenciada por <ph name="DOMAIN" /> e dando ao administrador dela o controle sobre seus dados do Chromium, os quais ficarão permanentemente vinculados a essa conta. Se você sair do Chromium, seus dados serão excluídos deste dispositivo, mas permanecerão armazenados na sua Conta do Google.</translation> <translation id="602807004951640891">Ao usar o Chromium, você concorda com os <ph name="BEGIN_LINK_TOS" />Termos de Serviço<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Para tornar o Chromium seu navegador padrão: +1. Abra as Configurações. +2. Toque em 'App do navegador padrão". +3. Selecione o Chromium.</translation> <translation id="6268381023930128611">Sair do Chromium?</translation> <translation id="6424492062988593837">O Chromium ficou ainda melhor! Uma nova versão está disponível.</translation> <translation id="6604711459180487467">Tenha uma experiência melhor no Chromium com base na sua localização.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_pt-PT.xtb index 9e3053b..e4109801 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_pt-PT.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_pt-PT.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Bem-vindo ao Chromium</translation> <translation id="5945387852661427312">Está a iniciar sessão com uma conta gerida por <ph name="DOMAIN" /> e a conceder ao respetivo gestor o controlo dos seus dados do Chromium. Os dados ficarão permanentemente associados a esta conta. Terminar sessão no Chromium elimina os seus dados deste dispositivo, embora permaneçam armazenados na Conta Google.</translation> <translation id="602807004951640891">Ao utilizar o Chromium, aceita os <ph name="BEGIN_LINK_TOS" />Termos de Utilização<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Para definir o Chromium como o navegador predefinido: +1. Abra as Definições +2. Toque em App de navegador predefinida +3. Selecione o Chromium.</translation> <translation id="6268381023930128611">Pretende terminar sessão no Chromium?</translation> <translation id="6424492062988593837">O Chromium ficou ainda melhor! Está disponível uma nova versão.</translation> <translation id="6604711459180487467">Obtenha uma melhor experiência no Chromium com base na sua localização.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ro.xtb index 473d339..22253bc 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ro.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ro.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Bun venit la Chromium</translation> <translation id="5945387852661427312">Te conectezi cu un cont gestionat de <ph name="DOMAIN" /> și acorzi administratorului acestuia controlul asupra datelor Chromium. Datele vor fi asociate definitiv acestui cont. Dacă te deconectezi de la Chromium, datele vor fi șterse de pe acest dispozitiv, dar vor rămâne stocate în Contul Google.</translation> <translation id="602807004951640891">Dacă folosești Chromium, accepți <ph name="BEGIN_LINK_TOS" />Termenii și condițiile<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Pentru a seta Chromium ca browser prestabilit: +1. deschide Setările; +2. atinge Aplicația browser prestabilită; +3. selectează Chromium.</translation> <translation id="6268381023930128611">Te deconectezi de la Chromium?</translation> <translation id="6424492062988593837">Chromium a devenit și mai bun! Este disponibilă o nouă versiune.</translation> <translation id="6604711459180487467">Beneficiază de o experiență mai bună în Chromium pe baza locației.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ru.xtb index 3c11ee3..1bd433a 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ru.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ru.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Добро пожаловать в Chromium</translation> <translation id="5945387852661427312">Вы входите в аккаунт, которым управляет администратор домена <ph name="DOMAIN" />. Он может контролировать ваши данные Chromium, которые теперь будут связаны с управляемым аккаунтом. При выходе из системы все данные Chromium, хранящиеся на этом устройстве, будут удалены, но останутся в вашем аккаунте Google.</translation> <translation id="602807004951640891">Начиная работу с Chromium, вы соглашаетесь с <ph name="BEGIN_LINK_TOS" />Условиями использования<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Чтобы сделать Chromium браузером по умолчанию: +1. Откройте настройки устройства. +2. Найдите раздел, где выбирается браузер по умолчанию. +3. Выберите Chromium.</translation> <translation id="6268381023930128611">Выйти из Chromium?</translation> <translation id="6424492062988593837">Chromium становится лучше! Доступна новая версия.</translation> <translation id="6604711459180487467">Откройте доступ к геоданным, чтобы использовать дополнительные возможности Chromium.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_si.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_si.xtb index 57730ac..6db58c3 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_si.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_si.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium වෙත සාදරයෙන් පිළිගනිමු</translation> <translation id="5945387852661427312">ඔබ <ph name="DOMAIN" /> මගින් කළමනාකරණය කරන ගිණුමක් සමගින් පුරමින් සහ එහි පරිපාලකට ඔබේ Chromium දත්තවල පාලනය දෙමින් සිටී. ඔබේ දත්ත මෙම ගිණුමට ස්ථිරව බැඳෙනු ඇත. Chromium වෙතින් වැරීම ඔබේ දත්ත මෙම උපාංගය වෙතින් මකනු ඇති නමුත්, ඔබේ දත්ත Google ගිණුම තුළ ගබඩා වී තිබෙනු ඇත.</translation> <translation id="602807004951640891">Chromium භාවිත කිරීමෙන්, ඔබ <ph name="BEGIN_LINK_TOS" />සේවා නියමවලට<ph name="END_LINK_TOS" /> එකඟ වෙයි.</translation> +<translation id="6119647025869519954">Chromium ඔබගේ පෙරනිමි බවට පත් කිරීමට: +1. සැකසීම් විවෘත කරන්න +2. පෙරනිමි බ්රව්සර යෙදුම තට්ටු කරන්න +3. Chromium තෝරන්න.</translation> <translation id="6268381023930128611">Chromium වෙතින් වරන්නද?</translation> <translation id="6424492062988593837">Chromium වඩා යහපත් විය. නව අනුවාදයක් තිබේ.</translation> <translation id="6604711459180487467">ඔබේ ස්ථානය මත පදනම්ව Chromium තුළ වඩා හොඳ අත්දැකීමක් ලබා ගන්න.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sk.xtb index ca9edc5c..67ecdef 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sk.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sk.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Vitajte v prehliadači Chromium</translation> <translation id="5945387852661427312">Prihlasujete sa pomocou účtu spravovaného doménou <ph name="DOMAIN" /> a jej správcovi tým dávate kontrolu nad vašimi údajmi prehliadača Chromium. Vaše údaje budú natrvalo prepojené s týmto účtom. Odhlásením z prehliadača Chromium odstránite údaje z príslušného zariadenia, avšak naďalej zostanú uložené vo vašom účte Google.</translation> <translation id="602807004951640891">Používaním prehliadača Chromium vyjadrujete súhlas so <ph name="BEGIN_LINK_TOS" />zmluvnými podmienkami<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Ak chcete Chromium nastaviť ako predvolený prehliadač: +1. Otvorte nastavenia. +2. Klepnite na položku Predvolená aplikácia prehliadača. +3. Vyberte Chromium.</translation> <translation id="6268381023930128611">Odhlásiť sa z prehliadača Chromium?</translation> <translation id="6424492062988593837">Systém Chromium bol práve vylepšený. K dispozícii je nová verzia.</translation> <translation id="6604711459180487467">Získajte lepšie prostredie v prehliadači Chromium na základe svojej polohy.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sl.xtb index 1458e5a8..45964bdd 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sl.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sl.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Pozdravljeni v Chromiumu</translation> <translation id="5945387852661427312">Prijavljate se z računom, ki ga upravlja <ph name="DOMAIN" />, in nadzor nad podatki v Chromiumu predajate skrbniku. Vaši podatki bodo trajno povezani s tem računom. Če se odjavite iz Chromiuma, boste izbrisali podatke iz te naprave, vendar bodo še naprej shranjeni v Google Računu.</translation> <translation id="602807004951640891">Če uporabljate Chromium, se strinjate s <ph name="BEGIN_LINK_TOS" />pogoji storitve<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Chromium nastavite kot privzeti iskalnik tako: +1. Odprite nastavitve. +2. Dotaknite se možnosti za privzeto aplikacijo za brskanje. +3. Izberite Chromium.</translation> <translation id="6268381023930128611">Se želite odjaviti iz Chromiuma?</translation> <translation id="6424492062988593837">Chromium je izboljšan! Na voljo je nova različica.</translation> <translation id="6604711459180487467">Zagotovite si boljšo izkušnjo uporabe Chromiuma na podlagi lokacije.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sq.xtb index 7110b0f5..0af5d35fe 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sq.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sq.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Mirë se vjen në Chromium</translation> <translation id="5945387852661427312">Po identifikohesh me një llogari të menaxhuar nga <ph name="DOMAIN" /> dhe po i jep administratorit të saj kontroll mbi të dhënat e tua të Chromium. Të dhënat e tua do të lidhen përgjithmonë me këtë llogari. Dalja nga Chromium do të bëjë që të fshihen të dhënat e tua nga kjo pajisje, por ato do të mbeten të ruajtura në llogarinë tënde të Google.</translation> <translation id="602807004951640891">Duke përdorur Chromium, ti pranon <ph name="BEGIN_LINK_TOS" />Kushtet e shërbimit<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Për ta bërë Chromium shfletuesin e parazgjedhur: +1. Hap "Cilësimet" +2. Trokit tek "Aplikacioni i parazgjedhur i shfletuesit" +3. Zgjidh Chromium.</translation> <translation id="6268381023930128611">Dëshiron të dalësh nga Chromium?</translation> <translation id="6424492062988593837">Chromium sapo është përmirësuar! Ofrohet një version i ri.</translation> <translation id="6604711459180487467">Merr një përvojë më të mirë në Chromium bazuar në vendndodhjen tënde.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sr-Latn.xtb index 1cabc5e..4d8a082 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sr-Latn.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Dobro došli u Chromium</translation> <translation id="5945387852661427312">Prijavljujete se pomoću naloga kojim upravlja <ph name="DOMAIN" /> i dajete njegovom administratoru kontrolu nad svojim Chromium podacima. Podaci će postati trajno povezani sa tim nalogom. Odjavljivanjem iz Chromium-a ćete izbrisati podatke sa ovog uređaja, ali će oni ostati sačuvani na Google nalogu.</translation> <translation id="602807004951640891">Korišćenjem Chromium-a prihvatate <ph name="BEGIN_LINK_TOS" />Uslove korišćenja usluge<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Da biste postavili Chromium za podrazumevani pregledač: +1. Otvorite podešavanja +2. Dodirnite Podrazumevana aplikacija za pregledanje +3. Izaberite Chromium.</translation> <translation id="6268381023930128611">Želite li da se odjavite iz Chromium-a?</translation> <translation id="6424492062988593837">Chromium je upravo postao bolji! Dostupna je nova verzija.</translation> <translation id="6604711459180487467">Poboljšajte doživljaj u Chromium-u na osnovu lokacije.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sr.xtb index 171a0d5..17171f24 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sr.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Добро дошли у Chromium</translation> <translation id="5945387852661427312">Пријављујете се помоћу налога којим управља <ph name="DOMAIN" /> и дајете његовом администратору контролу над својим Chromium подацима. Подаци ће постати трајно повезани са тим налогом. Одјављивањем из Chromium-а ћете избрисати податке са овог уређаја, али ће они остати сачувани на Google налогу.</translation> <translation id="602807004951640891">Коришћењем Chromium-а прихватате <ph name="BEGIN_LINK_TOS" />Услове коришћења услуге<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Да бисте поставили Chromium за подразумевани прегледач: +1. Отворите подешавања +2. Додирните Подразумевана апликација за прегледање +3. Изаберите Chromium.</translation> <translation id="6268381023930128611">Желите ли да се одјавите из Chromium-а?</translation> <translation id="6424492062988593837">Chromium је управо постао бољи! Доступна је нова верзија.</translation> <translation id="6604711459180487467">Побољшајте доживљај у Chromium-у на основу локације.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sv.xtb index 0015f30..1fd11a4 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sv.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sv.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Välkommen till Chromium</translation> <translation id="5945387852661427312">Du håller på att logga in med ett konto som hanteras av <ph name="DOMAIN" /> vilket ger administratören kontroll över data i Chromium. Din data kopplas permanent till det här kontot. Om du loggar ut från Chromium raderas all din data från enheten, men den lagras fortfarande på Google-kontot.</translation> <translation id="602807004951640891">Genom att använda Chromium godkänner du <ph name="BEGIN_LINK_TOS" />användarvillkoren<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Så här använder du Chromium som standard: +1. Öppna inställningarna +2. Tryck på Standardwebbläsarapp +3. Välj Chromium.</translation> <translation id="6268381023930128611">Vill du logga ut från Chromium?</translation> <translation id="6424492062988593837">Chrome har blivit ännu bättre! En ny version finns tillgänglig.</translation> <translation id="6604711459180487467">Ange din plats och få en bättre upplevelse när du använder Chromium.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sw.xtb index 2c9b6ba..b00d222 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sw.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sw.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Karibu kwenye Chromium</translation> <translation id="5945387852661427312">Unaingia kwa kutumia akaunti inayodhibitiwa na <ph name="DOMAIN" /> na kumpa msimamizi wa kikoa hicho udhibiti wa data yako ya Chromium. Data yako ya Chromium itahusishwa na akaunti hii daima. Kuondoka kwenye Chromium kutafuta data yako kwenye kifaa hiki, lakini itaendelea kuhifadhiwa katika Akaunti yako ya Google.</translation> <translation id="602807004951640891">Kwa kutumia Chromium, unakubali <ph name="BEGIN_LINK_TOS" />Sheria na Masharti<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Ili ufanye Chromium iwe kivinjari chako chaguomsingi: +1. Fungua Mipangilio +2. Gusa Programu ya Kivinjari Chaguomsingi +3. Chagua Chromium.</translation> <translation id="6268381023930128611">Ungependa kuondoka kwenye Chromium?</translation> <translation id="6424492062988593837">Chromium imekuwa bora! Toleo jipya linapatikana.</translation> <translation id="6604711459180487467">Pata hali bora ya utumiaji katika Chromium kulingana na mahali uliko.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb index e55cc4b5..ac7498d 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium க்கு வரவேற்கிறோம்</translation> <translation id="5945387852661427312"><ph name="DOMAIN" /> நிர்வகிக்கும் கணக்கில் உள்நுழைந்து, உங்கள் Chromium தரவு மீதான கட்டுப்பாட்டை அதன் நிர்வாகிக்கு வழங்குகிறீர்கள். இந்தக் கணக்குடன் தரவு நிரந்தரமாக இணைக்கப்படும். Chromiumமிலிருந்து வெளியேறுவதால், இந்தச் சாதனத்திலிருந்து தரவு நீக்கப்படும், எனினும் உங்கள் Google கணக்கில் தரவு தொடர்ந்து இருக்கும்.</translation> <translation id="602807004951640891">Chromiumமைப் பயன்படுத்துவதன் மூலம் <ph name="BEGIN_LINK_TOS" />சேவை விதிமுறைகளை<ph name="END_LINK_TOS" /> ஏற்கிறீர்கள்.</translation> +<translation id="6119647025869519954">Chromiumமை உங்கள் இயல்பு உலாவியாக மாற்ற: +1. அமைப்புகளைத் திறக்கவும் +2. இயல்பு உலாவி ஆப்ஸ் என்பதைத் தட்டவும் +3. Chromiumமைத் தேர்ந்தெடுக்கவும்.</translation> <translation id="6268381023930128611">Chromium இலிருந்து வெளியேறவா?</translation> <translation id="6424492062988593837">Chromium தற்போதுதான் சிறப்பைப் பெற்றது! புதிய பதிப்பு உள்ளது.</translation> <translation id="6604711459180487467">உங்கள் இருப்பிடத்தின் அடிப்படையில் Chromium இல் சிறந்த அனுபவத்தைப் பெறலாம்.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_th.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_th.xtb index 890d9dc..7166634 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_th.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_th.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">ยินดีต้อนรับสู่ Chromium</translation> <translation id="5945387852661427312">คุณกำลังลงชื่อเข้าใช้ด้วยบัญชีที่จัดการโดย <ph name="DOMAIN" /> และทำให้ผู้ดูแลระบบของโดเมนควบคุมข้อมูล Chromium ของคุณได้ ข้อมูลของคุณจะโยงกับบัญชีนี้อย่างถาวร การออกจากระบบ Chromium จะลบข้อมูลของคุณจากอุปกรณ์เครื่องนี้ แต่ข้อมูลจะยังจัดเก็บอยู่ในบัญชี Google</translation> <translation id="602807004951640891">การใช้ Chromium หมายความว่าคุณยอมรับ<ph name="BEGIN_LINK_TOS" />ข้อกำหนดในการให้บริการ<ph name="END_LINK_TOS" /></translation> +<translation id="6119647025869519954">วิธีกำหนดให้ Chromium เป็นเบราว์เซอร์เริ่มต้น +1. เปิดการตั้งค่า +2. แตะแอปเบราว์เซอร์เริ่มต้น +3. เลือก Chromium</translation> <translation id="6268381023930128611">ต้องการออกจาก Chromium ใช่ไหม</translation> <translation id="6424492062988593837">Chromium พัฒนาใหม่! มีรุ่นใหม่ให้ใช้งานแล้ว</translation> <translation id="6604711459180487467">รับประสบการณ์ที่ดีขึ้นใน Chromium ตามสถานที่ที่คุณอยู่</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb index c8318b5..f748ff56 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium'a Hoş Geldiniz</translation> <translation id="5945387852661427312"><ph name="DOMAIN" /> tarafından yönetilen bir hesapla oturum açıyor ve yöneticiye tüm Chromium verileriniz üzerinde denetim olanağı veriyorsunuz. Verileriniz kalıcı olarak bu hesaba bağlanacaktır. Chromium'da oturumu kapattığınızda verileriniz bu cihazdan silinir ancak Google Hesabınızda kalmaya devam eder.</translation> <translation id="602807004951640891">Chromium'u kullanarak, <ph name="BEGIN_LINK_TOS" />Hizmet Şartları<ph name="END_LINK_TOS" />'nı kabul etmiş sayılırsınız.</translation> +<translation id="6119647025869519954">Chromium'u varsayılan tarayıcınız yapmak için: +1. Ayarlar'ı açın +2. Varsayılan Tarayıcı Uygulaması'na dokunun +3. Chromium'u seçin.</translation> <translation id="6268381023930128611">Chromium oturumunu kapatıyor musunuz?</translation> <translation id="6424492062988593837">Chromium daha da iyi hale geldi! Yeni bir sürüm var.</translation> <translation id="6604711459180487467">Chromium'da, konumunuza dayalı olarak daha iyi bir deneyim yaşayın.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_uk.xtb index 3fe4f613..b8d2464 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_uk.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_uk.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Вітаємо в Chromium</translation> <translation id="5945387852661427312">Ви входите в обліковий запис, зареєстрований у домені <ph name="DOMAIN" />, і надаєте його адміністратору доступ до своїх даних Chromium. Ваші дані буде назавжди зв’язано з цим обліковим записом. Якщо ви вийдете з облікового запису Chromium, дані буде видалено з цього пристрою, але вони залишаться у вашому обліковому записі Google.</translation> <translation id="602807004951640891">Користуючись Chromium, ви приймаєте <ph name="BEGIN_LINK_TOS" />Умови використання<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Як зробити Chromium веб-переглядачем за умовчанням +1. Відкрийте налаштування +2. Натисніть "Веб-переглядач за умовчанням" +3. Виберіть Chromium.</translation> <translation id="6268381023930128611">Вийти з Chromium?</translation> <translation id="6424492062988593837">Chromium став ще кращим! Доступна нова версія.</translation> <translation id="6604711459180487467">Зробіть Chromium зручнішим, надавши йому доступ до даних про своє місцезнаходження.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_uz.xtb index 90bd34bf..3b021d7 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_uz.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_uz.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chromium brauzeriga xush kelibsiz</translation> <translation id="5945387852661427312"><ph name="DOMAIN" /> domenida boshqariladigan hisobga kirish bilan siz administratorga Chromium ma’lumotlaringizni boshqarishiga rozilik bildirasiz. Barcha Chromium ma’lumotlaringiz bu hisobga butunlay bog‘langan. Agar hisobdan chiqadigan bo‘lsangiz, bu qurilmadagi barcha ma’lumotlaringiz o‘chib ketadi, lekin Google hisobingizda saqlanib qoladi.</translation> <translation id="602807004951640891">Chromium ishlatish orqali siz <ph name="BEGIN_LINK_TOS" />Xizmat shartlariga<ph name="END_LINK_TOS" /> rozilik bildirgan hisoblanasiz.</translation> +<translation id="6119647025869519954">Chromium brauzerini asosiy deb belgilash uchun: +1. Sozlamalarni oching +2. Standart brauzer ilovasi ustiga bosing +3. Chromium brauzerini tanlang.</translation> <translation id="6268381023930128611">Chromium’dan chiqmoqchimisiz?</translation> <translation id="6424492062988593837">Chromium ancha yaxshilandi! Yangi versiya mavjud.</translation> <translation id="6604711459180487467">Joylashuv axboroti bilan Chromium yanada ko‘proq imkoniyatlarga ega bo‘ladi.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_vi.xtb index 7da72a83..6303f2b 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_vi.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_vi.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Chào mừng bạn đến với Chromium</translation> <translation id="5945387852661427312">Bạn đang đăng nhập bằng tài khoản do <ph name="DOMAIN" /> quản lý và cấp cho quản trị viên quyền kiểm soát dữ liệu Chromium của bạn. Dữ liệu của bạn sẽ được liên kết vĩnh viễn với tài khoản này. Đăng xuất khỏi Chromium sẽ xóa dữ liệu của bạn khỏi thiết bị này nhưng dữ liệu đó sẽ vẫn được lưu trữ trong Tài khoản Google.</translation> <translation id="602807004951640891">Bằng việc sử dụng Chromium, bạn đồng ý với <ph name="BEGIN_LINK_TOS" />Điều khoản dịch vụ<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Cách đặt Chromium làm trình duyệt mặc định: +1. Mở phần Cài đặt +2. Nhấn vào Ứng dụng trình duyệt mặc định +3. Chọn Chromium.</translation> <translation id="6268381023930128611">Đăng xuất khỏi Chromium?</translation> <translation id="6424492062988593837">Chromium được cải tiến hơn! Đã có phiên bản mới.</translation> <translation id="6604711459180487467">Có được trải nghiệm tốt hơn trong Chromium dựa trên vị trí của bạn.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-HK.xtb index c94ddf4..1546f91 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-HK.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-HK.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">歡迎使用 Chromium</translation> <translation id="5945387852661427312">您即將登入由 <ph name="DOMAIN" /> 管理的帳戶,並讓帳戶管理員控制您的 Chromium 資料。您的資料將與這個帳戶建立永久連結。如果您登出 Chromium,系統將刪除此裝置上的資料,但這些資料仍會儲存在您的 Google 帳戶中。</translation> <translation id="602807004951640891">使用 Chromium 即表示您同意《<ph name="BEGIN_LINK_TOS" />服務條款<ph name="END_LINK_TOS" />》。</translation> +<translation id="6119647025869519954">如何將 Chromium 設定為預設瀏覽器: +1. 開啟「設定」 +2. 輕按 [預設瀏覽器應用程式] +3. 選取 [Chromium]。</translation> <translation id="6268381023930128611">要登出 Chromium 嗎?</translation> <translation id="6424492062988593837">Chromium 現在更進一步!歡迎您升級使用新版本。</translation> <translation id="6604711459180487467">在 Chromium 中根據您的位置,帶來更貼心的體驗。</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb index 247e481e..5c6b808 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">歡迎使用 Chromium</translation> <translation id="5945387852661427312">你即將使用由 <ph name="DOMAIN" /> 所管理的帳戶登入,並授權該網域的管理員控管你的 Chromium 資料。你的資料會與這個帳戶建立永久連結。登出 Chromium 後,系統會將你的資料從這個裝置上刪除,但繼續保留在你的 Google 帳戶中。</translation> <translation id="602807004951640891">使用 Chromium 即表示你同意《<ph name="BEGIN_LINK_TOS" />服務條款<ph name="END_LINK_TOS" />》。</translation> +<translation id="6119647025869519954">如何將 Chromium 設為預設瀏覽器: +1. 開啟「設定」 +2. 輕觸 [預設瀏覽器 App] +3. 選取 [Chromium]</translation> <translation id="6268381023930128611">要登出 Chromium 嗎?</translation> <translation id="6424492062988593837">Chromium 現在變得更進步了!歡迎你升級使用新版本。</translation> <translation id="6604711459180487467">Chromium 可根據你的位置資訊提供更優質的體驗。</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_zu.xtb index 6b386af..496a73dc 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_zu.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_zu.xtb
@@ -47,6 +47,10 @@ <translation id="5862307444128926510">Siyakwamukela ku-Chromium</translation> <translation id="5945387852661427312">Ungena ngemvume nge-akhawunti ephethwe yi-<ph name="DOMAIN" /> futhi unikeza umlawuli ulawulo ngaphezu kwedatha yakho ye-Chromium. Idatha yakho izoboshelwa ngunaphakade kule akhawunti. Ukuphuma ngemvume ku-Chromium kuzosusa idatha yakho kusukela kule divayisi, kodwa izohlala igcinwe ku-akhawunti yakho ye-Google.</translation> <translation id="602807004951640891">Ngokusebenzisa i-Chromium, uvumelana nokuthi <ph name="BEGIN_LINK_TOS" />Imigomo Yesevisi<ph name="END_LINK_TOS" />.</translation> +<translation id="6119647025869519954">Ukuze wenze i-Chromium ibe ngokuzenzakalelayo kwakho: +1. Vula Amasethingi +2. Thepha Uhlelo Lokusebenza Lwesiphequluli Esizenzakalelayo +3. Khetha i-Chromium.</translation> <translation id="6268381023930128611">Phuma ku-Chromium?</translation> <translation id="6424492062988593837">I-Chromium ingocono nakakhulu! Inguqulo entsha iyatholakala.</translation> <translation id="6604711459180487467">Thola umuzwa ongcono ku-Chromium kusukela endaweni yakho.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_af.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_af.xtb index 6737207..87c89d66 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_af.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_af.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Kopiereg <ph name="YEAR" /> Google LLC. Alle regte voorbehou.</translation> <translation id="840168496893712993">Sekere byvoegings het veroorsaak dat Chrome omval. Probeer om hulle te deïnstalleer.</translation> <translation id="8459495907675268833">Die gekose data is van Chrome en gesinkroniseerde toestelle af verwyder. Jou Google-rekening het dalk ander vorme van blaaigeskiedenis, soos soektogte en aktiwiteit, vanaf ander Google-dienste by history.google.com.</translation> +<translation id="850555388806794946">Om Chrome jou verstekblaaier te maak: + 1. Maak Instellings oop + 2. Tik op Verstekblaaierprogram + 3. Kies Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">As jy Chrome toelaat om jou ligging te ken, stuur Chrome dit na jou versteksoekenjin en enige werwe wat jy toelaat. Werwe kan vir jou ligging vra wanneer hulle plaaslike inligting het om vir jou te wys, soos winkels in die omtrek of nuus.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb index 99cc9cf2..946f19b 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">የቅጂ መብት <ph name="YEAR" /> Google LLC. ሁሉም መብቶች በህግ የተጠበቁ ናቸው።</translation> <translation id="840168496893712993">አንዳንድ ተጨማሪዎች Chrome እንዲበላሽ ያደርጋሉ። እባክዎ እነሱን ለማራገፍ ይሞክሩ።</translation> <translation id="8459495907675268833">የተመረጠው ውሂብ ከChrome እና የሰመሩ መሣሪያዎች ተወግዷል። የGoogle መለያዎ history.google.com ላይ እንደ የሌሎች Google አገልግሎቶች ፍለጋዎች እና እንቅስቃሴ ያለ ሌሎች የአሰሳ ታሪክ ዓይነት ሊኖረው ይችላል።</translation> +<translation id="850555388806794946">Chromeን የእርስዎ ነባሪ ለማድረግ፦ + 1. ቅንብሮችን ይክፈቱ + 2. ነባሪ የአሳሽ መተግበሪያን መታ ያድርጉ + 3. Chromeን ይምረጡ።</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Chrome አካባቢዎን እንዲያውቅ ከፈቀዱ Chrome ወደ የእርስዎ ነባሪ የፍለጋ ፕሮግራም እና ፈቃድ ወደሚሰጡባቸው ማናቸውም ጣቢያዎች ይልከዋል። ጣቢያዎች እንደ በአቅራቢያ ያሉ ሱቆች ወይም ዜናዎች ያሉ ለእርስዎ ለማሳየት የአከባቢ መረጃ ሲኖራቸው አካባቢዎን ሊጠይቁ ይችላሉ።</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ar.xtb index a39624df..bfc04cf 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ar.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ar.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">حقوق الطبع والنشر لعام <ph name="YEAR" /> لشركة Google LLC. جميع الحقوق محفوظة.</translation> <translation id="840168496893712993">تتسبب بعض الإضافات في تعطل Chrome. يُرجى محاولة إزالتها.</translation> <translation id="8459495907675268833">تمت إزالة البيانات المُحددة من متصفح Chrome والأجهزة التي تمت مزامنتها. قد يحتوي حسابك في Google على نماذج أخرى من سجل التصفح، مثل عمليات البحث والأنشطة من خدمات Google الأخرى في history.google.com.</translation> +<translation id="850555388806794946">لجعل Chrome المتصفِّح التلقائي، اتّبِع الخطوات التالية: + 1. افتح Settings (الإعدادات). + 2. انقر على Default Browser App (تطبيق المتصفِّح التلقائي). + 3. اختَر Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">عند السماح لمتصفِّح Chrome بمعرفة موقعك الجغرافي، سيرسِل Chrome موقعك الجغرافي إلى محرك البحث التلقائي وإلى المواقع الإلكترونية التي منحتها إذن الوصول إليه. قد تطلب المواقع الإلكترونية موقعك الجغرافي عند توفُّر معلومات محلية لعرضها مثل المتاجر القريبة أو الأخبار.</translation> </translationbundle> \ No newline at end of file
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 2a26810..c725402 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
@@ -77,6 +77,10 @@ <translation id="8370517070665726704">স্বত্বাধিকাৰ <ph name="YEAR" /> Google LLC। সর্বস্বত্ব সংৰক্ষিত।</translation> <translation id="840168496893712993">কিছুমান এড-অনৰ কাৰণে Chrome ক্ৰেশ্ব হয়। অনুগ্ৰহ কৰি সেইবোৰ আনইনষ্টল কৰি চাওক।</translation> <translation id="8459495907675268833">বাছনি কৰা ডেটাখিনি Chrome আৰু ছিংক কৰি থোৱা ডিভাইচসমূহৰ পৰা আঁতৰোৱা হৈছে। Googleৰ অন্য সেৱাত কৰা সন্ধান আৰু অন্যান্য কাৰ্যকলাপৰ দৰে আপোনাৰ Google একাউণ্টৰ অইন ধৰণৰ ব্ৰাউজিঙৰ ইতিহাস history.google.comত থাকিব পাৰে।</translation> +<translation id="850555388806794946">Chromeক আপোনাৰ ডিফ’ল্ট ব্ৰাউজাৰ কৰিবলৈ: + ১) ছেটিং খোলক + ২) ডিফ’ল্ট ব্ৰাউজাৰ এপত টিপক + ৩) Chrome বাছনি কৰক।</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">আপুনি যদি Chromeক আপোনাৰ অৱস্থানৰ বিষয়ে জানিবলৈ দিয়ে, Chromeএ সেয়া আপোনাৰ ডিফ’ল্ট সন্ধান ইঞ্জিন আৰু আপুনি অনুমতি দিয়া সকলো ছাইটলৈ পঠিয়ায়। ছাইটসমূহৰ আপোনাক ওচৰ-পাজৰৰ দোকান অথবা বাতৰিৰ দৰে স্থানীয় তথ্য দেখুৱাবলগীয়া থাকিলে সেইসমূহে আপোনাক অৱস্থানৰ বিষয়ে সুধিব পাৰে।</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_az.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_az.xtb index a7d1256..2cf2715 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_az.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_az.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Müəllif hüquqları <ph name="YEAR" /> Google MMC. Bütün hüquqlar qorunur.</translation> <translation id="840168496893712993">Bəzi addonlar Chrome'da xətaya səbəb oldu. Lütfən, onları sistemdən silməyə cəhd edin.</translation> <translation id="8459495907675268833">Seçilmiş data Chrome və sinxronizasiya olunmuş cihazdan silindi. Google Hesabınızın history.google.com linkində axtarış və digər Google xidmətlərindən fəaliyyət kimi axtarış tarixçəsi formaları ola bilər.</translation> +<translation id="850555388806794946">Chrome'u defolt etmək üçün: + 1. Ayarları açın + 2. Defolt Brauzer Tətbiqinə toxunun + 3. Chrome seçin.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Chrome'un məkanınızı bilməsinə icazə versəniz, Chrome onu defolt axtarış sisteminizə və icazə verdiyiniz saytlara göndərir. Yaxınlıqdakı mağazalar və ya xəbərlər kimi sizə göstərəcək yerli məlumatlar olduqda saytlar məkanınızı tələb edə bilər.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_be.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_be.xtb index 55b6c67..e49c5bf 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_be.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_be.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">© <ph name="YEAR" /> Google LLC. Усе правы абароненыя.</translation> <translation id="840168496893712993">Некаторыя дадатковыя кампаненты выклікаюць збой у Chrome. Паспрабуйце выдаліць іх.</translation> <translation id="8459495907675268833">Выбраныя даныя выдалены з браўзера Chrome і сінхранізаваных прылад. На сайце history.google.com могуць быць размешчаны іншыя формы гісторыі праглядаў сайтаў з вашага ўліковага запісу Google, напрыклад пошукавыя запыты і дзеянні ў іншых сэрвісах.</translation> +<translation id="850555388806794946">Як зрабіць Chromium стандартным браўзерам: + 1. Адкрыйце Settings. + 2. Націсніце Default Browser App. + 3. Выберыце Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Калі вы дазволіце браўзеру Chrome атрымліваць інфармацыю пра ваша месцазнаходжанне, ён будзе адпраўляць яе вашай стандартнай пошукавай сістэме і адобраным вамі сайтам. Сайты могуць запытваць ваша месцазнаходжанне для паказу мясцовай інфармацыі (напрыклад, навін або звестак пра крамы паблізу).</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bg.xtb index 5689a270..b766852e 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bg.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bg.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Авторски права <ph name="YEAR" /> г. Google LLC. Всички права запазени.</translation> <translation id="840168496893712993">Някои добавки водят до срив на Chrome. Моля, опитайте да ги деинсталирате.</translation> <translation id="8459495907675268833">Избраните данни са премахнати от Chrome и синхронизираните устройства. Възможно е в профила ви в Google да има други видове история на сърфиране, съхранявани на адрес history.google.com – например търсения и активност от други наши услуги.</translation> +<translation id="850555388806794946">За да зададете Chrome като браузъра си по подразбиране: + 1. Отворете настройките. + 2. Докоснете „Стандартно прилож. за браузър“. + 3. Изберете Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Ако разрешите на Chrome достъп до местоположението ви, браузърът изпраща тази информация до основната ви търсеща машина и до сайтовете, за които позволите това. Сайтовете може да искат да узнаят местоположението ви, когато разполагат с местна информация за вас, като например магазини в района или новини.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bs.xtb index 6ca8a0b..b21f95c 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bs.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bs.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Autorska prava <ph name="YEAR" /> Google LLC. Sva prava su zadržana.</translation> <translation id="840168496893712993">Neki dodaci uzrokuju pad aplikacije Chromea. Pokušajte ih deinstalirati.</translation> <translation id="8459495907675268833">Odabrani podaci su uklonjeni iz Chromea i sinhroniziranih uređaja. Vaš Google račun može imati druge oblike historije pregledanja, kao što su pretraživanja i aktivnosti s drugih Googleovih usluga na history.google.com.</translation> +<translation id="850555388806794946">Da postavite Chrome kao zadani preglednik: + 1. Otvorite Postavke + 2. Dodirnite Zadana aplikacija preglednika + 3. Odaberite Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Ako dozvolite Chromeu da zna vašu lokaciju, poslat će je vašem zadanom pretraživaču i svim web lokacijama koje dozvolite. Web lokacije mogu tražiti vašu lokaciju kada imaju lokalne informacije koje vam mogu prikazati, kao što su prodavnice u blizini ili vijesti.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ca.xtb index 716fc811..10c7056 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ca.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ca.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Tots els drets reservats.</translation> <translation id="840168496893712993">Alguns complements fan que Chrome es bloquegi. Proveu de desinstal·lar-los.</translation> <translation id="8459495907675268833">Les dades seleccionades s'han suprimit de Chrome i dels dispositius sincronitzats. És possible que el vostre compte de Google tingui altres formes de l'historial de navegació a history.google.com, com ara les cerques i l'activitat d'altres serveis de Google.</translation> +<translation id="850555388806794946">Per establir Chrome com a navegador predeterminat: + 1. Obre Configuració. + 2. Toca Aplicació de navegador predeterminada. + 3. Selecciona Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Si permets que Chrome sàpiga la teva ubicació, l'enviarà al motor de cerca predeterminat i als llocs web a què donis permís. Pot ser que els llocs web demanin la teva ubicació quan tinguin informació local per mostrar-te, com ara botigues o notícies a prop.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_cs.xtb index 37418a7..8391ea4 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_cs.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_cs.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Všechna práva vyhrazena.</translation> <translation id="840168496893712993">Některé doplňky způsobují selhání prohlížeče Chrome. Zkuste je prosím odinstalovat.</translation> <translation id="8459495907675268833">Vybraná data byla z Chromu a synchronizovaných zařízení odstraněna. Na stránce history.google.com mohou být k dispozici další druhy historie prohlížení zaznamenané ve vašem účtu Google, například vyhledávací dotazy a aktivita z ostatních služeb Google.</translation> +<translation id="850555388806794946">Postup nastavení Chromu jako výchozího prohlížeče: + 1. Otevřete nastavení. + 2. Klepněte na Výchozí prohlížeč. + 3. Vyberte Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Když Chromu povolíte přístup k poloze, bude ji odesílat výchozímu vyhledávači a webům, u kterých to povolíte. Weby o vaši polohu mohou žádat, pokud pro vás mají místní informace, například seznamy obchodů v okolí nebo místní zprávy.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_da.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_da.xtb index 8a51369..2a7760e3 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_da.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_da.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Alle rettigheder forbeholdes.</translation> <translation id="840168496893712993">Nogle tilføjelser får Chrome til at gå ned. Prøv at afinstallere dem.</translation> <translation id="8459495907675268833">De valgte data er fjernet fra Chrome og synkroniserede enheder. Din Google-konto kan have andre former for browserhistorik, f.eks. søgninger og aktivitet fra andre Google-tjenester, på history.google.com.</translation> +<translation id="850555388806794946">Sådan gør du Chrome til din standardbrowser: + 1. Åbn Indstillinger + 2. Tryk på Standardbrowserapp + 3. Vælg Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Hvis du giver Chrome tilladelse til at kende din placering, sender Chrome den til din standardsøgemaskine og de websites, du giver tilladelse til. Websites kan anmode om adgang til din placering, når de vil vise dig lokale oplysninger, f.eks. butikker i nærheden eller nyheder.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb index e2c9e14..ae3915a 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Πνευματικά δικαιώματα <ph name="YEAR" /> Google LLC. Με την επιφύλαξη παντός δικαιώματος.</translation> <translation id="840168496893712993">Ορισμένα πρόσθετα προκαλούν σφάλματα στο Chrome. Δοκιμάστε να τα απεγκαταστήσετε.</translation> <translation id="8459495907675268833">Τα επιλεγμένα δεδομένα καταργήθηκαν από το Chrome και από τις συγχρονισμένες συσκευές. Ο Λογαριασμός σας Google ενδέχεται να διαθέτει άλλες μορφές ιστορικού περιήγησης, όπως αναζητήσεις και δραστηριότητα από άλλες υπηρεσίες Google στη διεύθυνση history.google.com.</translation> +<translation id="850555388806794946">Για να κάνετε το Chrome το προεπιλεγμένο πρόγραμμα περιήγησής σας: + 1. Ανοίξτε τις Ρυθμίσεις. + 2. Πατήστε Προεπιλεγμένη εφαρμογή προγράμματος περιήγησης. + 3. Επιλέξτε Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Εάν επιτρέπετε στο Chrome να έχει πρόσβαση στην τοποθεσία σας, το Chrome την αποστέλλει στην προεπιλεγμένη μηχανή αναζήτησης και σε οποιουσδήποτε ιστοτόπους επιτρέπετε. Οι ιστότοποι μπορεί να ζητήσουν την τοποθεσία σας όταν έχουν να εμφανίσουν τοπικές πληροφορίες, όπως καταστήματα σε κοντινή απόσταση ή ειδήσεις για την περιοχή.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_en-GB.xtb index c1100b5..993caf0 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_en-GB.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_en-GB.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. All rights reserved.</translation> <translation id="840168496893712993">Some add-ons cause Chrome to crash. Please try uninstalling them.</translation> <translation id="8459495907675268833">The selected data has been removed from Chrome and synced devices. Your Google Account may have other forms of browsing history like searches and activity from other Google services at history.google.com.</translation> +<translation id="850555388806794946">To make Chrome your default: + 1. Open settings + 2. Tap the default browser app + 3. Select Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">If you allow Chrome to know your location, Chrome sends it to your default search engine and any sites that you allow. Sites may ask for your location when they have local info to show you, like nearby shops or news.</translation> </translationbundle> \ No newline at end of file
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 e87dc82b..4ae4982 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
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Todos los derechos reservados.</translation> <translation id="840168496893712993">Algunos complementos causan bloqueos en Chrome. Prueba a desinstalarlos.</translation> <translation id="8459495907675268833">Los datos seleccionados se quitaron de Chrome y los dispositivos sincronizados. Es posible que tu cuenta de Google tenga otros formularios del historial de navegación, como las búsquedas y la actividad de otros servicios de Google en history.google.com.</translation> +<translation id="850555388806794946">Para establecer Chrome como navegador predeterminado, haz lo siguiente: + 1. Abre Ajustes. + 2. Presiona App de navegador predeterminada. + 3. Selecciona Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Si permites que Chrome conozca tu ubicación, la enviará a tu motor de búsqueda predeterminado y a los sitios que permitas. Es posible que los sitios soliciten tu ubicación cuando tienen información local para mostrarte, como noticias o tiendas cercanas.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_es.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_es.xtb index a3d83e3..709782e 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_es.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_es.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Todos los derechos reservados.</translation> <translation id="840168496893712993">Algunos complementos hacen que Chrome falle. Prueba a desinstalarlos.</translation> <translation id="8459495907675268833">Los datos seleccionados se han eliminado de Chrome y de los dispositivos sincronizados. Es posible que tu cuenta de Google tenga otras formas del historial de navegación, como las búsquedas o la actividad de otros servicios de Google en la página history.google.com.</translation> +<translation id="850555388806794946">Para establecer Chrome como navegador predeterminado, haz lo siguiente: + 1. Abre Configuración + 2. Toca Aplicación de navegador predeterminada + 3. Selecciona Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Si permites que Chrome conozca tu ubicación, la enviará a tu buscador predeterminado y a los sitios que permitas. Los sitios podrían solicitar conocer tu ubicación si tienen información local que mostrarte, como tiendas cercanas o noticias.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_et.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_et.xtb index 10ca2e05..a41aad2 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_et.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_et.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Autoriõigus <ph name="YEAR" /> Google LLC. Kõik õigused on kaitstud.</translation> <translation id="840168496893712993">Mõned pistikprogrammid põhjustavad Chrome'i kokkujooksmise. Proovige need desinstallida.</translation> <translation id="8459495907675268833">Valitud andmed eemaldati Chrome'ist ja sünkroonitud seadmetest. Aadressil history.google.com võib teie Google'i kontol olla muus vormis sirvimisajalugu, nagu otsingud ja tegevused muudes Google'i teenustes.</translation> +<translation id="850555388806794946">Chrome'i vaikebrauseriks määramiseks tehke järgmist. + 1. Avage menüü Seaded. + 2. Puudutage valikut Vaikebrauserirakendus. + 3. Valige Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Kui lubate Chrome'il teada teie asukohateavet, saadab Chrome selle teie vaikeotsingumootorile ja saitidele, mille jaoks loa annate. Saidid võivad teilt küsida asukohateavet, kui neil on teile näidata kohalikku teavet, näiteks lähedalasuvaid poode või uudiseid.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_eu.xtb index 4e972312..3a3083ce 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_eu.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_eu.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Eskubide guztiak erreserbatuta.</translation> <translation id="840168496893712993">Gehigarri batzuek Chrome huts egitea eragiten dute. Saiatu horiek desinstalatzen.</translation> <translation id="8459495907675268833">Kendu dira hautatutako datuak Chrome-tik eta sinkronizatutako gailuetatik. Baliteke Google-ko kontuak arakatze-historiako bestelako datu batzuk (adibidez, bilaketak eta beste Google-ren zerbitzu batzuetako jarduerak) edukitzea history.google.com webgunean.</translation> +<translation id="850555388806794946">Chrome arakatzaile lehenetsi bihurtzeko: + 1. Ireki Ezarpenak. + 2. Sakatu Arakatzaile lehenetsia. + 3. Hautatu Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Zure kokapena jakiteko baimena ematen badiozu Chrome-ri, hark zure bilatzaile lehenetsiari eta baimena duten webguneei bidaliko die kokapen hori. Baliteke webguneek kokapena eskatzea tokiko informazioa (adibidez, inguruko dendak edo albisteak) erakusteko.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb index ec4f812..d768c097 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">حق نسخهبرداری <ph name="YEAR" /> Google LLC. کلیه حقوق محفوظ است.</translation> <translation id="840168496893712993">برخی از افزونهها باعث میشوند Chrome از کار بیفتد. لطفاً آنها را حذف نصب کنید.</translation> <translation id="8459495907675268833">دادههای انتخابشده از Chrome و دستگاههای همگامسازیشده حذف شدند. ممکن است اشکال دیگری از سابقه مرورتان در حساب Google شما وجود داشته باشد، مانند جستجوها و فعالیت دیگر سرویسهای Google در history.google.com.</translation> +<translation id="850555388806794946">برای تنظیم Chrome بهعنوان مرورگر پیشفرض: + ۱. «تنظیمات» را باز کنید + ۲. روی «برنامه مرورگر پیشفرض» ضربه بزنید + ۳. Chrome را باز کنید.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">اگر به Chrome اجازه دهید به مکانتان دسترسی داشته باشد، Chrome مکانتان را به موتور جستجوی پیشفرض و هر سایتی که اجازه دهید ارسال میکند. وقتی سایتها اطلاعاتی محلی (مثل اخبار یا فروشگاههای اطراف) برای نمایش به شما داشته باشند، ممکن است برای دسترسی به مکانتان درخواست دهند.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fi.xtb index 78741a1b9..2f5c8dc 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fi.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fi.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Kaikki oikeudet pidätetään.</translation> <translation id="840168496893712993">Jokin laajennus kaataa Chromen. Kokeile poistaa laajennuksia.</translation> <translation id="8459495907675268833">Valitut tiedot on poistettu Chromesta ja synkronoiduilta laitteilta. Google-tililläsi voi olla muita selaushistoriatietoja, kuten hakuja ja toimintaa muista Google-palveluista, osoitteessa history.google.com.</translation> +<translation id="850555388806794946">Näin teet Chromesta oletusselaimesi: + 1. Avaa Asetukset + 2. Valitse Oletusselain + 3. Valitse Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Jos Chrome saa nähdä sijaintisi, sijainti lähetetään oletushakukoneellesi ja sivustoille, jotka sallit. Sivustot voivat kysyä sijaintiasi, jos niillä on sinulle paikallisia tietoja, esim. uutisia tai lähistöllä olevia kauppoja.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb index edf75ea..92d8baf 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Nakalaan ang lahat ng karapatan.</translation> <translation id="840168496893712993">Nagiging dahilan ang ilang add-on ng pag-crash ng Chrome. Pakisubukang i-uninstall ang mga ito.</translation> <translation id="8459495907675268833">Inalis ang piniling data mula sa Chrome at mga naka-sync na device. Maaaring mayroong ibang mga uri ng history ng pag-browse ang iyong Google Account gaya ng mga paghahanap at aktibidad mula sa iba pang mga serbisyo ng Google sa history.google.com.</translation> +<translation id="850555388806794946">Para itakda ang Chrome bilang iyong default: + 1. Buksan ang Mga Setting + 2. I-tap ang Default na Browser App + 3. Piliin ang Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Kung papayagan mo ang Chrome na alamin ang iyong lokasyon, ipapadala ito ng Chrome sa default na search engine mo at sa anumang site na papayagan mo. Posibleng hingin ng mga site ang iyong lokasyon kapag may lokal na impormasyong ipapakita sa iyo ang mga ito, tulad ng mga shop sa malapit o balita.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fr.xtb index b869b6da..874bd9d 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fr.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fr.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">© <ph name="YEAR" /> Google LLC. Tous droits réservés.</translation> <translation id="840168496893712993">Certains modules complémentaires entraînent le plantage de Chrome. Veuillez essayer de les désinstaller.</translation> <translation id="8459495907675268833">Les données sélectionnées ont été supprimées de Chrome et des appareils synchronisés. Votre compte Google conserve peut-être d'autres formes d'historique de navigation sur la page history.google.com concernant, par exemple, vos recherches ou vos activités via d'autres services Google.</translation> +<translation id="850555388806794946">Pour définir Chrome comme votre navigateur par défaut, procédez comme suit : + 1. Accédez à "Réglages" + 2. Appuyez sur "Navigateur par défaut" + 3. Sélectionnez "Chrome".</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Si vous l'autorisez à connaître votre position, Chrome la communique à votre moteur de recherche par défaut ainsi qu'à tous les sites que vous autorisez. Certains sites peuvent demander votre position lorsqu'ils souhaitent vous montrer des informations locales, comme des magasins à proximité ou des actualités.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_gl.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_gl.xtb index 45c42b2..8cd3e0d 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_gl.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_gl.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Todos os dereitos reservados.</translation> <translation id="840168496893712993">Algúns complementos fan que Chrome falle. Proba a desinstalalos.</translation> <translation id="8459495907675268833">Os datos seleccionados elimináronse de Chrome e dos dispositivos sincronizados. É posible que a túa conta de Google teña outras formas do historial de navegación, como buscas e actividade doutros servizos de Google, en history.google.com.</translation> +<translation id="850555388806794946">Para facer que Chrome sexa o teu navegador predeterminado, sigue estes pasos: + 1. Abre Configuración + 2. Toca Aplicación de navegador predeterminada + 3. Selecciona Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Se permites que Chrome saiba cal é a túa localización, este enviaralla ao teu motor de busca predeterminado e aos sitios aos que lles concedas a autorización pertinente. Os sitios poderán preguntarche pola túa localización se teñen información local que mostrarche (por exemplo, noticias ou tendas próximas).</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb index 6d523bf..d5af0b5 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">કૉપિરાઇટ <ph name="YEAR" /> Google LLC. સર્વાધિકાર સુરક્ષિત.</translation> <translation id="840168496893712993">કેટલાંક એડ-ઓનને કારણે Chrome ક્રૅશ થાય છે. કૃપા કરીને તેમને અનઇન્સ્ટૉલ કરવાનો પ્રયાસ કરો.</translation> <translation id="8459495907675268833">પસંદ કરેલ ડેટા Chrome અને સિંક ડિવાઇસમાંથી દૂર કરવામાં આવ્યો છે. તમારા Google એકાઉન્ટમાં બ્રાઉઝિંગ ઇતિહાસના બીજા સ્વરૂપો જેમ કે શોધ અને history.google.com પરની બીજા Google સેવાઓમાંથી પ્રવૃત્તિ હોય શકે છે.</translation> +<translation id="850555388806794946">Chromeને તમારું ડિફૉલ્ટ બ્રાઉઝર બનાવવા માટે: + 1. સેટિંગ ખોલો + 2. ડિફૉલ્ટ બ્રાઉઝર ઍપ પર ટૅપ કરો + 3. Chrome પસંદ કરો.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">જો તમે Chromeને તમારું સ્થાન જાણવાની મંજૂરી આપો, તો Chrome તમારા ડિફૉલ્ટ શોધ એન્જિનને અને તમે જે પણ સાઇટને મંજૂરી આપશો, તેને તેની માહિતી મોકલે છે. જ્યારે નજીકની દુકાનો અથવા સમાચાર જેવી કોઈ સ્થાનિક માહિતી સાઇટ પાસે તમને બતાવવા માટે હોય, ત્યારે સાઇટ તમારા સ્થાન માટે પૂછી શકે છે.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hi.xtb index 327e6072..f59df85 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hi.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hi.xtb
@@ -77,6 +77,10 @@ <translation id="8370517070665726704">कॉपीराइट <ph name="YEAR" /> Google LLC. सर्वाधिकार सुरक्षित.</translation> <translation id="840168496893712993">कुछ ऐड-ऑन के कारण Chrome क्रैश हो जाता है. कृपया उन्हें अनइंस्टॉल करके देखें.</translation> <translation id="8459495907675268833">चयनित डेटा Chrome और समन्वयित डिवाइस से निकाल दिया गया है. हो सकता है कि आपके Google खाते में अन्य प्रकार के ब्राउज़िंग इतिहास जैसे खोज और history.google.com पर अन्य Google सेवाओं की गतिविधि हो.</translation> +<translation id="850555388806794946">Chrome को डिफ़ॉल्ट ब्राउज़र के तौर पर सेट करने के लिए: + 1. Settings खोलें + 2. डिफ़ॉल्ट ब्राउज़र ऐप्लिकेशन पर टैप करें + 3. Chrome चुनें.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">अगर आप Chrome को अपनी जगह की जानकारी इस्तेमाल करने की अनुमति देते हैं, तो वह इसे आपके डिफ़ॉल्ट सर्च इंजन और उन साइटों को भेजता है जिन्हें आप अनुमति देते हैं. जब साइटों के पास आपको दिखाने के लिए स्थानीय जानकारी होती है, तब वे आपकी जगह की जानकारी मांग सकती हैं. स्थानीय जानकारी में, आस-पास की दुकानों की जानकारी या खबरें वगैरह शामिल होती हैं.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hr.xtb index fb9d68c..b1b5c51 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hr.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hr.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Autorska prava <ph name="YEAR" />. Google LLC. Sva prava pridržana.</translation> <translation id="840168496893712993">Neki programski dodaci uzrokuju rušenje preglednika Chrome. Pokušajte ih deinstalirati.</translation> <translation id="8459495907675268833">Odabrani podaci uklonjeni su iz Chromea i sa sinkroniziranih uređaja. Na Google računu možda postoje drugi oblici povijesti pregledavanja, primjerice pretraživanja i aktivnosti s drugih Googleovih usluga, na stranici history.google.com.</translation> +<translation id="850555388806794946">Da biste postavili Chrome kao zadani preglednik: + 1. Otvorite postavke. + 2. Dodirnite opciju Zadana aplikacija preglednika. + 3. Odaberite Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Ako dopustite Chromeu da sazna vašu lokaciju, Chrome će je poslati vašoj zadanoj tražilici i svim web-lokacijama koje dopustite. Web-lokacije mogu tražiti dopuštenje za vašu lokaciju kad vam žele prikazati lokalne informacije, primjerice trgovine u blizini ili vijesti.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hu.xtb index aed13ab..1bd4156 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hu.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hu.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Minden jog fenntartva.</translation> <translation id="840168496893712993">Bizonyos bővítmények a Chrome összeomlását eredményezik. Próbálja meg eltávolítani őket.</translation> <translation id="8459495907675268833">A kiválasztott adatokat eltávolítottuk a Chrome-ból és a szinkronizált eszközökről. Előfordulhat, hogy Google-fiókjában (a history.google.com címen) még szerepelnek a böngészési előzmények egyéb formái, így például a keresések és egyéb tevékenységek más Google-szolgáltatásokból.</translation> +<translation id="850555388806794946">A Chrome beállítása alapértelmezett böngészőként: + 1. Nyissa meg a Beállításokat. + 2. Koppintson az Alapértelmezett böngésző lehetőségre. + 3. Válassza a Chrome böngészőt.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Ha engedélyezi a Chrome számára a helyadatok használatát, akkor a böngésző továbbítja az adatokat az alapértelmezett keresőmotornak, valamint azoknak a webhelyeknek is, amelyeket Ön engedélyez. A webhelyek akkor kérhetnek hozzáférést a helyadatokhoz, ha helyi információkat jelenítenek meg (pl. közeli boltok vagy helyi hírek esetén).</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hy.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hy.xtb index 9778f77..f1879e937 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hy.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hy.xtb
@@ -79,6 +79,10 @@ <translation id="8370517070665726704">© Google LLC <ph name="YEAR" />։ Բոլոր իրավունքները պահպանված են:</translation> <translation id="840168496893712993">Որոշ հավելումներ առաջացնում են Chrome-ի աշխատանքի խափանում: Փորձեք հեռացնել դրանք:</translation> <translation id="8459495907675268833">Ընտրված տվյալները հեռացվել են Chrome-ից և համաժամացված սարքերից: Պատմությունը կարող է պահվել նաև ձեր Google հաշվում, օրինակ՝ որոնումների և Google-ի ծառայություններում ձեր գործողությունների տեսքով: Այդ տվյալները կարող եք գտնել history.google.com էջում:</translation> +<translation id="850555388806794946">Chrome-ը ձեր կանխադրված դիտարկիչը դարձնելու համար․ + 1. Բացեք կարգավորումները։ + 2. Հպեք «Դիտարկիչի կանխադրված հավելված»։ + 3. Ընտրեք Chrome-ը։</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Ստանալով ձեր տեղադրության տվյալներն օգտագործելու թույլտվություն՝ Chrome-ը ուղարկում է դրանք ձեր կանխադրված որոնողական համակարգին և կայքերին, որոնց տվել եք այդ թույլտվությունը։ Կայքերին կարող են պահանջվել ձեր տեղադրության տվյալները՝ տվյալ վայրին առնչվող տեղեկություններ ցուցադրելու համար (օրինակ՝ նորություններ կամ մոտակա խանութներ)։</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_id.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_id.xtb index b693863..cb9dd23b 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_id.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_id.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Hak cipta <ph name="YEAR" /> Google LLC. Semua hak dilindungi undang-undang.</translation> <translation id="840168496893712993">Beberapa add-on telah menyebabkan Chrome berhenti bekerja. Harap coba uninstal.</translation> <translation id="8459495907675268833">Data yang dipilih telah dihapus dari Chrome dan perangkat yang disinkronkan. Akun Google Anda mungkin memiliki bentuk histori penjelajahan lain seperti penelusuran dan aktivitas dari layanan Google lainnya di history.google.com.</translation> +<translation id="850555388806794946">Untuk menjadikan Chrome sebagai default: + 1. Buka Setelan + 2. Ketuk Aplikasi Browser Default + 3. Pilih Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Jika Anda mengizinkan Chrome mengetahui lokasi, Chrome akan mengirimkannya ke mesin telusur default dan situs apa pun yang diizinkan. Situs mungkin meminta lokasi Anda saat mereka memiliki info lokal untuk ditampilkan, seperti toko terdekat atau berita.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_is.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_is.xtb index d4af34d..157f0a7 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_is.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_is.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Höfundarréttur <ph name="YEAR" /> Google LLC. Öll réttindi áskilin.</translation> <translation id="840168496893712993">Einhverjar viðbætur valda því að Chrome hrynur. Prófaðu að fjarlægja þær.</translation> <translation id="8459495907675268833">Völdu gögnin hafa verið fjarlægð af Chrome og samstilltum tækjum. Google reikningurinn þinn kann að vera með annars konar vefskoðunarferil, svo sem yfir leit og virkni í annarri þjónustu Google, á history.google.com.</translation> +<translation id="850555388806794946">Til að gera Chrome að sjálfgefnum vafra: + 1. Opnaðu Stillingar + 2. Ýttu á „Sjálfgefið vafraforrit“ + 3. Veldu Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Ef þú leyfir Chrome að vita staðsetningu þína sendir Chrome hana á sjálfgefnu leitarvélina þína og þau vefsvæði sem þú veitir aðgang að staðsetningu. Vefsvæði kunna að biðja um staðsetningu þína þegar þau búa yfir staðbundum upplýsingum til að birta þér, t.d. um nálægar verslanir eða fréttir.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_it.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_it.xtb index 2883a69d..d780165 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_it.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_it.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC Tutti i diritti riservati.</translation> <translation id="840168496893712993">Alcuni componenti aggiuntivi provocano l'arresto anomalo di Chrome. Prova a disinstallarli.</translation> <translation id="8459495907675268833">I dati selezionati sono stati rimossi da Chrome e dai dispositivi sincronizzati. Il tuo Account Google potrebbe avere altre forme di cronologia di navigazione, ad esempio ricerche e attività, di altri servizi Google alla pagina history.google.com.</translation> +<translation id="850555388806794946">Per impostare Chrome come browser predefinito: + 1. Apri le Impostazioni. + 2. Tocca App browser predefinita. + 3. Seleziona Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Se consenti a Chrome di conoscere la tua posizione, Chrome la invia al tuo motore di ricerca predefinito e ai siti autorizzati. I siti possono chiederti la posizione in presenza di informazioni locali da mostrarti, ad esempio notizie o negozi nelle vicinanze.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb index 7af1423..83dbb61 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. All rights reserved.</translation> <translation id="840168496893712993">アドオンが原因でChromeがクラッシュしました。アドオンをアンインストールしてみてください。</translation> <translation id="8459495907675268833">選択したデータが Chrome から削除され、同期されたデバイスからも削除されました。他の Google サービスでの検索や操作など、Google アカウントの他の形式の閲覧履歴が history.google.com に残ることがあります。</translation> +<translation id="850555388806794946">Chrome を既定のブラウザにするには: + 1. [設定] を開きます。 + 2. [デフォルトのブラウザアプリ] をタップします。 + 3. [Chrome] を選択します。</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Chrome に位置情報の利用を許可した場合、その情報が Chrome から既定の検索エンジンや許可済みのサイトに送信されます。また、サイトで付近の店舗やニュースなどの地域情報を表示できる場合に位置情報を要求されることがあります。</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ka.xtb index c7be68c3..d61c8d8 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ka.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ka.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">© <ph name="YEAR" />, Google LLC. ყველა უფლება დაცულია.</translation> <translation id="840168496893712993">ზოგიერთი დანამატი იწვევს Chrome-ის შეცდომას. სცადეთ მათი წაშლა.</translation> <translation id="8459495907675268833">არჩეული მონაცემები ამოიშალა Chrome-იდან და სინქრონიზებული მოწყობილობებიდან. თქვენს Google ანგარიშში შეიძლება სხვა ტიპის დათვალიერების ისტორია იყოს შენახული (მაგალითად, ძიებები და Google-ის სხვა სერვისებზე აქტივობა), რომელიც ხელმისაწვდომია მისამართზე: history.google.com.</translation> +<translation id="850555388806794946">Chrome-ის ნაგულისხმევად დასაყენებლად: + 1. გახსნით „პარამეტრები“ + 2. შეეხეთ „ბრაუზერის ნაგულისხმევ აპს“ + 3. აირჩიეთ Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Chrome-ისთვის თქვენი მდებარეობის დადგენის დაშვების შემთხვევაში Chrome მას გაუგზავნის თქვენს ნაგულისხმევ საძიებო სისტემასა და საიტებს, რომლებისთვისაც შესაბამის ნებართვას გასცემთ. საიტებს მდებარეობის მოთხოვნა შეუძლია ისეთი ადგილობრივი ინფორმაციის საჩვენებლად, როგორიცაა, მაგალითად, ახლომდებარე მაღაზიები ან ახალი ამბები.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_kk.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_kk.xtb index e74a1a19..318869ad 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_kk.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_kk.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Барлық құқықтары қорғалған.</translation> <translation id="840168496893712993">Кейбір қондырмалар Chrome қызметін бұзады. Оларды жойып көріңіз.</translation> <translation id="8459495907675268833">Таңдалған деректер Chrome жүйесінен және синхрондалған құрылғылардан алып тасталды. Google есептік жазбасының шолу тарихы басқа Google қызметтеріндегі іздеулер мен әрекеттер тізімі түрінде де болуы мүмкін, оларды history.google.com мекенжайынан табуға болады.</translation> +<translation id="850555388806794946">Chrome браузерін әдепкі браузер ету үшін: + 1. Параметрлерді ашыңыз. + 2. "Әдепкі браузер қолданбасы" түймесін түртіңіз. + 3. Chrome браузерін таңдаңыз.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Chrome-ға орналасқан жеріңізді анықтауға рұқсат етсеңіз, Chrome оны сіздің әдепкі іздеу жүйеңізге және сіз рұқсат еткен кез келген сайтқа жібереді. Сайттарда маңайдағы дүкендер немесе жаңалықтар сияқты жергілікті ақпарат болғанда, геодерегіңізді сұрайды.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_km.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_km.xtb index fcfbf5a..97357d67 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_km.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_km.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">រក្សាសិទ្ធិ <ph name="YEAR" /> Google LLC ។ រក្សាសិទ្ធិគ្រប់យ៉ាង។</translation> <translation id="840168496893712993">កម្មវិធីបន្ថែមមួយចំនួនអាចធ្វើឲ្យ Chrome គាំង សូមព្យាយាមដកការដំឡើងពួកវា។</translation> <translation id="8459495907675268833">ទិន្នន័យដែលបានជ្រើសត្រូវបានយកចេញពី Chrome និងឧបករណ៍ដែលបានធ្វើសមកាលកម្មហើយ។ គណនី Google របស់អ្នកអាចនឹងមានទម្រង់ប្រវត្តិរុករកផ្សេងទៀតដូចជា ការស្វែងរក និងសកម្មភាពចេញពីសេវាកម្ម Google ផ្សេងទៀតនៅ history.google.com</translation> +<translation id="850555388806794946">ដើម្បីកំណត់ Chrome ជាកម្មវិធីរុករកតាមអ៊ីនធឺណិតលំនាំដើមរបស់អ្នក៖ + 1. បើកការកំណត់ + 2. ចុចកម្មវិធីរុករកតាមអ៊ីនធឺណិតលំនាំដើម + 3. ជ្រើសរើស Chrome។</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">ប្រសិនបើអ្នកអនុញ្ញាតឱ្យ Chrome ស្គាល់ទីតាំងរបស់អ្នក Chrome ផ្ញើទីតាំងនេះទៅគេហទំព័រ និងម៉ាស៊ីនស្វែងរកលំនាំដើម ដែលអ្នកអនុញ្ញាត។ គេហទំព័រអាចស្នើសុំទីតាំងរបស់អ្នក នៅពេលគេហទំព័រទាំងនោះមានព័ត៌មានក្នុងស្រុក ដើម្បីបង្ហាញអ្នកដូចជា ហាងនៅជិតៗ ឬព័ត៌មានជាដើម។</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ko.xtb index 0f759a8c..8561094 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ko.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ko.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. All rights reserved.</translation> <translation id="840168496893712993">일부 부가기능으로 Chrome이 비정상 종료됩니다. 해당 부가기능을 제거하세요.</translation> <translation id="8459495907675268833">선택한 데이터가 Chrome 및 동기화된 기기에서 삭제되었습니다. history.google.com에서 검색이나 기타 Google 서비스에서의 활동 등 내 Google 계정에 있는 다른 형식의 탐색 기록을 확인할 수 있습니다.</translation> +<translation id="850555388806794946">Chrome을 기본 브라우저로 설정하려면 다음 단계를 따르세요. + 1. 설정을 엽니다. + 2. 기본 브라우저 앱을 탭합니다. + 3. Chrome을 선택합니다.</translation> <translation id="8540666473246803645">Chrome</translation> <translation id="9135668017386497357">위치 정보 사용을 허용하면 Chrome이 기본 검색엔진 및 권한이 부여된 사이트에 위치 정보를 전송합니다. 근처 상점 또는 뉴스와 같이 표시할 지역 정보가 있는 경우 사이트에서 위치를 요청할 수 있습니다.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ky.xtb index b30741a..d3e89a5 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ky.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ky.xtb
@@ -77,6 +77,10 @@ <translation id="8370517070665726704">© Google LLC, <ph name="YEAR" /> Баардык укуктар корголгон.</translation> <translation id="840168496893712993">Айрым көмөкчү жөндөөлөрдөн улам Chrome бузулуп калды. Аларды орнотуудан чыгарып көрүңүз.</translation> <translation id="8459495907675268833">Тандалган дайындар Chrome'дон жана шайкештирилген түзмөктөрдөн өчүрүлдү. Google Аккаунтуңуздун башка Google кызматтарынан алынган серептөө таржымалы history.google.com дарегинде болушу мүмкүн.</translation> +<translation id="850555388806794946">Chrome'ду демейки серепчи кылуу үчүн: + 1. Жөндөөлөрдү ачыңыз + 2. Демейки серепчи колдонмосун басыңыз + 3. Chrome'ду тандаңыз.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Chrome'го кайда жүргөнүңүздү көрүүгө уруксат берсеңиз, ал бул маалыматты демейки издөө каражатына жана сиз уруксат берген сайттарга жөнөтөт. Сайттар жакын жердеги дүкөндөр же жаңылыктар сыяктуу жергиликтүү маалыматты сизге көрсөтүү үчүн, жайгашкан жериңизди колдонууга уруксат сурашы мүмкүн.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_lo.xtb index fa207156..6b77dfb 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_lo.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_lo.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">ລິຂະສິດ <ph name="YEAR" /> Google LLC. ສະຫງວນສິດທັງໝົດ.</translation> <translation id="840168496893712993">ການເພີ່ມໃສ່ບາງອັນເຮັດໃຫ້ Chrome ເກີດຂັດຂ້ອງ. ກະລຸນາລອງຖອນຕິດຕັ້ງພວກມັນ.</translation> <translation id="8459495907675268833">ຂໍ້ມູນທີ່ເລືອກໄດ້ຖືກລຶບອອກຈາກ Chrome ແລະ ອຸປະກອນທີ່ຊິ້ງແລ້ວ. ບັນຊີ Google ຂອງທ່ານອາດຈະມີປະຫວັດການທ່ອງເວັບຮູບແບບອື່ນ ເຊັ່ນວ່າ ການຄົ້ນຫາ ແລະ ກິດຈະກຳຈາກການບໍລິການອື່ນຂອງ Google ຢູ່ history.google.com.</translation> +<translation id="850555388806794946">ເພື່ອເຮັດໃຫ້ Chrome ເປັນໂປຣແກຣມເລີ່ມຕົ້ນຂອງທ່ານ: + 1. ເປີດການຕັ້ງຄ່າ + 2. ແຕະແອັບໂປຣແກຣມທ່ອງເວັບເລີ່ມຕົ້ນ + 3. ເລືອກ Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">ຖ້າທ່ານອະນຸຍາດໃຫ້ Chrome ຮູ້ສະຖານທີ່ຂອງທ່ານ, Chrome ຈະສົ່ງມັນໃຫ້ໂປຣແກຣມຊອກຫາເລີ່ມຕົ້ນຂອງທ່ານ ແລະ ເວັບໄຊຕ່າງໆທີ່ທ່ານອນຸຍາດ. ເວັບໄຊອາດຈະຂໍເອົາສະຖານທີ່ຂອງທ່ານເມື່ອພວກມັນມີຂໍ້ມູນໃນທ້ອງຖິ່ນທີ່ຈະສະແດງໃຫ້ທ່ານເຫັນ ເຊັ່ນ: ຮ້ານຄ້າທີ່ຢູ່ໃກ້ຄຽງ ຫຼື ຂ່າວ.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_lt.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_lt.xtb index 3f20236..98e8cbf 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_lt.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_lt.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Autorių teisės „Google LLC.“, <ph name="YEAR" /> m. Visos teisės saugomos.</translation> <translation id="840168496893712993">Dėl tam tikrų priedų „Chrome“ užstringa. Pabandykite juos pašalinti.</translation> <translation id="8459495907675268833">Pasirinkti duomenys pašalinti iš „Chrome“ ir sinchronizuojamų įrenginių. Adresu history.google.com gali būti pateikta kitų formų jūsų „Google“ paskyros istorija, pvz., paieškos ir veikla kitose „Google“ paslaugose.</translation> +<translation id="850555388806794946">Jei norite nustatyti „Chrome“ kaip numatytąją naršyklę, atlikite toliau nurodytus veiksmus. + 1. Atidarykite skiltį „Nustatymai“. + 2. Palieskite „Numatytoji naršyklės programa“. + 3. Pasirinkite „Chrome“.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Jei leidžiate „Chrome“ nustatyti jūsų vietovę, „Chrome“ siunčia ją numatytajam paieškos varikliui ir svetainėms, kurioms suteikėte leidimą. Svetainės gali prašyti jūsų vietovės, kai jose yra jums rodytinos vietinės informacijos, pvz., parduotuvių netoliese ar naujienų.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_lv.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_lv.xtb index e306e036..6161f6f 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_lv.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_lv.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Autortiesības: <ph name="YEAR" /> Google LLC. Visas tiesības paturētas.</translation> <translation id="840168496893712993">Daži papildinājumi var izraisīt pārlūka Chrome avarēšanu. Lūdzu, atinstalējiet tos.</translation> <translation id="8459495907675268833">Atlasītie dati ir noņemti no pārlūka Chrome un sinhronizētajām ierīcēm. Jūsu Google kontam vietnē history.google.com var būt citu veidu pārlūkošanas vēstures dati, piemēram, meklēšanas vaicājumi un darbības citos Google pakalpojumos.</translation> +<translation id="850555388806794946">Lai iestatītu Chrome kā noklusējuma pārlūku, veiciet tālāk norādītās darbības. + 1. Atveriet iestatījumus. + 2. Pieskarieties vienumam “Noklusējuma pārlūka lietotne”. + 3. Atlasiet Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Ja atļaujat pārlūkam Chrome piekļūt jūsu atrašanās vietas informācijai, pārlūkā Chrome šī informācija tiek nosūtīta uz jūsu noklusējuma meklētājprogrammu un uz vietnēm, kurām piešķirat atļauju. Vietnēs var tikt lūgta atļauja piekļūt atrašanās vietas informācijai, lai rādītu jums vietēju informāciju, piemēram, vietējās ziņas vai informāciju par tuvumā esošiem veikaliem.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mk.xtb index 95019406..7c70969 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mk.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mk.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Авторски права <ph name="YEAR" /> Google LLC. Сите права се задржани.</translation> <translation id="840168496893712993">Некои додатоци предизвикуваат падови на Chrome. Обидете се да ги деинсталирате.</translation> <translation id="8459495907675268833">Избраните податоци се отстранети од Chrome и синхронизираните уреди. Вашата сметка на Google можеби има други форми на историја на прелистување, како на пр., пребарувања и активност од други услуги на Google на history.google.com.</translation> +<translation id="850555388806794946">За да го поставите Chrome како стандарден прелистувач: + 1. Отворете „Поставки“ + 2. Допрете „Стандардна апликација за прелистување“ + 3. Изберете Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Ако му дозволите на Chrome да ја знае вашата локација, Chrome ја испраќа до вашиот стандарден пребарувач и до сајтовите што сте ги дозволиле. Сајтовите може да ја побараат вашата локација кога имаат да ви прикажат локални информации, како продавници во близина или вести.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ml.xtb index 7e9f418..32014c0f 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ml.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ml.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">പകർപ്പവകാശം <ph name="YEAR" /> Google LLC. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.</translation> <translation id="840168496893712993">ചില ആഡ്-ഓണുകൾ Chrome ക്രാഷാകുന്നതിന് ഇടയാക്കുന്നു. അവ അൺഇൻസ്റ്റാൾ ചെയ്യുന്നത് പരീക്ഷിക്കുക.</translation> <translation id="8459495907675268833">തിരഞ്ഞെടുത്ത ഡാറ്റയെ Chrome-ൽ നിന്നും സമന്വയിപ്പിച്ച ഉപകരണങ്ങളിൽ നിന്നും നീക്കംചെയ്തു. നിങ്ങളുടെ Google അക്കൗണ്ടിന് history.google.com എന്നതിൽ മറ്റ് Google സേവനങ്ങളിൽ നിന്നുള്ള തിരയലുകൾ, പ്രവൃത്തി എന്നിങ്ങനെ മറ്റ് തരത്തിലുള്ള ബ്രൗസിംഗ് ചരിത്രമുണ്ടായിരിക്കാം.</translation> +<translation id="850555388806794946">Chrome നിങ്ങളുടെ ഡിഫോൾട്ട് ബ്രൗസർ ആക്കാൻ: + 1. ക്രമീകരണം തുറക്കുക + 2. ഡിഫോൾട്ട് ബ്രൗസർ ആപ്പ് ടാപ്പ് ചെയ്യുക + 3. Chrome തിരഞ്ഞെടുക്കുക.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">നിങ്ങളുടെ ലൊക്കേഷൻ അറിയാൻ Chrome-നെ അനുവദിക്കുകയാണെങ്കിൽ, Chrome അത് നിങ്ങളുടെ ഡിഫോൾട്ട് തിരയൽ യന്ത്രത്തിലേക്കും നിങ്ങൾ അനുവദിക്കുന്ന സൈറ്റുകളിലേക്കും അയയ്ക്കും. സമീപമുള്ള കടകളോ വാർത്തകളോ പോലുള്ള പ്രാദേശിക വിവരങ്ങൾ നിങ്ങളെ കാണിക്കാനുള്ളപ്പോൾ സൈറ്റുകൾ നിങ്ങളുടെ ലൊക്കേഷൻ ആവശ്യപ്പെട്ടേക്കാം.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mn.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mn.xtb index 66d21e8..6d90b98 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mn.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mn.xtb
@@ -79,6 +79,10 @@ <translation id="8370517070665726704">Зохиогчийн эрх <ph name="YEAR" /> Google ХХК. Бүх эрх хуулиар хамгаалагдсан.</translation> <translation id="840168496893712993">Зарим нэмэлт програмууд нь Chrome-ыг эвдрэхэд хүргэдэг. Тэднийг устгах гээд оролдоод үзнэ үү.</translation> <translation id="8459495907675268833">Chrome болон синк хийсэн төхөөрөмжөөс сонгосон өгөгдлийг устгaлаа. Tаны Google Бүртгэл history.google.com-д Google-н бусад үйлчилгээнээс авсан үйл ажиллагаа, хайлт зэрэг өөр хэлбэрийн хайлтын түүхтэй байж болно.</translation> +<translation id="850555388806794946">Chrome-г өгөгдмөлөө болгохын тулд: + 1. Тохиргоог нээнэ үү + 2. Өгөгдмөл хөтчийн аппыг товшино уу + 3. Chrome-г сонгоно уу.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Хэрэв та Chrome-д таны байршлыг мэдэхийг зөвшөөрвөл Chrome үүнийг таны өгөгдмөл хайлтын систем болон таны зөвшөөрсөн аливаа сайт руу илгээнэ. Сайтууд нь ойролцоох дэлгүүр эсвэл мэдээ зэрэг танд үзүүлэх орон нутгийн мэдээлэлтэй болох үед таны байршлыг асууж болзошгүй.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ms.xtb index 452c36e..13653ccc 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ms.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ms.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Hak Cipta <ph name="YEAR" /> Google LLC. Hak cipta terpelihara.</translation> <translation id="840168496893712993">Beberapa tambahan menyebabkan Chrome ranap. Sila cuba menyahpasang tambahan tersebut.</translation> <translation id="8459495907675268833">Data yang dipilih telah dialih keluar daripada Chrome dan peranti yang disegerakkan. Akaun Google anda mungkin mempunyai sejarah penyemakan imbas dalam bentuk lain seperti carian dan aktiviti daripada perkhidmatan Google yang lain di history.google.com.</translation> +<translation id="850555388806794946">Untuk menjadikan Chrome sebagai penyemak imbas lalai anda: + 1. Buka Tetapan + 2. Ketik Apl Penyemak Imbas Lalai + 3. Pilih Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Jika anda membenarkan Chrome mengetahui lokasi anda, Chrome akan menghantar maklumat itu kepada enjin carian lalai anda dan mana-mana laman yang anda benarkan. Laman mungkin meminta lokasi anda apabila laman itu mempunyai maklumat setempat untuk ditunjukkan kepada anda, seperti kedai atau berita berdekatan.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_my.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_my.xtb index fa213f5..ccb05aa 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_my.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_my.xtb
@@ -79,6 +79,10 @@ <translation id="8370517070665726704">မူပိုင် <ph name="YEAR" /> Google LLC. မူပိုင်ခွင့်အားလုံး ယူထားသည်။</translation> <translation id="840168496893712993">အချို့သော ပေါင်းထည့်မှုများသည့် Chrome ကို ပျက်စီးစေပါသည်။ ကျေးဇူးပြု၍ ၎င်းတို့အားတပ်ဆင်မှုမှ ပြန်လည်ဖြုတ်ရန် ကြိုးစားပါ။</translation> <translation id="8459495907675268833">ရွေးချယ်ထားသည့် ဒေတာများကို စင့်ခ်ပြုလုပ်ထားသည့် စက်ပစ္စည်းများနှင့် Chrome မှဖယ်ရှားလိုက်ပါပြီ။ သင့် Google အကောင့်တွင် history.google.com ရှိရှာဖွေမှုများနှင့် အခြား Google ဝန်ဆောင်မှုများကဲ့သို့ အင်တာနက်အသုံးပြုမှု မှတ်တမ်း အခြားပုံစံများ ရှိနိုင်ပါသည်။</translation> +<translation id="850555388806794946">Chrome ကို မူရင်းသတ်မှတ်ရန်- + ၁။ 'ဆက်တင်များ' ဖွင့်ပါ + ၂။ 'မူရင်း ဘရောင်ဇာအက်ပ်' ကို တို့ပါ + ၃။ Chrome ကိုရွေးပါ။</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">သင်၏တည်နေရာသိရှိရန် Chrome ကို ခွင့်ပြုလိုက်လျှင် Chrome သည် ၎င်းကို သင်၏ မူရင်းရှာဖွေရေးအင်ဂျင်နှင့် သင်ခွင့်ပြုချက်ပေးသော ဝဘ်ဆိုက်များသို့ ပို့ပါသည်။ အနီးရှိဆိုင်များ (သို့) သတင်းကဲ့သို့ ဒေသတွင်းအချက်အလက်များ ပြရမည့်အခါ ဝဘ်ဆိုက်များက သင့်တည်နေရာကို မေးမြန်းနိုင်သည်။</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb index a4ffc06..cbedcfd 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Alle rechten voorbehouden.</translation> <translation id="840168496893712993">Sommige add-ons kunnen ervoor zorgen dat Chrome crasht. Verwijder deze add-ons.</translation> <translation id="8459495907675268833">De geselecteerde gegevens zijn verwijderd uit Chrome en van gesynchroniseerde apparaten. Voor je Google-account kunnen andere vormen van browsegeschiedenis (zoals zoekopdrachten en activiteit uit andere Google-services) beschikbaar zijn via history.google.com.</translation> +<translation id="850555388806794946">Zo stel je Chrome in als standaardbrowser: +1. Open Instellingen. +2. Tik op Standaard browser-app. +3. Selecteer Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Als je Chrome toestaat je locatie te gebruiken, stuurt Chrome deze naar je standaard zoekmachine en naar sites waarvoor je toestemming geeft. Sites kunnen om je locatie vragen als ze je lokale informatie willen laten zien, zoals winkels in de buurt of lokaal nieuws.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_no.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_no.xtb index e13c4ff..ac8ab19 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_no.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_no.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Med enerett.</translation> <translation id="840168496893712993">Noen tillegg fører til at Chrome krasjer. Prøv å avinstallere dem.</translation> <translation id="8459495907675268833">De valgte dataene er fjernet fra Chrome og alle synkroniserte enheter. Det kan hende Google-kontoen din har andre typer nettleserlogger, for eksempel for søk og aktivitet fra andre Google-tjenester, på history.google.com.</translation> +<translation id="850555388806794946">Slik velger du Chrome som standard: + 1. Åpne Innstillinger. + 2. Trykk på Standard nettleserapp. + 3. Velg Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Hvis du lar Chrome få vite posisjonen din, sender Chrome den til standardsøkemotoren din og eventuelle nettsteder hvor du gir tillatelse til dette. Nettsteder kan be om posisjonen din når de har lokal informasjon å vise deg, for eksempel butikker i nærheten eller lokalnyheter.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pl.xtb index 8069f2d..7991a5c 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pl.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pl.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Wszelkie prawa zastrzeżone.</translation> <translation id="840168496893712993">Niektóre dodatki mogą powodować awarie Chrome. Spróbuj je odinstalować.</translation> <translation id="8459495907675268833">Wybrane dane zostały usunięte z Chrome i synchronizowanych urządzeń. Inne rodzaje historii przeglądania, takie jak wyszukiwania i aktywność w innych usługach Google, mogą być nadal dostępne na Twoim koncie Google na history.google.com</translation> +<translation id="850555388806794946">Aby ustawić Chrome jako przeglądarkę domyślną: + 1. Otwórz Ustawienia. + 2. Kliknij Domyślna przeglądarka. + 3. Wybierz Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Jeśli zezwolisz na dostęp do swojej lokalizacji, Chrome będzie wysyłać ją do domyślnej wyszukiwarki oraz witryn, którym przyznasz dostęp. O dostęp do Twojej lokalizacji mogą prosić witryny pokazujące treści lokalne, np. wiadomości z regionu czy informacje o sklepach w pobliżu.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-BR.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-BR.xtb index 42fefce3..18f9fad 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-BR.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-BR.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Todos os direitos reservados.</translation> <translation id="840168496893712993">Alguns complementos causam a falha do Google Chrome. Tente desinstalá-los.</translation> <translation id="8459495907675268833">Os dados selecionados foram removidos do Chrome e dos dispositivos sincronizados. É possível que sua Conta do Google tenha outras formas de histórico de navegação, como pesquisas e atividades de outros serviços do Google em history.google.com.</translation> +<translation id="850555388806794946">Para tornar o Chrome seu navegador padrão: + 1. Abra as Configurações. + 2. Toque em "App do navegador padrão". + 3. Selecione o Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Se você permitir que o Chrome saiba sua localização, ele a enviará para o mecanismo de pesquisa padrão e para os sites aos quais você concedeu permissão. Os sites podem solicitar sua localização para enviar informações locais para você, como notícias ou lojas próximas.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-PT.xtb index b8e93df..58ada79 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-PT.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-PT.xtb
@@ -77,6 +77,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Todos os direitos reservados.</translation> <translation id="840168496893712993">Alguns suplementos provocam falhas no sistema do Chrome. Tente desinstalá-los.</translation> <translation id="8459495907675268833">Os dados selecionados foram removidos do Chrome e dos dispositivos sincronizados. A sua Conta Google pode ter outras formas do histórico de navegação, como pesquisas e atividade de outros serviços Google, em history.google.com.</translation> +<translation id="850555388806794946">Para definir o Chrome como o navegador predefinido: + 1. Abra as Definições + 2. Toque em App de navegador predefinida + 3. Selecione o Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Se permitir que o Chrome conheça a sua localização, este envia-a para o seu motor de pesquisa predefinido e quaisquer sites que permitir. Os sites podem solicitar a sua localização quando têm informações locais para lhe mostrar, como notícias ou lojas próximas.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ro.xtb index 37b2990..3e81f76 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ro.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ro.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Drept de autor <ph name="YEAR" /> Google LLC. Toate drepturile rezervate.</translation> <translation id="840168496893712993">Unele suplimente determină blocarea browserului Chrome. Încearcă să le dezinstalezi.</translation> <translation id="8459495907675268833">Datele selectate au fost eliminate din Chrome și de pe dispozitivele sincronizate. Contul Google poate să ofere alte forme ale istoricului de navigare, cum ar fi căutările și activitatea din alte servicii Google, la history.google.com.</translation> +<translation id="850555388806794946">Pentru a seta Chrome ca browser prestabilit: + 1. deschide Setările; + 2. atinge Aplicația browser prestabilită; + 3. selectează Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Dacă permiți accesul Chrome la locație, Chrome trimite informații privind locația la motorul de căutare prestabilit și la site-urile cărora le acorzi această permisiune. Site-urile pot solicita informații despre locație atunci când au informații locale de afișat, de exemplu, magazine din apropiere sau știri.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ru.xtb index 7e2cb733..ec5e1932 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ru.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ru.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">© Google LLC, <ph name="YEAR" />. Все права защищены.</translation> <translation id="840168496893712993">Некоторые дополнения вызывают сбой Chrome. Попробуйте удалить их.</translation> <translation id="8459495907675268833">Выбранные данные удалены из Chrome и с синхронизированных устройств. Остальная история ваших действий в Интернете может храниться в аккаунте Google, например в виде поисковых запросов и сведений из наших сервисов. Она доступна на странице history.google.com.</translation> +<translation id="850555388806794946">Чтобы сделать Chrome браузером по умолчанию: + 1. Откройте настройки устройства. + 2. Найдите раздел, где выбирается браузер по умолчанию. + 3. Выберите Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Получив разрешение на использование геоданных, Chrome передаст их поисковой системе, установленной на устройстве по умолчанию, а также одобренным вами сайтам. Сайты могут запрашивать данные о вашем местоположении, чтобы показывать актуальную информацию, например местные новости или магазины поблизости.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_si.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_si.xtb index 4f193d1a..5a16194c 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_si.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_si.xtb
@@ -78,6 +78,9 @@ <translation id="8370517070665726704">ප්රකාශන හිමිකම <ph name="YEAR" /> Google LLC. සියලුම හිමිකම් ඇවිරිණි.</translation> <translation id="840168496893712993">ඇතැම් ඈඳුම් Chrome බිඳ වැටීමට හේතු වේ. ඒවා අස්ථාපනය කිරීමට උත්සාහ කරන්න.</translation> <translation id="8459495907675268833">තෝරා ගත් දත්ත Chrome සහ සමමුහුර්ත කළ උපාංග වෙතින් ඉවත් කර ඇත. ඔබගේ Google ගිණුමට සෙවීම් සහ history.google.com හි වෙනත් Google සේවා වෙතින් වන ක්රියාකාරකම් වැනි බ්රවුස් කිරීමේ ඉතිහාසයේ වෙනත් ආකාර තිබිය හැකිය.</translation> +<translation id="850555388806794946">Chrome ඔබගේ පෙරනිමි බවට පත් කිරීමට: + 1. සැකසීම් විවෘත කරන්න පෙරනිමි බ්රව්සර යෙදුම තට්ටු කරන්න + 3. Chrome තෝරන්න.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">ඔබගේ ස්ථානය දැන ගැනීමට ඔබ Chrome හට ඉඩ දුනහොත්, Chrome එය ඔබගේ පෙරනිමි සෙවීම් යන්ත්රයට සහ ඔබ ඉඩ දෙන ඕනෑම වෙබ් අඩවියකට යවයි. ඔබට පෙන්වීමට අවට ඇති සාප්පු හෝ පුවත් වැනි ස්ථානීය තොරතුරු ඇති විට අඩවි ඔබගේ ස්ථානය ඉල්ලා සිටිය හැකිය.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb index d0121dc..c262f7d 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Všetky práva vyhradené.</translation> <translation id="840168496893712993">Niektoré doplnky spôsobujú zlyhanie prehliadača Chrome. Skúste ich odinštalovať.</translation> <translation id="8459495907675268833">Vybraté údaje boli odstránené z Chromu a synchronizovaných zariadení. Váš účet Google môže mať na adrese history.google.com ďalšie formy histórie prehliadania, ako napríklad vyhľadávania a aktivity v iných službách Google.</translation> +<translation id="850555388806794946">Ak chcete Chrome nastaviť ako predvolený prehliadač: + 1. Otvorte Nastavenia. + 2. Klepnite na predvolenú aplikáciu prehliadača. + 3. Vyberte Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Ak Chromu povolíte prístup k polohe, odošle ju predvolenému vyhľadávaču a všetkým webom, ktorým to povolíte. Weby vás môžu požiadať o polohu, keď vám chcú zobraziť miestne informácie, napríklad obchody v okolí alebo správy.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sl.xtb index b55e6eec..03297a50 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sl.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sl.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Vse pravice pridržane.</translation> <translation id="840168496893712993">Nekateri dodatki povzročajo zrušitve Chroma. Poskusite jih odstraniti.</translation> <translation id="8459495907675268833">Izbrani podatki so bili odstranjeni iz Chroma in sinhroniziranih naprav. V Google Računu so morda druge vrste zgodovine brskanja, kot so iskanja in dejavnosti iz drugih Googlovih storitev, na history.google.com.</translation> +<translation id="850555388806794946">Chrome nastavite kot privzeti iskalnik tako: + 1. Odprite nastavitve. + 2. Dotaknite se možnosti za privzeto aplikacijo za brskanje. + 3. Izberite Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Če Chromu omogočite dostop do podatkov o lokaciji, jih Chrome pošlje v privzeti iskalnik in na spletna mesta, ki jim podelite dovoljenje. Spletna mesta morda zahtevajo podatke o lokaciji, ko želijo prikazati lokalne informacije, na primer trgovine v bližini ali novice.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sq.xtb index da35ea9..5cadcad 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sq.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sq.xtb
@@ -77,6 +77,10 @@ <translation id="8370517070665726704">Të drejtat e autorit <ph name="YEAR" /> Google LLC. Të gjitha të drejtat e rezervuara.</translation> <translation id="840168496893712993">Disa shtesa bëjnë që Chrome të ndërpritet aksidentalisht. Provo t'i çinstalosh ato.</translation> <translation id="8459495907675268833">Të dhënat e zgjedhura janë hequr nga Chrome dhe nga pajisjet e sinkronizuara. Llogaria jote e Google mund të ketë forma të tjera të historikut të shfletimit, si kërkimet dhe aktivitetet nga shërbimet e tjera të Google, në history.google.com.</translation> +<translation id="850555388806794946">Për ta bërë Chrome shfletuesin e parazgjedhur: + 1. Hap "Cilësimet" + 2. Trokit tek "Aplikacioni i parazgjedhur i shfletuesit" + 3. Zgjidh Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Nëse lejon që Chrome të dijë vendndodhjen tënde, Chrome e dërgon atë te motori i parazgjedhur i kërkimit dhe çdo sajt që ti lejon. Sajtet mund të kërkojnë për vendndodhjen tënde kur ato kanë informacione lokale për të të shfaqur, si dyqanet në afërsi ose lajme.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb index 9645d35..9a9c16c7 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Autorska prava <ph name="YEAR" />. Google LLC. Sva prava zadržana.</translation> <translation id="840168496893712993">Neki programski dodaci izazivaju otkazivanje Chrome-a. Pokušajte da ih deinstalirate.</translation> <translation id="8459495907675268833">Izabrani podaci su uklonjeni iz Chrome-a i sa sinhronizovanih uređaja. Google nalog možda ima druge oblike istorije pregledanja, poput pretraga i aktivnosti u drugim Google uslugama na history.google.com.</translation> +<translation id="850555388806794946">Da biste postavili Chrome za podrazumevani pregledač: + 1. Otvorite podešavanja + 2. Dodirnite Podrazumevana aplikacija za pregledanje + 3. Izaberite Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Ako dozvolite da Chrome sazna lokaciju, Chrome je šalje podrazumevanom pretraživaču i svim sajtovima za koje date dozvolu. Sajtovi mogu da zatraže lokaciju kada imaju da vam prikažu lokalne informacije, poput radnji ili vesti u blizini.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb index d8c115e..115c689 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Ауторска права <ph name="YEAR" />. Google LLC. Сва права задржана.</translation> <translation id="840168496893712993">Неки програмски додаци изазивају отказивање Chrome-а. Покушајте да их деинсталирате.</translation> <translation id="8459495907675268833">Изабрани подаци су уклоњени из Chrome-а и са синхронизованих уређаја. Google налог можда има друге облике историје прегледања, попут претрага и активности у другим Google услугама на history.google.com.</translation> +<translation id="850555388806794946">Да бисте поставили Chrome за подразумевани прегледач: + 1. Отворите подешавања + 2. Додирните Подразумевана апликација за прегледање + 3. Изаберите Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Ако дозволите да Chrome сазна локацију, Chrome је шаље подразумеваном претраживачу и свим сајтовима за које дате дозволу. Сајтови могу да затраже локацију када имају да вам прикажу локалне информације, попут радњи или вести у близини.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sv.xtb index e12961f..e6790881 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sv.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sv.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Med ensamrätt.</translation> <translation id="840168496893712993">Några tillägg har fått Chrome att krascha. Testa att avinstallera dem.</translation> <translation id="8459495907675268833">Den data som markerades har tagits bort från Chrome och från synkroniserade enheter. Det kan finnas andra former av webbhistorik i Google-kontot på history.google.com, t.ex. sökningar och aktivitet på andra tjänster från Google.</translation> +<translation id="850555388806794946">Så här använder du Chrome som standard: + 1. Öppna inställningarna + 2. Tryck på Standardwebbläsarapp + 3. Välj Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">När du ger Chrome åtkomst till din plats skickas den från Chrome till din standardsökmotor och alla webbplatser som du ger behörighet till. Webbplatser kan fråga efter din plats när det finns lokal information att visa, till exempel butiker i närheten eller nyheter.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sw.xtb index 0697e33..c31aa75 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sw.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sw.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Hakimiliki <ph name="YEAR" /> Google LLC. Haki zote zimehifadhiwa.</translation> <translation id="840168496893712993">Baadhi ya programu jalizi husababisha Chrome iache kufanya kazi. Tafadhali jaribu kuzisanidua.</translation> <translation id="8459495907675268833">Data uliyochagua imeondolewa kwenye Chrome na kwenye vifaa vilivyosawazishwa. Huenda Akaunti yako ya Google ina aina nyingine za historia ya mambo uliyovinjari kama vile mambo uliyotafuta na shughuli kutoka huduma nyingine za Google katika history.google.com.</translation> +<translation id="850555388806794946">Ili ufanye Chrome iwe kivinjari chako chaguomsingi: + 1. Fungua Mipangilio + 2. Gusa Programu ya Kivinjari Chaguomsingi + 3. Chagua Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Ukiiruhusu Chrome ibaini mahali ulipo, Chrome itatuma maelezo hayo kwenye mtambo wako chaguomsingi wa kutafuta na kwenye tovuti zozote ulizoziruhusu. Tovuti zinaweza kuomba maelezo ya mahali ulipo zinapotaka kukuonyesha taarifa kuhusu eneo lako, kama vile habari au maduka yaliyo karibu nawe.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb index 249108b..3a9a9d1 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">பதிப்புரிமை <ph name="YEAR" /> Google LLC. அனைத்து உரிமைகளும் பாதுகாக்கப்பட்டவை.</translation> <translation id="840168496893712993">சில செருகு நிரல்களினால் Chrome சிதைவுக்குட்படுகிறது. அவற்றை நிறுவல் நீக்கம் செய்ய முயற்சிக்கவும்.</translation> <translation id="8459495907675268833">தேர்ந்தெடுத்த தரவு Chrome மற்றும் ஒத்திசைக்கப்பட்ட சாதனங்களிலிருந்து அகற்றப்பட்டது. உங்கள் Google கணக்கு history.google.com எனும் தளத்தில் பிற Google சேவைகளிலிருந்து தேடல்கள், செயல்பாடு போன்ற உலாவல் வரலாறு தொடர்பான பிற தகவல்களைக் கொண்டிருக்கலாம்.</translation> +<translation id="850555388806794946">Chromeமை உங்கள் இயல்பு உலாவியாக மாற்ற: + 1. அமைப்புகளைத் திறக்கவும் + 2. இயல்பு உலாவி ஆப்ஸ் என்பதைத் தட்டவும் + 3. Chromeமைத் தேர்ந்தெடுக்கவும்.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">உங்கள் இருப்பிடத்தை Chrome அறிந்துகொள்ள அனுமதித்தால் இயல்பான தேடல் இன்ஜினுக்கும் நீங்கள் அனுமதிக்கும் தளங்களுக்கும் Chrome அதை அனுப்பும். அருகிலுள்ள கடைகள் அல்லது செய்திகள் போன்ற உள்ளூர் தகவல்களைக் காட்ட வேண்டிய சூழ்நிலைகளில் உங்கள் இருப்பிடத்தைத் தளங்கள் கேட்கக்கூடும்.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_th.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_th.xtb index a5f0fc1..fffd605 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_th.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_th.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">ลิขสิทธิ์ <ph name="YEAR" /> Google LLC สงวนลิขสิทธิ์</translation> <translation id="840168496893712993">ส่วนเสริมบางรายการทำให้ Chrome ขัดข้อง โปรดลองถอนการติดตั้งส่วนเสริมนั้น</translation> <translation id="8459495907675268833">ระบบได้นำข้อมูลที่เลือกไว้ออกจาก Chrome และอุปกรณ์ที่ซิงค์แล้ว บัญชี Google ของคุณอาจมีประวัติการท่องเว็บในรูปแบบอื่นๆ เช่น การค้นหาและกิจกรรมจากบริการอื่นๆ ของ Google ที่ history.google.com</translation> +<translation id="850555388806794946">วิธีกำหนดให้ Chrome เป็นเบราว์เซอร์เริ่มต้น + 1. เปิดการตั้งค่า + 2. แตะแอปเบราว์เซอร์เริ่มต้น + 3. เลือก Chrome</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">หากอนุญาตให้ Chrome ทราบตำแหน่งของคุณ Chrome จะส่งตำแหน่งไปยังเครื่องมือค้นหาเริ่มต้นและเว็บไซต์ที่คุณให้สิทธิ์ เว็บไซต์อาจขอตำแหน่งของคุณเมื่อมีข้อมูลในพื้นที่ที่จะแสดง เช่น ร้านค้าใกล้เคียงหรือข่าวสาร</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb index 7d5d0037..f084d94 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Telif hakkı <ph name="YEAR" /> Google LLC. Tüm hakları saklıdır.</translation> <translation id="840168496893712993">Bazı eklentiler Chrome'un kilitlenmesine neden oluyor. Lütfen bunların yüklemesini kaldırmayı deneyin.</translation> <translation id="8459495907675268833">Seçilen veriler Chrome'dan ve senkronize edilen cihazlardan kaldırıldı. Diğer Google hizmetlerinden yapılan aramalar ve etkinlikler gibi Google Hesabınızla ilişkili başka biçimlerde tarama geçmişi history.google.com adresinde bulunabilir.</translation> +<translation id="850555388806794946">Chrome'u varsayılan tarayıcınız yapmak için: + 1. Ayarlar'ı açın + 2. Varsayılan Tarayıcı Uygulaması'na dokunun + 3. Chrome'u seçin.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Chrome'un konumunuzu bilmesine izin verirseniz Chrome, konumunuzu varsayılan arama motorunuza ve izin verdiğiniz tüm sitelere gönderir. Siteler, yakındaki mağazalar veya haberler gibi size gösterecek yerel bilgileri olduğunda konumunuza erişmek isteyebilir.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_uk.xtb index e9ab40f0..617ef93 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_uk.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_uk.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Авторське право <ph name="YEAR" /> Google LLC. Усі права захищено.</translation> <translation id="840168496893712993">Деякі додатки спричиняють аварійне завершення роботи Chrome. Спробуйте їх видалити.</translation> <translation id="8459495907675268833">Вибрані дані видалено з Chrome і синхронізованих пристроїв. У вашому обліковому записі Google на сторінці history.google.com можуть бути додаткові форми історії веб-перегляду, як-от пошукові запити чи активність в інших службах Google.</translation> +<translation id="850555388806794946">Як зробити Chrome веб-переглядачем за умовчанням + 1. Відкрийте налаштування + 2. Натисніть "Веб-переглядач за умовчанням" + 3. Виберіть Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Коли ви надаєте веб-переглядачу Chrome доступ до геоданих, він надсилає їх пошуковій системі за умовчанням і сайтам, яким ви дали дозвіл. Доступ до геоданих можуть просити сайти, що пропонують місцеву інформацію (наприклад, про магазини поблизу чи новини).</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_uz.xtb index 9dfd885b..d0040988 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_uz.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_uz.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">© Google LLC, <ph name="YEAR" /> Barcha huquqlar himoyalangan.</translation> <translation id="840168496893712993">Ba’zi kengaytmalar Chrome brauzerini ishdan chiqaradi. Ularni o‘chirib tashlang.</translation> <translation id="8459495907675268833">Tanlangan ma’lumotlar Chrome va sinxronlangan qurilmalardan o‘chirildi. Google hisobingiz orqali amalga oshirilgan qidiruvlar, brauzer tarixi va boshqa internetdagi faoliyatingizni history.google.com sahifasi orqali ko‘rishingiz mumkin.</translation> +<translation id="850555388806794946">Chrome brauzerini asosiy deb belgilash uchun: + 1. Sozlamalarni oching + 2. Standart brauzer ilovasi ustiga bosing + 3. Chrome brauzerini tanlang.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Geolokatsiyadan foydalanishga ruxsat bersangiz, Chrome bu maʼlumotlarni asosiy qidiruv tizimingizga va siz ruxsat bergan saytlarga yuboradi. Saytlar atrofdagi doʻkonlar yoki yangiliklar kabi axborotlarni chiqarish uchun joylashuvingizni soʻrashi mumkin.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_vi.xtb index 3bd864b0..270e755 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_vi.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_vi.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Bản quyền <ph name="YEAR" /> Google LLC. Mọi quyền được bảo lưu.</translation> <translation id="840168496893712993">Một số tiện ích bổ sung khiến Chrome trục trặc. Hãy thử gỡ cài đặt chúng.</translation> <translation id="8459495907675268833">Dữ liệu được chọn đã bị xóa khỏi Chrome và các thiết bị được đồng bộ hóa. Tài khoản Google của bạn có thể có các dạng lịch sử duyệt web khác, chẳng hạn như tìm kiếm và hoạt động từ các dịch vụ khác của Google tại history.google.com.</translation> +<translation id="850555388806794946">Cách đặt Chrome làm trình duyệt mặc định: + 1. Mở phần Cài đặt + 2. Nhấn vào Ứng dụng trình duyệt mặc định + 3. Chọn Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Nếu bạn để cho Chrome biết thông tin vị trí của mình, thì Chrome sẽ gửi thông tin đó đến công cụ tìm kiếm mặc định và mọi trang web mà bạn cho phép. Khi có thông tin địa phương để hiển thị cho bạn, các trang web có thể yêu cầu thông tin vị trí, chẳng hạn như tin tức hoặc cửa hàng ở gần.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-HK.xtb index ecc6c85..73c038fc 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-HK.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-HK.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">版權所有 <ph name="YEAR" /> Google LLC。保留所有權利。</translation> <translation id="840168496893712993">部分外掛程式造成 Chrome 當機,請解除安裝這些外掛程式。</translation> <translation id="8459495907675268833">所選資料已從 Chrome 和已同步的裝置中移除。不過,您仍可前往 history.google.com 存取 Google 帳戶中保存的其他各種瀏覽紀錄,例如在其他 Google 服務中的搜尋和活動紀錄。</translation> +<translation id="850555388806794946">如何將 Chrome 設定為預設瀏覽器: + 1. 開啟「設定」 + 2. 輕按 [預設瀏覽器應用程式] + 3. 選取 [Chrome]。</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">如果您允許 Chrome 存取您的位置,Chrome 會將位置資料傳送至預設搜尋引擎及您允許的任何網站。當網站向您提供附近商家或新聞等本地資訊時,可能會要求您提供位置。</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb index c237eea5..3ac67d4 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. 保留所有權利。</translation> <translation id="840168496893712993">部分外掛程式造成 Chrome 當機,請解除安裝這些外掛程式。</translation> <translation id="8459495907675268833">系統已將您所選取的資料從 Chrome 和其他同步的裝置中移除。您的 Google 帳戶仍可能保留了其他類型的瀏覽記錄,例如其他 Google 服務中的搜尋和活動記錄 (可前往 history.google.com 查詢)。</translation> +<translation id="850555388806794946">如何將 Chrome 設為預設瀏覽器: + 1. 開啟「設定」 + 2. 輕觸 [預設瀏覽器 App] + 3. 選取 [Chrome]</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">如果允許 Chrome 取得位置資訊,Chrome 會將該資訊傳送至你的預設搜尋引擎,以及你允許存取這項資訊的網站。當網站要向你顯示當地資訊時 (例如附近商家或新聞),可能會要求你提供位置資訊。</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zu.xtb index f16abd7..ae5bd65 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zu.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zu.xtb
@@ -78,6 +78,10 @@ <translation id="8370517070665726704">© <ph name="YEAR" /> Google LLC. Wonke amalungelo agodliwe.</translation> <translation id="840168496893712993">Ezinye izengezo zibangele ukuthi i-Chrome iphahlazeke. Sicela uwakhiphe.</translation> <translation id="8459495907675268833">Idatha ekhethiwe isusiwe kusuka ku-Chrome namadivayisi avumelanisiwe. I-Akhawunti yakho ye-Google ingahle ibe nezinye izindlela zomlando wokuphequlula njengosesho nomsebenzi kusuka kwamanye amasevisi e-Google ku-history.google.com.</translation> +<translation id="850555388806794946">Ukuze wenze i-Chrome ibe ngokuzenzakalelayo kwakho: + 1. Vula Amasethingi. + 2. Thepha Uhlelo Lokusebenza Lwesiphequluli Esizenzakalelayo + 3. Khetha i-Chrome.</translation> <translation id="8540666473246803645">Google Chrome</translation> <translation id="9135668017386497357">Uma uvumela i-Chrome ukuthi yazi indawo yakho, i-Chrome iyithumela kunjini yakho yosesho ezenzakalelayo kanye nanoma imaphi amasayithi owavumelayo. Amasayithi angacela indawo yakho uma anolwazi lwasendaweni azokubonisa lona, njengezitolo zaseduze noma izindaba</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb index 2f39432..d226fb5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -52,7 +52,7 @@ <translation id="1389974829397082527">ఇక్కడ బుక్మార్క్లు ఏవీ లేవు</translation> <translation id="1400642268715879018">గత 4 వారాలు</translation> <translation id="1407135791313364759">అన్నీ తెరువు</translation> -<translation id="1430915738399379752">ముద్రించు</translation> +<translation id="1430915738399379752">ప్రింట్</translation> <translation id="1436290164580597469">సింక్ చేయడం ప్రారంభించడానికి రహస్య పదబంధాన్ని నమోదు చేయండి.</translation> <translation id="1449835205994625556">పాస్వర్డ్ను దాచండి</translation> <translation id="145015347812617860"><ph name="COUNT" /> అంశాలు</translation>
diff --git a/ios/chrome/browser/app_launcher/app_launcher_tab_helper.mm b/ios/chrome/browser/app_launcher/app_launcher_tab_helper.mm index 38e82ff..986abdc7 100644 --- a/ios/chrome/browser/app_launcher/app_launcher_tab_helper.mm +++ b/ios/chrome/browser/app_launcher/app_launcher_tab_helper.mm
@@ -184,6 +184,12 @@ } } + // Disallow navigations to tel: URLs from cross-origin frames. + if (request_url.SchemeIs(url::kTelScheme) && + request_info.target_frame_is_cross_origin) { + return web::WebStatePolicyDecider::PolicyDecision::Cancel(); + } + ExternalURLRequestStatus request_status = ExternalURLRequestStatus::kMainFrameRequestAllowed; // TODO(crbug.com/852489): Check if the source frame should also be
diff --git a/ios/chrome/browser/app_launcher/app_launcher_tab_helper_unittest.mm b/ios/chrome/browser/app_launcher/app_launcher_tab_helper_unittest.mm index f608db1..04dae43 100644 --- a/ios/chrome/browser/app_launcher/app_launcher_tab_helper_unittest.mm +++ b/ios/chrome/browser/app_launcher/app_launcher_tab_helper_unittest.mm
@@ -117,13 +117,15 @@ bool TestShouldAllowRequest(NSString* url_string, bool target_frame_is_main, + bool target_frame_is_cross_origin, bool has_user_gesture, ui::PageTransition transition_type = ui::PageTransition::PAGE_TRANSITION_LINK) WARN_UNUSED_RESULT { NSURL* url = [NSURL URLWithString:url_string]; web::WebStatePolicyDecider::RequestInfo request_info( - transition_type, target_frame_is_main, has_user_gesture); + transition_type, target_frame_is_main, target_frame_is_cross_origin, + has_user_gesture); return tab_helper_ ->ShouldAllowRequest([NSURLRequest requestWithURL:url], request_info) .ShouldAllowNavigation(); @@ -171,7 +173,8 @@ URLWithString:@"itms-apps://itunes.apple.com/us/app/appname/id123"]; web::WebStatePolicyDecider::RequestInfo request_info( transition_type, - /*target_frame_is_main=*/true, /*has_user_gesture=*/true); + /*target_frame_is_main=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/true); EXPECT_TRUE(tab_helper_ ->ShouldAllowRequest([NSURLRequest requestWithURL:url], request_info) @@ -197,6 +200,7 @@ abuse_detector_.policy = ExternalAppLaunchPolicyAllow; EXPECT_FALSE(TestShouldAllowRequest(@"valid://1234", /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(1U, delegate_.app_launch_count()); EXPECT_EQ(GURL("valid://1234"), delegate_.last_launched_app_url()); @@ -207,6 +211,7 @@ abuse_detector_.policy = ExternalAppLaunchPolicyBlock; EXPECT_FALSE(TestShouldAllowRequest(@"valid://1234", /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(0U, delegate_.alert_shown_count()); EXPECT_EQ(0U, delegate_.app_launch_count()); @@ -219,6 +224,7 @@ delegate_.set_should_accept_prompt(true); EXPECT_FALSE(TestShouldAllowRequest(@"valid://1234", /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(1U, delegate_.alert_shown_count()); @@ -232,6 +238,7 @@ abuse_detector_.policy = ExternalAppLaunchPolicyPrompt; EXPECT_FALSE(TestShouldAllowRequest(@"valid://1234", /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(0U, delegate_.app_launch_count()); } @@ -241,20 +248,24 @@ TEST_F(AppLauncherTabHelperTest, ShouldAllowRequestWithAppUrl) { NSString* url_string = @"itms-apps://itunes.apple.com/us/app/appname/id123"; EXPECT_FALSE(TestShouldAllowRequest(url_string, /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(1U, delegate_.app_launch_count()); EXPECT_FALSE(TestShouldAllowRequest(url_string, /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/true)); EXPECT_EQ(2U, delegate_.app_launch_count()); EXPECT_FALSE(TestShouldAllowRequest(url_string, /*target_frame_is_main=*/false, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(2U, delegate_.app_launch_count()); EXPECT_FALSE(TestShouldAllowRequest(url_string, /*target_frame_is_main=*/false, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/true)); EXPECT_EQ(3U, delegate_.app_launch_count()); } @@ -264,18 +275,23 @@ TEST_F(AppLauncherTabHelperTest, ShouldAllowRequestWithNonAppUrl) { EXPECT_TRUE(TestShouldAllowRequest( @"http://itunes.apple.com/us/app/appname/id123", - /*target_frame_is_main=*/true, /*has_user_gesture=*/false)); + /*target_frame_is_main=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false)); EXPECT_TRUE(TestShouldAllowRequest(@"file://a/b/c", /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/true)); EXPECT_TRUE(TestShouldAllowRequest(@"about://test", /*target_frame_is_main=*/false, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_TRUE(TestShouldAllowRequest(@"data://test", /*target_frame_is_main=*/false, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/true)); EXPECT_TRUE(TestShouldAllowRequest(@"blob://test", /*target_frame_is_main=*/false, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/true)); EXPECT_EQ(0U, delegate_.app_launch_count()); } @@ -284,9 +300,11 @@ TEST_F(AppLauncherTabHelperTest, InvalidUrls) { EXPECT_FALSE(TestShouldAllowRequest(/*url_string=*/@"", /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_FALSE(TestShouldAllowRequest(@"invalid", /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(0U, delegate_.app_launch_count()); } @@ -303,12 +321,14 @@ navigation_manager_->SetLastCommittedItem(item.get()); EXPECT_FALSE(TestShouldAllowRequest(url_string, /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(0U, delegate_.app_launch_count()); navigation_manager_->SetLastCommittedItem(nullptr); EXPECT_FALSE(TestShouldAllowRequest(url_string, /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(1U, delegate_.app_launch_count()); } @@ -317,10 +337,39 @@ TEST_F(AppLauncherTabHelperTest, InsecureUrls) { EXPECT_FALSE(TestShouldAllowRequest(@"app-settings://", /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(0U, delegate_.app_launch_count()); } +// Tests that tel: URLs are blocked when the target frame is cross-origin +// with respect to the source origin. +TEST_F(AppLauncherTabHelperTest, TelUrls) { + EXPECT_FALSE(TestShouldAllowRequest(@"tel:+12345551212", + /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/true, + /*has_user_gesture=*/false)); + EXPECT_EQ(0U, delegate_.app_launch_count()); + + EXPECT_FALSE(TestShouldAllowRequest(@"tel:+12345551212", + /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/true, + /*has_user_gesture=*/true)); + EXPECT_EQ(0U, delegate_.app_launch_count()); + + EXPECT_FALSE(TestShouldAllowRequest(@"tel:+12345551212", + /*target_frame_is_main=*/false, + /*target_frame_is_cross_origin=*/true, + /*has_user_gesture=*/true)); + EXPECT_EQ(0U, delegate_.app_launch_count()); + + EXPECT_FALSE(TestShouldAllowRequest(@"tel:+12345551212", + /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false)); + EXPECT_EQ(1U, delegate_.app_launch_count()); +} + // Tests that URLs with U2F schemes are handled correctly. // This test is using https://chromeiostesting-dot-u2fdemo.appspot.com URL which // is a URL allowed for the purpose of testing, but the test doesn't send any @@ -337,6 +386,7 @@ navigation_manager_->SetLastCommittedItem(item.get()); EXPECT_FALSE(TestShouldAllowRequest(@"u2f-x-callback://chromium.test", /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(0U, delegate_.app_launch_count()); @@ -345,6 +395,7 @@ navigation_manager_->SetLastCommittedItem(item.get()); EXPECT_FALSE(TestShouldAllowRequest(@"u2f://chromium.test", /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(0U, delegate_.app_launch_count()); @@ -354,6 +405,7 @@ navigation_manager_->SetLastCommittedItem(item.get()); EXPECT_FALSE(TestShouldAllowRequest(@"u2f://chromium.test", /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(1U, delegate_.app_launch_count()); EXPECT_TRUE(delegate_.last_launched_app_url().SchemeIs("u2f-x-callback")); @@ -366,17 +418,20 @@ NSString* url = [NSString stringWithFormat:@"%@://www.google.com", scheme]; EXPECT_FALSE(TestShouldAllowRequest(url, /*target_frame_is_main=*/false, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(0U, delegate_.app_launch_count()); EXPECT_FALSE(TestShouldAllowRequest(url, /*target_frame_is_main=*/false, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/true)); EXPECT_EQ(0U, delegate_.app_launch_count()); // Chrome Bundle URL scheme is only allowed from main frames. EXPECT_FALSE(TestShouldAllowRequest(url, /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(1U, delegate_.app_launch_count()); } @@ -417,6 +472,7 @@ ui::PageTransition::PAGE_TRANSITION_CLIENT_REDIRECT); EXPECT_FALSE( TestShouldAllowRequest(sms_url_string, /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false, page_transition)); EXPECT_EQ(1U, delegate_.app_launch_count()); } @@ -475,6 +531,7 @@ NSString* url_string = @"itms-apps://itunes.apple.com/us/app/appname/id123"; EXPECT_FALSE(TestShouldAllowRequest(url_string, /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(0U, delegate_.app_launch_count()); } @@ -490,6 +547,7 @@ EXPECT_FALSE(TestShouldAllowRequest(@"valid://1234", /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false)); EXPECT_EQ(1U, delegate_.app_launch_count()); EXPECT_EQ(GURL("valid://1234"), delegate_.last_launched_app_url());
diff --git a/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper_unittest.mm b/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper_unittest.mm index 0838edf..96d8eb9 100644 --- a/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper_unittest.mm +++ b/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper_unittest.mm
@@ -44,6 +44,7 @@ fake_launcher_.launchedProductParams = nil; web::WebStatePolicyDecider::RequestInfo request_info( ui::PageTransition::PAGE_TRANSITION_LINK, main_frame, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false); web::WebStatePolicyDecider::PolicyDecision request_policy = web_state_.ShouldAllowRequest(
diff --git a/ios/chrome/browser/link_to_text/DIR_METADATA b/ios/chrome/browser/link_to_text/DIR_METADATA index d350948..fd0c786e 100644 --- a/ios/chrome/browser/link_to_text/DIR_METADATA +++ b/ios/chrome/browser/link_to_text/DIR_METADATA
@@ -1,2 +1,2 @@ -team_email: "ios-directory-owners@chromium.org" -os: IOS +team_email: "ios-directory-owners@chromium.org" +os: IOS
diff --git a/ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider.mm b/ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider.mm index b23784b..2944e2e 100644 --- a/ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider.mm +++ b/ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider.mm
@@ -108,6 +108,18 @@ kMaxValue = BackgroundXte }; +// Values of the Stability.iOS.Experimental.Counts histogram. +// These values are persisted to logs. Entries should not be renumbered and +// numeric values should never be reused. +enum class IOSStabilityUserVisibleCrashType { + // Termination caused by system signal (f.e. EXC_BAD_ACCESS). + TerminationCausedBySystemSignal = 0, + // Termination caused by Hang / UI Thread freeze (ui thread was locked for 9+ + // seconds and the app was quit by OS or the user). + TerminationCausedByHang = 1, + kMaxValue = TerminationCausedByHang +}; + // Returns value to log for Stability.iOS.UTE.MobileSessionOOMShutdownHint // histogram. MobileSessionOomShutdownHint GetMobileSessionOomShutdownHint( @@ -157,6 +169,33 @@ : MobileSessionAppWillTerminateWasReceived::WasReceivedForUte; } +// Records Stability.iOS.Experimental.Counts if necessary. +void LogStabilityIOSExperimentalCounts( + MobileSessionShutdownType shutdown_type) { + IOSStabilityUserVisibleCrashType type = + IOSStabilityUserVisibleCrashType::kMaxValue; + switch (shutdown_type) { + case SHUTDOWN_IN_FOREGROUND_WITH_CRASH_LOG_WITH_MEMORY_WARNING: + case SHUTDOWN_IN_FOREGROUND_WITH_CRASH_LOG_NO_MEMORY_WARNING: + type = IOSStabilityUserVisibleCrashType::TerminationCausedBySystemSignal; + break; + case SHUTDOWN_IN_FOREGROUND_WITH_MAIN_THREAD_FROZEN: + type = IOSStabilityUserVisibleCrashType::TerminationCausedByHang; + break; + case SHUTDOWN_IN_BACKGROUND: + case SHUTDOWN_IN_FOREGROUND_NO_CRASH_LOG_NO_MEMORY_WARNING: + case SHUTDOWN_IN_FOREGROUND_NO_CRASH_LOG_WITH_MEMORY_WARNING: + case FIRST_LAUNCH_AFTER_UPGRADE: + case MOBILE_SESSION_SHUTDOWN_TYPE_COUNT: + // Nothing to record. + return; + }; + + UMA_STABILITY_HISTOGRAM_ENUMERATION( + "Stability.iOS.Experimental.Counts", type, + IOSStabilityUserVisibleCrashType::kMaxValue); +} + // Logs |type| in the shutdown type histogram. void LogShutdownType(MobileSessionShutdownType type) { UMA_STABILITY_HISTOGRAM_ENUMERATION("Stability.MobileSessionShutdownType", @@ -297,6 +336,8 @@ UMA_STABILITY_HISTOGRAM_COUNTS_100("Stability.iOS.TabCountBeforeCrash", allTabCount); + LogStabilityIOSExperimentalCounts(shutdown_type); + // Log metrics to improve categorization of crashes. LogApplicationBackgroundedTime(session_info.sessionEndTime);
diff --git a/ios/chrome/browser/safe_browsing/safe_browsing_tab_helper_unittest.mm b/ios/chrome/browser/safe_browsing/safe_browsing_tab_helper_unittest.mm index dcd7987..489baa101 100644 --- a/ios/chrome/browser/safe_browsing/safe_browsing_tab_helper_unittest.mm +++ b/ios/chrome/browser/safe_browsing/safe_browsing_tab_helper_unittest.mm
@@ -69,7 +69,8 @@ ui::PageTransition transition = ui::PageTransition::PAGE_TRANSITION_FIRST) { web::WebStatePolicyDecider::RequestInfo request_info( - transition, for_main_frame, /*has_user_gesture=*/false); + transition, for_main_frame, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); return web_state_.ShouldAllowRequest( [NSURLRequest requestWithURL:net::NSURLWithGURL(url)], request_info); }
diff --git a/ios/chrome/browser/ui/link_to_text/DIR_METADATA b/ios/chrome/browser/ui/link_to_text/DIR_METADATA index d350948..fd0c786e 100644 --- a/ios/chrome/browser/ui/link_to_text/DIR_METADATA +++ b/ios/chrome/browser/ui/link_to_text/DIR_METADATA
@@ -1,2 +1,2 @@ -team_email: "ios-directory-owners@chromium.org" -os: IOS +team_email: "ios-directory-owners@chromium.org" +os: IOS
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.h b/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.h index 08a87a73..5021933 100644 --- a/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.h +++ b/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.h
@@ -50,8 +50,8 @@ // Called when a snapshot of the content will be taken. - (void)willUpdateSnapshot; -// Sets the collection contentOffset to |offset|, or caches the value and -// applies it after the first layout. +// Sets the feed collection contentOffset to |offset| to set the initial scroll +// position. - (void)setContentOffset:(CGFloat)offset; @end
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm b/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm index 23909ee..ce00c56e 100644 --- a/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm +++ b/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm
@@ -51,8 +51,10 @@ // view. @property(nonatomic, weak) ContentSuggestionsLayout* contentSuggestionsLayout; -// Initial scrolling offset, used to restore the previous scrolling position. -@property(nonatomic, assign) CGFloat initialContentOffset; +// Content suggestions collection view height for setting the initial NTP offset +// to be the top of the page. If value is |NAN|, then the offset was calculated +// from the saved web state instead. +@property(nonatomic, assign) CGFloat initialContentOffsetFromContentSuggestions; @end @@ -69,8 +71,10 @@ _contentSuggestionsViewController = contentSuggestionsViewController; // TODO(crbug.com/1114792): Instantiate this depending on the initial scroll // position. + // TODO(crbug.com/1114792): Stick the fake omnibox based on default scroll + // position. _scrolledIntoFeed = NO; - _initialContentOffset = NAN; + _initialContentOffsetFromContentSuggestions = 0; } return self; @@ -148,7 +152,15 @@ UIEdgeInsetsMake(collectionView.contentSize.height, 0, 0, 0); self.headerSynchronizer.additionalOffset = collectionView.contentSize.height; - [self applyContentOffset]; + // If scroll position was not set from the saved scroll position, and content + // suggestions collection height has increased, then set the content offset to + // reach the top of the page. + if (!isnan(self.initialContentOffsetFromContentSuggestions) && + -collectionView.contentSize.height < + self.initialContentOffsetFromContentSuggestions) { + [self setContentOffset:-collectionView.contentSize.height + fromSavedState:NO]; + } } - (void)viewWillAppear:(BOOL)animated { @@ -216,11 +228,7 @@ } - (void)setContentOffset:(CGFloat)offset { - self.initialContentOffset = offset; - if (self.isViewLoaded && self.collectionView.window && - self.collectionView.contentSize.height != 0) { - [self applyContentOffset]; - } + [self setContentOffset:offset fromSavedState:YES]; } #pragma mark - UIScrollViewDelegate @@ -343,26 +351,16 @@ [self.ntpContentDelegate reloadContentSuggestions]; } -// Sets the collectionView's contentOffset if |_initialContentOffset| is set. -- (void)applyContentOffset { - if (!isnan(self.initialContentOffset)) { - UICollectionView* collection = - self.discoverFeedWrapperViewController.feedCollectionView; - // Don't set the offset such as the content of the collection is smaller - // than the part of the collection which should be displayed with that - // offset, taking into account the size of the toolbar. - CGFloat offset = MAX( - 0, MIN(self.initialContentOffset, - collection.contentSize.height - collection.bounds.size.height - - ToolbarExpandedHeight( - self.traitCollection.preferredContentSizeCategory) + - collection.contentInset.bottom)); - if (collection.contentOffset.y != offset) { - collection.contentOffset = CGPointMake(0, offset); - // TODO(crbug.com/1114792): Add the FakeOmnibox if necessary. - } - } - self.initialContentOffset = NAN; +// Sets the feed collection contentOffset to |offset| to set the initial scroll +// position. If |fromSavedState| is NO, then the offset is set from the content +// suggestions collection height. If |fromSavedState| is YES, then the offset is +// forcefully set from a different source (like the cached navigation scroll +// position). +- (void)setContentOffset:(CGFloat)offset fromSavedState:(BOOL)isFromSavedState { + self.discoverFeedWrapperViewController.feedCollectionView.contentOffset = + CGPointMake(0, offset); + self.initialContentOffsetFromContentSuggestions = + isFromSavedState ? NAN : offset; } #pragma mark - Setters
diff --git a/ios/chrome/browser/web/image_fetch_tab_helper.mm b/ios/chrome/browser/web/image_fetch_tab_helper.mm index 5f32af3..1f241e8 100644 --- a/ios/chrome/browser/web/image_fetch_tab_helper.mm +++ b/ios/chrome/browser/web/image_fetch_tab_helper.mm
@@ -6,6 +6,7 @@ #include "base/base64.h" #include "base/bind.h" +#include "base/json/string_escape.h" #include "base/metrics/histogram_macros.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" @@ -137,8 +138,8 @@ timeout); std::string js = - base::StringPrintf("__gCrWeb.imageFetch.getImageData(%d, '%s')", call_id_, - url.spec().c_str()); + base::StringPrintf("__gCrWeb.imageFetch.getImageData(%d, %s)", call_id_, + base::GetQuotedJSONString(url.spec()).c_str()); web_state_->ExecuteJavaScript(base::UTF8ToUTF16(js)); }
diff --git a/ios/chrome/browser/web/invalid_url_tab_helper_unittest.mm b/ios/chrome/browser/web/invalid_url_tab_helper_unittest.mm index b3c51b8..62fa19c1 100644 --- a/ios/chrome/browser/web/invalid_url_tab_helper_unittest.mm +++ b/ios/chrome/browser/web/invalid_url_tab_helper_unittest.mm
@@ -30,9 +30,11 @@ ui::PageTransition transition) { NSURL* url = [NSURL URLWithString:spec]; NSURLRequest* request = [[NSURLRequest alloc] initWithURL:url]; - web::WebStatePolicyDecider::RequestInfo info(transition, - /*target_frame_is_main=*/true, - /*has_user_gesture=*/false); + web::WebStatePolicyDecider::RequestInfo info( + transition, + /*target_frame_is_main=*/true, + /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); return web_state_.ShouldAllowRequest(request, info); }
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_en-GB.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_en-GB.xtb index 140713d5..4c5f4551 100644 --- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_en-GB.xtb +++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_en-GB.xtb
@@ -7,7 +7,7 @@ <translation id="405442954313519726">Search or navigate in a new tab, in Incognito mode, using your voice or with a QR code.</translation> <translation id="4954445889641385956">Search or type a URL</translation> <translation id="5277852985315196237">Search or type a URL</translation> -<translation id="529497070985873480">Chrome dino</translation> +<translation id="529497070985873480">Chrome Dino</translation> <translation id="5683557219437283801">Voice search</translation> <translation id="6179961764474023795">Quick Actions</translation> <translation id="6855322554930231468">Search</translation>
diff --git a/ios/web/navigation/crw_wk_navigation_handler.mm b/ios/web/navigation/crw_wk_navigation_handler.mm index 4f91fad..4dd75b2 100644 --- a/ios/web/navigation/crw_wk_navigation_handler.mm +++ b/ios/web/navigation/crw_wk_navigation_handler.mm
@@ -40,6 +40,7 @@ #import "ios/web/web_state/web_state_impl.h" #include "ios/web/web_view/content_type_util.h" #import "ios/web/web_view/error_translation_util.h" +#import "ios/web/web_view/wk_security_origin_util.h" #import "ios/web/web_view/wk_web_view_util.h" #import "net/base/mac/url_conversions.h" #include "net/base/net_errors.h" @@ -391,8 +392,19 @@ self.userInteractionState->HasUserTappedRecently(webView) && net::GURLWithNSURL(action.request.mainDocumentURL) == self.userInteractionState->LastUserInteraction()->main_document_url; + BOOL isCrossOriginTargetFrame = NO; + if (action.sourceFrame && action.targetFrame && + action.sourceFrame != action.targetFrame) { + url::Origin sourceOrigin = + url::Origin::Create(web::GURLOriginWithWKSecurityOrigin( + action.sourceFrame.securityOrigin)); + url::Origin targetOrigin = + url::Origin::Create(web::GURLOriginWithWKSecurityOrigin( + action.targetFrame.securityOrigin)); + isCrossOriginTargetFrame = !sourceOrigin.IsSameOriginWith(targetOrigin); + } web::WebStatePolicyDecider::RequestInfo requestInfo( - transition, isMainFrameNavigationAction, + transition, isMainFrameNavigationAction, isCrossOriginTargetFrame, userInteractedWithRequestMainFrame); policyDecision =
diff --git a/ios/web/public/navigation/web_state_policy_decider.h b/ios/web/public/navigation/web_state_policy_decider.h index a5635a81..ec41c84 100644 --- a/ios/web/public/navigation/web_state_policy_decider.h +++ b/ios/web/public/navigation/web_state_policy_decider.h
@@ -84,15 +84,20 @@ struct RequestInfo { RequestInfo(ui::PageTransition transition_type, bool target_frame_is_main, + bool target_frame_is_cross_origin, bool has_user_gesture) : transition_type(transition_type), target_frame_is_main(target_frame_is_main), + target_frame_is_cross_origin(target_frame_is_cross_origin), has_user_gesture(has_user_gesture) {} // The navigation page transition type. ui::PageTransition transition_type = ui::PageTransition::PAGE_TRANSITION_FIRST; // Indicates whether the navigation target frame is the main frame. bool target_frame_is_main = false; + // Indicates whether the navigation target frame is cross-origin with + // respect to the the navigation source frame. + bool target_frame_is_cross_origin = false; // Indicates if there was a recent user interaction with the request frame. bool has_user_gesture = false; };
diff --git a/ios/web/public/test/fakes/crw_fake_web_state_policy_decider.mm b/ios/web/public/test/fakes/crw_fake_web_state_policy_decider.mm index e5cd3dc7..2a8d9597 100644 --- a/ios/web/public/test/fakes/crw_fake_web_state_policy_decider.mm +++ b/ios/web/public/test/fakes/crw_fake_web_state_policy_decider.mm
@@ -15,6 +15,7 @@ FakeShouldAllowRequestInfo::FakeShouldAllowRequestInfo() : request_info(ui::PageTransition::PAGE_TRANSITION_FIRST, /*target_frame_is_main=*/false, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false) {} FakeShouldAllowRequestInfo::~FakeShouldAllowRequestInfo() = default;
diff --git a/ios/web/public/test/web_view_content_test_util.h b/ios/web/public/test/web_view_content_test_util.h index 95168c1d..1353146 100644 --- a/ios/web/public/test/web_view_content_test_util.h +++ b/ios/web/public/test/web_view_content_test_util.h
@@ -46,6 +46,14 @@ NSTimeInterval timeout = base::test::ios::kWaitForPageLoadTimeout) WARN_UNUSED_RESULT; +// Waits for the given web state to have a frame that contains |text|. If the +// condition is not met within |timeout| false is returned. +bool WaitForWebViewContainingTextInFrame( + web::WebState* web_state, + std::string text, + NSTimeInterval timeout = base::test::ios::kWaitForPageLoadTimeout) + WARN_UNUSED_RESULT; + // Waits for a web view with the corresponding |image_id| and |image_state|, in // the given |web_state|. bool WaitForWebViewContainingImage(std::string image_id,
diff --git a/ios/web/public/test/web_view_content_test_util.mm b/ios/web/public/test/web_view_content_test_util.mm index 2f12d33..ef26fb3 100644 --- a/ios/web/public/test/web_view_content_test_util.mm +++ b/ios/web/public/test/web_view_content_test_util.mm
@@ -148,6 +148,15 @@ }); } +bool WaitForWebViewContainingTextInFrame(web::WebState* web_state, + std::string text, + NSTimeInterval timeout) { + return WaitUntilConditionOrTimeout(timeout, ^{ + base::RunLoop().RunUntilIdle(); + return IsWebViewContainingTextInFrame(web_state, text); + }); +} + bool WaitForWebViewContainingImage(std::string image_id, web::WebState* web_state, ImageStateElement image_state) {
diff --git a/ios/web/web_state/web_state_impl_unittest.mm b/ios/web/web_state/web_state_impl_unittest.mm index 4b76f11..6d4309c 100644 --- a/ios/web/web_state/web_state_impl_unittest.mm +++ b/ios/web/web_state/web_state_impl_unittest.mm
@@ -622,6 +622,7 @@ WebStatePolicyDecider::RequestInfo request_info_main_frame( ui::PageTransition::PAGE_TRANSITION_LINK, /*target_main_frame=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false); EXPECT_CALL(decider, ShouldAllowRequest( request, RequestInfoMatch(request_info_main_frame))) @@ -640,6 +641,7 @@ WebStatePolicyDecider::RequestInfo request_info_iframe( ui::PageTransition::PAGE_TRANSITION_LINK, /*target_main_frame=*/false, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false); EXPECT_CALL(decider, ShouldAllowRequest( request, RequestInfoMatch(request_info_iframe)))
diff --git a/ios/web/web_state/web_state_observer_inttest.mm b/ios/web/web_state/web_state_observer_inttest.mm index 457ee54..b4c873a 100644 --- a/ios/web/web_state/web_state_observer_inttest.mm +++ b/ios/web/web_state/web_state_observer_inttest.mm
@@ -712,6 +712,8 @@ << PageTransitionGetCoreTransitionString(arg.transition_type); EXPECT_EQ(expected_request_info.target_frame_is_main, arg.target_frame_is_main); + EXPECT_EQ(expected_request_info.target_frame_is_cross_origin, + arg.target_frame_is_cross_origin); EXPECT_EQ(expected_request_info.has_user_gesture, arg.has_user_gesture); return transition_type_match && @@ -822,7 +824,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -869,7 +872,8 @@ WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -940,7 +944,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -976,7 +981,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1033,7 +1039,8 @@ // Starting from iOS 13 WebKit, does not rewrite URL. WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1071,7 +1078,8 @@ // iOS 13, because context is matched by URL, which is rewritten by // WebKit. ui::PageTransition::PAGE_TRANSITION_CLIENT_REDIRECT, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1111,7 +1119,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1159,7 +1168,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1206,7 +1216,8 @@ // this unsupported URL scheme. WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1227,7 +1238,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1252,6 +1264,7 @@ WebStatePolicyDecider::RequestInfo reload_request_info( ui::PageTransition::PAGE_TRANSITION_RELOAD, /*target_main_frame=*/true, + /*target_frame_is_cross_origin=*/false, /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(reload_request_info))) @@ -1287,7 +1300,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1309,7 +1323,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_reload_request_info( ui::PageTransition::PAGE_TRANSITION_RELOAD, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest( _, RequestInfoMatch(expected_reload_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1343,7 +1358,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1371,7 +1387,8 @@ const GURL hash_url = test_server_->GetURL("/echoall#1"); WebStatePolicyDecider::RequestInfo hash_url_expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(observer_, DidStartLoading(web_state())); EXPECT_CALL( @@ -1438,7 +1455,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1466,7 +1484,8 @@ const GURL hash_url = test_server_->GetURL("/echoall#1"); WebStatePolicyDecider::RequestInfo expected_hash_request_info( ui::PageTransition::PAGE_TRANSITION_CLIENT_REDIRECT, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest( _, RequestInfoMatch(expected_hash_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1499,7 +1518,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1567,7 +1587,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_GENERATED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1606,7 +1627,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1630,7 +1652,8 @@ int32_t nav_id = 0; WebStatePolicyDecider::RequestInfo form_request_info( ui::PageTransition::PAGE_TRANSITION_FORM_SUBMIT, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(form_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1668,7 +1691,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1689,7 +1713,8 @@ // Submit the form using JavaScript. WebStatePolicyDecider::RequestInfo form_request_info( ui::PageTransition::PAGE_TRANSITION_FORM_SUBMIT, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(form_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1718,7 +1743,8 @@ WebStatePolicyDecider::RequestInfo form_reload_request_info( ui::PageTransition::PAGE_TRANSITION_RELOAD, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(form_reload_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1761,7 +1787,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1782,7 +1809,8 @@ // Submit the form using JavaScript. WebStatePolicyDecider::RequestInfo form_request_info( ui::PageTransition::PAGE_TRANSITION_FORM_SUBMIT, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(form_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1807,7 +1835,8 @@ static_cast<ui::PageTransition>( ui::PageTransition::PAGE_TRANSITION_FORWARD_BACK | ui::PageTransition::PAGE_TRANSITION_TYPED), - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(observer_, DidStartLoading(web_state())); EXPECT_CALL(observer_, DidChangeBackForwardState(web_state())).Times(2); EXPECT_CALL(*decider_, @@ -1830,7 +1859,8 @@ static_cast<ui::PageTransition>( ui::PageTransition::PAGE_TRANSITION_FORM_SUBMIT | ui::PageTransition::PAGE_TRANSITION_FORWARD_BACK), - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); NavigationContext* context = nullptr; int32_t nav_id = 0; EXPECT_CALL(observer_, DidStartLoading(web_state())); @@ -1881,7 +1911,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1893,7 +1924,8 @@ // 5 calls on ShouldAllowRequest and DidRedirectNavigation for redirections. WebStatePolicyDecider::RequestInfo expected_redirect_request_info( ui::PageTransition::PAGE_TRANSITION_CLIENT_REDIRECT, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL( *decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_redirect_request_info))) @@ -1947,7 +1979,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -1977,7 +2010,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -2029,7 +2063,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); EXPECT_CALL(observer_, DidStartNavigation(web_state(), _)) @@ -2063,7 +2098,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Cancel())); @@ -2085,7 +2121,8 @@ WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); NSError* error = [NSError errorWithDomain:net::kNSErrorDomain code:net::ERR_BLOCKED_BY_ADMINISTRATOR userInfo:nil]; @@ -2123,7 +2160,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -2169,7 +2207,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -2201,7 +2240,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -2236,7 +2276,8 @@ EXPECT_CALL(observer_, DidStopLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -2265,7 +2306,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(ReturnAllowRequestAndStopNavigation(web_state())); @@ -2297,7 +2339,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -2342,7 +2385,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -2356,7 +2400,8 @@ // Callbacks due to initial loading of iframe. WebStatePolicyDecider::RequestInfo iframe_request_info( ui::PageTransition::PAGE_TRANSITION_CLIENT_REDIRECT, - /*target_main_frame=*/false, /*has_user_gesture=*/false); + /*target_main_frame=*/false, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(iframe_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -2373,7 +2418,8 @@ // Trigger different-document load in iframe. WebStatePolicyDecider::RequestInfo link_clicked_request_info( ui::PageTransition::PAGE_TRANSITION_LINK, - /*target_main_frame=*/false, /*has_user_gesture=*/true); + /*target_main_frame=*/false, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/true); EXPECT_CALL(*decider_, ShouldAllowRequest( _, RequestInfoMatch(link_clicked_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -2398,7 +2444,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo forward_back_request_info( ui::PageTransition::PAGE_TRANSITION_FORWARD_BACK, - /*target_main_frame=*/false, /*has_user_gesture=*/true); + /*target_main_frame=*/false, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/true); EXPECT_CALL(observer_, DidChangeBackForwardState(web_state())) .Times(2); // called once each for canGoBack and canGoForward EXPECT_CALL(*decider_, ShouldAllowRequest( @@ -2434,6 +2481,90 @@ EXPECT_FALSE(web_state()->GetNavigationManager()->CanGoForward()); } +// Tests that cross-origin iframe navigation is correctly identified in +// WebStatePolicyDecider::RequestInfo. +TEST_F(WebStateObserverTest, CrossOriginIframeNavigation) { + EmbeddedTestServer cross_origin_server; + RegisterDefaultHandlers(&cross_origin_server); + ASSERT_TRUE(cross_origin_server.Start()); + + GURL url = test_server_->GetURL("/iframe_host.html"); + + // Callbacks due to loading of the main frame. + EXPECT_CALL(observer_, DidStartLoading(web_state())); + WebStatePolicyDecider::RequestInfo expected_request_info( + ui::PageTransition::PAGE_TRANSITION_TYPED, + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); + EXPECT_CALL(*decider_, + ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) + .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); + EXPECT_CALL(observer_, DidStartNavigation(web_state(), _)); + EXPECT_CALL(*decider_, ShouldAllowResponse(_, /*for_main_frame=*/true, _)) + .WillOnce( + RunOnceCallback<2>(WebStatePolicyDecider::PolicyDecision::Allow())); + EXPECT_CALL(observer_, DidFinishNavigation(web_state(), _)); + EXPECT_CALL(observer_, TitleWasSet(web_state())); + + // Callbacks due to initial loading of iframe. + WebStatePolicyDecider::RequestInfo iframe_request_info( + ui::PageTransition::PAGE_TRANSITION_CLIENT_REDIRECT, + /*target_main_frame=*/false, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); + EXPECT_CALL(*decider_, + ShouldAllowRequest(_, RequestInfoMatch(iframe_request_info))) + .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); + EXPECT_CALL(*decider_, ShouldAllowResponse(_, /*for_main_frame=*/false, _)) + .WillOnce( + RunOnceCallback<2>(WebStatePolicyDecider::PolicyDecision::Allow())); + EXPECT_CALL(observer_, DidStopLoading(web_state())); + EXPECT_CALL(observer_, + PageLoaded(web_state(), PageLoadCompletionStatus::SUCCESS)); + + test::LoadUrl(web_state(), url); + ASSERT_TRUE(test::WaitForPageToFinishLoading(web_state())); + + // Load a cross-origin URL in the iframe. In this case, the target frame is + // same-origin since the currently-loaded URL in the iframe is same-origin + // with respect to the main frame. + GURL cross_origin_url = cross_origin_server.GetURL("/echo"); + WebStatePolicyDecider::RequestInfo iframe_request_info2( + ui::PageTransition::PAGE_TRANSITION_CLIENT_REDIRECT, + /*target_main_frame=*/false, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); + EXPECT_CALL(*decider_, + ShouldAllowRequest(_, RequestInfoMatch(iframe_request_info2))) + .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); + EXPECT_CALL(*decider_, ShouldAllowResponse(_, /*for_main_frame=*/false, _)) + .WillOnce( + RunOnceCallback<2>(WebStatePolicyDecider::PolicyDecision::Allow())); + EXPECT_CALL(observer_, DidChangeBackForwardState(web_state())); + ExecuteJavaScript( + [NSString stringWithFormat:@"window.frames[0].location.href='%s';", + cross_origin_url.spec().c_str()]); + ASSERT_TRUE(test::WaitForWebViewContainingTextInFrame(web_state(), "Echo")); + ASSERT_TRUE(test::WaitForPageToFinishLoading(web_state())); + + // Now load another URL in the iframe. The iframe (that is, the target frame) + // is now cross-origin with respect to the main frame. + GURL url2 = test_server_->GetURL("/pony.html"); + WebStatePolicyDecider::RequestInfo iframe_request_info3( + ui::PageTransition::PAGE_TRANSITION_CLIENT_REDIRECT, + /*target_main_frame=*/false, /*target_frame_is_cross_origin=*/true, + /*has_user_gesture=*/false); + EXPECT_CALL(*decider_, + ShouldAllowRequest(_, RequestInfoMatch(iframe_request_info3))) + .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); + EXPECT_CALL(*decider_, ShouldAllowResponse(_, /*for_main_frame=*/false, _)) + .WillOnce( + RunOnceCallback<2>(WebStatePolicyDecider::PolicyDecision::Allow())); + ExecuteJavaScript( + [NSString stringWithFormat:@"window.frames[0].location.href='%s';", + url2.spec().c_str()]); + ASSERT_TRUE(test::WaitForWebViewContainingTextInFrame(web_state(), "pony")); + ASSERT_TRUE(test::WaitForPageToFinishLoading(web_state())); +} + // Tests that new page load calls NavigationItemsPruned callback if there were // forward navigation items. TEST_F(WebStateObserverTest, NewPageLoadDestroysForwardItems) { @@ -2682,7 +2813,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow())); @@ -2715,7 +2847,8 @@ EXPECT_CALL(observer_, DidStartLoading(web_state())); WebStatePolicyDecider::RequestInfo expected_request_info( ui::PageTransition::PAGE_TRANSITION_TYPED, - /*target_main_frame=*/true, /*has_user_gesture=*/false); + /*target_main_frame=*/true, /*target_frame_is_cross_origin=*/false, + /*has_user_gesture=*/false); EXPECT_CALL(*decider_, ShouldAllowRequest(_, RequestInfoMatch(expected_request_info))) .WillOnce(Return(WebStatePolicyDecider::PolicyDecision::Allow()));
diff --git a/ios/web/web_state/web_state_policy_decider_bridge_unittest.mm b/ios/web/web_state/web_state_policy_decider_bridge_unittest.mm index 810a9cd..54a71602 100644 --- a/ios/web/web_state/web_state_policy_decider_bridge_unittest.mm +++ b/ios/web/web_state/web_state_policy_decider_bridge_unittest.mm
@@ -35,9 +35,11 @@ NSURLRequest* request = [NSURLRequest requestWithURL:url]; ui::PageTransition transition_type = ui::PageTransition::PAGE_TRANSITION_LINK; bool target_frame_is_main = true; + bool target_frame_is_cross_origin = false; bool has_user_gesture = false; WebStatePolicyDecider::RequestInfo request_info( - transition_type, target_frame_is_main, has_user_gesture); + transition_type, target_frame_is_main, target_frame_is_cross_origin, + has_user_gesture); decider_bridge_.ShouldAllowRequest(request, request_info); FakeShouldAllowRequestInfo* should_allow_request_info = [decider_ shouldAllowRequestInfo];
diff --git a/media/base/OWNERS b/media/base/OWNERS index f4ecf46..7f62fe2f 100644 --- a/media/base/OWNERS +++ b/media/base/OWNERS
@@ -1,4 +1,3 @@ per-file *audio*=file://media/audio/OWNERS -per-file media_switches.*=beccahughes@chromium.org per-file media_switches.*=mlamouri@chromium.org
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc index 8e07393..e5b97014 100644 --- a/media/blink/webmediaplayer_impl.cc +++ b/media/blink/webmediaplayer_impl.cc
@@ -2894,8 +2894,9 @@ // base::Unretained is safe because |this| owns memory_pressure_listener_. memory_pressure_listener_ = std::make_unique<base::MemoryPressureListener>( - FROM_HERE, base::Bind(&WebMediaPlayerImpl::OnMemoryPressure, - base::Unretained(this))); + FROM_HERE, + base::BindRepeating(&WebMediaPlayerImpl::OnMemoryPressure, + base::Unretained(this))); } }
diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h index be702a7..970ec89 100644 --- a/media/blink/webmediaplayer_impl.h +++ b/media/blink/webmediaplayer_impl.h
@@ -995,6 +995,8 @@ OverlayInfo overlay_info_; + // TODO(crbug.com/1141533): Convert to base::CancelableOnceClosure. Previous + // attempts to do so have led to test flakiness. base::CancelableClosure update_background_status_cb_; mojo::Remote<mojom::MediaMetricsProvider> media_metrics_provider_;
diff --git a/media/cdm/aes_decryptor_unittest.cc b/media/cdm/aes_decryptor_unittest.cc index f2b32bb..49a298e 100644 --- a/media/cdm/aes_decryptor_unittest.cc +++ b/media/cdm/aes_decryptor_unittest.cc
@@ -252,14 +252,15 @@ void SetUp() override { if (GetParam() == TestType::kAesDecryptor) { OnCdmCreated( - new AesDecryptor(base::Bind(&MockCdmClient::OnSessionMessage, - base::Unretained(&cdm_client_)), - base::Bind(&MockCdmClient::OnSessionClosed, - base::Unretained(&cdm_client_)), - base::Bind(&MockCdmClient::OnSessionKeysChange, - base::Unretained(&cdm_client_)), - base::Bind(&MockCdmClient::OnSessionExpirationUpdate, - base::Unretained(&cdm_client_))), + new AesDecryptor( + base::BindRepeating(&MockCdmClient::OnSessionMessage, + base::Unretained(&cdm_client_)), + base::BindRepeating(&MockCdmClient::OnSessionClosed, + base::Unretained(&cdm_client_)), + base::BindRepeating(&MockCdmClient::OnSessionKeysChange, + base::Unretained(&cdm_client_)), + base::BindRepeating(&MockCdmClient::OnSessionExpirationUpdate, + base::Unretained(&cdm_client_))), std::string()); } else if (GetParam() == TestType::kCdmAdapter) { #if BUILDFLAG(ENABLE_LIBRARY_CDMS) @@ -283,18 +284,19 @@ std::unique_ptr<CdmAllocator> allocator(new SimpleCdmAllocator()); std::unique_ptr<CdmAuxiliaryHelper> cdm_helper( new MockCdmAuxiliaryHelper(std::move(allocator))); - CdmAdapter::Create(helper_->KeySystemName(), - cdm_config, create_cdm_func, std::move(cdm_helper), - base::Bind(&MockCdmClient::OnSessionMessage, - base::Unretained(&cdm_client_)), - base::Bind(&MockCdmClient::OnSessionClosed, - base::Unretained(&cdm_client_)), - base::Bind(&MockCdmClient::OnSessionKeysChange, - base::Unretained(&cdm_client_)), - base::Bind(&MockCdmClient::OnSessionExpirationUpdate, - base::Unretained(&cdm_client_)), - base::BindOnce(&AesDecryptorTest::OnCdmCreated, - base::Unretained(this))); + CdmAdapter::Create( + helper_->KeySystemName(), cdm_config, create_cdm_func, + std::move(cdm_helper), + base::BindRepeating(&MockCdmClient::OnSessionMessage, + base::Unretained(&cdm_client_)), + base::BindRepeating(&MockCdmClient::OnSessionClosed, + base::Unretained(&cdm_client_)), + base::BindRepeating(&MockCdmClient::OnSessionKeysChange, + base::Unretained(&cdm_client_)), + base::BindRepeating(&MockCdmClient::OnSessionExpirationUpdate, + base::Unretained(&cdm_client_)), + base::BindOnce(&AesDecryptorTest::OnCdmCreated, + base::Unretained(this))); base::RunLoop().RunUntilIdle(); #else
diff --git a/media/cdm/cdm_adapter.cc b/media/cdm/cdm_adapter.cc index 63a4aeb..004d9be 100644 --- a/media/cdm/cdm_adapter.cc +++ b/media/cdm/cdm_adapter.cc
@@ -226,7 +226,7 @@ DCHECK(session_expiration_update_cb_); helper_->SetFileReadCB( - base::Bind(&CdmAdapter::OnFileRead, weak_factory_.GetWeakPtr())); + base::BindRepeating(&CdmAdapter::OnFileRead, weak_factory_.GetWeakPtr())); } CdmAdapter::~CdmAdapter() {
diff --git a/media/cdm/cdm_adapter_unittest.cc b/media/cdm/cdm_adapter_unittest.cc index 3b8cc935..6e27a40 100644 --- a/media/cdm/cdm_adapter_unittest.cc +++ b/media/cdm/cdm_adapter_unittest.cc
@@ -140,18 +140,19 @@ std::unique_ptr<StrictMock<MockCdmAuxiliaryHelper>> cdm_helper( new StrictMock<MockCdmAuxiliaryHelper>(std::move(allocator))); cdm_helper_ = cdm_helper.get(); - CdmAdapter::Create(GetKeySystemName(), cdm_config, GetCreateCdmFunc(), - std::move(cdm_helper), - base::Bind(&MockCdmClient::OnSessionMessage, - base::Unretained(&cdm_client_)), - base::Bind(&MockCdmClient::OnSessionClosed, - base::Unretained(&cdm_client_)), - base::Bind(&MockCdmClient::OnSessionKeysChange, - base::Unretained(&cdm_client_)), - base::Bind(&MockCdmClient::OnSessionExpirationUpdate, - base::Unretained(&cdm_client_)), - base::BindOnce(&CdmAdapterTestBase::OnCdmCreated, - base::Unretained(this), expected_result)); + CdmAdapter::Create( + GetKeySystemName(), cdm_config, GetCreateCdmFunc(), + std::move(cdm_helper), + base::BindRepeating(&MockCdmClient::OnSessionMessage, + base::Unretained(&cdm_client_)), + base::BindRepeating(&MockCdmClient::OnSessionClosed, + base::Unretained(&cdm_client_)), + base::BindRepeating(&MockCdmClient::OnSessionKeysChange, + base::Unretained(&cdm_client_)), + base::BindRepeating(&MockCdmClient::OnSessionExpirationUpdate, + base::Unretained(&cdm_client_)), + base::BindOnce(&CdmAdapterTestBase::OnCdmCreated, + base::Unretained(this), expected_result)); RunUntilIdle(); ASSERT_EQ(expected_result == SUCCESS, !!cdm_); }
diff --git a/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.cc b/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.cc index 5ad5056e..1211f1b 100644 --- a/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.cc +++ b/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.cc
@@ -327,11 +327,14 @@ cdm_host_proxy_(new CdmHostProxyImpl<HostInterface>(host)), cdm_(new ClearKeyPersistentSessionCdm( cdm_host_proxy_.get(), - base::Bind(&ClearKeyCdm::OnSessionMessage, base::Unretained(this)), - base::Bind(&ClearKeyCdm::OnSessionClosed, base::Unretained(this)), - base::Bind(&ClearKeyCdm::OnSessionKeysChange, base::Unretained(this)), - base::Bind(&ClearKeyCdm::OnSessionExpirationUpdate, - base::Unretained(this)))), + base::BindRepeating(&ClearKeyCdm::OnSessionMessage, + base::Unretained(this)), + base::BindRepeating(&ClearKeyCdm::OnSessionClosed, + base::Unretained(this)), + base::BindRepeating(&ClearKeyCdm::OnSessionKeysChange, + base::Unretained(this)), + base::BindRepeating(&ClearKeyCdm::OnSessionExpirationUpdate, + base::Unretained(this)))), key_system_(key_system) { DCHECK(g_is_cdm_module_initialized); }
diff --git a/media/cdm/library_cdm/clear_key_cdm/clear_key_persistent_session_cdm.cc b/media/cdm/library_cdm/clear_key_cdm/clear_key_persistent_session_cdm.cc index 6e2dcba4..c342812 100644 --- a/media/cdm/library_cdm/clear_key_cdm/clear_key_persistent_session_cdm.cc +++ b/media/cdm/library_cdm/clear_key_cdm/clear_key_persistent_session_cdm.cc
@@ -99,10 +99,10 @@ session_message_cb_(session_message_cb), session_closed_cb_(session_closed_cb) { cdm_ = base::MakeRefCounted<AesDecryptor>( - base::Bind(&ClearKeyPersistentSessionCdm::OnSessionMessage, - weak_factory_.GetWeakPtr()), - base::Bind(&ClearKeyPersistentSessionCdm::OnSessionClosed, - weak_factory_.GetWeakPtr()), + base::BindRepeating(&ClearKeyPersistentSessionCdm::OnSessionMessage, + weak_factory_.GetWeakPtr()), + base::BindRepeating(&ClearKeyPersistentSessionCdm::OnSessionClosed, + weak_factory_.GetWeakPtr()), session_keys_change_cb, session_expiration_update_cb); } @@ -129,8 +129,8 @@ // Since it's a persistent session, we need to save the session ID after // it's been created. new_promise = std::make_unique<NewPersistentSessionCdmPromise>( - base::Bind(&ClearKeyPersistentSessionCdm::AddPersistentSession, - weak_factory_.GetWeakPtr()), + base::BindOnce(&ClearKeyPersistentSessionCdm::AddPersistentSession, + weak_factory_.GetWeakPtr()), std::move(promise)); } cdm_->CreateSessionAndGenerateRequest(session_type, init_data_type, init_data,
diff --git a/media/gpu/v4l2/v4l2_device.cc b/media/gpu/v4l2/v4l2_device.cc index d9d3ba8..dd3a4f4d 100644 --- a/media/gpu/v4l2/v4l2_device.cc +++ b/media/gpu/v4l2/v4l2_device.cc
@@ -1534,8 +1534,7 @@ } std::vector<VideoCodecProfile> V4L2Device::V4L2PixFmtToVideoCodecProfiles( - uint32_t pix_fmt, - bool is_encoder) { + uint32_t pix_fmt) { auto get_supported_profiles = [this]( VideoCodec codec, std::vector<VideoCodecProfile>* profiles) { @@ -2086,7 +2085,7 @@ &profile.max_resolution); const auto video_codec_profiles = - V4L2PixFmtToVideoCodecProfiles(pixelformat, false); + V4L2PixFmtToVideoCodecProfiles(pixelformat); for (const auto& video_codec_profile : video_codec_profiles) { profile.profile = video_codec_profile; @@ -2117,7 +2116,7 @@ &profile.max_resolution); const auto video_codec_profiles = - V4L2PixFmtToVideoCodecProfiles(pixelformat, true); + V4L2PixFmtToVideoCodecProfiles(pixelformat); for (const auto& video_codec_profile : video_codec_profiles) { profile.profile = video_codec_profile;
diff --git a/media/gpu/v4l2/v4l2_device.h b/media/gpu/v4l2/v4l2_device.h index 849d1cd..38bbe75 100644 --- a/media/gpu/v4l2/v4l2_device.h +++ b/media/gpu/v4l2/v4l2_device.h
@@ -602,8 +602,7 @@ static VideoCodecProfile V4L2ProfileToVideoCodecProfile(VideoCodec codec, uint32_t profile); std::vector<VideoCodecProfile> V4L2PixFmtToVideoCodecProfiles( - uint32_t pix_fmt, - bool is_encoder); + uint32_t pix_fmt); static uint32_t V4L2PixFmtToDrmFormat(uint32_t format); // Calculates the largest plane's allocation size requested by a V4L2 device. static gfx::Size AllocatedSizeFromV4L2Format(
diff --git a/media/video/fake_video_encode_accelerator.cc b/media/video/fake_video_encode_accelerator.cc index 019fc9f5..1f12fd2 100644 --- a/media/video/fake_video_encode_accelerator.cc +++ b/media/video/fake_video_encode_accelerator.cc
@@ -142,4 +142,8 @@ client_->BitstreamBufferReady(buffer.id(), metadata); } +bool FakeVideoEncodeAccelerator::IsGpuFrameResizeSupported() { + return resize_supported_; +} + } // namespace media
diff --git a/media/video/fake_video_encode_accelerator.h b/media/video/fake_video_encode_accelerator.h index 7a813b2..c9d7888c 100644 --- a/media/video/fake_video_encode_accelerator.h +++ b/media/video/fake_video_encode_accelerator.h
@@ -41,6 +41,7 @@ uint32_t framerate) override; void RequestEncodingParametersChange(const VideoBitrateAllocation& bitrate, uint32_t framerate) override; + bool IsGpuFrameResizeSupported() override; void Destroy() override; const std::vector<uint32_t>& stored_bitrates() const { @@ -71,6 +72,8 @@ encoding_callback_ = std::move(callback); } + void SupportResize() { resize_supported_ = true; } + private: void DoRequireBitstreamBuffers(unsigned int input_count, const gfx::Size& input_coded_size, @@ -84,6 +87,7 @@ std::vector<uint32_t> stored_bitrates_; std::vector<VideoBitrateAllocation> stored_bitrate_allocations_; bool will_initialization_succeed_; + bool resize_supported_ = false; VideoEncodeAccelerator::Client* client_;
diff --git a/media/video/video_encode_accelerator.cc b/media/video/video_encode_accelerator.cc index 35e00c7..50e4c44a 100644 --- a/media/video/video_encode_accelerator.cc +++ b/media/video/video_encode_accelerator.cc
@@ -8,6 +8,7 @@ #include "base/callback.h" #include "base/strings/stringprintf.h" +#include "build/build_config.h" namespace media { @@ -127,8 +128,7 @@ VideoEncodeAccelerator::SupportedProfile::SupportedProfile() : profile(media::VIDEO_CODEC_PROFILE_UNKNOWN), max_framerate_numerator(0), - max_framerate_denominator(0) { -} + max_framerate_denominator(0) {} VideoEncodeAccelerator::SupportedProfile::SupportedProfile( VideoCodecProfile profile, @@ -152,6 +152,16 @@ return false; } +bool VideoEncodeAccelerator::IsGpuFrameResizeSupported() { +#if defined(OS_CHROMEOS) + // TODO(crbug.com/1166889) Add proper method overrides in + // MojoVideoEncodeAccelerator and other subclasses that might return true. + return true; +#else + return false; +#endif +} + void VideoEncodeAccelerator::RequestEncodingParametersChange( const VideoBitrateAllocation& bitrate_allocation, uint32_t framerate) {
diff --git a/media/video/video_encode_accelerator.h b/media/video/video_encode_accelerator.h index e7331f88..6b9560b2 100644 --- a/media/video/video_encode_accelerator.h +++ b/media/video/video_encode_accelerator.h
@@ -343,6 +343,11 @@ // VEA has been initialized. virtual bool IsFlushSupported(); + // Returns true if the encoder supports automatic resize of GPU backed frames + // to the size provided during encoder configuration. + // This method must be called after VEA has been initialized. + virtual bool IsGpuFrameResizeSupported(); + protected: // Do not delete directly; use Destroy() or own it with a scoped_ptr, which // will Destroy() it properly by default.
diff --git a/media/video/video_encode_accelerator_adapter.cc b/media/video/video_encode_accelerator_adapter.cc index b0820d5..1506b21 100644 --- a/media/video/video_encode_accelerator_adapter.cc +++ b/media/video/video_encode_accelerator_adapter.cc
@@ -315,8 +315,17 @@ return; } - bool resize_needed = (frame->visible_rect().size() != options_.frame_size); - bool use_gpu_buffer = frame->HasGpuMemoryBuffer() && !resize_needed; + const bool frame_needs_resizing = + frame->visible_rect().size() != options_.frame_size; + + // Try using a frame with GPU buffer both are true: + // 1. the frame already has GPU buffer + // 2. frame doesn't need resizing or can be resized by GPU encoder. + bool use_gpu_buffer = frame->HasGpuMemoryBuffer() && + (!frame_needs_resizing || gpu_resize_supported_); + + // Currently configured encoder's preference takes precedence overe heuristic + // above. if (input_buffer_preference_ == InputBufferKind::GpuMemBuf) use_gpu_buffer = true; if (input_buffer_preference_ == InputBufferKind::CpuMemBuf) @@ -601,6 +610,7 @@ state_ = State::kReadyToEncode; flush_support_ = accelerator_->IsFlushSupported(); + gpu_resize_supported_ = accelerator_->IsGpuFrameResizeSupported(); // Send off the encodes that came in while we were waiting for initialization. for (auto& encode : pending_encodes_) { @@ -685,7 +695,8 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(accelerator_sequence_checker_); DCHECK(src_frame); if (src_frame->HasGpuMemoryBuffer() && - src_frame->visible_rect().size() == size) { + src_frame->format() == PIXEL_FORMAT_NV12 && + (gpu_resize_supported_ || src_frame->visible_rect().size() == size)) { // Nothing to do here, the input frame is already what we need return src_frame; }
diff --git a/media/video/video_encode_accelerator_adapter.h b/media/video/video_encode_accelerator_adapter.h index 18651e39..623343f3 100644 --- a/media/video/video_encode_accelerator_adapter.h +++ b/media/video/video_encode_accelerator_adapter.h
@@ -140,6 +140,10 @@ State state_ = State::kNotInitialized; base::Optional<bool> flush_support_; + // True if underlying instance of VEA can handle GPU backed frames with a + // size different from what VEA was configured for. + bool gpu_resize_supported_ = false; + struct PendingEncode { PendingEncode(); ~PendingEncode();
diff --git a/media/video/video_encode_accelerator_adapter_test.cc b/media/video/video_encode_accelerator_adapter_test.cc index fbef0f3..51ef36f 100644 --- a/media/video/video_encode_accelerator_adapter_test.cc +++ b/media/video/video_encode_accelerator_adapter_test.cc
@@ -308,6 +308,36 @@ EXPECT_EQ(outputs_count, 2); } +TEST_F(VideoEncodeAcceleratorAdapterTest, AutomaticResizeSupport) { + VideoEncoder::Options options; + options.frame_size = gfx::Size(640, 480); + int outputs_count = 0; + gfx::Size small_size(480, 320); + auto pixel_format = PIXEL_FORMAT_NV12; + VideoEncoder::OutputCB output_cb = base::BindLambdaForTesting( + [&](VideoEncoderOutput, base::Optional<VideoEncoder::CodecDescription>) { + outputs_count++; + }); + + vea()->SetEncodingCallback(base::BindLambdaForTesting( + [&](BitstreamBuffer&, bool keyframe, scoped_refptr<VideoFrame> frame) { + EXPECT_EQ(frame->coded_size(), small_size); + return BitstreamBufferMetadata(1, keyframe, frame->timestamp()); + })); + vea()->SupportResize(); + adapter()->Initialize(profile_, options, std::move(output_cb), + ValidatingStatusCB()); + + auto frame1 = CreateGreenFrame(small_size, pixel_format, + base::TimeDelta::FromMilliseconds(1)); + auto frame2 = CreateGreenFrame(small_size, pixel_format, + base::TimeDelta::FromMilliseconds(2)); + adapter()->Encode(frame1, true, ValidatingStatusCB()); + adapter()->Encode(frame2, false, ValidatingStatusCB()); + RunUntilIdle(); + EXPECT_EQ(outputs_count, 2); +} + TEST_P(VideoEncodeAcceleratorAdapterTest, RunWithAllPossibleInputConversions) { VideoEncoder::Options options; options.frame_size = gfx::Size(640, 480);
diff --git a/mojo/public/tools/bindings/generators/mojom_js_generator.py b/mojo/public/tools/bindings/generators/mojom_js_generator.py index c7068f5..5f8844a 100644 --- a/mojo/public/tools/bindings/generators/mojom_js_generator.py +++ b/mojo/public/tools/bindings/generators/mojom_js_generator.py
@@ -1013,7 +1013,10 @@ if mojom.IsStructKind(token.parent_kind) or for_module: separator = "_" - return ".".join(name_prefix) + separator + ".".join(name) + if len(name_prefix) > 0: + return ".".join(name_prefix) + separator + ".".join(name) + + return ".".join(name) return self._ExpressionToText(token)
diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc index dbed52c..839fd36 100644 --- a/net/quic/quic_chromium_client_session.cc +++ b/net/quic/quic_chromium_client_session.cc
@@ -762,6 +762,120 @@ return rv; } +QuicChromiumClientSession::QuicChromiumPathValidationContext:: + QuicChromiumPathValidationContext( + const quic::QuicSocketAddress& self_address, + const quic::QuicSocketAddress& peer_address, + NetworkChangeNotifier::NetworkHandle network, + std::unique_ptr<DatagramClientSocket> socket, + std::unique_ptr<QuicChromiumPacketWriter> writer, + std::unique_ptr<QuicChromiumPacketReader> reader) + : QuicPathValidationContext(self_address, peer_address), + network_handle_(network), + socket_(std::move(socket)), + writer_(std::move(writer)), + reader_(std::move(reader)) {} + +QuicChromiumClientSession::QuicChromiumPathValidationContext:: + ~QuicChromiumPathValidationContext() = default; + +NetworkChangeNotifier::NetworkHandle +QuicChromiumClientSession::QuicChromiumPathValidationContext::network() { + return network_handle_; +} +quic::QuicPacketWriter* +QuicChromiumClientSession::QuicChromiumPathValidationContext::WriterToUse() { + return writer_.get(); +} +std::unique_ptr<QuicChromiumPacketWriter> +QuicChromiumClientSession::QuicChromiumPathValidationContext::ReleaseWriter() { + return std::move(writer_); +} +std::unique_ptr<DatagramClientSocket> +QuicChromiumClientSession::QuicChromiumPathValidationContext::ReleaseSocket() { + return std::move(socket_); +} +std::unique_ptr<QuicChromiumPacketReader> +QuicChromiumClientSession::QuicChromiumPathValidationContext::ReleaseReader() { + return std::move(reader_); +} + +QuicChromiumClientSession::ConnectionMigrationValidationResultDelegate:: + ConnectionMigrationValidationResultDelegate( + QuicChromiumClientSession* session) + : session_(session) {} + +void QuicChromiumClientSession::ConnectionMigrationValidationResultDelegate:: + OnPathValidationSuccess( + std::unique_ptr<quic::QuicPathValidationContext> context) { + auto* chrome_context = + static_cast<QuicChromiumPathValidationContext*>(context.get()); + session_->OnConnectionMigrationProbeSucceeded( + chrome_context->network(), chrome_context->peer_address(), + chrome_context->self_address(), chrome_context->ReleaseSocket(), + chrome_context->ReleaseWriter(), chrome_context->ReleaseReader()); +} + +void QuicChromiumClientSession::ConnectionMigrationValidationResultDelegate:: + OnPathValidationFailure( + std::unique_ptr<quic::QuicPathValidationContext> context) { + // Note that socket, packet writer, and packet reader in |context| will be + // discarded. + auto* chrome_context = + static_cast<QuicChromiumPathValidationContext*>(context.get()); + session_->OnProbeFailed(chrome_context->network(), + chrome_context->peer_address()); +} + +QuicChromiumClientSession::QuicChromiumPathValidationWriterDelegate:: + QuicChromiumPathValidationWriterDelegate( + QuicChromiumClientSession* session, + base::SequencedTaskRunner* task_runner) + : session_(session), + task_runner_(task_runner), + network_(NetworkChangeNotifier::kInvalidNetworkHandle) {} + +QuicChromiumClientSession::QuicChromiumPathValidationWriterDelegate:: + ~QuicChromiumPathValidationWriterDelegate() = default; + +int QuicChromiumClientSession::QuicChromiumPathValidationWriterDelegate:: + HandleWriteError( + int error_code, + scoped_refptr<QuicChromiumPacketWriter::ReusableIOBuffer> last_packet) { + // Write error on the probing network is not recoverable. + DVLOG(1) << "Probing packet encounters write error " << error_code; + // Post a task to notify |session_| that this probe failed and cancel + // undergoing probing, which will delete the packet writer. + task_runner_->PostTask( + FROM_HERE, + base::BindOnce( + &QuicChromiumPathValidationWriterDelegate::NotifySessionProbeFailed, + weak_factory_.GetWeakPtr(), network_)); + return error_code; +} + +void QuicChromiumClientSession::QuicChromiumPathValidationWriterDelegate:: + OnWriteError(int error_code) { + NotifySessionProbeFailed(network_); +} +void QuicChromiumClientSession::QuicChromiumPathValidationWriterDelegate:: + OnWriteUnblocked() {} + +void QuicChromiumClientSession::QuicChromiumPathValidationWriterDelegate:: + NotifySessionProbeFailed(NetworkChangeNotifier::NetworkHandle network) { + session_->OnProbeFailed(network, peer_address_); +} + +void QuicChromiumClientSession::QuicChromiumPathValidationWriterDelegate:: + set_peer_address(const quic::QuicSocketAddress& peer_address) { + peer_address_ = peer_address; +} + +void QuicChromiumClientSession::QuicChromiumPathValidationWriterDelegate:: + set_network(NetworkChangeNotifier::NetworkHandle network) { + network_ = network; +} + QuicChromiumClientSession::QuicChromiumClientSession( quic::QuicConnection* connection, std::unique_ptr<DatagramClientSocket> socket, @@ -865,7 +979,8 @@ attempted_zero_rtt_(false), num_migrations_(0), last_key_update_reason_(quic::KeyUpdateReason::kInvalid), - push_promise_index_(std::move(push_promise_index)) { + push_promise_index_(std::move(push_promise_index)), + path_validation_writer_delegate_(this, task_runner_) { // Make sure connection migration and goaway on path degrading are not turned // on at the same time. DCHECK(!(migrate_session_early_v2_ && go_away_on_path_degrading_)); @@ -2352,6 +2467,19 @@ /*is_success=*/false); }); + if (version().HasIetfQuicFrames()) { + auto* context = static_cast<QuicChromiumPathValidationContext*>( + connection()->GetPathValidationContext()); + + if (!context) + return; + + if (context->network() == network && + context->peer_address() == peer_address) { + connection()->CancelPathValidation(); + } + } + LogProbeResultToHistogram(current_migration_cause_, false); if (network != NetworkChangeNotifier::kInvalidNetworkHandle) { @@ -2418,7 +2546,16 @@ "disconnected_network", disconnected_network); // Stop probing the disconnected network if there is one. - probing_manager_.CancelProbing(disconnected_network, peer_address()); + if (version().HasIetfQuicFrames()) { + auto* context = static_cast<QuicChromiumPathValidationContext*>( + connection()->GetPathValidationContext()); + if (context && context->network() == disconnected_network && + context->peer_address() == peer_address()) { + connection()->CancelPathValidation(); + } + } else { + probing_manager_.CancelProbing(disconnected_network, peer_address()); + } if (disconnected_network == default_network_) { DVLOG(1) << "Default network: " << default_network_ << " is disconnected."; default_network_ = NetworkChangeNotifier::kInvalidNetworkHandle; @@ -2535,7 +2672,16 @@ } // Cancel probing on |network| if there is any. - probing_manager_.CancelProbing(network, peer_address()); + if (version().HasIetfQuicFrames()) { + auto* context = static_cast<QuicChromiumPathValidationContext*>( + connection()->GetPathValidationContext()); + if (context && context->network() == network && + context->peer_address() == peer_address()) { + connection()->CancelPathValidation(); + } + } else { + probing_manager_.CancelProbing(network, peer_address()); + } MigrationResult result = Migrate(network, ToIPEndPoint(connection()->peer_address()), @@ -2854,7 +3000,8 @@ return ProbingResult::DISABLED_WITH_IDLE_SESSION; // Abort probing if connection migration is disabled by config. - if (config()->DisableConnectionMigration()) { + if (config()->DisableConnectionMigration() || + (version().HasIetfQuicFrames() && !connection()->use_path_validator())) { DVLOG(1) << "Client disables probing network with connection migration " << "disabled by config"; HistogramAndLogMigrationFailure(MIGRATION_STATUS_DISABLED_BY_CONFIG, @@ -2870,8 +3017,16 @@ NetworkChangeNotifier::NetworkHandle network, const quic::QuicSocketAddress& peer_address) { // Check if probing manager is probing the same path. - if (probing_manager_.IsUnderProbing(network, peer_address)) + if (version().HasIetfQuicFrames()) { + auto* context = static_cast<QuicChromiumPathValidationContext*>( + connection()->GetPathValidationContext()); + if (context && context->network() == network && + context->peer_address() == peer_address) { + return ProbingResult::PENDING; + } + } else if (probing_manager_.IsUnderProbing(network, peer_address)) { return ProbingResult::PENDING; + } // Create and configure socket on |network|. std::unique_ptr<DatagramClientSocket> probing_socket = @@ -2902,6 +3057,24 @@ rtt_ms = kDefaultRTTMilliSecs; int timeout_ms = rtt_ms * 2; + if (version().HasIetfQuicFrames() && + current_migration_cause_ != CHANGE_PORT_ON_PATH_DEGRADING) { + probing_reader->StartReading(); + path_validation_writer_delegate_.set_network(network); + path_validation_writer_delegate_.set_peer_address(peer_address); + probing_writer->set_delegate(&path_validation_writer_delegate_); + IPEndPoint local_address; + probing_socket->GetLocalAddress(&local_address); + auto context = std::make_unique<QuicChromiumPathValidationContext>( + ToQuicSocketAddress(local_address), peer_address, network, + std::move(probing_socket), std::move(probing_writer), + std::move(probing_reader)); + ValidatePath( + std::move(context), + std::make_unique<ConnectionMigrationValidationResultDelegate>(this)); + return ProbingResult::PENDING; + } + probing_manager_.StartProbing( network, peer_address, std::move(probing_socket), std::move(probing_writer), std::move(probing_reader),
diff --git a/net/quic/quic_chromium_client_session.h b/net/quic/quic_chromium_client_session.h index 76bee21..04c07a0 100644 --- a/net/quic/quic_chromium_client_session.h +++ b/net/quic/quic_chromium_client_session.h
@@ -44,7 +44,9 @@ #include "net/third_party/quiche/src/quic/core/http/quic_client_push_promise_index.h" #include "net/third_party/quiche/src/quic/core/http/quic_spdy_client_session_base.h" #include "net/third_party/quiche/src/quic/core/quic_crypto_client_stream.h" +#include "net/third_party/quiche/src/quic/core/quic_packet_writer.h" #include "net/third_party/quiche/src/quic/core/quic_packets.h" +#include "net/third_party/quiche/src/quic/core/quic_path_validator.h" #include "net/third_party/quiche/src/quic/core/quic_server_id.h" #include "net/third_party/quiche/src/quic/core/quic_time.h" #include "net/traffic_annotation/network_traffic_annotation.h" @@ -409,6 +411,89 @@ DISALLOW_COPY_AND_ASSIGN(StreamRequest); }; + // This class contains all the context needed for path validation and + // migration. + class NET_EXPORT_PRIVATE QuicChromiumPathValidationContext + : public quic::QuicPathValidationContext { + public: + QuicChromiumPathValidationContext( + const quic::QuicSocketAddress& self_address, + const quic::QuicSocketAddress& peer_address, + NetworkChangeNotifier::NetworkHandle network, + std::unique_ptr<DatagramClientSocket> socket, + std::unique_ptr<QuicChromiumPacketWriter> writer, + std::unique_ptr<QuicChromiumPacketReader> reader); + ~QuicChromiumPathValidationContext() override; + + NetworkChangeNotifier::NetworkHandle network(); + quic::QuicPacketWriter* WriterToUse() override; + + // Transfer the ownership from |this| to the caller. + std::unique_ptr<QuicChromiumPacketWriter> ReleaseWriter(); + std::unique_ptr<DatagramClientSocket> ReleaseSocket(); + std::unique_ptr<QuicChromiumPacketReader> ReleaseReader(); + + private: + NetworkChangeNotifier::NetworkHandle network_handle_; + std::unique_ptr<DatagramClientSocket> socket_; + std::unique_ptr<QuicChromiumPacketWriter> writer_; + std::unique_ptr<QuicChromiumPacketReader> reader_; + }; + + // This class implements Chrome logic for path validation events associated + // with connection migration. + class NET_EXPORT_PRIVATE ConnectionMigrationValidationResultDelegate + : public quic::QuicPathValidator::ResultDelegate { + public: + explicit ConnectionMigrationValidationResultDelegate( + QuicChromiumClientSession* session); + + void OnPathValidationSuccess( + std::unique_ptr<quic::QuicPathValidationContext> context) override; + + void OnPathValidationFailure( + std::unique_ptr<quic::QuicPathValidationContext> context) override; + + private: + // |session_| owns |this| and should out live |this|. + QuicChromiumClientSession* session_; + }; + + // This class is used to handle writer events that occur on the probing path. + class NET_EXPORT_PRIVATE QuicChromiumPathValidationWriterDelegate + : public QuicChromiumPacketWriter::Delegate { + public: + QuicChromiumPathValidationWriterDelegate( + QuicChromiumClientSession* session, + base::SequencedTaskRunner* task_runner); + ~QuicChromiumPathValidationWriterDelegate(); + + // QuicChromiumPacketWriter::Delegate interface. + int HandleWriteError( + int error_code, + scoped_refptr<QuicChromiumPacketWriter::ReusableIOBuffer> last_packet) + override; + void OnWriteError(int error_code) override; + void OnWriteUnblocked() override; + + void set_peer_address(const quic::QuicSocketAddress& peer_address); + void set_network(NetworkChangeNotifier::NetworkHandle network); + + private: + void NotifySessionProbeFailed(NetworkChangeNotifier::NetworkHandle network); + + // |session_| owns |this| and should out live |this|. + QuicChromiumClientSession* session_; + // |task_owner_| should out live |this|. + base::SequencedTaskRunner* task_runner_; + // The path validation context of the most recent probing. + NetworkChangeNotifier::NetworkHandle network_; + quic::QuicSocketAddress peer_address_; + base::WeakPtrFactory<QuicChromiumPathValidationWriterDelegate> + weak_factory_{this}; + DISALLOW_COPY_AND_ASSIGN(QuicChromiumPathValidationWriterDelegate); + }; + // Constructs a new session which will own |connection|, but not // |stream_factory|, which must outlive this session. // TODO(rch): decouple the factory from the session via a Delegate interface. @@ -952,6 +1037,8 @@ std::unique_ptr<quic::QuicClientPushPromiseIndex> push_promise_index_; + QuicChromiumPathValidationWriterDelegate path_validation_writer_delegate_; + base::WeakPtrFactory<QuicChromiumClientSession> weak_factory_{this}; DISALLOW_COPY_AND_ASSIGN(QuicChromiumClientSession);
diff --git a/net/quic/quic_stream_factory_test.cc b/net/quic/quic_stream_factory_test.cc index 13d1fa2..5c2aeaa 100644 --- a/net/quic/quic_stream_factory_test.cc +++ b/net/quic/quic_stream_factory_test.cc
@@ -72,6 +72,8 @@ #include "net/third_party/quiche/src/quic/test_tools/mock_clock.h" #include "net/third_party/quiche/src/quic/test_tools/mock_random.h" #include "net/third_party/quiche/src/quic/test_tools/quic_config_peer.h" +#include "net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h" +#include "net/third_party/quiche/src/quic/test_tools/quic_path_validator_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_session_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" @@ -280,6 +282,9 @@ quic_params_->migrate_sessions_early_v2 = true; quic_params_->allow_port_migration = false; socket_factory_.reset(new TestMigrationSocketFactory); + FLAGS_quic_reloadable_flag_quic_pass_path_response_to_validator = true; + FLAGS_quic_reloadable_flag_quic_send_path_response = true; + FLAGS_quic_reloadable_flag_quic_start_peer_migration_earlier = true; Initialize(); } @@ -2789,7 +2794,7 @@ ->NotifyNetworkConnected(kNewNetworkForTests); // Cause the connection to report path degrading to the session. - // Due to lack of alternate network, session will not mgirate connection. + // Due to lack of alternate network, session will not migrate connection. EXPECT_EQ(0u, task_runner->GetPendingTaskCount()); scoped_mock_network_change_notifier_->mock_network_change_notifier() ->NotifyNetworkMadeDefault(kNewNetworkForTests); @@ -2800,14 +2805,21 @@ // Execute the posted task to migrate back to the default network. task_runner->RunUntilIdle(); - // Another task to try send a new connectivity probe is posted. And a task to - // retry migrate back to default network is scheduled. - EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); - // Next connectivity probe is scheduled to be sent in 2 * - // kDefaultRTTMilliSecs. - base::TimeDelta next_task_delay = task_runner->NextPendingTaskDelay(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), - next_task_delay); + + base::TimeDelta next_task_delay; + // IETF QUIC's PATH_CHALLENGE is managed by a timer set in the core QUIC code. + if (!version_.HasIetfQuicFrames()) { + // Another task to try send a new connectivity probe is posted. And a task + // to retry migrate back to default network is scheduled. + EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); + // Next connectivity probe is scheduled to be sent in 2 * + // kDefaultRTTMilliSecs. + next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), + next_task_delay); + } else { + EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); + } // The connection should still be alive, and not marked as going away. EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); @@ -2824,9 +2836,10 @@ EXPECT_TRUE(HasActiveSession(host_port_pair_)); EXPECT_EQ(1u, session->GetNumActiveStreams()); - // There should be three pending tasks, the nearest one will complete - // migration to the new network. - EXPECT_EQ(3u, task_runner->GetPendingTaskCount()); + // There should be three pending tasks for gQUIC and 2 for IETF QUIC, the + // nearest one will complete migration to the new network. + EXPECT_EQ(version_.HasIetfQuicFrames() ? 2u : 3u, + task_runner->GetPendingTaskCount()); next_task_delay = task_runner->NextPendingTaskDelay(); EXPECT_EQ(base::TimeDelta(), next_task_delay); task_runner->FastForwardBy(next_task_delay); @@ -2835,13 +2848,17 @@ EXPECT_THAT(callback_.WaitForResult(), IsOk()); EXPECT_EQ(200, response.headers->response_code()); - // Now there are two pending tasks, the nearest one was to send connectivity - // probe and has been cancelled due to successful migration. - EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); - next_task_delay = task_runner->NextPendingTaskDelay(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), - next_task_delay); - task_runner->FastForwardBy(next_task_delay); + base::TimeDelta time_advanced; + if (!version_.HasIetfQuicFrames()) { + // Now there are two pending tasks, the nearest one was to send connectivity + // probe and has been cancelled due to successful migration. + EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); + next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), + next_task_delay); + time_advanced = next_task_delay; + task_runner->FastForwardBy(next_task_delay); + } // There's one more task to mgirate back to the default network in 0.4s, which // is also cancelled due to the success migration on the previous trial. @@ -2849,7 +2866,7 @@ next_task_delay = task_runner->NextPendingTaskDelay(); base::TimeDelta expected_delay = base::TimeDelta::FromSeconds(kMinRetryTimeForDefaultNetworkSecs) - - base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs); + time_advanced; EXPECT_EQ(expected_delay, next_task_delay); task_runner->FastForwardBy(next_task_delay); EXPECT_EQ(0u, task_runner->GetPendingTaskCount()); @@ -2996,19 +3013,29 @@ // Execute the posted task to migrate back to the default network. task_runner->RunUntilIdle(); - // Another task to resend a new connectivity probe is posted. And a task to - // retry migrate back to default network is scheduled. - EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); - // Next connectivity probe is scheduled to be sent in 2 * - // kDefaultRTTMilliSecs. - base::TimeDelta next_task_delay = task_runner->NextPendingTaskDelay(); - base::TimeDelta expected_delay = - base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs); - EXPECT_EQ(expected_delay, next_task_delay); - // Fast forward to send the second connectivity probe. The write will be - // asynchronous and complete after the read completes. - task_runner->FastForwardBy(next_task_delay); + base::TimeDelta next_task_delay; + base::TimeDelta expected_delay; + if (!version_.HasIetfQuicFrames()) { + // Another task to resend a new connectivity probe is posted. And a task to + // retry migrate back to default network is scheduled. + EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); + // Next connectivity probe is scheduled to be sent in 2 * + // kDefaultRTTMilliSecs. + next_task_delay = task_runner->NextPendingTaskDelay(); + expected_delay = + base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs); + EXPECT_EQ(expected_delay, next_task_delay); + // Fast forward to send the second connectivity probe. The write will be + // asynchronous and complete after the read completes. + task_runner->FastForwardBy(next_task_delay); + } else { + // Manually trigger retransmission of PATH_CHALLENGE. + auto* path_validator = + quic::test::QuicConnectionPeer::path_validator(session->connection()); + quic::test::QuicPathValidatorPeer::retry_timer(path_validator)->Cancel(); + path_validator->OnRetryTimeout(); + } // Resume quic data and a connectivity probe response will be read on the new // socket, declare probing as successful. @@ -3024,7 +3051,8 @@ // migration to the new network. Second task will retry migrate back to // default but cancelled, and the third task will retry send connectivity // probe but also cancelled. - EXPECT_EQ(3u, task_runner->GetPendingTaskCount()); + EXPECT_EQ(version_.HasIetfQuicFrames() ? 2u : 3u, + task_runner->GetPendingTaskCount()); EXPECT_EQ(base::TimeDelta(), task_runner->NextPendingTaskDelay()); task_runner->RunUntilIdle(); @@ -3037,7 +3065,8 @@ // Now there are two pending tasks, the nearest one was to retry migrate back // to default network and has been cancelled due to successful migration. - EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); + EXPECT_EQ(version_.HasIetfQuicFrames() ? 1u : 2u, + task_runner->GetPendingTaskCount()); expected_delay = base::TimeDelta::FromSeconds(kMinRetryTimeForDefaultNetworkSecs) - expected_delay; @@ -3045,15 +3074,17 @@ EXPECT_EQ(expected_delay, next_task_delay); task_runner->FastForwardBy(next_task_delay); - // There's one more task to retry sending connectivity probe in 0.4s and has - // also been cancelled due to the successful probing. - EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); - next_task_delay = task_runner->NextPendingTaskDelay(); - expected_delay = - base::TimeDelta::FromMilliseconds(3 * 2 * kDefaultRTTMilliSecs) - - base::TimeDelta::FromSeconds(kMinRetryTimeForDefaultNetworkSecs); - EXPECT_EQ(expected_delay, next_task_delay); - task_runner->FastForwardBy(next_task_delay); + if (!version_.HasIetfQuicFrames()) { + // There's one more task to retry sending connectivity probe in 0.4s and has + // also been cancelled due to the successful probing. + EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); + next_task_delay = task_runner->NextPendingTaskDelay(); + expected_delay = + base::TimeDelta::FromMilliseconds(3 * 2 * kDefaultRTTMilliSecs) - + base::TimeDelta::FromSeconds(kMinRetryTimeForDefaultNetworkSecs); + EXPECT_EQ(expected_delay, next_task_delay); + task_runner->FastForwardBy(next_task_delay); + } EXPECT_EQ(0u, task_runner->GetPendingTaskCount()); // Verify that the session is still alive. @@ -3217,7 +3248,7 @@ GetNthClientInitiatedBidirectionalStreamId(0), quic::QUIC_STREAM_CANCELLED, 1, 1, quic::QUIC_CONNECTION_MIGRATION_NO_MIGRATABLE_STREAMS, - "net error")); + "net error", /*path_response_frame*/ 0x1b)); } else { socket_data.AddWrite( SYNCHRONOUS, @@ -4114,12 +4145,15 @@ session->connection()->OnPathDegradingDetected(); EXPECT_EQ(1u, QuicStreamFactoryPeer::GetNumDegradingSessions(factory_.get())); - // Next connectivity probe is scheduled to be sent in 2 * - // kDefaultRTTMilliSecs. - EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); - base::TimeDelta next_task_delay = task_runner->NextPendingTaskDelay(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), - next_task_delay); + base::TimeDelta next_task_delay; + if (!version_.HasIetfQuicFrames()) { + // Next connectivity probe is scheduled to be sent in 2 * + // kDefaultRTTMilliSecs. + EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); + next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), + next_task_delay); + } // The connection should still be alive, and not marked as going away. EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); @@ -4137,7 +4171,8 @@ // There should be three pending tasks, the nearest one will complete // migration to the new network. - EXPECT_EQ(3u, task_runner->GetPendingTaskCount()); + EXPECT_EQ(version_.HasIetfQuicFrames() ? 2u : 3u, + task_runner->GetPendingTaskCount()); next_task_delay = task_runner->NextPendingTaskDelay(); EXPECT_EQ(base::TimeDelta(), next_task_delay); task_runner->FastForwardBy(next_task_delay); @@ -4148,20 +4183,24 @@ EXPECT_THAT(callback_.WaitForResult(), IsOk()); EXPECT_EQ(200, response.headers->response_code()); - // Now there are two pending tasks, the nearest one was to send connectivity - // probe and has been cancelled due to successful migration. - EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); - next_task_delay = task_runner->NextPendingTaskDelay(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), - next_task_delay); - task_runner->FastForwardBy(next_task_delay); + base::TimeDelta time_advanced; + if (!version_.HasIetfQuicFrames()) { + // Now there are two pending tasks, the nearest one was to send connectivity + // probe and has been cancelled due to successful migration. + EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); + next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), + next_task_delay); + time_advanced = next_task_delay; + task_runner->FastForwardBy(next_task_delay); + } // There's one more task to mgirate back to the default network in 0.4s. EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); next_task_delay = task_runner->NextPendingTaskDelay(); base::TimeDelta expected_delay = base::TimeDelta::FromSeconds(kMinRetryTimeForDefaultNetworkSecs) - - base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs); + time_advanced; EXPECT_EQ(expected_delay, next_task_delay); // Deliver a signal that the alternate network now becomes default to session, @@ -4312,12 +4351,17 @@ session->connection()->OnPathDegradingDetected(); EXPECT_EQ(1u, QuicStreamFactoryPeer::GetNumDegradingSessions(factory_.get())); - // Next connectivity probe is scheduled to be sent in 2 * - // kDefaultRTTMilliSecs. - EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); - base::TimeDelta next_task_delay = task_runner->NextPendingTaskDelay(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), - next_task_delay); + base::TimeDelta next_task_delay; + // IETF QUIC's PATH_CHALLENGE retransmission is managed by timer in core QUIC + // code. + if (!version_.HasIetfQuicFrames()) { + // Next connectivity probe is scheduled to be sent in 2 * + // kDefaultRTTMilliSecs. + EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); + next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), + next_task_delay); + } // The connection should still be alive, and not marked as going away. EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); @@ -4335,7 +4379,9 @@ // There should be three pending tasks, the nearest one will complete // migration to the new network. - EXPECT_EQ(3u, task_runner->GetPendingTaskCount()); + // IETF QUIC has no task for probe retransmission, thus only having 2 tasks. + EXPECT_EQ(version_.HasIetfQuicFrames() ? 2u : 3u, + task_runner->GetPendingTaskCount()); next_task_delay = task_runner->NextPendingTaskDelay(); EXPECT_EQ(base::TimeDelta(), next_task_delay); task_runner->FastForwardBy(next_task_delay); @@ -4350,18 +4396,24 @@ // Now there are two pending tasks, the nearest one was to send connectivity // probe and has been cancelled due to successful migration. - EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); - next_task_delay = task_runner->NextPendingTaskDelay(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), - next_task_delay); - task_runner->FastForwardBy(next_task_delay); + base::TimeDelta advanced_time; + if (!version_.HasIetfQuicFrames()) { + EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); + next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), + next_task_delay); + task_runner->FastForwardBy(next_task_delay); + advanced_time = next_task_delay; + } - // There's one more task to mgirate back to the default network in 0.4s. + // There's one more task to migrate back to the default network in 0.4s. + // For IETF QUIC, since we didn't advance time for cancelling probing, the + // delay for migrating back is 1s. EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); next_task_delay = task_runner->NextPendingTaskDelay(); base::TimeDelta expected_delay = base::TimeDelta::FromSeconds(kMinRetryTimeForDefaultNetworkSecs) - - base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs); + advanced_time; EXPECT_EQ(expected_delay, next_task_delay); // Deliver a signal that the alternate network now becomes default to session, @@ -4385,6 +4437,260 @@ EXPECT_TRUE(quic_data2.AllWriteDataConsumed()); } +TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyProbingWriterError) { + InitializeConnectionMigrationV2Test( + {kDefaultNetworkForTests, kNewNetworkForTests}); + ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); + crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); + crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); + + // Using a testing task runner so that we can control time. + auto task_runner = base::MakeRefCounted<base::TestMockTimeTaskRunner>(); + QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), task_runner.get()); + + scoped_mock_network_change_notifier_->mock_network_change_notifier() + ->QueueNetworkMadeDefault(kDefaultNetworkForTests); + + int packet_number = 1; + MockQuicData quic_data1(version_); + if (VersionUsesHttp3(version_.transport_version)) { + quic_data1.AddWrite(SYNCHRONOUS, + ConstructInitialSettingsPacket(packet_number++)); + } + quic_data1.AddWrite( + SYNCHRONOUS, + ConstructGetRequestPacket(packet_number++, + GetNthClientInitiatedBidirectionalStreamId(0), + true, true)); + quic_data1.AddRead(ASYNC, ERR_IO_PENDING); // Pause + quic_data1.AddRead( + ASYNC, + ConstructOkResponsePacket( + 1, GetNthClientInitiatedBidirectionalStreamId(0), false, true)); + quic_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // Hanging read. + quic_data1.AddSocketDataToFactory(socket_factory_.get()); + + // Set up the second socket data provider that is used for path validation. + MockQuicData quic_data2(version_); + // Connectivity probe to be sent on the new path. + quic_data2.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE); + quic_data2.AddRead(ASYNC, ERR_IO_PENDING); // Pause + quic_data2.AddRead(ASYNC, + server_maker_.MakeConnectivityProbingPacket(1, false)); + quic_data2.AddSocketDataToFactory(socket_factory_.get()); + + // Create request and QuicHttpStream. + QuicStreamRequest request(factory_.get()); + EXPECT_EQ( + ERR_IO_PENDING, + request.Request( + host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, + SocketTag(), NetworkIsolationKey(), false /* disable_secure_dns */, + /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, + failed_on_default_network_callback_, callback_.callback())); + EXPECT_THAT(callback_.WaitForResult(), IsOk()); + std::unique_ptr<HttpStream> stream = CreateStream(&request); + EXPECT_TRUE(stream.get()); + + // Cause QUIC stream to be created. + HttpRequestInfo request_info; + request_info.method = "GET"; + request_info.url = url_; + request_info.traffic_annotation = + MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS); + EXPECT_EQ(OK, stream->InitializeStream(&request_info, true, DEFAULT_PRIORITY, + net_log_, CompletionOnceCallback())); + + // Ensure that session is alive and active. + QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); + EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); + EXPECT_TRUE(HasActiveSession(host_port_pair_)); + + // Send GET request on stream. + HttpResponseInfo response; + HttpRequestHeaders request_headers; + EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, + callback_.callback())); + + EXPECT_EQ(0u, QuicStreamFactoryPeer::GetNumDegradingSessions(factory_.get())); + // Cause the connection to report path degrading to the session. + // Session will start to probe the alternate network. + // However, the probing writer will fail. This should result in a failed probe + // but no connection close. + session->connection()->OnPathDegradingDetected(); + EXPECT_EQ(1u, QuicStreamFactoryPeer::GetNumDegradingSessions(factory_.get())); + + // The connection should still be alive, and not marked as going away. + EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); + EXPECT_TRUE(HasActiveSession(host_port_pair_)); + EXPECT_EQ(1u, session->GetNumActiveStreams()); + EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback())); + + // There should be one task of notifying the session that probing failed. + if (version_.HasIetfQuicFrames()) { + EXPECT_TRUE(session->connection()->HasPendingPathValidation()); + } + EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); + base::TimeDelta next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta(), next_task_delay); + task_runner->FastForwardBy(next_task_delay); + // Verify that path validation is cancelled. + if (version_.HasIetfQuicFrames()) { + EXPECT_FALSE(session->connection()->HasPendingPathValidation()); + } + + EXPECT_EQ(1u, QuicStreamFactoryPeer::GetNumDegradingSessions(factory_.get())); + quic_data1.Resume(); + // Response headers are received on the original network.. + EXPECT_THAT(callback_.WaitForResult(), IsOk()); + EXPECT_EQ(200, response.headers->response_code()); + + // Verify that the session is still alive. + EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); + EXPECT_TRUE(HasActiveSession(host_port_pair_)); + + stream.reset(); + EXPECT_TRUE(quic_data1.AllReadDataConsumed()); + EXPECT_TRUE(quic_data1.AllWriteDataConsumed()); + EXPECT_TRUE(quic_data2.AllWriteDataConsumed()); +} + +TEST_P(QuicStreamFactoryTest, + MigrateSessionEarlyProbingWriterErrorThreeNetworks) { + InitializeConnectionMigrationV2Test( + {kDefaultNetworkForTests, kNewNetworkForTests}); + + if (!version_.HasIetfQuicFrames()) + return; + + ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); + crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); + crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); + + // Using a testing task runner so that we can control time. + auto task_runner = base::MakeRefCounted<base::TestMockTimeTaskRunner>(); + QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), task_runner.get()); + + scoped_mock_network_change_notifier_->mock_network_change_notifier() + ->QueueNetworkMadeDefault(kDefaultNetworkForTests); + + int packet_number = 1; + MockQuicData quic_data1(version_); + quic_data1.AddWrite(SYNCHRONOUS, + ConstructInitialSettingsPacket(packet_number++)); + quic_data1.AddWrite( + SYNCHRONOUS, + ConstructGetRequestPacket(packet_number++, + GetNthClientInitiatedBidirectionalStreamId(0), + true, true)); + quic_data1.AddRead(ASYNC, ERR_IO_PENDING); // Pause + quic_data1.AddRead( + ASYNC, + ConstructOkResponsePacket( + 1, GetNthClientInitiatedBidirectionalStreamId(0), false, true)); + quic_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // Hanging read. + quic_data1.AddSocketDataToFactory(socket_factory_.get()); + + // Set up the second socket data provider that is used for path validation. + MockQuicData quic_data2(version_); + // Connectivity probe to be sent on the new path. + quic_data2.AddWrite(SYNCHRONOUS, ERR_ADDRESS_UNREACHABLE); + quic_data2.AddRead(ASYNC, ERR_IO_PENDING); // Pause + quic_data2.AddRead(ASYNC, + server_maker_.MakeConnectivityProbingPacket(1, false)); + quic_data2.AddSocketDataToFactory(socket_factory_.get()); + + packet_number++; + + MockQuicData quic_data3(version_); + // Connectivity probe to be sent on the new path. + quic_data3.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectivityProbingPacket( + packet_number++, true)); + quic_data3.AddRead(ASYNC, ERR_IO_PENDING); // Pause + quic_data3.AddRead(ASYNC, + server_maker_.MakeConnectivityProbingPacket(1, false)); + quic_data3.AddSocketDataToFactory(socket_factory_.get()); + + // Create request and QuicHttpStream. + QuicStreamRequest request(factory_.get()); + EXPECT_EQ( + ERR_IO_PENDING, + request.Request( + host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, + SocketTag(), NetworkIsolationKey(), false /* disable_secure_dns */, + /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, + failed_on_default_network_callback_, callback_.callback())); + EXPECT_THAT(callback_.WaitForResult(), IsOk()); + std::unique_ptr<HttpStream> stream = CreateStream(&request); + EXPECT_TRUE(stream.get()); + + // Cause QUIC stream to be created. + HttpRequestInfo request_info; + request_info.method = "GET"; + request_info.url = url_; + request_info.traffic_annotation = + MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS); + EXPECT_EQ(OK, stream->InitializeStream(&request_info, true, DEFAULT_PRIORITY, + net_log_, CompletionOnceCallback())); + + // Ensure that session is alive and active. + QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); + EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); + EXPECT_TRUE(HasActiveSession(host_port_pair_)); + + // Send GET request on stream. + HttpResponseInfo response; + HttpRequestHeaders request_headers; + EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, + callback_.callback())); + + EXPECT_EQ(0u, QuicStreamFactoryPeer::GetNumDegradingSessions(factory_.get())); + // Cause the connection to report path degrading to the session. + // Session will start to probe the alternate network. + // However, the probing writer will fail. This should result in a failed probe + // but no connection close. + session->connection()->OnPathDegradingDetected(); + EXPECT_EQ(1u, QuicStreamFactoryPeer::GetNumDegradingSessions(factory_.get())); + + // The connection should still be alive, and not marked as going away. + EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); + EXPECT_TRUE(HasActiveSession(host_port_pair_)); + EXPECT_EQ(1u, session->GetNumActiveStreams()); + EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback())); + + // There should be one task of notifying the session that probing failed. + EXPECT_TRUE(session->connection()->HasPendingPathValidation()); + EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); + + // Trigger another path degrading, but this time another network is available. + scoped_mock_network_change_notifier_->mock_network_change_notifier() + ->SetConnectedNetworksList({kDefaultNetworkForTests, 3}); + session->connection()->OnPathDegradingDetected(); + + base::TimeDelta next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta(), next_task_delay); + task_runner->FastForwardBy(next_task_delay); + // Verify that the task is executed, but since a new path validation is under + // way, it won't be cancelled. + EXPECT_EQ(0u, task_runner->GetPendingTaskCount()); + EXPECT_TRUE(session->connection()->HasPendingPathValidation()); + + EXPECT_EQ(1u, QuicStreamFactoryPeer::GetNumDegradingSessions(factory_.get())); + quic_data1.Resume(); + // Response headers are received on the original network.. + EXPECT_THAT(callback_.WaitForResult(), IsOk()); + EXPECT_EQ(200, response.headers->response_code()); + + // Verify that the session is still alive. + EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); + EXPECT_TRUE(HasActiveSession(host_port_pair_)); + + stream.reset(); + EXPECT_TRUE(quic_data1.AllReadDataConsumed()); + EXPECT_TRUE(quic_data1.AllWriteDataConsumed()); + EXPECT_TRUE(quic_data2.AllWriteDataConsumed()); +} + // Verifies that port migration can be attempted and succeed when path degrading // is detected, even if NetworkHandle is not supported. TEST_P(QuicStreamFactoryTest, MigratePortOnPathDegrading_WithoutNetworkHandle) { @@ -5285,12 +5591,15 @@ EXPECT_TRUE(HasActiveSession(host_port_pair_)); EXPECT_EQ(1u, QuicStreamFactoryPeer::GetNumDegradingSessions(factory_.get())); - // Next connectivity probe is scheduled to be sent in 2 * - // kDefaultRTTMilliSecs. - EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); - base::TimeDelta next_task_delay = task_runner->NextPendingTaskDelay(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), - next_task_delay); + base::TimeDelta next_task_delay; + if (!version_.HasIetfQuicFrames()) { + // Next connectivity probe is scheduled to be sent in 2 * + // kDefaultRTTMilliSecs. + EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); + base::TimeDelta next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), + next_task_delay); + } // The connection should still be alive, and not marked as going away. EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); @@ -5306,25 +5615,30 @@ // There should be three pending tasks, the nearest one will complete // migration to the new network. - EXPECT_EQ(3u, task_runner->GetPendingTaskCount()); + EXPECT_EQ(version_.HasIetfQuicFrames() ? 2u : 3u, + task_runner->GetPendingTaskCount()); next_task_delay = task_runner->NextPendingTaskDelay(); EXPECT_EQ(base::TimeDelta(), next_task_delay); task_runner->FastForwardBy(next_task_delay); - // Now there are two pending tasks, the nearest one was to send connectivity - // probe and has been cancelled due to successful migration. - EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); - next_task_delay = task_runner->NextPendingTaskDelay(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), - next_task_delay); - task_runner->FastForwardBy(next_task_delay); + base::TimeDelta time_advanced; + if (!version_.HasIetfQuicFrames()) { + // Now there are two pending tasks, the nearest one was to send connectivity + // probe and has been cancelled due to successful migration. + EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); + next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), + next_task_delay); + time_advanced = next_task_delay; + task_runner->FastForwardBy(next_task_delay); + } // There's one more task to mgirate back to the default network in 0.4s. EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); next_task_delay = task_runner->NextPendingTaskDelay(); base::TimeDelta expected_delay = base::TimeDelta::FromSeconds(kMinRetryTimeForDefaultNetworkSecs) - - base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs); + time_advanced; EXPECT_EQ(expected_delay, next_task_delay); base::RunLoop().RunUntilIdle(); @@ -5469,12 +5783,15 @@ scoped_mock_network_change_notifier_->mock_network_change_notifier() ->NotifyNetworkConnected(kNewNetworkForTests); - // Next connectivity probe is scheduled to be sent in 2 * - // kDefaultRTTMilliSecs. - EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); - base::TimeDelta next_task_delay = task_runner->NextPendingTaskDelay(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), - next_task_delay); + base::TimeDelta next_task_delay; + if (!version_.HasIetfQuicFrames()) { + // Next connectivity probe is scheduled to be sent in 2 * + // kDefaultRTTMilliSecs. + EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); + base::TimeDelta next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), + next_task_delay); + } // The connection should still be alive, and not marked as going away. EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); @@ -5492,7 +5809,8 @@ // There should be three pending tasks, the nearest one will complete // migration to the new network. - EXPECT_EQ(3u, task_runner->GetPendingTaskCount()); + EXPECT_EQ(version_.HasIetfQuicFrames() ? 2u : 3u, + task_runner->GetPendingTaskCount()); next_task_delay = task_runner->NextPendingTaskDelay(); EXPECT_EQ(base::TimeDelta(), next_task_delay); task_runner->FastForwardBy(next_task_delay); @@ -5505,20 +5823,24 @@ EXPECT_THAT(callback_.WaitForResult(), IsOk()); EXPECT_EQ(200, response.headers->response_code()); - // Now there are two pending tasks, the nearest one was to send connectivity - // probe and has been cancelled due to successful migration. - EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); - next_task_delay = task_runner->NextPendingTaskDelay(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), - next_task_delay); - task_runner->FastForwardBy(next_task_delay); + base::TimeDelta time_advanced; + if (!version_.HasIetfQuicFrames()) { + // Now there are two pending tasks, the nearest one was to send connectivity + // probe and has been cancelled due to successful migration. + EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); + next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), + next_task_delay); + time_advanced = next_task_delay; + task_runner->FastForwardBy(next_task_delay); + } // There's one more task to mgirate back to the default network in 0.4s. EXPECT_EQ(1u, task_runner->GetPendingTaskCount()); next_task_delay = task_runner->NextPendingTaskDelay(); base::TimeDelta expected_delay = base::TimeDelta::FromSeconds(kMinRetryTimeForDefaultNetworkSecs) - - base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs); + time_advanced; EXPECT_EQ(expected_delay, next_task_delay); // Deliver a signal that the alternate network now becomes default to session, @@ -5841,7 +6163,7 @@ GetNthClientInitiatedBidirectionalStreamId(0), quic::QUIC_STREAM_CANCELLED, 1, 1, quic::QUIC_CONNECTION_MIGRATION_NO_MIGRATABLE_STREAMS, - "net error")); + "net error", 0x1b)); } else { socket_data.AddWrite( SYNCHRONOUS, @@ -6323,7 +6645,8 @@ // There should be one task posted to one will resend a connectivity probe and // the other will retry migrate back, both are cancelled. - EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); + EXPECT_EQ(version_.HasIetfQuicFrames() ? 1u : 2u, + task_runner->GetPendingTaskCount()); task_runner->FastForwardBy( base::TimeDelta::FromSeconds(2 * kMinRetryTimeForDefaultNetworkSecs)); EXPECT_EQ(0u, task_runner->GetPendingTaskCount()); @@ -6641,12 +6964,14 @@ next_task_delay); task_runner->FastForwardBy(next_task_delay); - // There should be two tasks posted. One will retry probing and the other - // will retry migrate back. - EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); - next_task_delay = task_runner->NextPendingTaskDelay(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), - next_task_delay); + if (!version_.HasIetfQuicFrames()) { + // There should be two tasks posted. One will retry probing and the other + // will retry migrate back. + EXPECT_EQ(2u, task_runner->GetPendingTaskCount()); + next_task_delay = task_runner->NextPendingTaskDelay(); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(2 * kDefaultRTTMilliSecs), + next_task_delay); + } // Deliver the signal that the default network is disconnected. scoped_mock_network_change_notifier_->mock_network_change_notifier()
diff --git a/net/quic/quic_test_packet_maker.cc b/net/quic/quic_test_packet_maker.cc index fe9e6a2..1a45d12 100644 --- a/net/quic/quic_test_packet_maker.cc +++ b/net/quic/quic_test_packet_maker.cc
@@ -495,6 +495,35 @@ } std::unique_ptr<quic::QuicReceivedPacket> +QuicTestPacketMaker::MakeDataRstAckAndConnectionClosePacket( + uint64_t num, + bool include_version, + quic::QuicStreamId data_stream_id, + absl::string_view data, + quic::QuicStreamId rst_stream_id, + quic::QuicRstStreamErrorCode error_code, + uint64_t largest_received, + uint64_t smallest_received, + quic::QuicErrorCode quic_error, + const std::string& quic_error_details, + uint64_t frame_type) { + InitializeHeader(num, include_version); + + AddQuicAckFrame(largest_received, smallest_received); + + AddQuicStreamFrame(data_stream_id, /* fin = */ false, data); + if (version_.HasIetfQuicFrames()) { + AddQuicStopSendingFrame(rst_stream_id, error_code); + } + AddQuicRstStreamFrame(rst_stream_id, error_code); + + AddQuicAckFrame(largest_received, smallest_received); + AddQuicConnectionCloseFrame(quic_error, quic_error_details, frame_type); + + return BuildPacket(); +} + +std::unique_ptr<quic::QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndConnectionClosePacket( uint64_t num, bool include_version,
diff --git a/net/quic/quic_test_packet_maker.h b/net/quic/quic_test_packet_maker.h index 415265c..0edca9d 100644 --- a/net/quic/quic_test_packet_maker.h +++ b/net/quic/quic_test_packet_maker.h
@@ -205,6 +205,20 @@ quic::QuicErrorCode quic_error, const std::string& quic_error_details); + std::unique_ptr<quic::QuicReceivedPacket> + MakeDataRstAckAndConnectionClosePacket( + uint64_t num, + bool include_version, + quic::QuicStreamId data_stream_id, + absl::string_view data, + quic::QuicStreamId rst_stream_id, + quic::QuicRstStreamErrorCode error_code, + uint64_t largest_received, + uint64_t smallest_received, + quic::QuicErrorCode quic_error, + const std::string& quic_error_details, + uint64_t frame_type); + std::unique_ptr<quic::QuicReceivedPacket> MakeAckAndConnectionClosePacket( uint64_t num, bool include_version,
diff --git a/pdf/out_of_process_instance.cc b/pdf/out_of_process_instance.cc index c452f76..d8c5eac 100644 --- a/pdf/out_of_process_instance.cc +++ b/pdf/out_of_process_instance.cc
@@ -68,6 +68,7 @@ #include "ppapi/cpp/var_array_buffer.h" #include "ppapi/cpp/var_dictionary.h" #include "ui/events/keycodes/keyboard_codes.h" +#include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/point_f.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/size.h" @@ -854,7 +855,7 @@ } if (!stop_scrolling_) { - scroll_offset_ = view.GetScrollOffset(); + scroll_position_ = PointFromPPPoint(view.GetScrollOffset()); UpdateScroll(); } } @@ -866,12 +867,12 @@ // are 0-based (i.e. they do not correspond to the viewport's coordinates in // JS), so we need to subtract the toolbar height to convert them into // viewport coordinates. - pp::FloatPoint scroll_offset_float( - scroll_offset_.x(), - scroll_offset_.y() - top_toolbar_height_in_viewport_coords()); - scroll_offset_float = BoundScrollOffsetToDocument(scroll_offset_float); - engine()->ScrolledToXPosition(scroll_offset_float.x() * device_scale()); - engine()->ScrolledToYPosition(scroll_offset_float.y() * device_scale()); + gfx::PointF scroll_position_float( + scroll_position_.x(), + scroll_position_.y() - top_toolbar_height_in_viewport_coords()); + scroll_position_float = BoundScrollPositionToDocument(scroll_position_float); + engine()->ScrolledToXPosition(scroll_position_float.x() * device_scale()); + engine()->ScrolledToYPosition(scroll_position_float.y() * device_scale()); } void OutOfProcessInstance::DidChangeFocus(bool has_focus) { @@ -1971,7 +1972,7 @@ int x = dict.Get(pp::Var(kJSUpdateScrollX)).AsInt(); int y = dict.Get(pp::Var(kJSUpdateScrollY)).AsInt(); - scroll_offset_ = pp::Point(x, y); + scroll_position_ = gfx::Point(x, y); UpdateScroll(); } @@ -2000,11 +2001,11 @@ double new_zoom = dict.Get(pp::Var(kJSZoom)).AsDouble(); double zoom_ratio = new_zoom / zoom(); - pp::FloatPoint scroll_offset(dict.Get(pp::Var(kJSXOffset)).AsDouble(), - dict.Get(pp::Var(kJSYOffset)).AsDouble()); + gfx::PointF scroll_position(dict.Get(pp::Var(kJSXOffset)).AsDouble(), + dict.Get(pp::Var(kJSYOffset)).AsDouble()); if (pinch_phase == PINCH_START) { - scroll_offset_at_last_raster_ = scroll_offset; + scroll_position_at_last_raster_ = scroll_position; last_bitmap_smaller_ = false; needs_reraster_ = false; return; @@ -2043,9 +2044,9 @@ // We want to keep the paint in the middle but it must stay in the same // position relative to the scroll bars. paint_offset = gfx::Vector2d(0, (1 - zoom_ratio) * pinch_center.y()); - scroll_delta = gfx::Vector2d( - 0, - (scroll_offset.y() - scroll_offset_at_last_raster_.y() * zoom_ratio)); + scroll_delta = + gfx::Vector2d(0, (scroll_position.y() - + scroll_position_at_last_raster_.y() * zoom_ratio)); pinch_vector = gfx::Vector2d(); last_bitmap_smaller_ = true; @@ -2058,9 +2059,11 @@ (1 - new_zoom / zoom_when_doc_covers_plugin_width) * pinch_center.x(), (1 - zoom_ratio) * pinch_center.y()); pinch_vector = gfx::Vector2d(); - scroll_delta = gfx::Vector2d( - (scroll_offset.x() - scroll_offset_at_last_raster_.x() * zoom_ratio), - (scroll_offset.y() - scroll_offset_at_last_raster_.y() * zoom_ratio)); + scroll_delta = + gfx::Vector2d((scroll_position.x() - + scroll_position_at_last_raster_.x() * zoom_ratio), + (scroll_position.y() - + scroll_position_at_last_raster_.y() * zoom_ratio)); } paint_manager().SetTransform(zoom_ratio, PointFromPPPoint(pinch_center), @@ -2080,9 +2083,9 @@ needs_reraster_ = true; // If we're rerastering due to zooming out, we need to update - // |scroll_offset_at_last_raster_|, in case the user continues the + // |scroll_position_at_last_raster_|, in case the user continues the // gesture by zooming in. - scroll_offset_at_last_raster_ = scroll_offset; + scroll_position_at_last_raster_ = scroll_position; } // Bound the input parameters. @@ -2090,9 +2093,9 @@ DCHECK(dict.Get(pp::Var(kJSUserInitiated)).is_bool()); SetZoom(new_zoom); - scroll_offset = BoundScrollOffsetToDocument(scroll_offset); - engine()->ScrolledToXPosition(scroll_offset.x() * device_scale()); - engine()->ScrolledToYPosition(scroll_offset.y() * device_scale()); + scroll_position = BoundScrollPositionToDocument(scroll_position); + engine()->ScrolledToXPosition(scroll_position.x() * device_scale()); + engine()->ScrolledToYPosition(scroll_position.y() * device_scale()); } void OutOfProcessInstance::PreviewDocumentLoadComplete() { @@ -2492,18 +2495,18 @@ pp::PDF::UserMetricsRecordAction(this, pp::Var(action)); } -pp::FloatPoint OutOfProcessInstance::BoundScrollOffsetToDocument( - const pp::FloatPoint& scroll_offset) { +gfx::PointF OutOfProcessInstance::BoundScrollPositionToDocument( + const gfx::PointF& scroll_position) { float max_x = std::max( document_size().width() * float{zoom()} - plugin_dip_size().width(), 0.0f); - float x = base::ClampToRange(scroll_offset.x(), 0.0f, max_x); + float x = base::ClampToRange(scroll_position.x(), 0.0f, max_x); float min_y = -top_toolbar_height_in_viewport_coords(); float max_y = std::max( document_size().height() * float{zoom()} - plugin_dip_size().height(), min_y); - float y = base::ClampToRange(scroll_offset.y(), min_y, max_y); - return pp::FloatPoint(x, y); + float y = base::ClampToRange(scroll_position.y(), min_y, max_y); + return gfx::PointF(x, y); } bool OutOfProcessInstance::SendInputEventToEngine(const pp::InputEvent& event) {
diff --git a/pdf/out_of_process_instance.h b/pdf/out_of_process_instance.h index 937e414..db3d845 100644 --- a/pdf/out_of_process_instance.h +++ b/pdf/out_of_process_instance.h
@@ -26,6 +26,8 @@ #include "ppapi/cpp/instance.h" #include "ppapi/cpp/private/find_private.h" #include "third_party/skia/include/core/SkBitmap.h" +#include "ui/gfx/geometry/point.h" +#include "ui/gfx/geometry/point_f.h" #include "ui/gfx/geometry/rect.h" namespace gfx { @@ -290,9 +292,8 @@ // Sends the thumbnail image data. void SendThumbnail(const std::string& message_id, Thumbnail thumbnail); - // Bound the given scroll offset to the document. - pp::FloatPoint BoundScrollOffsetToDocument( - const pp::FloatPoint& scroll_offset); + // Bound the given scroll position to the document. + gfx::PointF BoundScrollPositionToDocument(const gfx::PointF& scroll_position); // These values are persisted to logs. Entries should not be renumbered and // numeric values should never be reused. @@ -343,8 +344,8 @@ // The current cursor. PP_CursorType_Dev cursor_ = PP_CURSORTYPE_POINTER; - // The scroll offset in CSS pixels. - pp::Point scroll_offset_; + // The scroll position in CSS pixels. + gfx::Point scroll_position_; // Enumeration of pinch states. // This should match PinchPhase enum in @@ -361,7 +362,7 @@ bool needs_reraster_ = true; // The scroll position for the last raster, before any transformations are // applied. - pp::FloatPoint scroll_offset_at_last_raster_; + gfx::PointF scroll_position_at_last_raster_; // True if last bitmap was smaller than screen. bool last_bitmap_smaller_ = false; // True if the plugin is full-page.
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc index 415e53c..a4dffd9 100644 --- a/pdf/pdfium/pdfium_engine.cc +++ b/pdf/pdfium/pdfium_engine.cc
@@ -1063,8 +1063,7 @@ FPDF_ANNOTATION last_focused_annot = nullptr; FPDF_BOOL ret = FORM_GetFocusedAnnot(form(), &last_focused_page_, &last_focused_annot); - DCHECK(ret); - if (PageIndexInBounds(last_focused_page_) && last_focused_annot) { + if (ret && PageIndexInBounds(last_focused_page_) && last_focused_annot) { last_focused_annot_index_ = FPDFPage_GetAnnotIndex( pages_[last_focused_page_]->GetPage(), last_focused_annot); } else {
diff --git a/remoting/host/audio_capturer_mac.cc b/remoting/host/audio_capturer_mac.cc index b2f688d..99dfcf2 100644 --- a/remoting/host/audio_capturer_mac.cc +++ b/remoting/host/audio_capturer_mac.cc
@@ -94,6 +94,77 @@ } // namespace +// static +std::vector<AudioCapturerMac::AudioDeviceInfo> +AudioCapturerMac::GetAudioDevices() { + AudioObjectPropertyAddress property_address; + property_address.mScope = kAudioObjectPropertyScopeGlobal; + property_address.mElement = kAudioObjectPropertyElementMaster; + + UInt32 property_size; + + // Get all audio device IDs (which are UInt32). + property_address.mSelector = kAudioHardwarePropertyDevices; + OSStatus result = AudioObjectGetPropertyDataSize( + kAudioObjectSystemObject, &property_address, 0, NULL, &property_size); + if (result != noErr) { + LOG(ERROR) + << "AudioObjectGetPropertyDataSize(kAudioHardwarePropertyDevices) " + << "failed. Error: " << result; + return {}; + } + + UInt32 num_devices = property_size / sizeof(AudioDeviceID); + auto device_ids = std::make_unique<AudioDeviceID[]>(num_devices); + result = + AudioObjectGetPropertyData(kAudioObjectSystemObject, &property_address, 0, + NULL, &property_size, device_ids.get()); + if (result != noErr) { + LOG(ERROR) << "AudioObjectGetPropertyData(kAudioHardwarePropertyDevices) " + << "failed. Error: " << result; + return {}; + } + + std::vector<AudioDeviceInfo> audio_devices; + + for (UInt32 i = 0u; i < num_devices; i++) { + AudioDeviceInfo audio_device; + AudioDeviceID device_id = device_ids.get()[i]; + + // Get the device name. + property_address.mSelector = kAudioObjectPropertyName; + base::ScopedCFTypeRef<CFStringRef> device_name; + property_size = sizeof(CFStringRef); + result = AudioObjectGetPropertyData(device_id, &property_address, 0, NULL, + &property_size, + device_name.InitializeInto()); + if (result != noErr) { + LOG(ERROR) << "AudioObjectGetPropertyData(" << device_id + << ", kAudioObjectPropertyName) " + << "failed. Error: " << result; + continue; + } + audio_device.device_name = base::SysCFStringRefToUTF8(device_name); + + // Now find out its UID. + property_address.mSelector = kAudioDevicePropertyDeviceUID; + base::ScopedCFTypeRef<CFStringRef> device_uid; + property_size = sizeof(CFStringRef); + result = + AudioObjectGetPropertyData(device_id, &property_address, 0, NULL, + &property_size, device_uid.InitializeInto()); + if (result != noErr) { + LOG(ERROR) << "AudioObjectGetPropertyData(" << device_id + << ", kAudioDevicePropertyDeviceUID) " + << "failed. Error: " << result; + continue; + } + audio_device.device_uid = base::SysCFStringRefToUTF8(device_uid); + audio_devices.push_back(audio_device); + } + return audio_devices; +} + AudioCapturerMac::AudioCapturerMac(const std::string& audio_device_uid) : audio_device_uid_(audio_device_uid), silence_detector_(kAudioSilenceThreshold) {
diff --git a/remoting/host/audio_capturer_mac.h b/remoting/host/audio_capturer_mac.h index 27e9b9f..f77cf51 100644 --- a/remoting/host/audio_capturer_mac.h +++ b/remoting/host/audio_capturer_mac.h
@@ -8,6 +8,7 @@ #include <AudioToolbox/AudioToolbox.h> #include <string> +#include <vector> #include "base/macros.h" #include "base/memory/scoped_refptr.h" @@ -26,6 +27,17 @@ // audio on Mac through the loopback device. class AudioCapturerMac : public AudioCapturer { public: + struct AudioDeviceInfo { + // Human readable name for the device. Might not be unique. + std::string device_name; + + // A unique ID for the device. + std::string device_uid; + }; + + // Gets information about all available audio devices. + static std::vector<AudioDeviceInfo> GetAudioDevices(); + explicit AudioCapturerMac(const std::string& audio_device_uid); ~AudioCapturerMac() override;
diff --git a/remoting/host/host_main.cc b/remoting/host/host_main.cc index f1d01a5..ecbd384 100644 --- a/remoting/host/host_main.cc +++ b/remoting/host/host_main.cc
@@ -60,18 +60,23 @@ "Usage: %s [options]\n" "\n" "Options:\n" + +#if defined(OS_LINUX) " --audio-pipe-name=<pipe> - Sets the pipe name to capture audio on " "Linux.\n" +#endif // defined(OS_LINUX) + +#if defined(OS_APPLE) + " --list-audio-devices - List all audio devices and their device " + "UID.\n" +#endif // defined(OS_APPLE) + " --console - Runs the daemon interactively.\n" - " --daemon-pipe=<pipe> - Specifies the pipe to connect to the " - "daemon.\n" " --elevate=<binary> - Runs <binary> elevated.\n" " --host-config=<config> - Specifies the host configuration.\n" " --help, -? - Prints this message.\n" " --type - Specifies process type.\n" " --version - Prints the host version and exits.\n" - " --window-id=<id> - Specifies a window to remote," - " instead of the whole desktop.\n" " --evaluate-type=<type> - Evaluates the capability of the host.\n"; void Usage(const base::FilePath& program_name) {
diff --git a/remoting/host/remoting_me2me_host.cc b/remoting/host/remoting_me2me_host.cc index 461f31c..03fa3de 100644 --- a/remoting/host/remoting_me2me_host.cc +++ b/remoting/host/remoting_me2me_host.cc
@@ -115,6 +115,7 @@ #if defined(OS_APPLE) #include "base/mac/mac_util.h" #include "base/mac/scoped_cftyperef.h" +#include "remoting/host/audio_capturer_mac.h" #include "remoting/host/desktop_capturer_checker.h" #include "remoting/host/mac/permission_utils.h" #endif // defined(OS_APPLE) @@ -515,6 +516,17 @@ permission_granted_ = mac::CanRecordScreen(); return false; } + if (cmd_line->HasSwitch(kListAudioDevicesSwitchName)) { + std::vector<AudioCapturerMac::AudioDeviceInfo> audio_devices = + AudioCapturerMac::GetAudioDevices(); + printf("Audio devices:\n"); + for (const auto& audio_device : audio_devices) { + printf("\n"); + printf(" Device name: %s\n", audio_device.device_name.c_str()); + printf(" Device UID: %s\n", audio_device.device_uid.c_str()); + } + return false; + } #endif // defined(OS_APPLE) #if defined(REMOTING_MULTI_PROCESS)
diff --git a/remoting/host/switches.cc b/remoting/host/switches.cc index 66e20a7a..bf743a4 100644 --- a/remoting/host/switches.cc +++ b/remoting/host/switches.cc
@@ -45,6 +45,7 @@ "check-accessibility-permission"; const char kCheckScreenRecordingPermissionSwitchName[] = "check-screen-recording-permission"; +const char kListAudioDevicesSwitchName[] = "list-audio-devices"; #endif // defined OS_APPLE } // namespace remoting
diff --git a/remoting/host/switches.h b/remoting/host/switches.h index c4a81f5..2c6aee5 100644 --- a/remoting/host/switches.h +++ b/remoting/host/switches.h
@@ -71,6 +71,9 @@ // Command line switch to check for Screen Recording permission. extern const char kCheckScreenRecordingPermissionSwitchName[]; + +// Command line switch to list all audio devices and their UID. +extern const char kListAudioDevicesSwitchName[]; #endif // defined OS_APPLE } // namespace remoting
diff --git a/remoting/resources/remoting_strings_af.xtb b/remoting/resources/remoting_strings_af.xtb index d573a727..151f048 100644 --- a/remoting/resources/remoting_strings_af.xtb +++ b/remoting/resources/remoting_strings_af.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Om Chrome-afstandwerkskerm te gebruik, moet jy 'n Google-rekening by jou toestel voeg.</translation> <translation id="809687642899217504">My rekenaars</translation> <translation id="8116630183974937060">'n Netwerkfout het voorgekom. Maak asseblief seker dat jou toestel aanlyn is en probeer weer.</translation> -<translation id="8187079423890319756">Kopiereg 2013 Die Chromium-outeurs. Alle regte voorbehou.</translation> <translation id="8295077433896346116">Om <ph name="PRODUCT_NAME" /> te gebruik, moet jy die "Toeganklikheid"-toestemming verleen sodat invoer van die afstandmasjien af op hierdie Mac ingevoeg kan word. Klik "<ph name="BUTTON_NAME" />" hieronder om hierdie toestemming te verleen. Merk die blokkie langs "<ph name="SERVICE_SCRIPT_NAME" />" in die "Toeganklikheid"-voorkeurepaneel wat sal oopmaak.
diff --git a/remoting/resources/remoting_strings_am.xtb b/remoting/resources/remoting_strings_am.xtb index b994ec08..edb7b51 100644 --- a/remoting/resources/remoting_strings_am.xtb +++ b/remoting/resources/remoting_strings_am.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome የርቀት ዴስክቶፕን ለመጠቀም የአንድ የGoogle መለያ በመሣሪያዎ ላይ ማከል አለብዎት።</translation> <translation id="809687642899217504">የእኔ ኮምፒውተሮች</translation> <translation id="8116630183974937060">አንድ የአውታረ መረብ ስህተት ተከስቷል። እባክዎ የእርስዎ መሣሪያ መስመር ላይ መሆኑን ያረጋግጡና እንደገና ይሞክሩ።</translation> -<translation id="8187079423890319756">የቅጂ መብት 2013 የChromium አዘጋጆች። ሁሉም መብቶች የተጠበቁ ናቸው።</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" />ን ለመጠቀም ከርቀት ማሽኑ የመጣ ግቤት ወደዚህ Mac እንዲገባ ለማድረግ የ«ተደራሽነት» ፈቃዱን መስጠት ይኖርብዎታል። ይህን ፈቃድ ለመስጠት ከታች የ«ተደራሽነት» መቃኑን የሚከፍተውን «<ph name="BUTTON_NAME" />»ን ጠቅ ያድርጉ፣ ከ«<ph name="SERVICE_SCRIPT_NAME" />» ቀጥሎ ያለውን ሳጥን ምልክት ያድርጉበት።
diff --git a/remoting/resources/remoting_strings_ar.xtb b/remoting/resources/remoting_strings_ar.xtb index 5e80c78..1bcc5c6 100644 --- a/remoting/resources/remoting_strings_ar.xtb +++ b/remoting/resources/remoting_strings_ar.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">لاستخدام سطح المكتب البعيد من Chrome، يجب إضافة حساب في Google إلى جهازك.</translation> <translation id="809687642899217504">أجهزة الكمبيوتر الخاصة بي</translation> <translation id="8116630183974937060">حدث خطأ في الشبكة. يُرجى التحقق من اتصال الجهاز بالإنترنت ثم إعادة المحاولة.</translation> -<translation id="8187079423890319756">حقوق الطبع والنشر لعام 2013 لصالح The Chromium Authors. جميع الحقوق محفوظة.</translation> <translation id="8295077433896346116">لاستخدام <ph name="PRODUCT_NAME" />، عليك منح إذن "أدوات تمكين الوصول" لكي يصل الطلب من الجهاز البعيد إلى جهاز Mac هذا. لمنح هذا الإذن، يُرجى النقر على "<ph name="BUTTON_NAME" />" أدناه لفتح لوحة إعدادات "أدوات تمكين الوصول" المفضّلة ثم وضع علامة في المربّع بجانب "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_as.xtb b/remoting/resources/remoting_strings_as.xtb index 696d877c..bcf96b4 100644 --- a/remoting/resources/remoting_strings_as.xtb +++ b/remoting/resources/remoting_strings_as.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome ৰিম’ট ডেস্কটপ ব্যৱহাৰ কৰিবলৈ আপুনি নিজৰ ডিভাইচত Google একাউণ্ট যোগ কৰিব লাগিব।</translation> <translation id="809687642899217504">মোৰ কম্পিউটাৰ</translation> <translation id="8116630183974937060">নেটৱৰ্কৰ কোনো আসোঁৱাহ হৈছে। অনুগ্ৰহ কৰি আপোনাৰ ডিভাইচটো অনলাইন আছেনে নাই পৰীক্ষা কৰি আকৌ চেষ্টা কৰক।</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors. সকলো চৰ্ত সংৰক্ষিত।</translation> <translation id="8295077433896346116">আপুনি <ph name="PRODUCT_NAME" /> ব্যৱহাৰ কৰিবলৈ 'সাধ্য সুবিধা'ৰ অনুমতি প্ৰদান কৰিব লাগিব যাতে দূৰত থকা মেচিনটোৰ পৰা এই Macটোত ইনপুট ভৰাব পৰা যায়। এই অনুমতি দিবলৈ, তলত থকা '<ph name="BUTTON_NAME" />'ত ক্লিক কৰক। খোল খোৱা 'সাধ্য সুবিধা'ৰ অগ্ৰাধিকাৰসমূহৰ ক্ষেত্ৰখনত, '<ph name="SERVICE_SCRIPT_NAME" />'ৰ কাষত থকা বাকচটোত টিক মাৰ্ক দিয়ক।
diff --git a/remoting/resources/remoting_strings_az.xtb b/remoting/resources/remoting_strings_az.xtb index d4f8477..9603473 100644 --- a/remoting/resources/remoting_strings_az.xtb +++ b/remoting/resources/remoting_strings_az.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome Remote Desktop istifadə etmək üçün cihazınıza Google Hesabı əlavə etməlisiniz.</translation> <translation id="809687642899217504">Kompüterlərim</translation> <translation id="8116630183974937060">Şəbəkə xətası oldu. Cihazınızın onlayn olmasını yoxlayın və yenidən cəhd edin.</translation> -<translation id="8187079423890319756">Copyright 2013 Chromium Müəllifləri. Bütün hüquqlar qorunur.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> istifadə etmək üçün "Giriş" icazəsi verməlisiniz ki, uzaqdakı cihazdan daxiletmə bu Mac'a ötürülə bilsin. Bu icazəni vermək üçün aşağıda "<ph name="BUTTON_NAME" />" düyməsinə toxunun. Açılan "Giriş" tərcihləri panelində "<ph name="SERVICE_SCRIPT_NAME" />" yanındakı xananı işarələyin.
diff --git a/remoting/resources/remoting_strings_be.xtb b/remoting/resources/remoting_strings_be.xtb index d1ce9eb..57be212 100644 --- a/remoting/resources/remoting_strings_be.xtb +++ b/remoting/resources/remoting_strings_be.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Каб выкарыстоўваць Аддалены працоўны стол Chrome, трэба дадаць на прыладу Уліковы запіс Google.</translation> <translation id="809687642899217504">Мае камп'ютары</translation> <translation id="8116630183974937060">Памылка сеткі. Праверце, ці падключана прылада да інтэрнэту, і паўтарыце спробу.</translation> -<translation id="8187079423890319756">Аўтарскія правы: стваральнікі Chromium, 2013 Усе правы абароненыя.</translation> <translation id="8295077433896346116">Каб мець магчымасць выкарыстоўваць <ph name="PRODUCT_NAME" /> і каб уведзеныя з аддаленай прылады даныя можна было атрымліваць на гэтай прыладзе Mac, трэба даць дазвол на выкарыстанне спецыяльных магчымасцей. Каб даць гэты дазвол, націсніце ніжэй кнопку "<ph name="BUTTON_NAME" />" і адкрыйце панэль параметраў спецыяльных магчымасцей, затым пастаўце птушку ў полі побач з параметрам "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_bg.xtb b/remoting/resources/remoting_strings_bg.xtb index 50f772c..5584f121 100644 --- a/remoting/resources/remoting_strings_bg.xtb +++ b/remoting/resources/remoting_strings_bg.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">За да използвате отдалечения работен плот на Chrome, ще се наложи да добавите профил в Google към устройството си.</translation> <translation id="809687642899217504">Моите компютри</translation> <translation id="8116630183974937060">Възникна грешка в мрежата. Моля, уверете се, че устройството ви е онлайн, и опитайте отново.</translation> -<translation id="8187079423890319756">Авторски права 2013 Авторите на Chromium. Всички права запазени.</translation> <translation id="8295077433896346116">За да използвате <ph name="PRODUCT_NAME" />, трябва да предоставите разрешение за достъпност, така че командите от отдалеченото устройство да могат да се изпълняват на този Mac. За да направите това, кликнете върху „<ph name="BUTTON_NAME" />“ по-долу. Ще се отвори панелът за предпочитанията за достъпност. Поставете отметка в квадратчето до <ph name="SERVICE_SCRIPT_NAME" />.
diff --git a/remoting/resources/remoting_strings_bn.xtb b/remoting/resources/remoting_strings_bn.xtb index 36969a5..612f635 100644 --- a/remoting/resources/remoting_strings_bn.xtb +++ b/remoting/resources/remoting_strings_bn.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome রিমোট ডেস্কটপ ব্যবহার করার জন্য, আপনাকে আপনার ডিভাইসে একটি Google অ্যাকাউন্ট যোগ করতে হবে৷</translation> <translation id="809687642899217504">আমার কম্পিউটারগুলি</translation> <translation id="8116630183974937060">একটি নেটওয়ার্ক ত্রুটি ঘটেছে৷ আপনার ডিভাইস অন-লাইন আছে কিনা তা পরীক্ষা করে আবার চেষ্টা করুন৷</translation> -<translation id="8187079423890319756">কপিরাইট ২০১৩ Chromium রচয়িতা৷ সর্বস্বত্ত্ব সংরক্ষিত৷</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> ব্যবহার করতে, রিমোট মেশিন থেকে পাঠানো ইনপুট যাতে এই Mac-এ ইনজেক্ট করা যায়, সেই জন্য আপনাকে 'অ্যাক্সেসিবিলিটি'-র অনুমতি দিতে হবে। এই অনুমতি দিতে, নিচে '<ph name="BUTTON_NAME" />' বোতামে ক্লিক করুন। 'অ্যাক্সেসিবিলিটি' অভিরুচির প্যানেল খুলুন এবং '<ph name="SERVICE_SCRIPT_NAME" />'-এর পাশের বক্সে টিকচিহ্ন দিন।
diff --git a/remoting/resources/remoting_strings_bs.xtb b/remoting/resources/remoting_strings_bs.xtb index bec3a31..e2ef6e9 100644 --- a/remoting/resources/remoting_strings_bs.xtb +++ b/remoting/resources/remoting_strings_bs.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Za korištenje Chrome udaljenog računara, morate dodati Google račun na svoj uređaj.</translation> <translation id="809687642899217504">Moji računari</translation> <translation id="8116630183974937060">Došlo je do greške na mreži. Provjerite je li vaš uređaj na mreži i pokušajte ponovo.</translation> -<translation id="8187079423890319756">Autorska prava 2013. Autori Chromiuma. Sva prava zadržana.</translation> <translation id="8295077433896346116">Da koristite <ph name="PRODUCT_NAME" />, morate dati odobrenje za "Pristupačnost" kako bi se unos s udaljenog računara mogao ubaciti na ovaj Mac računar. Za davanje odobrenja, kliknite "<ph name="BUTTON_NAME" />" u nastavku. U oknu s postavkama "Pristupačnost" koje se otvori označite polje pored stavke "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_ca.xtb b/remoting/resources/remoting_strings_ca.xtb index 185937c..30c2fc61 100644 --- a/remoting/resources/remoting_strings_ca.xtb +++ b/remoting/resources/remoting_strings_ca.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Per utilitzar l'escriptori remot de Chrome, haureu d'afegir un compte de Google al dispositiu.</translation> <translation id="809687642899217504">Els meus ordinadors</translation> <translation id="8116630183974937060">S'ha produït un error de la xarxa. Comproveu que el dispositiu estigui en línia i torneu-ho a provar.</translation> -<translation id="8187079423890319756">Copyright 2013 Els autors de Chromium. Tots els drets reservats.</translation> <translation id="8295077433896346116">Per poder utilitzar <ph name="PRODUCT_NAME" />, has de concedir el permís Accessibilitat, que permet inserir dades de l'ordinador remot en aquest Mac. Per concedir el permís, fes clic a <ph name="BUTTON_NAME" /> més avall. Al tauler de preferències Accessibilitat que s'obre, marca la casella corresponent a <ph name="SERVICE_SCRIPT_NAME" />.
diff --git a/remoting/resources/remoting_strings_cs.xtb b/remoting/resources/remoting_strings_cs.xtb index 4b7c0c9..583de19 100644 --- a/remoting/resources/remoting_strings_cs.xtb +++ b/remoting/resources/remoting_strings_cs.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chcete-li používat Vzdálenou plochu Chrome, budete do zařízení muset přidat účet Google.</translation> <translation id="809687642899217504">Mé počítače</translation> <translation id="8116630183974937060">Došlo k chybě sítě. Zkontrolujte prosím, zda je zařízení online a zkuste to znovu.</translation> -<translation id="8187079423890319756">Copyright 2013 Autoři prohlížeče Chromium. Všechna práva vyhrazena.</translation> <translation id="8295077433896346116">Chcete-li používat službu <ph name="PRODUCT_NAME" />, musíte jí udělit oprávnění Přístupnost, aby do tohoto počítače Mac bylo možné vkládat obsah ze vzdáleného počítače. Chcete-li udělit toto oprávnění, klikněte na tlačítko <ph name="BUTTON_NAME" /> níže. Na panelu Přístupnost, který se otevře, pak zaškrtněte políčko vedle položky <ph name="SERVICE_SCRIPT_NAME" />.
diff --git a/remoting/resources/remoting_strings_da.xtb b/remoting/resources/remoting_strings_da.xtb index 53d36ca2..5f2d209 100644 --- a/remoting/resources/remoting_strings_da.xtb +++ b/remoting/resources/remoting_strings_da.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Hvis du vil bruge Chrome Fjernskrivebord, skal du føje en Google-konto til din enhed.</translation> <translation id="809687642899217504">Mine computere</translation> <translation id="8116630183974937060">Der opstod en netværksfejl. Kontrollér, at din enhed er online, og prøv igen.</translation> -<translation id="8187079423890319756">Copyright 2013 Udviklerne af Chromium. Alle rettigheder forbeholdes.</translation> <translation id="8295077433896346116">For at bruge <ph name="PRODUCT_NAME" /> skal du give tilladelsen "Tilgængelighed", så input fra fjerncomputeren kan sendes til denne Mac. Hvis du vil give denne tilladelse, skal du klikke på "<ph name="BUTTON_NAME" />" nedenfor. I ruden med præferencer for "Tilgængelighed", som åbnes, skal du markere afkrydsningsfeltet ud for "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_de.xtb b/remoting/resources/remoting_strings_de.xtb index 64faaf7..90f7cd0 100644 --- a/remoting/resources/remoting_strings_de.xtb +++ b/remoting/resources/remoting_strings_de.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Wenn Sie Chrome Remote Desktop verwenden möchten, fügen Sie ein Google-Konto zu Ihrem Gerät hinzu.</translation> <translation id="809687642899217504">Meine Computer</translation> <translation id="8116630183974937060">Ein Netzwerkfehler ist aufgetreten. Bitte überprüfen Sie, ob das Gerät online ist, und versuchen Sie es erneut.</translation> -<translation id="8187079423890319756">Copyright 2013 Die Chromium-Autoren. Alle Rechte vorbehalten</translation> <translation id="8295077433896346116">Sie müssen eine Berechtigung für die Bedienungshilfen erteilen, um <ph name="PRODUCT_NAME" /> zu verwenden. Erst dann kann dieser Mac über Eingaben vom Remote-Computer gesteuert werden. Klicken Sie zum Erteilen dieser Berechtigung auf "<ph name="BUTTON_NAME" />" unten, um die Einstellungen für die Bedienungshilfen zu öffnen. Klicken Sie dort das Kästchen neben "<ph name="SERVICE_SCRIPT_NAME" />" an.
diff --git a/remoting/resources/remoting_strings_el.xtb b/remoting/resources/remoting_strings_el.xtb index aa2f827..cd40a16 100644 --- a/remoting/resources/remoting_strings_el.xtb +++ b/remoting/resources/remoting_strings_el.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Για να χρησιμοποιήσετε την Απομακρυσμένη επιφάνεια εργασίας Chrome, θα πρέπει να προσθέσετε έναν Λογαριασμό Google στη συσκευή σας.</translation> <translation id="809687642899217504">Οι υπολογιστές μου</translation> <translation id="8116630183974937060">Παρουσιάστηκε σφάλμα δικτύου. Βεβαιωθείτε ότι η συσκευή σας είναι συνδεδεμένη και δοκιμάστε ξανά.</translation> -<translation id="8187079423890319756">Πνευματικά δικαιώματα 2013 Οι συντάκτες του Chromium. Με επιφύλαξη παντός δικαιώματος.</translation> <translation id="8295077433896346116">Για να χρησιμοποιήσετε το <ph name="PRODUCT_NAME" />, θα πρέπει να παραχωρήσετε την άδεια Προσβασιμότητα έτσι ώστε η είσοδος από τον απομακρυσμένο υπολογιστή να μπορεί να εισαχθεί σε αυτόν τον Mac. Για να παραχωρήσετε αυτήν την άδεια, κάντε κλικ στο κουμπί <ph name="BUTTON_NAME" /> παρακάτω. Στο πλαίσιο προτιμήσεων για Προσβασιμότητα που θα εμφανιστεί, επιλέξτε το πλαίσιο δίπλα στο στοιχείο <ph name="SERVICE_SCRIPT_NAME" />.
diff --git a/remoting/resources/remoting_strings_en-GB.xtb b/remoting/resources/remoting_strings_en-GB.xtb index 517841ba6..5d452887 100644 --- a/remoting/resources/remoting_strings_en-GB.xtb +++ b/remoting/resources/remoting_strings_en-GB.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">To use Chrome Remote Desktop, you'll need to add a Google Account to your device.</translation> <translation id="809687642899217504">My Computers</translation> <translation id="8116630183974937060">A network error occurred. Please check that your device is on-line and try again.</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors. All Rights Reserved.</translation> <translation id="8295077433896346116">To use <ph name="PRODUCT_NAME" />, you need to grant the 'Accessibility' permission so that input from the remote machine can be injected on this Mac. To grant this permission, click '<ph name="BUTTON_NAME" />' below. In the 'Accessibility' preferences pane that opens, tick the box next to '<ph name="SERVICE_SCRIPT_NAME" />'.
diff --git a/remoting/resources/remoting_strings_es-419.xtb b/remoting/resources/remoting_strings_es-419.xtb index 91d58e7..ff668bf2 100644 --- a/remoting/resources/remoting_strings_es-419.xtb +++ b/remoting/resources/remoting_strings_es-419.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Para utilizar el escritorio remoto de Chrome, debes agregar una cuenta de Google en el dispositivo.</translation> <translation id="809687642899217504">Mis computadoras</translation> <translation id="8116630183974937060">Se produjo un error de red. Comprueba que el dispositivo esté conectado a Internet y vuelve a intentarlo.</translation> -<translation id="8187079423890319756">Copyright 2013 Los autores de Chromium. Todos los derechos reservados.</translation> <translation id="8295077433896346116">Para usar <ph name="PRODUCT_NAME" />, debes otorgar el permiso de "Accesibilidad", lo que te permitirá aplicar la entrada de la máquina remota en esta Mac. Para otorgarlo, haz clic en "<ph name="BUTTON_NAME" />" que aparece a continuación. En el panel de preferencias de "Accesibilidad" que se abre, marca la casilla junto a "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_es.xtb b/remoting/resources/remoting_strings_es.xtb index 9c23fcd..b835ab1 100644 --- a/remoting/resources/remoting_strings_es.xtb +++ b/remoting/resources/remoting_strings_es.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Para utilizar la aplicación Escritorio Remoto de Chrome, debes añadir una cuenta de Google al dispositivo.</translation> <translation id="809687642899217504">Mis ordenadores</translation> <translation id="8116630183974937060">Se ha producido un error de red. Comprueba que tu dispositivo esté conectado y vuelve a intentarlo.</translation> -<translation id="8187079423890319756">Copyright 2013 Los creadores de Chromium. Todos los derechos reservados.</translation> <translation id="8295077433896346116">Para usar <ph name="PRODUCT_NAME" />, tienes que conceder el permiso de accesibilidad para que se pueda insertar la información del ordenador remoto en este Mac. Para conceder este permiso, haz clic en <ph name="BUTTON_NAME" /> más abajo. En el panel de preferencias Accesibilidad, marca la casilla situada junto a <ph name="SERVICE_SCRIPT_NAME" />.
diff --git a/remoting/resources/remoting_strings_et.xtb b/remoting/resources/remoting_strings_et.xtb index 66154502..d46bc21 100644 --- a/remoting/resources/remoting_strings_et.xtb +++ b/remoting/resources/remoting_strings_et.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome Remote Desktopi kasutamiseks peate lisama seadmele Google'i konto.</translation> <translation id="809687642899217504">Minu arvutid</translation> <translation id="8116630183974937060">Ilmnes võrguviga. Kontrollige, kas seade on võrgus, ja proovige uuesti.</translation> -<translation id="8187079423890319756">Autoriõigus 2013 The Chromium Authors. Kõik õigused kaitstud.</translation> <translation id="8295077433896346116">Teenuse <ph name="PRODUCT_NAME" /> kasutamiseks peate andma juurdepääsufunktsioonide loa, et kaugseadmest saaks sellesse Maci käsklusi sisestada. Selle loa andmiseks klõpsake alloleval nupul „<ph name="BUTTON_NAME" />”. Märkige avaneval eelistuste paanil „Juurdepääsufunktsioonid” ruut teenuse „<ph name="SERVICE_SCRIPT_NAME" />” juures.
diff --git a/remoting/resources/remoting_strings_eu.xtb b/remoting/resources/remoting_strings_eu.xtb index 73cee8b..de933a3 100644 --- a/remoting/resources/remoting_strings_eu.xtb +++ b/remoting/resources/remoting_strings_eu.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome-ren Urruneko pantaila erabili ahal izateko, Google-ko kontu bat gehitu beharko duzu gailuan.</translation> <translation id="809687642899217504">Nire ordenagailuak</translation> <translation id="8116630183974937060">Sareko errore bat gertatu da. Egiaztatu gailua konektatuta daukazula eta saiatu berriro.</translation> -<translation id="8187079423890319756">Copyright 2013, The Chromium Authors. Eskubide guztiak erreserbatuta.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> erabiltzeko, erabilerraztasun-eginbideak atzitzeko baimena eman behar diozu, urruneko gailuko sarrerak Mac honetan aplika daitezen. Baimen hori emateko, sakatu beheko "<ph name="BUTTON_NAME" />" botoia. Erabilerraztasun-eginbideen hobespen-panela irekitzen denean, markatu "<ph name="SERVICE_SCRIPT_NAME" />" elementuaren ondoan dagoen koadroa.
diff --git a/remoting/resources/remoting_strings_fa.xtb b/remoting/resources/remoting_strings_fa.xtb index 2c4a2751..d9251e8 100644 --- a/remoting/resources/remoting_strings_fa.xtb +++ b/remoting/resources/remoting_strings_fa.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">برای استفاده از کنترل رایانه ازراهدور Chrome، باید حساب Google به دستگاهتان اضافه کنید.</translation> <translation id="809687642899217504">رایانههای من</translation> <translation id="8116630183974937060">یک خطای شبکه رخ داده است. لطفاً بررسی کنید که دستگاهتان آنلاین باشد و دوباره امتحان کنید.</translation> -<translation id="8187079423890319756">حق نسخهبرداری ۲۰۱۳ The Chromium Authors. کلیه حقوق محفوظ است.</translation> <translation id="8295077433896346116">برای استفاده از <ph name="PRODUCT_NAME" />، باید اجازه «دسترسپذیری» بدهید تا ورودی از ماشین ازراهدور بتواند به این Mac تزریق شود. برای ارائه این اجازه، روی «<ph name="BUTTON_NAME" />» در زیر کلیک کنید. در قاب «دسترسپذیری» که باز میشود، کادر کنار «<ph name="SERVICE_SCRIPT_NAME" />» را علامت بزنید.
diff --git a/remoting/resources/remoting_strings_fi.xtb b/remoting/resources/remoting_strings_fi.xtb index 530ce15..adabc10 100644 --- a/remoting/resources/remoting_strings_fi.xtb +++ b/remoting/resources/remoting_strings_fi.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Sinun on lisättävä laitteeseesi Google-tili, jotta voit käyttää Chrome-etäkäyttöä.</translation> <translation id="809687642899217504">Omat tietokoneet</translation> <translation id="8116630183974937060">Tapahtui verkkovirhe. Tarkista, että laite on yhdistetty verkkoon, ja yritä uudelleen.</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors. Kaikki oikeudet pidätetään.</translation> <translation id="8295077433896346116">Jos haluat, että <ph name="PRODUCT_NAME" /> on käytettävissä, sinun on myönnettävä Esteettömyys-käyttölupa, jotta etäkoneen syöte voidaan siirtää tälle Macille. Myönnä käyttölupa valitsemalla alta <ph name="BUTTON_NAME" />. Valitse avautuvasta esteettömyyden asetuspaneelista ruutu kohdasta <ph name="SERVICE_SCRIPT_NAME" />.
diff --git a/remoting/resources/remoting_strings_fil.xtb b/remoting/resources/remoting_strings_fil.xtb index bc8e1887..1d6131d 100644 --- a/remoting/resources/remoting_strings_fil.xtb +++ b/remoting/resources/remoting_strings_fil.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Upang magamit ang Chrome Remote Desktop, kakailanganin mong magdagdag ng Google Account sa iyong device.</translation> <translation id="809687642899217504">Aking Mga Computer</translation> <translation id="8116630183974937060">May nangyaring error sa network. Pakitiyak na on-line ang iyong device at subukang muli.</translation> -<translation id="8187079423890319756">Copyright 2013 Ang Mga May-akda ng Chromium. Nakalaan ang Lahat ng Karapatan.</translation> <translation id="8295077433896346116">Para magamit ang <ph name="PRODUCT_NAME" />, kailangan mong ibigay ang pahintulot sa 'Accessibility' para mailagay sa Mac na ito ang input mula sa malayuang machine. Para ibigay ang pahintulot na ito, i-click ang '<ph name="BUTTON_NAME" />' sa ibaba. Sa magbubukas na pane ng mga kagustuhan sa 'Accessibility,' lagyan ng check ang kahon sa tabi ng '<ph name="SERVICE_SCRIPT_NAME" />.'
diff --git a/remoting/resources/remoting_strings_fr-CA.xtb b/remoting/resources/remoting_strings_fr-CA.xtb index 252ee3f..f3bb4a3 100644 --- a/remoting/resources/remoting_strings_fr-CA.xtb +++ b/remoting/resources/remoting_strings_fr-CA.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Pour utiliser Bureau à distance Chrome, vous devez ajouter un compte Google à votre appareil.</translation> <translation id="809687642899217504">Mes ordinateurs</translation> <translation id="8116630183974937060">Une erreur réseau s'est produite. Veuillez vérifier que votre appareil est en ligne, puis réessayer.</translation> -<translation id="8187079423890319756">© 2013 Les auteurs de Chromium. Tous droits réservés.</translation> <translation id="8295077433896346116">Pour utiliser <ph name="PRODUCT_NAME" />, vous devez accorder l'autorisation « Accessibilité » afin que l'entrée de la machine distante puisse être utilisée sur ce Mac. Pour accorder cette autorisation, cliquez sur le bouton « <ph name="BUTTON_NAME" /> » ci-dessous. Dans le volet des préférences « Accessibilité » qui s'ouvre, cochez la case à côté de « <ph name="SERVICE_SCRIPT_NAME" /> ».
diff --git a/remoting/resources/remoting_strings_fr.xtb b/remoting/resources/remoting_strings_fr.xtb index ee7f62f..f3df496b 100644 --- a/remoting/resources/remoting_strings_fr.xtb +++ b/remoting/resources/remoting_strings_fr.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Pour utiliser le bureau à distance Chrome, vous devez ajouter un compte Google à votre appareil.</translation> <translation id="809687642899217504">Mes ordinateurs</translation> <translation id="8116630183974937060">Une erreur réseau s'est produite. Veuillez vérifier que votre appareil est en ligne, puis réessayer.</translation> -<translation id="8187079423890319756">Copyright des auteurs de Chromium 2013. Tous droits réservés.</translation> <translation id="8295077433896346116">Pour utiliser <ph name="PRODUCT_NAME" />, vous devez accorder l'autorisation "Accessibilité" afin que les données de l'appareil distant puissent être injectées sur ce Mac. Pour accorder cette autorisation, cliquez sur "<ph name="BUTTON_NAME" />" ci-dessous. Dans le volet des préférences "Accessibilité" qui s'ouvre, cochez la case "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_gl.xtb b/remoting/resources/remoting_strings_gl.xtb index 654d086..11011d4 100644 --- a/remoting/resources/remoting_strings_gl.xtb +++ b/remoting/resources/remoting_strings_gl.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Para usar a aplicación Escritorio remoto de Chrome, terás que engadir unha conta de Google ao teu dispositivo.</translation> <translation id="809687642899217504">Os meus ordenadores</translation> <translation id="8116630183974937060">Produciuse un erro na rede. Comproba que o teu dispositivo estea en liña e téntao de novo.</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors. Reservados todos os dereitos.</translation> <translation id="8295077433896346116">Se queres utilizar <ph name="PRODUCT_NAME" />, tes que conceder o permiso Accesibilidade para que este Mac poida recibir a entrada do equipo remoto. Para conceder este permiso, fai clic no botón <ph name="BUTTON_NAME" />, situado abaixo. No panel de preferencias Accesibilidade, marca a caixa situada xunto a <ph name="SERVICE_SCRIPT_NAME" />.
diff --git a/remoting/resources/remoting_strings_gu.xtb b/remoting/resources/remoting_strings_gu.xtb index b2840d5a..2432dc83 100644 --- a/remoting/resources/remoting_strings_gu.xtb +++ b/remoting/resources/remoting_strings_gu.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome રીમોટ ડેસ્કટૉપનો ઉપયોગ કરવા માટે, તમારે તમારા ડિવાઇસ પર એક Google એકાઉન્ટ ઉમેરવાની જરૂર છે.</translation> <translation id="809687642899217504">મારા કમ્પ્યુટર્સ</translation> <translation id="8116630183974937060">નેટવર્ક ભૂલ આવી. કૃપા કરીને તપાસો કે તમારું ડિવાઇસ ઓન-લાઇન છે અને ફરી પ્રયાસ કરો.</translation> -<translation id="8187079423890319756">કોપિરાઇટ 2013 The Chromium Authors. સર્વાધિકાર સુરક્ષિત.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" />નો ઉપયોગ કરવા માટે, તમારે 'ઍક્સેસિબિલિટી'ની પરવાનગી આપવી જરૂરી છે, જેથી કરીને આ Mac પર રિમોટ મશીનનું ઇનપુટ દાખલ કરી શકાય. આ પરવાનગી આપવા માટે નીચે '<ph name="BUTTON_NAME" />' બટન પર ક્લિક કરો. 'ઍક્સેસિબિલિટી'ની પસંદગીઓનું જે પૅન ખૂલે છે, '<ph name="SERVICE_SCRIPT_NAME" />'ની એકદમ બાજુમાંના બૉક્સને ચેક કરો.
diff --git a/remoting/resources/remoting_strings_hi.xtb b/remoting/resources/remoting_strings_hi.xtb index a56fdf66..a8e5d55 100644 --- a/remoting/resources/remoting_strings_hi.xtb +++ b/remoting/resources/remoting_strings_hi.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome दूरस्थ डेस्कटॉप का उपयोग करने के लिए, आपको अपने डिवाइस में Google खाता जोड़ना होगा.</translation> <translation id="809687642899217504">मेरे कंप्यूटर</translation> <translation id="8116630183974937060">नेटवर्क में गड़बड़ी हुई. कृपया जाँचें कि आपका डिवाइस ऑन-लाइन है और फिर से कोशिश करें.</translation> -<translation id="8187079423890319756">कॉपीराइट 2013 The Chromium Authors. सर्वाधिकार सुरक्षित.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> इस्तेमाल करने के लिए 'सुलभता' की अनुमति दें, ताकि इस Mac की स्क्रीन पर कहीं और मौजूद मशीन से इनपुट भेजा जा सके. यह अनुमति देने के लिए, नीचे दिए गए '<ph name="BUTTON_NAME" />' पर क्लिक करें. 'सुलभता' की प्राथमिकताओं वाले पैनल में '<ph name="SERVICE_SCRIPT_NAME" />' के आगे बने बॉक्स को चुनें.
diff --git a/remoting/resources/remoting_strings_hr.xtb b/remoting/resources/remoting_strings_hr.xtb index 78b090f..5df97f3 100644 --- a/remoting/resources/remoting_strings_hr.xtb +++ b/remoting/resources/remoting_strings_hr.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Da biste upotrebljavali Udaljenu radnu površinu Chrome, uređaju morate dodati Google račun.</translation> <translation id="809687642899217504">Moja računala</translation> <translation id="8116630183974937060">Došlo je pogreške mreže. Provjerite je li uređaj povezan s mrežom i pokušajte ponovo.</translation> -<translation id="8187079423890319756">Autorska prava 2013. Autori Chromiuma. Sva prava pridržana.</translation> <translation id="8295077433896346116">Za upotrebu usluge <ph name="PRODUCT_NAME" /> trebate dodijeliti dopuštenje za "Pristupačnost" kako bi se unos s daljinskog uređaja mogao dodati na ovaj Mac. Za dodjelu tog dopuštenja kliknite "<ph name="BUTTON_NAME" />" u nastavku. U oknu s postavkama "Pristupačnosti" koje će se otvoriti potvrdite okvir pored stavke "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_hu.xtb b/remoting/resources/remoting_strings_hu.xtb index 7a61fe0f..d88046b 100644 --- a/remoting/resources/remoting_strings_hu.xtb +++ b/remoting/resources/remoting_strings_hu.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">A Chrome távoliasztal-szolgáltatás használatához adjon hozzá eszközéhez egy Google-fiókot.</translation> <translation id="809687642899217504">Saját számítógépek</translation> <translation id="8116630183974937060">Hálózati hiba történt. Ellenőrizze, hogy eszköze online állapotban van-e, majd próbálja újra.</translation> -<translation id="8187079423890319756">Copyright 2013 – A Chromium szerzői. Minden jog fenntartva.</translation> <translation id="8295077433896346116">A <ph name="PRODUCT_NAME" /> használatához meg kell adnia a Kisegítő lehetőségek engedélyt, hogy a távoli gépről érkező bevitel megjelenhessen ezen a Mac típusú eszközön. Az engedély megadásához kattintson az alábbi „<ph name="BUTTON_NAME" />” gombra. Az ekkor megnyíló „Kisegítő lehetőségek” beállításait tartalmazó panelen jelölje be a(z) „<ph name="SERVICE_SCRIPT_NAME" />” melletti négyzetet.
diff --git a/remoting/resources/remoting_strings_hy.xtb b/remoting/resources/remoting_strings_hy.xtb index 00e6fbd..3e128de 100644 --- a/remoting/resources/remoting_strings_hy.xtb +++ b/remoting/resources/remoting_strings_hy.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome Հեռակա աշխատասեղանն օգտագործելու համար դուք պետք է Google հաշիվ ավելացնեք ձեր սարքին:</translation> <translation id="809687642899217504">Իմ համակարգիչները</translation> <translation id="8116630183974937060">Ցանցի սխալ առաջացավ: Համոզվեք, որ սարքը միացած է համացանցին, և նորից փորձեք:</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors: Բոլոր իրավունքները պահպանված են:</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" />ն օգտագործելու համար, դուք պետք է հատուկ գործառույթների թույլտվություն տրամադրեք, որպեսզի այս Mac համակարգչում հնարավոր լինի հեռակա սարքից տվյալներ փոխանցել։ Այս թույլտվությունը տրամադրելու համար սեղմեք «<ph name="BUTTON_NAME" />» կոճակը։ Հատուկ գործառույթների կարգավորման վահանակում նշեք «<ph name="SERVICE_SCRIPT_NAME" />» պարամետրի կողքի վանդակը։
diff --git a/remoting/resources/remoting_strings_id.xtb b/remoting/resources/remoting_strings_id.xtb index def5699..bb47d58 100644 --- a/remoting/resources/remoting_strings_id.xtb +++ b/remoting/resources/remoting_strings_id.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Untuk menggunakan Chrome Desktop Jarak Jauh, Anda perlu menambahkan Akun Google ke perangkat.</translation> <translation id="809687642899217504">Komputer Saya</translation> <translation id="8116630183974937060">Terjadi kesalahan jaringan. Periksa bahwa perangkat Anda online dan coba lagi.</translation> -<translation id="8187079423890319756">Hak Cipta 2013 Pengarang Chromium. Semua Hak Dilindungi Undang-Undang.</translation> <translation id="8295077433896346116">Untuk menggunakan <ph name="PRODUCT_NAME" />, Anda harus memberikan izin ke 'Aksesibilitas' agar input dari perangkat jarak jauh dapat dimasukkan ke Mac ini. Untuk memberikan izin ini, klik '<ph name="BUTTON_NAME" />' di bawah. Di panel preferensi 'Aksesibilitas' yang terbuka, centang kotak di samping '<ph name="SERVICE_SCRIPT_NAME" />'.
diff --git a/remoting/resources/remoting_strings_is.xtb b/remoting/resources/remoting_strings_is.xtb index d58f2b1..6ffb28d 100644 --- a/remoting/resources/remoting_strings_is.xtb +++ b/remoting/resources/remoting_strings_is.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Til að nota fjarstjórnun tölvu í Chrome þarftu að bæta Google reikningi við tækið þitt.</translation> <translation id="809687642899217504">Tölvurnar mínar</translation> <translation id="8116630183974937060">Netvilla kom upp. Gakktu úr skugga um að tækið sé nettengt og reyndu aftur.</translation> -<translation id="8187079423890319756">Höfundarréttur 2013 höfundar Chromium. Allur réttur áskilinn.</translation> <translation id="8295077433896346116">Til að nota <ph name="PRODUCT_NAME" /> þarftu að veita heimildina „Aðgengi“ til að hægt sé að senda inntak úr fjartengdu tölvunni inn í þessa Mac-tölvu. Til að veita þessa heimild skaltu smella á <ph name="BUTTON_NAME" /> hér fyrir neðan. Á stillingasvæðinu „Aðgengi“ sem opnast skaltu merkja í reitinn við hliðina á „<ph name="SERVICE_SCRIPT_NAME" />“.
diff --git a/remoting/resources/remoting_strings_it.xtb b/remoting/resources/remoting_strings_it.xtb index 143b283..e4177465 100644 --- a/remoting/resources/remoting_strings_it.xtb +++ b/remoting/resources/remoting_strings_it.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Per poter utilizzare Chrome Remote Desktop devi aggiungere un Account Google sul dispositivo.</translation> <translation id="809687642899217504">I miei computer</translation> <translation id="8116630183974937060">Si è verificato un errore di rete. Controlla che il dispositivo sia online e riprova.</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors. Tutti i diritti riservati.</translation> <translation id="8295077433896346116">Per poter usare <ph name="PRODUCT_NAME" />, devi concedere l'autorizzazione "Accessibilità" in modo da poter inserire su questo Mac quanto inserito sul computer remoto. Per concedere questa autorizzazione, fai clic su "<ph name="BUTTON_NAME" />" sotto. Nel riquadro delle preferenze "Accessibilità" visualizzato, seleziona la casella "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_iw.xtb b/remoting/resources/remoting_strings_iw.xtb index d3fb3cd..7966d9f 100644 --- a/remoting/resources/remoting_strings_iw.xtb +++ b/remoting/resources/remoting_strings_iw.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">כדי להשתמש ב-Chrome Remote Desktop, עליך להוסיף חשבון Google למכשיר שלך.</translation> <translation id="809687642899217504">המחשבים שלי</translation> <translation id="8116630183974937060">אירעה שגיאת רשת. יש לבדוק שהמכשיר מחובר לרשת ולנסות שוב.</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors. כל הזכויות שמורות.</translation> <translation id="8295077433896346116">כדי להשתמש ב-<ph name="PRODUCT_NAME" />, יש להעניק הרשאת 'נגישות' כדי שניתן יהיה לשלוט במחשב ה-Mac הזה באמצעות קלט מהמחשב המרוחק. כדי להעניק את ההרשאה הזו, יש ללחוץ על '<ph name="BUTTON_NAME" />' למטה. אחרי הלחיצה, תיפתח חלונית לבחירת העדפות. בקטע 'נגישות', יש לסמן את התיבה שלצד '<ph name="SERVICE_SCRIPT_NAME" />'.
diff --git a/remoting/resources/remoting_strings_ja.xtb b/remoting/resources/remoting_strings_ja.xtb index f9be5d76..fc3142a 100644 --- a/remoting/resources/remoting_strings_ja.xtb +++ b/remoting/resources/remoting_strings_ja.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome リモート デスクトップを使用するには、お使いのデバイスに Google アカウントを追加する必要があります。</translation> <translation id="809687642899217504">マイ コンピュータ</translation> <translation id="8116630183974937060">ネットワーク エラーが発生しました。デバイスがインターネットに接続されているか確認して、もう一度お試しください。</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors. All rights reserved.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" />を使用するには、「アクセシビリティ」権限を付与して、リモートマシンからの入力をこの Mac に反映できるようにする必要があります。 この権限を付与するには、下の [<ph name="BUTTON_NAME" />] をクリックして [アクセシビリティ] 設定パネルを開き、[<ph name="SERVICE_SCRIPT_NAME" />] の横にあるチェックボックスをオンにします。
diff --git a/remoting/resources/remoting_strings_ka.xtb b/remoting/resources/remoting_strings_ka.xtb index 5257623..eb640e4 100644 --- a/remoting/resources/remoting_strings_ka.xtb +++ b/remoting/resources/remoting_strings_ka.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome-ის დისტანციური სამუშაო დაფის გამოსაყენებლად საჭიროა დაამატოთ Google ანგარიში ამ მოწყობილობაში.</translation> <translation id="809687642899217504">ჩემი კომპიუტერები</translation> <translation id="8116630183974937060">ქსელის შეცდომა. გთხოვთ გადაამოწმოთ, რომ თქვენი მოწყობილობა არის ონლაინ რეჟიმში და ხელახლა სცადოთ.</translation> -<translation id="8187079423890319756">Copyright 2013 Chromium-ის ავტორები. ყველა უფლება დაცულია.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> რომ გამოიყენოთ, თქვენი მხრიდან საჭიროა „მარტივი წვდომის“ ნებართვის დაშვება, რათა ამ Mac-ზე ინტეგრირდეს დისტანციური მოწყობილობა. აღნიშნული ნებართვის მისანიჭებლად დააწკაპუნეთ ქვემოთ მოცემულ ღილაკზე „<ph name="BUTTON_NAME" />“. „მარტივი წვდომის“ პარამეტრების გახსნილ პანელზე მონიშნეთ „<ph name="SERVICE_SCRIPT_NAME" />“.
diff --git a/remoting/resources/remoting_strings_kk.xtb b/remoting/resources/remoting_strings_kk.xtb index fe52b43..e4fd60b 100644 --- a/remoting/resources/remoting_strings_kk.xtb +++ b/remoting/resources/remoting_strings_kk.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome Remote Desktop пайдалану үшін құрылғыңызға Google есептік жазбасын қосуыңыз қажет.</translation> <translation id="809687642899217504">Компьютерлерім</translation> <translation id="8116630183974937060">Желілік қате орын алды. Құрылғыңыз желіде екендігін тексеріп, әрекетті қайталаңыз.</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors. Барлық құқықтар қорғалған.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> қызметін пайдалану үшін арнайы мүмкіндіктерді пайдалануға рұқсат беруіңіз керек, сонда қашықтағы құрылғыдан енгізілген деректерді осы Mac құрылғысына жіберуге болады. Рұқсат беру үшін төмендегі "<ph name="BUTTON_NAME" />" түймесін басыңыз. "Арнайы мүмкіндіктер" параметрлері панелін ашыңыз және "<ph name="SERVICE_SCRIPT_NAME" />" ұяшығын белгілеңіз.
diff --git a/remoting/resources/remoting_strings_km.xtb b/remoting/resources/remoting_strings_km.xtb index 3b9efe8..a7b69544a 100644 --- a/remoting/resources/remoting_strings_km.xtb +++ b/remoting/resources/remoting_strings_km.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">ដើម្បីប្រើ Chrome Remote Desktop អ្នកត្រូវបន្ថែមគណនី Google ទៅឧបករណ៍របស់អ្នក។</translation> <translation id="809687642899217504">កុំព្យូទ័ររបស់ខ្ញុំ</translation> <translation id="8116630183974937060">កំហុសឆ្គងបណ្តាញបានកើតឡើង។ សូមពិនិត្យថាឧបករណ៍របស់អ្នកនៅលើអ៊ីនធឺណិត ហើយព្យាយាមម្តងទៀត។</translation> -<translation id="8187079423890319756">រក្សាសិទ្ធិគ្រប់យ៉ាងដោយផលិតករ Chromium។ រក្សាសិទ្ធិ 2013។</translation> <translation id="8295077433896346116">ដើម្បីប្រើ <ph name="PRODUCT_NAME" /> អ្នកត្រូវផ្ដល់ការអនុញ្ញាត 'ភាពងាយស្រួល' ដើម្បីអាចបញ្ចូលខ្លឹមសារពីម៉ាស៊ីននៅឆ្ងាយទៅក្នុង Mac នេះ។ ដើម្បីផ្ដល់ការអនុញ្ញាតនេះ សូមចុច '<ph name="BUTTON_NAME" />' ខាងក្រោម។ នៅក្នុងផ្ទាំងចំណូលចិត្ត 'ភាពងាយស្រួល' ដែលបើក សូមធីកប្រអប់នៅជិត '<ph name="SERVICE_SCRIPT_NAME" />'។
diff --git a/remoting/resources/remoting_strings_kn.xtb b/remoting/resources/remoting_strings_kn.xtb index a9f2e824..63919096 100644 --- a/remoting/resources/remoting_strings_kn.xtb +++ b/remoting/resources/remoting_strings_kn.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome ರಿಮೋಟ್ ಡೆಸ್ಕ್ಟಾಪ್ ಬಳಸಲು, ನಿಮ್ಮ ಸಾಧನಕ್ಕೆ Google ಖಾತೆಯನ್ನು ನೀವು ಸೇರಿಸಬೇಕಾಗುತ್ತದೆ.</translation> <translation id="809687642899217504">ನನ್ನ ಕಂಪ್ಯೂಟರ್ಗಳು</translation> <translation id="8116630183974937060">ನೆಟ್ವರ್ಕ್ ದೋಷ ಎದುರಾಗಿದೆ. ನಿಮ್ಮ ಸಾಧನ ಆನ್-ಲೈನ್ನಲ್ಲಿದೆಯೇ ಎಂಬುದನ್ನು ಪರಿಶೀಲಿಸಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation> -<translation id="8187079423890319756">ಹಕ್ಕುಸ್ವಾಮ್ಯ 2013 Chromium ಲೇಖಕರು. ಎಲ್ಲಾ ಹಕ್ಕುಗಳನ್ನು ಕಾಯ್ದಿರಿಸಲಾಗಿದೆ.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> ಅನ್ನು ಬಳಸಲು, ನೀವು 'ಪ್ರವೇಶಿಸುವಿಕೆ' ಅನುಮತಿಯನ್ನು ನೀಡಬೇಕಾಗುತ್ತದೆ. ಇದರಿಂದ ದೂರದ ಸ್ಥಳದಲ್ಲಿರುವ ಮೆಷೀನ್ನಿಂದ ಈ Mac ಸಾಧನದಲ್ಲಿ ಮಾಹಿತಿಯನ್ನು ಸೇರಿಸಬಹುದಾಗಿದೆ. ಈ ಅನುಮತಿಯನ್ನು ನೀಡಲು, ಕೆಳಗೆ '<ph name="BUTTON_NAME" />' ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. 'ಪ್ರವೇಶಿಸುವಿಕೆ' ಆದ್ಯತೆಗಳು ಫಲಕವನ್ನು ತೆರೆಯುವುದಕ್ಕಾಗಿ '<ph name="SERVICE_SCRIPT_NAME" />' ಪಕ್ಕದಲ್ಲಿರುವ ಬಾಕ್ಸ್ನಲ್ಲಿ ಚೆಕ್ ಗುರುತು ಮಾಡಿ.
diff --git a/remoting/resources/remoting_strings_ko.xtb b/remoting/resources/remoting_strings_ko.xtb index 454998d4..401c952 100644 --- a/remoting/resources/remoting_strings_ko.xtb +++ b/remoting/resources/remoting_strings_ko.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome 원격 데스크톱을 사용하려면 기기에 Google 계정을 추가해야 합니다.</translation> <translation id="809687642899217504">내 컴퓨터</translation> <translation id="8116630183974937060">네트워크 오류가 발생했습니다. 기기가 온라인 상태인지 확인하고 다시 시도하세요.</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors. All rights reserved.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" />을(를) 사용하려면 원격 기기에서 입력한 내용이 이 Mac에 삽입될 수 있도록 ‘접근성’ 권한을 부여해야 합니다. 권한을 부여하려면 아래의 ‘<ph name="BUTTON_NAME" />’ 버튼을 클릭합니다. ‘접근성’ 환경설정 창이 열리면 ‘<ph name="SERVICE_SCRIPT_NAME" />’ 옆의 체크박스를 선택하세요.
diff --git a/remoting/resources/remoting_strings_ky.xtb b/remoting/resources/remoting_strings_ky.xtb index 26809594..91bddfe 100644 --- a/remoting/resources/remoting_strings_ky.xtb +++ b/remoting/resources/remoting_strings_ky.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome Алыскы иштактасын колдонуу үчүн, түзмөгүңүзгө Google аккаунтун кошуңуз.</translation> <translation id="809687642899217504">Менин компьютерлерим</translation> <translation id="8116630183974937060">Тармакта ката кетти. Тизмегиңиздин онлайн абалын текшерип, дагы аракет кылып көрүңүз.</translation> -<translation id="8187079423890319756">Автордук укук 2013-ж. Chromium авторлору. Бардык укуктар корголгон.</translation> <translation id="8295077433896346116">"<ph name="PRODUCT_NAME" />" кызматын колдонуу үчүн "Атайын мүмкүнчүлүктөр" уруксатын беришиңиз керек, ошондо алыскы компьютерге маалыматты ушул Mac'тан киргизүүгө болот. Бул уруксатты берүү үчүн төмөндөгү "<ph name="BUTTON_NAME" />" баскычын чыкылдатып, "Атайын мүмкүнчүлүктөр" параметрин ачыңыз да "<ph name="SERVICE_SCRIPT_NAME" />" тушунда жайгашкан кутучаны белгилеңиз.
diff --git a/remoting/resources/remoting_strings_lo.xtb b/remoting/resources/remoting_strings_lo.xtb index c8e30cd..c0431af8 100644 --- a/remoting/resources/remoting_strings_lo.xtb +++ b/remoting/resources/remoting_strings_lo.xtb
@@ -156,7 +156,6 @@ <translation id="8073845705237259513">ເພື່ອໃຊ້ Chrome Remote Desktop, ທ່ານຈໍາເປັນຕ້ອງເພີ່ມບັນຊີ Google ໃສ່ກັບອຸປະກອນຂອງທ່ານ.</translation> <translation id="809687642899217504">ຄອມພິວເຕີຂອງຂ້ອຍ</translation> <translation id="8116630183974937060">ເກີດຄວາມຜິດພາດຂອງເຄືອຂ່າຍ. ກະລຸນາກວດເບິ່ງວ່າ ເຄື່ອງຂອງທ່ານອອນລາຍນ໌ແລ້ວບໍ່ ແລະລອງໃໝ່ອີກ.</translation> -<translation id="8187079423890319756">ລິຂະສິດ 2013 ຜູ້ຂຽນ Chromium. ສະຫງວນສິດທັງໝົດ.</translation> <translation id="8295077433896346116">ເພື່ອໃຊ້ <ph name="PRODUCT_NAME" />, ທ່ານຈຳເປັນຕ້ອງໃຫ້ການອະນຸຍາດ 'ການຊ່ວຍເຂົ້າເຖິງ' ເພື່ອໃຫ້ອິນພຸດຈາກເຄື່ອງທາງໄກສົ່ງເຖິງ Mac ນີ້ໄດ້. ເພື່ອໃຫ້ການອະນຸຍາດ, ກະລຸນາຄລິກ '<ph name="BUTTON_NAME" />' ຂ້າງລຸ່ມ. ໃນແຖບການຕັ້ງຄ່າ 'ການຊ່ວຍເຂົ້າເຖິງ' ທີ່ເປີດຢູ່, ກະລຸນາໝາຍເອົາກ່ອງຢູ່ໜ້າ '<ph name="SERVICE_SCRIPT_NAME" />'.
diff --git a/remoting/resources/remoting_strings_lt.xtb b/remoting/resources/remoting_strings_lt.xtb index f3bbc6b..a7b45f85 100644 --- a/remoting/resources/remoting_strings_lt.xtb +++ b/remoting/resources/remoting_strings_lt.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Jei norite naudoti „Chrome“ nuotolinį kompiuterio valdymą, įrenginyje turite pridėti „Google“ paskyrą.</translation> <translation id="809687642899217504">Mano kompiuteriai</translation> <translation id="8116630183974937060">Įvyko tinklo klaida. Patikrinkite, ar įrenginys prijungtas, ir bandykite dar kartą.</translation> -<translation id="8187079423890319756">Autorių teisės priklauso „Chromium“ autoriams, 2013 m. Visos teisės saugomos.</translation> <translation id="8295077433896346116">Kad galėtumėte naudoti „<ph name="PRODUCT_NAME" />“, turite suteikti pasiekiamumo leidimą, kad įvestis iš nuotolinio įrenginio galėtų būti įvesta šiame „Mac“. Jei norite suteikti šį leidimą, toliau spustelėję „<ph name="BUTTON_NAME" />“ atidarykite pasiekiamumo nuostatų sritį ir pažymėkite laukelį šalia parinkties „<ph name="SERVICE_SCRIPT_NAME" />“.
diff --git a/remoting/resources/remoting_strings_lv.xtb b/remoting/resources/remoting_strings_lv.xtb index 707a242..9619c517 100644 --- a/remoting/resources/remoting_strings_lv.xtb +++ b/remoting/resources/remoting_strings_lv.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Lai izmantotu Chrome attālo darbvirsmu, jums ir jāpievieno savā ierīcē Google konts.</translation> <translation id="809687642899217504">Mani datori</translation> <translation id="8116630183974937060">Radās tīkla kļūda. Lūdzu, pārbaudiet, vai ierīcē ir izveidots savienojumus, un mēģiniet vēlreiz.</translation> -<translation id="8187079423890319756">Autortiesības 2013 Chromium autori. Visas tiesības paturētas.</translation> <translation id="8295077433896346116">Ja vēlaties izmantot <ph name="PRODUCT_NAME" />, jums ir jāpiešķir pieejamības atļauja, lai šajā Mac datorā varētu izmantot ievadi no attālā datora. Lai piešķirtu šo atļauju, tālāk noklikšķiniet uz pogas <ph name="BUTTON_NAME" /> un atvērtajā preferenču rūtī “Pieejamība” atzīmējiet izvēles rūtiņu blakus vienumam “<ph name="SERVICE_SCRIPT_NAME" />”.
diff --git a/remoting/resources/remoting_strings_mk.xtb b/remoting/resources/remoting_strings_mk.xtb index 6518d6b..fd2ce69d 100644 --- a/remoting/resources/remoting_strings_mk.xtb +++ b/remoting/resources/remoting_strings_mk.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">За да користите Chrome Remote Desktop, треба да додадете сметка на Google на вашиот уред.</translation> <translation id="809687642899217504">Мои компјутери</translation> <translation id="8116630183974937060">Настана мрежна грешка. Проверете дали уредот е на линија и обидете се повторно.</translation> -<translation id="8187079423890319756">Авторски права 2013 на Авторите на Chromium. Сите права се зачувани.</translation> <translation id="8295077433896346116">За да користите <ph name="PRODUCT_NAME" />, треба да доделите дозвола за „Пристапност“, па влезните сигнали од оддалечениот уред ќе може да се вметнуваат во овој Mac. За да ја доделите дозволава, кликнете на „<ph name="BUTTON_NAME" />“ подолу. Во окното со поставките за „Пристапност“ што ќе се отвори, изберете го полето веднаш до „<ph name="SERVICE_SCRIPT_NAME" />“.
diff --git a/remoting/resources/remoting_strings_ml.xtb b/remoting/resources/remoting_strings_ml.xtb index 417ed3df..da34162a 100644 --- a/remoting/resources/remoting_strings_ml.xtb +++ b/remoting/resources/remoting_strings_ml.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome വിദൂര ഡെസ്ക്ടോപ്പ് ഉപയോഗിക്കുമ്പോൾ, നിങ്ങളുടെ ഉപകരണത്തിൽ ഒരു Google അക്കൗണ്ട് ചേർക്കേണ്ടതായിവരും.</translation> <translation id="809687642899217504">എന്റെ കമ്പ്യൂട്ടറുകൾ</translation> <translation id="8116630183974937060">ഒരു നെറ്റ്വർക്ക് പിശക് ഉണ്ടായി. നിങ്ങളുടെ ഉപകരണം ഓൺലൈനിലാണോ എന്ന് പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക.</translation> -<translation id="8187079423890319756">പകർപ്പവകാശം 2013 Chromium രചയിതാക്കൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> ഉപയോഗിക്കാൻ 'ഉപയോഗസഹായി' അനുമതി നൽകേണ്ടതുണ്ട്, എങ്കിൽ മാത്രമേ റിമോട്ട് മെഷീനിൽ നിന്നുള്ള ഇൻപുട്ട് ഈ Mac-ലേക്ക് നൽകാനാകൂ. ഈ അനുമതി നൽകാൻ, താഴെയുള്ള '<ph name="BUTTON_NAME" />' ക്ലിക്ക് ചെയ്യുക. അപ്പോൾ തുറക്കുന്ന 'ഉപയോഗസഹായി' മുൻഗണനകൾ പെയിനിൽ '<ph name="SERVICE_SCRIPT_NAME" />' എന്നതിന് അടുത്തുള്ള ബോക്സിൽ ചെക്ക് മാർക്കിടുക.
diff --git a/remoting/resources/remoting_strings_mn.xtb b/remoting/resources/remoting_strings_mn.xtb index f7c21c5..bd0b5141 100644 --- a/remoting/resources/remoting_strings_mn.xtb +++ b/remoting/resources/remoting_strings_mn.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome-ын Алсын Зайнаас Хянах Дэлгэцийг ашиглахын тулд та төхөөрөмждөө Google Account-аа нэмж оруулах хэрэгтэй болно.</translation> <translation id="809687642899217504">Миний компьютер</translation> <translation id="8116630183974937060">Сүлжээний алдаа гарлаа. Төхөөрөмжөө онлайн байгаа эсэхийг нягтлаад дахин оролдоно уу.</translation> -<translation id="8187079423890319756">Зохиогчийн эрх 2013 Chromium Authors. Бүх эрхийг хуулиар хамгаалсан.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" />-г ашиглахын тулд та 'Хандалтын' зөвшөөрлийг oлгох ёстой бөгөөд ингэснээр алсын машины оролтыг энэ Mac руу оруулах боломжтой болно. Энэ зөвшөөрлийг олгохын тулд доор байгаа '<ph name="BUTTON_NAME" />' дээр товшино уу. Нээгдэх 'Хандалтын' тохиргооны самбар дээр '<ph name="SERVICE_SCRIPT_NAME" />'-н хажууд байрлах нүдийг тэмдэглэнэ үү.
diff --git a/remoting/resources/remoting_strings_mr.xtb b/remoting/resources/remoting_strings_mr.xtb index a4a007ef..9f94b34 100644 --- a/remoting/resources/remoting_strings_mr.xtb +++ b/remoting/resources/remoting_strings_mr.xtb
@@ -154,7 +154,6 @@ <translation id="8073845705237259513">Chrome रिमोट डेस्कटॉप वापरण्यासाठी, तुम्हाला आपल्या डिव्हाइसमध्ये एक Google खाते जोडणे आवश्यक असेल.</translation> <translation id="809687642899217504">माझे कॉंप्युटर</translation> <translation id="8116630183974937060">नेटवर्क एरर आली. कृपया तुमचा डिव्हाइस ऑन लाइन असल्याचे पहा आणि पुन्हा प्रयत्न करा.</translation> -<translation id="8187079423890319756">Copyright 2013 Chromium लेखक. सर्व हक्क राखीव.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> वापरण्यासाठी तुम्हाला 'अॅक्सेसिबिलिटी' परवानगी द्यावी लागेल, जेणेकरून रिमोट मशीनवरील इनपुट या Mac वर इंजेक्ट करता येईल. ही परवानगी देण्यासाठी, खालील '<ph name="BUTTON_NAME" />' वर क्लिक करा. उघडलेल्या 'अॅक्सेसिबिलिटी' प्राधान्ये पेनमध्ये, '<ph name="SERVICE_SCRIPT_NAME" />' च्या बाजूच्या बॉक्समध्ये खूण करा.
diff --git a/remoting/resources/remoting_strings_ms.xtb b/remoting/resources/remoting_strings_ms.xtb index 85ae790..3115358 100644 --- a/remoting/resources/remoting_strings_ms.xtb +++ b/remoting/resources/remoting_strings_ms.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Untuk menggunakan Desktop Jauh Chrome, anda perlu menambahkan Akaun Google kepada peranti anda.</translation> <translation id="809687642899217504">Komputer Saya</translation> <translation id="8116630183974937060">Ralat rangkaian berlaku. Sila pastikan peranti anda berada dalam talian dan cuba lagi.</translation> -<translation id="8187079423890319756">Hak Cipta 2013 Pengarang Chromium. Hak Cipta Terpelihara.</translation> <translation id="8295077433896346116">Untuk menggunakan <ph name="PRODUCT_NAME" />, anda perlu memberi 'Kebolehaksesan' kebenaran supaya input daripada mesin jauh boleh disuntik pada Mac ini. Untuk memberikan kebenaran ini, klik '<ph name="BUTTON_NAME" />' di bawah. Dalam anak tetingkap pilihan 'Kebolehaksesan' yang dibuka, tandai kotak di sebelah '<ph name="SERVICE_SCRIPT_NAME" />'.
diff --git a/remoting/resources/remoting_strings_my.xtb b/remoting/resources/remoting_strings_my.xtb index a91896d..5b090793 100644 --- a/remoting/resources/remoting_strings_my.xtb +++ b/remoting/resources/remoting_strings_my.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome အဝေးထိန်း ဒက်စ်တော့ကို အသုံးပြုရန်၊ သင်သည် သင့် အကောင့် အတွက် Google အကောင့် လိုအပ်မည်။</translation> <translation id="809687642899217504">ကျွန်ုပ်၏ကွန်ပျူတာများ</translation> <translation id="8116630183974937060">ကွန်ရက် အမှားယွင်း ရှိနေပါသည်။ သင့်စက်သည် အင်တာနက် ဆက်သွယ်မှုရှိမရှိ စစ်ဆေးပြီး တစ်ကြိမ်ထပ်ကြိုးစားပေးပါ။</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium ပြုစုသူများ။ မူပိုင်ခွင့်များ အားလုံးကို ချုပ်ထိန်းထားသည်။</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> အသုံးပြုရန် 'အများသုံးစွဲနိုင်မှု' ခွင့်ပြုချက်ကို ပေးရပါမည်၊ သို့မှသာ အဝေးထိန်းစက်မှ ပေးပို့မှုကို ဤ Mac ပေါ်တွင် ထည့်သွင်းနိုင်ပါမည်။ ဤခွင့်ပြုချက်ကို ပေးရန် အောက်ရှိ '<ph name="BUTTON_NAME" />' ကိုနှိပ်ပါ။ ပွင့်လာသော 'အများသုံးစွဲနိုင်မှု' သတ်မှတ်ချက်များအကန့်တွင် '<ph name="SERVICE_SCRIPT_NAME" />' ဘေးရှိ အကွက်ကို အမှန်ခြစ်ပါ။
diff --git a/remoting/resources/remoting_strings_ne.xtb b/remoting/resources/remoting_strings_ne.xtb index 2e8e84d..3bfe950 100644 --- a/remoting/resources/remoting_strings_ne.xtb +++ b/remoting/resources/remoting_strings_ne.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome दूर डेस्कटप प्रयोग गर्नको लागि, तपाइँले तपाइँको यन्त्रमा एउटा Google खाता थप्न आवश्यक छ।</translation> <translation id="809687642899217504">मेरा कम्प्युटरहरू</translation> <translation id="8116630183974937060">नेटवर्क त्रुटि देखापर्यो । कृपया तपाईंको उपकरण अनलाईनमा भएको जाँच गरी पुनः प्रयास गर्नुहोस् ।</translation> -<translation id="8187079423890319756">प्रतिलिपि अधिकार 2013 Chromium लेखकहरू। सर्वाधिकार सुरक्षित।</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> प्रयोग गर्न, दूरवर्ती यन्त्रको इनपुट यस Mac मा प्रवेश गराउन सकियोस् भन्नाका खातिर तपाईंले 'पहुँच' सम्बन्धी अनुमति दिनु पर्ने हुन्छ। यो अनुमति दिन, तलको '<ph name="BUTTON_NAME" />' नामक बटनमा क्लिक गर्नुहोस्। त्यसपछि खुल्ने 'पहुँच' सम्बन्धी प्राथमिकताहरूको पेनमा '<ph name="SERVICE_SCRIPT_NAME" />' को छेउमा रहेको बाकसमा चिन्ह लगाउनुहोस्।'
diff --git a/remoting/resources/remoting_strings_nl.xtb b/remoting/resources/remoting_strings_nl.xtb index 241e7040..d29d79c 100644 --- a/remoting/resources/remoting_strings_nl.xtb +++ b/remoting/resources/remoting_strings_nl.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Als je Chrome Remote Desktop wilt gebruiken, moet je een Google-account aan je apparaat toevoegen.</translation> <translation id="809687642899217504">Mijn computers</translation> <translation id="8116630183974937060">Er is een netwerkfout opgetreden. Controleer of je apparaat online is en probeer het opnieuw.</translation> -<translation id="8187079423890319756">Copyright 2013 De auteurs van Chromium. Alle rechten voorbehouden.</translation> <translation id="8295077433896346116">Als je <ph name="PRODUCT_NAME" /> wilt gebruiken, moet je toegangsrechten verlenen, zodat de invoer van dat externe systeem op deze Mac kan worden ingevoegd. Als je dit recht wilt verlenen, klik je hieronder op '<ph name="BUTTON_NAME" />' om het voorkeurenvenster voor toegankelijkheid te openen. Vink daarna '<ph name="SERVICE_SCRIPT_NAME" />' aan.
diff --git a/remoting/resources/remoting_strings_no.xtb b/remoting/resources/remoting_strings_no.xtb index bdb7740..f4fbcf9 100644 --- a/remoting/resources/remoting_strings_no.xtb +++ b/remoting/resources/remoting_strings_no.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Hvis du vil bruke Chrome Eksternt skrivebord, må du legge til en Google-konto på enheten din.</translation> <translation id="809687642899217504">Mine datamaskiner</translation> <translation id="8116630183974937060">Det oppsto en nettverksfeil. Kontrollér at enheten er tilkoblet nettet, og prøv på nytt.</translation> -<translation id="8187079423890319756">Copyright 2013 – The Chromium Authors. Med enerett.</translation> <translation id="8295077433896346116">For å bruke <ph name="PRODUCT_NAME" /> må du innvilge «Tilgjengelighet»-tillatelsen, slik at inndata fra den eksterne maskinen kan sendes til denne Macen. For å innvilge denne tillatelsen, klikk på «<ph name="BUTTON_NAME" />» under. I innstillingsfeltet for «Tilgjengelighet» som åpnes, merker du av i boksen ved siden av «<ph name="SERVICE_SCRIPT_NAME" />».
diff --git a/remoting/resources/remoting_strings_or.xtb b/remoting/resources/remoting_strings_or.xtb index 777de39..fdc31a7d 100644 --- a/remoting/resources/remoting_strings_or.xtb +++ b/remoting/resources/remoting_strings_or.xtb
@@ -154,7 +154,6 @@ <translation id="8073845705237259513">Chrome ରିମୋଟ୍ ଡେସ୍କଟପ୍ ବ୍ୟବହାର କରିବାକୁ, ଆପଣଙ୍କୁ ଆପଣଙ୍କର ଡିଭାଇସ୍ରେ ଏକ Google ଆକାଉଣ୍ଟ ଯୋଗକରିବା ଆବଶ୍ୟକ ହେବ।</translation> <translation id="809687642899217504">ମୋର କମ୍ପ୍ୟୁଟର୍ଗୁଡ଼ିକ</translation> <translation id="8116630183974937060">ନେଟ୍ୱର୍କରେ ଏକ ତ୍ରୁଟି ଦେଖାଗଲା। ଦୟାକରି ଆପଣଙ୍କର ଡିଭାଇସ୍ ଅନ୍ଲାଇନ୍ ଥିବା ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> -<translation id="8187079423890319756">କପିରାଇଟ୍ 2013 Chromium ପ୍ରବନ୍ଧକ। ସମସ୍ତ ଅଧିକାର ସଂରକ୍ଷିତ।</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" />କୁ ବ୍ୟବହାର କରିବା ପାଇଁ ଆପଣଙ୍କୁ ’ଆକ୍ସେସିବିଲିଟୀ’ ଅନୁମତି ଦେବା ଦରକାର ଯାହା ଦ୍ୱାରା ଏହି Macରେ ରିମୋଟ୍ ମେସିନରୁ ଇନପୁଟ୍ ଦିଆଯାଇ ପାରିବ। ଏହି ଅନୁମତିକୁ ମଞ୍ଜୁର କରିବା ପାଇଁ, ନିମ୍ନରେ ଥିବା <ph name="BUTTON_NAME" />ରେ କ୍ଲିକ୍ କରନ୍ତୁ। 'ଆକ୍ସେସିବିଲିଟୀ' ପସନ୍ଦ ପେନ୍ ଖୋଲିବା ପରେ <ph name="SERVICE_SCRIPT_NAME" /> ପାଖରେ ଥିବା ବାକ୍ସରେ ଚେକ୍ କରନ୍ତୁ।
diff --git a/remoting/resources/remoting_strings_pa.xtb b/remoting/resources/remoting_strings_pa.xtb index 49206d7f..f914c851 100644 --- a/remoting/resources/remoting_strings_pa.xtb +++ b/remoting/resources/remoting_strings_pa.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome ਰਿਮੋਟ ਡੈਸਕਟਾਪ ਵਰਤਣ ਲਈ, ਤੁਹਾਨੂੰ ਆਪਣੇ ਡੀਵਾਈਸ 'ਤੇ ਕੋਈ Google ਖਾਤਾ ਸ਼ਾਮਲ ਕਰਨਾ ਪਵੇਗਾ।</translation> <translation id="809687642899217504">ਮੇਰੇ ਕੰਪਿਊਟਰ</translation> <translation id="8116630183974937060">ਇੱਕ ਨੈੱਟਵਰਕ ਗੜਬੜ ਹੋਈ। ਕਿਰਪਾ ਕਰਕੇ ਜਾਂਚ ਕਰੋ ਕਿ ਤੁਹਾਡੀ ਡੀਵਾਈਸ ਆਨ-ਲਾਈਨ ਹੈ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> -<translation id="8187079423890319756">ਕਾਪੀਰਾਈਟ 2013 The Chromium Authors. ਸਾਰੇ ਹੱਕ ਰਾਖਵੇਂ ਹਨ।</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> ਨੂੰ ਵਰਤਣ ਲਈ, ਤੁਹਾਨੂੰ 'ਪਹੁੰਚਯੋਗਤਾ' ਇਜਾਜ਼ਤ ਦੇਣ ਦੀ ਲੋੜ ਹੈ ਤਾਂ ਜੋ ਦੂਰ-ਦੁਰਾਡੇ ਦੀ ਮਸ਼ੀਨ ਤੋਂ ਇਨਪੁੱਟ ਨੂੰ ਇਸ Mac 'ਤੇ ਪਾਇਆ ਜਾ ਸਕੇ। ਇਹ ਇਜਾਜ਼ਤ ਦੇਣ ਲਈ, ਹੇਠਾਂ '<ph name="BUTTON_NAME" />' ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ। ਖੁੱਲ੍ਹਣ ਵਾਲੇ 'ਪਹੁੰਚਯੋਗਤਾ' ਤਰਜੀਹਾਂ ਪੇਨ ਵਿੱਚ '<ph name="SERVICE_SCRIPT_NAME" />' ਦੇ ਨਾਲ ਵਾਲੇ ਬਾਕਸ ਵਿੱਚ ਨਿਸ਼ਾਨ ਲਗਾਓ।
diff --git a/remoting/resources/remoting_strings_pl.xtb b/remoting/resources/remoting_strings_pl.xtb index ed8621c..97822c68 100644 --- a/remoting/resources/remoting_strings_pl.xtb +++ b/remoting/resources/remoting_strings_pl.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Aby użyć Pulpitu zdalnego Chrome, musisz dodać do urządzenia konto Google.</translation> <translation id="809687642899217504">Moje komputery</translation> <translation id="8116630183974937060">Wystąpił błąd sieci. Sprawdź, czy urządzenie jest online, i spróbuj jeszcze raz.</translation> -<translation id="8187079423890319756">Copyright 2013 Autorzy Chromium. Wszelkie prawa zastrzeżone.</translation> <translation id="8295077433896346116">Aby korzystać z usługi <ph name="PRODUCT_NAME" />, musisz przyznać uprawnienie „Ułatwienia dostępu”. Umożliwi to przesyłanie danych wejściowych z komputera zdalnego na tego Maca. Kliknij przycisk „<ph name="BUTTON_NAME" />” poniżej, by otworzyć okienko ustawień „Ułatwienia dostępu”, a potem zaznacz pole obok opcji „<ph name="SERVICE_SCRIPT_NAME" />”.
diff --git a/remoting/resources/remoting_strings_pt-BR.xtb b/remoting/resources/remoting_strings_pt-BR.xtb index d796f54..59970a5a 100644 --- a/remoting/resources/remoting_strings_pt-BR.xtb +++ b/remoting/resources/remoting_strings_pt-BR.xtb
@@ -65,7 +65,7 @@ <translation id="4145029455188493639">Conectado como <ph name="EMAIL_ADDRESS" />.</translation> <translation id="4155497795971509630">Alguns componentes obrigatórios não foram encontrados. Certifique-se de que você esteja executando a última versão do software e tente novamente.</translation> <translation id="4176825807642096119">Código de acesso</translation> -<translation id="4227991223508142681">Utilitário de aprovisionamento de host</translation> +<translation id="4227991223508142681">Utilitário de provisionamento de host</translation> <translation id="4240294130679914010">Desinstalador do host do Chromoting</translation> <translation id="4277736576214464567">Código de acesso inválido. Tente novamente.</translation> <translation id="4281844954008187215">Termos de Serviço</translation> @@ -155,7 +155,6 @@ <translation id="8073845705237259513">Para usar a Área de trabalho remota do Google, adicione uma Conta do Google a seu dispositivo.</translation> <translation id="809687642899217504">Meus computadores</translation> <translation id="8116630183974937060">Ocorreu um erro de rede. Verifique se o dispositivo está on-line e tente novamente.</translation> -<translation id="8187079423890319756">Copyright 2013 Autores do Chromium. Todos os direitos reservados.</translation> <translation id="8295077433896346116">Para usar a <ph name="PRODUCT_NAME" />, você precisa conceder a permissão "Acessibilidade". Assim, a entrada da máquina remota será injetada neste Mac. Clique em "<ph name="BUTTON_NAME" />" abaixo. No painel de preferências "Acessibilidade", marque a caixa ao lado de "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_pt-PT.xtb b/remoting/resources/remoting_strings_pt-PT.xtb index 89248e9..ae30825 100644 --- a/remoting/resources/remoting_strings_pt-PT.xtb +++ b/remoting/resources/remoting_strings_pt-PT.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Para utilizar o Ambiente de Trabalho Remoto do Chrome, tem de adicionar uma Conta Google ao seu dispositivo.</translation> <translation id="809687642899217504">Os Meus Computadores</translation> <translation id="8116630183974937060">Ocorreu um erro de rede. Verifique se o dispositivo está online e tente novamente.</translation> -<translation id="8187079423890319756">Copyright 2013 Os Autores do Chromium. Todos os Direitos Reservados.</translation> <translation id="8295077433896346116">Para utilizar o <ph name="PRODUCT_NAME" />, tem de conceder a autorização "Acessibilidade" para que a entrada do computador remoto possa ser inserida neste Mac. Para conceder esta autorização, clique em "<ph name="BUTTON_NAME" />" abaixo. No painel de preferências "Acessibilidade" aberto, selecione a caixa junto a "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_ro.xtb b/remoting/resources/remoting_strings_ro.xtb index 44a43fc..1787d1d 100644 --- a/remoting/resources/remoting_strings_ro.xtb +++ b/remoting/resources/remoting_strings_ro.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Pentru a folosi Desktop la distanță Chrome, va trebui să adăugați un Cont Google pe dispozitiv.</translation> <translation id="809687642899217504">Computerele mele</translation> <translation id="8116630183974937060">A apărut o eroare de rețea. Verificați dacă dispozitivul este online și încercați din nou.</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors. Toate drepturile rezervate.</translation> <translation id="8295077433896346116">Ca să folosești <ph name="PRODUCT_NAME" />, trebuie să acorzi permisiunea „Accesibilitate”, astfel încât intrările de la dispozitivul la distanță să poată fi introduse pe acest computer Mac. Ca să acorzi această permisiune, dă clic pe butonul „<ph name="BUTTON_NAME" />” de mai jos. În panoul de preferințe pentru „Accesibilitate” care se deschide, bifează caseta de lângă „<ph name="SERVICE_SCRIPT_NAME" />”.
diff --git a/remoting/resources/remoting_strings_ru.xtb b/remoting/resources/remoting_strings_ru.xtb index 0dcc84d..1138de3 100644 --- a/remoting/resources/remoting_strings_ru.xtb +++ b/remoting/resources/remoting_strings_ru.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Чтобы использовать Удаленный рабочий стол Chrome, необходимо добавить на устройство аккаунт Google.</translation> <translation id="809687642899217504">Мои компьютеры</translation> <translation id="8116630183974937060">Ошибка подключения. Проверьте соединение с Интернетом и повторите попытку.</translation> -<translation id="8187079423890319756">© The Chromium Authors, 2013. Все права защищены.</translation> <translation id="8295077433896346116">Расширению "<ph name="PRODUCT_NAME" />" требуется доступ к специальным возможностям, чтобы передавать на устройство Mac данные, введенные на удаленном компьютере. Чтобы предоставить доступ, нажмите кнопку "<ph name="BUTTON_NAME" />" ниже. На открывшейся панели с настройками специальных возможностей установите флажок рядом с параметром "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_si.xtb b/remoting/resources/remoting_strings_si.xtb index 98ef3d9d..6c32395 100644 --- a/remoting/resources/remoting_strings_si.xtb +++ b/remoting/resources/remoting_strings_si.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome Remote Desktop භාවිතා කිරීමට, ඔබ ඔබේ උපාංගයට Google Account එක් කළ යුතුය.</translation> <translation id="809687642899217504">මගේ පරිගණක</translation> <translation id="8116630183974937060">ජාල දෝශයක් ඇති විය. කරුණාකර ඔබේ උපාංගය මාර්ගගත දැයි විමසා නැවත උත්සහ කරන්න.</translation> -<translation id="8187079423890319756">ප්රකාශන හිමිකම 2013 The Chromium Authors. සියලුම හිමිකම් ඇවිරිණි.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> භාවිත කිරීමට, ඔබට 'ප්රවේශ්යතා' අවසර දීමට අවශ්ය වෙයි, එවිට දුරස්ථ යන්ත්රයෙන් ලැබෙන ආදාන මෙම Mac මත එන්නත් කරනු ලැබිය හැක. මෙම අවසරය දීමට, 'ප්රවේශ්යතා' මනාප කවුළුව විවෘත කරන පහත '<ph name="BUTTON_NAME" />' ක්ලික් කරන්න, පසුව '<ph name="SERVICE_SCRIPT_NAME" />' ළඟ ඇති කොටුව ලකුණු කරන්න.
diff --git a/remoting/resources/remoting_strings_sk.xtb b/remoting/resources/remoting_strings_sk.xtb index 1696db4..a96fab4 100644 --- a/remoting/resources/remoting_strings_sk.xtb +++ b/remoting/resources/remoting_strings_sk.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Ak chcete používať aplikáciu Vzdialená plocha Chrome, musíte si na zariadení pridať účet Google.</translation> <translation id="809687642899217504">Moje počítače</translation> <translation id="8116630183974937060">Vyskytla sa chyba siete. Uistite sa, že je vaše zariadenie online a skúste to znova.</translation> -<translation id="8187079423890319756">Copyright 2013 Autori Chromium. Všetky práva vyhradené.</translation> <translation id="8295077433896346116">Ak chcete používať <ph name="PRODUCT_NAME" />, musíte povoliť prístup, aby bolo možné vstup zo vzdialeného zariadenia vkladať v tomto Macu. Toto povolenie udelíte tak, že kliknutím na <ph name="BUTTON_NAME" /> nižšie otvoríte panel predvolieb Dostupnosť a začiarknete políčko <ph name="SERVICE_SCRIPT_NAME" />.
diff --git a/remoting/resources/remoting_strings_sl.xtb b/remoting/resources/remoting_strings_sl.xtb index 566ce3cce..9e78534 100644 --- a/remoting/resources/remoting_strings_sl.xtb +++ b/remoting/resources/remoting_strings_sl.xtb
@@ -140,7 +140,6 @@ <translation id="8073845705237259513">Če želite uporabljati Oddaljeno namizje za Chrome, morate v napravo dodati Google Račun.</translation> <translation id="809687642899217504">Moji računalniki</translation> <translation id="8116630183974937060">Omrežna napaka. Preverite, ali je naprava dosegljiva in poskusite znova.</translation> -<translation id="8187079423890319756">Copyright 2013 Ustvarjalci Chromiuma. Vse pravice pridržane.</translation> <translation id="8295077433896346116">Če želite uporabljati izdelek <ph name="PRODUCT_NAME" />, morate odobriti dovoljenje »Dostopnost«, da bo mogoče v tem Macu vstavljati vnose iz oddaljenega računalnika. Če želite odobriti to dovoljenje, spodaj kliknite »<ph name="BUTTON_NAME" />«. V podoknu z nastavitvami možnosti »Dostopnost« označite polje zraven »<ph name="SERVICE_SCRIPT_NAME" />«.
diff --git a/remoting/resources/remoting_strings_sq.xtb b/remoting/resources/remoting_strings_sq.xtb index d1307eb..5c2e30b 100644 --- a/remoting/resources/remoting_strings_sq.xtb +++ b/remoting/resources/remoting_strings_sq.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Për të përdorur "Desktopin në distancë" të Chrome, duhet të shtosh një llogari të Google në pajisjen tënde.</translation> <translation id="809687642899217504">Kompjuterët e mi</translation> <translation id="8116630183974937060">Ndodhi një gabim me rrjetin. Kontrollo që pajisja jote është në linjë dhe provo përsëri.</translation> -<translation id="8187079423890319756">Të drejtat e autorit 2013 të "Autorët e Chromium". Të gjitha të drejtat janë të rezervuara.</translation> <translation id="8295077433896346116">Për të përdorur <ph name="PRODUCT_NAME" />, duhet t'i japësh autorizim "Qasshmërisë" në mënyrë që të dhënat nga makineria në distancë të mund të injektohen në këtë Mac. Për të dhënë këtë autorizim, kliko "<ph name="BUTTON_NAME" />" më poshtë. Në panelin e preferencave të "Qasshmërisë" që hapet, zgjidh kutinë pranë "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_sr-Latn.xtb b/remoting/resources/remoting_strings_sr-Latn.xtb index 2f4c7c3..c568bea 100644 --- a/remoting/resources/remoting_strings_sr-Latn.xtb +++ b/remoting/resources/remoting_strings_sr-Latn.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Da biste koristili Chrome udaljeni računar, morate da dodate Google nalog na uređaj.</translation> <translation id="809687642899217504">Moji računari</translation> <translation id="8116630183974937060">Došlo je do greške na mreži. Uverite se da je uređaj onlajn i pokušajte ponovo.</translation> -<translation id="8187079423890319756">Autorska prava 2013. Autori Chromium-a. Sva prava su zadržana.</translation> <translation id="8295077433896346116">Da biste koristili <ph name="PRODUCT_NAME" />, morate da date dozvolu za Pristupačnost da bi unos sa daljinskog uređaja mogao da se doda u ovaj Mac. Da biste dali ovu dozvolu, kliknite na <ph name="BUTTON_NAME" /> u nastavku. U oknu podešavanja za Pristupačnost koje se otvara označite polje pored stavke <ph name="SERVICE_SCRIPT_NAME" />.
diff --git a/remoting/resources/remoting_strings_sr.xtb b/remoting/resources/remoting_strings_sr.xtb index d9eb0c2..ca26cf2 100644 --- a/remoting/resources/remoting_strings_sr.xtb +++ b/remoting/resources/remoting_strings_sr.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Да бисте користили Chrome удаљени рачунар, морате да додате Google налог на уређај.</translation> <translation id="809687642899217504">Моји рачунари</translation> <translation id="8116630183974937060">Дошло је до грешке на мрежи. Уверите се да је уређај онлајн и покушајте поново.</translation> -<translation id="8187079423890319756">Ауторска права 2013. Аутори Chromium-а. Сва права су задржана.</translation> <translation id="8295077433896346116">Да бисте користили <ph name="PRODUCT_NAME" />, морате да дате дозволу за Приступачност да би унос са даљинског уређаја могао да се дода у овај Mac. Да бисте дали ову дозволу, кликните на <ph name="BUTTON_NAME" /> у наставку. У окну подешавања за Приступачност које се отвара означите поље поред ставке <ph name="SERVICE_SCRIPT_NAME" />.
diff --git a/remoting/resources/remoting_strings_sv.xtb b/remoting/resources/remoting_strings_sv.xtb index ac8b0aa..1881e1ef 100644 --- a/remoting/resources/remoting_strings_sv.xtb +++ b/remoting/resources/remoting_strings_sv.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Om du vill använda Chrome Remote Desktop måste du lägga till ett Google-konto på enheten.</translation> <translation id="809687642899217504">Mina datorer</translation> <translation id="8116630183974937060">Ett nätverksfel inträffade. Kontrollera att enheten är online och försök igen.</translation> -<translation id="8187079423890319756">Upphovsrätt 2013 The Chromium Authors. Med ensamrätt.</translation> <translation id="8295077433896346116">Om du vill använda <ph name="PRODUCT_NAME" /> måste du ge behörigheten Tillgänglighet så att indata från fjärrdatorn kan injiceras på denna Mac. Du beviljar behörigheten genom att klicka på <ph name="BUTTON_NAME" /> nedan så att inställningsrutan för Tillgänglighet öppnas. Sedan markerar du kryssrutan vid <ph name="SERVICE_SCRIPT_NAME" />.
diff --git a/remoting/resources/remoting_strings_sw.xtb b/remoting/resources/remoting_strings_sw.xtb index 1fd69583..624e0f6 100644 --- a/remoting/resources/remoting_strings_sw.xtb +++ b/remoting/resources/remoting_strings_sw.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Ili kutumia Chrome ya Kompyuta ya Mbali, itabidi uongeze Akaunti ya Google kwenye kifaa chako.</translation> <translation id="809687642899217504">Kompyuta Zangu</translation> <translation id="8116630183974937060">Hitilafu ya mtandao imetokea. Tafadhali hakikisha kwamba kifaa chako kipo mtandoani na ujaribu tena.</translation> -<translation id="8187079423890319756">Hakimiliki 2013 Waandishi wa Chromium. Haki Zote zimehifadhiwa.</translation> <translation id="8295077433896346116">Ili utumie <ph name="PRODUCT_NAME" />, unahitaji kutoa ruhusa ya 'Ufikivu' ili maudhui kutoka kwenye skrini ya mbali yaweze kuwekwa kwenye Mac hii. Ili utoe ruhusa hii, bofya '<ph name="BUTTON_NAME" />' hapa chini. Kwenye kijisehemu cha mapendeleo ya 'Ufikivu' kinachofunguka, chagua kisanduku kilicho karibu na '<ph name="SERVICE_SCRIPT_NAME" />'.
diff --git a/remoting/resources/remoting_strings_ta.xtb b/remoting/resources/remoting_strings_ta.xtb index 0d06708..0ab9f0b 100644 --- a/remoting/resources/remoting_strings_ta.xtb +++ b/remoting/resources/remoting_strings_ta.xtb
@@ -156,7 +156,6 @@ <translation id="8073845705237259513">Chrome தொலைநிலை டெஸ்க்டாபைப் பயன்படுத்த, உங்கள் சாதனத்தில் Google கணக்கைச் சேர்க்க வேண்டும்.</translation> <translation id="809687642899217504">எனது கணினிகள்</translation> <translation id="8116630183974937060">நெட்வொர்க் பிழை ஏற்பட்டது. உங்கள் சாதனம் ஆன்லைனில் உள்ளதா என்பதைச் சரிபார்த்து மீண்டும் முயலவும்.</translation> -<translation id="8187079423890319756">பதிப்புரிமை 2013 Chromium உருவாக்குநர்கள். அனைத்து உரிமைகளும் பாதுகாக்கப்பட்டவை.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> ஐப் பயன்படுத்த 'அணுகல்' அனுமதியை வழங்க வேண்டும், அதனால் தொலைநிலை மெஷினின் உள்ளீட்டால் இந்த Macகைக் கட்டுப்படுத்த முடியும். இந்த அனுமதியை வழங்கக் கீழிருக்கும் '<ph name="BUTTON_NAME" />' பட்டனைக் கிளிக் செய்யவும். 'அணுகல்' விருப்பத்தேர்வுகள் பெட்டியைத் திறக்கும்விதமாக '<ph name="SERVICE_SCRIPT_NAME" />' என்பதற்கு அடுத்துள்ள பெட்டியைத் தேர்வுசெய்யவும்.
diff --git a/remoting/resources/remoting_strings_te.xtb b/remoting/resources/remoting_strings_te.xtb index ea4aee1..72d0681b 100644 --- a/remoting/resources/remoting_strings_te.xtb +++ b/remoting/resources/remoting_strings_te.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome రిమోట్ డెస్క్టాప్ను ఉపయోగించడానికి, మీరు మీ పరికరానికి Google ఖాతాను జోడించాలి.</translation> <translation id="809687642899217504">నా కంప్యూటర్లు</translation> <translation id="8116630183974937060">నెట్వర్క్ ఎర్రర్ ఏర్పడింది. దయచేసి మీ పరికరం ఆన్లైన్లోనే ఉందని నిర్ధారించుకొని, మళ్లీ ప్రయత్నించండి.</translation> -<translation id="8187079423890319756">కాపీరైట్ 2013 Chromium రచయితలు. అన్ని హక్కులు రిజర్వ్ చేయబడ్డాయి.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" />ను ఉపయోగించడానికి, మీరు 'యాక్సెసిబిలిటీ' అనుమతి మంజూరు చేయాలి, అప్పుడే రిమోట్ మెషిన్ నుండి ఇన్పుట్ను ఈ Mac లోపలికి పంపవచ్చు. ఈ అనుమతిని మంజూరు చేయడానికి, కింది '<ph name="BUTTON_NAME" />' బటన్ను క్లిక్ చేయండి. ఆపై, తెరవబడే ‘యాక్సెసిబిలిటీ’ ప్రాధాన్యతల పేన్లో '<ph name="SERVICE_SCRIPT_NAME" />' ఎంపికకు పక్కన ఉండే బాక్స్ను ఎంచుకోండి.
diff --git a/remoting/resources/remoting_strings_th.xtb b/remoting/resources/remoting_strings_th.xtb index 597539f..126e984 100644 --- a/remoting/resources/remoting_strings_th.xtb +++ b/remoting/resources/remoting_strings_th.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">ในการใช้ Chrome Remote Desktop คุณจะต้องเพิ่มบัญชี Google ลงในอุปกรณ์ของคุณ</translation> <translation id="809687642899217504">คอมพิวเตอร์ของฉัน</translation> <translation id="8116630183974937060">เกิดข้อผิดพลาดในเครือข่าย โปรดตรวจสอบว่าอุปกรณ์ของคุณออนไลน์อยู่และลองอีกครั้ง</translation> -<translation id="8187079423890319756">ลิขสิทธิ์ 2013 The Chromium Authors สงวนลิขสิทธิ์</translation> <translation id="8295077433896346116">หากต้องการใช้ <ph name="PRODUCT_NAME" /> คุณต้องให้สิทธิ์ "การเข้าถึง" เพื่อให้ข้อมูลอินพุตจากเครื่องระยะไกลส่งถึง Mac เครื่องนี้ได้ หากต้องการให้สิทธิ์นี้ ให้คลิกปุ่ม "<ph name="BUTTON_NAME" />" ด้านล่าง จากนั้นเลือกช่องข้าง "<ph name="SERVICE_SCRIPT_NAME" />" ในแผงค่ากำหนด "การเข้าถึง" ที่เปิดขึ้นมา
diff --git a/remoting/resources/remoting_strings_tr.xtb b/remoting/resources/remoting_strings_tr.xtb index 4d6fa648..2618320 100644 --- a/remoting/resources/remoting_strings_tr.xtb +++ b/remoting/resources/remoting_strings_tr.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome Uzaktan Masaüstü'nü kullanmak için cihazınıza Google Hesabı eklemeniz gerekir.</translation> <translation id="809687642899217504">Bilgisayarlarım</translation> <translation id="8116630183974937060">Bir ağ hatası oluştu. Lütfen cihazınızın çevrimiçi olduğundan emin olun ve yeniden deneyin.</translation> -<translation id="8187079423890319756">Telif Hakkı 2013 The Chromium Authors. Tüm hakları saklıdır.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> ürününü kullanmak üzere uzak makinedeki girişin bu Mac'e aktarılabilmesi için "Erişilebilirlik" iznini vermeniz gerekir. Bu izni vermek için aşağıdaki "<ph name="BUTTON_NAME" />" düğmesini tıklayarak "Erişilebilirlik" tercihleri bölmesini açın ve ardından, "<ph name="SERVICE_SCRIPT_NAME" />" öğesinin yanındaki kutuyu işaretleyin.
diff --git a/remoting/resources/remoting_strings_uk.xtb b/remoting/resources/remoting_strings_uk.xtb index 8dbeefc..98bd8743 100644 --- a/remoting/resources/remoting_strings_uk.xtb +++ b/remoting/resources/remoting_strings_uk.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Щоб користуватися Віддаленим керуванням Chrome, потрібно додати на пристрої обліковий запис Google.</translation> <translation id="809687642899217504">Мої комп’ютери</translation> <translation id="8116630183974937060">Сталася помилка мережі. Перевірте з’єднання з Інтернетом на своєму пристрої та повторіть спробу.</translation> -<translation id="8187079423890319756">Авторське право 2013 Автори Chromium. Усі права захищено.</translation> <translation id="8295077433896346116">Щоб використовувати <ph name="PRODUCT_NAME" /> і ввімкнути вставлення тексту, введеного на віддаленому пристрої, на пристрій Mac, потрібно надати доступ до спеціальних можливостей. Для цього натисніть кнопку "<ph name="BUTTON_NAME" />" унизу. Відкриється панель параметрів спеціальних можливостей. На ній поставте прапорець біля опції "<ph name="SERVICE_SCRIPT_NAME" />".
diff --git a/remoting/resources/remoting_strings_ur.xtb b/remoting/resources/remoting_strings_ur.xtb index 6ef007ac..2481f08 100644 --- a/remoting/resources/remoting_strings_ur.xtb +++ b/remoting/resources/remoting_strings_ur.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome ریموٹ ڈیسک ٹاپ استعمال کرنے کیلئے، آپ کو Google اکاؤنٹ کو اپنے آلے میں شامل کرنے کی ضرورت ہوگی۔</translation> <translation id="809687642899217504">میرے کمپیوٹرز</translation> <translation id="8116630183974937060">نیٹ ورک کی ایک خرابی پیش آ گئی۔ براہ کرم چیک کریں کہ آپ کا آلہ آن لائن ہے اور دوبارہ کوشش کریں۔</translation> -<translation id="8187079423890319756">کاپی رائٹ 2013 The Chromium Authors۔ جملہ حقوق محفوظ۔</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> کا استعمال کرنے کے لیے، آپ کو 'ایکسیسبیلٹی' کی اجازت دینی ہوگی تاکہ ریموٹ مشین سے حاصل ہونے والے ان پٹ کو اس Mac میں انجیکٹ کیا جا سکے۔ یہ اجازت دینے کے لیے، نیچے '<ph name="BUTTON_NAME" />' پر کلک کریں۔ کھلنے والے 'ایکسیسبیلٹی' کی ترجیحات کے پین میں، '<ph name="SERVICE_SCRIPT_NAME" />' کے بغل میں موجود باکس کو نشان زد کریں۔
diff --git a/remoting/resources/remoting_strings_uz.xtb b/remoting/resources/remoting_strings_uz.xtb index cc3fd24..122d85a 100644 --- a/remoting/resources/remoting_strings_uz.xtb +++ b/remoting/resources/remoting_strings_uz.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Chrome masofaviy ish stolidan foydalanish uchun qurilmaga Google hisobini qo‘shish zarur.</translation> <translation id="809687642899217504">Mening kompyuterlarim</translation> <translation id="8116630183974937060">Tarmoq xatoligi. Internetga ulanishni tekshirib ko‘ring va qaytadan urining.</translation> -<translation id="8187079423890319756">© The Chromium Authors, 2013. Barcha huquqlar himoyalangan.</translation> <translation id="8295077433896346116"><ph name="PRODUCT_NAME" /> xizmatidan foydalanish uchun ushbu Mac ekraniga masofaviy kompyuterda kiritilgan kontentni uzatuvchi “Maxsus imkoniyatlar” ruxsatini bering. Ruxsat berish uchun quyidagi “<ph name="BUTTON_NAME" />” tugmasini bosib, maxsus imkoniyatlar sozlamalari panelidan “<ph name="SERVICE_SCRIPT_NAME" />” bandini tanlang.
diff --git a/remoting/resources/remoting_strings_vi.xtb b/remoting/resources/remoting_strings_vi.xtb index 91cfeee2..ecdbd70 100644 --- a/remoting/resources/remoting_strings_vi.xtb +++ b/remoting/resources/remoting_strings_vi.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Để sử dụng Chrome Remote Desktop, bạn cần thêm một tài khoản Google cho thiết bị của mình.</translation> <translation id="809687642899217504">Máy tính của tôi</translation> <translation id="8116630183974937060">Đã xảy ra lỗi mạng. Hãy kiểm tra xem thiết bị của bạn có trực tuyến hay không và thử lại.</translation> -<translation id="8187079423890319756">Bản quyền 2012 Tác giả Chromium. Mọi quyền được bảo lưu.</translation> <translation id="8295077433896346116">Để sử dụng <ph name="PRODUCT_NAME" />, bạn cần cấp quyền 'Hỗ trợ tiếp cận' để máy Mac này có thể nhận nội dung từ máy từ xa. Để cấp quyền này, hãy nhấp vào nút '<ph name="BUTTON_NAME" />' bên dưới để mở ngăn tùy chọn 'Hỗ trợ tiếp cận' rồi đánh dấu vào hộp bên cạnh '<ph name="SERVICE_SCRIPT_NAME" />'.
diff --git a/remoting/resources/remoting_strings_zh-CN.xtb b/remoting/resources/remoting_strings_zh-CN.xtb index 243c4e6..4fc0275 100644 --- a/remoting/resources/remoting_strings_zh-CN.xtb +++ b/remoting/resources/remoting_strings_zh-CN.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">要使用Chrome远程桌面,您需要先为自己的设备添加一个Google帐号。</translation> <translation id="809687642899217504">我的计算机</translation> <translation id="8116630183974937060">发生网络错误。请确保您的设备已连接到网络,然后重试。</translation> -<translation id="8187079423890319756">版权所有2013 The Chromium Authors。保留所有权利。</translation> <translation id="8295077433896346116">若想使用 <ph name="PRODUCT_NAME" />,您需要授予“无障碍”权限,以便将远程计算机上输入的内容注入到此 Mac 上。 要授予此权限,请先点击下面的“<ph name="BUTTON_NAME" />”,然后在随即打开的“无障碍”偏好设置窗格中勾选“<ph name="SERVICE_SCRIPT_NAME" />”旁边的复选框。
diff --git a/remoting/resources/remoting_strings_zh-HK.xtb b/remoting/resources/remoting_strings_zh-HK.xtb index da0d4a4..204362f 100644 --- a/remoting/resources/remoting_strings_zh-HK.xtb +++ b/remoting/resources/remoting_strings_zh-HK.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">您必須在裝置上新增 Google 帳戶,才能使用 Chrome 遠端桌面。</translation> <translation id="809687642899217504">我的電腦</translation> <translation id="8116630183974937060">發生網絡錯誤。請確認您的裝置已連線至網絡,然後再試一次。</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors. 保留所有權利。</translation> <translation id="8295077433896346116">如要使用「<ph name="PRODUCT_NAME" />」,您需要授予「無障礙功能」權限,才能將遠端電腦上的輸入內容加入這部 Mac。 如要授予此權限,請按一下下方的「<ph name="BUTTON_NAME" />」。在開啟的「無障礙功能」偏好設定窗格中,勾選「<ph name="SERVICE_SCRIPT_NAME" />」旁的方框。
diff --git a/remoting/resources/remoting_strings_zh-TW.xtb b/remoting/resources/remoting_strings_zh-TW.xtb index 6a5e211..4205a562 100644 --- a/remoting/resources/remoting_strings_zh-TW.xtb +++ b/remoting/resources/remoting_strings_zh-TW.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">你必須在裝置上新增 Google 帳戶,才能使用 Chrome 遠端桌面。</translation> <translation id="809687642899217504">我的電腦</translation> <translation id="8116630183974937060">發生網路錯誤。請確認你的裝置已連線至網路,然後再試一次。</translation> -<translation id="8187079423890319756">Copyright 2013 The Chromium Authors. 保留所有權利。</translation> <translation id="8295077433896346116">如要使用 <ph name="PRODUCT_NAME" />,你必須授予「無障礙功能」權限,才能將遠端電腦上的輸入內容插入這部 Mac。 如要授予這項權限,請點擊下方的 [<ph name="BUTTON_NAME" />],然後在隨即開啟的「無障礙功能」偏好設定窗格中,勾選「<ph name="SERVICE_SCRIPT_NAME" />」旁邊的方塊。
diff --git a/remoting/resources/remoting_strings_zu.xtb b/remoting/resources/remoting_strings_zu.xtb index 7255824..42889f8c 100644 --- a/remoting/resources/remoting_strings_zu.xtb +++ b/remoting/resources/remoting_strings_zu.xtb
@@ -155,7 +155,6 @@ <translation id="8073845705237259513">Ukuze usebenzise i-Chrome yesilawuli kude sedeskithophu, kuzomele ungeze i-Akhawunti ye-Google kudivayisi yakho.</translation> <translation id="809687642899217504">Amakhompyutha wami</translation> <translation id="8116630183974937060">Kuvele iphutha lenethiwekhi. Sicela uhlole ukuthi idivayisi yakho ixhunyiwe ku-inthanethi uphinde uzame futhi.</translation> -<translation id="8187079423890319756">Copyright 2014 Ababhali be-Chromium. Wonke amalungelo agciniwe.</translation> <translation id="8295077433896346116">Ukuze usebenzise i-<ph name="PRODUCT_NAME" />, kuzomele unikeze imvume 'Yokufinyelela' ukuze ukufakwa okusuka kumshini wesilawuli kude ufakwe kule-Mac. Ukuze unikeze le mvume, chofoza i-'<ph name="BUTTON_NAME" />' ngezansi. Ku-pane yokuncanyelwayo kokuthi 'Ukufinyeleleka' okuvulekayo, thikha ibhokisi eliseduze ne-'<ph name="SERVICE_SCRIPT_NAME" />'.
diff --git a/services/device/usb/usb_device_win.cc b/services/device/usb/usb_device_win.cc index 7c3f4af..13e0b884 100644 --- a/services/device/usb/usb_device_win.cc +++ b/services/device/usb/usb_device_win.cc
@@ -73,7 +73,7 @@ void UsbDeviceWin::UpdateFunction(int interface_number, const FunctionInfo& function_info) { - functions_.insert({interface_number, function_info}); + functions_[interface_number] = function_info; for (UsbDeviceHandle* handle : handles()) { // This is safe because only this class only adds instance of
diff --git a/services/media_session/OWNERS b/services/media_session/OWNERS index 70313512..2d28246 100644 --- a/services/media_session/OWNERS +++ b/services/media_session/OWNERS
@@ -1,2 +1 @@ -beccahughes@chromium.org mlamouri@chromium.org
diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc index 0754648..99b2dbe 100644 --- a/services/network/restricted_cookie_manager.cc +++ b/services/network/restricted_cookie_manager.cc
@@ -63,6 +63,11 @@ options.set_same_party_cookie_context_type( net::cookie_util::ComputeSamePartyContext(request_site, isolation_info, cookie_access_delegate)); + if (isolation_info.party_context().has_value()) { + // Count the top-frame site since it's not in the party_context. + options.set_full_party_context_size(isolation_info.party_context()->size() + + 1); + } bool is_in_nontrivial_first_party_set = cookie_access_delegate && cookie_access_delegate->IsInNontrivialFirstPartySet(request_site); @@ -101,6 +106,11 @@ options.set_same_party_cookie_context_type( net::cookie_util::ComputeSamePartyContext(request_site, isolation_info, cookie_access_delegate)); + if (isolation_info.party_context().has_value()) { + // Count the top-frame site since it's not in the party_context. + options.set_full_party_context_size(isolation_info.party_context()->size() + + 1); + } bool is_in_nontrivial_first_party_set = cookie_access_delegate && cookie_access_delegate->IsInNontrivialFirstPartySet(request_site);
diff --git a/storage/browser/BUILD.gn b/storage/browser/BUILD.gn index 92d357a..5a5334d 100644 --- a/storage/browser/BUILD.gn +++ b/storage/browser/BUILD.gn
@@ -182,6 +182,8 @@ "file_system/watcher_manager.h", "quota/client_usage_tracker.cc", "quota/client_usage_tracker.h", + "quota/mojo_quota_client_wrapper.cc", + "quota/mojo_quota_client_wrapper.h", "quota/padding_key.cc", "quota/padding_key.h", "quota/quota_callbacks.h",
diff --git a/storage/browser/database/database_tracker.cc b/storage/browser/database/database_tracker.cc index fdf4b246..4e01659 100644 --- a/storage/browser/database/database_tracker.cc +++ b/storage/browser/database/database_tracker.cc
@@ -101,7 +101,8 @@ {base::MayBlock(), base::TaskPriority::USER_VISIBLE, base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})) { if (quota_manager_proxy) { - quota_manager_proxy->RegisterClient( + // TODO(crbug.com/1163048): Use mojo and switch to RegisterClient(). + quota_manager_proxy->RegisterLegacyClient( base::MakeRefCounted<DatabaseQuotaClient>(this), QuotaClientType::kDatabase, {blink::mojom::StorageType::kTemporary}); }
diff --git a/storage/browser/database/database_tracker_unittest.cc b/storage/browser/database/database_tracker_unittest.cc index 04c31e2..e380d04 100644 --- a/storage/browser/database/database_tracker_unittest.cc +++ b/storage/browser/database/database_tracker_unittest.cc
@@ -13,6 +13,7 @@ #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" #include "base/memory/ptr_util.h" +#include "base/notreached.h" #include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" #include "base/test/bind.h" @@ -101,7 +102,7 @@ TestQuotaManagerProxy() : QuotaManagerProxy(nullptr, nullptr), registered_client_(nullptr) {} - void RegisterClient( + void RegisterLegacyClient( scoped_refptr<QuotaClient> client, QuotaClientType client_type, const std::vector<blink::mojom::StorageType>& storage_types) override { @@ -109,6 +110,13 @@ registered_client_ = client; } + void RegisterClient( + mojo::PendingRemote<mojom::QuotaClient> client, + QuotaClientType client_type, + const std::vector<blink::mojom::StorageType>& storage_types) override { + NOTREACHED(); + } + void NotifyStorageAccessed(const url::Origin& origin, blink::mojom::StorageType type) override { EXPECT_EQ(blink::mojom::StorageType::kTemporary, type);
diff --git a/storage/browser/file_system/file_system_context.cc b/storage/browser/file_system/file_system_context.cc index dcc92eb..0146db06 100644 --- a/storage/browser/file_system/file_system_context.cc +++ b/storage/browser/file_system/file_system_context.cc
@@ -191,7 +191,8 @@ if (quota_manager_proxy) { // Quota client assumes all backends have registered. - quota_manager_proxy->RegisterClient( + // TODO(crbug.com/1163048): Use mojo and switch to RegisterClient(). + quota_manager_proxy->RegisterLegacyClient( base::MakeRefCounted<FileSystemQuotaClient>(this), QuotaClientType::kFileSystem, QuotaManagedStorageTypes()); }
diff --git a/storage/browser/quota/mojo_quota_client_wrapper.cc b/storage/browser/quota/mojo_quota_client_wrapper.cc new file mode 100644 index 0000000..59ea752 --- /dev/null +++ b/storage/browser/quota/mojo_quota_client_wrapper.cc
@@ -0,0 +1,71 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "storage/browser/quota/mojo_quota_client_wrapper.h" + +#include <utility> + +#include "base/check.h" +#include "base/sequence_checker.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" +#include "url/origin.h" + +namespace storage { + +MojoQuotaClientWrapper::MojoQuotaClientWrapper( + mojom::QuotaClient* wrapped_client) + : wrapped_client_(wrapped_client) { + DCHECK(wrapped_client); + DETACH_FROM_SEQUENCE(sequence_checker_); +} + +MojoQuotaClientWrapper::~MojoQuotaClientWrapper() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +} + +void MojoQuotaClientWrapper::GetOriginUsage(const url::Origin& origin, + blink::mojom::StorageType type, + GetOriginUsageCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + wrapped_client_->GetOriginUsage(origin, type, std::move(callback)); +} + +void MojoQuotaClientWrapper::GetOriginsForType( + blink::mojom::StorageType type, + GetOriginsForTypeCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + wrapped_client_->GetOriginsForType(type, std::move(callback)); +} + +void MojoQuotaClientWrapper::GetOriginsForHost( + blink::mojom::StorageType type, + const std::string& host, + GetOriginsForHostCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + wrapped_client_->GetOriginsForHost(type, host, std::move(callback)); +} + +void MojoQuotaClientWrapper::DeleteOriginData( + const url::Origin& origin, + blink::mojom::StorageType type, + DeleteOriginDataCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + wrapped_client_->DeleteOriginData(origin, type, std::move(callback)); +} + +void MojoQuotaClientWrapper::PerformStorageCleanup( + blink::mojom::StorageType type, + PerformStorageCleanupCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + wrapped_client_->PerformStorageCleanup(type, std::move(callback)); +} + +void MojoQuotaClientWrapper::OnQuotaManagerDestroyed() {} + +} // namespace storage
diff --git a/storage/browser/quota/mojo_quota_client_wrapper.h b/storage/browser/quota/mojo_quota_client_wrapper.h new file mode 100644 index 0000000..9b598ed --- /dev/null +++ b/storage/browser/quota/mojo_quota_client_wrapper.h
@@ -0,0 +1,61 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef STORAGE_BROWSER_QUOTA_MOJO_QUOTA_CLIENT_WRAPPER_H_ +#define STORAGE_BROWSER_QUOTA_MOJO_QUOTA_CLIENT_WRAPPER_H_ + +#include <string> + +#include "base/component_export.h" +#include "base/sequence_checker.h" +#include "base/thread_annotations.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" +#include "storage/browser/quota/quota_client.h" +#include "third_party/blink/public/mojom/quota/quota_types.mojom.h" + +namespace url { +class Origin; +} // namespace url + +namespace storage { + +// TODO(crbug.com/1163009): Remove this class after all QuotaClients have been +// mojofied. +class COMPONENT_EXPORT(STORAGE_BROWSER) MojoQuotaClientWrapper + : public storage::QuotaClient { + public: + // `wrapped_client` must outlive this instance. + explicit MojoQuotaClientWrapper(storage::mojom::QuotaClient* wrapped_client); + + MojoQuotaClientWrapper(const MojoQuotaClientWrapper&) = delete; + MojoQuotaClientWrapper& operator=(const MojoQuotaClientWrapper&) = delete; + + // QuotaClient. + void GetOriginUsage(const url::Origin& origin, + blink::mojom::StorageType type, + GetOriginUsageCallback callback) override; + void GetOriginsForType(blink::mojom::StorageType type, + GetOriginsForTypeCallback callback) override; + void GetOriginsForHost(blink::mojom::StorageType type, + const std::string& host, + GetOriginsForHostCallback callback) override; + void DeleteOriginData(const url::Origin& origin, + blink::mojom::StorageType type, + DeleteOriginDataCallback callback) override; + void PerformStorageCleanup(blink::mojom::StorageType type, + PerformStorageCleanupCallback callback) override; + void OnQuotaManagerDestroyed() override; + + private: + ~MojoQuotaClientWrapper() override; + + SEQUENCE_CHECKER(sequence_checker_); + + storage::mojom::QuotaClient* const wrapped_client_ + GUARDED_BY_CONTEXT(sequence_checker_); +}; + +} // namespace storage + +#endif // STORAGE_BROWSER_QUOTA_MOJO_QUOTA_CLIENT_WRAPPER_H_
diff --git a/storage/browser/quota/quota_client.h b/storage/browser/quota/quota_client.h index bd4de1d..9d86a42d 100644 --- a/storage/browser/quota/quota_client.h +++ b/storage/browser/quota/quota_client.h
@@ -12,76 +12,35 @@ #include "base/callback.h" #include "base/component_export.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" #include "storage/browser/quota/quota_client_type.h" -#include "third_party/blink/public/mojom/quota/quota_types.mojom-forward.h" +#include "third_party/blink/public/mojom/quota/quota_types.mojom.h" #include "url/origin.h" namespace storage { -// Interface between each storage API and the quota manager. +// Interface between the legacy quota clients and the QuotaManager. // -// Each storage API must register an implementation of this interface with -// the quota manager, by calling QuotaManager::RegisterClient(). +// Implementations of this class will be transitioned to inherit from +// storage::mojom::QuotaClient and talk to the QuotaManager via mojo. // -// All the methods will be called on the IO thread in the browser. +// This inherits from storage::mojom::QuotaClient so that MockQuotaClient +// instances can be passed to QuotaManger::RegisterLegacyClient(), +// as well as used via mojo with QuotaManager::RegisterClient(). // -// When AppCache is deleted, this can become a std::unique_ptr instead -// of refcounted, and owned by the QuotaManager. +// TODO(crbug.com/1163009): Remove this class after all QuotaClients have +// been mojofied. class COMPONENT_EXPORT(STORAGE_BROWSER) QuotaClient - : public base::RefCountedThreadSafe<QuotaClient> { + : public base::RefCountedThreadSafe<QuotaClient>, + public storage::mojom::QuotaClient { public: - // The callback aliases precisely follow mojo conventions, because this - // abstract class will become a mojo interface soon. See crbug.com/1016065. - using GetOriginUsageCallback = base::OnceCallback<void(int64_t usage)>; - using GetOriginsForTypeCallback = - base::OnceCallback<void(const std::vector<url::Origin>& origins)>; - using GetOriginsForHostCallback = - base::OnceCallback<void(const std::vector<url::Origin>& origins)>; - using DeleteOriginDataCallback = - base::OnceCallback<void(blink::mojom::QuotaStatusCode status)>; - using PerformStorageCleanupCallback = base::OnceClosure; - // Called when the QuotaManager is destroyed. virtual void OnQuotaManagerDestroyed() = 0; - // Called by the QuotaManager. - // Gets the amount of data stored in the storage specified by - // |origin| and |type|. - // Note it is safe to fire the callback after the QuotaClient is destructed. - virtual void GetOriginUsage(const url::Origin& origin, - blink::mojom::StorageType type, - GetOriginUsageCallback callback) = 0; - - // Called by the QuotaManager. - // Returns a list of origins that has data in the |type| storage. - // Note it is safe to fire the callback after the QuotaClient is destructed. - virtual void GetOriginsForType(blink::mojom::StorageType type, - GetOriginsForTypeCallback callback) = 0; - - // Called by the QuotaManager. - // Returns a list of origins that match the |host|. - // Note it is safe to fire the callback after the QuotaClient is destructed. - virtual void GetOriginsForHost(blink::mojom::StorageType type, - const std::string& host, - GetOriginsForHostCallback callback) = 0; - - // Called by the QuotaManager. - // Note it is safe to fire the callback after the QuotaClient is destructed. - virtual void DeleteOriginData(const url::Origin& origin, - blink::mojom::StorageType type, - DeleteOriginDataCallback callback) = 0; - - // Called by the QuotaManager. - // Gives the QuotaClient an opportunity to perform a cleanup step after major - // deletions. - virtual void PerformStorageCleanup( - blink::mojom::StorageType type, - PerformStorageCleanupCallback callback) = 0; - protected: friend class RefCountedThreadSafe<QuotaClient>; - virtual ~QuotaClient() = default; + ~QuotaClient() override = default; }; } // namespace storage
diff --git a/storage/browser/quota/quota_manager.cc b/storage/browser/quota/quota_manager.cc index 8e37f4a8..d893c0c 100644 --- a/storage/browser/quota/quota_manager.cc +++ b/storage/browser/quota/quota_manager.cc
@@ -19,6 +19,7 @@ #include "base/command_line.h" #include "base/files/file_util.h" #include "base/macros.h" +#include "base/memory/scoped_refptr.h" #include "base/metrics/histogram_macros.h" #include "base/numerics/safe_conversions.h" #include "base/rand_util.h" @@ -34,7 +35,10 @@ #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" #include "base/trace_event/trace_event.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" +#include "mojo/public/cpp/bindings/pending_remote.h" #include "storage/browser/quota/client_usage_tracker.h" +#include "storage/browser/quota/mojo_quota_client_wrapper.h" #include "storage/browser/quota/quota_client_type.h" #include "storage/browser/quota/quota_features.h" #include "storage/browser/quota/quota_macros.h" @@ -1269,9 +1273,9 @@ QuotaManager::~QuotaManager() { proxy_->manager_ = nullptr; - // Iterating over |clients_for_ownership_| is correct here because we want to - // call OnQuotaManagerDestroyed() once per QuotaClient. - for (const auto& client : clients_for_ownership_) + // Iterating over `legacy_clients_for_ownership_` is correct here because we + // want to call OnQuotaManagerDestroyed() once per QuotaClient. + for (const auto& client : legacy_clients_for_ownership_) client->OnQuotaManagerDestroyed(); if (database_) @@ -1352,6 +1356,29 @@ } void QuotaManager::RegisterClient( + mojo::PendingRemote<mojom::QuotaClient> client, + QuotaClientType client_type, + const std::vector<blink::mojom::StorageType>& storage_types) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(!database_.get()) + << "All clients must be registered before the database is initialized"; + + clients_for_ownership_.emplace_back(std::move(client)); + mojom::QuotaClient* client_ptr = clients_for_ownership_.back().get(); + + // TODO(crbug.com/1163009): Remove this block after all QuotaClients have been + // mojofied. + legacy_clients_for_ownership_.push_back( + base::MakeRefCounted<MojoQuotaClientWrapper>(client_ptr)); + QuotaClient* legacy_client_ptr = legacy_clients_for_ownership_.back().get(); + + // TODO(crbug.com/1163009): Use client_ptr instead of legacy_client_ptr after + // all QuotaClients have been mojofied. + for (blink::mojom::StorageType storage_type : storage_types) + client_types_[storage_type].insert({legacy_client_ptr, client_type}); +} + +void QuotaManager::RegisterLegacyClient( scoped_refptr<QuotaClient> client, QuotaClientType client_type, const std::vector<blink::mojom::StorageType>& storage_types) { @@ -1362,7 +1389,7 @@ for (blink::mojom::StorageType storage_type : storage_types) client_types_[storage_type].insert({client.get(), client_type}); - clients_for_ownership_.push_back(std::move(client)); + legacy_clients_for_ownership_.push_back(std::move(client)); } UsageTracker* QuotaManager::GetUsageTracker(StorageType type) const {
diff --git a/storage/browser/quota/quota_manager.h b/storage/browser/quota/quota_manager.h index e3efcfd..667ac372 100644 --- a/storage/browser/quota/quota_manager.h +++ b/storage/browser/quota/quota_manager.h
@@ -28,6 +28,9 @@ #include "base/optional.h" #include "base/sequence_checker.h" #include "base/timer/timer.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/remote.h" #include "storage/browser/quota/quota_callbacks.h" #include "storage/browser/quota/quota_client.h" #include "storage/browser/quota/quota_client_type.h" @@ -383,7 +386,7 @@ // Lazily called on the IO thread when the first quota manager API is called. // // Initialize() must be called after all quota clients are added to the - // manager by RegisterClient. + // manager by RegisterClient(). void LazyInitialize(); void FinishLazyInitialize(bool is_database_bootstraped); void BootstrapDatabaseForEviction(GetOriginCallback did_get_origin_callback, @@ -395,6 +398,15 @@ // Called by clients via proxy. // Registers a quota client to the manager. void RegisterClient( + mojo::PendingRemote<mojom::QuotaClient> client, + QuotaClientType client_type, + const std::vector<blink::mojom::StorageType>& storage_types); + + // Legacy overload for QuotaClients that have not been mojofied yet. + // + // TODO(crbug.com/1163009): Remove this overload after all QuotaClients have + // been mojofied. + void RegisterLegacyClient( scoped_refptr<QuotaClient> client, QuotaClientType client_type, const std::vector<blink::mojom::StorageType>& storage_types); @@ -537,15 +549,29 @@ std::map<url::Origin, QuotaOverride> devtools_overrides_; int next_override_handle_id_ = 0; - // Owns the QuotaClient instances registered via RegisterClient(). + // Owns the QuotaClient remotes registered via RegisterClient(). // // Iterating over this list is almost always incorrect. Most algorithms should // iterate over an entry in |client_types_|. - std::vector<scoped_refptr<QuotaClient>> clients_for_ownership_; + // + // TODO(crbug.com/1016065): Handle Storage Service crashes. Will likely entail + // using a mojo::RemoteSet here. + std::vector<mojo::Remote<mojom::QuotaClient>> clients_for_ownership_; + + // Owns the QuotaClient instances registered by RegisterLegacyClient() and + // their wrappers. + // + // TODO(crbug.com/1163009): Remove this member after all QuotaClients have + // been mojofied. + std::vector<scoped_refptr<QuotaClient>> legacy_clients_for_ownership_; + // Maps QuotaClient instances to client types. // // The QuotaClient instances pointed to by the map keys are guaranteed to be - // alive, because they are owned by |clients_for_ownership_|. + // alive, because they are owned by `legacy_clients_for_ownership_`. + // + // TODO(crbug.com/1163009): Replace the map key with mojom::QuotaClient* after + // all QuotaClients have been mojofied. base::flat_map<blink::mojom::StorageType, base::flat_map<QuotaClient*, QuotaClientType>> client_types_;
diff --git a/storage/browser/quota/quota_manager_proxy.cc b/storage/browser/quota/quota_manager_proxy.cc index df7ec05..614935b 100644 --- a/storage/browser/quota/quota_manager_proxy.cc +++ b/storage/browser/quota/quota_manager_proxy.cc
@@ -15,6 +15,8 @@ #include "base/task/post_task.h" #include "base/task_runner_util.h" #include "base/threading/thread_task_runner_handle.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" +#include "mojo/public/cpp/bindings/pending_remote.h" #include "storage/browser/quota/quota_client_type.h" #include "storage/browser/quota/quota_manager.h" #include "third_party/blink/public/mojom/quota/quota_types.mojom.h" @@ -40,13 +42,33 @@ } // namespace -void QuotaManagerProxy::RegisterClient( +void QuotaManagerProxy::RegisterLegacyClient( scoped_refptr<QuotaClient> client, QuotaClientType client_type, const std::vector<blink::mojom::StorageType>& storage_types) { if (!io_thread_->BelongsToCurrentThread()) { io_thread_->PostTask( FROM_HERE, + base::BindOnce(&QuotaManagerProxy::RegisterLegacyClient, this, + std::move(client), client_type, storage_types)); + return; + } + + if (manager_) { + manager_->RegisterLegacyClient(std::move(client), client_type, + storage_types); + } else { + client->OnQuotaManagerDestroyed(); + } +} + +void QuotaManagerProxy::RegisterClient( + mojo::PendingRemote<mojom::QuotaClient> client, + QuotaClientType client_type, + const std::vector<blink::mojom::StorageType>& storage_types) { + if (!io_thread_->BelongsToCurrentThread()) { + io_thread_->PostTask( + FROM_HERE, base::BindOnce(&QuotaManagerProxy::RegisterClient, this, std::move(client), client_type, storage_types)); return; @@ -54,8 +76,6 @@ if (manager_) { manager_->RegisterClient(std::move(client), client_type, storage_types); - } else { - client->OnQuotaManagerDestroyed(); } }
diff --git a/storage/browser/quota/quota_manager_proxy.h b/storage/browser/quota/quota_manager_proxy.h index 4655f7d..6bf5ddf 100644 --- a/storage/browser/quota/quota_manager_proxy.h +++ b/storage/browser/quota/quota_manager_proxy.h
@@ -17,6 +17,8 @@ #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/sequenced_task_runner_helpers.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" +#include "mojo/public/cpp/bindings/pending_remote.h" #include "storage/browser/quota/quota_callbacks.h" #include "storage/browser/quota/quota_client.h" #include "storage/browser/quota/quota_client_type.h" @@ -41,10 +43,17 @@ public: using UsageAndQuotaCallback = QuotaManager::UsageAndQuotaCallback; - virtual void RegisterClient( + // TODO(crbug.com/1163009): Remove this method after all QuotaClients have + // been mojofied. + virtual void RegisterLegacyClient( scoped_refptr<QuotaClient> client, QuotaClientType client_type, const std::vector<blink::mojom::StorageType>& storage_types); + + virtual void RegisterClient( + mojo::PendingRemote<mojom::QuotaClient> client, + QuotaClientType client_type, + const std::vector<blink::mojom::StorageType>& storage_types); virtual void NotifyStorageAccessed(const url::Origin& origin, blink::mojom::StorageType type); virtual void NotifyStorageModified(QuotaClientType client_id,
diff --git a/storage/browser/quota/quota_manager_unittest.cc b/storage/browser/quota/quota_manager_unittest.cc index c39eed4..d512ef79 100644 --- a/storage/browser/quota/quota_manager_unittest.cc +++ b/storage/browser/quota/quota_manager_unittest.cc
@@ -30,6 +30,10 @@ #include "base/test/task_environment.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/self_owned_receiver.h" +#include "storage/browser/quota/mojo_quota_client_wrapper.h" #include "storage/browser/quota/quota_client_type.h" #include "storage/browser/quota/quota_database.h" #include "storage/browser/quota/quota_features.h" @@ -119,15 +123,39 @@ additional_callback_count_ = 0; } - scoped_refptr<MockQuotaClient> CreateAndRegisterClient( + MockQuotaClient* CreateAndRegisterClient( base::span<const MockOriginData> mock_data, QuotaClientType client_type, const std::vector<blink::mojom::StorageType> storage_types) { - scoped_refptr<MockQuotaClient> client = - base::MakeRefCounted<MockQuotaClient>(quota_manager_->proxy(), - mock_data, client_type); - quota_manager_->proxy()->RegisterClient(client, client_type, storage_types); - return client; + auto mock_quota_client = std::make_unique<storage::MockQuotaClient>( + quota_manager_->proxy(), mock_data, client_type); + MockQuotaClient* mock_quota_client_ptr = mock_quota_client.get(); + + mojo::PendingRemote<storage::mojom::QuotaClient> quota_client; + mojo::MakeSelfOwnedReceiver(std::move(mock_quota_client), + quota_client.InitWithNewPipeAndPassReceiver()); + quota_manager_->proxy()->RegisterClient(std::move(quota_client), + client_type, storage_types); + return mock_quota_client_ptr; + } + + // TODO(crbug.com/1163009): Remove this method and replace all calls with + // CreateAndRegisterClient() after all QuotaClients + // have been mojofied + MockQuotaClient* CreateAndRegisterLegacyClient( + base::span<const MockOriginData> mock_data, + QuotaClientType client_type, + const std::vector<blink::mojom::StorageType> storage_types) { + auto mock_quota_client = std::make_unique<storage::MockQuotaClient>( + quota_manager_->proxy(), mock_data, client_type); + MockQuotaClient* mock_quota_client_ptr = mock_quota_client.get(); + legacy_clients_.push_back(std::move(mock_quota_client)); + + scoped_refptr<QuotaClient> legacy_client = + base::MakeRefCounted<MojoQuotaClientWrapper>(mock_quota_client_ptr); + quota_manager_->proxy()->RegisterLegacyClient(std::move(legacy_client), + client_type, storage_types); + return mock_quota_client_ptr; } void GetUsageInfo() { @@ -230,7 +258,7 @@ weak_factory_.GetWeakPtr())); } - void DeleteClientOriginData(QuotaClient* client, + void DeleteClientOriginData(mojom::QuotaClient* client, const url::Origin& origin, StorageType type) { DCHECK(client); @@ -533,6 +561,10 @@ int mock_time_counter_; + // TODO(crbug.com/1163009): Remove this member after all QuotaClients have + // been mojofied. + std::vector<std::unique_ptr<MockQuotaClient>> legacy_clients_; + base::WeakPtrFactory<QuotaManagerTest> weak_factory_{this}; DISALLOW_COPY_AND_ASSIGN(QuotaManagerTest); @@ -551,12 +583,12 @@ { "http://bar.com/", kPerm, 40 }, { "http://example.com/", kPerm, 40 }, }; - CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary, - blink::mojom::StorageType::kPersistent}); - CreateAndRegisterClient(kData2, QuotaClientType::kDatabase, - {blink::mojom::StorageType::kTemporary, - blink::mojom::StorageType::kPersistent}); + CreateAndRegisterLegacyClient(kData1, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); + CreateAndRegisterLegacyClient(kData2, QuotaClientType::kDatabase, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); GetUsageInfo(); task_environment_.RunUntilIdle(); @@ -638,10 +670,10 @@ } TEST_F(QuotaManagerTest, GetUsage_EmptyClient) { - CreateAndRegisterClient(base::span<MockOriginData>(), - QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary, - blink::mojom::StorageType::kPersistent}); + CreateAndRegisterLegacyClient(base::span<MockOriginData>(), + QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); GetUsageAndQuotaForWebApps(ToOrigin("http://foo.com/"), kTemp); task_environment_.RunUntilIdle(); EXPECT_EQ(QuotaStatusCode::kOk, status()); @@ -722,9 +754,9 @@ CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, {blink::mojom::StorageType::kTemporary, blink::mojom::StorageType::kPersistent}); - CreateAndRegisterClient(kData2, QuotaClientType::kDatabase, - {blink::mojom::StorageType::kTemporary, - blink::mojom::StorageType::kPersistent}); + CreateAndRegisterLegacyClient(kData2, QuotaClientType::kDatabase, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); const int64_t kPoolSize = GetAvailableDiskSpaceForTest(); const int64_t kPerHostQuota = kPoolSize / 5; @@ -779,9 +811,9 @@ static const MockOriginData kData3[] = { {"http://foo.com/", kTemp, 8}, }; - CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary, - blink::mojom::StorageType::kPersistent}); + CreateAndRegisterLegacyClient(kData1, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); CreateAndRegisterClient(kData2, QuotaClientType::kDatabase, {blink::mojom::StorageType::kTemporary}); CreateAndRegisterClient(kData3, QuotaClientType::kAppcache, @@ -884,9 +916,9 @@ {"http://unlimited/", kTemp, 512}, }; mock_special_storage_policy()->AddUnlimited(GURL("http://unlimited/")); - CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary, - blink::mojom::StorageType::kPersistent}); + CreateAndRegisterLegacyClient(kData1, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); CreateAndRegisterClient(kData2, QuotaClientType::kDatabase, {blink::mojom::StorageType::kTemporary, blink::mojom::StorageType::kPersistent}); @@ -929,7 +961,7 @@ { "http://foo.com/", type, 10 }, { "http://foo.com:1/", type, 20 }, }; - scoped_refptr<MockQuotaClient> client = + MockQuotaClient* client = CreateAndRegisterClient(data, QuotaClientType::kFileSystem, {type}); GetUsageAndQuotaForWebApps(ToOrigin("http://foo.com/"), type); @@ -1025,6 +1057,36 @@ EXPECT_EQ(QuotaStatusCode::kErrorAbort, status()); } +// TODO(crbug.com/1163009): Remove this test after all QuotaClients have been +// mojofied +TEST_F(QuotaManagerTest, GetTemporaryUsageAndQuota_NukeManager_Legacy) { + static const MockOriginData kData[] = { + {"http://foo.com/", kTemp, 10}, + {"http://foo.com:8080/", kTemp, 20}, + {"http://bar.com/", kTemp, 13}, + {"http://foo.com/", kPerm, 40}, + }; + CreateAndRegisterLegacyClient(kData, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); + const int kPoolSize = 100; + const int kPerHostQuota = 20; + SetQuotaSettings(kPoolSize, kPerHostQuota, kMustRemainAvailableForSystem); + + set_additional_callback_count(0); + GetUsageAndQuotaForWebApps(ToOrigin("http://foo.com/"), kTemp); + RunAdditionalUsageAndQuotaTask(ToOrigin("http://foo.com/"), kTemp); + RunAdditionalUsageAndQuotaTask(ToOrigin("http://bar.com/"), kTemp); + + DeleteOriginData(ToOrigin("http://foo.com/"), kTemp, AllQuotaClientTypes()); + DeleteOriginData(ToOrigin("http://bar.com/"), kTemp, AllQuotaClientTypes()); + + // Nuke before waiting for callbacks. + set_quota_manager(nullptr); + task_environment_.RunUntilIdle(); + EXPECT_EQ(QuotaStatusCode::kErrorAbort, status()); +} + TEST_F(QuotaManagerTest, GetTemporaryUsageAndQuota_Overbudget) { static const MockOriginData kData[] = { { "http://usage1/", kTemp, 1 }, @@ -1363,6 +1425,39 @@ EXPECT_EQ(2, additional_callback_count()); } +// TODO(crbug.com/1163009): Remove this test after all QuotaClients have been +// mojofied +TEST_F(QuotaManagerTest, + GetPersistentUsageAndQuota_WithAdditionalTasks_Legacy) { + static const MockOriginData kData[] = { + {"http://foo.com/", kPerm, 10}, + {"http://foo.com:8080/", kPerm, 20}, + {"http://bar.com/", kPerm, 13}, + {"http://foo.com/", kTemp, 40}, + }; + CreateAndRegisterLegacyClient(kData, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); + SetPersistentHostQuota("foo.com", 100); + + GetUsageAndQuotaForWebApps(ToOrigin("http://foo.com/"), kPerm); + GetUsageAndQuotaForWebApps(ToOrigin("http://foo.com/"), kPerm); + GetUsageAndQuotaForWebApps(ToOrigin("http://foo.com/"), kPerm); + task_environment_.RunUntilIdle(); + EXPECT_EQ(QuotaStatusCode::kOk, status()); + EXPECT_EQ(10 + 20, usage()); + EXPECT_EQ(100, quota()); + + set_additional_callback_count(0); + RunAdditionalUsageAndQuotaTask(ToOrigin("http://foo.com/"), kPerm); + GetUsageAndQuotaForWebApps(ToOrigin("http://foo.com/"), kPerm); + RunAdditionalUsageAndQuotaTask(ToOrigin("http://bar.com/"), kPerm); + task_environment_.RunUntilIdle(); + EXPECT_EQ(QuotaStatusCode::kOk, status()); + EXPECT_EQ(10 + 20, usage()); + EXPECT_EQ(2, additional_callback_count()); +} + TEST_F(QuotaManagerTest, GetPersistentUsageAndQuota_NukeManager) { static const MockOriginData kData[] = { { "http://foo.com/", kPerm, 10 }, @@ -1386,6 +1481,31 @@ EXPECT_EQ(QuotaStatusCode::kErrorAbort, status()); } +// TODO(crbug.com/1163009): Remove this test after all QuotaClients have been +// mojofied +TEST_F(QuotaManagerTest, GetPersistentUsageAndQuota_NukeManager_Legacy) { + static const MockOriginData kData[] = { + {"http://foo.com/", kPerm, 10}, + {"http://foo.com:8080/", kPerm, 20}, + {"http://bar.com/", kPerm, 13}, + {"http://foo.com/", kTemp, 40}, + }; + CreateAndRegisterLegacyClient(kData, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); + SetPersistentHostQuota("foo.com", 100); + + set_additional_callback_count(0); + GetUsageAndQuotaForWebApps(ToOrigin("http://foo.com/"), kPerm); + RunAdditionalUsageAndQuotaTask(ToOrigin("http://foo.com/"), kPerm); + RunAdditionalUsageAndQuotaTask(ToOrigin("http://bar.com/"), kPerm); + + // Nuke before waiting for callbacks. + set_quota_manager(nullptr); + task_environment_.RunUntilIdle(); + EXPECT_EQ(QuotaStatusCode::kErrorAbort, status()); +} + TEST_F(QuotaManagerTest, GetUsage_Simple) { static const MockOriginData kData[] = { { "http://foo.com/", kPerm, 1 }, @@ -1430,7 +1550,7 @@ { "http://foo.com/", kTemp, 7000000 }, }; - scoped_refptr<MockQuotaClient> client = + MockQuotaClient* client = CreateAndRegisterClient(kData, QuotaClientType::kFileSystem, {blink::mojom::StorageType::kTemporary, blink::mojom::StorageType::kPersistent}); @@ -1477,7 +1597,7 @@ { "http://foo.com/", kPerm, 300 }, { "http://bar.com/", kTemp, 4000 }, }; - scoped_refptr<MockQuotaClient> client = + MockQuotaClient* client = CreateAndRegisterClient(kData, QuotaClientType::kFileSystem, {blink::mojom::StorageType::kTemporary, blink::mojom::StorageType::kPersistent}); @@ -1494,7 +1614,7 @@ task_environment_.RunUntilIdle(); int64_t predelete_host_pers = usage(); - DeleteClientOriginData(client.get(), ToOrigin("http://foo.com/"), kTemp); + DeleteClientOriginData(client, ToOrigin("http://foo.com/"), kTemp); task_environment_.RunUntilIdle(); EXPECT_EQ(QuotaStatusCode::kOk, status()); @@ -1532,9 +1652,9 @@ { "https://foo.com/", kTemp, 80 }, { "http://bar.com/", kTemp, 9 }, }; - CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary, - blink::mojom::StorageType::kPersistent}); + CreateAndRegisterLegacyClient(kData1, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); CreateAndRegisterClient(kData2, QuotaClientType::kDatabase, {blink::mojom::StorageType::kTemporary, blink::mojom::StorageType::kPersistent}); @@ -1592,7 +1712,7 @@ }; base::HistogramTester histograms; - scoped_refptr<MockQuotaClient> client = + MockQuotaClient* client = CreateAndRegisterClient(kData, QuotaClientType::kFileSystem, {blink::mojom::StorageType::kTemporary}); @@ -1658,7 +1778,7 @@ { "http://bar.com/", kTemp, 4000 }, }; static const int kNumberOfTemporaryOrigins = 3; - scoped_refptr<MockQuotaClient> client = + MockQuotaClient* client = CreateAndRegisterClient(kData, QuotaClientType::kFileSystem, {blink::mojom::StorageType::kTemporary, blink::mojom::StorageType::kPersistent}); @@ -1829,9 +1949,9 @@ { "https://foo.com/", kTemp, 80 }, { "http://bar.com/", kTemp, 9 }, }; - CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary, - blink::mojom::StorageType::kPersistent}); + CreateAndRegisterLegacyClient(kData1, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); CreateAndRegisterClient(kData2, QuotaClientType::kDatabase, {blink::mojom::StorageType::kTemporary, blink::mojom::StorageType::kPersistent}); @@ -1912,9 +2032,9 @@ {"https://foo.com/", kTemp, 1000000}, {"http://bar.com/", kTemp, 10000000}, }; - CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary, - blink::mojom::StorageType::kPersistent}); + CreateAndRegisterLegacyClient(kData1, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); CreateAndRegisterClient(kData2, QuotaClientType::kDatabase, {blink::mojom::StorageType::kTemporary}); @@ -2010,9 +2130,9 @@ { "https://foo.com/", kTemp, 80 }, { "http://bar.com/", kTemp, 9 }, }; - CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary, - blink::mojom::StorageType::kPersistent}); + CreateAndRegisterLegacyClient(kData1, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); CreateAndRegisterClient(kData2, QuotaClientType::kDatabase, {blink::mojom::StorageType::kTemporary, blink::mojom::StorageType::kPersistent}); @@ -2100,9 +2220,9 @@ {"https://foo.com/", kTemp, 1000000}, {"http://bar.com/", kTemp, 10000000}, }; - CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary, - blink::mojom::StorageType::kPersistent}); + CreateAndRegisterLegacyClient(kData1, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary, + blink::mojom::StorageType::kPersistent}); CreateAndRegisterClient(kData2, QuotaClientType::kDatabase, {blink::mojom::StorageType::kTemporary}); @@ -2331,7 +2451,7 @@ { "http://b.com/", kPerm, 0 }, // persistent { "http://c.com/", kTemp, 0 }, }; - scoped_refptr<MockQuotaClient> client = + MockQuotaClient* client = CreateAndRegisterClient(kData, QuotaClientType::kFileSystem, {blink::mojom::StorageType::kTemporary, blink::mojom::StorageType::kPersistent}); @@ -2459,12 +2579,12 @@ static const MockOriginData kData4[] = { { "http://foo.com/", kTemp, 8 }, }; - CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary}); + CreateAndRegisterLegacyClient(kData1, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary}); CreateAndRegisterClient(kData2, QuotaClientType::kAppcache, {blink::mojom::StorageType::kTemporary}); - CreateAndRegisterClient(kData3, QuotaClientType::kDatabase, - {blink::mojom::StorageType::kTemporary}); + CreateAndRegisterLegacyClient(kData3, QuotaClientType::kDatabase, + {blink::mojom::StorageType::kTemporary}); CreateAndRegisterClient(kData4, QuotaClientType::kIndexedDatabase, {blink::mojom::StorageType::kTemporary}); @@ -2514,12 +2634,12 @@ static const MockOriginData kData4[] = { { "http://foo.com:4444/", kTemp, 8 }, }; - CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary}); + CreateAndRegisterLegacyClient(kData1, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary}); CreateAndRegisterClient(kData2, QuotaClientType::kAppcache, {blink::mojom::StorageType::kTemporary}); - CreateAndRegisterClient(kData3, QuotaClientType::kDatabase, - {blink::mojom::StorageType::kTemporary}); + CreateAndRegisterLegacyClient(kData3, QuotaClientType::kDatabase, + {blink::mojom::StorageType::kTemporary}); CreateAndRegisterClient(kData4, QuotaClientType::kIndexedDatabase, {blink::mojom::StorageType::kTemporary}); @@ -2565,12 +2685,12 @@ static const MockOriginData kData4[] = { { "http://foo.com/", kTemp, 8 }, }; - CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary}); + CreateAndRegisterLegacyClient(kData1, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary}); CreateAndRegisterClient(kData2, QuotaClientType::kAppcache, {blink::mojom::StorageType::kTemporary}); - CreateAndRegisterClient(kData3, QuotaClientType::kDatabase, - {blink::mojom::StorageType::kTemporary}); + CreateAndRegisterLegacyClient(kData3, QuotaClientType::kDatabase, + {blink::mojom::StorageType::kTemporary}); CreateAndRegisterClient(kData4, QuotaClientType::kIndexedDatabase, {blink::mojom::StorageType::kTemporary}); @@ -2607,12 +2727,12 @@ static const MockOriginData kData4[] = { { "http://foo.com:4444/", kTemp, 8 }, }; - CreateAndRegisterClient(kData1, QuotaClientType::kFileSystem, - {blink::mojom::StorageType::kTemporary}); + CreateAndRegisterLegacyClient(kData1, QuotaClientType::kFileSystem, + {blink::mojom::StorageType::kTemporary}); CreateAndRegisterClient(kData2, QuotaClientType::kAppcache, {blink::mojom::StorageType::kTemporary}); - CreateAndRegisterClient(kData3, QuotaClientType::kDatabase, - {blink::mojom::StorageType::kTemporary}); + CreateAndRegisterLegacyClient(kData3, QuotaClientType::kDatabase, + {blink::mojom::StorageType::kTemporary}); CreateAndRegisterClient(kData4, QuotaClientType::kIndexedDatabase, {blink::mojom::StorageType::kTemporary});
diff --git a/storage/browser/quota/usage_tracker.h b/storage/browser/quota/usage_tracker.h index 1c019126..707c5e77 100644 --- a/storage/browser/quota/usage_tracker.h +++ b/storage/browser/quota/usage_tracker.h
@@ -40,6 +40,9 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) UsageTracker : public QuotaTaskObserver { public: + // TODO(crbug.com/1163009): Switch the map key type in `client_types` to + // mojom::QuotaClient* after all QuotaClients have + // been mojofied. UsageTracker( const base::flat_map<QuotaClient*, QuotaClientType>& client_types, blink::mojom::StorageType type,
diff --git a/storage/browser/test/mock_quota_client.cc b/storage/browser/test/mock_quota_client.cc index a71ec854..c47e60ad 100644 --- a/storage/browser/test/mock_quota_client.cc +++ b/storage/browser/test/mock_quota_client.cc
@@ -79,8 +79,6 @@ return base::Time::FromDoubleT(mock_time_counter_ * 10.0); } -void MockQuotaClient::OnQuotaManagerDestroyed() {} - void MockQuotaClient::GetOriginUsage(const url::Origin& origin, blink::mojom::StorageType type, GetOriginUsageCallback callback) {
diff --git a/storage/browser/test/mock_quota_client.h b/storage/browser/test/mock_quota_client.h index 8fca4a9..72c7dd06 100644 --- a/storage/browser/test/mock_quota_client.h +++ b/storage/browser/test/mock_quota_client.h
@@ -19,7 +19,7 @@ #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" -#include "storage/browser/quota/quota_client.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" #include "storage/browser/quota/quota_client_type.h" #include "third_party/blink/public/mojom/quota/quota_types.mojom.h" #include "url/origin.h" @@ -35,12 +35,14 @@ }; // Mock QuotaClient implementation for testing. -class MockQuotaClient : public QuotaClient { +class MockQuotaClient : public mojom::QuotaClient { public: MockQuotaClient(scoped_refptr<QuotaManagerProxy> quota_manager_proxy, base::span<const MockOriginData> mock_data, QuotaClientType client_type); + ~MockQuotaClient() override; + // To add or modify mock data in this client. void AddOriginAndNotify(const url::Origin& origin, blink::mojom::StorageType type, @@ -56,7 +58,6 @@ base::Time IncrementMockTime(); // QuotaClient. - void OnQuotaManagerDestroyed() override; void GetOriginUsage(const url::Origin& origin, blink::mojom::StorageType type, GetOriginUsageCallback callback) override; @@ -72,8 +73,6 @@ PerformStorageCleanupCallback callback) override; private: - ~MockQuotaClient() override; - void RunGetOriginUsage(const url::Origin& origin, blink::mojom::StorageType type, GetOriginUsageCallback callback);
diff --git a/storage/browser/test/mock_quota_manager_proxy.cc b/storage/browser/test/mock_quota_manager_proxy.cc index 14487f9..f537df2 100644 --- a/storage/browser/test/mock_quota_manager_proxy.cc +++ b/storage/browser/test/mock_quota_manager_proxy.cc
@@ -7,6 +7,8 @@ #include <utility> #include "base/single_thread_task_runner.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" +#include "mojo/public/cpp/bindings/pending_remote.h" namespace storage { @@ -17,23 +19,34 @@ storage_accessed_count_(0), storage_modified_count_(0), last_notified_type_(blink::mojom::StorageType::kUnknown), - last_notified_delta_(0), - registered_client_(nullptr) {} + last_notified_delta_(0) {} void MockQuotaManagerProxy::RegisterClient( + mojo::PendingRemote<storage::mojom::QuotaClient> client, + QuotaClientType client_type, + const std::vector<blink::mojom::StorageType>& storage_types) { + DCHECK(!registered_client_); + registered_client_.Bind(std::move(client)); +} + +void MockQuotaManagerProxy::RegisterLegacyClient( scoped_refptr<QuotaClient> client, QuotaClientType client_type, const std::vector<blink::mojom::StorageType>& storage_types) { DCHECK(!registered_client_); - registered_client_ = std::move(client); + registered_legacy_client_ = std::move(client); } void MockQuotaManagerProxy::SimulateQuotaManagerDestroyed() { - if (registered_client_) { + if (registered_legacy_client_) { // We cannot call this in the destructor as the client (indirectly) // holds a refptr of the proxy. - registered_client_->OnQuotaManagerDestroyed(); - registered_client_ = nullptr; + registered_legacy_client_->OnQuotaManagerDestroyed(); + registered_legacy_client_ = nullptr; + } + + if (registered_client_) { + registered_client_.reset(); } } @@ -70,6 +83,7 @@ MockQuotaManagerProxy::~MockQuotaManagerProxy() { DCHECK(!registered_client_); + DCHECK(!registered_legacy_client_); } } // namespace storage
diff --git a/storage/browser/test/mock_quota_manager_proxy.h b/storage/browser/test/mock_quota_manager_proxy.h index a230ad5..10c8d0e 100644 --- a/storage/browser/test/mock_quota_manager_proxy.h +++ b/storage/browser/test/mock_quota_manager_proxy.h
@@ -8,6 +8,9 @@ #include <stdint.h> #include "base/macros.h" +#include "components/services/storage/public/mojom/quota_client.mojom.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/remote.h" #include "storage/browser/quota/quota_client.h" #include "storage/browser/quota/quota_client_type.h" #include "storage/browser/quota/quota_manager_proxy.h" @@ -27,10 +30,16 @@ base::SingleThreadTaskRunner* task_runner); void RegisterClient( + mojo::PendingRemote<mojom::QuotaClient> client, + QuotaClientType client_type, + const std::vector<blink::mojom::StorageType>& storage_types) override; + void RegisterLegacyClient( scoped_refptr<QuotaClient> client, QuotaClientType client_type, const std::vector<blink::mojom::StorageType>& storage_types) override; + // TODO(crbug.com/1163009): Remove this method after all QuotaClients have + // been mojofied. virtual void SimulateQuotaManagerDestroyed(); // We don't mock them. @@ -83,7 +92,11 @@ blink::mojom::StorageType last_notified_type_; int64_t last_notified_delta_; - scoped_refptr<QuotaClient> registered_client_; + mojo::Remote<mojom::QuotaClient> registered_client_; + + // TODO(crbug.com/1163009): Remove this member after all QuotaClients have + // been mojofied. + scoped_refptr<QuotaClient> registered_legacy_client_; DISALLOW_COPY_AND_ASSIGN(MockQuotaManagerProxy); };
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json index ee8079e..83959c8 100644 --- a/testing/buildbot/chromium.memory.json +++ b/testing/buildbot/chromium.memory.json
@@ -15944,34 +15944,6 @@ }, { "args": [ - "angle_unittests", - "-v" - ], - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "resultdb": { - "enable": true - }, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "device_os": "MMB29Q", - "device_os_type": "userdebug", - "device_type": "bullhead", - "os": "Android" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "angle_unittests", - "test_id_prefix": "ninja://third_party/angle/src/tests:angle_unittests/", - "use_isolated_scripts_api": true - }, - { - "args": [ "--gs-results-bucket=chromium-result-details", "--recover-devices" ],
diff --git a/testing/buildbot/filters/lacros.interactive_ui_tests.filter b/testing/buildbot/filters/lacros.interactive_ui_tests.filter index 0e3b4a2..709fe5c1 100644 --- a/testing/buildbot/filters/lacros.interactive_ui_tests.filter +++ b/testing/buildbot/filters/lacros.interactive_ui_tests.filter
@@ -44,6 +44,11 @@ -WidgetCaptureTest.SystemModalWindowReleasesCapture -WidgetInputMethodInteractiveTest* +# TODO(https://crbug.com/991596): Setup guest profiles correctly for tests. +# Lacros has restrictions on the main profile (it must match the device account +# profile) so this test doesn't pass. +-AllGuestProfileTypes/GuestToolbarViewWithExtensionsToolbarMenuTest.* + # crbug.com/1121486 # Following tests were flaky. We disable them first until we have time to investigate. -BrowserCommandControllerInteractiveTest.ShortcutsShouldTakeEffectInBrowserFullscreen
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl index 50edcf7..a2a05c5 100644 --- a/testing/buildbot/gn_isolate_map.pyl +++ b/testing/buildbot/gn_isolate_map.pyl
@@ -1103,6 +1103,20 @@ "label": "//ash/keyboard/ui:keyboard_unittests", "type": "windowed_test_launcher", }, + "lacros_tast_tests_amd64_generic": { + "label": "//chromeos/lacros:lacros_tast_tests_amd64_generic", + "type": "generated_script", + "args": [ + "--logs-dir=${ISOLATED_OUTDIR}", + ], + }, + "lacros_tast_tests_eve": { + "label": "//chromeos/lacros:lacros_tast_tests_eve", + "type": "generated_script", + "args": [ + "--logs-dir=${ISOLATED_OUTDIR}", + ], + }, "lacros_chrome_browsertests": { "label": "//chrome/test:lacros_chrome_browsertests", "type": "windowed_test_launcher", @@ -1935,6 +1949,10 @@ "type": "console_test_launcher", }, "weblayer_instrumentation_test_versions_apk": { + "args": [ + "--replace-system-package", + "org.chromium.weblayer.shell,apks/WebLayerShellSystemWebView.apk" + ], "label": "//weblayer/browser/android/javatests:weblayer_instrumentation_test_versions_apk", "type": "console_test_launcher", },
diff --git a/testing/buildbot/internal.chromeos.fyi.json b/testing/buildbot/internal.chromeos.fyi.json index 5fa8a3b..75e0dcb3 100644 --- a/testing/buildbot/internal.chromeos.fyi.json +++ b/testing/buildbot/internal.chromeos.fyi.json
@@ -5,6 +5,58 @@ "additional_compile_targets": [ "chrome" ], + "gtest_tests": [ + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "resultdb": { + "enable": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86", + "kvm": "1", + "os": "Ubuntu-16.04", + "pool": "chrome.tests" + } + ], + "idempotent": false, + "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "lacros_tast_tests_amd64_generic", + "test_id_prefix": "ninja://chromeos/lacros:lacros_tast_tests_amd64_generic/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "resultdb": { + "enable": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "device_type": "eve", + "os": "ChromeOS", + "pool": "chrome.tests" + } + ], + "idempotent": false, + "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "lacros_tast_tests_eve", + "test_id_prefix": "ninja://chromeos/lacros:lacros_tast_tests_eve/", + "trigger_script": { + "script": "//testing/trigger_scripts/chromeos_device_trigger.py" + } + } + ], "skylab_tests": [ { "args": [],
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index 2eeb31a..1bf2725c 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -115,6 +115,8 @@ 'remove_from': [ # On Android, these are already run on the main waterfall. 'Android FYI Release (Nexus 5X)', + # Times out listing tests crbug.com/1167314 + 'android-asan', # Does not currently work on Lacros configurations. 'linux-lacros-tester-rel', 'linux-lacros-tester-fyi-rel',
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl index c9f0840..42683484 100644 --- a/testing/buildbot/test_suites.pyl +++ b/testing/buildbot/test_suites.pyl
@@ -3730,6 +3730,39 @@ } }, + 'lacros_tast_tests': { + 'lacros_tast_tests_amd64_generic': { + 'swarming': { + 'idempotent': False, # https://crbug.com/923426#c27 + 'dimension_sets': [ + { + 'cpu': 'x86', + 'kvm': '1', + 'os': 'Ubuntu-16.04', + 'pool': 'chrome.tests', + } + ], + }, + 'resultdb': { + 'enable': True, + }, + }, + 'lacros_tast_tests_eve': { + 'swarming': { + 'idempotent': False, # https://crbug.com/923426#c27 + 'dimension_sets': [ + { + 'os': 'ChromeOS', + 'device_type': 'eve', + } + ], + }, + 'resultdb': { + 'enable': True, + }, + }, + }, + 'layout_ng_gtests': { 'webkit_unit_tests_ng': { 'args': [
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl index 376de4f..5093741 100644 --- a/testing/buildbot/waterfalls.pyl +++ b/testing/buildbot/waterfalls.pyl
@@ -6336,8 +6336,17 @@ 'chrome', ], 'test_suites': { + 'gtest_tests': 'lacros_tast_tests', 'skylab_tests': 'cros_skylab_chrome_critical_x86_64', }, + 'swarming': { + 'dimension_sets': [ + { + 'pool': 'chrome.tests', + }, + ], + }, + 'os_type': 'chromeos' }, 'chromeos-betty-arc-r-chrome': { 'additional_compile_targets': [
diff --git a/testing/scripts/run_android_wpt.py b/testing/scripts/run_android_wpt.py index 3de1221..955b9e8 100755 --- a/testing/scripts/run_android_wpt.py +++ b/testing/scripts/run_android_wpt.py
@@ -14,7 +14,7 @@ WPT dependencies in Chromium vpython are found. If you need more advanced test control, please use the runner located at -//third_party/blink/web_tests/external/wpt/wpt. +//third_party/blink/tools/blinkpy/third_party/wpt/wpt/wpt. Here's the mapping [isolate script flag] : [wpt flag] --isolated-script-test-output : --log-chromium @@ -44,7 +44,8 @@ BLINK_TOOLS_DIR = os.path.join( SRC_DIR, 'third_party', 'blink', 'tools') CATAPULT_DIR = os.path.join(SRC_DIR, 'third_party', 'catapult') -DEFAULT_WPT = os.path.join(wpt_common.WEB_TESTS_DIR, 'external', 'wpt', 'wpt') +DEFAULT_WPT = os.path.join( + BLINK_TOOLS_DIR, 'blinkpy', 'third_party', 'wpt', 'wpt', 'wpt') PYUTILS = os.path.join(CATAPULT_DIR, 'common', 'py_utils') if PYUTILS not in sys.path: @@ -132,6 +133,7 @@ rest_args.extend(["--venv=../../", "--skip-venv-setup"]) rest_args.extend(["run", + "--tests=" + wpt_common.EXTERNAL_WPT_TESTS_DIR, "--test-type=" + self.options.test_type, "--webdriver-binary", self.options.webdriver_binary,
diff --git a/testing/scripts/run_wpt_tests.py b/testing/scripts/run_wpt_tests.py index c5ab04b..ed352137 100755 --- a/testing/scripts/run_wpt_tests.py +++ b/testing/scripts/run_wpt_tests.py
@@ -34,6 +34,7 @@ "../../third_party/blink/web_tests/WPTOverrideExpectations") CHROME_BINARY = "../../out/{}/chrome" +CHROME_BINARY_MAC = "../../out/{}/Chromium.app/Contents/MacOS/Chromium" CHROMEDRIVER_BINARY = "../../out/{}/chromedriver" DEFAULT_ISOLATED_SCRIPT_TEST_OUTPUT = "../../out/{}/results.json" @@ -50,6 +51,14 @@ # Update the output directory to the default if it's not set. self.maybe_set_default_isolated_script_test_output() + chrome = CHROME_BINARY.format(self.options.target) + chromedriver = CHROMEDRIVER_BINARY.format(self.options.target) + if self.port.host.platform.is_win(): + chrome = "%s.exe" % chrome + chromedriver = "%s.exe" % chromedriver + elif self.port.host.platform.is_mac(): + chrome = CHROME_BINARY_MAC.format(self.options.target) + # Here we add all of the arguments required to run WPT tests on Chrome. rest_args.extend([ "../../third_party/blink/tools/blinkpy/third_party/wpt/wpt/wpt", @@ -60,14 +69,13 @@ "run", "chrome" ] + self.options.test_list + [ - "--binary=" + CHROME_BINARY.format(self.options.target), + "--binary=" + chrome, "--binary-arg=--host-resolver-rules=" "MAP nonexistent.*.test ~NOTFOUND, MAP *.test 127.0.0.1", "--binary-arg=--enable-experimental-web-platform-features", "--binary-arg=--enable-blink-test-features", "--binary-arg=--enable-blink-features=MojoJS,MojoJSTest", - "--webdriver-binary=" + CHROMEDRIVER_BINARY.format( - self.options.target), + "--webdriver-binary=" + chromedriver, "--webdriver-arg=--enable-chrome-logs", "--headless", "--no-capture-stdio",
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index e1bd17dd..57a6aa7 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -3148,24 +3148,6 @@ ] } ], - "FormControlsRefresh": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FormControlsRefresh" - ] - } - ] - } - ], "FreezeBackgroundTabOnNetworkIdle": [ { "platforms": [ @@ -3845,6 +3827,29 @@ ] } ], + "KeyboardAccessoryPaymentOffer": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "availability": "any", + "event_trigger": "name:keyboard_accessory_payment_offer_iph_trigger;comparator:<3;window:90;storage:360", + "event_used": "name:keyboard_accessory_payment_suggestion_accepted;comparator:<2;window:90;storage:360", + "session_rate": "any", + "session_rate_impact": "IPH_KeyboardAccessoryBarSwiping" + }, + "enable_features": [ + "IPH_KeyboardAccessoryPaymentOffer", + "kAutofillEnableOffersInClankKeyboardAccessory" + ] + } + ] + } + ], "KeyboardAccessorySwipingIPH": [ { "platforms": [
diff --git a/third_party/accessibility-audit/DIR_METADATA b/third_party/accessibility-audit/DIR_METADATA index 665fdf9..6849a4f8 100644 --- a/third_party/accessibility-audit/DIR_METADATA +++ b/third_party/accessibility-audit/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "UI>Accessibility" +monorail: { + component: "UI>Accessibility" } -team_email: "chromium-accessibility@chromium.org" +team_email: "chromium-accessibility@chromium.org"
diff --git a/third_party/accessibility_test_framework/DIR_METADATA b/third_party/accessibility_test_framework/DIR_METADATA index e889e9cc0..8dfc17cf 100644 --- a/third_party/accessibility_test_framework/DIR_METADATA +++ b/third_party/accessibility_test_framework/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Test>Android" +monorail: { + component: "Test>Android" }
diff --git a/third_party/apache-mac/DIR_METADATA b/third_party/apache-mac/DIR_METADATA index ae9d34b..5a03381 100644 --- a/third_party/apache-mac/DIR_METADATA +++ b/third_party/apache-mac/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>Network" +monorail: { + component: "Internals>Network" }
diff --git a/third_party/apache-portable-runtime/DIR_METADATA b/third_party/apache-portable-runtime/DIR_METADATA index baa6e17..9686607 100644 --- a/third_party/apache-portable-runtime/DIR_METADATA +++ b/third_party/apache-portable-runtime/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Network>Library" +monorail: { + component: "Internals>Network>Library" } -team_email: "net-dev@chromium.org" +team_email: "net-dev@chromium.org"
diff --git a/third_party/apache-win32/DIR_METADATA b/third_party/apache-win32/DIR_METADATA index b0866233..25ba18c 100644 --- a/third_party/apache-win32/DIR_METADATA +++ b/third_party/apache-win32/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>Infra" +monorail: { + component: "Blink>Infra" } -team_email: "blink-infra@chromium.org" +team_email: "blink-infra@chromium.org"
diff --git a/third_party/blink/DIR_METADATA b/third_party/blink/DIR_METADATA index 41a3b25..ed69ea4 100644 --- a/third_party/blink/DIR_METADATA +++ b/third_party/blink/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Blink" +monorail: { + component: "Blink" }
diff --git a/third_party/blink/public/mojom/frame/BUILD.gn b/third_party/blink/public/mojom/frame/BUILD.gn index de828b91..1549c3ac 100644 --- a/third_party/blink/public/mojom/frame/BUILD.gn +++ b/third_party/blink/public/mojom/frame/BUILD.gn
@@ -35,6 +35,7 @@ public_deps = [ "//services/network/public/mojom", + "//services/network/public/mojom:url_loader_base", "//ui/gfx/geometry/mojom", "//ui/gfx/mojom", "//url/mojom:url_mojom_gurl",
diff --git a/third_party/blink/public/mojom/frame/frame.mojom b/third_party/blink/public/mojom/frame/frame.mojom index ae80513..f6c9abc16 100644 --- a/third_party/blink/public/mojom/frame/frame.mojom +++ b/third_party/blink/public/mojom/frame/frame.mojom
@@ -780,7 +780,8 @@ // intersection with the parent's viewport, primarily for use by the // IntersectionObserver API. UpdateViewportIntersection( - ViewportIntersectionState intersection_state); + ViewportIntersectionState intersection_state, + FrameVisualProperties? visual_properties); // Tells the browser that a child's visual properties have changed. SynchronizeVisualProperties(
diff --git a/third_party/blink/public/mojom/frame/policy_container.mojom b/third_party/blink/public/mojom/frame/policy_container.mojom index 04ec7da..0b9a5c8 100644 --- a/third_party/blink/public/mojom/frame/policy_container.mojom +++ b/third_party/blink/public/mojom/frame/policy_container.mojom
@@ -4,10 +4,12 @@ module blink.mojom; +import "services/network/public/mojom/ip_address_space.mojom"; import "services/network/public/mojom/referrer_policy.mojom"; struct PolicyContainerDocumentPolicies { network.mojom.ReferrerPolicy referrer_policy = network.mojom.ReferrerPolicy.kDefault; + network.mojom.IPAddressSpace ip_address_space = network.mojom.IPAddressSpace.kUnknown; }; // This interface is implemented in the browser process. It defines methods to
diff --git a/third_party/blink/public/mojom/page/widget.mojom b/third_party/blink/public/mojom/page/widget.mojom index aca77842..12214f6 100644 --- a/third_party/blink/public/mojom/page/widget.mojom +++ b/third_party/blink/public/mojom/page/widget.mojom
@@ -138,7 +138,8 @@ // intersection with the parent's viewport, primarily for use by the // IntersectionObserver API. Also see 'UpdateViewportIntersection' in // third_party/blink/public/mojom/frame/viewport_intersection_state.mojom - SetViewportIntersection(ViewportIntersectionState intersection_state); + SetViewportIntersection(ViewportIntersectionState intersection_state, + VisualProperties? visual_properties); }; // Implemented in Browser, this interface defines frame-widget-specific methods that
diff --git a/third_party/blink/public/mojom/web_feature/web_feature.mojom b/third_party/blink/public/mojom/web_feature/web_feature.mojom index 73dad54..cf91e152 100644 --- a/third_party/blink/public/mojom/web_feature/web_feature.mojom +++ b/third_party/blink/public/mojom/web_feature/web_feature.mojom
@@ -3017,6 +3017,8 @@ kOBSOLETE_AddressSpacePrivateEmbeddedInPublicNonSecureContext = 3695, kOBSOLETE_AddressSpacePrivateEmbeddedInUnknownSecureContext = 3696, kOBSOLETE_AddressSpacePrivateEmbeddedInUnknownNonSecureContext = 3697, + // The items above roughly this point are available in the M87 branch. + kThirdPartyAccess = 3698, kThirdPartyActivation = 3699, kThirdPartyAccessAndActivation = 3700, @@ -3051,6 +3053,8 @@ kMediaStreamTrackProcessor = 3729, kAddEventListenerWithAbortSignal = 3730, kXRSessionRequestLightProbe = 3731, + // The items above roughly this point are available in the M88 branch. + kBeforematchRevealedHiddenMatchable = 3732, kAddSourceBufferUsingConfig = 3733, kChangeTypeUsingConfig = 3734,
diff --git a/third_party/blink/public/platform/web_policy_container.h b/third_party/blink/public/platform/web_policy_container.h index fbac77a..490c548 100644 --- a/third_party/blink/public/platform/web_policy_container.h +++ b/third_party/blink/public/platform/web_policy_container.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_POLICY_CONTAINER_H_ #define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_POLICY_CONTAINER_H_ +#include "services/network/public/mojom/ip_address_space.mojom-shared.h" #include "services/network/public/mojom/referrer_policy.mojom-shared.h" #include "third_party/blink/public/mojom/frame/policy_container.mojom-shared.h" #include "third_party/blink/public/platform/cross_variant_mojo_util.h" @@ -15,6 +16,7 @@ // directly in blink. struct WebPolicyContainerDocumentPolicies { network::mojom::ReferrerPolicy referrer_policy; + network::mojom::IPAddressSpace ip_address_space; }; // TODO(antoniosartori): Remove this when CommitNavigation IPC will be handled
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h index 851036c..b42897c 100644 --- a/third_party/blink/public/platform/web_runtime_features.h +++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -173,6 +173,7 @@ BLINK_PLATFORM_EXPORT static void EnableWebXRARModule(bool); BLINK_PLATFORM_EXPORT static void EnableWebXRCameraAccess(bool); BLINK_PLATFORM_EXPORT static void EnableWebXRDepth(bool); + BLINK_PLATFORM_EXPORT static void EnableWebXRHandInput(bool); BLINK_PLATFORM_EXPORT static void EnableWebXRHitTest(bool); BLINK_PLATFORM_EXPORT static void EnableWebXRImageTracking(bool); BLINK_PLATFORM_EXPORT static void EnableWebXRLightEstimation(bool);
diff --git a/third_party/blink/public/web/web_navigation_params.h b/third_party/blink/public/web/web_navigation_params.h index 2f74904..3138cc3 100644 --- a/third_party/blink/public/web/web_navigation_params.h +++ b/third_party/blink/public/web/web_navigation_params.h
@@ -12,7 +12,6 @@ #include "base/time/time.h" #include "base/unguessable_token.h" #include "services/metrics/public/cpp/ukm_source_id.h" -#include "services/network/public/mojom/ip_address_space.mojom-shared.h" #include "services/network/public/mojom/referrer_policy.mojom-shared.h" #include "services/network/public/mojom/url_loader_factory.mojom-shared.h" #include "services/network/public/mojom/web_client_hints_types.mojom-shared.h" @@ -241,11 +240,6 @@ // a failed navigation. WebURL pre_redirect_url_for_failed_navigations; - // The IP address space from which this document was loaded. - // https://wicg.github.io/cors-rfc1918/#address-space - network::mojom::IPAddressSpace ip_address_space = - network::mojom::IPAddressSpace::kUnknown; - // The net error code for failed navigation. Must be non-zero when // |unreachable_url| is non-null. int error_code = 0;
diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni index 1402bb1..1a6f7a99 100644 --- a/third_party/blink/renderer/bindings/generated_in_modules.gni +++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -1204,6 +1204,8 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_environment_blend_mode.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_eye.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_eye.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_hand_joint.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_hand_joint.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_handedness.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_handedness.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_hit_test_trackable_type.cc", @@ -2209,6 +2211,8 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_dom_overlay_state.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_frame.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_frame.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_hand.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_hand.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_hit_test_result.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_hit_test_result.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_hit_test_source.cc", @@ -2223,6 +2227,10 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_input_source_event.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_input_sources_change_event.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_input_sources_change_event.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_joint_pose.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_joint_pose.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_joint_space.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_joint_space.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_layer.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_layer.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_light_estimate.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni index f2ce1e2..e179290 100644 --- a/third_party/blink/renderer/bindings/idl_in_modules.gni +++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -1008,6 +1008,9 @@ "//third_party/blink/renderer/modules/xr/xr_dom_overlay_state.idl", "//third_party/blink/renderer/modules/xr/xr_frame.idl", "//third_party/blink/renderer/modules/xr/xr_frame_request_callback.idl", + "//third_party/blink/renderer/modules/xr/xr_hand.idl", + "//third_party/blink/renderer/modules/xr/xr_joint_pose.idl", + "//third_party/blink/renderer/modules/xr/xr_joint_space.idl", "//third_party/blink/renderer/modules/xr/xr_hit_test_options_init.idl", "//third_party/blink/renderer/modules/xr/xr_hit_test_result.idl", "//third_party/blink/renderer/modules/xr/xr_hit_test_source.idl",
diff --git a/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_serializer_for_modules_test.cc b/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_serializer_for_modules_test.cc index cd74e701..9f2f5cdc 100644 --- a/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_serializer_for_modules_test.cc +++ b/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_serializer_for_modules_test.cc
@@ -1004,13 +1004,13 @@ EXPECT_FALSE(media_frame->HasOneRef()); - // Destroying either |blink_frame| or |new_frame| should remove all references + // Closing either |blink_frame| or |new_frame| should remove all references // to |media_frame|. - blink_frame->destroy(); + blink_frame->close(); EXPECT_TRUE(media_frame->HasOneRef()); } -TEST(V8ScriptValueSerializerForModulesTest, DestroyedVideoFrameThrows) { +TEST(V8ScriptValueSerializerForModulesTest, ClosedVideoFrameThrows) { V8TestingScope scope; ExceptionState exception_state(scope.GetIsolate(), ExceptionState::kExecutionContext, "Window", @@ -1023,9 +1023,9 @@ // Create and destroy the frame. auto* blink_frame = MakeGarbageCollected<VideoFrame>( media_frame, scope.GetExecutionContext()); - blink_frame->destroy(); + blink_frame->close(); - // Serializing the destroyed frame should throw an error. + // Serializing the closed frame should throw an error. v8::Local<v8::Value> wrapper = ToV8(blink_frame, scope.GetScriptState()); EXPECT_FALSE(V8ScriptValueSerializer(scope.GetScriptState()) .Serialize(wrapper, exception_state));
diff --git a/third_party/blink/renderer/core/BUILD.gn b/third_party/blink/renderer/core/BUILD.gn index 8b87c83..98ffa4a8 100644 --- a/third_party/blink/renderer/core/BUILD.gn +++ b/third_party/blink/renderer/core/BUILD.gn
@@ -1320,6 +1320,7 @@ "layout/layout_grid_test.cc", "layout/layout_image_test.cc", "layout/layout_inline_test.cc", + "layout/layout_list_marker_test.cc", "layout/layout_media_test.cc", "layout/layout_multi_column_flow_thread_test.cc", "layout/layout_object_test.cc",
diff --git a/third_party/blink/renderer/core/animation/scroll_timeline_test.cc b/third_party/blink/renderer/core/animation/scroll_timeline_test.cc index 46176b7..ac3d1cd6 100644 --- a/third_party/blink/renderer/core/animation/scroll_timeline_test.cc +++ b/third_party/blink/renderer/core/animation/scroll_timeline_test.cc
@@ -800,7 +800,7 @@ auto* scroller = To<LayoutBoxModelObject>(GetLayoutObjectByElementId("scroller")); ASSERT_TRUE(scroller); - ASSERT_TRUE(scroller->HasNonVisibleOverflow()); + ASSERT_TRUE(scroller->IsScrollContainer()); PaintLayerScrollableArea* scrollable_area = scroller->GetScrollableArea(); ASSERT_TRUE(scrollable_area); double time_range = 100.0;
diff --git a/third_party/blink/renderer/core/css/css_value_pool.cc b/third_party/blink/renderer/core/css/css_value_pool.cc index 7fdee1b8..1935fed 100644 --- a/third_party/blink/renderer/core/css/css_value_pool.cc +++ b/third_party/blink/renderer/core/css/css_value_pool.cc
@@ -36,7 +36,7 @@ Persistent<CSSValuePool>& pool_handle = *thread_specific_pool; if (!pool_handle) { pool_handle = MakeGarbageCollected<CSSValuePool>(); - pool_handle.RegisterAsStaticReference(); + LEAK_SANITIZER_IGNORE_OBJECT(&pool_handle); } return *pool_handle; }
diff --git a/third_party/blink/renderer/core/css/parser/css_parser_context.cc b/third_party/blink/renderer/core/css/parser/css_parser_context.cc index dd8e486..797c63f 100644 --- a/third_party/blink/renderer/core/css/parser/css_parser_context.cc +++ b/third_party/blink/renderer/core/css/parser/css_parser_context.cc
@@ -215,7 +215,7 @@ if (!context) { context = MakeGarbageCollected<CSSParserContext>(kHTMLStandardMode, secure_context_mode); - context.RegisterAsStaticReference(); + LEAK_SANITIZER_IGNORE_OBJECT(&context); } return context;
diff --git a/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc b/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc index a2ce50b..5808705 100644 --- a/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc +++ b/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc
@@ -4845,8 +4845,8 @@ return ConsumeLength(range, context, kValueRangeAll, UnitlessQuirk::kAllow); } -CSSValue* ParsePaintStroke(CSSParserTokenRange& range, - const CSSParserContext& context) { +CSSValue* ConsumeSVGPaint(CSSParserTokenRange& range, + const CSSParserContext& context) { if (range.Peek().Id() == CSSValueID::kNone) return ConsumeIdent(range); cssvalue::CSSURIValue* url = ConsumeUrl(range, context);
diff --git a/third_party/blink/renderer/core/css/properties/css_parsing_utils.h b/third_party/blink/renderer/core/css/properties/css_parsing_utils.h index 543a8615..770f0ecc 100644 --- a/third_party/blink/renderer/core/css/properties/css_parsing_utils.h +++ b/third_party/blink/renderer/core/css/properties/css_parsing_utils.h
@@ -444,7 +444,7 @@ CSSValue* ConsumeBorderWidth(CSSParserTokenRange&, const CSSParserContext&, UnitlessQuirk); -CSSValue* ParsePaintStroke(CSSParserTokenRange&, const CSSParserContext&); +CSSValue* ConsumeSVGPaint(CSSParserTokenRange&, const CSSParserContext&); CSSValue* ParseSpacing(CSSParserTokenRange&, const CSSParserContext&); UnitlessQuirk UnitlessUnlessShorthand(const CSSParserLocalContext&);
diff --git a/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc b/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc index 4315380..dde940de 100644 --- a/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc +++ b/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc
@@ -2645,7 +2645,7 @@ const CSSValue* Fill::ParseSingleValue(CSSParserTokenRange& range, const CSSParserContext& context, const CSSParserLocalContext&) const { - return css_parsing_utils::ParsePaintStroke(range, context); + return css_parsing_utils::ConsumeSVGPaint(range, context); } const CSSValue* Fill::CSSValueFromComputedStyleInternal( @@ -3787,7 +3787,7 @@ CSSParserTokenRange& range, const CSSParserContext& context, const CSSParserLocalContext& local_context) const { - return css_parsing_utils::ParsePaintStroke(range, context); + return css_parsing_utils::ConsumeSVGPaint(range, context); } const blink::Color InternalVisitedFill::ColorIncludingFallback( @@ -3852,7 +3852,7 @@ CSSParserTokenRange& range, const CSSParserContext& context, const CSSParserLocalContext& local_context) const { - return css_parsing_utils::ParsePaintStroke(range, context); + return css_parsing_utils::ConsumeSVGPaint(range, context); } const blink::Color InternalVisitedStroke::ColorIncludingFallback( @@ -6513,7 +6513,7 @@ const CSSValue* Stroke::ParseSingleValue(CSSParserTokenRange& range, const CSSParserContext& context, const CSSParserLocalContext&) const { - return css_parsing_utils::ParsePaintStroke(range, context); + return css_parsing_utils::ConsumeSVGPaint(range, context); } const CSSValue* Stroke::CSSValueFromComputedStyleInternal(
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc index 0cb413a..5b52f84 100644 --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc
@@ -5873,15 +5873,10 @@ return; } - if (RuntimeEnabledFeatures::OriginIsolationHeaderEnabled(dom_window_) && - dom_window_->GetAgent()->IsOriginKeyed()) { - AddConsoleMessage(MakeGarbageCollected<ConsoleMessage>( - mojom::blink::ConsoleMessageSource::kSecurity, - mojom::blink::ConsoleMessageLevel::kWarning, - "document.domain mutation is ignored because the surrounding agent " - "cluster is origin-keyed.")); - return; - } + // We technically only need to IsOriginKeyed(), as IsCrossOriginIsolated() + // implies IsOriginKeyed(). (The spec only checks "is origin-keyed".) But, + // we'll check both, in order to give warning messages that are more specific + // about the cause. Note: this means the order of the checks is important. if (RuntimeEnabledFeatures::CrossOriginIsolationEnabled() && Agent::IsCrossOriginIsolated()) { @@ -5893,6 +5888,16 @@ return; } + if (RuntimeEnabledFeatures::OriginIsolationHeaderEnabled(dom_window_) && + dom_window_->GetAgent()->IsOriginKeyed()) { + AddConsoleMessage(MakeGarbageCollected<ConsoleMessage>( + mojom::blink::ConsoleMessageSource::kSecurity, + mojom::blink::ConsoleMessageLevel::kWarning, + "document.domain mutation is ignored because the surrounding agent " + "cluster is origin-keyed.")); + return; + } + if (GetFrame()) { UseCounter::Count(*this, dom_window_->GetSecurityOrigin()->Port() == 0
diff --git a/third_party/blink/renderer/core/editing/element_inner_text.cc b/third_party/blink/renderer/core/editing/element_inner_text.cc index 5c5ada9b..2571bab 100644 --- a/third_party/blink/renderer/core/editing/element_inner_text.cc +++ b/third_party/blink/renderer/core/editing/element_inner_text.cc
@@ -469,17 +469,15 @@ // Used for callers that must ensure no document lifecycle rewind. String Element::GetInnerTextWithoutUpdate() { - // TODO(https:://crbug.com/1165850) Layout should always be clean here, but - // the lifecycle does not report the correctly updated value unless servicing - // animations. Fix the UpdateStyleAndLayout() to correctly advance the - // lifecycle, and then update the following DCHECK to always require clean - // layout in active documents. - DCHECK(!GetDocument().IsActive() || !GetDocument().GetPage() || - !GetDocument().GetPage()->Animator().IsServicingAnimations() || - GetDocument().Lifecycle().GetState() >= - DocumentLifecycle::kLayoutClean) - << "If GetInnerTextWithoutUpdate() is called while servicing animations, " - "then layout must be clean."; + // TODO(https:://crbug.com/1165850 https:://crbug.com/1166296) Layout should + // always be clean here, but the lifecycle does not report the correctly + // updated value unless servicing animations. Fix the UpdateStyleAndLayout() + // to correctly advance the lifecycle, and then update the following DCHECK to + // always require clean layout in active documents. + // DCHECK(!GetDocument().IsActive() || !GetDocument().GetPage() || + // GetDocument().Lifecycle().GetState() >= + // DocumentLifecycle::kLayoutClean) + // << "Layout must be clean when GetInnerTextWithoutUpdate() is called."; return ElementInnerTextCollector().RunOn(*this); }
diff --git a/third_party/blink/renderer/core/editing/finder/text_finder.cc b/third_party/blink/renderer/core/editing/finder/text_finder.cc index f1c6de4..01614fc5 100644 --- a/third_party/blink/renderer/core/editing/finder/text_finder.cc +++ b/third_party/blink/renderer/core/editing/finder/text_finder.cc
@@ -601,6 +601,21 @@ find_match_rects_are_valid_ = false; } +void TextFinder::InvalidateFindMatchRects() { + // Increase version number is required to trigger FindMatchRects update when + // next find. + if (!find_matches_cache_.IsEmpty()) + ++find_match_markers_version_; + + // For subframes, we need to recalculate the FindMatchRects when the + // document size of mainframe changed even if the document size of current + // frame has not changed because Find-in-page coordinates are represented as + // normalized fractions of the main frame document. So we need to force the + // FindMatchRects to be updated instead of changing according to the current + // document size. + find_match_rects_are_valid_ = false; +} + void TextFinder::UpdateFindMatchRects() { IntSize current_document_size = OwnerFrame().DocumentSize(); if (document_size_for_current_find_match_rects_ != current_document_size) { @@ -941,4 +956,25 @@ } } +void TextFinder::IncreaseMarkerVersion() { + ++find_match_markers_version_; + + // This is called when the size of the content changes. Normally, the check + // for the document size changed at the beginning of UpdateFindMatchRects() + // would be responsible for invalidating the cached matches as well. + // However, a subframe might not change size but its match rects may still be + // affected because Find-in-page coordinates are represented as normalized + // fractions of the main frame document, so invalidate the cached matches of + // subframes as well. + for (Frame* frame = GetFrame()->Tree().TraverseNext(GetFrame()); frame; + frame = frame->Tree().TraverseNext(GetFrame())) { + auto* web_local_frame_impl = + WebLocalFrameImpl::FromFrame(To<LocalFrame>(frame)); + if (web_local_frame_impl->GetTextFinder() && + web_local_frame_impl->GetTextFinder()->TotalMatchCount() > 0) { + web_local_frame_impl->GetTextFinder()->InvalidateFindMatchRects(); + } + } +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/editing/finder/text_finder.h b/third_party/blink/renderer/core/editing/finder/text_finder.h index f3eab80..db5ded5 100644 --- a/third_party/blink/renderer/core/editing/finder/text_finder.h +++ b/third_party/blink/renderer/core/editing/finder/text_finder.h
@@ -105,7 +105,7 @@ bool FrameScoping() const { return frame_scoping_; } int TotalMatchCount() const { return total_match_count_; } bool ScopingInProgress() const { return scoping_in_progress_; } - void IncreaseMarkerVersion() { ++find_match_markers_version_; } + void IncreaseMarkerVersion(); // Finishes the current scoping effort and triggers any updates if // appropriate. @@ -181,6 +181,11 @@ // calculated again next time updateFindMatchRects is called. void ClearFindMatchesCache(); + // Forcing rects to be fully recomputed again next time UpdateFindMatchRects + // is called. This is different from ClearFindMatchesCache which will clear + // the matches cache. + void InvalidateFindMatchRects(); + // Select a find-in-page match marker in the current frame using a cache // match index returned by nearestFindMatch. Returns the ordinal of the new // selected match or -1 in case of error. Also provides the bounding box of
diff --git a/third_party/blink/renderer/core/execution_context/agent.cc b/third_party/blink/renderer/core/execution_context/agent.cc index 7370adbd..f78f0e7 100644 --- a/third_party/blink/renderer/core/execution_context/agent.cc +++ b/third_party/blink/renderer/core/execution_context/agent.cc
@@ -53,18 +53,23 @@ } bool Agent::IsOriginKeyed() { + if (IsCrossOriginIsolated()) { + return true; + } + #if DCHECK_IS_ON() - DCHECK(is_origin_keyed_set_); + DCHECK(is_explicitly_origin_keyed_set_); #endif - return is_origin_keyed_; + return is_explicitly_origin_keyed_; } -void Agent::SetIsOriginKeyed(bool value) { +void Agent::SetIsExplicitlyOriginKeyed(bool value) { #if DCHECK_IS_ON() - DCHECK(!is_origin_keyed_set_ || value == is_origin_keyed_); - is_origin_keyed_set_ = true; + DCHECK(!is_explicitly_origin_keyed_set_ || + value == is_explicitly_origin_keyed_); + is_explicitly_origin_keyed_set_ = true; #endif - is_origin_keyed_ = value; + is_explicitly_origin_keyed_ = value; } } // namespace blink
diff --git a/third_party/blink/renderer/core/execution_context/agent.h b/third_party/blink/renderer/core/execution_context/agent.h index 5eed250..fe5548ef 100644 --- a/third_party/blink/renderer/core/execution_context/agent.h +++ b/third_party/blink/renderer/core/execution_context/agent.h
@@ -73,15 +73,19 @@ // URL to create an iframe, would have an origin-keyed data: URL Agent, // plus a site-keyed outer page Agent, both in the same process. bool IsOriginKeyed(); - void SetIsOriginKeyed(bool value); + + // This sets whether the agent cluster is explicitly requested to be + // origin-keyed via the Origin-Agent-Cluster header. It can also be + // implicitly origin-keyed if it is in a cross-origin isolated agent cluster. + void SetIsExplicitlyOriginKeyed(bool value); private: scoped_refptr<scheduler::EventLoop> event_loop_; const base::UnguessableToken cluster_id_; - bool is_origin_keyed_ = false; + bool is_explicitly_origin_keyed_ = false; #if DCHECK_IS_ON() - bool is_origin_keyed_set_ = false; + bool is_explicitly_origin_keyed_set_ = false; #endif };
diff --git a/third_party/blink/renderer/core/exported/web_navigation_params.cc b/third_party/blink/renderer/core/exported/web_navigation_params.cc index c7769aa9..b7037ed 100644 --- a/third_party/blink/renderer/core/exported/web_navigation_params.cc +++ b/third_party/blink/renderer/core/exported/web_navigation_params.cc
@@ -41,7 +41,6 @@ result->navigation_timings.input_start = info.input_start; result->initiator_origin_trial_features = info.initiator_origin_trial_features; - result->ip_address_space = info.initiator_address_space; result->frame_policy = info.frame_policy; result->had_transient_activation = info.url_request.HasUserGesture(); return result;
diff --git a/third_party/blink/renderer/core/frame/frame_test_helpers.cc b/third_party/blink/renderer/core/frame/frame_test_helpers.cc index 55acd41..48d1aaa 100644 --- a/third_party/blink/renderer/core/frame/frame_test_helpers.cc +++ b/third_party/blink/renderer/core/frame/frame_test_helpers.cc
@@ -748,11 +748,12 @@ } viz::FrameSinkId TestWebRemoteFrameClient::GetFrameSinkId() const { - return viz::FrameSinkId(); + return viz::FrameSinkId(1u, 1u); } const viz::LocalSurfaceId& TestWebRemoteFrameClient::GetLocalSurfaceId() const { - DEFINE_STATIC_LOCAL(viz::LocalSurfaceId, dummy_local_surface_id, ()); + DEFINE_STATIC_LOCAL(viz::LocalSurfaceId, dummy_local_surface_id, + (1u, base::UnguessableToken::Create())); return dummy_local_surface_id; }
diff --git a/third_party/blink/renderer/core/frame/policy_container.cc b/third_party/blink/renderer/core/frame/policy_container.cc index 08a5995f..4feae2bee 100644 --- a/third_party/blink/renderer/core/frame/policy_container.cc +++ b/third_party/blink/renderer/core/frame/policy_container.cc
@@ -31,7 +31,8 @@ return nullptr; mojom::blink::PolicyContainerDocumentPoliciesPtr policies = mojom::blink::PolicyContainerDocumentPolicies::New( - container->policies.referrer_policy); + container->policies.referrer_policy, + container->policies.ip_address_space); return std::make_unique<PolicyContainer>(std::move(container->remote), std::move(policies)); } @@ -41,6 +42,11 @@ return policies_->referrer_policy; } +network::mojom::blink::IPAddressSpace PolicyContainer::GetIPAddressSpace() + const { + return policies_->ip_address_space; +} + void PolicyContainer::UpdateReferrerPolicy( network::mojom::blink::ReferrerPolicy policy) { policies_->referrer_policy = policy;
diff --git a/third_party/blink/renderer/core/frame/policy_container.h b/third_party/blink/renderer/core/frame/policy_container.h index 91118464..34486db 100644 --- a/third_party/blink/renderer/core/frame/policy_container.h +++ b/third_party/blink/renderer/core/frame/policy_container.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_POLICY_CONTAINER_H_ #include "mojo/public/cpp/bindings/associated_remote.h" +#include "services/network/public/mojom/ip_address_space.mojom-shared.h" #include "services/network/public/mojom/referrer_policy.mojom-shared.h" #include "third_party/blink/public/mojom/frame/policy_container.mojom-blink.h" #include "third_party/blink/public/platform/web_policy_container.h" @@ -41,6 +42,8 @@ void UpdateReferrerPolicy(network::mojom::blink::ReferrerPolicy policy); network::mojom::blink::ReferrerPolicy GetReferrerPolicy() const; + network::mojom::blink::IPAddressSpace GetIPAddressSpace() const; + const mojom::blink::PolicyContainerDocumentPoliciesPtr& GetPolicies() const; private:
diff --git a/third_party/blink/renderer/core/frame/policy_container_test.cc b/third_party/blink/renderer/core/frame/policy_container_test.cc index 4aee7886..0373d09 100644 --- a/third_party/blink/renderer/core/frame/policy_container_test.cc +++ b/third_party/blink/renderer/core/frame/policy_container_test.cc
@@ -8,10 +8,25 @@ namespace blink { +TEST(PolicyContainerTest, MembersAreSetDuringConstruction) { + MockPolicyContainerHost host; + auto policies = mojom::blink::PolicyContainerDocumentPolicies::New( + network::mojom::blink::ReferrerPolicy::kNever, + network::mojom::blink::IPAddressSpace::kPrivate); + PolicyContainer policy_container(host.BindNewEndpointAndPassDedicatedRemote(), + std::move(policies)); + + EXPECT_EQ(network::mojom::blink::ReferrerPolicy::kNever, + policy_container.GetReferrerPolicy()); + EXPECT_EQ(network::mojom::blink::IPAddressSpace::kPrivate, + policy_container.GetIPAddressSpace()); +} + TEST(PolicyContainerTest, UpdateReferrerPolicyIsPropagated) { MockPolicyContainerHost host; auto policies = mojom::blink::PolicyContainerDocumentPolicies::New( - network::mojom::blink::ReferrerPolicy::kAlways); + network::mojom::blink::ReferrerPolicy::kAlways, + network::mojom::blink::IPAddressSpace::kPublic); PolicyContainer policy_container(host.BindNewEndpointAndPassDedicatedRemote(), std::move(policies));
diff --git a/third_party/blink/renderer/core/frame/remote_frame.cc b/third_party/blink/renderer/core/frame/remote_frame.cc index cf47ced..a5c9eec 100644 --- a/third_party/blink/renderer/core/frame/remote_frame.cc +++ b/third_party/blink/renderer/core/frame/remote_frame.cc
@@ -845,9 +845,9 @@ feature_policy_header_, container_policy, parent_feature_policy); } -void RemoteFrame::SynchronizeVisualProperties() { +bool RemoteFrame::SynchronizeVisualProperties(bool propagate) { if (!GetFrameSinkId().is_valid() || Client()->RemoteProcessGone()) - return; + return false; bool capture_sequence_number_changed = sent_visual_properties_ && @@ -903,14 +903,19 @@ bool visual_properties_changed = synchronized_props_changed || rect_changed; if (!visual_properties_changed) - return; + return false; - // Let the browser know about the updated view rect. - GetRemoteFrameHostRemote().SynchronizeVisualProperties( - pending_visual_properties_); + if (propagate) { + GetRemoteFrameHostRemote().SynchronizeVisualProperties( + pending_visual_properties_); + RecordSentVisualProperties(); + } + return true; +} + +void RemoteFrame::RecordSentVisualProperties() { sent_visual_properties_ = pending_visual_properties_; - TRACE_EVENT_WITH_FLOW2( TRACE_DISABLED_BY_DEFAULT("viz.surface_id_flow"), "RenderFrameProxy::SynchronizeVisualProperties Send Message", @@ -926,6 +931,17 @@ SynchronizeVisualProperties(); } +void RemoteFrame::SetViewportIntersection( + const mojom::blink::ViewportIntersectionState& intersection_state) { + base::Optional<FrameVisualProperties> visual_properties; + if (SynchronizeVisualProperties(/*propagate=*/false)) { + visual_properties.emplace(pending_visual_properties_); + RecordSentVisualProperties(); + } + GetRemoteFrameHostRemote().UpdateViewportIntersection( + intersection_state.Clone(), visual_properties); +} + void RemoteFrame::DidChangeScreenInfo(const ScreenInfo& screen_info) { pending_visual_properties_.screen_info = screen_info; SynchronizeVisualProperties();
diff --git a/third_party/blink/renderer/core/frame/remote_frame.h b/third_party/blink/renderer/core/frame/remote_frame.h index 88e8dbae..125ed20 100644 --- a/third_party/blink/renderer/core/frame/remote_frame.h +++ b/third_party/blink/renderer/core/frame/remote_frame.h
@@ -116,8 +116,11 @@ void FrameRectsChanged(const IntRect& local_frame_rect, const IntRect& screen_space_rect); void InitializeFrameVisualProperties(const FrameVisualProperties& properties); - void SynchronizeVisualProperties(); + // If 'propagate' is true, updated properties will be sent to the browser. + // Returns true if visual properties have changed. + bool SynchronizeVisualProperties(bool propagate = true); void ResendVisualProperties(); + void SetViewportIntersection(const mojom::blink::ViewportIntersectionState&); // Called when the local root's screen info changes. void DidChangeScreenInfo(const ScreenInfo& screen_info); @@ -228,6 +231,7 @@ // Returns false if detaching child frames reentrantly detached `this`. bool DetachChildren(); void ApplyReplicatedFeaturePolicyHeader(); + void RecordSentVisualProperties(); static void BindToReceiver( RemoteFrame* frame,
diff --git a/third_party/blink/renderer/core/frame/remote_frame_view.cc b/third_party/blink/renderer/core/frame/remote_frame_view.cc index cdc9da7..5a7b5b5e 100644 --- a/third_party/blink/renderer/core/frame/remote_frame_view.cc +++ b/third_party/blink/renderer/core/frame/remote_frame_view.cc
@@ -107,8 +107,7 @@ if (!last_intersection_state_.Equals(new_state)) { last_intersection_state_ = new_state; GetFrame().SynchronizeVisualProperties(); - remote_frame_->GetRemoteFrameHostRemote().UpdateViewportIntersection( - new_state.Clone()); + remote_frame_->SetViewportIntersection(new_state); } else if (needs_frame_rect_propagation_) { PropagateFrameRects(); }
diff --git a/third_party/blink/renderer/core/frame/visual_viewport.cc b/third_party/blink/renderer/core/frame/visual_viewport.cc index c0e9b4c0..b6b7c56 100644 --- a/third_party/blink/renderer/core/frame/visual_viewport.cc +++ b/third_party/blink/renderer/core/frame/visual_viewport.cc
@@ -499,8 +499,15 @@ bool VisualViewport::DidSetScaleOrLocation(float scale, bool is_pinch_gesture_active, const FloatPoint& location) { - if (!LocalMainFrame()) + if (!LocalMainFrame()) { + is_pinch_gesture_active_ = is_pinch_gesture_active; + // The VisualViewport for a remote mainframe must always be 1.0 or else + // event targeting will fail. + DCHECK(scale == 1.f); + scale_ = scale; + offset_ = ScrollOffset(); return false; + } bool values_changed = false;
diff --git a/third_party/blink/renderer/core/frame/web_frame_test.cc b/third_party/blink/renderer/core/frame/web_frame_test.cc index 5865536a..ec87002 100644 --- a/third_party/blink/renderer/core/frame/web_frame_test.cc +++ b/third_party/blink/renderer/core/frame/web_frame_test.cc
@@ -7298,7 +7298,7 @@ auto intersection_state = blink::mojom::blink::ViewportIntersectionState::New( viewport_intersection, mainframe_intersection, gfx::Rect(), occlusion_state, gfx::Size(), gfx::Point(), transform); - static_cast<WebFrameWidgetImpl*>(widget)->SetViewportIntersection( + static_cast<WebFrameWidgetImpl*>(widget)->ApplyViewportIntersectionForTesting( std::move(intersection_state)); EXPECT_EQ(client.MainFrameIntersection(), blink::WebRect(100, 100, 200, 140)); } @@ -7478,7 +7478,9 @@ params->navigation_timings.navigation_start = base::TimeTicks::Now(); params->navigation_timings.fetch_start = base::TimeTicks::Now(); params->is_browser_initiated = true; - params->ip_address_space = value; + params->policy_container = std::make_unique<WebPolicyContainer>( + WebPolicyContainerDocumentPolicies(), mojo::NullAssociatedRemote()); + params->policy_container->policies.ip_address_space = value; web_view_helper.LocalMainFrame()->CommitNavigation(std::move(params), nullptr); frame_test_helpers::PumpPendingRequestsForFrameToLoad( @@ -8843,6 +8845,19 @@ EXPECT_EQ("hello", content); } +TEST_F(WebFrameSwapTest, SwapMainFrameWithPageScaleReset) { + WebView()->SetDefaultPageScaleLimits(1, 2); + WebView()->SetPageScaleFactor(1.25); + EXPECT_EQ(1.25, WebView()->PageScaleFactor()); + + WebRemoteFrame* remote_frame = frame_test_helpers::CreateRemote(); + MainFrame()->Swap(remote_frame); + EXPECT_EQ(1.0, WebView()->PageScaleFactor()); + // Note: if we were to extend this test to call frame_test_helpers::LoadFrame + // as in WebFrameSwapTest.SwapMainFrame, then an appropriate binding must be + // provided for the AssociatedRemote. +} + TEST_F(WebFrameSwapTest, ValidateSizeOnRemoteToLocalMainFrameSwap) { gfx::Size size(111, 222); @@ -10651,7 +10666,8 @@ // FakeRemoteFrameHost: void UpdateViewportIntersection( - mojom::blink::ViewportIntersectionStatePtr intersection_state) override { + mojom::blink::ViewportIntersectionStatePtr intersection_state, + const base::Optional<FrameVisualProperties>& visual_properties) override { intersection_state_ = std::move(intersection_state); } @@ -13503,7 +13519,7 @@ blink::mojom::FrameOcclusionState occlusion_state = blink::mojom::FrameOcclusionState::kUnknown; - static_cast<WebFrameWidgetImpl*>(widget)->SetViewportIntersection( + static_cast<WebFrameWidgetImpl*>(widget)->ApplyViewportIntersectionForTesting( blink::mojom::blink::ViewportIntersectionState::New( viewport_intersection, mainframe_intersection, viewport_intersection, occlusion_state, gfx::Size(), gfx::Point(), viewport_transform));
diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc index 74a701b..51c5630f 100644 --- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc +++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
@@ -1716,11 +1716,24 @@ } void WebFrameWidgetImpl::SetViewportIntersection( - mojom::blink::ViewportIntersectionStatePtr intersection_state) { + mojom::blink::ViewportIntersectionStatePtr intersection_state, + const base::Optional<VisualProperties>& visual_properties) { // Remote viewports are only applicable to local frames with remote ancestors. // TODO(https://crbug.com/1148960): Should this deal with portals? DCHECK(ForSubframe()); + if (visual_properties.has_value()) + UpdateVisualProperties(visual_properties.value()); + ApplyViewportIntersection(std::move(intersection_state)); +} + +void WebFrameWidgetImpl::ApplyViewportIntersectionForTesting( + mojom::blink::ViewportIntersectionStatePtr intersection_state) { + ApplyViewportIntersection(std::move(intersection_state)); +} + +void WebFrameWidgetImpl::ApplyViewportIntersection( + mojom::blink::ViewportIntersectionStatePtr intersection_state) { child_data().compositor_visible_rect = intersection_state->compositor_visible_rect; widget_base_->LayerTreeHost()->SetVisualDeviceViewportIntersectionRect(
diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.h b/third_party/blink/renderer/core/frame/web_frame_widget_impl.h index c1316d7..210f764 100644 --- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.h +++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.h
@@ -289,6 +289,8 @@ bool ScrollFocusedEditableElementIntoView() override; void ApplyViewportChangesForTesting( const ApplyViewportChangesArgs& args) override; + void ApplyViewportIntersectionForTesting( + mojom::blink::ViewportIntersectionStatePtr intersection_state); void NotifySwapAndPresentationTime( WebReportTimeCallback swap_callback, WebReportTimeCallback presentation_callback) override; @@ -375,7 +377,8 @@ void ShowContextMenu(ui::mojom::MenuSourceType source_type, const gfx::Point& location) override; void SetViewportIntersection( - mojom::blink::ViewportIntersectionStatePtr intersection_state) override; + mojom::blink::ViewportIntersectionStatePtr intersection_state, + const base::Optional<VisualProperties>& visual_properties) override; void DragSourceEndedAt(const gfx::PointF& point_in_viewport, const gfx::PointF& screen_point, ui::mojom::blink::DragOperation) override; @@ -804,6 +807,9 @@ const gfx::Size& max_size_before_dsf, float device_scale_factor); + void ApplyViewportIntersection( + mojom::blink::ViewportIntersectionStatePtr intersection_state); + // Called when a gesture event has been processed. void DidHandleGestureEvent(const WebGestureEvent& event);
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc b/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc index 3e078d42..aa7faab7 100644 --- a/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc +++ b/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
@@ -86,24 +86,23 @@ void RecordInitiateEncodingTimeHistogram(ImageEncodingMimeType mime_type, base::TimeDelta elapsed_time) { - // TODO(crbug.com/983261) Change this to use UmaHistogramMicrosecondsTimes. if (mime_type == kMimeTypePng) { - UmaHistogramMicrosecondsTimesUnderTenMilliseconds( - "Blink.Canvas.ToBlob.InitiateEncodingDelay.PNG", elapsed_time); + UmaHistogramMicrosecondsTimes( + "Blink.Canvas.ToBlob.InitialEncodingDelay.PNG", elapsed_time); } else if (mime_type == kMimeTypeJpeg) { - UmaHistogramMicrosecondsTimesUnderTenMilliseconds( - "Blink.Canvas.ToBlob.InitiateEncodingDelay.JPEG", elapsed_time); + UmaHistogramMicrosecondsTimes( + "Blink.Canvas.ToBlob.InitialEncodingDelay.JPEG", elapsed_time); } } void RecordCompleteEncodingTimeHistogram(ImageEncodingMimeType mime_type, base::TimeDelta elapsed_time) { if (mime_type == kMimeTypePng) { - UmaHistogramMicrosecondsTimesUnderTenMilliseconds( - "Blink.Canvas.ToBlob.CompleteEncodingDelay.PNG", elapsed_time); + UmaHistogramMicrosecondsTimes("Blink.Canvas.ToBlob.TotalEncodingDelay.PNG", + elapsed_time); } else if (mime_type == kMimeTypeJpeg) { - UmaHistogramMicrosecondsTimesUnderTenMilliseconds( - "Blink.Canvas.ToBlob.CompleteEncodingDelay.JPEG", elapsed_time); + UmaHistogramMicrosecondsTimes("Blink.Canvas.ToBlob.TotalEncodingDelay.JPEG", + elapsed_time); } }
diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.cc b/third_party/blink/renderer/core/html/parser/html_document_parser.cc index 7cde9098..1421c74 100644 --- a/third_party/blink/renderer/core/html/parser/html_document_parser.cc +++ b/third_party/blink/renderer/core/html/parser/html_document_parser.cc
@@ -1249,7 +1249,12 @@ return; preload_scanner_->AppendToEnd(source); - ScanAndPreload(preload_scanner_.get()); + if (preloader_) { + // TODO(Richard.Townsend@arm.com): add test coverage of this branch. + // The crash in crbug.com/1166786 indicates that text documents are being + // speculatively prefetched. + ScanAndPreload(preload_scanner_.get()); + } // Return after the preload scanner, do not actually parse the document. return;
diff --git a/third_party/blink/renderer/core/layout/layout_list_item.cc b/third_party/blink/renderer/core/layout/layout_list_item.cc index d33d23a3..027b7ef 100644 --- a/third_party/blink/renderer/core/layout/layout_list_item.cc +++ b/third_party/blink/renderer/core/layout/layout_list_item.cc
@@ -603,7 +603,7 @@ layout_block_object->AddLayoutOverflow(marker_rect); } - if (object->HasNonVisibleOverflow()) + if (object->ShouldClipOverflowAlongBothAxis()) break; if (object->HasSelfPaintingLayer())
diff --git a/third_party/blink/renderer/core/layout/layout_list_marker.cc b/third_party/blink/renderer/core/layout/layout_list_marker.cc index 5313a86..e226c75 100644 --- a/third_party/blink/renderer/core/layout/layout_list_marker.cc +++ b/third_party/blink/renderer/core/layout/layout_list_marker.cc
@@ -207,6 +207,9 @@ // order. if (RuntimeEnabledFeatures::CSSAtRuleCounterStyleEnabled()) { + if (GetListStyleCategory() == ListMarker::ListStyleCategory::kNone) + return ""; + const CounterStyle& counter_style = GetCounterStyle(); return counter_style.GetPrefix() + text_ + counter_style.GetSuffix(); }
diff --git a/third_party/blink/renderer/core/layout/layout_list_marker_test.cc b/third_party/blink/renderer/core/layout/layout_list_marker_test.cc new file mode 100644 index 0000000..716031f --- /dev/null +++ b/third_party/blink/renderer/core/layout/layout_list_marker_test.cc
@@ -0,0 +1,45 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/core/layout/layout_list_marker.h" + +#include "third_party/blink/renderer/core/layout/layout_list_item.h" +#include "third_party/blink/renderer/core/testing/core_unit_test_helper.h" +#include "third_party/blink/renderer/platform/runtime_enabled_features.h" +#include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h" + +namespace blink { + +class LayoutListMarkerTest : public RenderingTest, + private ScopedLayoutNGForTest { + public: + // LayoutListMarker is for legacy layout only + LayoutListMarkerTest() : ScopedLayoutNGForTest(false) {} +}; + +// https://crbug.com/1167174 +TEST_F(LayoutListMarkerTest, ListStyleTypeNoneTextAlternative) { + ScopedCSSAtRuleCounterStyleForTest scope(true); + + SetBodyInnerHTML(R"HTML( + <style> + li { + list-style-type: none; + list-style-image: linear-gradient(black, white); + } + </style> + <ul> + <li id="target">foo</li> + </ul> + )HTML"); + + Element* target = GetElementById("target"); + LayoutObject* marker = + ListMarker::MarkerFromListItem(target->GetLayoutObject()); + + // Should not crash + EXPECT_EQ("", To<LayoutListMarker>(marker)->TextAlternative()); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc index 9c52a4d..3d98398 100644 --- a/third_party/blink/renderer/core/layout/layout_object.cc +++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -588,7 +588,7 @@ // CSS clip-path/mask/filter induces a stacking context and applies inherited // clip to that stacking context, while resetting clip for descendants. This // special behavior is already handled elsewhere. - if (HasClip() || HasNonVisibleOverflow()) + if (HasClip() || ShouldClipOverflowAlongEitherAxis()) return true; // Paint containment establishes isolation which creates clip isolation nodes. // Style & Layout containment also establish isolation (see @@ -1063,10 +1063,9 @@ // In LayoutNG, if box has any OOF descendants, they are propagated to // parent. Therefore, we must mark parent chain for layout. - if (const NGLayoutResult* layouot_result = + if (const NGLayoutResult* layout_result = layout_box->GetCachedLayoutResult()) { - if (layouot_result->PhysicalFragment() - .HasOutOfFlowPositionedDescendants()) + if (layout_result->PhysicalFragment().HasOutOfFlowPositionedDescendants()) return false; } } @@ -1092,7 +1091,7 @@ if (object->IsTextControlIncludingNG()) return true; - if (!object->HasNonVisibleOverflow()) + if (!object->ShouldClipOverflowAlongBothAxis()) return false; // Scrollbar parts can be removed during layout. Avoid the complexity of @@ -2699,7 +2698,7 @@ Element* viewport_defining_element = GetDocument().ViewportDefiningElement(); while (object) { auto* block = DynamicTo<LayoutBlock>(object); - if (block && (block->HasNonVisibleOverflow() || + if (block && (block->IsScrollContainer() || block->GetNode() == viewport_defining_element)) { block->SetScrollAnchorDisablingStyleChanged(true); return;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_node.h b/third_party/blink/renderer/core/layout/ng/ng_block_node.h index 302adc9..d2f5206 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_block_node.h +++ b/third_party/blink/renderer/core/layout/ng/ng_block_node.h
@@ -244,18 +244,6 @@ LayoutUnit percentage_resolution_inline_size) const; }; -// The NGBlockNode hash is based on its LayoutBox member. -struct NGBlockNodeHash : PtrHash<const LayoutBox*> { - STATIC_ONLY(NGBlockNodeHash); - static unsigned GetHash(const NGBlockNode& key) { - return PtrHash<const LayoutBox>::GetHash(key.GetLayoutBox()); - } - static bool Equal(const NGBlockNode& a, const NGBlockNode& b) { - return PtrHash<const LayoutBox>::Equal(a.GetLayoutBox(), b.GetLayoutBox()); - } - static const bool safe_to_compare_to_empty_or_deleted = true; -}; - template <> struct DowncastTraits<NGBlockNode> { static bool AllowFrom(const NGLayoutInputNode& node) { @@ -265,31 +253,4 @@ } // namespace blink -namespace WTF { - -template <> -struct DefaultHash<blink::NGBlockNode> { - STATIC_ONLY(DefaultHash); - typedef blink::NGBlockNodeHash Hash; -}; - -template <> -struct HashTraits<blink::NGBlockNode> - : public GenericHashTraits<blink::NGBlockNode> { - static const bool kEmptyValueIsZero = false; - static const bool kHasIsEmptyValueFunction = true; - static bool IsEmptyValue(const blink::NGBlockNode& value) { - return !value.GetLayoutBox(); - } - static blink::NGBlockNode EmptyValue() { return nullptr; } - static void ConstructDeletedValue(blink::NGBlockNode& slot, bool) { - slot = blink::NGBlockNode(reinterpret_cast<blink::LayoutBox*>(-1)); - } - static bool IsDeletedValue(const blink::NGBlockNode& value) { - return value.GetLayoutBox() == reinterpret_cast<blink::LayoutBox*>(-1); - } -}; - -} // namespace WTF - #endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_NODE_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.cc b/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.cc index 981d0a115..1435b43 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.cc
@@ -243,11 +243,11 @@ void NGContainerFragmentBuilder::AddMulticolWithPendingOOFs( const NGBlockNode& multicol) { DCHECK(To<LayoutBlockFlow>(multicol.GetLayoutBox())->MultiColumnFlowThread()); - multicols_with_pending_oofs_.insert(multicol); + multicols_with_pending_oofs_.insert(multicol.GetLayoutBox()); } void NGContainerFragmentBuilder::SwapMulticolsWithPendingOOFs( - HashSet<NGBlockNode>* multicols_with_pending_oofs) { + MulticolCollection* multicols_with_pending_oofs) { DCHECK(multicols_with_pending_oofs->IsEmpty()); std::swap(multicols_with_pending_oofs_, *multicols_with_pending_oofs); } @@ -297,8 +297,8 @@ if (box_fragment->HasMulticolsWithPendingOOFs()) { const auto& multicols_with_pending_oofs = box_fragment->MulticolsWithPendingOOFs(); - for (const NGBlockNode& multicol : multicols_with_pending_oofs) - AddMulticolWithPendingOOFs(multicol); + for (LayoutBox* multicol : multicols_with_pending_oofs) + AddMulticolWithPendingOOFs(NGBlockNode(multicol)); } // If we find a multicol with OOF positioned fragmentainer descendants,
diff --git a/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.h b/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.h index d519995..fee7afc 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.h +++ b/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.h
@@ -45,6 +45,7 @@ scoped_refptr<const NGPhysicalFragment> fragment; }; typedef Vector<ChildWithOffset, 4> ChildrenVector; + using MulticolCollection = HashSet<LayoutBox*>; LayoutUnit BfcLineOffset() const { return bfc_line_offset_; } void SetBfcLineOffset(LayoutUnit bfc_line_offset) { @@ -142,7 +143,7 @@ Vector<NGLogicalOutOfFlowPositionedNode>* descendants); void SwapMulticolsWithPendingOOFs( - HashSet<NGBlockNode>* multicols_with_pending_oofs); + MulticolCollection* multicols_with_pending_oofs); bool HasOutOfFlowPositionedCandidates() const { return !oof_positioned_candidates_.IsEmpty(); @@ -260,7 +261,7 @@ oof_positioned_fragmentainer_descendants_; Vector<NGLogicalOutOfFlowPositionedNode> oof_positioned_descendants_; - HashSet<NGBlockNode> multicols_with_pending_oofs_; + MulticolCollection multicols_with_pending_oofs_; NGUnpositionedListMarker unpositioned_list_marker_;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc index f9e6582..c084d4e 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc
@@ -145,12 +145,13 @@ } if (container_builder_->HasMulticolsWithPendingOOFs()) { - HashSet<NGBlockNode> multicols_with_pending_oofs; + NGContainerFragmentBuilder::MulticolCollection + multicols_with_pending_oofs; container_builder_->SwapMulticolsWithPendingOOFs( &multicols_with_pending_oofs); DCHECK(!multicols_with_pending_oofs.IsEmpty()); - for (const NGBlockNode& multicol : multicols_with_pending_oofs) - LayoutOOFsInMulticol(multicol); + for (LayoutBox* multicol : multicols_with_pending_oofs) + LayoutOOFsInMulticol(NGBlockNode(multicol)); } }
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h index ed0bc86..b0356143 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h +++ b/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h
@@ -34,6 +34,7 @@ const base::Optional<PhysicalRect> updated_layout_overflow = base::nullopt); + using MulticolCollection = NGContainerFragmentBuilder::MulticolCollection; using PassKey = base::PassKey<NGPhysicalBoxFragment>; NGPhysicalBoxFragment(PassKey, NGBoxFragmentBuilder* builder, @@ -161,10 +162,10 @@ return !ComputeRareDataAddress()->multicols_with_pending_oofs.IsEmpty(); } - HashSet<NGBlockNode> MulticolsWithPendingOOFs() const { + MulticolCollection MulticolsWithPendingOOFs() const { if (!has_rare_data_) - return HashSet<NGBlockNode>(); - return const_cast<HashSet<NGBlockNode>&>( + return MulticolCollection(); + return const_cast<MulticolCollection&>( ComputeRareDataAddress()->multicols_with_pending_oofs); } @@ -319,7 +320,7 @@ Vector<NGPhysicalOutOfFlowPositionedNode> oof_positioned_fragmentainer_descendants; - HashSet<NGBlockNode> multicols_with_pending_oofs; + MulticolCollection multicols_with_pending_oofs; const std::unique_ptr<const NGMathMLPaintInfo> mathml_paint_info; // TablesNG rare data.
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc index 294cdff..e9eae57c 100644 --- a/third_party/blink/renderer/core/loader/document_loader.cc +++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -190,7 +190,6 @@ KURL unreachable_url; KURL pre_redirect_url_for_failed_navigations; std::unique_ptr<WebNavigationBodyLoader> body_loader; - network::mojom::IPAddressSpace ip_address_space; bool grant_load_local_resources; base::Optional<blink::mojom::FetchCacheMode> force_fetch_cache_mode; FramePolicy frame_policy; @@ -284,7 +283,6 @@ unreachable_url_(params_->unreachable_url), pre_redirect_url_for_failed_navigations_( params_->pre_redirect_url_for_failed_navigations), - ip_address_space_(params_->ip_address_space), grant_load_local_resources_(params_->grant_load_local_resources), force_fetch_cache_mode_(params_->force_fetch_cache_mode), frame_policy_(params_->frame_policy.value_or(FramePolicy())), @@ -461,7 +459,6 @@ params->http_body = http_body_; params->pre_redirect_url_for_failed_navigations = pre_redirect_url_for_failed_navigations_; - params->ip_address_space = ip_address_space_; params->force_fetch_cache_mode = force_fetch_cache_mode_; params->service_worker_network_provider = std::move(service_worker_network_provider_); @@ -1802,7 +1799,7 @@ // architecture. if (!Document::ShouldInheritSecurityOriginFromOwner(Url()) && commit_reason_ != CommitReason::kJavascriptUrl) { - agent->SetIsOriginKeyed(origin_agent_cluster_); + agent->SetIsExplicitlyOriginKeyed(origin_agent_cluster_); } } else { if (frame_->GetSettings()->GetShouldReuseGlobalForUnownedMainFrame() && @@ -1840,12 +1837,14 @@ for (auto to_upgrade : parent_context->InsecureNavigationsToUpgrade()) security_context.AddInsecureNavigationUpgrade(to_upgrade); } - frame_->DomWindow()->SetAddressSpace(ip_address_space_); if (base::FeatureList::IsEnabled(blink::features::kPolicyContainer)) { frame_->DomWindow()->SetReferrerPolicy( frame_->GetPolicyContainer()->GetReferrerPolicy()); + frame_->DomWindow()->SetAddressSpace( + frame_->GetPolicyContainer()->GetIPAddressSpace()); } + String referrer_policy_header = response_.HttpHeaderField(http_names::kReferrerPolicy); if (!referrer_policy_header.IsNull()) {
diff --git a/third_party/blink/renderer/core/loader/document_loader.h b/third_party/blink/renderer/core/loader/document_loader.h index ef7fa84..23841e1 100644 --- a/third_party/blink/renderer/core/loader/document_loader.h +++ b/third_party/blink/renderer/core/loader/document_loader.h
@@ -452,8 +452,6 @@ const KURL unreachable_url_; const KURL pre_redirect_url_for_failed_navigations_; std::unique_ptr<WebNavigationBodyLoader> body_loader_; - const network::mojom::IPAddressSpace ip_address_space_ = - network::mojom::IPAddressSpace::kUnknown; const bool grant_load_local_resources_ = false; const base::Optional<blink::mojom::FetchCacheMode> force_fetch_cache_mode_; const FramePolicy frame_policy_;
diff --git a/third_party/blink/renderer/core/loader/frame_loader_test.cc b/third_party/blink/renderer/core/loader/frame_loader_test.cc index 9cae016..4b1a35f 100644 --- a/third_party/blink/renderer/core/loader/frame_loader_test.cc +++ b/third_party/blink/renderer/core/loader/frame_loader_test.cc
@@ -133,7 +133,8 @@ WebNavigationParams::CreateWithHTMLBuffer(SharedBuffer::Create(), url); params->policy_container = std::make_unique<WebPolicyContainer>( WebPolicyContainerDocumentPolicies{ - network::mojom::ReferrerPolicy::kAlways}, + network::mojom::ReferrerPolicy::kAlways, + network::mojom::IPAddressSpace::kPublic}, CrossVariantMojoAssociatedRemote< mojom::PolicyContainerHostInterfaceBase>()); LocalFrame* local_frame = @@ -141,7 +142,8 @@ local_frame->Loader().CommitNavigation(std::move(params), nullptr); EXPECT_EQ(mojom::blink::PolicyContainerDocumentPolicies::New( - network::mojom::ReferrerPolicy::kAlways), + network::mojom::ReferrerPolicy::kAlways, + network::mojom::IPAddressSpace::kPublic), local_frame->GetPolicyContainer()->GetPolicies()); }
diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc index 022b95e..91797180 100644 --- a/third_party/blink/renderer/core/page/page.cc +++ b/third_party/blink/renderer/core/page/page.cc
@@ -333,6 +333,7 @@ main_frame_ = main_frame; page_scheduler_->SetIsMainFrameLocal(main_frame->IsLocalFrame()); + visual_viewport_->Reset(); } LocalFrame* Page::DeprecatedLocalMainFrame() const {
diff --git a/third_party/blink/renderer/core/scheduler_integration_tests/frame_throttling_test.cc b/third_party/blink/renderer/core/scheduler_integration_tests/frame_throttling_test.cc index aa684e3..4f2f4bb 100644 --- a/third_party/blink/renderer/core/scheduler_integration_tests/frame_throttling_test.cc +++ b/third_party/blink/renderer/core/scheduler_integration_tests/frame_throttling_test.cc
@@ -1719,7 +1719,7 @@ intersection.viewport_intersection = gfx::Rect(0, 0, 100, 100); LocalFrameRoot().FrameWidget()->Resize(gfx::Size(300, 200)); static_cast<WebFrameWidgetImpl*>(LocalFrameRoot().FrameWidget()) - ->SetViewportIntersection(intersection.Clone()); + ->ApplyViewportIntersectionForTesting(intersection.Clone()); auto* root_frame = LocalFrameRoot().GetFrame(); auto* frame_document = @@ -1760,7 +1760,7 @@ // Show the frame without any other change. LocalFrameRoot().WasShown(); static_cast<WebFrameWidgetImpl*>(LocalFrameRoot().FrameWidget()) - ->SetViewportIntersection(intersection.Clone()); + ->ApplyViewportIntersectionForTesting(intersection.Clone()); CompositeFrame(); EXPECT_EQ(root_frame->RemoteViewportIntersection(), IntRect(0, 0, 100, 100)); EXPECT_FALSE(root_frame->View()->CanThrottleRenderingForPropagation());
diff --git a/third_party/blink/renderer/core/style/computed_style.h b/third_party/blink/renderer/core/style/computed_style.h index 6d8a64b..b570332 100644 --- a/third_party/blink/renderer/core/style/computed_style.h +++ b/third_party/blink/renderer/core/style/computed_style.h
@@ -967,7 +967,7 @@ AtomicString ListStyleStringValue() const; // TODO(crbug.com/687225): Get rid of the deprecated functions above so that // the getter can also be auto-generated. - ListStyleTypeData* GetListStyleType() const; + CORE_EXPORT ListStyleTypeData* GetListStyleType() const; bool ListStyleTypeDataEquivalent(const ComputedStyle& other) const { return DataEquivalent(ListStyleTypeInternal(), other.ListStyleTypeInternal());
diff --git a/third_party/blink/renderer/core/testing/fake_remote_frame_host.cc b/third_party/blink/renderer/core/testing/fake_remote_frame_host.cc index 50a7d2d..59d23ccf 100644 --- a/third_party/blink/renderer/core/testing/fake_remote_frame_host.cc +++ b/third_party/blink/renderer/core/testing/fake_remote_frame_host.cc
@@ -52,7 +52,8 @@ void FakeRemoteFrameHost::Detach() {} void FakeRemoteFrameHost::UpdateViewportIntersection( - blink::mojom::blink::ViewportIntersectionStatePtr intersection_state) {} + blink::mojom::blink::ViewportIntersectionStatePtr intersection_state, + const base::Optional<FrameVisualProperties>& visual_properties) {} void FakeRemoteFrameHost::SynchronizeVisualProperties( const blink::FrameVisualProperties& properties) {}
diff --git a/third_party/blink/renderer/core/testing/fake_remote_frame_host.h b/third_party/blink/renderer/core/testing/fake_remote_frame_host.h index dd3b733..6f23b44 100644 --- a/third_party/blink/renderer/core/testing/fake_remote_frame_host.h +++ b/third_party/blink/renderer/core/testing/fake_remote_frame_host.h
@@ -49,8 +49,8 @@ int document_cookie) override; void Detach() override; void UpdateViewportIntersection( - blink::mojom::blink::ViewportIntersectionStatePtr intersection_state) - override; + blink::mojom::blink::ViewportIntersectionStatePtr intersection_state, + const base::Optional<FrameVisualProperties>& visual_properties) override; void SynchronizeVisualProperties( const blink::FrameVisualProperties& properties) override;
diff --git a/third_party/blink/renderer/modules/BUILD.gn b/third_party/blink/renderer/modules/BUILD.gn index edd4884..65f499c 100644 --- a/third_party/blink/renderer/modules/BUILD.gn +++ b/third_party/blink/renderer/modules/BUILD.gn
@@ -611,6 +611,59 @@ ] } + image_decoder_fuzzer_seed_corpus_dir = + "$target_gen_dir/webcodecs/image_fuzzer_seed_corpus" + + action("generate_image_decoder_fuzzer_corpus") { + script = "webcodecs/fuzzer_seed_corpus/generate_image_corpus.py" + sources = [ "webcodecs/image_decoder_base.textproto" ] + + data = [ "//third_party/blink/web_tests/images/resources/" ] + + deps = [ + "//third_party/blink/renderer/modules/webcodecs:fuzzer_protos", + "//third_party/protobuf:py_proto", + ] + + pyproto_path = "$root_out_dir/pyproto" + + args = [ "-i" ] + args += rebase_path(sources, root_build_dir) + args += [ + "-o", + "ignored", + "-d", + rebase_path(image_decoder_fuzzer_seed_corpus_dir, root_build_dir), + "-p", + rebase_path(pyproto_path, root_build_dir), + "-p", + rebase_path("$pyproto_path/third_party/blink/renderer/modules/webcodecs/", + root_build_dir), + ] + + outputs = [ image_decoder_fuzzer_seed_corpus_dir ] + } + + fuzzer_test("webcodecs_image_decoder_fuzzer") { + sources = [ + "webcodecs/fuzzer_utils.cc", + "webcodecs/fuzzer_utils.h", + "webcodecs/image_decoder_fuzzer.cc", + ] + + seed_corpus = image_decoder_fuzzer_seed_corpus_dir + seed_corpus_deps = [ ":generate_image_decoder_fuzzer_corpus" ] + + deps = [ + ":modules", + "//third_party/blink/renderer/core:testing", + "//third_party/blink/renderer/modules/webcodecs:fuzzer_protos", + "//third_party/blink/renderer/platform:blink_fuzzer_test_support", + "//third_party/libprotobuf-mutator", + "//third_party/protobuf:protobuf_lite", + ] + } + fuzzer_test("webcodecs_audio_decoder_fuzzer") { sources = [ "webcodecs/audio_decoder_fuzzer.cc",
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 ffac50da..8f35771 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
@@ -33,6 +33,7 @@ #include <string> #include "third_party/blink/renderer/core/aom/accessible_node.h" +#include "third_party/blink/renderer/core/css/counter_style_map.h" #include "third_party/blink/renderer/core/css/css_property_names.h" #include "third_party/blink/renderer/core/dom/element_traversal.h" #include "third_party/blink/renderer/core/dom/node_computed_style.h" @@ -889,19 +890,38 @@ if (style_image && !style_image->ErrorOccurred()) return ax::mojom::blink::ListStyle::kImage; - switch (computed_style->ListStyleType()) { - case EListStyleType::kNone: + // TODO(crbug.com/1166766): Use the 'speak-as' descriptor value following + // https://drafts.csswg.org/css-counter-styles-3/#counter-style-speak-as + switch (ListMarker::GetListStyleCategory(*GetDocument(), *computed_style)) { + case ListMarker::ListStyleCategory::kNone: return ax::mojom::blink::ListStyle::kNone; - case EListStyleType::kDisc: - return ax::mojom::blink::ListStyle::kDisc; - case EListStyleType::kCircle: - return ax::mojom::blink::ListStyle::kCircle; - case EListStyleType::kSquare: - return ax::mojom::blink::ListStyle::kSquare; - case EListStyleType::kDecimal: - case EListStyleType::kDecimalLeadingZero: - return ax::mojom::blink::ListStyle::kNumeric; - default: + case ListMarker::ListStyleCategory::kSymbol: { + AtomicString counter_style_name = + computed_style->GetListStyleType()->GetCounterStyleName(); + if (counter_style_name == "disc") + return ax::mojom::blink::ListStyle::kDisc; + if (counter_style_name == "circle") + return ax::mojom::blink::ListStyle::kCircle; + if (counter_style_name == "square") + return ax::mojom::blink::ListStyle::kSquare; + return ax::mojom::blink::ListStyle::kOther; + } + case ListMarker::ListStyleCategory::kLanguage: { + AtomicString counter_style_name = + computed_style->GetListStyleType()->GetCounterStyleName(); + if (counter_style_name == "decimal") + return ax::mojom::blink::ListStyle::kNumeric; + if (counter_style_name == "decimal-leading-zero") { + // 'decimal-leading-zero' may be overridden by custom counter styles. We + // return kNumeric only when we are using the predefined counter style. + if (&ListMarker::GetCounterStyle(*GetDocument(), *computed_style) == + &CounterStyleMap::GetUACounterStyleMap() + ->FindCounterStyleAcrossScopes("decimal-leading-zero")) + return ax::mojom::blink::ListStyle::kNumeric; + } + return ax::mojom::blink::ListStyle::kOther; + } + case ListMarker::ListStyleCategory::kStaticString: return ax::mojom::blink::ListStyle::kOther; } }
diff --git a/third_party/blink/renderer/modules/app_banner/OWNERS b/third_party/blink/renderer/modules/app_banner/OWNERS index 92faaaf..b9a348a 100644 --- a/third_party/blink/renderer/modules/app_banner/OWNERS +++ b/third_party/blink/renderer/modules/app_banner/OWNERS
@@ -1,2 +1,5 @@ +cmp@chromium.org +dmurph@chromium.org dominickn@chromium.org mlamouri@chromium.org +msw@chromium.org
diff --git a/third_party/blink/renderer/modules/document_metadata/OWNERS b/third_party/blink/renderer/modules/document_metadata/OWNERS index 65f49a1..c48e48e 100644 --- a/third_party/blink/renderer/modules/document_metadata/OWNERS +++ b/third_party/blink/renderer/modules/document_metadata/OWNERS
@@ -1,3 +1 @@ -beccahughes@chromium.org steimel@chromium.org -sgbowen@google.com
diff --git a/third_party/blink/renderer/modules/launch/OWNERS b/third_party/blink/renderer/modules/launch/OWNERS index 78c5c0fe..7e253a66 100644 --- a/third_party/blink/renderer/modules/launch/OWNERS +++ b/third_party/blink/renderer/modules/launch/OWNERS
@@ -1,2 +1,4 @@ +cmp@chromium.org dmurph@chromium.org mgiuca@chromium.org +msw@chromium.org
diff --git a/third_party/blink/renderer/modules/manifest/OWNERS b/third_party/blink/renderer/modules/manifest/OWNERS index 5275d5c..d745b35 100644 --- a/third_party/blink/renderer/modules/manifest/OWNERS +++ b/third_party/blink/renderer/modules/manifest/OWNERS
@@ -1,6 +1,9 @@ +cmp@chromium.org +dmurph@chromium.org dominickn@chromium.org mgiuca@chromium.org mlamouri@chromium.org +msw@chromium.org per-file *_type_converter*.*=set noparent per-file *_type_converter*.*=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/renderer/modules/media_controls/OWNERS b/third_party/blink/renderer/modules/media_controls/OWNERS index 9772b4f..b7dd2c3 100644 --- a/third_party/blink/renderer/modules/media_controls/OWNERS +++ b/third_party/blink/renderer/modules/media_controls/OWNERS
@@ -1,3 +1,2 @@ -beccahughes@chromium.org mlamouri@chromium.org steimel@chromium.org
diff --git a/third_party/blink/renderer/modules/mediasession/OWNERS b/third_party/blink/renderer/modules/mediasession/OWNERS index e90206c..2a73d29 100644 --- a/third_party/blink/renderer/modules/mediasession/OWNERS +++ b/third_party/blink/renderer/modules/mediasession/OWNERS
@@ -1,4 +1,3 @@ -beccahughes@chromium.org foolip@chromium.org mlamouri@chromium.org
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_video_track_underlying_sink.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_track_underlying_sink.cc index d68f882..4e06dcac 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_video_track_underlying_sink.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_track_underlying_sink.cc
@@ -52,7 +52,7 @@ // Invalidate the JS |video_frame|. Otherwise, the media frames might not be // released, which would leak resources and also cause some MediaStream // sources such as cameras to drop frames. - video_frame->destroy(); + video_frame->close(); return ScriptPromise::CastUndefined(script_state); }
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_video_track_underlying_sink_test.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_track_underlying_sink_test.cc index 9017c71..838544c 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_video_track_underlying_sink_test.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_track_underlying_sink_test.cc
@@ -135,7 +135,7 @@ dummy_exception_state.ClearException(); VideoFrame* video_frame = nullptr; auto chunk = CreateVideoFrameChunk(script_state, &video_frame); - video_frame->destroy(); + video_frame->close(); EXPECT_FALSE(dummy_exception_state.HadException()); sink->write(script_state, ScriptValue::CreateNull(v8_scope.GetIsolate()), nullptr, dummy_exception_state);
diff --git a/third_party/blink/renderer/modules/remote_objects/remote_object.cc b/third_party/blink/renderer/modules/remote_objects/remote_object.cc index 8de22cd7..ad89462 100644 --- a/third_party/blink/renderer/modules/remote_objects/remote_object.cc +++ b/third_party/blink/renderer/modules/remote_objects/remote_object.cc
@@ -165,6 +165,82 @@ std::move(remote_typed_array)); } + if (js_value->IsObject()) { + v8::Local<v8::Object> object_val = js_value.As<v8::Object>(); + v8::Local<v8::Value> length_value; + v8::TryCatch try_catch(isolate); + v8::MaybeLocal<v8::Value> maybe_length_value = object_val->Get( + isolate->GetCurrentContext(), V8AtomicString(isolate, "length")); + if (try_catch.HasCaught() || !maybe_length_value.ToLocal(&length_value)) { + length_value = v8::Null(isolate); + try_catch.Reset(); + } + + if (!length_value->IsNumber()) { + return mojom::blink::RemoteInvocationArgument::NewSingletonValue( + mojom::blink::SingletonJavaScriptValue::kNull); + } + + double length = length_value.As<v8::Number>()->Value(); + if (length < 0 || length > std::numeric_limits<int32_t>::max()) { + return mojom::blink::RemoteInvocationArgument::NewSingletonValue( + mojom::blink::SingletonJavaScriptValue::kNull); + } + + v8::Local<v8::Array> property_names; + if (!object_val->GetOwnPropertyNames(isolate->GetCurrentContext()) + .ToLocal(&property_names)) { + return mojom::blink::RemoteInvocationArgument::NewSingletonValue( + mojom::blink::SingletonJavaScriptValue::kNull); + } + + WTF::Vector<mojom::blink::RemoteInvocationArgumentPtr> nested_arguments( + SafeCast<wtf_size_t>(length)); + for (uint32_t i = 0; i < property_names->Length(); ++i) { + v8::Local<v8::Value> key; + if (!property_names->Get(isolate->GetCurrentContext(), i).ToLocal(&key) || + key->IsString()) { + try_catch.Reset(); + continue; + } + + if (!key->IsNumber()) { + NOTREACHED() << "Key \"" << *v8::String::Utf8Value(isolate, key) + << "\" is not a number"; + continue; + } + + uint32_t key_value; + if (!key->Uint32Value(isolate->GetCurrentContext()).To(&key_value)) + continue; + + v8::Local<v8::Value> value_v8; + v8::MaybeLocal<v8::Value> maybe_value = + object_val->Get(isolate->GetCurrentContext(), key); + if (try_catch.HasCaught() || !maybe_value.ToLocal(&value_v8)) { + value_v8 = v8::Null(isolate); + try_catch.Reset(); + } + + auto nested_argument = JSValueToMojom(value_v8, isolate); + if (!nested_argument) + continue; + nested_arguments[key_value] = std::move(nested_argument); + } + + // Ensure that the vector has a null value. + for (wtf_size_t i = 0; i < nested_arguments.size(); i++) { + if (!nested_arguments[i]) { + nested_arguments[i] = + mojom::blink::RemoteInvocationArgument::NewSingletonValue( + mojom::blink::SingletonJavaScriptValue::kNull); + } + } + + return mojom::blink::RemoteInvocationArgument::NewArrayValue( + std::move(nested_arguments)); + } + return nullptr; }
diff --git a/third_party/blink/renderer/modules/webcodecs/BUILD.gn b/third_party/blink/renderer/modules/webcodecs/BUILD.gn index 2c407ec..228e4faa 100644 --- a/third_party/blink/renderer/modules/webcodecs/BUILD.gn +++ b/third_party/blink/renderer/modules/webcodecs/BUILD.gn
@@ -113,5 +113,6 @@ } fuzzable_proto_library("fuzzer_protos") { + generate_python = true sources = [ "fuzzer_inputs.proto" ] }
diff --git a/third_party/blink/renderer/modules/webcodecs/audio_encoder.cc b/third_party/blink/renderer/modules/webcodecs/audio_encoder.cc index 8d3da6b..851a68b 100644 --- a/third_party/blink/renderer/modules/webcodecs/audio_encoder.cc +++ b/third_party/blink/renderer/modules/webcodecs/audio_encoder.cc
@@ -97,7 +97,7 @@ media_encoder_->EncodeAudio(*audio_bus, time); } - frame->destroy(); + frame->close(); } void AudioEncoder::ProcessReconfigure(Request* request) {
diff --git a/third_party/blink/renderer/modules/webcodecs/audio_frame.h b/third_party/blink/renderer/modules/webcodecs/audio_frame.h index 28298d79..82c9cd3 100644 --- a/third_party/blink/renderer/modules/webcodecs/audio_frame.h +++ b/third_party/blink/renderer/modules/webcodecs/audio_frame.h
@@ -30,8 +30,6 @@ uint64_t timestamp() const; AudioBuffer* buffer() const; - void destroy() { close(); } - // GarbageCollected override. void Trace(Visitor*) const override;
diff --git a/third_party/blink/renderer/modules/webcodecs/encoder_base.cc b/third_party/blink/renderer/modules/webcodecs/encoder_base.cc index c4682e0..eb547df 100644 --- a/third_party/blink/renderer/modules/webcodecs/encoder_base.cc +++ b/third_party/blink/renderer/modules/webcodecs/encoder_base.cc
@@ -122,18 +122,18 @@ return; } - // This will fail if |frame| is already destroyed. + // This will fail if |frame| is already closed. auto* internal_frame = CloneFrame(frame, context); if (!internal_frame) { exception_state.ThrowDOMException(DOMExceptionCode::kOperationError, - "Cannot encode destroyed frame."); + "Cannot encode closed frame."); return; } - // At this point, we have "consumed" the frame, and will destroy the clone - // in ProcessEncode(). - frame->destroy(); + // At this point, we have "consumed" the frame, and will close the clone in + // ProcessEncode(). + frame->close(); Request* request = MakeGarbageCollected<Request>(); request->reset_count = reset_count_; @@ -198,7 +198,7 @@ if (pending_req->resolver) pending_req->resolver.Release()->Resolve(); if (pending_req->frame) - pending_req->frame.Release()->destroy(); + pending_req->frame.Release()->close(); } stall_request_processing_ = false; }
diff --git a/third_party/blink/renderer/modules/webcodecs/fuzzer_inputs.proto b/third_party/blink/renderer/modules/webcodecs/fuzzer_inputs.proto index ab059cb..15db4fc 100644 --- a/third_party/blink/renderer/modules/webcodecs/fuzzer_inputs.proto +++ b/third_party/blink/renderer/modules/webcodecs/fuzzer_inputs.proto
@@ -142,4 +142,64 @@ message VideoEncoderApiInvocationSequence { repeated VideoEncoderApiInvocation invocations = 1; -} \ No newline at end of file +} + +message DecodeImage { + optional uint32 frame_index = 1; + optional bool complete_frames_only = 2; +} + +message DecodeMetadata {} + +message SelectTrack { + required uint32 track_id = 1; +} + +message ImageDecoderApiInvocation { + oneof Api { + DecodeImage decode_image = 1; + DecodeMetadata decode_metadata = 2; + SelectTrack select_track = 3; + } +} + +message ImageBitmapOptions { + enum ImageOrientation { + ORIENTATION_NONE = 0; + FLIPY = 1; + } + enum PremultiplyAlpha { + PREMULTIPLY_NONE = 0; + PREMULTIPLY = 1; + PREMULTIPLY_DEFAULT = 2; + } + enum ColorSpaceConversion { + CS_NONE = 0; + CS_DEFAULT = 1; + } + enum ResizeQuality { + PIXELATED = 0; + LOW = 1; + MEDIUM = 2; + HIGH = 3; + } + + optional ImageOrientation image_orientation = 1; + optional PremultiplyAlpha premultiply_alpha = 2; + optional ColorSpaceConversion color_space_conversion = 3; + optional uint32 resize_width = 4; + optional uint32 resize_height = 5; + optional ResizeQuality resize_quality = 6; +} + +message ConfigureImageDecoder { + required bytes data = 1; + required string type = 2; + optional ImageBitmapOptions options = 3; + optional bool prefer_animation = 4; +} + +message ImageDecoderApiInvocationSequence { + required ConfigureImageDecoder config = 1; + repeated ImageDecoderApiInvocation invocations = 2; +}
diff --git a/third_party/blink/renderer/modules/webcodecs/fuzzer_seed_corpus/generate_image_corpus.py b/third_party/blink/renderer/modules/webcodecs/fuzzer_seed_corpus/generate_image_corpus.py new file mode 100644 index 0000000..1fc6474 --- /dev/null +++ b/third_party/blink/renderer/modules/webcodecs/fuzzer_seed_corpus/generate_image_corpus.py
@@ -0,0 +1,81 @@ +# Copyright 2021 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +""" +Assembles a binary protobuf from a base ImageDecoder fuzzer protobuf and the +contents of the web_tests/images/resources/ directory. +""" + +import copy +import os +import sys + +# go up 6 parent directories to //src/third_party/blink +path_to_blink = os.path.abspath( + os.path.join(os.path.dirname(os.path.abspath(__file__)), + *[os.path.pardir] * 4)) + +# go up 2 parent directories to //src +path_to_src_root = os.path.join(path_to_blink, *[os.path.pardir] * 2) + +# allow importing modules from //src/components/resources/protobufs +sys.path.insert( + 0, + os.path.normpath( + os.path.join(path_to_src_root, 'components/resources/protobufs'))) + +from binary_proto_generator import BinaryProtoGenerator + +EXTENSIONS_MAP = { + "avif": "image/avif", + "png": "image/png", + "ico": "image/x-icon", + "bmp": "image/bmp", + "jpg": "image/jpeg", + "gif": "image/gif", + "cur": "image/x-icon", + "webp": "image/webp", +} + + +class ImageDecoderProtoGenerator(BinaryProtoGenerator): + def ImportProtoModule(self): + import fuzzer_inputs_pb2 + globals()['fuzzer_inputs_pb2'] = fuzzer_inputs_pb2 + + def EmptyProtoInstance(self): + return fuzzer_inputs_pb2.ImageDecoderApiInvocationSequence() + + def ProcessPb(self, opts, pb): + self._outdir = opts.outdir + self._processed_pb = pb + if not os.path.exists(self._outdir): + os.makedirs(self._outdir) + + def WritePb(self, image_fn, image_type): + pb = copy.deepcopy(self._processed_pb) + pb.config.type = image_type + with open(image_fn, 'rb') as input_image: + pb.config.data = input_image.read() + + out_fn = os.path.basename(image_fn) + '.pb' + with open(os.path.join(self._outdir, out_fn), 'wb') as out_file: + out_file.write(pb.SerializeToString()) + + +def main(): + generator = ImageDecoderProtoGenerator() + generator.Run() + + image_data_dir = os.path.join(path_to_blink, 'web_tests/images/resources/') + for root, _, files in os.walk(os.path.join(image_data_dir)): + for fn in files: + _, ext = os.path.splitext(fn) + ext = ext.lower().split('.')[1] + if ext.lower() in EXTENSIONS_MAP: + generator.WritePb(os.path.join(root, fn), + EXTENSIONS_MAP[ext.lower()]) + + +if __name__ == '__main__': + sys.exit(main())
diff --git a/third_party/blink/renderer/modules/webcodecs/image_decoder_base.textproto b/third_party/blink/renderer/modules/webcodecs/image_decoder_base.textproto new file mode 100644 index 0000000..0574663 --- /dev/null +++ b/third_party/blink/renderer/modules/webcodecs/image_decoder_base.textproto
@@ -0,0 +1,27 @@ +config: { + data: '$generated', + type: '$generated', + prefer_animation: false, +}, +invocations: [ + { + decode_metadata {} + }, + { + decode_image { + frame_index: 0, + complete_frames_only: true + } + }, + { + select_track { + track_id: 0 + } + }, + { + decode_image { + frame_index: 0, + complete_frames_only: true + } + } +]
diff --git a/third_party/blink/renderer/modules/webcodecs/image_decoder_fuzzer.cc b/third_party/blink/renderer/modules/webcodecs/image_decoder_fuzzer.cc new file mode 100644 index 0000000..9c0b18d --- /dev/null +++ b/third_party/blink/renderer/modules/webcodecs/image_decoder_fuzzer.cc
@@ -0,0 +1,166 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/run_loop.h" +#include "testing/libfuzzer/proto/lpm_interface.h" +#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" +#include "third_party/blink/renderer/bindings/core/v8/v8_image_bitmap_options.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_image_decoder_init.h" +#include "third_party/blink/renderer/core/frame/local_frame.h" +#include "third_party/blink/renderer/core/frame/settings.h" +#include "third_party/blink/renderer/core/testing/dummy_page_holder.h" +#include "third_party/blink/renderer/modules/webcodecs/fuzzer_inputs.pb.h" +#include "third_party/blink/renderer/modules/webcodecs/fuzzer_utils.h" +#include "third_party/blink/renderer/modules/webcodecs/image_decoder_external.h" +#include "third_party/blink/renderer/platform/bindings/exception_state.h" +#include "third_party/blink/renderer/platform/bindings/script_state.h" +#include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h" +#include "third_party/blink/renderer/platform/heap/persistent.h" +#include "third_party/blink/renderer/platform/testing/blink_fuzzer_test_support.h" +#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +#include "third_party/blink/renderer/platform/wtf/vector.h" + +#include <string> + +namespace blink { + +namespace { + +String ToImageOrientation(wc_fuzzer::ImageBitmapOptions_ImageOrientation type) { + switch (type) { + case wc_fuzzer::ImageBitmapOptions_ImageOrientation_ORIENTATION_NONE: + return "none"; + case wc_fuzzer::ImageBitmapOptions_ImageOrientation_FLIPY: + return "flipY"; + } +} + +String ToPremultiplyAlpha(wc_fuzzer::ImageBitmapOptions_PremultiplyAlpha type) { + switch (type) { + case wc_fuzzer::ImageBitmapOptions_PremultiplyAlpha_PREMULTIPLY_NONE: + return "none"; + case wc_fuzzer::ImageBitmapOptions_PremultiplyAlpha_PREMULTIPLY: + return "premultiply"; + case wc_fuzzer::ImageBitmapOptions_PremultiplyAlpha_PREMULTIPLY_DEFAULT: + return "default"; + } +} + +String ToColorSpaceConversion( + wc_fuzzer::ImageBitmapOptions_ColorSpaceConversion type) { + switch (type) { + case wc_fuzzer::ImageBitmapOptions_ColorSpaceConversion_CS_NONE: + return "none"; + case wc_fuzzer::ImageBitmapOptions_ColorSpaceConversion_CS_DEFAULT: + return "default"; + } +} + +String ToResizeQuality(wc_fuzzer::ImageBitmapOptions_ResizeQuality type) { + switch (type) { + case wc_fuzzer::ImageBitmapOptions_ResizeQuality_PIXELATED: + return "pixelated"; + case wc_fuzzer::ImageBitmapOptions_ResizeQuality_LOW: + return "low"; + case wc_fuzzer::ImageBitmapOptions_ResizeQuality_MEDIUM: + return "medium"; + case wc_fuzzer::ImageBitmapOptions_ResizeQuality_HIGH: + return "high"; + } +} + +} // namespace + +DEFINE_BINARY_PROTO_FUZZER( + const wc_fuzzer::ImageDecoderApiInvocationSequence& proto) { + static BlinkFuzzerTestSupport test_support = BlinkFuzzerTestSupport(); + static DummyPageHolder* page_holder = []() { + auto page_holder = std::make_unique<DummyPageHolder>(); + page_holder->GetFrame().GetSettings()->SetScriptEnabled(true); + return page_holder.release(); + }(); + + // + // NOTE: GC objects that need to survive iterations of the loop below + // must be Persistent<>! + // + // GC may be triggered by the RunLoop().RunUntilIdle() below, which will GC + // raw pointers on the stack. This is not required in production code because + // GC typically runs at the top of the stack, or is conservative enough to + // keep stack pointers alive. + // + + // Scoping Persistent<> refs so GC can collect these at the end. + { + Persistent<ScriptState> script_state = + ToScriptStateForMainWorld(&page_holder->GetFrame()); + ScriptState::Scope scope(script_state); + + Persistent<ImageDecoderInit> image_decoder_init = + MakeGarbageCollected<ImageDecoderInit>(); + image_decoder_init->setType(proto.config().type().c_str()); + DOMArrayBuffer* data_copy = DOMArrayBuffer::Create( + proto.config().data().data(), proto.config().data().size()); + image_decoder_init->setData( + ArrayBufferOrArrayBufferViewOrReadableStream::FromArrayBuffer( + data_copy)); + + Persistent<ImageBitmapOptions> options = ImageBitmapOptions::Create(); + options->setImageOrientation( + ToImageOrientation(proto.config().options().image_orientation())); + options->setPremultiplyAlpha( + ToPremultiplyAlpha(proto.config().options().premultiply_alpha())); + options->setColorSpaceConversion(ToColorSpaceConversion( + proto.config().options().color_space_conversion())); + options->setResizeWidth(proto.config().options().resize_width()); + options->setResizeHeight(proto.config().options().resize_height()); + options->setResizeQuality( + ToResizeQuality(proto.config().options().resize_quality())); + image_decoder_init->setOptions(options); + + image_decoder_init->setPreferAnimation(proto.config().prefer_animation()); + + Persistent<ImageDecoderExternal> image_decoder = + ImageDecoderExternal::Create(script_state, image_decoder_init, + IGNORE_EXCEPTION_FOR_TESTING); + + // Promises will be fulfilled synchronously since we're using an array + // buffer based source. + for (auto& invocation : proto.invocations()) { + switch (invocation.Api_case()) { + case wc_fuzzer::ImageDecoderApiInvocation::kDecodeImage: + image_decoder->decode( + invocation.decode_image().frame_index(), + invocation.decode_image().complete_frames_only()); + break; + case wc_fuzzer::ImageDecoderApiInvocation::kDecodeMetadata: + image_decoder->decodeMetadata(); + break; + case wc_fuzzer::ImageDecoderApiInvocation::kSelectTrack: + image_decoder->selectTrack(invocation.select_track().track_id(), + IGNORE_EXCEPTION_FOR_TESTING); + break; + case wc_fuzzer::ImageDecoderApiInvocation::API_NOT_SET: + break; + } + + // Give other tasks a chance to run (e.g. calling our output callback). + base::RunLoop().RunUntilIdle(); + + // TODO(crbug.com/1166925): Push the same image data incrementally into + // the fuzzer via a ReadableSource. + } + } + + // Request a V8 GC. Oilpan will be invoked by the GC epilogue. + // + // Multiple GCs may be required to ensure everything is collected (due to + // a chain of persistent handles), so some objects may not be collected until + // a subsequent iteration. This is slow enough as is, so we compromise on one + // major GC, as opposed to the 5 used in V8GCController for unit tests. + V8PerIsolateData::MainThreadIsolate()->RequestGarbageCollectionForTesting( + v8::Isolate::kFullGarbageCollection); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/modules/webcodecs/plane.cc b/third_party/blink/renderer/modules/webcodecs/plane.cc index 7652ddc4..da61c53 100644 --- a/third_party/blink/renderer/modules/webcodecs/plane.cc +++ b/third_party/blink/renderer/modules/webcodecs/plane.cc
@@ -70,7 +70,7 @@ auto local_frame = handle_->frame(); if (!local_frame) { exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, - "Cannot read from destroyed VideoFrame."); + "Cannot read from closed VideoFrame."); return; }
diff --git a/third_party/blink/renderer/modules/webcodecs/video_encoder.cc b/third_party/blink/renderer/modules/webcodecs/video_encoder.cc index 62bf1795..5b2aa9e 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_encoder.cc +++ b/third_party/blink/renderer/modules/webcodecs/video_encoder.cc
@@ -477,9 +477,8 @@ WTF::Bind(done_callback, WrapCrossThreadWeakPersistent(this), WrapCrossThreadPersistent(request))); - // We passed a copy of frame() above, so this should be safe to destroy - // here. - request->frame->destroy(); + // We passed a copy of frame() above, so this should be safe to close here. + request->frame->close(); } void VideoEncoder::OnReceivedGpuFactories(
diff --git a/third_party/blink/renderer/modules/webcodecs/video_frame.cc b/third_party/blink/renderer/modules/webcodecs/video_frame.cc index 3cc39a3..e872d63 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_frame.cc +++ b/third_party/blink/renderer/modules/webcodecs/video_frame.cc
@@ -23,6 +23,7 @@ #include "third_party/blink/renderer/core/html/canvas/image_data.h" #include "third_party/blink/renderer/core/imagebitmap/image_bitmap.h" #include "third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.h" +#include "third_party/blink/renderer/core/inspector/console_message.h" #include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h" #include "third_party/blink/renderer/platform/graphics/gpu/shared_gpu_context.h" #include "third_party/blink/renderer/platform/graphics/image.h" @@ -367,18 +368,26 @@ return local_frame->metadata().frame_duration->InMicroseconds(); } -void VideoFrame::destroy() { - // TODO(tguilbert): Add a warning when destroying already destroyed frames? +void VideoFrame::close() { + // TODO(tguilbert): Add a warning when closing already closed frames? handle_->Invalidate(); } +void VideoFrame::destroy(ExecutionContext* execution_context) { + execution_context->AddConsoleMessage(MakeGarbageCollected<ConsoleMessage>( + mojom::blink::ConsoleMessageSource::kDeprecation, + mojom::blink::ConsoleMessageLevel::kWarning, + "VideoFrame.destroy() is deprecated; use VideoFrame.close().")); + close(); +} + VideoFrame* VideoFrame::clone(ScriptState* script_state, ExceptionState& exception_state) { VideoFrame* frame = CloneFromNative(ExecutionContext::From(script_state)); if (!frame) { exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, - "Cannot clone destroyed VideoFrame."); + "Cannot clone closed VideoFrame."); return nullptr; }
diff --git a/third_party/blink/renderer/modules/webcodecs/video_frame.h b/third_party/blink/renderer/modules/webcodecs/video_frame.h index 58a02f9..94d70fe 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_frame.h +++ b/third_party/blink/renderer/modules/webcodecs/video_frame.h
@@ -37,7 +37,7 @@ // Creates a VideoFrame from an existing handle. // All frames sharing |handle| will have their |handle_| invalidated if any of - // the frames receives a call to destroy(). + // the frames receives a call to close(). explicit VideoFrame(scoped_refptr<VideoFrameHandle> handle); // video_frame.idl implementation. @@ -65,10 +65,13 @@ // Invalidates |handle_|, releasing underlying media::VideoFrame references. // This effectively "destroys" all frames sharing the same Handle. - void destroy(); + void close(); - // Creates a copy of |this|, with a new Handle, referencing the same - // media::VideoFrame. The cloned frame will not be destroyed when |this| is, + // DEPRECATED. Alias for close(). + void destroy(ExecutionContext*); + + // Creates a clone of |this|, with a new Handle, referencing the same + // media::VideoFrame. The cloned frame will not be closed when |this| is, // and its lifetime should be independently managed. VideoFrame* clone(ScriptState*, ExceptionState&); VideoFrame* CloneFromNative(ExecutionContext*);
diff --git a/third_party/blink/renderer/modules/webcodecs/video_frame.idl b/third_party/blink/renderer/modules/webcodecs/video_frame.idl index 4f0a433..ed293de 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_frame.idl +++ b/third_party/blink/renderer/modules/webcodecs/video_frame.idl
@@ -45,9 +45,12 @@ // TODO(sandersd): color space metadata. // TODO(sandersd): rotation metadata. + // DEPRECATED: use close() instead. // Release held resources immediately. - // TODO(sandersd): Describe how a destroyed VideoFrame acts. - void destroy(); + [CallWith=ExecutionContext] void destroy(); + + // Release held resources. + void close(); // Creates of the copy of this VideoFrame, which needs to be independently // destroyed.
diff --git a/third_party/blink/renderer/modules/webcodecs/video_frame_handle.cc b/third_party/blink/renderer/modules/webcodecs/video_frame_handle.cc index 893a424..0a6dcc9 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_frame_handle.cc +++ b/third_party/blink/renderer/modules/webcodecs/video_frame_handle.cc
@@ -14,26 +14,25 @@ DCHECK(frame_); DCHECK(context); - destruction_auditor_ = - VideoFrameLogger::From(*context).GetDestructionAuditor(); + close_auditor_ = VideoFrameLogger::From(*context).GetCloseAuditor(); - DCHECK(destruction_auditor_); + DCHECK(close_auditor_); } VideoFrameHandle::VideoFrameHandle( scoped_refptr<media::VideoFrame> frame, - scoped_refptr<VideoFrameLogger::VideoFrameDestructionAuditor> reporter) - : frame_(std::move(frame)), destruction_auditor_(std::move(reporter)) { + scoped_refptr<VideoFrameLogger::VideoFrameCloseAuditor> close_auditor) + : frame_(std::move(frame)), close_auditor_(std::move(close_auditor)) { DCHECK(frame_); - DCHECK(destruction_auditor_); + DCHECK(close_auditor_); } VideoFrameHandle::~VideoFrameHandle() { - // If we still have a valid |destruction_auditor_|, Invalidate() was never - // called and corresponding frames never received a call to destroy() before + // If we still have a valid |close_auditor_|, Invalidate() was never + // called and corresponding frames never received a call to close() before // being garbage collected. - if (destruction_auditor_) - destruction_auditor_->ReportUndestroyedFrame(); + if (close_auditor_) + close_auditor_->ReportUnclosedFrame(); } scoped_refptr<media::VideoFrame> VideoFrameHandle::frame() { @@ -44,7 +43,7 @@ void VideoFrameHandle::Invalidate() { WTF::MutexLocker locker(mutex_); frame_.reset(); - destruction_auditor_.reset(); + close_auditor_.reset(); } } // namespace blink
diff --git a/third_party/blink/renderer/modules/webcodecs/video_frame_handle.h b/third_party/blink/renderer/modules/webcodecs/video_frame_handle.h index a865bbc..7d66e5ac 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_frame_handle.h +++ b/third_party/blink/renderer/modules/webcodecs/video_frame_handle.h
@@ -20,18 +20,17 @@ // multiple VideoFrames, which can be invalidated for all frames at once. // // If Invalidate() is not called before the handle's destructor runs, this means -// that none of the VideoFrames sharing this handle were destroyed, and they -// were GC'ed instead. This can lead to stalls, since frames are not released +// that none of the VideoFrames sharing this handle were closed, and they were +// all GC'ed instead. This can lead to stalls, since frames are not released // fast enough through the GC to keep a pipeline running smoothly. In that case -// report an undestroyed frame through |destruction_auditor_|. +// report an unclosed frame through |close_auditor_|. class MODULES_EXPORT VideoFrameHandle : public WTF::ThreadSafeRefCounted<VideoFrameHandle> { public: VideoFrameHandle(scoped_refptr<media::VideoFrame>, ExecutionContext*); - VideoFrameHandle( - scoped_refptr<media::VideoFrame>, - scoped_refptr<VideoFrameLogger::VideoFrameDestructionAuditor>); + VideoFrameHandle(scoped_refptr<media::VideoFrame>, + scoped_refptr<VideoFrameLogger::VideoFrameCloseAuditor>); // Returns a copy of |frame_|, which should be re-used throughout the scope // of a function call, instead of calling frame() multiple times. Otherwise @@ -48,8 +47,7 @@ WTF::Mutex mutex_; scoped_refptr<media::VideoFrame> frame_; - scoped_refptr<VideoFrameLogger::VideoFrameDestructionAuditor> - destruction_auditor_; + scoped_refptr<VideoFrameLogger::VideoFrameCloseAuditor> close_auditor_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/webcodecs/video_frame_logger.cc b/third_party/blink/renderer/modules/webcodecs/video_frame_logger.cc index 81804e0..2c6d5ed3d 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_frame_logger.cc +++ b/third_party/blink/renderer/modules/webcodecs/video_frame_logger.cc
@@ -15,21 +15,20 @@ constexpr base::TimeDelta kTimerShutdownDelay = base::TimeDelta::FromSeconds(60); -void VideoFrameLogger::VideoFrameDestructionAuditor::ReportUndestroyedFrame() { - were_frames_not_destroyed_ = true; +void VideoFrameLogger::VideoFrameCloseAuditor::ReportUnclosedFrame() { + were_frames_not_closed_ = true; } -void VideoFrameLogger::VideoFrameDestructionAuditor::Clear() { - were_frames_not_destroyed_ = false; +void VideoFrameLogger::VideoFrameCloseAuditor::Clear() { + were_frames_not_closed_ = false; } VideoFrameLogger::VideoFrameLogger(ExecutionContext& context) : Supplement<ExecutionContext>(context), - destruction_auditor_( - base::MakeRefCounted<VideoFrameDestructionAuditor>()) { + close_auditor_(base::MakeRefCounted<VideoFrameCloseAuditor>()) { timer_ = std::make_unique<TaskRunnerTimer<VideoFrameLogger>>( context.GetTaskRunner(TaskType::kInternalMedia), this, - &VideoFrameLogger::LogDestructionErrors); + &VideoFrameLogger::LogCloseErrors); } // static @@ -44,30 +43,29 @@ return *supplement; } -scoped_refptr<VideoFrameLogger::VideoFrameDestructionAuditor> -VideoFrameLogger::GetDestructionAuditor() { - // We cannot directly log destruction errors: they are detected during - // garbage collection, and it would be unsafe to access GC'ed objects from - // a GC'ed object's destructor. Instead, start a timer here to periodically - // poll for these errors. The timer should stop itself after a period of - // inactivity. +scoped_refptr<VideoFrameLogger::VideoFrameCloseAuditor> +VideoFrameLogger::GetCloseAuditor() { + // We cannot directly log close errors: they are detected during garbage + // collection, and it would be unsafe to access GC'ed objects from a GC'ed + // object's destructor. Instead, start a timer here to periodically poll for + // these errors. The timer should stop itself after a period of inactivity. if (!timer_->IsActive()) timer_->StartRepeating(kTimerInterval, FROM_HERE); last_auditor_access_ = base::TimeTicks::Now(); - return destruction_auditor_; + return close_auditor_; } -void VideoFrameLogger::LogDestructionErrors(TimerBase*) { +void VideoFrameLogger::LogCloseErrors(TimerBase*) { // If it's been a while since this class was used and there are not other // references to |leak_status_|, stop the timer. if (base::TimeTicks::Now() - last_auditor_access_ > kTimerShutdownDelay && - destruction_auditor_->HasOneRef()) { + close_auditor_->HasOneRef()) { timer_->Stop(); } - if (!destruction_auditor_->were_frames_not_destroyed()) + if (!close_auditor_->were_frames_not_closed()) return; auto* execution_context = GetSupplementable(); @@ -75,12 +73,12 @@ execution_context->AddConsoleMessage(MakeGarbageCollected<ConsoleMessage>( mojom::blink::ConsoleMessageSource::kJavaScript, mojom::blink::ConsoleMessageLevel::kError, - "A VideoFrame was garbage collected without being destroyed. " - "Applications should call destroy() on frames when done with them to " + "A VideoFrame was garbage collected without being closed. " + "Applications should call close() on frames when done with them to " "prevent stalls.")); } - destruction_auditor_->Clear(); + close_auditor_->Clear(); } void VideoFrameLogger::Trace(Visitor* visitor) const {
diff --git a/third_party/blink/renderer/modules/webcodecs/video_frame_logger.h b/third_party/blink/renderer/modules/webcodecs/video_frame_logger.h index 8bfdce0..b730667 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_frame_logger.h +++ b/third_party/blink/renderer/modules/webcodecs/video_frame_logger.h
@@ -16,12 +16,12 @@ namespace blink { -// This class is used to distribute a VideoFrameDestructionAuditor flag to +// This class is used to distribute a VideoFrameCloseAuditor flag to // VideoFrameHandles. If a handle's destructor is run without having received a -// call to Invalidate(), it will set |destruction_auditor_|. The -// VideoFrameLogger periodically checks whether or not the flag is set, and -// outputs an error message to the JS console, reminding developers to call -// destroy() on their VideoFrames. +// call to Invalidate(), it will set |close_auditor_|. The VideoFrameLogger +// periodically checks whether or not the flag is set, and outputs an error +// message to the JS console, reminding developers to call close() on their +// VideoFrames. // // This class lets us avoid making VideoFrames ExecutionLifeCycleObservers, // which could add 1000s of observers per second. It also avoids the use of @@ -31,21 +31,21 @@ public Supplement<ExecutionContext> { public: // Class that reports when blink::VideoFrames have been garbage collected - // without having destroy() called on them. This is a web page application + // without having close() called on them. This is a web page application // error which can cause a web page to stall. - class VideoFrameDestructionAuditor - : public WTF::ThreadSafeRefCounted<VideoFrameDestructionAuditor> { + class VideoFrameCloseAuditor + : public WTF::ThreadSafeRefCounted<VideoFrameCloseAuditor> { public: - void ReportUndestroyedFrame(); + void ReportUnclosedFrame(); void Clear(); - bool were_frames_not_destroyed() { return were_frames_not_destroyed_; } + bool were_frames_not_closed() { return were_frames_not_closed_; } private: - friend class WTF::ThreadSafeRefCounted<VideoFrameDestructionAuditor>; - ~VideoFrameDestructionAuditor() = default; + friend class WTF::ThreadSafeRefCounted<VideoFrameCloseAuditor>; + ~VideoFrameCloseAuditor() = default; - bool were_frames_not_destroyed_ = false; + bool were_frames_not_closed_ = false; }; static const char kSupplementName[]; @@ -59,19 +59,19 @@ VideoFrameLogger& operator=(const VideoFrameLogger&) = delete; VideoFrameLogger(const VideoFrameLogger&) = delete; - // Returns |destruction_auditor_| and starts |timer_| if needed. - scoped_refptr<VideoFrameDestructionAuditor> GetDestructionAuditor(); + // Returns |close_auditor_| and starts |timer_| if needed. + scoped_refptr<VideoFrameCloseAuditor> GetCloseAuditor(); void Trace(Visitor*) const override; private: - void LogDestructionErrors(TimerBase*); + void LogCloseErrors(TimerBase*); base::TimeTicks last_auditor_access_; std::unique_ptr<TimerBase> timer_; - scoped_refptr<VideoFrameDestructionAuditor> destruction_auditor_; + scoped_refptr<VideoFrameCloseAuditor> close_auditor_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/webcodecs/video_frame_test.cc b/third_party/blink/renderer/modules/webcodecs/video_frame_test.cc index 569b03d1..889c0f2 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_frame_test.cc +++ b/third_party/blink/renderer/modules/webcodecs/video_frame_test.cc
@@ -65,7 +65,7 @@ EXPECT_EQ(200u, blink_frame->cropHeight()); EXPECT_EQ(media_frame, blink_frame->frame()); - blink_frame->destroy(); + blink_frame->close(); EXPECT_FALSE(blink_frame->timestamp().has_value()); EXPECT_EQ(0u, blink_frame->codedWidth()); @@ -75,7 +75,7 @@ EXPECT_EQ(nullptr, blink_frame->frame()); } -TEST_F(VideoFrameTest, FramesSharingHandleDestruction) { +TEST_F(VideoFrameTest, FramesSharingHandleClose) { V8TestingScope scope; scoped_refptr<media::VideoFrame> media_frame = @@ -90,12 +90,12 @@ // media::VideoFrame reference. EXPECT_EQ(media_frame, frame_with_shared_handle->frame()); - // Destroying a frame should invalidate all frames sharing the same handle. - blink_frame->destroy(); + // Closing a frame should invalidate all frames sharing the same handle. + blink_frame->close(); EXPECT_EQ(nullptr, frame_with_shared_handle->frame()); } -TEST_F(VideoFrameTest, FramesNotSharingHandleDestruction) { +TEST_F(VideoFrameTest, FramesNotSharingHandleClose) { V8TestingScope scope; scoped_refptr<media::VideoFrame> media_frame = @@ -112,8 +112,8 @@ EXPECT_EQ(media_frame, frame_with_new_handle->frame()); // If a frame was created a new handle reference the same media::VideoFrame, - // one frame's destruction should not affect the other. - blink_frame->destroy(); + // one frame's closure should not affect the other. + blink_frame->close(); EXPECT_EQ(media_frame, frame_with_new_handle->frame()); } @@ -133,13 +133,13 @@ EXPECT_EQ(media_frame, cloned_frame->frame()); EXPECT_FALSE(scope.GetExceptionState().HadException()); - blink_frame->destroy(); + blink_frame->close(); - // Destroying the original frame should not affect the cloned frame. + // Closing the original frame should not affect the cloned frame. EXPECT_EQ(media_frame, cloned_frame->frame()); } -TEST_F(VideoFrameTest, CloningDestroyedFrame) { +TEST_F(VideoFrameTest, CloningClosedFrame) { V8TestingScope scope; scoped_refptr<media::VideoFrame> media_frame = @@ -147,7 +147,7 @@ VideoFrame* blink_frame = CreateBlinkVideoFrame(media_frame, scope.GetExecutionContext()); - blink_frame->destroy(); + blink_frame->close(); VideoFrame* cloned_frame = blink_frame->clone(scope.GetScriptState(), scope.GetExceptionState()); @@ -172,7 +172,7 @@ auto& logger = VideoFrameLogger::From(*scope.GetExecutionContext()); - EXPECT_TRUE(logger.GetDestructionAuditor()->were_frames_not_destroyed()); + EXPECT_TRUE(logger.GetCloseAuditor()->were_frames_not_closed()); } TEST_F(VideoFrameTest, InvalidatedHandlesDontReportLeaks) { @@ -190,7 +190,7 @@ auto& logger = VideoFrameLogger::From(*scope.GetExecutionContext()); - EXPECT_FALSE(logger.GetDestructionAuditor()->were_frames_not_destroyed()); + EXPECT_FALSE(logger.GetCloseAuditor()->were_frames_not_closed()); } } // namespace
diff --git a/third_party/blink/renderer/modules/webcodecs/video_track_writer.cc b/third_party/blink/renderer/modules/webcodecs/video_track_writer.cc index ca73526b..eccb736 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_track_writer.cc +++ b/third_party/blink/renderer/modules/webcodecs/video_track_writer.cc
@@ -57,7 +57,7 @@ source_->PushFrame(video_frame->frame(), estimated_capture_time); if (release_frames_) - video_frame->destroy(); + video_frame->close(); return ScriptPromise::CastUndefined(script_state); }
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc index e72383f..5dbbeab 100644 --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
@@ -154,7 +154,7 @@ if (!active_contexts_persistent) { active_contexts_persistent = MakeGarbageCollected<WebGLRenderingContextBaseSet>(); - active_contexts_persistent.RegisterAsStaticReference(); + LEAK_SANITIZER_IGNORE_OBJECT(&active_contexts_persistent); } return *active_contexts_persistent; } @@ -170,7 +170,7 @@ if (!forcibly_evicted_contexts_persistent) { forcibly_evicted_contexts_persistent = MakeGarbageCollected<WebGLRenderingContextBaseMap>(); - forcibly_evicted_contexts_persistent.RegisterAsStaticReference(); + LEAK_SANITIZER_IGNORE_OBJECT(&forcibly_evicted_contexts_persistent); } return *forcibly_evicted_contexts_persistent; }
diff --git a/third_party/blink/renderer/modules/xr/BUILD.gn b/third_party/blink/renderer/modules/xr/BUILD.gn index add6bf1..640a925 100644 --- a/third_party/blink/renderer/modules/xr/BUILD.gn +++ b/third_party/blink/renderer/modules/xr/BUILD.gn
@@ -33,6 +33,8 @@ "xr_frame_request_callback_collection.h", "xr_grip_space.cc", "xr_grip_space.h", + "xr_hand.cc", + "xr_hand.h", "xr_hit_test_result.cc", "xr_hit_test_result.h", "xr_hit_test_source.cc", @@ -47,6 +49,10 @@ "xr_input_source_event.h", "xr_input_sources_change_event.cc", "xr_input_sources_change_event.h", + "xr_joint_pose.cc", + "xr_joint_pose.h", + "xr_joint_space.cc", + "xr_joint_space.h", "xr_layer.cc", "xr_layer.h", "xr_light_estimate.cc",
diff --git a/third_party/blink/renderer/modules/xr/idls.gni b/third_party/blink/renderer/modules/xr/idls.gni index d480cdf7..75e9ba6 100644 --- a/third_party/blink/renderer/modules/xr/idls.gni +++ b/third_party/blink/renderer/modules/xr/idls.gni
@@ -11,6 +11,9 @@ "xr_depth_information.idl", "xr_dom_overlay_state.idl", "xr_frame.idl", + "xr_hand.idl", + "xr_joint_pose.idl", + "xr_joint_space.idl", "xr_image_tracking_result.idl", "xr_input_source.idl", "xr_input_source_array.idl",
diff --git a/third_party/blink/renderer/modules/xr/xr_frame.cc b/third_party/blink/renderer/modules/xr/xr_frame.cc index 5a64496..012ccd3 100644 --- a/third_party/blink/renderer/modules/xr/xr_frame.cc +++ b/third_party/blink/renderer/modules/xr/xr_frame.cc
@@ -7,6 +7,7 @@ #include "third_party/blink/renderer/core/dom/dom_exception.h" #include "third_party/blink/renderer/modules/xr/xr_hit_test_source.h" #include "third_party/blink/renderer/modules/xr/xr_input_source.h" +#include "third_party/blink/renderer/modules/xr/xr_joint_space.h" #include "third_party/blink/renderer/modules/xr/xr_light_estimate.h" #include "third_party/blink/renderer/modules/xr/xr_light_probe.h" #include "third_party/blink/renderer/modules/xr/xr_plane_set.h" @@ -381,6 +382,28 @@ return session_->ImageTrackingResults(exception_state); } +XRJointPose* XRFrame::getJointPose(XRJointSpace* joint, + XRSpace* baseSpace, + ExceptionState& exception_state) { + NOTIMPLEMENTED(); + return nullptr; +} + +bool XRFrame::fillJointRadii(HeapVector<Member<XRJointSpace>>& jointSpaces, + NotShared<DOMFloat32Array> radii, + ExceptionState& exception_state) { + NOTIMPLEMENTED(); + return false; +} + +bool XRFrame::fillPoses(HeapVector<Member<XRSpace>>& spaces, + XRSpace* baseSpace, + NotShared<DOMFloat32Array> transforms, + ExceptionState& exception_state) { + NOTIMPLEMENTED(); + return false; +} + void XRFrame::Trace(Visitor* visitor) const { visitor->Trace(session_); ScriptWrappable::Trace(visitor);
diff --git a/third_party/blink/renderer/modules/xr/xr_frame.h b/third_party/blink/renderer/modules/xr/xr_frame.h index e976832e..8224e4d 100644 --- a/third_party/blink/renderer/modules/xr/xr_frame.h +++ b/third_party/blink/renderer/modules/xr/xr_frame.h
@@ -9,6 +9,8 @@ #include "device/vr/public/mojom/vr_service.mojom-blink-forward.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" +#include "third_party/blink/renderer/bindings/core/v8/v8_dom_matrix.h" +#include "third_party/blink/renderer/modules/xr/xr_joint_pose.h" #include "third_party/blink/renderer/platform/bindings/script_state.h" #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" #include "third_party/blink/renderer/platform/heap/handle.h" @@ -24,8 +26,10 @@ class XRHitTestSource; class XRImageTrackingResult; class XRInputSource; +class XRJointPose; class XRLightEstimate; class XRLightProbe; +class XRJointSpace; class XRPlaneSet; class XRPose; class XRReferenceSpace; @@ -79,6 +83,17 @@ HeapVector<Member<XRImageTrackingResult>> getImageTrackingResults( ExceptionState&); + XRJointPose* getJointPose(XRJointSpace* joint, + XRSpace* baseSpace, + ExceptionState& exception_state); + bool fillJointRadii(HeapVector<Member<XRJointSpace>>& jointSpaces, + NotShared<DOMFloat32Array> radii, + ExceptionState& exception_state); + bool fillPoses(HeapVector<Member<XRSpace>>& spaces, + XRSpace* baseSpace, + NotShared<DOMFloat32Array> transforms, + ExceptionState& exception_state); + private: std::unique_ptr<TransformationMatrix> GetAdjustedPoseMatrix(XRSpace*) const; XRPose* GetTargetRayPose(XRInputSource*, XRSpace*) const;
diff --git a/third_party/blink/renderer/modules/xr/xr_frame.idl b/third_party/blink/renderer/modules/xr/xr_frame.idl index 88275a48d..0bbee6db 100644 --- a/third_party/blink/renderer/modules/xr/xr_frame.idl +++ b/third_party/blink/renderer/modules/xr/xr_frame.idl
@@ -32,6 +32,13 @@ [RuntimeEnabled=WebXRImageTracking, RaisesException] FrozenArray<XRImageTrackingResult> getImageTrackingResults(); + [RuntimeEnabled=WebXRHandInput, RaisesException] + XRJointPose? getJointPose(XRJointSpace joint, XRSpace baseSpace); + [RuntimeEnabled=WebXRHandInput, RaisesException] + boolean fillJointRadii(sequence<XRJointSpace> jointSpaces, Float32Array radii); + [RuntimeEnabled=WebXRHandInput, RaisesException] + boolean fillPoses(sequence<XRSpace> spaces, XRSpace baseSpace, Float32Array transforms); + // More details about the real-world understanding APIs can be found here: // https://github.com/immersive-web/real-world-geometry/blob/master/plane-detection-explainer.md [RuntimeEnabled=WebXRPlaneDetection, RaisesException]
diff --git a/third_party/blink/renderer/modules/xr/xr_hand.cc b/third_party/blink/renderer/modules/xr/xr_hand.cc new file mode 100644 index 0000000..46916caa --- /dev/null +++ b/third_party/blink/renderer/modules/xr/xr_hand.cc
@@ -0,0 +1,31 @@ +// 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/modules/xr/xr_hand.h" +#include "third_party/blink/renderer/modules/xr/xr_input_source.h" +#include "third_party/blink/renderer/modules/xr/xr_joint_pose.h" +#include "third_party/blink/renderer/modules/xr/xr_joint_space.h" + +namespace blink { + +unsigned int XRHand::size() const { + NOTIMPLEMENTED(); + return 0; +} + +XRJointSpace* XRHand::get(const String& key) { + NOTIMPLEMENTED(); + return nullptr; +} + +XRHand::IterationSource* XRHand::StartIteration(ScriptState*, ExceptionState&) { + NOTIMPLEMENTED(); + return nullptr; +} + +void XRHand::Trace(Visitor* visitor) const { + ScriptWrappable::Trace(visitor); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/modules/xr/xr_hand.h b/third_party/blink/renderer/modules/xr/xr_hand.h new file mode 100644 index 0000000..832379e1 --- /dev/null +++ b/third_party/blink/renderer/modules/xr/xr_hand.h
@@ -0,0 +1,38 @@ +// 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 THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_HAND_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_HAND_H_ + +#include "device/vr/public/mojom/vr_service.mojom-blink.h" +#include "third_party/blink/renderer/bindings/core/v8/iterable.h" +#include "third_party/blink/renderer/platform/bindings/script_wrappable.h" +#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + +namespace blink { + +class XRJointSpace; + +class XRHand : public ScriptWrappable, + public PairIterable<String, Member<XRJointSpace>> { + DEFINE_WRAPPERTYPEINFO(); + + public: + XRHand() = default; + ~XRHand() override = default; + + unsigned int size() const; + XRJointSpace* get(const String& key); + + void Trace(Visitor*) const override; + + private: + using Iterationsource = + PairIterable<String, Member<XRJointSpace>>::IterationSource; + IterationSource* StartIteration(ScriptState*, ExceptionState&) override; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_HAND_H_
diff --git a/third_party/blink/renderer/modules/xr/xr_hand.idl b/third_party/blink/renderer/modules/xr/xr_hand.idl new file mode 100644 index 0000000..9c09d20 --- /dev/null +++ b/third_party/blink/renderer/modules/xr/xr_hand.idl
@@ -0,0 +1,44 @@ +// 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. + +//https://immersive-web.github.io/webxr-hand-input/#idl-index +enum XRHandJoint { + "wrist", + "thumb-metacarpal", + "thumb-phalanx-proximal", + "thumb-phalanx-distal", + "thumb-tip", + "index-finger-metacarpal", + "index-finger-phalanx-proximal", + "index-finger-phalanx-intermediate", + "index-finger-phalanx-distal", + "index-finger-tip", + "middle-finger-metacarpal", + "middle-finger-phalanx-proximal", + "middle-finger-phalanx-intermediate", + "middle-finger-phalanx-distal", + "middle-finger-tip", + "ring-finger-metacarpal", + "ring-finger-phalanx-proximal", + "ring-finger-phalanx-intermediate", + "ring-finger-phalanx-distal", + "ring-finger-tip", + "pinky-finger-metacarpal", + "pinky-finger-phalanx-proximal", + "pinky-finger-phalanx-intermediate", + "pinky-finger-phalanx-distal", + "pinky-finger-tip" +}; + +//https://immersive-web.github.io/webxr-hand-input/#idl-index +[ + SecureContext, + Exposed=Window, + RuntimeEnabled=WebXRHandInput +] interface XRHand { + iterable<XRHandJoint, XRJointSpace>; + + readonly attribute unsigned long size; + XRJointSpace get(XRHandJoint key); +};
diff --git a/third_party/blink/renderer/modules/xr/xr_input_source.cc b/third_party/blink/renderer/modules/xr/xr_input_source.cc index 28b58316..a7beaee 100644 --- a/third_party/blink/renderer/modules/xr/xr_input_source.cc +++ b/third_party/blink/renderer/modules/xr/xr_input_source.cc
@@ -14,6 +14,7 @@ #include "third_party/blink/renderer/core/input/event_handling_util.h" #include "third_party/blink/renderer/core/layout/hit_test_location.h" #include "third_party/blink/renderer/modules/xr/xr_grip_space.h" +#include "third_party/blink/renderer/modules/xr/xr_hand.h" #include "third_party/blink/renderer/modules/xr/xr_input_source_event.h" #include "third_party/blink/renderer/modules/xr/xr_session.h" #include "third_party/blink/renderer/modules/xr/xr_session_event.h" @@ -129,6 +130,7 @@ MakeGarbageCollected<XRTargetRaySpace>(other.session_, this)), grip_space_(MakeGarbageCollected<XRGripSpace>(other.session_, this)), gamepad_(other.gamepad_), + hand_(other.hand_), mojo_from_input_( TryGetTransformationMatrix(other.mojo_from_input_.get())), input_from_pointer_( @@ -614,6 +616,7 @@ visitor->Trace(target_ray_space_); visitor->Trace(grip_space_); visitor->Trace(gamepad_); + visitor->Trace(hand_); ScriptWrappable::Trace(visitor); }
diff --git a/third_party/blink/renderer/modules/xr/xr_input_source.h b/third_party/blink/renderer/modules/xr/xr_input_source.h index 4340096..a1bb47f 100644 --- a/third_party/blink/renderer/modules/xr/xr_input_source.h +++ b/third_party/blink/renderer/modules/xr/xr_input_source.h
@@ -23,6 +23,7 @@ class Element; class XRGripSpace; +class XRHand; class XRInputSourceEvent; class XRSession; class XRSpace; @@ -49,6 +50,8 @@ XRSession* session() const { return session_; } + XRHand* hand() const { return hand_; } + const String handedness() const; const String targetRayMode() const; bool emulatedPosition() const { return state_.emulated_position; } @@ -161,6 +164,7 @@ Member<XRTargetRaySpace> target_ray_space_; Member<XRGripSpace> grip_space_; Member<Gamepad> gamepad_; + Member<XRHand> hand_{nullptr}; // Input device pose in mojo space. This is the grip pose for // tracked controllers, and the viewer pose for screen input.
diff --git a/third_party/blink/renderer/modules/xr/xr_input_source.idl b/third_party/blink/renderer/modules/xr/xr_input_source.idl index d1869d2..6adadac1 100644 --- a/third_party/blink/renderer/modules/xr/xr_input_source.idl +++ b/third_party/blink/renderer/modules/xr/xr_input_source.idl
@@ -24,5 +24,6 @@ [SameObject] readonly attribute XRSpace targetRaySpace; [SameObject] readonly attribute XRSpace? gripSpace; [SameObject, Measure] readonly attribute Gamepad? gamepad; + [SameObject, RuntimeEnabled=WebXRHandInput] readonly attribute XRHand? hand; [SameObject, SaveSameObject] readonly attribute FrozenArray<DOMString> profiles; };
diff --git a/third_party/blink/renderer/modules/xr/xr_joint_pose.cc b/third_party/blink/renderer/modules/xr/xr_joint_pose.cc new file mode 100644 index 0000000..18db876 --- /dev/null +++ b/third_party/blink/renderer/modules/xr/xr_joint_pose.cc
@@ -0,0 +1,15 @@ +// 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/modules/xr/xr_joint_pose.h" +#include "third_party/blink/renderer/modules/xr/xr_pose.h" + +namespace blink { + +XRJointPose::XRJointPose(const TransformationMatrix& transform, + bool emulatedPosition, + float radius) + : XRPose(transform, emulatedPosition), radius_(radius) {} + +} // namespace blink
diff --git a/third_party/blink/renderer/modules/xr/xr_joint_pose.h b/third_party/blink/renderer/modules/xr/xr_joint_pose.h new file mode 100644 index 0000000..9c2fed8 --- /dev/null +++ b/third_party/blink/renderer/modules/xr/xr_joint_pose.h
@@ -0,0 +1,31 @@ +// 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 THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_JOINT_POSE_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_JOINT_POSE_H_ + +#include "device/vr/public/mojom/vr_service.mojom-blink.h" +#include "third_party/blink/renderer/modules/xr/xr_pose.h" +#include "third_party/blink/renderer/platform/bindings/script_wrappable.h" +#include "third_party/blink/renderer/platform/transforms/transformation_matrix.h" + +namespace blink { + +class XRJointPose : public XRPose { + DEFINE_WRAPPERTYPEINFO(); + + public: + XRJointPose(const TransformationMatrix& transform, + bool emulatedPosition, + float radius); + + float radius() const { return radius_; } + + private: + float radius_; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_JOINT_POSE_H_
diff --git a/third_party/blink/renderer/modules/xr/xr_joint_pose.idl b/third_party/blink/renderer/modules/xr/xr_joint_pose.idl new file mode 100644 index 0000000..d73401c --- /dev/null +++ b/third_party/blink/renderer/modules/xr/xr_joint_pose.idl
@@ -0,0 +1,11 @@ +// 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. + +[ + SecureContext, + Exposed=Window, + RuntimeEnabled=WebXRHandInput +] interface XRJointPose : XRPose { + readonly attribute float radius; +};
diff --git a/third_party/blink/renderer/modules/xr/xr_joint_space.cc b/third_party/blink/renderer/modules/xr/xr_joint_space.cc new file mode 100644 index 0000000..80f0254c --- /dev/null +++ b/third_party/blink/renderer/modules/xr/xr_joint_space.cc
@@ -0,0 +1,47 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/modules/xr/xr_joint_space.h" +#include "third_party/blink/renderer/modules/xr/xr_space.h" + +namespace blink { + +XRJointSpace::XRJointSpace( + XRSession* session, + std::unique_ptr<TransformationMatrix> mojo_from_joint, + String joint_name, + float radius) + : XRSpace(session), + mojo_from_joint_space_(std::move(mojo_from_joint)), + joint_name_(joint_name), + radius_(radius) {} + +base::Optional<TransformationMatrix> XRJointSpace::MojoFromNative() { + return *mojo_from_joint_space_.get(); +} + +bool XRJointSpace::EmulatedPosition() const { + NOTIMPLEMENTED(); + return false; +} + +base::Optional<device::mojom::blink::XRNativeOriginInformation> +XRJointSpace::NativeOrigin() const { + NOTIMPLEMENTED(); + return base::nullopt; +} + +bool XRJointSpace::IsStationary() const { + return false; +} + +std::string XRJointSpace::ToString() const { + return "XRJointSpace"; +} + +void XRJointSpace::Trace(Visitor* visitor) const { + XRSpace::Trace(visitor); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/modules/xr/xr_joint_space.h b/third_party/blink/renderer/modules/xr/xr_joint_space.h new file mode 100644 index 0000000..37f88f7 --- /dev/null +++ b/third_party/blink/renderer/modules/xr/xr_joint_space.h
@@ -0,0 +1,50 @@ +// 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 THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_JOINT_SPACE_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_JOINT_SPACE_H_ + +#include "base/optional.h" +#include "device/vr/public/mojom/vr_service.mojom-blink.h" +#include "third_party/blink/renderer/modules/xr/xr_native_origin_information.h" +#include "third_party/blink/renderer/modules/xr/xr_space.h" +#include "third_party/blink/renderer/platform/transforms/transformation_matrix.h" + +namespace blink { + +class XRSession; + +class XRJointSpace : public XRSpace { + DEFINE_WRAPPERTYPEINFO(); + + public: + XRJointSpace(XRSession* session, + std::unique_ptr<TransformationMatrix> mojo_from_joint, + String joint_name, + float radius); + + float GetRadius() const { return radius_; } + const String& jointName() const { return joint_name_; } + + base::Optional<TransformationMatrix> MojoFromNative() override; + bool EmulatedPosition() const override; + + base::Optional<device::mojom::blink::XRNativeOriginInformation> NativeOrigin() + const override; + + bool IsStationary() const override; + + std::string ToString() const override; + + void Trace(Visitor*) const override; + + private: + const std::unique_ptr<TransformationMatrix> mojo_from_joint_space_; + const String joint_name_; + const float radius_; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_JOINT_SPACE_H_
diff --git a/third_party/blink/renderer/modules/xr/xr_joint_space.idl b/third_party/blink/renderer/modules/xr/xr_joint_space.idl new file mode 100644 index 0000000..551ec31 --- /dev/null +++ b/third_party/blink/renderer/modules/xr/xr_joint_space.idl
@@ -0,0 +1,10 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +[ + SecureContext, + Exposed=Window, + RuntimeEnabled=WebXRHandInput +] interface XRJointSpace : XRSpace { + readonly attribute XRHandJoint jointName; +};
diff --git a/third_party/blink/renderer/modules/xr/xr_session.cc b/third_party/blink/renderer/modules/xr/xr_session.cc index f92e60b..7a9ecd13 100644 --- a/third_party/blink/renderer/modules/xr/xr_session.cc +++ b/third_party/blink/renderer/modules/xr/xr_session.cc
@@ -304,6 +304,7 @@ case XRSessionFeature::PLANE_DETECTION: case XRSessionFeature::DEPTH: case XRSessionFeature::IMAGE_TRACKING: + case XRSessionFeature::HAND_INPUT: // Not recording metrics for these features currently. break; }
diff --git a/third_party/blink/renderer/modules/xr/xr_system.cc b/third_party/blink/renderer/modules/xr/xr_system.cc index 53f39f2..6272c44d 100644 --- a/third_party/blink/renderer/modules/xr/xr_system.cc +++ b/third_party/blink/renderer/modules/xr/xr_system.cc
@@ -150,6 +150,9 @@ } else if (RuntimeEnabledFeatures::WebXRImageTrackingEnabled(context) && feature_string == "image-tracking") { return device::mojom::XRSessionFeature::IMAGE_TRACKING; + } else if (RuntimeEnabledFeatures::WebXRHandInputEnabled(context) && + feature_string == "hand-tracking") { + return device::mojom::XRSessionFeature::HAND_INPUT; } return base::nullopt; @@ -169,6 +172,7 @@ case device::mojom::XRSessionFeature::REF_SPACE_UNBOUNDED: case device::mojom::XRSessionFeature::HIT_TEST: case device::mojom::XRSessionFeature::ANCHORS: + case device::mojom::XRSessionFeature::HAND_INPUT: return mode == device::mojom::blink::XRSessionMode::kImmersiveVr || mode == device::mojom::blink::XRSessionMode::kImmersiveAr; case device::mojom::XRSessionFeature::DOM_OVERLAY: @@ -223,6 +227,7 @@ case device::mojom::XRSessionFeature::PLANE_DETECTION: case device::mojom::XRSessionFeature::DEPTH: case device::mojom::XRSessionFeature::IMAGE_TRACKING: + case device::mojom::XRSessionFeature::HAND_INPUT: return context->IsFeatureEnabled( mojom::blink::FeaturePolicyFeature::kWebXr, ReportOptions::kReportOnFailure);
diff --git a/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc b/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc index 674c1b6..9b26a15 100644 --- a/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc +++ b/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc
@@ -122,8 +122,13 @@ } void DOMWrapperWorld::Dispose() { - dom_data_store_->Dispose(); - dom_data_store_.Clear(); + if (dom_data_store_) { + // The data_store_ might be cleared on thread termination in the same + // garbage collection cycle which prohibits accessing the references from + // the dtor. + dom_data_store_->Dispose(); + dom_data_store_.Clear(); + } DCHECK(GetWorldMap().Contains(world_id_)); GetWorldMap().erase(world_id_); }
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 793f822..6b9869a 100644 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -393,6 +393,10 @@ RuntimeEnabledFeatures::SetWebXRDepthEnabled(enable); } +void WebRuntimeFeatures::EnableWebXRHandInput(bool enable) { + RuntimeEnabledFeatures::SetWebXRHandInputEnabled(enable); +} + void WebRuntimeFeatures::EnableWebXRHitTest(bool enable) { RuntimeEnabledFeatures::SetWebXRHitTestEnabled(enable); }
diff --git a/third_party/blink/renderer/platform/fonts/font_cache.cc b/third_party/blink/renderer/platform/fonts/font_cache.cc index 20b35c9e..df794d75 100644 --- a/third_party/blink/renderer/platform/fonts/font_cache.cc +++ b/third_party/blink/renderer/platform/fonts/font_cache.cc
@@ -416,7 +416,7 @@ if (!font_cache_clients_) { font_cache_clients_ = MakeGarbageCollected<HeapHashSet<WeakMember<FontCacheClient>>>(); - font_cache_clients_.RegisterAsStaticReference(); + LEAK_SANITIZER_IGNORE_OBJECT(&font_cache_clients_); } DCHECK(!font_cache_clients_->Contains(client)); font_cache_clients_->insert(client);
diff --git a/third_party/blink/renderer/platform/heap/impl/persistent.h b/third_party/blink/renderer/platform/heap/impl/persistent.h index 40388bd..9326196 100644 --- a/third_party/blink/renderer/platform/heap/impl/persistent.h +++ b/third_party/blink/renderer/platform/heap/impl/persistent.h
@@ -81,25 +81,6 @@ operator T*() const { return Get(); } T* operator->() const { return Get(); } - // Register the persistent node as a 'static reference', - // belonging to the current thread and a persistent that must - // be cleared when the ThreadState itself is cleared out and - // destructed. - // - // Static singletons arrange for this to happen, either to ensure - // clean LSan leak reports or to register a thread-local persistent - // needing to be cleared out before the thread is terminated. - PersistentBase* RegisterAsStaticReference() { - static_assert(weaknessConfiguration == kNonWeakPersistentConfiguration, - "Can only register non-weak Persistent references as static " - "references."); - if (PersistentNode* node = persistent_node_.Get()) { - ThreadState::Current()->RegisterStaticPersistentNode(node); - LEAK_SANITIZER_IGNORE_OBJECT(this); - } - return this; - } - NO_SANITIZE_ADDRESS void ClearWithLockHeld() { static_assert(
diff --git a/third_party/blink/renderer/platform/heap/impl/persistent_node.h b/third_party/blink/renderer/platform/heap/impl/persistent_node.h index d8c2b08..2ddf9ec 100644 --- a/third_party/blink/renderer/platform/heap/impl/persistent_node.h +++ b/third_party/blink/renderer/platform/heap/impl/persistent_node.h
@@ -341,7 +341,7 @@ weakness_configuration == kWeakPersistentConfiguration ? state->GetWeakPersistentRegion() : state->GetPersistentRegion(); - state->FreePersistentNode(region, ptr_); + region->FreeNode(ptr_); ptr_ = nullptr; }
diff --git a/third_party/blink/renderer/platform/heap/impl/thread_state.cc b/third_party/blink/renderer/platform/heap/impl/thread_state.cc index 2027c79..f877d461 100644 --- a/third_party/blink/renderer/platform/heap/impl/thread_state.cc +++ b/third_party/blink/renderer/platform/heap/impl/thread_state.cc
@@ -101,8 +101,6 @@ constexpr double kMarkingScheduleRatioBeforeConcurrentPriorityIncrease = 0.5; -constexpr size_t kMaxTerminationGCLoops = 20; - // Helper function to convert a byte count to a KB count, capping at // INT_MAX if the number is larger than that. constexpr base::Histogram::Sample CappedSizeInKB(size_t size_in_bytes) { @@ -258,54 +256,30 @@ BlinkGC::kIncrementalAndConcurrentMarking, BlinkGC::kConcurrentAndLazySweeping, BlinkGC::GCReason::kThreadTerminationGC); - // Finish sweeping. CompleteSweep(); - ReleaseStaticPersistentNodes(); - - // PrepareForThreadStateTermination removes strong references so no need to - // call it on CrossThreadWeakPersistentRegion. - ProcessHeap::GetCrossThreadPersistentRegion() - .PrepareForThreadStateTermination(this); - - // Do thread local GC's as long as the count of thread local Persistents - // changes and is above zero. - int old_count = -1; - int current_count = GetPersistentRegion()->NodesInUse(); - DCHECK_GE(current_count, 0); - while (current_count != old_count) { + // The constant specifies how many rounds of GCs should at most be needed to + // clean up the heap. If we crash below this means that there's finalizers + // adding more objects and roots than the GC is able to clean up. + constexpr size_t kMaxTerminationGCsForHeapCleanup = 20; + size_t i = 0; + do { + CHECK_LT(i++, kMaxTerminationGCsForHeapCleanup); + // Remove strong cross-thread roots. + ProcessHeap::GetCrossThreadPersistentRegion() + .PrepareForThreadStateTermination(this); + // Remove regular roots. + GetPersistentRegion()->PrepareForThreadStateTermination(this); + CHECK_EQ(0, GetPersistentRegion()->NodesInUse()); CollectGarbage(BlinkGC::CollectionType::kMajor, BlinkGC::kNoHeapPointersOnStack, BlinkGC::kAtomicMarking, BlinkGC::kEagerSweeping, BlinkGC::GCReason::kThreadTerminationGC); - // Release the thread-local static persistents that were - // instantiated while running the termination GC. - ReleaseStaticPersistentNodes(); - old_count = current_count; - current_count = GetPersistentRegion()->NodesInUse(); - } - - // We should not have any persistents left when getting to this point, - // if we have it is a bug, and we have a reference cycle or a missing - // RegisterAsStaticReference. Clearing out all the Persistents will avoid - // stale pointers and gets them reported as nullptr dereferences. - if (current_count) { - for (size_t i = 0; - i < kMaxTerminationGCLoops && GetPersistentRegion()->NodesInUse(); - i++) { - GetPersistentRegion()->PrepareForThreadStateTermination(this); - CollectGarbage(BlinkGC::CollectionType::kMajor, - BlinkGC::kNoHeapPointersOnStack, BlinkGC::kAtomicMarking, - BlinkGC::kEagerSweeping, - BlinkGC::GCReason::kThreadTerminationGC); - } - } - - CHECK(!GetPersistentRegion()->NodesInUse()); + } while (GetPersistentRegion()->NodesInUse() != 0); // All of pre-finalizers should be consumed. - DCHECK(ordered_pre_finalizers_.empty()); + CHECK(ordered_pre_finalizers_.empty()); CHECK_EQ(GetGCState(), kNoGCScheduled); Heap().RemoveAllPages(); @@ -1010,35 +984,6 @@ static_persistent_registration_disabled_count_--; } -void ThreadState::RegisterStaticPersistentNode(PersistentNode* node) { - if (static_persistent_registration_disabled_count_) - return; - - DCHECK(!static_persistents_.Contains(node)); - static_persistents_.insert(node); -} - -void ThreadState::ReleaseStaticPersistentNodes() { - HashSet<PersistentNode*> static_persistents; - static_persistents.swap(static_persistents_); - - PersistentRegion* persistent_region = GetPersistentRegion(); - for (PersistentNode* it : static_persistents) - persistent_region->ReleaseNode(it); -} - -void ThreadState::FreePersistentNode(PersistentRegion* persistent_region, - PersistentNode* persistent_node) { - persistent_region->FreeNode(persistent_node); - // Do not allow static persistents to be freed before - // they're all released in releaseStaticPersistentNodes(). - // - // There's no fundamental reason why this couldn't be supported, - // but no known use for it. - if (persistent_region == GetPersistentRegion()) - DCHECK(!static_persistents_.Contains(persistent_node)); -} - void ThreadState::InvokePreFinalizers() { DCHECK(CheckThread()); DCHECK(!SweepForbidden());
diff --git a/third_party/blink/renderer/platform/heap/impl/thread_state.h b/third_party/blink/renderer/platform/heap/impl/thread_state.h index ee318bd6..036a3280 100644 --- a/third_party/blink/renderer/platform/heap/impl/thread_state.h +++ b/third_party/blink/renderer/platform/heap/impl/thread_state.h
@@ -65,7 +65,6 @@ class MarkingVisitor; class MarkingSchedulingOracle; -class PersistentNode; class PersistentRegion; class ThreadHeap; class ThreadState; @@ -347,10 +346,6 @@ return weak_persistent_region_.get(); } - void RegisterStaticPersistentNode(PersistentNode*); - void ReleaseStaticPersistentNodes(); - void FreePersistentNode(PersistentRegion*, PersistentNode*); - v8::Isolate* GetIsolate() const { return isolate_; } // Returns |true| if |object| resides on this thread's heap. @@ -644,12 +639,6 @@ HashSet<BlinkGCObserver*> observers_; - // PersistentNodes that are stored in static references; - // references that either have to be cleared upon the thread - // detaching from Oilpan and shutting down or references we - // have to clear before initiating LSan's leak detection. - HashSet<PersistentNode*> static_persistents_; - int gc_age_ = 0; struct GCData {
diff --git a/third_party/blink/renderer/platform/heap/test/heap_test.cc b/third_party/blink/renderer/platform/heap/test/heap_test.cc index 3028597..50244720 100644 --- a/third_party/blink/renderer/platform/heap/test/heap_test.cc +++ b/third_party/blink/renderer/platform/heap/test/heap_test.cc
@@ -5072,7 +5072,7 @@ Persistent<IntWrapper>& handle = *int_wrapper; if (!handle) { handle = MakeGarbageCollected<IntWrapper>(42); - handle.RegisterAsStaticReference(); + LEAK_SANITIZER_IGNORE_OBJECT(&handle); } return *handle; } @@ -5111,7 +5111,7 @@ Persistent<WeakHeapObjectSet>& singleton_persistent = *singleton; if (!singleton_persistent) { singleton_persistent = MakeGarbageCollected<WeakHeapObjectSet>(); - singleton_persistent.RegisterAsStaticReference(); + LEAK_SANITIZER_IGNORE_OBJECT(&singleton_persistent); } return *singleton_persistent; } @@ -5123,7 +5123,7 @@ Persistent<HeapObjectSet>& singleton_persistent = *singleton; if (!singleton_persistent) { singleton_persistent = MakeGarbageCollected<HeapObjectSet>(); - singleton_persistent.RegisterAsStaticReference(); + LEAK_SANITIZER_IGNORE_OBJECT(&singleton_persistent); } return *singleton_persistent; }
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_factory.cc b/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_factory.cc index 0190212..8d23774 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_factory.cc +++ b/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_factory.cc
@@ -156,9 +156,7 @@ int64_t render_time_ms) override { return decoder_->Decode(input_image, missing_frames, render_time_ms); } - bool PrefersLateDecoding() const override { - return decoder_->PrefersLateDecoding(); - } + const char* ImplementationName() const override { return decoder_->ImplementationName(); }
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index 5dbe6093..8a764a4 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -2251,6 +2251,11 @@ status: "experimental", }, { + name: "WebXRHandInput", + depends_on: ["WebXRARModule"], + status: "experimental" + }, + { name: "WebXRHitTest", depends_on: ["WebXRARModule"], status: "stable",
diff --git a/third_party/blink/renderer/platform/scheduler/worker/worker_thread.cc b/third_party/blink/renderer/platform/scheduler/worker/worker_thread.cc index bb4298b..be16030 100644 --- a/third_party/blink/renderer/platform/scheduler/worker/worker_thread.cc +++ b/third_party/blink/renderer/platform/scheduler/worker/worker_thread.cc
@@ -130,9 +130,6 @@ } WorkerThread::GCSupport::~GCSupport() { -#if defined(LEAK_SANITIZER) - ThreadState::Current()->ReleaseStaticPersistentNodes(); -#endif // Ensure no posted tasks will run from this point on. gc_task_runner_.reset(); blink_gc_memory_dump_provider_.reset();
diff --git a/third_party/blink/renderer/platform/wtf/leak_annotations.h b/third_party/blink/renderer/platform/wtf/leak_annotations.h index 4a9cabc..79f132c 100644 --- a/third_party/blink/renderer/platform/wtf/leak_annotations.h +++ b/third_party/blink/renderer/platform/wtf/leak_annotations.h
@@ -73,68 +73,9 @@ // those embedded pointers be reachable by some other path, they will be // reported as leaking. #define LEAK_SANITIZER_IGNORE_OBJECT(X) __lsan_ignore_object(X) - -// If the object pointed to by the static local is on the Oilpan heap, a strong -// Persistent<> is created to keep the pointed-to heap object alive. This makes -// both the Persistent<> and the heap object _reachable_ by LeakSanitizer's leak -// detection pass. We do not want these intentional leaks to be reported by -// LSan, hence the static local is registered with Oilpan -// (see RegisterStaticLocalReference<> below.) -// -// Upon Blink shutdown, all the registered statics are released and a final -// round of GCs are performed to sweep out their now-unreachable object graphs. -// The end result being a tidied heap that the LeakSanitizer can then scan to -// report real leaks. -// -// The CanRegisterStaticLocalReference<> and RegisterStaticLocalReference<> -// templates arrange for this -- for a class type T, a registerStatic() -// implementation is provided if "T* T::registerAsStaticReference(T*)" is a -// method on T (inherited or otherwise.) -// -// An empty, trivial registerStatic() method is provided for all other class -// types T. -template <typename T> -class CanRegisterStaticLocalReference { - typedef char YesType; - typedef struct NoType { char padding[8]; } NoType; - - // Check if class T has public method "T* registerAsStaticReference()". - template <typename V> - static YesType checkHasRegisterAsStaticReferenceMethod( - V* p, - typename std::enable_if<IsSubclass< - V, - typename std::remove_pointer<decltype( - p->registerAsStaticReference())>::type>::value>::type* = 0); - template <typename V> - static NoType checkHasRegisterAsStaticReferenceMethod(...); - - public: - static const bool value = - sizeof(YesType) + sizeof(T) == - sizeof(checkHasRegisterAsStaticReferenceMethod<T>(nullptr)) + sizeof(T); -}; - -template <typename T, bool = CanRegisterStaticLocalReference<T>::value> -class RegisterStaticLocalReference { - public: - static T* registerStatic(T* ptr) { return ptr; } -}; - -template <typename T> -class RegisterStaticLocalReference<T, true> { - public: - static T* registerStatic(T* ptr) { - return static_cast<T*>(ptr->registerAsStaticReference()); - } -}; - -#define LEAK_SANITIZER_REGISTER_STATIC_LOCAL(Type, Object) \ - WTF::RegisterStaticLocalReference<Type>::registerStatic(Object) #else #define WTF_INTERNAL_LEAK_SANITIZER_DISABLED_SCOPE #define LEAK_SANITIZER_IGNORE_OBJECT(X) ((void)0) -#define LEAK_SANITIZER_REGISTER_STATIC_LOCAL(Type, Object) Object #endif // defined(LEAK_SANITIZER) } // namespace WTF
diff --git a/third_party/blink/renderer/platform/wtf/std_lib_extras.h b/third_party/blink/renderer/platform/wtf/std_lib_extras.h index b931442..1ae8ac1 100644 --- a/third_party/blink/renderer/platform/wtf/std_lib_extras.h +++ b/third_party/blink/renderer/platform/wtf/std_lib_extras.h
@@ -80,13 +80,6 @@ using WrapperType = typename Wrapper<Type>::type; - // To cooperate with leak detection(LSan) for Blink garbage collected objects, - // the objects owned by persistent local statics will in some cases have to be - // finalized prior to leak checking. This only applies to static references to - // Blink heap objects and what they transitively hold on to. Hence the - // LEAK_SANITIZER_REGISTER_STATIC_LOCAL() use, it taking care of the grungy - // details. - template <typename HeapNew, typename PlacementNew> StaticSingleton(const HeapNew& heap_new, const PlacementNew& placement_new) : instance_(heap_new, placement_new) @@ -98,7 +91,7 @@ { static_assert(!WTF::IsGarbageCollectedType<Type>::value, "Garbage collected objects must be wrapped in a Persistent"); - LEAK_SANITIZER_REGISTER_STATIC_LOCAL(WrapperType, instance_.Get()); + LEAK_SANITIZER_IGNORE_OBJECT(instance_.Get()); } Type& Get(bool allow_cross_thread_use) {
diff --git a/third_party/blink/web_tests/SmokeTests b/third_party/blink/web_tests/SmokeTests index b485096..a2e9306 100644 --- a/third_party/blink/web_tests/SmokeTests +++ b/third_party/blink/web_tests/SmokeTests
@@ -1,3 +1,11 @@ +# This file lists a limited set of web tests that are run on platforms where +# executing all web tests is infeasible (usually due to performance or resource +# constraints). As of Q1 2021, only Fuchsia uses this file by default (of +# platforms that run web tests). +# +# Further documentation: +# https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_test_expectations.md + accessibility/aria-labelledby-on-input.html accessibility/aria-link-supports-press.html accessibility/insert-adjacent-html-causes-crash.xhtml @@ -758,7 +766,6 @@ fragmentation/margin-top-at-top-of-fragmentainer.html fullscreen/full-screen-inline-split-crash.html fullscreen/full-screen-request-rejected.html -geolocation-api/enabled.html harness-tests/wpt/console_logging.html hittesting/border-hittest-inlineFlowBox.html hittesting/hittest-inline-block-with-abspos.html @@ -980,3 +987,4 @@ webexposed/permissions-attribute.html webexposed/web-animations-api.html webmidi/permission.html +wpt_internal/geolocation-api/enabled.html
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index cf7d92fe..8e463b9 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -71,7 +71,6 @@ crbug.com/1132260 http/tests/devtools/console/console-uncaught-promise.js [ Pass Failure ] crbug.com/1132260 http/tests/devtools/tracing/timeline-network/timeline-network-resource-details.js [ Pass Failure ] crbug.com/1132260 inspector-protocol/page/frameAttachedStacktrace.js [ Pass Failure ] -crbug.com/1164469 inspector-protocol/performance-timeline/largest-contentful-paint.js [ Pass Failure ] # With --enable-display-compositor-pixel-dump enabled by default, these three # tests fail. See crbug.com/887140 for more info. @@ -1457,7 +1456,6 @@ crbug.com/944583 [ Mac ] fast/events/platform-wheelevent-paging-y-in-scrolling-page.html [ Pass Failure Timeout ] # Sheriff: 2020-05-18 crbug.com/1083820 [ Mac ] fast/scrolling/document-level-wheel-event-listener-passive-by-default.html [ Pass Failure ] -crbug.com/1083824 geolocation-api/watchPosition-page-visibility.html [ Pass Failure Timeout ] # In external/wpt/html/, we prefer checking in failure # expectation files. The following tests with [ Failure ] don't have failure @@ -5881,4 +5879,6 @@ crbug.com/1060837 virtual/plz-dedicated-worker/external/wpt/html/cross-origin-embedder-policy/dedicated-worker.https.html [ Timeout ] # Sheriff 2021-01-15 -crbug.com/1167210 [ Mac ] virtual/forced-high-contrast-colors/fast/css/forced-colors-mode/forced-colors-mode-15.html [ Pass Failure ] \ No newline at end of file +crbug.com/1167210 [ Mac ] virtual/forced-high-contrast-colors/fast/css/forced-colors-mode/forced-colors-mode-15.html [ Pass Failure ] +crbug.com/1167222 http/tests/websocket/multiple-connections-throttled.html [ Pass Failure ] +crbug.com/1167309 fast/canvas/canvas-createImageBitmap-drawImage.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/WebDriverExpectations b/third_party/blink/web_tests/WebDriverExpectations index 9ad8e13..4a5f6dc 100644 --- a/third_party/blink/web_tests/WebDriverExpectations +++ b/third_party/blink/web_tests/WebDriverExpectations
@@ -77,6 +77,8 @@ crbug.com/1020018 [ Linux ] external/wpt/webdriver/tests/get_active_element/get.py>>test_sucess_input [ Failure ] crbug.com/1020018 [ Linux ] external/wpt/webdriver/tests/get_active_element/get.py>>test_sucess_input_non_interactable [ Failure ] +crbug.com/1167321 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/find.py [ Failure ] + # ====== New tests from wpt-importer added here ====== crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/switch_to_frame/switch.py>>test_frame_id_null [ Failure ] crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/switch_to_parent_frame/switch.py>>test_switch_from_iframe [ Failure ]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/cross-origin-isolated.sub.https.html b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/cross-origin-isolated.sub.https.html new file mode 100644 index 0000000..e10d3452 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/cross-origin-isolated.sub.https.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>window.originAgentCluster must be implied by cross-origin isolation</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<iframe src="//{{domains[www1]}}:{{location[port]}}/html/browsers/origin/origin-keyed-agent-clusters/resources/coep-frame.html"></iframe> + +<div id="log"></div> + +<script type="module"> +import { testGetter } from "../resources/helpers.mjs"; + +setup({ explicit_done: true }); + +window.onload = () => { + // Cross-origin isolated pages are always origin-keyed. + testGetter(self, true, "self"); + + // Child frames of cross-origin isolated pages must also be cross-origin + // isolated, and thus also origin-keyed. Make sure the implementation doesn't + // treat them specially in some wierd way, for the purposes of this + // implication. + testGetter(0, true, "child"); + + done(); +}; +</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/cross-origin-isolated.sub.https.html.headers b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/cross-origin-isolated.sub.https.html.headers new file mode 100644 index 0000000..5f8621ef8 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/cross-origin-isolated.sub.https.html.headers
@@ -0,0 +1,2 @@ +Cross-Origin-Embedder-Policy: require-corp +Cross-Origin-Opener-Policy: same-origin
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/resources/coep-frame.html b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/resources/coep-frame.html new file mode 100644 index 0000000..7cbd89b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/resources/coep-frame.html
@@ -0,0 +1,5 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>A page with COEP set that will respond when asked</title> + +<script type="module" src="send-header-page-script.mjs"></script>
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/resources/coep-frame.html.headers b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/resources/coep-frame.html.headers new file mode 100644 index 0000000..4e798cd9 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/resources/coep-frame.html.headers
@@ -0,0 +1,2 @@ +Cross-Origin-Embedder-Policy: require-corp +Cross-Origin-Resource-Policy: cross-origin
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder.any.js b/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder.any.js index 33ea2dbe..44e7375a 100644 --- a/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder.any.js +++ b/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder.any.js
@@ -199,7 +199,7 @@ assert_equals(frame.cropWidth, 320, "cropWidth"); assert_equals(frame.cropHeight, 240, "cropHeight"); assert_equals(frame.timestamp, 0, "timestamp"); - frame.destroy(); + frame.close(); }); }, error(e) {
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/video-encoder.any.js b/third_party/blink/web_tests/external/wpt/webcodecs/video-encoder.any.js index 77fe184b..d86e6b61 100644 --- a/third_party/blink/web_tests/external/wpt/webcodecs/video-encoder.any.js +++ b/third_party/blink/web_tests/external/wpt/webcodecs/video-encoder.any.js
@@ -222,14 +222,14 @@ encoder.encode(frame); - // |frame| is not longer valid since it has been destroyed. + // |frame| is not longer valid since it has been closed. assert_not_equals(frame.timestamp, timestamp); assert_throws_dom("InvalidStateError", () => frame.clone()); encoder.close(); return endAfterEventLoopTurn(); -}, 'Test encoder consumes (destroys) frames.'); +}, 'Test encoder consumes (closes) frames.'); promise_test(async t => { let encoder = new VideoEncoder(getDefaultCodecInit(t)); @@ -251,12 +251,11 @@ let encoder = new VideoEncoder(getDefaultCodecInit(t)); let frame = await createVideoFrame(640, 480, 0); - frame.destroy(); + frame.close(); encoder.configure(defaultConfig); - frame.destroy(); assert_throws_dom("OperationError", () => { encoder.encode(frame) }); -}, 'Verify encoding destroyed frames throws.'); +}, 'Verify encoding closed frames throws.');
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/video-frame-serialization.any.js b/third_party/blink/web_tests/external/wpt/webcodecs/video-frame-serialization.any.js index 524f943..338f721 100644 --- a/third_party/blink/web_tests/external/wpt/webcodecs/video-frame-serialization.any.js +++ b/third_party/blink/web_tests/external/wpt/webcodecs/video-frame-serialization.any.js
@@ -25,8 +25,8 @@ assert_equals(frame.cropWidth, clone.cropWidth); assert_equals(frame.cropHeight, clone.cropHeight); - frame.destroy(); - clone.destroy(); + frame.close(); + clone.close(); }, 'Test we can clone a VideoFrame.'); test(t => { @@ -35,23 +35,23 @@ let copy = frame; let clone = frame.clone(); - frame.destroy(); + frame.close(); assert_not_equals(copy.timestamp, defaultInit.timestamp); assert_equals(clone.timestamp, defaultInit.timestamp); - clone.destroy(); -}, 'Verify destroying a frame doesn\'t affect its clones.'); + clone.close(); +}, 'Verify closing a frame doesn\'t affect its clones.'); test(t => { let frame = createDefaultVideoFrame(); - frame.destroy(); + frame.close(); assert_throws_dom("InvalidStateError", () => { let clone = frame.clone(); }); -}, 'Verify cloning a destroyed frame throws.'); +}, 'Verify cloning a closed frame throws.'); async_test(t => { let localFrame = createDefaultVideoFrame(); @@ -62,7 +62,7 @@ externalPort.onmessage = t.step_func((e) => { let externalFrame = e.data; - externalFrame.destroy(); + externalFrame.close(); externalPort.postMessage("Done"); }) @@ -72,7 +72,7 @@ localPort.postMessage(localFrame); -}, 'Verify destroying frames propagates accross contexts.'); +}, 'Verify closing frames propagates accross contexts.'); async_test(t => { let localFrame = createDefaultVideoFrame(); @@ -83,18 +83,18 @@ externalPort.onmessage = t.step_func((e) => { let externalFrame = e.data; - externalFrame.destroy(); + externalFrame.close(); externalPort.postMessage("Done"); }) localPort.onmessage = t.step_func_done((e) => { assert_equals(localFrame.timestamp, defaultInit.timestamp); - localFrame.destroy(); + localFrame.close(); }) localPort.postMessage(localFrame.clone()); -}, 'Verify destroying cloned frames doesn\'t propagate accross contexts.'); +}, 'Verify closing cloned frames doesn\'t propagate accross contexts.'); async_test(t => { let localFrame = createDefaultVideoFrame(); @@ -104,11 +104,11 @@ localPort.onmessage = t.unreached_func(); - localFrame.destroy(); + localFrame.close(); assert_throws_dom("DataCloneError", () => { localPort.postMessage(localFrame); }); t.done(); -}, 'Verify posting destroyed frames throws.'); +}, 'Verify posting closed frames throws.');
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/video-frame.any.js b/third_party/blink/web_tests/external/wpt/webcodecs/video-frame.any.js index 9eb6699..14cce43 100644 --- a/third_party/blink/web_tests/external/wpt/webcodecs/video-frame.any.js +++ b/third_party/blink/web_tests/external/wpt/webcodecs/video-frame.any.js
@@ -12,7 +12,7 @@ assert_equals(frame.cropWidth, 32, "displayWidth"); assert_equals(frame.cropHeight, 16, "displayHeight"); - frame.destroy(); + frame.close(); }, 'Test we can construct a VideoFrame.'); test(t => { @@ -24,7 +24,7 @@ assert_equals(frame.cropWidth, 1, "displayWidth"); assert_equals(frame.cropHeight, 1, "displayHeight"); - frame.destroy(); + frame.close(); }, 'Test we can construct an odd-sized VideoFrame.'); test(t => { @@ -63,7 +63,7 @@ // guarantees about the color space. assert_equals(view[0], 94, "Y value at (0, 0)"); - frame.destroy(); + frame.close(); }, 'Test we can read planar data from a VideoFrame.'); test(t => { @@ -78,15 +78,15 @@ assert_equals(frame.planes.length, 3, "number of planes"); - // Attempt to read Y plane data, but destroy the frame first. + // Attempt to read Y plane data, but close the frame first. let yPlane = frame.planes[0]; let yLength = yPlane.length; - frame.destroy(); + frame.close(); let buffer = new ArrayBuffer(yLength); let view = new Uint8Array(buffer); assert_throws_dom("InvalidStateError", () => yPlane.readInto(view)); -}, 'Test we cannot read planar data from a destroyed VideoFrame.'); +}, 'Test we cannot read planar data from a closed VideoFrame.'); test(t => { let image = makeImageBitmap(32, 16);
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/video-track-reader.html b/third_party/blink/web_tests/external/wpt/webcodecs/video-track-reader.html index b5d610e9..925e837 100644 --- a/third_party/blink/web_tests/external/wpt/webcodecs/video-track-reader.html +++ b/third_party/blink/web_tests/external/wpt/webcodecs/video-track-reader.html
@@ -38,7 +38,7 @@ assert_equals(frame.codedWidth, testVideo.width); assert_equals(frame.codedHeight, testVideo.height); assert_not_equals(frame.timestamp, null); - frame.destroy(); + frame.close(); if (++numberFrames == 5) { vtr.stop();
diff --git a/third_party/blink/web_tests/external/wpt/webxr/hand-input/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/webxr/hand-input/idlharness.https.window-expected.txt deleted file mode 100644 index 67da619..0000000 --- a/third_party/blink/web_tests/external/wpt/webxr/hand-input/idlharness.https.window-expected.txt +++ /dev/null
@@ -1,36 +0,0 @@ -This is a testharness.js-based test. -PASS idl_test setup -PASS idl_test validation -PASS Partial interface XRInputSource: original interface defined -PASS Partial interface XRInputSource: member names are unique -PASS Partial interface XRFrame: original interface defined -PASS Partial interface XRFrame: member names are unique -FAIL XRHand interface: existence and properties of interface object assert_own_property: self does not have own property "XRHand" expected property "XRHand" missing -FAIL XRHand interface object length assert_own_property: self does not have own property "XRHand" expected property "XRHand" missing -FAIL XRHand interface object name assert_own_property: self does not have own property "XRHand" expected property "XRHand" missing -FAIL XRHand interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRHand" expected property "XRHand" missing -FAIL XRHand interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRHand" expected property "XRHand" missing -FAIL XRHand interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRHand" expected property "XRHand" missing -FAIL XRHand interface: iterable<XRHandJoint, XRJointSpace> Cannot read property 'prototype' of undefined -FAIL XRHand interface: attribute size assert_own_property: self does not have own property "XRHand" expected property "XRHand" missing -FAIL XRHand interface: operation get(XRHandJoint) assert_own_property: self does not have own property "XRHand" expected property "XRHand" missing -FAIL XRJointSpace interface: existence and properties of interface object assert_own_property: self does not have own property "XRJointSpace" expected property "XRJointSpace" missing -FAIL XRJointSpace interface object length assert_own_property: self does not have own property "XRJointSpace" expected property "XRJointSpace" missing -FAIL XRJointSpace interface object name assert_own_property: self does not have own property "XRJointSpace" expected property "XRJointSpace" missing -FAIL XRJointSpace interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRJointSpace" expected property "XRJointSpace" missing -FAIL XRJointSpace interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRJointSpace" expected property "XRJointSpace" missing -FAIL XRJointSpace interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRJointSpace" expected property "XRJointSpace" missing -FAIL XRJointSpace interface: attribute jointName assert_own_property: self does not have own property "XRJointSpace" expected property "XRJointSpace" missing -FAIL XRJointPose interface: existence and properties of interface object assert_own_property: self does not have own property "XRJointPose" expected property "XRJointPose" missing -FAIL XRJointPose interface object length assert_own_property: self does not have own property "XRJointPose" expected property "XRJointPose" missing -FAIL XRJointPose interface object name assert_own_property: self does not have own property "XRJointPose" expected property "XRJointPose" missing -FAIL XRJointPose interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRJointPose" expected property "XRJointPose" missing -FAIL XRJointPose interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRJointPose" expected property "XRJointPose" missing -FAIL XRJointPose interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRJointPose" expected property "XRJointPose" missing -FAIL XRJointPose interface: attribute radius assert_own_property: self does not have own property "XRJointPose" expected property "XRJointPose" missing -FAIL XRFrame interface: operation getJointPose(XRJointSpace, XRSpace) assert_own_property: interface prototype object missing non-static operation expected property "getJointPose" missing -FAIL XRFrame interface: operation fillJointRadii(sequence<XRJointSpace>, Float32Array) assert_own_property: interface prototype object missing non-static operation expected property "fillJointRadii" missing -FAIL XRFrame interface: operation fillPoses(sequence<XRSpace>, XRSpace, Float32Array) assert_own_property: interface prototype object missing non-static operation expected property "fillPoses" missing -FAIL XRInputSource interface: attribute hand assert_true: The prototype object must have a property "hand" expected true got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/geolocation-api/callback-exception.html b/third_party/blink/web_tests/geolocation-api/callback-exception.html deleted file mode 100644 index c33f5e0..0000000 --- a/third_party/blink/web_tests/geolocation-api/callback-exception.html +++ /dev/null
@@ -1,56 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -setup({allow_uncaught_exception: true}); - -description("Tests that when an exception is thrown in the success callback, the error callback is not invoked. Note that this test throws an exception which is not caught."); - -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100; - -var position; - -let gotError = false; -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPosition(mockLatitude, - mockLongitude, - mockAccuracy); -navigator.geolocation.getCurrentPosition(function(p) { - position = p; - shouldBe('position.coords.latitude', 'mockLatitude'); - shouldBe('position.coords.longitude', 'mockLongitude'); - shouldBe('position.coords.accuracy', 'mockAccuracy'); - - // Yield to allow for the error callback to be invoked. The timer - // must be started before the exception is thrown. - window.setTimeout(assertWeGotException, 0); - window.onerror = () => { gotError = true; }; - expectError(); - - throw new Error('Exception in success callback'); -}, function(e) { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}); - -function assertWeGotException() -{ - assert_true(gotError); - finishJSTest(); -} -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/clear-watch-invalid-id-crash.html b/third_party/blink/web_tests/geolocation-api/clear-watch-invalid-id-crash.html deleted file mode 100644 index 15351f7..0000000 --- a/third_party/blink/web_tests/geolocation-api/clear-watch-invalid-id-crash.html +++ /dev/null
@@ -1,30 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -document.body.onload = function() { - let mock = geolocationMock; - mock.setGeolocationPermission(true); - mock.setGeolocationPosition(51.478, -0.166, 100); - - navigator.geolocation.watchPosition(function() {}); - navigator.geolocation.clearWatch(0); - - // This triggers unload, exercising the regression path which could crash - // the renderer due to the invalid clearWatch invocation above. The test - // passes if it doesn't crash. - location = "resources/pass-test.html#no crash on unload after clearing invalid watch id"; -} -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/coordinates-interface-attributes.html b/third_party/blink/web_tests/geolocation-api/coordinates-interface-attributes.html deleted file mode 100644 index 5357bcb..0000000 --- a/third_party/blink/web_tests/geolocation-api/coordinates-interface-attributes.html +++ /dev/null
@@ -1,69 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Test the attribute handling of the Coordinates interface"); - -// Format: [Input], [Expected] -// Input: latitude, longitude, accuracy, altitude, altitudeAccuracy, heading, speed. -// Expected: latitude, longitude, accuracy, altitude, altitudeAccuracy, heading, speed. -var testSet = [ - [[1, 2, 3], [1, 2, 3, null, null, null, null]], - [[2, 3, 4, undefined, undefined, undefined, 5], [2, 3, 4, null, null, null, 5]], - [[3, 4, 5, undefined, 6, undefined, 7], [3, 4, 5, null, 6, null, 7]], - [[4, 5, 6, undefined, 7, 8, 9], [4, 5, 6, null, 7, 8, 9]], - [[5, 6, 7, 8, 9, 10, 11], [5, 6, 7, 8, 9, 10, 11]], -]; - -var currentTestIndex = -1; -var globalCoordinates = null; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); - -function runNextTest() -{ - ++currentTestIndex; - mock.setGeolocationPosition(...testSet[currentTestIndex][0]); -} - -function verifyResults() -{ - shouldBe('globalCoordinates.latitude', 'testSet[currentTestIndex][1][0]'); - shouldBe('globalCoordinates.longitude', 'testSet[currentTestIndex][1][1]'); - shouldBe('globalCoordinates.accuracy', 'testSet[currentTestIndex][1][2]'); - shouldBe('globalCoordinates.altitude', 'testSet[currentTestIndex][1][3]'); - shouldBe('globalCoordinates.altitudeAccuracy', 'testSet[currentTestIndex][1][4]'); - shouldBe('globalCoordinates.heading', 'testSet[currentTestIndex][1][5]'); - shouldBe('globalCoordinates.speed', 'testSet[currentTestIndex][1][6]'); -} - -var watchId = navigator.geolocation.watchPosition(function(position) { - globalCoordinates = position.coords; - verifyResults(); - - if (currentTestIndex + 1 === testSet.length) { - finishJSTest(); - return; - } - runNextTest(); -}, function(e) { - testFailed('the error callback was called unexpectedly'); - finishJSTest(); -}); - -runNextTest(); - -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/delayed-permission-allowed.html b/third_party/blink/web_tests/geolocation-api/delayed-permission-allowed.html deleted file mode 100644 index a068b83a..0000000 --- a/third_party/blink/web_tests/geolocation-api/delayed-permission-allowed.html +++ /dev/null
@@ -1,42 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when a position is available, no callbacks are invoked until permission is allowed."); - -let mock = geolocationMock; -mock.setGeolocationPosition(51.478, -0.166, 100); - -var permissionSet = false; - -function allowPermission() { - permissionSet = true; - mock.setGeolocationPermission(true); -} - -navigator.geolocation.getCurrentPosition(function() { - if (permissionSet) { - testPassed('Success callback invoked'); - finishJSTest(); - return; - } - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function() { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}); -window.setTimeout(allowPermission, 100); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/delayed-permission-denied-for-multiple-requests.html b/third_party/blink/web_tests/geolocation-api/delayed-permission-denied-for-multiple-requests.html deleted file mode 100644 index 0415f764..0000000 --- a/third_party/blink/web_tests/geolocation-api/delayed-permission-denied-for-multiple-requests.html +++ /dev/null
@@ -1,71 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when multiple requests are waiting for permission, no callbacks are invoked until permission is denied."); - -var error; - -let mock = geolocationMock; -mock.setGeolocationPosition(51.478, -0.166, 100); - -var permissionSet = false; - -function denyPermission() { - permissionSet = true; - mock.setGeolocationPermission(false); -} - -var watchCallbackInvoked = false; -var oneShotCallbackInvoked = false; - -navigator.geolocation.watchPosition(function() { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - if (permissionSet) { - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); - watchCallbackInvoked = true; - maybeFinishTest(); - return; - } - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}); - -navigator.geolocation.getCurrentPosition(function() { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - if (permissionSet) { - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); - oneShotCallbackInvoked = true; - maybeFinishTest(); - return; - } - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}); -window.setTimeout(denyPermission, 100); - -function maybeFinishTest() { - if (watchCallbackInvoked && oneShotCallbackInvoked) - finishJSTest(); -} -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/delayed-permission-denied.html b/third_party/blink/web_tests/geolocation-api/delayed-permission-denied.html deleted file mode 100644 index b2339edb9..0000000 --- a/third_party/blink/web_tests/geolocation-api/delayed-permission-denied.html +++ /dev/null
@@ -1,46 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when a position is available, no callbacks are invoked until permission is denied."); - -var error; - -let mock = geolocationMock; -mock.setGeolocationPosition(51.478, -0.166, 100); - -var permissionSet = false; - -function denyPermission() { - permissionSet = true; - mock.setGeolocationPermission(false); -} - -navigator.geolocation.getCurrentPosition(function() { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - if (permissionSet) { - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); - finishJSTest(); - return; - } - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}); -window.setTimeout(denyPermission, 100); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/disconnected-frame-already.html b/third_party/blink/web_tests/geolocation-api/disconnected-frame-already.html deleted file mode 100644 index b0b925f..0000000 --- a/third_party/blink/web_tests/geolocation-api/disconnected-frame-already.html +++ /dev/null
@@ -1,47 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when a request is made on a Geolocation object after its frame has been disconnected, no callbacks are made and no crash occurs."); - -var iframe = document.createElement('iframe'); - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPosition(51.478, -0.166, 100); - -iframe.src = 'resources/disconnected-frame-already-inner1.html'; -document.body.appendChild(iframe); - -function onFirstIframeLoaded() { - iframeGeolocation = iframe.contentWindow.navigator.geolocation; - iframe.src = 'resources/disconnected-frame-already-inner2.html'; -} - -function onSecondIframeLoaded() { - iframeGeolocation.getCurrentPosition(function () { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); - }, function(e) { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); - }); - setTimeout(finishTest, 1000); -} - -function finishTest() { - finishJSTest(); -} -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/disconnected-frame.html b/third_party/blink/web_tests/geolocation-api/disconnected-frame.html deleted file mode 100644 index f252db28..0000000 --- a/third_party/blink/web_tests/geolocation-api/disconnected-frame.html +++ /dev/null
@@ -1,48 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when a request is made on a Geolocation object and its Frame is disconnected before a callback is made, no callbacks are made."); - -var error; -var iframe = document.createElement('iframe'); - -function onIframeLoaded() { - iframeGeolocation = iframe.contentWindow.navigator.geolocation; - iframe.src = 'data:text/html,This frame should be visible when the test completes'; -} - -function onIframeUnloaded() { - iframeGeolocation.getCurrentPosition(function () { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); - }, function(e) { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); - }); - setTimeout(function() { - testPassed('No callbacks invoked'); - finishJSTest(); - }, 100); -} - - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPosition(51.478, -0.166, 100); - -iframe.src = 'resources/disconnected-frame-inner.html'; -document.body.appendChild(iframe); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/error-clear-watch.html b/third_party/blink/web_tests/geolocation-api/error-clear-watch.html deleted file mode 100644 index cefbf4bd..0000000 --- a/third_party/blink/web_tests/geolocation-api/error-clear-watch.html +++ /dev/null
@@ -1,30 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("This tests removing the watcher from an error callback does not causes assertions."); - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPositionUnavailableError("debug"); - -var watchId = navigator.geolocation.watchPosition(function() { - navigator.geolocation.clearWatch(watchId); - finishJSTest(); -}, function(e) { - navigator.geolocation.clearWatch(watchId); - finishJSTest(); -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/error-service-connection-error.html b/third_party/blink/web_tests/geolocation-api/error-service-connection-error.html deleted file mode 100644 index d646ddc1..0000000 --- a/third_party/blink/web_tests/geolocation-api/error-service-connection-error.html +++ /dev/null
@@ -1,34 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests Geolocation when the geolocation service connection fails."); - -var error; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.rejectGeolocationServiceConnections(); - -navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); - finishJSTest(); -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/error.html b/third_party/blink/web_tests/geolocation-api/error.html deleted file mode 100644 index b84a6940..0000000 --- a/third_party/blink/web_tests/geolocation-api/error.html +++ /dev/null
@@ -1,40 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests Geolocation error callback using the mock service."); - -var mockMessage = "debug"; - -var error; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPositionUnavailableError(mockMessage); - -navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - error = e; - shouldBe('error.code', 'error.POSITION_UNAVAILABLE'); - shouldBe('error.message', 'mockMessage'); - shouldBe('error.UNKNOWN_ERROR', 'undefined'); - shouldBe('error.PERMISSION_DENIED', '1'); - shouldBe('error.POSITION_UNAVAILABLE', '2'); - shouldBe('error.TIMEOUT', '3'); - finishJSTest(); -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/multiple-requests.html b/third_party/blink/web_tests/geolocation-api/multiple-requests.html deleted file mode 100644 index 18954f80d..0000000 --- a/third_party/blink/web_tests/geolocation-api/multiple-requests.html +++ /dev/null
@@ -1,57 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that Geolocation correctly handles multiple concurrent requests."); - -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100; - -var position; -var watchCallbackInvoked = false; -var oneShotCallbackInvoked = false; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy); - -navigator.geolocation.watchPosition(function(p) { - shouldBeFalse('watchCallbackInvoked'); - watchCallbackInvoked = true; - maybeFinishTest(p); -}, function() { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}); - -navigator.geolocation.getCurrentPosition(function(p) { - shouldBeFalse('oneShotCallbackInvoked'); - oneShotCallbackInvoked = true; - maybeFinishTest(p); -}, function() { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}); - -function maybeFinishTest(p) { - position = p; - shouldBe('position.coords.latitude', 'mockLatitude'); - shouldBe('position.coords.longitude', 'mockLongitude'); - shouldBe('position.coords.accuracy', 'mockAccuracy'); - if (watchCallbackInvoked && oneShotCallbackInvoked) - finishJSTest(); -} -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/permission-denied-already-clear-watch.html b/third_party/blink/web_tests/geolocation-api/permission-denied-already-clear-watch.html deleted file mode 100644 index 953ed11b..0000000 --- a/third_party/blink/web_tests/geolocation-api/permission-denied-already-clear-watch.html +++ /dev/null
@@ -1,50 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when Geolocation permission has been denied prior to a call to watchPosition, and the watch is cleared in the error callback, there is no crash. This a regression test for https://bugs.webkit.org/show_bug.cgi?id=32111."); - -var error; - -// Prime the Geolocation instance by denying permission. -let mock = geolocationMock; -mock.setGeolocationPermission(false); -mock.setGeolocationPosition(51.478, -0.166, 100); - -navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); - continueTest(); -}); - -function continueTest() -{ - // Make another request, with permission already denied. - var watchId = navigator.geolocation.watchPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); - }, function(e) { - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); - navigator.geolocation.clearWatch(watchId); - window.setTimeout(finishJSTest, 0); - }); -} -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/permission-denied-already-error.html b/third_party/blink/web_tests/geolocation-api/permission-denied-already-error.html deleted file mode 100644 index 1dc6f04..0000000 --- a/third_party/blink/web_tests/geolocation-api/permission-denied-already-error.html +++ /dev/null
@@ -1,50 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when Geolocation permission has been denied prior to a call to a Geolocation method, the error callback is invoked with code PERMISSION_DENIED, when the Geolocation service encounters an error."); - -var error; - -let mock = geolocationMock; -mock.setGeolocationPermission(false); -mock.setGeolocationPosition(51.478, -0.166, 100); - -navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); - continueTest(); -}); - -function continueTest() -{ - // Make another request, with permission already denied. - mock.setGeolocationPositionUnavailableError('test'); - - navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); - }, function(e) { - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); - finishJSTest(); - }); -} -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/permission-denied-already-success.html b/third_party/blink/web_tests/geolocation-api/permission-denied-already-success.html deleted file mode 100644 index 38f1036d..0000000 --- a/third_party/blink/web_tests/geolocation-api/permission-denied-already-success.html +++ /dev/null
@@ -1,49 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when Geolocation permission has been denied prior to a call to a Geolocation method, the error callback is invoked with code PERMISSION_DENIED, when the Geolocation service has a good position."); - -var error; - -// Prime the Geolocation instance by denying permission. -let mock = geolocationMock; -mock.setGeolocationPermission(false); -mock.setGeolocationPosition(51.478, -0.166, 100); - -navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); - continueTest(); -}); - -function continueTest() -{ - // Make another request, with permission already denied. - navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); - }, function(e) { - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); - finishJSTest(); - }); -} -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/permission-denied-stops-watches.html b/third_party/blink/web_tests/geolocation-api/permission-denied-stops-watches.html deleted file mode 100644 index 0257cfa..0000000 --- a/third_party/blink/web_tests/geolocation-api/permission-denied-stops-watches.html +++ /dev/null
@@ -1,47 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when Geolocation permission is denied, watches are stopped, as well as one-shots."); - -var error; - -// Configure the mock Geolocation service to report a position to cause permission -// to be requested, then deny it. -let mock = geolocationMock; -mock.setGeolocationPermission(false); -mock.setGeolocationPosition(51.478, -0.166, 100.0); - -var errorCallbackInvoked = false; -navigator.geolocation.watchPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - if (errorCallbackInvoked) { - testFailed('Error callback invoked unexpectedly : ' + error.message); - finishJSTest(); - } - errorCallbackInvoked = true; - - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); - - // Update the mock Geolocation service to report a new position, then - // yield to allow a chance for the success callback to be invoked. - mock.setGeolocationPosition(55.478, -0.166, 100); - window.setTimeout(finishJSTest, 0); -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/permission-denied.html b/third_party/blink/web_tests/geolocation-api/permission-denied.html deleted file mode 100644 index 68a2a5f..0000000 --- a/third_party/blink/web_tests/geolocation-api/permission-denied.html +++ /dev/null
@@ -1,34 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests Geolocation when permission is denied, using the mock service."); - -var error; - -let mock = geolocationMock; -mock.setGeolocationPermission(false); -mock.setGeolocationPosition(51.478, -0.166, 100.0); - -navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); - finishJSTest(); -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/position-string.html b/third_party/blink/web_tests/geolocation-api/position-string.html deleted file mode 100644 index 6472989..0000000 --- a/third_party/blink/web_tests/geolocation-api/position-string.html +++ /dev/null
@@ -1,44 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests formatting of position.toString()."); - -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100.0; - -var position; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPosition(mockLatitude, - mockLongitude, - mockAccuracy); - -navigator.geolocation.getCurrentPosition(function(p) { - // shouldBe can't use local variables yet. - position = p; - shouldBe('position.coords.latitude', 'mockLatitude'); - shouldBe('position.coords.longitude', 'mockLongitude'); - shouldBe('position.coords.accuracy', 'mockAccuracy'); - shouldBe('position.toString()', '"[object GeolocationPosition]"'); - shouldBe('position.coords.toString()', '"[object GeolocationCoordinates]"'); - finishJSTest(); -}, function(e) { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/reentrant-error.html b/third_party/blink/web_tests/geolocation-api/reentrant-error.html deleted file mode 100644 index 428efa3..0000000 --- a/third_party/blink/web_tests/geolocation-api/reentrant-error.html +++ /dev/null
@@ -1,59 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that reentrant calls to Geolocation methods from the error callback are OK."); - -var mockMessage = 'test'; - -var error; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPositionUnavailableError(mockMessage); - -var errorCallbackInvoked = false; -navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - if (errorCallbackInvoked) { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); - } - errorCallbackInvoked = true; - - error = e; - shouldBe('error.code', 'error.POSITION_UNAVAILABLE'); - shouldBe('error.message', 'mockMessage'); - continueTest(); -}); - -function continueTest() { - mockMessage += ' repeat'; - - mock.setGeolocationPositionUnavailableError(mockMessage); - - navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); - }, function(e) { - error = e; - shouldBe('error.code', 'error.POSITION_UNAVAILABLE'); - shouldBe('error.message', 'mockMessage'); - finishJSTest(); - }); -} -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/reentrant-permission-denied.html b/third_party/blink/web_tests/geolocation-api/reentrant-permission-denied.html deleted file mode 100644 index 901203f..0000000 --- a/third_party/blink/web_tests/geolocation-api/reentrant-permission-denied.html +++ /dev/null
@@ -1,54 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that reentrant calls to Geolocation methods from the error callback due to a PERMISSION_DENIED error are OK."); - -var error; - -let mock = geolocationMock; -mock.setGeolocationPermission(false); -mock.setGeolocationPosition(51.478, -0.166, 100.0); - -function checkPermissionError(e) { - error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); -} - -var errorCallbackInvoked = false; -navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - if (errorCallbackInvoked) { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); - } - errorCallbackInvoked = true; - checkPermissionError(e); - continueTest(); -}); - -function continueTest() { - navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); - }, function(e) { - checkPermissionError(e); - finishJSTest(); - }); -} -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/reentrant-success.html b/third_party/blink/web_tests/geolocation-api/reentrant-success.html deleted file mode 100644 index c0c341b..0000000 --- a/third_party/blink/web_tests/geolocation-api/reentrant-success.html +++ /dev/null
@@ -1,65 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that reentrant calls to Geolocation methods from the success callback are OK."); - -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100.0; - -var position; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPosition(mockLatitude, - mockLongitude, - mockAccuracy); - -var successCallbackInvoked = false; -navigator.geolocation.getCurrentPosition(function(p) { - if (successCallbackInvoked) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); - } - successCallbackInvoked = true; - - position = p; - shouldBe('position.coords.latitude', 'mockLatitude'); - shouldBe('position.coords.longitude', 'mockLongitude'); - shouldBe('position.coords.accuracy', 'mockAccuracy'); - continueTest(); -}, function(e) { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}); - -function continueTest() { - mock.setGeolocationPosition(++mockLatitude, - ++mockLongitude, - ++mockAccuracy); - - navigator.geolocation.getCurrentPosition(function(p) { - position = p; - shouldBe('position.coords.latitude', 'mockLatitude'); - shouldBe('position.coords.longitude', 'mockLongitude'); - shouldBe('position.coords.accuracy', 'mockAccuracy'); - finishJSTest(); - }, function(e) { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); - }); -} -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/resources/callback-to-remote-context-inner.html b/third_party/blink/web_tests/geolocation-api/resources/callback-to-remote-context-inner.html deleted file mode 100644 index c73e1957..0000000 --- a/third_party/blink/web_tests/geolocation-api/resources/callback-to-remote-context-inner.html +++ /dev/null
@@ -1,21 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> - <head> - <script src="../../resources/js-test.js"></script> - <script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> - <script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> - <script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> - <script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> - <script src="geolocation-mock.js"></script> - <script> - function init() { - let mock = geolocationMock; - mock.setGeolocationPermission(true); - mock.setGeolocationPosition(51.478, -0.166, 100); - window.parent.onIframeReady() - } - </script> - </head> - <body onload="init()"> - </body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/resources/notimer-after-unload-inner-before.html b/third_party/blink/web_tests/geolocation-api/resources/notimer-after-unload-inner-before.html deleted file mode 100644 index e7cbb18..0000000 --- a/third_party/blink/web_tests/geolocation-api/resources/notimer-after-unload-inner-before.html +++ /dev/null
@@ -1,28 +0,0 @@ -<!DOCTYPE html> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="geolocation-mock.js"></script> -<script type="module"> -const parent = window.parent; -geolocationMock.setGeolocationPermission(true); - -// Query the position but intercept the query so the service doesn't respond -// immediately. If it responds too early, we won't exercise the intended code -// path, i.e. geolocation API receiving a response from the service after page -// unload. Similarly, issuing the request too late will also fail to exercise -// that path because the mock service may not receive the request in time to -// process and reply to it. -// -// Instead, we ensure the service sees the request before moving forward, but -// we defer its response until we're within the unload handler below. -const promise = geolocationMock.interceptQueryNextPosition(); -navigator.geolocation.getCurrentPosition( - parent.onGeolocationResponse, parent.onGeolocationResponse, - {timeout: 500, maximumAge:0}); -const respond = await promise; -document.body.onunload = - () => respond(geolocationMock.makeGeoposition(1, 2, 3)); -parent.navigateToSecondPage(); -</script>
diff --git a/third_party/blink/web_tests/geolocation-api/resources/pass-test.html b/third_party/blink/web_tests/geolocation-api/resources/pass-test.html deleted file mode 100644 index 6a263e8..0000000 --- a/third_party/blink/web_tests/geolocation-api/resources/pass-test.html +++ /dev/null
@@ -1,8 +0,0 @@ -SUCCESS -<script src="../../resources/testharness.js"></script> -<script src="../../resources/testharnessreport.js"></script> -<script> -document.title = decodeURIComponent(location.hash.substring(1)); -setup({single_test: true}); -done(); -</script>
diff --git a/third_party/blink/web_tests/geolocation-api/resources/remove-remote-context-in-error-callback-crash-inner.html b/third_party/blink/web_tests/geolocation-api/resources/remove-remote-context-in-error-callback-crash-inner.html deleted file mode 100644 index 69f4fd2..0000000 --- a/third_party/blink/web_tests/geolocation-api/resources/remove-remote-context-in-error-callback-crash-inner.html +++ /dev/null
@@ -1,18 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> - <head> - <script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> - <script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> - <script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> - <script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> - <script src="geolocation-mock.js"></script> - <script> - function init() { - geolocationMock.setGeolocationPermission(false); - window.parent.onIframeReady(); - } - </script> - </head> - <body onload="init()"> - </body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/resources/window-close-popup.html b/third_party/blink/web_tests/geolocation-api/resources/window-close-popup.html deleted file mode 100644 index 304ef67..0000000 --- a/third_party/blink/web_tests/geolocation-api/resources/window-close-popup.html +++ /dev/null
@@ -1,19 +0,0 @@ -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="geolocation-mock.js"></script> -<script> -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100.0; - -function loadNext() { - let mock = geolocationMock; - mock.setGeolocationPermission(true); - mock.setGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy); - - navigator.geolocation.watchPosition(window.opener.gotPosition); -} -</script> -<body onload="loadNext()"></body>
diff --git a/third_party/blink/web_tests/geolocation-api/success-clear-watch.html b/third_party/blink/web_tests/geolocation-api/success-clear-watch.html deleted file mode 100644 index f91aade..0000000 --- a/third_party/blink/web_tests/geolocation-api/success-clear-watch.html +++ /dev/null
@@ -1,36 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("This tests removing the watcher from a position callback does not causes assertions."); - -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPosition(mockLatitude, - mockLongitude, - mockAccuracy); - -var watchId = navigator.geolocation.watchPosition(function() { - navigator.geolocation.clearWatch(watchId); - finishJSTest(); -}, function(e) { - navigator.geolocation.clearWatch(watchId); - finishJSTest(); -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/success.html b/third_party/blink/web_tests/geolocation-api/success.html deleted file mode 100644 index 9fe5fd4f..0000000 --- a/third_party/blink/web_tests/geolocation-api/success.html +++ /dev/null
@@ -1,41 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests Geolocation success callback using the mock service."); - -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100; - -var position; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPosition(mockLatitude, - mockLongitude, - mockAccuracy); - -navigator.geolocation.getCurrentPosition(function(p) { - position = p; - shouldBe('position.coords.latitude', 'mockLatitude'); - shouldBe('position.coords.longitude', 'mockLongitude'); - shouldBe('position.coords.accuracy', 'mockAccuracy'); - finishJSTest(); -}, function(e) { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/timeout-clear-watch.html b/third_party/blink/web_tests/geolocation-api/timeout-clear-watch.html deleted file mode 100644 index c6d60a1..0000000 --- a/third_party/blink/web_tests/geolocation-api/timeout-clear-watch.html +++ /dev/null
@@ -1,36 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when a watch times out and is cleared from the error callback, there is no crash. This a regression test for https://bugs.webkit.org/show_bug.cgi?id=32111."); - -var error; - -geolocationMock.setGeolocationPermission(true); -geolocationMock.setGeolocationTimeoutError(true); - -var watchId = navigator.geolocation.watchPosition(function() { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - error = e; - shouldBe('error.code', 'error.TIMEOUT'); - shouldBe('error.message', '"Timeout expired"'); - navigator.geolocation.clearWatch(watchId); - window.setTimeout(finishJSTest, 0); -}, { - timeout: 0 -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/timeout-negative.html b/third_party/blink/web_tests/geolocation-api/timeout-negative.html deleted file mode 100644 index 0880c24b..0000000 --- a/third_party/blink/web_tests/geolocation-api/timeout-negative.html +++ /dev/null
@@ -1,35 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when timeout is negative (and maximumAge is too), the error callback is called immediately with code TIMEOUT."); - -var error; - -geolocationMock.setGeolocationPermission(true); -geolocationMock.setGeolocationTimeoutError(true); - -navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - error = e; - shouldBe('error.code', 'error.TIMEOUT'); - shouldBe('error.message', '"Timeout expired"'); - finishJSTest(); -}, { - timeout: -1000 -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/timeout-over-max-of-unsigned.html b/third_party/blink/web_tests/geolocation-api/timeout-over-max-of-unsigned.html deleted file mode 100644 index c185e1b..0000000 --- a/third_party/blink/web_tests/geolocation-api/timeout-over-max-of-unsigned.html +++ /dev/null
@@ -1,43 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when timeout value is over maximum of unsigned, the success callback is called as expected."); - -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100.0; - -var position; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPosition(mockLatitude, - mockLongitude, - mockAccuracy); - -navigator.geolocation.getCurrentPosition(function(p) { - position = p; - shouldBe('position.coords.latitude', 'mockLatitude'); - shouldBe('position.coords.longitude', 'mockLongitude'); - shouldBe('position.coords.accuracy', 'mockAccuracy'); - finishJSTest(); -}, function(e) { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}, { - timeout: 4294967296 -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/timeout-zero.html b/third_party/blink/web_tests/geolocation-api/timeout-zero.html deleted file mode 100644 index a0a7994..0000000 --- a/third_party/blink/web_tests/geolocation-api/timeout-zero.html +++ /dev/null
@@ -1,35 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when timeout is zero (and maximumAge is too), the error callback is called immediately with code TIMEOUT."); - -var error; - -geolocationMock.setGeolocationPermission(true); -geolocationMock.setGeolocationTimeoutError(true); - -navigator.geolocation.getCurrentPosition(function(p) { - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); -}, function(e) { - error = e; - shouldBe('error.code', 'error.TIMEOUT'); - shouldBe('error.message', '"Timeout expired"'); - finishJSTest(); -}, { - timeout: 0 -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/timeout.html b/third_party/blink/web_tests/geolocation-api/timeout.html deleted file mode 100644 index c4a2e61..0000000 --- a/third_party/blink/web_tests/geolocation-api/timeout.html +++ /dev/null
@@ -1,43 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that when timeout is non-zero, the success callback is called as expected."); - -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100.0; - -var position; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPosition(mockLatitude, - mockLongitude, - mockAccuracy); - -navigator.geolocation.getCurrentPosition(function(p) { - position = p; - shouldBe('position.coords.latitude', 'mockLatitude'); - shouldBe('position.coords.longitude', 'mockLongitude'); - shouldBe('position.coords.accuracy', 'mockAccuracy'); - finishJSTest(); -}, function(e) { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}, { - timeout: 1000 -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/timestamp.html b/third_party/blink/web_tests/geolocation-api/timestamp.html deleted file mode 100644 index e136295..0000000 --- a/third_party/blink/web_tests/geolocation-api/timestamp.html +++ /dev/null
@@ -1,52 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that Geoposition timestamps are well-formed (non-zero and in the same units as Date.getTime)."); - -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100.0; - -var now = new Date().getTime(); -shouldBeTrue('now != 0'); -var t = null; -var then = null; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy); - -function checkPosition(p) { - t = p.timestamp; - var d = new Date(); - then = d.getTime(); - shouldBeTrue('t != 0'); - shouldBeTrue('then != 0'); - shouldBeTrue('now - 1 <= t'); // Avoid rounding errors - if (now - 1 > t) { - debug(" now - 1 = " + (now-1)); - debug(" t = " + t); - } - shouldBeTrue('t <= then + 1'); // Avoid rounding errors - if (t > then + 1) { - debug(" t = " + t); - debug(" then + 1 = " + (then + 1)); - } - finishJSTest(); -} - -navigator.geolocation.getCurrentPosition(checkPosition); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/watch.html b/third_party/blink/web_tests/geolocation-api/watch.html deleted file mode 100644 index 11a112ce0..0000000 --- a/third_party/blink/web_tests/geolocation-api/watch.html +++ /dev/null
@@ -1,75 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that watchPosition correctly reports position updates and errors from the Geolocation service."); - -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100.0; - -var mockMessage = 'test'; - -var position; -var error; - -function checkPosition(p) { - position = p; - shouldBe('position.coords.latitude', 'mockLatitude'); - shouldBe('position.coords.longitude', 'mockLongitude'); - shouldBe('position.coords.accuracy', 'mockAccuracy'); -} - -function checkError(e) { - error = e; - shouldBe('error.code', 'error.POSITION_UNAVAILABLE'); - shouldBe('error.message', 'mockMessage'); -} - -let mock = geolocationMock; -mock.setGeolocationPermission(true); -mock.setGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy); - -var state = 0; -navigator.geolocation.watchPosition(function(p) { - switch (state++) { - case 0: - checkPosition(p); - mock.setGeolocationPosition(++mockLatitude, ++mockLongitude, ++mockAccuracy); - break; - case 1: - checkPosition(p); - mock.setGeolocationPositionUnavailableError(mockMessage); - break; - case 3: - checkPosition(p); - finishJSTest(); - break; - default: - testFailed('Success callback invoked unexpectedly'); - finishJSTest(); - } -}, function(e) { - switch (state++) { - case 2: - checkError(e); - mock.setGeolocationPosition(++mockLatitude, ++mockLongitude, ++mockAccuracy); - break; - default: - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); - } -}); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/watchPosition-page-visibility.html b/third_party/blink/web_tests/geolocation-api/watchPosition-page-visibility.html deleted file mode 100644 index 0f133b3..0000000 --- a/third_party/blink/web_tests/geolocation-api/watchPosition-page-visibility.html +++ /dev/null
@@ -1,87 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="../resources/user-gesture-utils.js"></script> -<script src="../resources/visibility.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> -description("Tests that watchPosition does not report position changes when the page is not visible."); - -var position; -var error; -var isPageVisible = true; - -let mock = geolocationMock; -mock.setGeolocationPermission(true); - -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100.0; - -function updatePosition() { - ++mockLatitude; - ++mockLongitude; - mock.setGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy); -} - -updatePosition(); - -var state = 0; - -function checkPosition(p) { - position = p; - shouldBe('position.coords.latitude', '' + mockLatitude); - shouldBe('position.coords.longitude', '' + mockLongitude); -} - -function showPageAndUpdatePosition() { - shouldBeFalse('isPageVisible'); - state++; - setMainWindowHidden(false).then(() => { - isPageVisible = true; - updatePosition(); - }); -} - -navigator.geolocation.watchPosition(function(p) { - shouldBeTrue('isPageVisible'); - state++; - checkPosition(p); - switch(state) { - case 1: - updatePosition(); - break; - case 2: { - setMainWindowHidden(true).then(() => { - isPageVisible = false; - // This should not be received. - updatePosition(); - // Wait for it to not be received, then continue. - roundTripToBrowser().then(showPageAndUpdatePosition); - }); - break; - } - case 3: - updatePosition(); - break; - case 4: - finishJSTest(); - return; - } -}, function(e) { - testFailed('Error callback invoked unexpectedly'); - finishJSTest(); -}); - -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/geolocation-api/watchPosition-unique.html b/third_party/blink/web_tests/geolocation-api/watchPosition-unique.html deleted file mode 100644 index a8dbfddf..0000000 --- a/third_party/blink/web_tests/geolocation-api/watchPosition-unique.html +++ /dev/null
@@ -1,37 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> -<script src="resources/testharness-adapter.js"></script> -</head> -<body> -<script> - -description("Tests that navigator.geolocation.watchPosition returns unique results within its script execution context."); - -var watchID1; -var watchID2; -var watchID3; - -geolocationMock.setGeolocationPosition(51.478, -0.166, 100.0); - -watchID1 = navigator.geolocation.watchPosition(function() { }); -watchID2 = navigator.geolocation.watchPosition(function() { }); -watchID3 = navigator.geolocation.watchPosition(function() { }); - -shouldBeTrue("watchID1 > 0"); -shouldBeTrue("watchID2 > 0"); -shouldBeTrue("watchID3 > 0"); -shouldBeTrue("watchID1 !== watchID2"); -shouldBeTrue("watchID1 !== watchID3"); -shouldBeTrue("watchID2 !== watchID3"); -finishJSTest(); -</script> -</body> -</html>
diff --git a/third_party/blink/web_tests/http/tests/geolocation-api/geolocation-default-feature-policy.https.sub.html b/third_party/blink/web_tests/http/tests/geolocation-api/geolocation-default-feature-policy.https.sub.html index a113ed0..1a7f6756 100644 --- a/third_party/blink/web_tests/http/tests/geolocation-api/geolocation-default-feature-policy.https.sub.html +++ b/third_party/blink/web_tests/http/tests/geolocation-api/geolocation-default-feature-policy.https.sub.html
@@ -3,23 +3,15 @@ <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=../resources/feature-policy-permissions-test.js></script> -<script src=/gen/layout_test_data/mojo/public/js/mojo_bindings.js></script> -<script src=/gen/device/geolocation/public/interfaces/geolocation.mojom.js></script> -<script src=/gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js></script> -<script src=/gen/third_party/blink/public/mojom/permissions/permission.mojom.js></script> -<script src=/geolocation-api/js-test-resources/geolocation-mock.js></script> -<script> -'use strict'; +<script type="module"> +import {GeolocationMock} from '/wpt_internal/geolocation-api/resources/geolocation-mock.js'; -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100.0; +const mockLatitude = 51.478; +const mockLongitude = -0.166; +const mockAccuracy = 100.0; -if (!window.mojo) - console.error('This test can not run without mojo'); - -let mock = geolocationMock; +const mock = new GeolocationMock(); mock.setGeolocationPermission(true); mock.setGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy);
diff --git a/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/geolocation-on-sandboxed-insecure-origin.html b/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/geolocation-on-sandboxed-insecure-origin.html index baeee2d..ab1ea0e 100644 --- a/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/geolocation-on-sandboxed-insecure-origin.html +++ b/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/geolocation-on-sandboxed-insecure-origin.html
@@ -26,7 +26,7 @@ })); var iframe = document.createElement("iframe"); - iframe.sandbox = "allow-scripts"; + iframe.sandbox = "allow-scripts allow-same-origin"; iframe.src = get_host_info().UNAUTHENTICATED_ORIGIN + "/security/powerfulFeatureRestrictions/resources/" + "geolocation-in-iframe.html";
diff --git a/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/geolocation-on-secure-origin-in-insecure-origin.html b/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/geolocation-on-secure-origin-in-insecure-origin.html index 1a4ca625..120baa86 100644 --- a/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/geolocation-on-secure-origin-in-insecure-origin.html +++ b/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/geolocation-on-secure-origin-in-insecure-origin.html
@@ -51,7 +51,7 @@ // A sandboxed iframe should use the frame's URL as the origin to // check. var iframe = document.createElement("iframe"); - iframe.sandbox = "allow-scripts"; + iframe.sandbox = "allow-scripts allow-same-origin"; iframe.src = get_host_info().HTTP_ORIGIN + "/security/powerfulFeatureRestrictions/resources/" + "geolocation.html"; @@ -61,7 +61,7 @@ // Insecure origin frames sandboxed secure origin frames secure // origin. var iframe = document.createElement("iframe"); - iframe.sandbox = "allow-scripts"; + iframe.sandbox = "allow-scripts allow-same-origin"; iframe.src = get_host_info().HTTP_ORIGIN + "/security/powerfulFeatureRestrictions/resources/" + "geolocation-in-iframe.html";
diff --git a/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/geolocation-on-secure-origin-in-secure-origin.html b/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/geolocation-on-secure-origin-in-secure-origin.html index 4d0363b..1494f05 100644 --- a/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/geolocation-on-secure-origin-in-secure-origin.html +++ b/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/geolocation-on-secure-origin-in-secure-origin.html
@@ -41,7 +41,7 @@ // A sandboxed iframe should use the frame's URL as the origin to check. var iframe = document.createElement("iframe"); - iframe.sandbox = "allow-scripts"; + iframe.sandbox = "allow-scripts allow-same-origin"; iframe.src = "/security/powerfulFeatureRestrictions/resources/" + "geolocation.html"; iframe.allow = 'geolocation *;'; @@ -50,7 +50,7 @@ // Insecure origin frames sandboxed secure origin frames secure // origin. var iframe = document.createElement("iframe"); - iframe.sandbox = "allow-scripts"; + iframe.sandbox = "allow-scripts allow-same-origin"; iframe.src = get_host_info().HTTP_ORIGIN + "/security/powerfulFeatureRestrictions/resources/" + "geolocation-in-iframe.html"; @@ -59,15 +59,16 @@ // Regression test for crbug.com/478784 var iframe = document.createElement("iframe"); - iframe.srcdoc = "<script>" + - "window.addEventListener('message', function (evt) {" + - "window.parent.postMessage(evt.data, '*'); });" + - "</sc" + "ript>" + - "<iframe sandbox='allow-scripts' src='" + - get_host_info().HTTP_ORIGIN + - "/security/powerfulFeatureRestrictions/resources/" + - "geolocation.html' allow='geolocation *;'>" + - "</iframe>"; + iframe.srcdoc = + "<script>" + + "window.addEventListener('message', function (evt) {" + + "window.parent.postMessage(evt.data, '*'); });" + + "</sc" + "ript>" + + "<iframe sandbox='allow-scripts allow-same-origin' src='" + + get_host_info().HTTP_ORIGIN + + "/security/powerfulFeatureRestrictions/resources/" + + "geolocation.html' allow='geolocation *;'>" + + "</iframe>"; document.body.appendChild(iframe); }, 'getCurrentPosition in iframe');
diff --git a/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/resources/geolocation.html b/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/resources/geolocation.html index 52be870..3b7dc42d 100644 --- a/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/resources/geolocation.html +++ b/third_party/blink/web_tests/http/tests/security/powerfulFeatureRestrictions/resources/geolocation.html
@@ -1,20 +1,13 @@ <!DOCTYPE html> <title>Geolocation On A Secure Origin</title> +<script type="module"> +import {GeolocationMock} from '/wpt_internal/geolocation-api/resources/geolocation-mock.js'; -<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="/gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="/gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="/gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="/geolocation-api/js-test-resources/geolocation-mock.js"></script> -<script> -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100.0; +const mockLatitude = 51.478; +const mockLongitude = -0.166; +const mockAccuracy = 100.0; -if (!window.mojo) - console.error('This test can not run without mojo'); - -let mock = geolocationMock; +const mock = new GeolocationMock(); mock.setGeolocationPermission(true); mock.setGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy);
diff --git a/third_party/blink/web_tests/inspector-protocol/performance-timeline/largest-contentful-paint.js b/third_party/blink/web_tests/inspector-protocol/performance-timeline/largest-contentful-paint.js index b36c646..fd799b0 100644 --- a/third_party/blink/web_tests/inspector-protocol/performance-timeline/largest-contentful-paint.js +++ b/third_party/blink/web_tests/inspector-protocol/performance-timeline/largest-contentful-paint.js
@@ -3,12 +3,12 @@ const unstableFields = ['frameId']; const events = []; - const startTime = Date.now(); - await dp.PerformanceTimeline.enable({eventTypes: ['largest-contentful-paint']}); const TestHelper = await testRunner.loadScript('resources/performance-timeline-test.js'); const testHelper = new TestHelper(dp); + await dp.PerformanceTimeline.enable({eventTypes: ['largest-contentful-paint']}); + dp.PerformanceTimeline.onTimelineEventAdded(event => events.push(event.params.event)); session.navigate(testRunner.url('resources/lcp.html')); await dp.PerformanceTimeline.onceTimelineEventAdded(); @@ -24,8 +24,8 @@ const endTime = Date.now(); for (const event of events) { - testHelper.patchTimes(startTime, endTime, event, ['time']); - testHelper.patchTimes(startTime, endTime, event.lcpDetails, ['renderTime', 'loadTime']); + testHelper.patchTimes(event, ['time']); + testHelper.patchTimes(event.lcpDetails, ['renderTime', 'loadTime']); await patchFields(event.lcpDetails); }
diff --git a/third_party/blink/web_tests/inspector-protocol/performance-timeline/layout-shift.js b/third_party/blink/web_tests/inspector-protocol/performance-timeline/layout-shift.js index 1d6fea6a..f52eb6f8 100644 --- a/third_party/blink/web_tests/inspector-protocol/performance-timeline/layout-shift.js +++ b/third_party/blink/web_tests/inspector-protocol/performance-timeline/layout-shift.js
@@ -3,13 +3,12 @@ const unstableFields = ['frameId']; const events = []; - const startTime = Date.now(); - - await dp.PerformanceTimeline.enable({eventTypes: ['layout-shift']}); const TestHelper = await testRunner.loadScript('resources/performance-timeline-test.js'); const testHelper = new TestHelper(dp); + await dp.PerformanceTimeline.enable({eventTypes: ['layout-shift']}); + dp.PerformanceTimeline.onTimelineEventAdded(event => events.push(event.params.event)); await session.navigate(testRunner.url('resources/layout-shift.html')); await session.evaluateAsync(`new Promise(resolve => requestAnimationFrame(resolve))`); @@ -25,11 +24,9 @@ await dp.PerformanceTimeline.onceTimelineEventAdded(); - const endTime = Date.now(); - for (const event of events) { - testHelper.patchTimes(startTime, endTime, event, ['time']); - testHelper.patchTimes(startTime, endTime, event.layoutShiftDetails, ['lastInputTime']); + testHelper.patchTimes(event, ['time']); + testHelper.patchTimes(event.layoutShiftDetails, ['lastInputTime']); await patchFields(event.layoutShiftDetails); }
diff --git a/third_party/blink/web_tests/inspector-protocol/performance-timeline/resources/performance-timeline-test.js b/third_party/blink/web_tests/inspector-protocol/performance-timeline/resources/performance-timeline-test.js index 0d915659..3e71d1d 100644 --- a/third_party/blink/web_tests/inspector-protocol/performance-timeline/resources/performance-timeline-test.js +++ b/third_party/blink/web_tests/inspector-protocol/performance-timeline/resources/performance-timeline-test.js
@@ -7,6 +7,7 @@ class TestHelper { constructor(dp) { this._dp = dp; + this._startTicks = performance.now(); } async describeNode(nodeId) { @@ -15,16 +16,19 @@ `<${response.result.object.description}>` : '<invalid id>'; } - patchTimes(start, end, obj, fields) { - // Add some slack to defeat time clamping. - start -= 1; - end += 1; + async patchTimes(obj, fields) { + const startTime = (await this._dp.Runtime.evaluate({ + expression: 'window.performance.timeOrigin', + returnByValue: true})).result.result.value; + const endTicks = performance.now(); + // Ensure we're using monotonic time within the test duration. + const endTime = startTime + (endTicks - this._startTicks); for (const field of fields) { const time = obj[field] * 1000; - if (time && (start <= time && time <= end)) { + if (time && (startTime <= time && time <= endTime)) { obj[field] = `<${typeof time}>`; } else if (time) { - obj[field] = `FAIL: actual: ${time}, expected: ${start} <= time <= ${end}` + obj[field] = `FAIL: actual: ${time}, expected: ${startTime} <= time <= ${endTime}`; } } }
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 7e49a267..e1886c1 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
@@ -1771,6 +1771,7 @@ [Worker] getter planes [Worker] getter timestamp [Worker] method clone +[Worker] method close [Worker] method constructor [Worker] method createImageBitmap [Worker] method destroy
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 2c8e5b6..478a514 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
@@ -8830,6 +8830,7 @@ getter planes getter timestamp method clone + method close method constructor method createImageBitmap method destroy @@ -10501,13 +10502,26 @@ getter trackedAnchors method constructor method createAnchor + method fillJointRadii + method fillPoses method getDepthInformation method getHitTestResults method getHitTestResultsForTransientInput method getImageTrackingResults + method getJointPose method getLightEstimate method getPose method getViewerPose +interface XRHand + attribute @@toStringTag + getter size + method @@iterator + method constructor + method entries + method forEach + method get + method keys + method values interface XRHitTestResult attribute @@toStringTag method constructor @@ -10528,6 +10542,7 @@ attribute @@toStringTag getter gamepad getter gripSpace + getter hand getter handedness getter profiles getter targetRayMode @@ -10553,6 +10568,14 @@ getter removed getter session method constructor +interface XRJointPose : XRPose + attribute @@toStringTag + getter radius + method constructor +interface XRJointSpace : XRSpace + attribute @@toStringTag + getter jointName + method constructor interface XRLayer : EventTarget attribute @@toStringTag method constructor
diff --git a/third_party/blink/web_tests/geolocation-api/DIR_METADATA b/third_party/blink/web_tests/wpt_internal/geolocation-api/DIR_METADATA similarity index 100% rename from third_party/blink/web_tests/geolocation-api/DIR_METADATA rename to third_party/blink/web_tests/wpt_internal/geolocation-api/DIR_METADATA
diff --git a/third_party/blink/web_tests/geolocation-api/argument-types.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/argument-types.https.html similarity index 98% rename from third_party/blink/web_tests/geolocation-api/argument-types.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/argument-types.https.html index 57b0109..aabd714 100644 --- a/third_party/blink/web_tests/geolocation-api/argument-types.html +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/argument-types.https.html
@@ -1,8 +1,8 @@ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> <script src="resources/testharness-adapter.js"></script> </head> <body>
diff --git a/third_party/blink/web_tests/geolocation-api/cached-position-called-once.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/cached-position-called-once.https.html similarity index 62% rename from third_party/blink/web_tests/geolocation-api/cached-position-called-once.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/cached-position-called-once.https.html index f85da80..66df1ec 100644 --- a/third_party/blink/web_tests/geolocation-api/cached-position-called-once.html +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/cached-position-called-once.https.html
@@ -1,36 +1,30 @@ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> <script src="resources/testharness-adapter.js"></script> </head> <body> -<script> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + description('Tests that when a cached position is available the callback for getCurrentPosition is called only once. This is a regression test for http://crbug.com/311876 .'); // Only one success callback should be reported per call to getCurrentPosition. -var reportCount = 0; -var isSuccess; +let reportCount = 0; function reportCallback(success, id) { - isSuccess = success; - shouldBeTrue('isSuccess'); - getCurrentPositionCallId = id; - shouldBe('getCurrentPositionCallId', 'reportCount'); + assert_true(success); + assert_equals(id, reportCount); if (++reportCount >= 3) finishJSTest(); } -var getCurrentPositionCall = 0; +let getCurrentPositionCall = 0; function getPosition(milliseconds) { - var id = getCurrentPositionCall++; - var fn = function() { + const id = getCurrentPositionCall++; + const fn = function() { navigator.geolocation.getCurrentPosition( function(position) { reportCallback(true, id); @@ -43,7 +37,7 @@ setTimeout(fn, milliseconds); } -let mock = geolocationMock; +const mock = new GeolocationMock(); mock.setGeolocationPosition(31.478, -0.166, 100); mock.setGeolocationPermission(true);
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/callback-exception.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/callback-exception.https.html new file mode 100644 index 0000000..dbaa45d --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/callback-exception.https.html
@@ -0,0 +1,53 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +setup({allow_uncaught_exception: true}); + +description("Tests that when an exception is thrown in the success callback, the error callback is not invoked. Note that this test throws an exception which is not caught."); + +const mockLatitude = 51.478; +const mockLongitude = -0.166; +const mockAccuracy = 100; + +let position; + +let gotError = false; +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPosition(mockLatitude, + mockLongitude, + mockAccuracy); +navigator.geolocation.getCurrentPosition(function(p) { + position = p; + assert_equals(position.coords.latitude, mockLatitude); + assert_equals(position.coords.longitude, mockLongitude); + assert_equals(position.coords.accuracy, mockAccuracy); + + // Yield to allow for the error callback to be invoked. The timer + // must be started before the exception is thrown. + window.setTimeout(assertWeGotException, 0); + window.onerror = () => { gotError = true; }; + expectError(); + + throw new Error('Exception in success callback'); +}, function(e) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); + +function assertWeGotException() +{ + assert_true(gotError); + finishJSTest(); +} +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/geolocation-api/callback-to-remote-context.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/callback-to-remote-context.https.html similarity index 86% rename from third_party/blink/web_tests/geolocation-api/callback-to-remote-context.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/callback-to-remote-context.https.html index bc8d66488..996f1c19 100644 --- a/third_party/blink/web_tests/geolocation-api/callback-to-remote-context.html +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/callback-to-remote-context.https.html
@@ -1,8 +1,8 @@ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> <script src="resources/testharness-adapter.js"></script> </head> <body>
diff --git a/third_party/blink/web_tests/geolocation-api/callback-to-remote-context2.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/callback-to-remote-context2.https.html similarity index 88% rename from third_party/blink/web_tests/geolocation-api/callback-to-remote-context2.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/callback-to-remote-context2.https.html index 36325158..4161a34 100644 --- a/third_party/blink/web_tests/geolocation-api/callback-to-remote-context2.html +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/callback-to-remote-context2.https.html
@@ -1,8 +1,8 @@ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> <script src="resources/testharness-adapter.js"></script> </head> <body>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/clear-watch-invalid-id-crash.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/clear-watch-invalid-id-crash.https.html new file mode 100644 index 0000000..541f700 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/clear-watch-invalid-id-crash.https.html
@@ -0,0 +1,27 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +document.body.onload = function() { + const mock = new GeolocationMock(); + mock.setGeolocationPermission(true); + mock.setGeolocationPosition(51.478, -0.166, 100); + + navigator.geolocation.watchPosition(() => {}); + navigator.geolocation.clearWatch(0); + + // This triggers unload, exercising the regression path which could crash + // the renderer due to the invalid clearWatch invocation above. The test + // passes if it doesn't crash. + location = "resources/pass-test.html#no crash on unload after clearing invalid watch id"; +} +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/coordinates-interface-attributes.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/coordinates-interface-attributes.https.html new file mode 100644 index 0000000..b96a57f --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/coordinates-interface-attributes.https.html
@@ -0,0 +1,66 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Test the attribute handling of the Coordinates interface"); + +// Format: [Input], [Expected] +// Input: latitude, longitude, accuracy, altitude, altitudeAccuracy, heading, speed. +// Expected: latitude, longitude, accuracy, altitude, altitudeAccuracy, heading, speed. +const testSet = [ + [[1, 2, 3], [1, 2, 3, null, null, null, null]], + [[2, 3, 4, undefined, undefined, undefined, 5], [2, 3, 4, null, null, null, 5]], + [[3, 4, 5, undefined, 6, undefined, 7], [3, 4, 5, null, 6, null, 7]], + [[4, 5, 6, undefined, 7, 8, 9], [4, 5, 6, null, 7, 8, 9]], + [[5, 6, 7, 8, 9, 10, 11], [5, 6, 7, 8, 9, 10, 11]], +]; + +let currentTestIndex = -1; +let globalCoordinates = null; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); + +function runNextTest() +{ + ++currentTestIndex; + mock.setGeolocationPosition(...testSet[currentTestIndex][0]); +} + +function verifyResults() +{ + assert_equals(globalCoordinates.latitude, testSet[currentTestIndex][1][0]); + assert_equals(globalCoordinates.longitude, testSet[currentTestIndex][1][1]); + assert_equals(globalCoordinates.accuracy, testSet[currentTestIndex][1][2]); + assert_equals(globalCoordinates.altitude, testSet[currentTestIndex][1][3]); + assert_equals(globalCoordinates.altitudeAccuracy, testSet[currentTestIndex][1][4]); + assert_equals(globalCoordinates.heading, testSet[currentTestIndex][1][5]); + assert_equals(globalCoordinates.speed, testSet[currentTestIndex][1][6]); +} + +var watchId = navigator.geolocation.watchPosition(function(position) { + globalCoordinates = position.coords; + verifyResults(); + + if (currentTestIndex + 1 === testSet.length) { + finishJSTest(); + return; + } + runNextTest(); +}, function(e) { + testFailed('the error callback was called unexpectedly'); + finishJSTest(); +}); + +runNextTest(); + +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/geolocation-api/delayed-permission-allowed-for-multiple-requests.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/delayed-permission-allowed-for-multiple-requests.https.html similarity index 66% rename from third_party/blink/web_tests/geolocation-api/delayed-permission-allowed-for-multiple-requests.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/delayed-permission-allowed-for-multiple-requests.https.html index 627eda52..a2fe6bd 100644 --- a/third_party/blink/web_tests/geolocation-api/delayed-permission-allowed-for-multiple-requests.html +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/delayed-permission-allowed-for-multiple-requests.https.html
@@ -1,31 +1,28 @@ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> <script src="resources/testharness-adapter.js"></script> </head> <body> -<script> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + description("Tests that when multiple requests are waiting for permission, no callbacks are invoked until permission is allowed."); -let mock = geolocationMock; +const mock = new GeolocationMock(); mock.setGeolocationPosition(51.478, -0.166, 100); -var permissionSet = false; +let permissionSet = false; function allowPermission() { permissionSet = true; mock.setGeolocationPermission(true); } -var watchCallbackInvoked = false; -var oneShotCallbackInvoked = false; +let watchCallbackInvoked = false; +let oneShotCallbackInvoked = false; navigator.geolocation.watchPosition(function() { if (permissionSet) {
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/delayed-permission-allowed.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/delayed-permission-allowed.https.html new file mode 100644 index 0000000..36612b2 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/delayed-permission-allowed.https.html
@@ -0,0 +1,39 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when a position is available, no callbacks are invoked until permission is allowed."); + +const mock = new GeolocationMock(); +mock.setGeolocationPosition(51.478, -0.166, 100); + +let permissionSet = false; + +function allowPermission() { + permissionSet = true; + mock.setGeolocationPermission(true); +} + +navigator.geolocation.getCurrentPosition(function() { + if (permissionSet) { + testPassed('Success callback invoked'); + finishJSTest(); + return; + } + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function() { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); +window.setTimeout(allowPermission, 100); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/delayed-permission-denied-for-multiple-requests.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/delayed-permission-denied-for-multiple-requests.https.html new file mode 100644 index 0000000..77d80f02d --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/delayed-permission-denied-for-multiple-requests.https.html
@@ -0,0 +1,68 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when multiple requests are waiting for permission, no callbacks are invoked until permission is denied."); + +let error; + +const mock = new GeolocationMock(); +mock.setGeolocationPosition(51.478, -0.166, 100); + +let permissionSet = false; + +function denyPermission() { + permissionSet = true; + mock.setGeolocationPermission(false); +} + +let watchCallbackInvoked = false; +let oneShotCallbackInvoked = false; + +navigator.geolocation.watchPosition(function() { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + if (permissionSet) { + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); + watchCallbackInvoked = true; + maybeFinishTest(); + return; + } + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); + +navigator.geolocation.getCurrentPosition(function() { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + if (permissionSet) { + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); + oneShotCallbackInvoked = true; + maybeFinishTest(); + return; + } + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); +window.setTimeout(denyPermission, 100); + +function maybeFinishTest() { + if (watchCallbackInvoked && oneShotCallbackInvoked) + finishJSTest(); +} +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/delayed-permission-denied.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/delayed-permission-denied.https.html new file mode 100644 index 0000000..14f21fdd --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/delayed-permission-denied.https.html
@@ -0,0 +1,43 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when a position is available, no callbacks are invoked until permission is denied."); + +let error; + +const mock = new GeolocationMock(); +mock.setGeolocationPosition(51.478, -0.166, 100); + +let permissionSet = false; + +function denyPermission() { + permissionSet = true; + mock.setGeolocationPermission(false); +} + +navigator.geolocation.getCurrentPosition(function() { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + if (permissionSet) { + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); + finishJSTest(); + return; + } + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); +window.setTimeout(denyPermission, 100); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/disconnected-frame-already.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/disconnected-frame-already.https.html new file mode 100644 index 0000000..6463050 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/disconnected-frame-already.https.html
@@ -0,0 +1,45 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when a request is made on a Geolocation object after its frame has been disconnected, no callbacks are made and no crash occurs."); + +const iframe = document.createElement('iframe'); +let iframeGeolocation; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPosition(51.478, -0.166, 100); + +iframe.src = 'resources/disconnected-frame-already-inner1.html'; +document.body.appendChild(iframe); + +window.onFirstIframeLoaded = function() { + iframeGeolocation = iframe.contentWindow.navigator.geolocation; + iframe.src = 'resources/disconnected-frame-already-inner2.html'; +} + +window.onSecondIframeLoaded = function() { + iframeGeolocation.getCurrentPosition(function () { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); + }, function(e) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); + }); + setTimeout(finishTest, 1000); +} + +function finishTest() { + finishJSTest(); +} +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/geolocation-api/disconnected-frame-permission-denied.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/disconnected-frame-permission-denied.https.html similarity index 63% rename from third_party/blink/web_tests/geolocation-api/disconnected-frame-permission-denied.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/disconnected-frame-permission-denied.https.html index 7862931..97693a8b 100644 --- a/third_party/blink/web_tests/geolocation-api/disconnected-frame-permission-denied.html +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/disconnected-frame-permission-denied.https.html
@@ -1,36 +1,34 @@ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> <script src="resources/testharness-adapter.js"></script> </head> <body> -<script> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + description("Tests that when a request is made on a Geolocation object, permission is denied and its Frame is disconnected before a callback is made, no callbacks are made."); -var error; -var iframe = document.createElement('iframe'); +let error; +const iframe = document.createElement('iframe'); +let iframeGeolocation; -function onIframeLoaded() { +window.onIframeLoaded = function() { iframeGeolocation = iframe.contentWindow.navigator.geolocation; iframeGeolocation.getCurrentPosition(function() { testFailed('Success callback invoked unexpectedly'); finishJSTest(); }, function(e) { error = e; - shouldBe('error.code', 'error.PERMISSION_DENIED'); - shouldBe('error.message', '"User denied Geolocation"'); + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); iframe.src = 'data:text/html,This frame should be visible when the test completes'; }); } -function onIframeUnloaded() { +window.onIframeUnloaded = function() { // Make another request, with permission already denied. iframeGeolocation.getCurrentPosition(function () { testFailed('Success callback invoked unexpectedly'); @@ -48,7 +46,7 @@ // Prime the Geolocation instance by denying permission. This makes sure that we execute the // same code path for both preemptive and non-preemptive permissions policies. -let mock = geolocationMock; +const mock = new GeolocationMock(); mock.setGeolocationPermission(false); mock.setGeolocationPosition(51.478, -0.166, 100);
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/disconnected-frame.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/disconnected-frame.https.html new file mode 100644 index 0000000..df50cada --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/disconnected-frame.https.html
@@ -0,0 +1,46 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when a request is made on a Geolocation object and its Frame is disconnected before a callback is made, no callbacks are made."); + +let error; +const iframe = document.createElement('iframe'); +let iframeGeolocation; + +window.onIframeLoaded = function() { + iframeGeolocation = iframe.contentWindow.navigator.geolocation; + iframe.src = 'data:text/html,This frame should be visible when the test completes'; +} + +window.onIframeUnloaded = function() { + iframeGeolocation.getCurrentPosition(function () { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); + }, function(e) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); + }); + setTimeout(function() { + testPassed('No callbacks invoked'); + finishJSTest(); + }, 100); +} + + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPosition(51.478, -0.166, 100); + +iframe.src = 'resources/disconnected-frame-inner.html'; +document.body.appendChild(iframe); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/geolocation-api/enabled.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/enabled.https.html similarity index 83% rename from third_party/blink/web_tests/geolocation-api/enabled.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/enabled.https.html index 605fd66..ecd9824 100644 --- a/third_party/blink/web_tests/geolocation-api/enabled.html +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/enabled.https.html
@@ -1,8 +1,8 @@ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> <script src="resources/testharness-adapter.js"></script> </head> <body>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/error-clear-watch.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/error-clear-watch.https.html new file mode 100644 index 0000000..e3294ced --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/error-clear-watch.https.html
@@ -0,0 +1,27 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("This tests removing the watcher from an error callback does not causes assertions."); + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPositionUnavailableError("debug"); + +const watchId = navigator.geolocation.watchPosition(function() { + navigator.geolocation.clearWatch(watchId); + finishJSTest(); +}, function(e) { + navigator.geolocation.clearWatch(watchId); + finishJSTest(); +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/error-service-connection-error.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/error-service-connection-error.https.html new file mode 100644 index 0000000..a2e3983 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/error-service-connection-error.https.html
@@ -0,0 +1,31 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests Geolocation when the geolocation service connection fails."); + +let error; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.rejectGeolocationServiceConnections(); + +navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, 'User denied Geolocation'); + finishJSTest(); +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/error.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/error.https.html new file mode 100644 index 0000000..f355297a --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/error.https.html
@@ -0,0 +1,37 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests Geolocation error callback using the mock service."); + +const mockMessage = "debug"; + +let error; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPositionUnavailableError(mockMessage); + +navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + error = e; + assert_equals(error.code, error.POSITION_UNAVAILABLE); + assert_equals(error.message, mockMessage); + assert_equals(error.UNKNOWN_ERROR, undefined); + assert_equals(error.PERMISSION_DENIED, 1); + assert_equals(error.POSITION_UNAVAILABLE, 2); + assert_equals(error.TIMEOUT, 3); + finishJSTest(); +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/geolocation-api/maximum-age.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/maximum-age.https.html similarity index 77% rename from third_party/blink/web_tests/geolocation-api/maximum-age.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/maximum-age.https.html index e01058e..d13baedeb 100644 --- a/third_party/blink/web_tests/geolocation-api/maximum-age.html +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/maximum-age.https.html
@@ -1,42 +1,39 @@ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> -<script src="file:///gen/device/geolocation/public/interfaces/geolocation.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.js"></script> -<script src="file:///gen/third_party/blink/public/mojom/permissions/permission.mojom.js"></script> -<script src="resources/geolocation-mock.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> <script src="resources/testharness-adapter.js"></script> </head> <body> -<script> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + description("Tests that the PositionOptions.maximumAge parameter is correctly applied."); -var mockLatitude = 51.478; -var mockLongitude = -0.166; -var mockAccuracy = 100.0; +let mockLatitude = 51.478; +let mockLongitude = -0.166; +let mockAccuracy = 100.0; -var mockMessage = 'test'; +const mockMessage = 'test'; -var position; -var error; +let position; +let error; function checkPosition(p) { position = p; - shouldBe('position.coords.latitude', 'mockLatitude'); - shouldBe('position.coords.longitude', 'mockLongitude'); - shouldBe('position.coords.accuracy', 'mockAccuracy'); + assert_equals(position.coords.latitude, mockLatitude); + assert_equals(position.coords.longitude, mockLongitude); + assert_equals(position.coords.accuracy, mockAccuracy); } function checkError(e) { error = e; - shouldBe('error.code', 'error.POSITION_UNAVAILABLE'); - shouldBe('error.message', 'mockMessage'); + assert_equals(error.code, error.POSITION_UNAVAILABLE); + assert_equals(error.message, mockMessage); } -let mock = geolocationMock; +const mock = new GeolocationMock(); mock.setGeolocationPermission(true); mock.setGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy);
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/multiple-requests.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/multiple-requests.https.html new file mode 100644 index 0000000..d6bb9e07 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/multiple-requests.https.html
@@ -0,0 +1,54 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that Geolocation correctly handles multiple concurrent requests."); + +const mockLatitude = 51.478; +const mockLongitude = -0.166; +const mockAccuracy = 100; + +let position; +let watchCallbackInvoked = false; +let oneShotCallbackInvoked = false; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy); + +navigator.geolocation.watchPosition(function(p) { + assert_false(watchCallbackInvoked); + watchCallbackInvoked = true; + maybeFinishTest(p); +}, function() { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); + +navigator.geolocation.getCurrentPosition(function(p) { + assert_false(oneShotCallbackInvoked); + oneShotCallbackInvoked = true; + maybeFinishTest(p); +}, function() { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); + +function maybeFinishTest(p) { + position = p; + assert_equals(position.coords.latitude, mockLatitude); + assert_equals(position.coords.longitude, mockLongitude); + assert_equals(position.coords.accuracy, mockAccuracy); + if (watchCallbackInvoked && oneShotCallbackInvoked) + finishJSTest(); +} +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/geolocation-api/not-enough-arguments.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/not-enough-arguments.https.html similarity index 74% rename from third_party/blink/web_tests/geolocation-api/not-enough-arguments.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/not-enough-arguments.https.html index a441d70..0f1e6a43 100644 --- a/third_party/blink/web_tests/geolocation-api/not-enough-arguments.html +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/not-enough-arguments.https.html
@@ -1,11 +1,11 @@ <!DOCTYPE html> <html> <head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> </head> <body> -<script> +<script type="module"> test(() => { const geolocation = window.navigator.geolocation; assert_throws_js(TypeError, () => geolocation.getCurrentPosition());
diff --git a/third_party/blink/web_tests/geolocation-api/notimer-after-unload.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/notimer-after-unload.https.html similarity index 88% rename from third_party/blink/web_tests/geolocation-api/notimer-after-unload.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/notimer-after-unload.https.html index a7be391..1a98b59 100644 --- a/third_party/blink/web_tests/geolocation-api/notimer-after-unload.html +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/notimer-after-unload.https.html
@@ -1,8 +1,8 @@ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> </head> <body> <script type="module">
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied-already-clear-watch.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied-already-clear-watch.https.html new file mode 100644 index 0000000..9ee94bf0 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied-already-clear-watch.https.html
@@ -0,0 +1,47 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when Geolocation permission has been denied prior to a call to watchPosition, and the watch is cleared in the error callback, there is no crash. This a regression test for https://bugs.webkit.org/show_bug.cgi?id=32111."); + +let error; + +// Prime the Geolocation instance by denying permission. +const mock = new GeolocationMock(); +mock.setGeolocationPermission(false); +mock.setGeolocationPosition(51.478, -0.166, 100); + +navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); + continueTest(); +}); + +function continueTest() +{ + // Make another request, with permission already denied. + const watchId = navigator.geolocation.watchPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); + }, function(e) { + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); + navigator.geolocation.clearWatch(watchId); + window.setTimeout(finishJSTest, 0); + }); +} +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied-already-error.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied-already-error.https.html new file mode 100644 index 0000000..84840a32 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied-already-error.https.html
@@ -0,0 +1,47 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when Geolocation permission has been denied prior to a call to a Geolocation method, the error callback is invoked with code PERMISSION_DENIED, when the Geolocation service encounters an error."); + +let error; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(false); +mock.setGeolocationPosition(51.478, -0.166, 100); + +navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); + continueTest(); +}); + +function continueTest() +{ + // Make another request, with permission already denied. + mock.setGeolocationPositionUnavailableError('test'); + + navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); + }, function(e) { + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); + finishJSTest(); + }); +} +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied-already-success.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied-already-success.https.html new file mode 100644 index 0000000..96d4c43 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied-already-success.https.html
@@ -0,0 +1,46 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when Geolocation permission has been denied prior to a call to a Geolocation method, the error callback is invoked with code PERMISSION_DENIED, when the Geolocation service has a good position."); + +let error; + +// Prime the Geolocation instance by denying permission. +const mock = new GeolocationMock(); +mock.setGeolocationPermission(false); +mock.setGeolocationPosition(51.478, -0.166, 100); + +navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); + continueTest(); +}); + +function continueTest() +{ + // Make another request, with permission already denied. + navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); + }, function(e) { + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); + finishJSTest(); + }); +} +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied-stops-watches.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied-stops-watches.https.html new file mode 100644 index 0000000..dc02a97 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied-stops-watches.https.html
@@ -0,0 +1,44 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when Geolocation permission is denied, watches are stopped, as well as one-shots."); + +let error; + +// Configure the mock Geolocation service to report a position to cause permission +// to be requested, then deny it. +const mock = new GeolocationMock(); +mock.setGeolocationPermission(false); +mock.setGeolocationPosition(51.478, -0.166, 100.0); + +let errorCallbackInvoked = false; +navigator.geolocation.watchPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + if (errorCallbackInvoked) { + testFailed('Error callback invoked unexpectedly : ' + error.message); + finishJSTest(); + } + errorCallbackInvoked = true; + + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); + + // Update the mock Geolocation service to report a new position, then + // yield to allow a chance for the success callback to be invoked. + mock.setGeolocationPosition(55.478, -0.166, 100); + window.setTimeout(finishJSTest, 0); +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied.https.html new file mode 100644 index 0000000..a2dbcd38 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/permission-denied.https.html
@@ -0,0 +1,31 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests Geolocation when permission is denied, using the mock service."); + +let error; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(false); +mock.setGeolocationPosition(51.478, -0.166, 100.0); + +navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); + finishJSTest(); +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/position-string.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/position-string.https.html new file mode 100644 index 0000000..e19f9bc --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/position-string.https.html
@@ -0,0 +1,41 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests formatting of position.toString()."); + +const mockLatitude = 51.478; +const mockLongitude = -0.166; +const mockAccuracy = 100.0; + +let position; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPosition(mockLatitude, + mockLongitude, + mockAccuracy); + +navigator.geolocation.getCurrentPosition(function(p) { + // shouldBe can't use local variables yet. + position = p; + assert_equals(position.coords.latitude, mockLatitude); + assert_equals(position.coords.longitude, mockLongitude); + assert_equals(position.coords.accuracy, mockAccuracy); + assert_equals(position.toString(), "[object GeolocationPosition]"); + assert_equals(position.coords.toString(), "[object GeolocationCoordinates]"); + finishJSTest(); +}, function(e) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/reentrant-error.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/reentrant-error.https.html new file mode 100644 index 0000000..89bff20 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/reentrant-error.https.html
@@ -0,0 +1,56 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that reentrant calls to Geolocation methods from the error callback are OK."); + +let mockMessage = 'test'; + +let error; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPositionUnavailableError(mockMessage); + +let errorCallbackInvoked = false; +navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + if (errorCallbackInvoked) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); + } + errorCallbackInvoked = true; + + error = e; + assert_equals(error.code, error.POSITION_UNAVAILABLE); + assert_equals(error.message, mockMessage); + continueTest(); +}); + +function continueTest() { + mockMessage += ' repeat'; + + mock.setGeolocationPositionUnavailableError(mockMessage); + + navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); + }, function(e) { + error = e; + assert_equals(error.code, error.POSITION_UNAVAILABLE); + assert_equals(error.message, mockMessage); + finishJSTest(); + }); +} +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/reentrant-permission-denied.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/reentrant-permission-denied.https.html new file mode 100644 index 0000000..9dfdeb4 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/reentrant-permission-denied.https.html
@@ -0,0 +1,51 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that reentrant calls to Geolocation methods from the error callback due to a PERMISSION_DENIED error are OK."); + +let error; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(false); +mock.setGeolocationPosition(51.478, -0.166, 100.0); + +function checkPermissionError(e) { + error = e; + assert_equals(error.code, error.PERMISSION_DENIED); + assert_equals(error.message, "User denied Geolocation"); +} + +let errorCallbackInvoked = false; +navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + if (errorCallbackInvoked) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); + } + errorCallbackInvoked = true; + checkPermissionError(e); + continueTest(); +}); + +function continueTest() { + navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); + }, function(e) { + checkPermissionError(e); + finishJSTest(); + }); +} +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/reentrant-success.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/reentrant-success.https.html new file mode 100644 index 0000000..42c8a737 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/reentrant-success.https.html
@@ -0,0 +1,62 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that reentrant calls to Geolocation methods from the success callback are OK."); + +let mockLatitude = 51.478; +let mockLongitude = -0.166; +let mockAccuracy = 100.0; + +let position; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPosition(mockLatitude, + mockLongitude, + mockAccuracy); + +let successCallbackInvoked = false; +navigator.geolocation.getCurrentPosition(function(p) { + if (successCallbackInvoked) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); + } + successCallbackInvoked = true; + + position = p; + assert_equals(position.coords.latitude, mockLatitude); + assert_equals(position.coords.longitude, mockLongitude); + assert_equals(position.coords.accuracy, mockAccuracy); + continueTest(); +}, function(e) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); + +function continueTest() { + mock.setGeolocationPosition(++mockLatitude, + ++mockLongitude, + ++mockAccuracy); + + navigator.geolocation.getCurrentPosition(function(p) { + position = p; + assert_equals(position.coords.latitude, mockLatitude); + assert_equals(position.coords.longitude, mockLongitude); + assert_equals(position.coords.accuracy, mockAccuracy); + finishJSTest(); + }, function(e) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); + }); +} +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/geolocation-api/remove-remote-context-in-error-callback-crash.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/remove-remote-context-in-error-callback-crash.https.html similarity index 88% rename from third_party/blink/web_tests/geolocation-api/remove-remote-context-in-error-callback-crash.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/remove-remote-context-in-error-callback-crash.https.html index 56c2e33..e3a951f 100644 --- a/third_party/blink/web_tests/geolocation-api/remove-remote-context-in-error-callback-crash.html +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/remove-remote-context-in-error-callback-crash.https.html
@@ -2,8 +2,8 @@ <html> <head> <script src="../resources/gc.js"></script> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> <script src="resources/testharness-adapter.js"></script> </head> <body>
diff --git a/third_party/blink/web_tests/geolocation-api/resources/cached-position-iframe-inner.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/cached-position-iframe-inner.html similarity index 100% rename from third_party/blink/web_tests/geolocation-api/resources/cached-position-iframe-inner.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/resources/cached-position-iframe-inner.html
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/callback-to-remote-context-inner.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/callback-to-remote-context-inner.html new file mode 100644 index 0000000..70e7de7 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/callback-to-remote-context-inner.html
@@ -0,0 +1,17 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> + <head> + <script type="module"> + import {GeolocationMock} from './geolocation-mock.js'; + + window.init = function() { + const mock = new GeolocationMock(); + mock.setGeolocationPermission(true); + mock.setGeolocationPosition(51.478, -0.166, 100); + window.parent.onIframeReady() + } + </script> + </head> + <body onload="init()"> + </body> +</html>
diff --git a/third_party/blink/web_tests/geolocation-api/resources/disconnected-frame-already-inner1.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/disconnected-frame-already-inner1.html similarity index 100% rename from third_party/blink/web_tests/geolocation-api/resources/disconnected-frame-already-inner1.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/resources/disconnected-frame-already-inner1.html
diff --git a/third_party/blink/web_tests/geolocation-api/resources/disconnected-frame-already-inner2.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/disconnected-frame-already-inner2.html similarity index 100% rename from third_party/blink/web_tests/geolocation-api/resources/disconnected-frame-already-inner2.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/resources/disconnected-frame-already-inner2.html
diff --git a/third_party/blink/web_tests/geolocation-api/resources/disconnected-frame-inner.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/disconnected-frame-inner.html similarity index 100% rename from third_party/blink/web_tests/geolocation-api/resources/disconnected-frame-inner.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/resources/disconnected-frame-inner.html
diff --git a/third_party/blink/web_tests/geolocation-api/resources/geolocation-mock.js b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/geolocation-mock.js similarity index 73% rename from third_party/blink/web_tests/geolocation-api/resources/geolocation-mock.js rename to third_party/blink/web_tests/wpt_internal/geolocation-api/resources/geolocation-mock.js index b8c847c..7eb59f45 100644 --- a/third_party/blink/web_tests/geolocation-api/resources/geolocation-mock.js +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/geolocation-mock.js
@@ -3,12 +3,15 @@ * PermissionService. */ -"use strict"; +import {GeolocationReceiver} from '/gen/services/device/public/mojom/geolocation.mojom.m.js'; +import {Geoposition_ErrorCode} from '/gen/services/device/public/mojom/geoposition.mojom.m.js'; +import {GeolocationService, GeolocationServiceReceiver} from '/gen/third_party/blink/public/mojom/geolocation/geolocation_service.mojom.m.js'; +import {PermissionStatus} from '/gen/third_party/blink/public/mojom/permissions/permission_status.mojom.m.js'; -class GeolocationMock { +export class GeolocationMock { constructor() { this.geolocationServiceInterceptor_ = - new MojoInterfaceInterceptor(blink.mojom.GeolocationService.name); + new MojoInterfaceInterceptor(GeolocationService.$interfaceName); this.geolocationServiceInterceptor_.oninterfacerequest = e => this.connectGeolocationService_(e.handle); this.geolocationServiceInterceptor_.start(); @@ -37,9 +40,9 @@ * permission requests will block until setGeolocationPermission is called * to allow or deny permission requests. * - * @type {!blink.mojom.PermissionStatus} + * @type {!PermissionStatus} */ - this.permissionStatus_ = blink.mojom.PermissionStatus.ASK; + this.permissionStatus_ = PermissionStatus.ASK; this.rejectGeolocationServiceConnections_ = false; /** @@ -48,10 +51,8 @@ */ this.queryNextPositionIntercept_ = null; - this.geolocationBindingSet_ = new mojo.BindingSet( - device.mojom.Geolocation); - this.geolocationServiceBindingSet_ = new mojo.BindingSet( - blink.mojom.GeolocationService); + this.geolocationReceiver_ = new GeolocationReceiver(this); + this.geolocationServiceReceiver_ = new GeolocationServiceReceiver(this); } connectGeolocationService_(handle) { @@ -59,7 +60,7 @@ handle.close(); return; } - this.geolocationServiceBindingSet_.addBinding(this, handle); + this.geolocationServiceReceiver_.$.bindHandle(handle); } setHighAccuracy(highAccuracy) { @@ -80,9 +81,8 @@ } return new Promise(resolve => { this.queryNextPositionIntercept_ = resolver => { - resolve(geoposition => { - resolver({geoposition}); - }); + this.queryNextPositionIntercept_ = null; + resolve(geoposition => { resolver({geoposition}); }); }; }); } @@ -116,16 +116,6 @@ makeGeoposition(latitude, longitude, accuracy, altitude = undefined, altitudeAccuracy = undefined, heading = undefined, speed = undefined) { - const position = new device.mojom.Geoposition(); - position.latitude = latitude; - position.longitude = longitude; - position.accuracy = accuracy; - position.altitude = altitude; - position.altitudeAccuracy = altitudeAccuracy; - position.heading = heading; - position.speed = speed; - position.timestamp = new mojoBase.mojom.Time(); - // The new Date().getTime() returns the number of milliseconds since the // UNIX epoch (1970-01-01 00::00:00 UTC), while |internalValue| of the // device.mojom.Geoposition represents the value of microseconds since the @@ -135,12 +125,12 @@ const unixEpoch = Date.UTC(1970,0,1,0,0,0,0); // |epochDeltaInMs| equals to base::Time::kTimeTToMicrosecondsOffset. const epochDeltaInMs = unixEpoch - windowsEpoch; - - position.timestamp.internalValue = - (new Date().getTime() + epochDeltaInMs) * 1000; - position.errorMessage = ''; - position.valid = true; - return position; + const timestamp = + {internalValue: BigInt((new Date().getTime() + epochDeltaInMs) * 1000)}; + const errorMessage = ''; + const valid = true; + return {latitude, longitude, accuracy, altitude, altitudeAccuracy, heading, + speed, timestamp, errorMessage, valid}; } /** @@ -160,12 +150,12 @@ * the error set by this call. */ setGeolocationPositionUnavailableError(message) { - this.geoposition_ = new device.mojom.Geoposition(); - this.geoposition_.valid = false; - this.geoposition_.timestamp = new mojoBase.mojom.Time(); - this.geoposition_.errorMessage = message; - this.geoposition_.errorCode = - device.mojom.Geoposition.ErrorCode.POSITION_UNAVAILABLE; + this.geoposition_ = { + valid: false, + timestamp: {internalValue: 0n}, + errorMessage: message, + errorCode: Geoposition_ErrorCode.POSITION_UNAVAILABLE, + }; } /** @@ -188,23 +178,23 @@ * This accepts the request as long as the permission has been set to * granted. */ - createGeolocation(request, user_gesture) { + createGeolocation(receiver, user_gesture) { switch (this.permissionStatus_) { - case blink.mojom.PermissionStatus.ASK: + case PermissionStatus.ASK: return new Promise((resolve, reject) => { setTimeout(() => { - resolve(this.createGeolocation(request, user_gesture)); + resolve(this.createGeolocation(receiver, user_gesture)); }, 50); }); - setTimeout(() => { this.createGeolocation(request, user_gesture)}, 50); + setTimeout(() => { this.createGeolocation(receiver, user_gesture)}, 50); break; - case blink.mojom.PermissionStatus.GRANTED: - this.geolocationBindingSet_.addBinding(this, request); + case PermissionStatus.GRANTED: + this.geolocationReceiver_.$.bindHandle(receiver.handle); break; default: - request.close(); + receiver.handle.close(); } return Promise.resolve(this.permissionStatus_); } @@ -213,9 +203,7 @@ * Sets whether the next geolocation permission request should be allowed. */ setGeolocationPermission(allowed) { - this.permissionStatus_ = allowed ? blink.mojom.PermissionStatus.GRANTED - : blink.mojom.PermissionStatus.DENIED; + this.permissionStatus_ = allowed ? PermissionStatus.GRANTED + : PermissionStatus.DENIED; } } - -let geolocationMock = new GeolocationMock();
diff --git a/third_party/blink/web_tests/geolocation-api/resources/notimer-after-unload-inner-after.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/notimer-after-unload-inner-after.html similarity index 100% rename from third_party/blink/web_tests/geolocation-api/resources/notimer-after-unload-inner-after.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/resources/notimer-after-unload-inner-after.html
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/notimer-after-unload-inner-before.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/notimer-after-unload-inner-before.html new file mode 100644 index 0000000..acfdfa1 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/notimer-after-unload-inner-before.html
@@ -0,0 +1,26 @@ +<!DOCTYPE html> +<script type="module"> +import {GeolocationMock} from './geolocation-mock.js'; + +const parent = window.parent; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); + +// Query the position but intercept the query so the service doesn't respond +// immediately. If it responds too early, we won't exercise the intended code +// path, i.e. geolocation API receiving a response from the service after page +// unload. Similarly, issuing the request too late will also fail to exercise +// that path because the mock service may not receive the request in time to +// process and reply to it. +// +// Instead, we ensure the service sees the request before moving forward, but +// we defer its response until we're within the unload handler below. +const promise = mock.interceptQueryNextPosition(); +navigator.geolocation.getCurrentPosition( + parent.onGeolocationResponse, parent.onGeolocationResponse, + {timeout: 500, maximumAge:0}); +const respond = await promise; +document.body.onunload = () => respond(mock.makeGeoposition(1, 2, 3)); +parent.navigateToSecondPage(); +</script>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/pass-test.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/pass-test.html new file mode 100644 index 0000000..e6432b1 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/pass-test.html
@@ -0,0 +1,8 @@ +SUCCESS +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +document.title = decodeURIComponent(location.hash.substring(1)); +setup({single_test: true}); +done(); +</script>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/remove-remote-context-in-error-callback-crash-inner.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/remove-remote-context-in-error-callback-crash-inner.html new file mode 100644 index 0000000..67f06ea --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/remove-remote-context-in-error-callback-crash-inner.html
@@ -0,0 +1,16 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> + <head> + <script type="module"> + import {GeolocationMock} from './geolocation-mock.js'; + + const mock = new GeolocationMock(); + window.init = function() { + mock.setGeolocationPermission(false); + window.parent.onIframeReady(); + } + </script> + </head> + <body onload="init()"> + </body> +</html>
diff --git a/third_party/blink/web_tests/geolocation-api/resources/testharness-adapter.js b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/testharness-adapter.js similarity index 100% rename from third_party/blink/web_tests/geolocation-api/resources/testharness-adapter.js rename to third_party/blink/web_tests/wpt_internal/geolocation-api/resources/testharness-adapter.js
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/window-close-popup.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/window-close-popup.html new file mode 100644 index 0000000..ad94ec0 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/resources/window-close-popup.html
@@ -0,0 +1,16 @@ +<script type="module"> +import {GeolocationMock} from './geolocation-mock.js'; + +const mockLatitude = 51.478; +const mockLongitude = -0.166; +const mockAccuracy = 100.0; + +window.loadNext = () => { + const mock = new GeolocationMock(); + mock.setGeolocationPermission(true); + mock.setGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy); + + navigator.geolocation.watchPosition(window.opener.gotPosition); +} +</script> +<body onload="loadNext()"></body>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/success-clear-watch.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/success-clear-watch.https.html new file mode 100644 index 0000000..cdf6788 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/success-clear-watch.https.html
@@ -0,0 +1,33 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("This tests removing the watcher from a position callback does not causes assertions."); + +const mockLatitude = 51.478; +const mockLongitude = -0.166; +const mockAccuracy = 100; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPosition(mockLatitude, + mockLongitude, + mockAccuracy); + +const watchId = navigator.geolocation.watchPosition(function() { + navigator.geolocation.clearWatch(watchId); + finishJSTest(); +}, function(e) { + navigator.geolocation.clearWatch(watchId); + finishJSTest(); +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/success.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/success.https.html new file mode 100644 index 0000000..564850b --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/success.https.html
@@ -0,0 +1,38 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests Geolocation success callback using the mock service."); + +const mockLatitude = 51.478; +const mockLongitude = -0.166; +const mockAccuracy = 100; + +let position; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPosition(mockLatitude, + mockLongitude, + mockAccuracy); + +navigator.geolocation.getCurrentPosition(function(p) { + position = p; + assert_equals(position.coords.latitude, mockLatitude); + assert_equals(position.coords.longitude, mockLongitude); + assert_equals(position.coords.accuracy, mockAccuracy); + finishJSTest(); +}, function(e) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout-clear-watch.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout-clear-watch.https.html new file mode 100644 index 0000000..52ac766 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout-clear-watch.https.html
@@ -0,0 +1,34 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when a watch times out and is cleared from the error callback, there is no crash. This a regression test for https://bugs.webkit.org/show_bug.cgi?id=32111."); + +var error; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationTimeoutError(true); + +var watchId = navigator.geolocation.watchPosition(function() { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + error = e; + assert_equals(error.code, error.TIMEOUT); + assert_equals(error.message, "Timeout expired"); + navigator.geolocation.clearWatch(watchId); + window.setTimeout(finishJSTest, 0); +}, { + timeout: 0 +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout-negative.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout-negative.https.html new file mode 100644 index 0000000..1b65b85 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout-negative.https.html
@@ -0,0 +1,33 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when timeout is negative (and maximumAge is too), the error callback is called immediately with code TIMEOUT."); + +let error; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationTimeoutError(true); + +navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + error = e; + assert_equals(error.code, error.TIMEOUT); + assert_equals(error.message, "Timeout expired"); + finishJSTest(); +}, { + timeout: -1000 +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout-over-max-of-unsigned.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout-over-max-of-unsigned.https.html new file mode 100644 index 0000000..b82e05c --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout-over-max-of-unsigned.https.html
@@ -0,0 +1,40 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when timeout value is over maximum of unsigned, the success callback is called as expected."); + +const mockLatitude = 51.478; +const mockLongitude = -0.166; +const mockAccuracy = 100.0; + +let position; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPosition(mockLatitude, + mockLongitude, + mockAccuracy); + +navigator.geolocation.getCurrentPosition(function(p) { + position = p; + assert_equals(position.coords.latitude, mockLatitude); + assert_equals(position.coords.longitude, mockLongitude); + assert_equals(position.coords.accuracy, mockAccuracy); + finishJSTest(); +}, function(e) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}, { + timeout: 4294967296 +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout-zero.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout-zero.https.html new file mode 100644 index 0000000..4262f79 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout-zero.https.html
@@ -0,0 +1,33 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when timeout is zero (and maximumAge is too), the error callback is called immediately with code TIMEOUT."); + +let error; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationTimeoutError(true); + +navigator.geolocation.getCurrentPosition(function(p) { + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); +}, function(e) { + error = e; + assert_equals(error.code, error.TIMEOUT); + assert_equals(error.message, "Timeout expired"); + finishJSTest(); +}, { + timeout: 0 +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout.https.html new file mode 100644 index 0000000..2a34d00 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/timeout.https.html
@@ -0,0 +1,40 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that when timeout is non-zero, the success callback is called as expected."); + +const mockLatitude = 51.478; +const mockLongitude = -0.166; +const mockAccuracy = 100.0; + +let position; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPosition(mockLatitude, + mockLongitude, + mockAccuracy); + +navigator.geolocation.getCurrentPosition(function(p) { + position = p; + assert_equals(position.coords.latitude, mockLatitude); + assert_equals(position.coords.longitude, mockLongitude); + assert_equals(position.coords.accuracy, mockAccuracy); + finishJSTest(); +}, function(e) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}, { + timeout: 1000 +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/timestamp.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/timestamp.https.html new file mode 100644 index 0000000..7a7d1ba --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/timestamp.https.html
@@ -0,0 +1,41 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that Geoposition timestamps are well-formed (non-zero and in the same units as Date.getTime)."); + +const mockLatitude = 51.478; +const mockLongitude = -0.166; +const mockAccuracy = 100.0; + +const now = new Date().getTime(); +assert_not_equals(now, 0); +let t = null; +let then = null; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy); + +function checkPosition(p) { + t = p.timestamp; + const d = new Date(); + then = d.getTime(); + assert_not_equals(t, 0); + assert_not_equals(then, 0); + assert_less_than_equal(now - 1, t); // Avoid rounding errors + assert_less_than_equal(t, then + 1); // Avoid rounding errors + finishJSTest(); +} + +navigator.geolocation.getCurrentPosition(checkPosition); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/watch.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/watch.https.html new file mode 100644 index 0000000..83a4ab1 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/watch.https.html
@@ -0,0 +1,72 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that watchPosition correctly reports position updates and errors from the Geolocation service."); + +let mockLatitude = 51.478; +let mockLongitude = -0.166; +let mockAccuracy = 100.0; + +const mockMessage = 'test'; + +let position; +let error; + +function checkPosition(p) { + position = p; + assert_equals(position.coords.latitude, mockLatitude); + assert_equals(position.coords.longitude, mockLongitude); + assert_equals(position.coords.accuracy, mockAccuracy); +} + +function checkError(e) { + error = e; + assert_equals(error.code, error.POSITION_UNAVAILABLE); + assert_equals(error.message, mockMessage); +} + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); +mock.setGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy); + +let state = 0; +navigator.geolocation.watchPosition(function(p) { + switch (state++) { + case 0: + checkPosition(p); + mock.setGeolocationPosition(++mockLatitude, ++mockLongitude, ++mockAccuracy); + break; + case 1: + checkPosition(p); + mock.setGeolocationPositionUnavailableError(mockMessage); + break; + case 3: + checkPosition(p); + finishJSTest(); + break; + default: + testFailed('Success callback invoked unexpectedly'); + finishJSTest(); + } +}, function(e) { + switch (state++) { + case 2: + checkError(e); + mock.setGeolocationPosition(++mockLatitude, ++mockLongitude, ++mockAccuracy); + break; + default: + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); + } +}); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/watchPosition-page-visibility.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/watchPosition-page-visibility.https.html new file mode 100644 index 0000000..c0e78d8 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/watchPosition-page-visibility.https.html
@@ -0,0 +1,113 @@ +<!DOCTYPE html> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that watchPosition does not report position changes when the page is not visible."); + +let position; +let error; +let isPageVisible = true; + +const mock = new GeolocationMock(); +mock.setGeolocationPermission(true); + +let mockLatitude = 51.478; +let mockLongitude = -0.166; +const mockAccuracy = 100.0; + +function generateNextPosition() { + ++mockLatitude; + ++mockLongitude; + return mock.makeGeoposition(mockLatitude, mockLongitude, mockAccuracy); +} + +function updatePosition() { + const p = generateNextPosition(); + mock.setGeolocationPosition(p.latitude, p.longitude, p.accuracy); +} + +function setMainWindowHidden(hidden) { + return new Promise(resolve => { + document.addEventListener('visibilitychange', resolve, {once: true}); + testRunner.setMainWindowHidden(hidden); + }); +} + +function roundTripToBrowser() { + return new Promise(resolve => { + // Use an OOPIF navigation to elicit a browser round-trip. + const frame = document.createElement('iframe'); + frame.src = 'http://localhost:8080/resources/blank.html'; + frame.addEventListener('load', () => { + document.body.removeChild(frame); + resolve(); + }); + document.body.appendChild(frame); + }); +} + +updatePosition(); + +let state = 0; + +function checkPosition(p) { + position = p; + assert_equals(position.coords.latitude, mockLatitude); + assert_equals(position.coords.longitude, mockLongitude); +} + +navigator.geolocation.watchPosition(async p => { + assert_true(isPageVisible); + state++; + checkPosition(p); + switch(state) { + case 1: + updatePosition(); + break; + case 2: { + // Make sure we stall the next queryNextPosition() request so we + // can defer its reply until the window is hidden. + let interception = mock.interceptQueryNextPosition(); + await setMainWindowHidden(true); + let respond = await interception; + + isPageVisible = false; + + // This should not be received. If it is, this enclosing function + // will run with `isPageVisible` still `false` and the assertion at + // the top of the function will fail. + respond(generateNextPosition()); + + // Wait for it to not be received, then continue. We also defer the + // next queryNextPosition() here to stall until we've shown the + // window again. + interception = mock.interceptQueryNextPosition(); + await roundTripToBrowser(); + await setMainWindowHidden(false); + isPageVisible = true; + respond = await interception; + respond(generateNextPosition()); + break; + } + case 3: + updatePosition(); + break; + case 4: + finishJSTest(); + return; + } +}, function(e) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); + +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/wpt_internal/geolocation-api/watchPosition-unique.https.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/watchPosition-unique.https.html new file mode 100644 index 0000000..fc1c6ad8 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/watchPosition-unique.https.html
@@ -0,0 +1,30 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/testharness-adapter.js"></script> +</head> +<body> +<script type="module"> +import {GeolocationMock} from './resources/geolocation-mock.js'; + +description("Tests that navigator.geolocation.watchPosition returns unique results within its script execution context."); + +const mock = new GeolocationMock(); +mock.setGeolocationPosition(51.478, -0.166, 100.0); + +const watchID1 = navigator.geolocation.watchPosition(function() { }); +const watchID2 = navigator.geolocation.watchPosition(function() { }); +const watchID3 = navigator.geolocation.watchPosition(function() { }); + +assert_greater_than(watchID1, 0); +assert_greater_than(watchID2, 0); +assert_greater_than(watchID3, 0); +assert_not_equals(watchID1, watchID2); +assert_not_equals(watchID1, watchID3); +assert_not_equals(watchID2, watchID3); +finishJSTest(); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/geolocation-api/window-close-crash.html b/third_party/blink/web_tests/wpt_internal/geolocation-api/window-close-crash.https.html similarity index 85% rename from third_party/blink/web_tests/geolocation-api/window-close-crash.html rename to third_party/blink/web_tests/wpt_internal/geolocation-api/window-close-crash.https.html index f2dd3fcf..a20d42f 100644 --- a/third_party/blink/web_tests/geolocation-api/window-close-crash.html +++ b/third_party/blink/web_tests/wpt_internal/geolocation-api/window-close-crash.https.html
@@ -1,8 +1,8 @@ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> <script src="resources/testharness-adapter.js"></script> </head> <body> @@ -11,7 +11,7 @@ "when the GeolocationController is destroyed.<br>" + "See https://bugs.webkit.org/show_bug.cgi?id=52216"); -var otherWindow; +let otherWindow; function gotPosition(p) {
diff --git a/third_party/blink/web_tests/wpt_internal/webcodecs/basic_video_encoding.any.js b/third_party/blink/web_tests/wpt_internal/webcodecs/basic_video_encoding.any.js index b27802f9..0f49523 100644 --- a/third_party/blink/web_tests/wpt_internal/webcodecs/basic_video_encoding.any.js +++ b/third_party/blink/web_tests/wpt_internal/webcodecs/basic_video_encoding.any.js
@@ -16,7 +16,7 @@ assert_equals(frame.cropHeight, h, "cropHeight"); assert_equals(frame.timestamp, next_ts++, "timestamp"); frames_decoded++; - frame.destroy(); + frame.close(); }, error(e) { errors++;
diff --git a/third_party/boringssl/BUILD.gn b/third_party/boringssl/BUILD.gn index 17cf9cda..ad77b1b 100644 --- a/third_party/boringssl/BUILD.gn +++ b/third_party/boringssl/BUILD.gn
@@ -100,6 +100,8 @@ # TODO(davidben): Rename all the file lists, etc., upstream from mac # and ios to apple. sources += crypto_sources_ios_aarch64 + } else if (is_win) { + sources += crypto_sources_win_aarch64 } else { public_configs = [ ":no_asm_config" ] }
diff --git a/third_party/chromevox/third_party/sre/README.chromium b/third_party/chromevox/third_party/sre/README.chromium index 3169c44..d30d0fd 100644 --- a/third_party/chromevox/third_party/sre/README.chromium +++ b/third_party/chromevox/third_party/sre/README.chromium
@@ -2,15 +2,17 @@ URL: https://github.com/zorkow/speech-rule-engine Version: 2.3.0-beta License: Apache 2.0 +Security Critical: no Description: Speech rule engine (SRE) can translate XML expressions into speech strings according to rules that can be specified in a syntax using Xpath expressions. It was originally designed for translation of MathML and MathJax DOM elements for the ChromeVox screen reader. Besides the rules originally designed for the -use in ChromeVox, it also has an implemententation of the full set of Mathspeak +use in ChromeVox, it also has an implementation of the full set of Mathspeak rules. In addition it contains a library for semantic interpretation and enrichment of MathML expressions. Local Modifications: -The lone js file is the packed browser version of SRE. +- The lone js file is the packed browser version of SRE. +- All XMLHttpRequest calls were removed.
diff --git a/third_party/chromevox/third_party/sre/sre_browser.js b/third_party/chromevox/third_party/sre/sre_browser.js index bce31cc..198fad3 100644 --- a/third_party/chromevox/third_party/sre/sre_browser.js +++ b/third_party/chromevox/third_party/sre/sre_browser.js
@@ -1,4 +1,4 @@ -var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_"; + var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_"; $jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(a){return $jscomp.SYMBOL_PREFIX+(a||"")+$jscomp.symbolCounter_++}; $jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var b=0;return $jscomp.iteratorPrototype(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}; $jscomp.iteratorPrototype=function(a){$jscomp.initSymbolIterator();a={next:a};a[$jscomp.global.Symbol.iterator]=function(){return this};return a};$jscomp.array=$jscomp.array||{};$jscomp.iteratorFromArray=function(a,b){$jscomp.initSymbolIterator();a instanceof String&&(a+="");var c=0,d={next:function(){if(c<a.length){var e=c++;return{value:b(e,a[e]),done:!1}}d.next=function(){return{done:!0,value:void 0}};return d.next()}};d[Symbol.iterator]=function(){return d};return d}; @@ -29,7 +29,7 @@ goog.dependencies_.nameToPath?goog.dependencies_.nameToPath[a]:null},goog.findBasePath_(),goog.global.CLOSURE_NO_DEPS||goog.importScript_(goog.basePath+"deps.js"));goog.hasBadLetScoping=null;goog.useSafari10Workaround=function(){if(null==goog.hasBadLetScoping){var a;try{a=!eval('"use strict";let x = 1; function f() { return typeof x; };f() == "number";')}catch(b){a=!1}goog.hasBadLetScoping=a}return goog.hasBadLetScoping};goog.workaroundSafari10EvalBug=function(a){return"(function(){"+a+"\n;})();\n"}; goog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:void 0,declareLegacyNamespace:!1};var c;if(goog.isFunction(a))c=a.call(void 0,{});else if(goog.isString(a))goog.useSafari10Workaround()&&(a=goog.workaroundSafari10EvalBug(a)),c=goog.loadModuleFromSource_.call(void 0,a);else throw Error("Invalid module definition");var d=goog.moduleLoaderState_.moduleName;if(!goog.isString(d)||!d)throw Error('Invalid module name "'+d+'"');goog.moduleLoaderState_.declareLegacyNamespace? goog.constructNamespace_(d,c):goog.SEAL_MODULE_EXPORTS&&Object.seal&&"object"==typeof c&&null!=c&&Object.seal(c);goog.loadedModules_[d]=c}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a){eval(a);return{}};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b<a.length;)"."==a[b]?a.splice(b,1):b&&".."==a[b]&&a[b-1]&&".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")}; -goog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}}; +goog.loadFileSync_=function(a){}; goog.retrieveAndExec_=function(a,b,c){if(!COMPILED){var d=a;a=goog.normalizePath_(a);var e=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_,f=goog.loadFileSync_(a);if(null==f)throw Error('Load of "'+a+'" failed');c&&(f=goog.transpile_.call(goog.global,f,a));f=b?goog.wrapModule_(a,f):f+("\n//# sourceURL="+a);goog.IS_OLD_IE_?(goog.dependencies_.deferred[d]=f,goog.queuedModules_.push(d)):e(a,f)}}; goog.transpile_=function(a,b){var c=goog.global.$jscomp;c||(goog.global.$jscomp=c={});var d=c.transpile;if(!d){var e=goog.basePath+goog.TRANSPILER,f=goog.loadFileSync_(e);if(f){eval(f+"\n//# sourceURL="+e);if(goog.global.$gwtExport&&goog.global.$gwtExport.$jscomp&&!goog.global.$gwtExport.$jscomp.transpile)throw Error('The transpiler did not properly export the "transpile" method. $gwtExport: '+JSON.stringify(goog.global.$gwtExport));goog.global.$jscomp.transpile=goog.global.$gwtExport.$jscomp.transpile; c=goog.global.$jscomp;d=c.transpile}}d||(d=c.transpile=function(a,b){goog.logToConsole_(b+" requires transpilation but no transpiler was found.");return a});return d(a,b)}; @@ -503,7 +503,7 @@ e,c);break;default:sre.MathMap.parseFiles(a.map(function(a){return b+a})).forEach(function(a){c(a)})}}; sre.MathMap.prototype.retrieveMaps=function(){sre.MathMap.retrieveFiles(sre.MathMap.FUNCTIONS_FILES_,sre.MathMap.FUNCTIONS_PATH_,goog.bind(this.store.addFunctionRules,this.store));sre.MathMap.retrieveFiles(sre.MathMap.SYMBOLS_FILES_,sre.MathMap.SYMBOLS_PATH_,goog.bind(this.store.addSymbolRules,this.store));sre.MathMap.retrieveFiles(sre.MathMap.UNITS_FILES_,sre.MathMap.UNITS_PATH_,goog.bind(this.store.addUnitRules,this.store))}; sre.MathMap.getJsonIE_=function(a,b,c){var d=c||1;sre.BrowserUtil.mapsForIE?((c=sre.BrowserUtil.mapsForIE[a])&&c.forEach(function(a){b(a)}),sre.MathMap.toFetch_--):5>=d?setTimeout(function(){sre.MathMap.getJsonIE_(a,b,d++)},300):sre.MathMap.toFetch_--};sre.MathMap.fromFile_=function(a,b){return sre.SystemExternal.fs.readFile(a,"utf8",b)};sre.MathMap.loadFile=function(a){try{return sre.MathMap.readJSON_(a)}catch(b){console.log("Unable to load file: "+a+", error: "+b)}};sre.MathMap.loadFiles=function(a){return a.map(sre.MathMap.loadFile)}; -sre.MathMap.parseFiles=function(a){a=sre.MathMap.loadFiles(a);return[].concat.apply([],a.map(function(a){return JSON.parse(a)}))};sre.MathMap.readJSON_=function(a){return sre.SystemExternal.fs.readFileSync(a)};sre.MathMap.getJsonAjax_=function(a,b){var c=new XMLHttpRequest;c.onreadystatechange=function(){4===c.readyState&&(sre.MathMap.toFetch_--,200===c.status&&JSON.parse(c.responseText).forEach(function(a){b(a)}))};c.open("GET",a,!0);c.send()};sre.AbstractionRules=function(){sre.MathStore.call(this)};goog.inherits(sre.AbstractionRules,sre.MathStore);goog.addSingletonGetter(sre.AbstractionRules);sre.AbstractionRules.mathStore=sre.AbstractionRules.getInstance();sre.AbstractionRules.defineRule_=goog.bind(sre.AbstractionRules.mathStore.defineRule,sre.AbstractionRules.mathStore);sre.AbstractionRules.defineRuleAlias_=goog.bind(sre.AbstractionRules.mathStore.defineRulesAlias,sre.AbstractionRules.mathStore); +sre.MathMap.parseFiles=function(a){a=sre.MathMap.loadFiles(a);return[].concat.apply([],a.map(function(a){return JSON.parse(a)}))};sre.MathMap.readJSON_=function(a){return sre.SystemExternal.fs.readFileSync(a)};sre.MathMap.getJsonAjax_=function(a,b){};sre.AbstractionRules=function(){sre.MathStore.call(this)};goog.inherits(sre.AbstractionRules,sre.MathStore);goog.addSingletonGetter(sre.AbstractionRules);sre.AbstractionRules.mathStore=sre.AbstractionRules.getInstance();sre.AbstractionRules.defineRule_=goog.bind(sre.AbstractionRules.mathStore.defineRule,sre.AbstractionRules.mathStore);sre.AbstractionRules.defineRuleAlias_=goog.bind(sre.AbstractionRules.mathStore.defineRulesAlias,sre.AbstractionRules.mathStore); sre.AbstractionRules.defineSpecialisedRule_=goog.bind(sre.AbstractionRules.mathStore.defineSpecialisedRule,sre.AbstractionRules.mathStore);sre.AbstractionRules.defineUniqueRuleAlias_=goog.bind(sre.AbstractionRules.mathStore.defineUniqueRuleAlias,sre.AbstractionRules.mathStore); sre.AbstractionRules.initAbstractionRules_=function(){(0,sre.AbstractionRules.defineRule_)("abstr-collapsed","mathspeak.default",'[t] "collapsed"; [n] . (grammar:collapsed)',"self::*","@alternative",'not(@alternative="summary")','not(contains(@grammar, "collapsed"))');(0,sre.AbstractionRules.defineRule_)("abstr-identifier","mathspeak.default",'[t] "long identifier"',"self::identifier","@alternative","self::*","self::*","self::*","self::*");(0,sre.AbstractionRules.defineRule_)("abstr-identifier","mathspeak.default", '[t] "identifier"',"self::identifier",'@alternative="summary"',"@alternative","self::*","self::*","self::*","self::*");(0,sre.AbstractionRules.defineRule_)("abstr-identifier","mathspeak.brief",'[t] "identifier"',"self::identifier","@alternative","self::*","self::*","self::*","self::*");(0,sre.AbstractionRules.defineSpecialisedRule_)("abstr-identifier","mathspeak.brief","mathspeak.sbrief");(0,sre.AbstractionRules.defineRule_)("abstr-number","mathspeak.default",'[t] "long number"',"self::number","@alternative");
diff --git a/third_party/google-closure-library/OWNERS b/third_party/google-closure-library/OWNERS index e4ffdff8..b7dd2c3 100644 --- a/third_party/google-closure-library/OWNERS +++ b/third_party/google-closure-library/OWNERS
@@ -1,2 +1,2 @@ -beccahughes@chromium.org +mlamouri@chromium.org steimel@chromium.org
diff --git a/third_party/libprotobuf-mutator/fuzzable_proto_library.gni b/third_party/libprotobuf-mutator/fuzzable_proto_library.gni index 27d6c1e..c13d91b 100644 --- a/third_party/libprotobuf-mutator/fuzzable_proto_library.gni +++ b/third_party/libprotobuf-mutator/fuzzable_proto_library.gni
@@ -32,7 +32,9 @@ # The plugin will generate cc, so don't ask for it to be done by protoc. generate_cc = false - generate_python = false + if (!defined(invoker.generate_python)) { + generate_python = false + } extra_configs = [ "//third_party/protobuf:protobuf_config" ] }
diff --git a/third_party/liburlpattern/DIR_METADATA b/third_party/liburlpattern/DIR_METADATA index 10e3ecd..e0c06def 100644 --- a/third_party/liburlpattern/DIR_METADATA +++ b/third_party/liburlpattern/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Blink>URLPattern" +monorail: { + component: "Blink>URLPattern" } -team_email: "worker-dev@chromium.org" +team_email: "worker-dev@chromium.org"
diff --git a/third_party/libvpx/README.chromium b/third_party/libvpx/README.chromium index bd6b15db..a482f06b 100644 --- a/third_party/libvpx/README.chromium +++ b/third_party/libvpx/README.chromium
@@ -6,9 +6,9 @@ License File: source/libvpx/LICENSE Security Critical: yes -Date: Monday November 16 2020 +Date: Wednesday January 13 2021 Branch: master -Commit: b5d77a48d740e211a130c8e45d9353ef8c154a47 +Commit: 576e0801f9281fd54e2c69ad5be5fef7af656011 Description: Contains the sources used to compile libvpx binaries used by Google Chrome and
diff --git a/third_party/libvpx/source/config/vpx_version.h b/third_party/libvpx/source/config/vpx_version.h index 65e1d20..d27498ab 100644 --- a/third_party/libvpx/source/config/vpx_version.h +++ b/third_party/libvpx/source/config/vpx_version.h
@@ -2,8 +2,8 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 9 #define VERSION_PATCH 0 -#define VERSION_EXTRA "104-gb5d77a48d" +#define VERSION_EXTRA "129-g576e0801f" #define VERSION_PACKED \ ((VERSION_MAJOR << 16) | (VERSION_MINOR << 8) | (VERSION_PATCH)) -#define VERSION_STRING_NOSP "v1.9.0-104-gb5d77a48d" -#define VERSION_STRING " v1.9.0-104-gb5d77a48d" +#define VERSION_STRING_NOSP "v1.9.0-129-g576e0801f" +#define VERSION_STRING " v1.9.0-129-g576e0801f"
diff --git a/third_party/metrics_proto/DIR_METADATA b/third_party/metrics_proto/DIR_METADATA index baf36ad..876e1056 100644 --- a/third_party/metrics_proto/DIR_METADATA +++ b/third_party/metrics_proto/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Internals>Metrics" +monorail: { + component: "Internals>Metrics" } -team_email: "chromium-dev@chromium.org" +team_email: "chromium-dev@chromium.org"
diff --git a/third_party/metrics_proto/README.chromium b/third_party/metrics_proto/README.chromium index 416f84f4..fd88a19 100644 --- a/third_party/metrics_proto/README.chromium +++ b/third_party/metrics_proto/README.chromium
@@ -1,6 +1,6 @@ Name: Metrics Protos Short Name: metrics_proto -URL: This is the canonical public repository. +URL: This is the canonical public repository Version: 346104568 Date: 2020/12/07 UTC License: BSD
diff --git a/third_party/neon_2_sse/DIR_METADATA b/third_party/neon_2_sse/DIR_METADATA index 142a254..fb4428a 100644 --- a/third_party/neon_2_sse/DIR_METADATA +++ b/third_party/neon_2_sse/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>OptimizationGuide" +monorail: { + component: "Internals>OptimizationGuide" }
diff --git a/third_party/private_membership/DIR_METADATA b/third_party/private_membership/DIR_METADATA index 86a70309b..7556efb4 100644 --- a/third_party/private_membership/DIR_METADATA +++ b/third_party/private_membership/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Enterprise>CloudPolicy" +monorail: { + component: "Enterprise>CloudPolicy" }
diff --git a/third_party/r8/BUILD.gn b/third_party/r8/BUILD.gn new file mode 100644 index 0000000..d184c4b --- /dev/null +++ b/third_party/r8/BUILD.gn
@@ -0,0 +1,15 @@ +# Copyright 2021 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/android/rules.gni") + +# The output jar for this target is copied and checked-in to minimize the number +# of edges in the build graph. This is a class that rarely changes. +java_library("custom_d8_java") { + sources = [ "java/src/org/chromium/build/CustomD8.java" ] + + # Avoid using java_prebuilt() to ensure all uses go through the checked-in + # version. + input_jars_paths = [ "//third_party/r8/lib/r8.jar" ] +}
diff --git a/third_party/r8/README.chromium b/third_party/r8/README.chromium index 2cc564e..f4bf9d5 100644 --- a/third_party/r8/README.chromium +++ b/third_party/r8/README.chromium
@@ -23,8 +23,14 @@ * Plus: https://r8-review.googlesource.com/c/r8/+/56708 * Added "playground" directory for quick "how does this optimize" tests. * Removed references to ConcurrentHashMap and TimeZone#getTimeZone in desugar_jdk_libs.json. +* Added "java/src/org/chromium/build/CustomD8.java", custom_d8.jar, and BUILD.gn. + * Used in "build/android/gyp/dex.py" to enable desugar dependencies. Update Instructions: +# For the custom d8 jar (required only when CustomD8.java changes): +autoninja -C out/Debug third_party/r8:custom_d8_java +cp out/Debug/obj/third_party/r8/custom_d8_java.javac.jar third_party/r8/custom_d8.jar + # Download R8: git clone https://r8.googlesource.com/r8 cd r8
diff --git a/third_party/r8/custom_d8.jar b/third_party/r8/custom_d8.jar new file mode 100644 index 0000000..0c12c03 --- /dev/null +++ b/third_party/r8/custom_d8.jar Binary files differ
diff --git a/third_party/r8/java/src/org/chromium/build/CustomD8.java b/third_party/r8/java/src/org/chromium/build/CustomD8.java new file mode 100644 index 0000000..e8e4de3 --- /dev/null +++ b/third_party/r8/java/src/org/chromium/build/CustomD8.java
@@ -0,0 +1,85 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.build; + +import com.android.tools.r8.CompilationFailedException; +import com.android.tools.r8.D8; +import com.android.tools.r8.D8Command; +import com.android.tools.r8.DesugarGraphConsumer; +import com.android.tools.r8.origin.Origin; + +import java.io.IOException; +import java.io.PrintWriter; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; + +public class CustomD8 { + private static class CommandLineOrigin extends Origin { + private CommandLineOrigin() { + super(root()); + } + + @Override + public String part() { + return "Command line"; + } + } + + // Entry point for D8 compilation with support for --desugar-dependencies option + // as well. + public static void main(String[] args) throws CompilationFailedException, IOException { + String desugarDependenciesOptions = "--desugar-dependencies"; + String desugarDependenciesPath = null; + String[] d8Args = null; + + int desugarDepIdx = Arrays.asList(args).indexOf(desugarDependenciesOptions); + if (desugarDepIdx != -1) { + int numRemainingArgs = args.length - (desugarDepIdx + 2); + if (numRemainingArgs < 0) { + throw new CompilationFailedException( + "Missing argument to '" + desugarDependenciesOptions + "'"); + } + desugarDependenciesPath = args[desugarDepIdx + 1]; + d8Args = new String[args.length - 2]; + // Copy over all other args before and after the desugar dependencies arg. + System.arraycopy(args, 0, d8Args, 0, desugarDepIdx); + System.arraycopy(args, desugarDepIdx + 2, d8Args, desugarDepIdx, numRemainingArgs); + } else { + d8Args = args; + } + + // Use D8 command line parser to handle the normal D8 command line. + D8Command.Builder builder = D8Command.parse(d8Args, new CommandLineOrigin()); + // If additional options was passed amend the D8 command builder. + if (desugarDependenciesPath != null) { + final Path desugarDependencies = Paths.get(desugarDependenciesPath); + PrintWriter desugarDependenciesPrintWriter = + new PrintWriter(Files.newOutputStream(desugarDependencies)); + if (builder.getDesugarGraphConsumer() != null) { + throw new CompilationFailedException("Too many desugar graph consumers."); + } + builder.setDesugarGraphConsumer(new DesugarGraphConsumer() { + @Override + public void accept(Origin dependent, Origin dependency) { + // The target's class files have root as their parent. + if (dependency.parent().equals(Origin.root())) { + return; + } + desugarDependenciesPrintWriter.println(dependency.parent()); + } + + @Override + public void finished() { + desugarDependenciesPrintWriter.close(); + } + }); + } + + // Run D8. + D8.run(builder.build()); + } +}
diff --git a/third_party/ruy/DIR_METADATA b/third_party/ruy/DIR_METADATA index 142a254..fb4428a 100644 --- a/third_party/ruy/DIR_METADATA +++ b/third_party/ruy/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>OptimizationGuide" +monorail: { + component: "Internals>OptimizationGuide" }
diff --git a/third_party/schema_org/OWNERS b/third_party/schema_org/OWNERS index 4f00ea133..c48e48e 100644 --- a/third_party/schema_org/OWNERS +++ b/third_party/schema_org/OWNERS
@@ -1,3 +1 @@ -beccahughes@chromium.org -sgbowen@google.com steimel@chromium.org
diff --git a/third_party/tflite/DIR_METADATA b/third_party/tflite/DIR_METADATA index 142a254..fb4428a 100644 --- a/third_party/tflite/DIR_METADATA +++ b/third_party/tflite/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { - component: "Internals>OptimizationGuide" +monorail: { + component: "Internals>OptimizationGuide" }
diff --git a/tools/media_engagement_preload/OWNERS b/tools/media_engagement_preload/OWNERS index 70313512..2d28246 100644 --- a/tools/media_engagement_preload/OWNERS +++ b/tools/media_engagement_preload/OWNERS
@@ -1,2 +1 @@ -beccahughes@chromium.org mlamouri@chromium.org
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index a2b804a..9a53510 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -39791,6 +39791,19 @@ <int value="3" label="Actions"/> </enum> +<enum name="IOSStabilityUserVisibleTerminationType"> + <summary> + One of several separate stability metrics. The values are non-contiguous as + they are a subset of values matching fields of the Stability proto (from the + SystemProfile). + </summary> + <int value="0" + label="Termination caused by system signal (f.e. EXC_BAD_ACCESS)"/> + <int value="1" + label="Termination caused by Hang / UI Thread freeze (ui thread was + locked for 9+ seconds and the app was quit by OS or the user)."/> +</enum> + <enum name="IOSTabSwitcherPageChangeInteraction"> <int value="0" label="Unknown Interaction"/> <int value="1" label="Scroll View Drag"/> @@ -42468,6 +42481,7 @@ label="AllowDownloadResumptionWithoutStrongValidators:disabled"/> <int value="-2058656447" label="ContextualSearchUrlActions:enabled"/> <int value="-2056351013" label="AutofillUpdatedCardUnmaskPromptUi:enabled"/> + <int value="-2056198604" label="InterestFeedV2Hearts:disabled"/> <int value="-2054612904" label="BuiltInModuleInfra:enabled"/> <int value="-2053860791" label="XGEOVisibleNetworks:enabled"/> <int value="-2048927838" label="AutoplayWhitelistSettings:enabled"/> @@ -43605,6 +43619,7 @@ <int value="-1060395248" label="PasswordSearchMobile:enabled"/> <int value="-1056860259" label="OmniboxEnableClipboardProviderImageSuggestions:enabled"/> + <int value="-1056629722" label="AssistantIntentTranslateInfo:enabled"/> <int value="-1056310158" label="disable-memory-pressure-chromeos"/> <int value="-1055845287" label="SensorContentSetting:enabled"/> <int value="-1052782474" label="enable-cloud-devices"/> @@ -46385,6 +46400,7 @@ <int value="1605611615" label="enable-webrtc-srtp-aes-gcm"/> <int value="1609059016" label="CupsIppPrintingBackend:enabled"/> <int value="1611522475" label="AutofillPrimaryInfoStyleExperiment:disabled"/> + <int value="1611838284" label="CellularUseExternalEuicc:enabled"/> <int value="1612206633" label="CCTModuleCustomHeader:enabled"/> <int value="1612446645" label="enable-weak-memorycache"/> <int value="1612871297" label="WebPayments:disabled"/> @@ -46578,6 +46594,7 @@ label="AutofillEnableInfoBarAccountIndicationFooterForSingleAccountUsers:enabled"/> <int value="1795186324" label="SyncPseudoUSSExtensionSettings:disabled"/> <int value="1796592669" label="InstalledAppsInCbd:disabled"/> + <int value="1797872070" label="CellularUseExternalEuicc:disabled"/> <int value="1798347197" label="ContextualSuggestionsIPHReverseScroll:disabled"/> <int value="1799521026" label="LegacyTLSEnforced:disabled"/> @@ -46590,6 +46607,7 @@ <int value="1809940714" label="SpeculativeLaunchServiceWorker:disabled"/> <int value="1810258949" label="DisplayLocking:enabled"/> <int value="1810311887" label="WebAssemblyThreads:enabled"/> + <int value="1811744551" label="InterestFeedV2Hearts:enabled"/> <int value="1812368073" label="enable-new-app-list-mixer"/> <int value="1813370929" label="MigrateDefaultChromeAppToWebAppsNonGSuite:enabled"/> @@ -46713,6 +46731,7 @@ <int value="1920894670" label="OmniboxPreserveDefaultMatchAgainstAsyncUpdate:enabled"/> <int value="1923052799" label="CrostiniUseDlc:disabled"/> + <int value="1923496816" label="AssistantIntentTranslateInfo:disabled"/> <int value="1923780021" label="PrivacyReorderedAndroid:enabled"/> <int value="1924192543" label="ProactiveTabFreezeAndDiscard:enabled"/> <int value="1925627218" label="FullscreenToolbarReveal:disabled"/> @@ -56618,6 +56637,9 @@ <int value="10" label="END_HIDDEN"> Page became hidden, but is still active. </int> + <int value="11" label="END_APP_BACKGROUND"> + The metrics were flushed because the app entered the background. + </int> </enum> <enum name="PageLifecycleStateTransition"> @@ -61971,6 +61993,8 @@ <enum name="PromoBrowserCommandEnum"> <int value="0" label="Unknown Command"/> + <int value="1" label="Open Safety Check"/> + <int value="2" label="Open SafeBrowsing Enhanced Protection"/> </enum> <enum name="ProtectorError">
diff --git a/tools/metrics/histograms/histograms_xml/ash/histograms.xml b/tools/metrics/histograms/histograms_xml/ash/histograms.xml index 5d06113..fa03fa7 100644 --- a/tools/metrics/histograms/histograms_xml/ash/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/ash/histograms.xml
@@ -475,6 +475,21 @@ </summary> </histogram> +<histogram name="Ash.ClipboardHistory.ControlToVDelay" units="ms" + expires_after="2021-09-01"> + <owner>gzadina@google.com</owner> + <owner>newcomer@chromium.org</owner> + <summary> + The time between a user pressing control and V when pasting via keyboard. + Recorded in AcceleratorHistory when a V is pressed. Only recorded for the + first pressed V in a sequence, for example: User holds control, waits 200ms, + presses V (histogram logged), presses V again without releasing control (no + histogram logged). This metric is used to set a baseline for an experimental + keyboard combination where a user holds control, then presses V after a + delay to show multipaste. + </summary> +</histogram> + <histogram name="Ash.ClipboardHistory.ImageModelRequest.Lifetime" units="ms" expires_after="2021-12-11"> <owner>newcomer@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/blink/histograms.xml b/tools/metrics/histograms/histograms_xml/blink/histograms.xml index 27d0bbe..b07859d 100644 --- a/tools/metrics/histograms/histograms_xml/blink/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/blink/histograms.xml
@@ -288,6 +288,10 @@ <histogram base="true" name="Blink.Canvas.ToBlob.CompleteEncodingDelay" units="microseconds" expires_after="2021-01-31"> + <obsolete> + Removed in M89. Obsolete and unused. This has been replaced with + Blink.Canvas.ToBlob.TotalEncodingDelay + </obsolete> <owner>fserb@chromium.org</owner> <owner>aaronhk@chromium.org</owner> <summary> @@ -328,8 +332,44 @@ </summary> </histogram> +<histogram name="Blink.Canvas.ToBlob.InitialEncodingDelay.{Type}" + units="microseconds" expires_after="2022-04-04"> + <owner>aaronhk@chromium.org</owner> + <owner>fserb@chromium.org</owner> + <summary> + A new version of "Blink.Canvas.ToBlob.InitiateEncodingDelay" + (which will be allowed to expire) which allows for times >10ms. + + This metric measures the time spent from initiating image encoding (jpeg or + png) on idle task to the actual execution time of initiation, as part of a + canvas.toBlob API call. + + This metric is useful in helping us adjust the IdleTaskStartTimeoutDelay in + canvas.toBlob. When the initialization idle task is delayed for longer than + IdleTaskStartTimeoutDelay, the browser will switch to a non-idle task to + force initialization and encoding to occur on the main thread. + + In addition, metric values from OffscreenCanvas.convertToBlob API call are + also gathered into this histogram, because the logic flow is exactly the + same as canvas.toBlob. It's worth to note that the values can come from idle + tasks on either main or worker thread. + + Note: This metric drops reports on clients with low-resolution clocks, which + means these reports will be biased against a portion of the population on + Windows. See Windows.HasHighResolutionTimeTicks for the affected sample. + </summary> + <token key="Type"> + <variant name="JPEG"/> + <variant name="PNG"/> + </token> +</histogram> + <histogram base="true" name="Blink.Canvas.ToBlob.InitiateEncodingDelay" units="microseconds" expires_after="2021-01-31"> + <obsolete> + Removed in M89. Obsolete and unused. This has been replaced with + Blink.Canvas.ToBlob.InitialEncodingDelay + </obsolete> <owner>fserb@chromium.org</owner> <owner>aaronhk@chromium.org</owner> <summary> @@ -372,6 +412,41 @@ </summary> </histogram> +<histogram name="Blink.Canvas.ToBlob.TotalEncodingDelay.{Type}" + units="microseconds" expires_after="2022-04-04"> + <owner>aaronhk@chromium.org</owner> + <owner>fserb@chromium.org</owner> + <summary> + A new version of "Blink.Canvas.ToBlob.InitiateEncodingDelay" + (which will be allowed to expire) which allows for times >10ms. + + This metric measures the total time spent on completing encoding all the + rows of an image (jpeg or png), as part of a canvas.toBlob API call. + Encoding occurs during one or more idle periods on the main thread and the + waiting time of the next idle period is included in the measurement. If the + code has swtiched to force encoding path, we will not measure the delay in + this metric. + + This metric is useful in helping us adjust the IdleTaskCompleteTimeoutDelay + in canvas.toBlob. When the encoding idle task is delayed for longer than + IdleTaskCompleteTimeoutDelay, the browser will switch to a non-idle task to + force encoding to happen on the main thread. + + In addition, metric values from OffscreenCanvas.convertToBlob API call are + also gathered into this histogram, because the logic flow is exactly the + same as canvas.toBlob. It's worth to note that the values can come from idle + tasks on either main or worker thread. + + Note: This metric drops reports on clients with low-resolution clocks, which + means these reports will be biased against a portion of the population on + Windows. See Windows.HasHighResolutionTimeTicks for the affected sample. + </summary> + <token key="Type"> + <variant name="JPEG"/> + <variant name="PNG"/> + </token> +</histogram> + <histogram base="true" name="Blink.Canvas.ToDataURLScaledDuration" units="microseconds/sqrt(pixels)" expires_after="2022-04-04"> <owner>fserb@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml b/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml index d8b3c0db..019116b 100644 --- a/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml
@@ -1025,7 +1025,7 @@ </histogram> <histogram name="NewTabPage.Promos.PromoBrowserCommand" - enum="PromoBrowserCommandEnum" expires_after="M90"> + enum="PromoBrowserCommandEnum" expires_after="2022-01-01"> <owner>mahmadi@chromium.org</owner> <owner>chrome-desktop-ntp@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/others/histograms.xml b/tools/metrics/histograms/histograms_xml/others/histograms.xml index 390c69ae..ceff4e75 100644 --- a/tools/metrics/histograms/histograms_xml/others/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/others/histograms.xml
@@ -17083,6 +17083,17 @@ </token> </histogram> +<histogram name="VoiceInteraction.AssistantIntent.TranslateExtrasAttached" + enum="BooleanSuccess" expires_after="2021-06-04"> + <owner>jds@google.com</owner> + <owner>chrome-language@google.com</owner> + <summary> + Android: Whether Translate extras were successfully attached to an Assistant + intent. This is recorded just before the intent is sent to Assistant, and is + only recorded if the Translate extras are enabled. + </summary> +</histogram> + <histogram name="VoiceInteraction.DismissedEventSource" enum="VoiceInteractionEventSource" expires_after="2021-05-30"> <owner>wylieb@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/password/histograms.xml b/tools/metrics/histograms/histograms_xml/password/histograms.xml index 5119331..a2f4468 100644 --- a/tools/metrics/histograms/histograms_xml/password/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/password/histograms.xml
@@ -2123,9 +2123,9 @@ </histogram> <histogram base="true" name="PasswordManager.TimesPasswordUsed" - units="PasswordUses" expires_after="2021-01-30"> - <owner>battre@chromium.org</owner> + units="PasswordUses" expires_after="2021-06-30"> <owner>jdoerrie@chromium.org</owner> + <owner>battre@chromium.org</owner> <summary> The number of times each saved password from the profile-scoped storage has been used to log in. Split by whether created by the user or generated by
diff --git a/tools/metrics/histograms/histograms_xml/scheduler/histograms.xml b/tools/metrics/histograms/histograms_xml/scheduler/histograms.xml index 37e002a..86cd981 100644 --- a/tools/metrics/histograms/histograms_xml/scheduler/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/scheduler/histograms.xml
@@ -201,6 +201,9 @@ <histogram name="Scheduling.PrepareTilesDuration2" units="microseconds" expires_after="M85"> + <obsolete> + Removed M90. + </obsolete> <owner>vmiura@chromium.org</owner> <owner>sadrul@chromium.org</owner> <summary> @@ -299,6 +302,9 @@ <histogram name="Scheduling.SwapToAckLatency2" units="microseconds" expires_after="M85"> + <obsolete> + Removed M90. + </obsolete> <owner>vmiura@chromium.org</owner> <owner>sadrul@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/stability/histograms.xml b/tools/metrics/histograms/histograms_xml/stability/histograms.xml index d5a7c2a..20919cc 100644 --- a/tools/metrics/histograms/histograms_xml/stability/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/stability/histograms.xml
@@ -345,6 +345,25 @@ </summary> </histogram> +<histogram name="Stability.IOS.Experimental.Counts" + enum="IOSStabilityUserVisibleTerminationType" expires_after="2021-06-15"> + <owner>eugenebut@chromium.org</owner> + <owner>olivierrobin@chromium.org</owner> + <summary> + Recorded when iOS app has started after a crash caused by system signal or + hang. Not recorded when app has started after UTE / XTE or started after + Chrome update. See go/bling-stability-101 for information about signal + crashes, hangs, UTEs and XTEs. This metric intends to complement + Stability.Counts. Stability.Counts does include UTEs / XTEs and thus is a + noisy metric which significantly overcounts user-visible crashes. + Stability.IOS.Experimental.Counts is not recorded on OOM crashes, so it does + not represent all user-visible crashes, but OOMs are so rare in Chrome for + iOS that Stability.IOS.Experimental.Counts is still a good proxy for + user-visible crashes. IOS.MetricKit.ForegroundExitData includes OOM crashes + (iOS 14 and higher) and can be used in conjunction with this metric. + </summary> +</histogram> + <histogram name="Stability.iOS.TabCountBefore{Event}" units="tabs" expires_after="2021-05-05"> <owner>djean@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/tab/histograms.xml b/tools/metrics/histograms/histograms_xml/tab/histograms.xml index 2629800..0f9dc55 100644 --- a/tools/metrics/histograms/histograms_xml/tab/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/tab/histograms.xml
@@ -1451,6 +1451,19 @@ </summary> </histogram> +<histogram name="Tabs.PersistedTabData.Storage.LoadTime.File" units="ms" + expires_after="2022-01-13"> + <owner>yusufo@chromium.org</owner> + <owner>nyquist@chromium.org</owner> + <owner>dtrainor@chromium.org</owner> + <owner>davidjm@chromium.org</owner> + <summary> + FilePersistedTabData storage stores serialized PersistedTabData (metadata + persisted across restarts) in a file. This metric records how long it took + to load the file in the event the file exists. + </summary> +</histogram> + <histogram name="Tabs.PersistedTabData.Storage.Restore.File" enum="BooleanSuccess" expires_after="2021-03-25"> <owner>yusufo@chromium.org</owner> @@ -1477,6 +1490,19 @@ </summary> </histogram> +<histogram name="Tabs.PersistedTabData.Storage.SaveTime.File" units="ms" + expires_after="2022-01-13"> + <owner>yusufo@chromium.org</owner> + <owner>nyquist@chromium.org</owner> + <owner>dtrainor@chromium.org</owner> + <owner>davidjm@chromium.org</owner> + <summary> + FilePersistedTabData storage stores serialized PersistedTabData (metadata + persisted across restarts) in a file. This metric records how long it took + to save the file in the event of a successful save. + </summary> +</histogram> + <histogram name="Tabs.SadTab.CrashCreated" units="tabs" expires_after="2021-06-01"> <owner>sonnyrao@chromium.org</owner> @@ -2235,6 +2261,26 @@ </summary> </histogram> +<histogram name="Tabs.TabState.LoadTime" units="ms" expires_after="2022-01-13"> + <owner>yusufo@chromium.org</owner> + <owner>nyquist@chromium.org</owner> + <owner>dtrainor@chromium.org</owner> + <owner>davidjm@chromium.org</owner> + <summary> + Time taken to load a TabState file in the event that it exists. + </summary> +</histogram> + +<histogram name="Tabs.TabState.SaveTime" units="ms" expires_after="2022-01-13"> + <owner>yusufo@chromium.org</owner> + <owner>nyquist@chromium.org</owner> + <owner>dtrainor@chromium.org</owner> + <owner>davidjm@chromium.org</owner> + <summary> + Time taken to save a TabState file in the event of a successful save. + </summary> +</histogram> + <histogram name="Tabs.Tasks.AverageTabGroupSize" units="tabs" expires_after="M85"> <owner>yusufo@chromium.org</owner>
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml index 90f3cdc..fed555ba 100644 --- a/tools/metrics/ukm/ukm.xml +++ b/tools/metrics/ukm/ukm.xml
@@ -10152,6 +10152,9 @@ </summary> </metric> <metric name="Navigation.PageEndReason2" enum="PageEndReason"> + <obsolete> + Deprecated Jan 2021 in favor of Navigation.PageEndReason3. + </obsolete> <summary> The |page_load_metrics::PageEndReason| for the main frame navigation of this page load. Replaced Navigation.PageEndReason at the end of May 2020 @@ -10160,6 +10163,14 @@ metric is recorded after the page became hidden. </summary> </metric> + <metric name="Navigation.PageEndReason3" enum="PageEndReason"> + <summary> + The |page_load_metrics::PageEndReason| for the main frame navigation of + this page load. Replaced Navigation.PageEndReason2 on January 2021 to get + rid of END_HIDDEN and use END_APP_BACKGROUND on cases where the metrics + are flushed and the app enters the background. + </summary> + </metric> <metric name="Navigation.PageTransition"> <summary> The |ui::PageTransition| for the main frame navigation of this page load.
diff --git a/tools/perf/cli_tools/pinboard/job_configs.json b/tools/perf/cli_tools/pinboard/job_configs.json index 53fb74f..3ee0866b 100644 --- a/tools/perf/cli_tools/pinboard/job_configs.json +++ b/tools/perf/cli_tools/pinboard/job_configs.json
@@ -1,15 +1,6 @@ [ { - "name": "Try job for v8: enable TurboProp - Android Go", - "target": "performance_test_suite", - "configuration": "android-go-perf", - "benchmark": "v8.browsing_mobile", - "story_tags": "emerging_market", - "patch": "https://chromium-review.googlesource.com/c/v8/v8/+/1784285", - "repository": "chromium" - }, - { - "name": "Try job for v8: enable TurboProp - Pixel 2", + "name": "Try job for v8: enable TurboProp as top-tier - Pixel 2", "target": "performance_test_suite", "configuration": "android-pixel2-perf", "benchmark": "v8.browsing_mobile", @@ -18,7 +9,7 @@ "repository": "chromium" }, { - "name": "Try job for v8: enable TurboProp - Linux", + "name": "Try job for v8: enable TurboProp as top-tier - Linux", "target": "performance_test_suite", "configuration": "linux-perf", "benchmark": "v8.browsing_desktop", @@ -27,12 +18,84 @@ "repository": "chromium" }, { - "name": "Try job for v8: enable TurboProp - Speedometer", + "name": "Try job for v8: enable TurboProp as mid-tier - Pixel 2", "target": "performance_test_suite", - "configuration": "android-go-perf", + "configuration": "android-pixel2-perf", + "benchmark": "v8.browsing_mobile", + "story_tags": "2019", + "patch": "https://chromium-review.googlesource.com/c/v8/v8/+/2632600", + "repository": "chromium" + }, + { + "name": "Try job for v8: enable TurboProp as mid-tier - Linux", + "target": "performance_test_suite", + "configuration": "linux-perf", + "benchmark": "v8.browsing_desktop", + "story_tags": "2019,2018", + "patch": "https://chromium-review.googlesource.com/c/v8/v8/+/2632600", + "repository": "chromium" + }, + { + "name": "Try job for v8: enable TurboProp as mid-tier - Win10", + "target": "performance_test_suite", + "configuration": "win-10-perf", + "benchmark": "v8.browsing_desktop", + "story_tags": "2019,2018", + "patch": "https://chromium-review.googlesource.com/c/v8/v8/+/2632600", + "repository": "chromium" + }, + { + "name": "Try job for v8: enable TurboProp as mid-tier - Speedometer - Pixel2", + "target": "performance_test_suite", + "configuration": "android-pixel2-perf", "benchmark": "speedometer2", "story": "Speedometer2", - "patch": "https://chromium-review.googlesource.com/c/v8/v8/+/1784285", + "patch": "https://chromium-review.googlesource.com/c/v8/v8/+/2632600", + "repository": "chromium" + }, + { + "name": "Try job for v8: enable TurboProp as mid-tier - Jetstream2 - Pixel2", + "target": "performance_test_suite", + "configuration": "android-pixel2-perf", + "benchmark": "jetstream2", + "story": "JetStream2", + "patch": "https://chromium-review.googlesource.com/c/v8/v8/+/2632600", + "repository": "chromium" + }, + { + "name": "Try job for v8: enable TurboProp as mid-tier - Speedometer - Linux", + "target": "performance_test_suite", + "configuration": "linux-perf", + "benchmark": "speedometer2", + "story": "Speedometer2", + "patch": "https://chromium-review.googlesource.com/c/v8/v8/+/2632600", + "repository": "chromium" + }, + { + "name": "Try job for v8: enable TurboProp as mid-tier - Jetstream2 - Linux", + "target": "performance_test_suite", + "configuration": "linux-perf", + "benchmark": "jetstream2", + "story": "JetStream2", + "patch": "https://chromium-review.googlesource.com/c/v8/v8/+/2632600", + "repository": "chromium" + }, + { + "name": "Try job for v8: enable TurboProp as mid-tier - Speedometer - Win10", + "target": "performance_test_suite", + "configuration": "win-10-perf", + "benchmark": "speedometer2", + "story": "Speedometer2", + "patch": "https://chromium-review.googlesource.com/c/v8/v8/+/2632600", + "repository": "chromium" + }, + { + "name": "Try job for v8: enable TurboProp as mid-tier - Jetstream2 - Win10", + "target": "performance_test_suite", + "configuration": "win-10-perf", + "benchmark": "jetstream2", + "story": "JetStream2", + "patch": "https://chromium-review.googlesource.com/c/v8/v8/+/2632600", "repository": "chromium" } ]
diff --git a/tools/perf/cli_tools/pinboard/pinboard.py b/tools/perf/cli_tools/pinboard/pinboard.py index a08cf0e..7475b04 100644 --- a/tools/perf/cli_tools/pinboard/pinboard.py +++ b/tools/perf/cli_tools/pinboard/pinboard.py
@@ -40,6 +40,7 @@ 'Optimize-Background:duration', 'Optimize:duration', 'RunsPerMinute', + 'Score', 'Total-Main-Thread:duration', 'Total:duration', 'V8-Only-Main-Thread:duration', @@ -104,6 +105,9 @@ # Speedometer2. 'Speedometer2', + + # JetStream2. + 'JetStream2', ])
diff --git a/tools/perf/page_sets/desktop_ui/js_utils.py b/tools/perf/page_sets/desktop_ui/js_utils.py new file mode 100644 index 0000000..3bc2a63 --- /dev/null +++ b/tools/perf/page_sets/desktop_ui/js_utils.py
@@ -0,0 +1,47 @@ +# Copyright 2021 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +MEASURE_FRAME_TIME_SCRIPT = ''' +window.__webui_startMeasuringFrameTime = function(name) { + if (window.__webui_onRequestAnimationFrame) { + window.__webui_stopMeasuringFrameTime(); + } + window.__webui_onRequestAnimationFrame = function() { + const now = performance.now(); + if (window.__webui_lastAnimationFrameTime) { + performance.mark( + `${name}:${now - window.__webui_lastAnimationFrameTime}:benchmark_value`); + } + window.__webui_lastAnimationFrameTime = now; + if (window.__webui_onRequestAnimationFrame) { + window.__webui_lastRequestId = requestAnimationFrame( + window.__webui_onRequestAnimationFrame); + } + } + window.__webui_lastRequestId = requestAnimationFrame( + window.__webui_onRequestAnimationFrame); +} + +window.__webui_stopMeasuringFrameTime = function() { + if (window.__webui_lastRequestId) { + cancelAnimationFrame(window.__webui_lastRequestId); + } + window.__webui_lastRequestId = null; + window.__webui_onRequestAnimationFrame = null; + window.__webui_lastAnimationFrameTime = null; +} +''' + +START_MEASURING_FRAME_TIME = ''' +window.__webui_startMeasuringFrameTime('%s') +''' + +STOP_MEASURING_FRAME_TIME = ''' +window.__webui_stopMeasuringFrameTime() +''' + +MEASURE_JS_MEMORY = ''' +performance.mark( + `%s:${performance.memory.usedJSHeapSize}:benchmark_value`); +'''
diff --git a/tools/perf/page_sets/desktop_ui/multitab_story.py b/tools/perf/page_sets/desktop_ui/multitab_story.py new file mode 100644 index 0000000..f2bcaf4 --- /dev/null +++ b/tools/perf/page_sets/desktop_ui/multitab_story.py
@@ -0,0 +1,49 @@ +# Copyright 2021 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging +import py_utils +from page_sets.desktop_ui.js_utils import MEASURE_FRAME_TIME_SCRIPT, \ + START_MEASURING_FRAME_TIME, STOP_MEASURING_FRAME_TIME +from telemetry.page import page + + +class MultiTabStory(page.Page): + """Base class for stories to open tabs with a list of urls""" + + def __init__(self, story_set, extra_browser_args=None): + super(MultiTabStory, self).__init__(url=self.URL, + name=self.NAME, + page_set=story_set, + extra_browser_args=extra_browser_args) + + def RunNavigateSteps(self, action_runner): + url_list = self.URL_LIST + tabs = action_runner.tab.browser.tabs + if len(url_list) > 0: + tabs[0].Navigate('https://' + url_list[0]) + for url in url_list[1:]: + new_tab = tabs.New() + new_tab.Navigate('https://' + url) + if self.WAIT_FOR_NETWORK_QUIESCENCE: + for i, url in enumerate(url_list): + try: + tabs[i].action_runner.WaitForNetworkQuiescence() + except py_utils.TimeoutException: + logging.warning('WaitForNetworkQuiescence() timeout, url[%d]: %s' % + (i, url)) + + def StartMeasuringFrameTime(self, action_runner, name): + action_runner.ExecuteJavaScript(MEASURE_FRAME_TIME_SCRIPT) + action_runner.ExecuteJavaScript(START_MEASURING_FRAME_TIME % name) + + def StopMeasuringFrameTime(self, action_runner): + action_runner.ExecuteJavaScript(STOP_MEASURING_FRAME_TIME) + + def WillStartTracing(self, chrome_trace_config): + chrome_trace_config.category_filter.AddIncludedCategory('browser') + chrome_trace_config.category_filter.AddIncludedCategory('blink.user_timing') + + def GetExtraTracingMetrics(self): + return ['webuiMetric']
diff --git a/tools/perf/page_sets/desktop_ui/tab_search_story.py b/tools/perf/page_sets/desktop_ui/tab_search_story.py index 0f540ef..9d898f1 100644 --- a/tools/perf/page_sets/desktop_ui/tab_search_story.py +++ b/tools/perf/page_sets/desktop_ui/tab_search_story.py
@@ -2,64 +2,12 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import logging import py_utils -from telemetry.page import page +from page_sets.desktop_ui.js_utils import MEASURE_JS_MEMORY +from page_sets.desktop_ui.multitab_story import MultiTabStory +from page_sets.desktop_ui.url_list import TOP_URL from telemetry.internal.actions.action_runner import ActionRunner -TOP_URL = [ - 'google.com', - 'youtube.com', - 'amazon.com', - 'facebook.com', - 'zoom.us', - 'yahoo.com', - 'reddit.com', - 'wikipedia.org', - 'myshopify.com', - 'ebay.com', - 'instructure.com', - 'office.com', - 'netflix.com', - 'bing.com', - 'live.com', - 'microsoft.com', - 'espn.com', - 'www.indeed.com', - 'blogger.com', - 'instagram.com', - 'mozilla.org', - 'cnn.com', - 'apple.com', - 'zillow.com', - 'etsy.com', - 'chase.com', - 'nytimes.com', - 'linkedin.com', - 'dropbox.com', - 'adobe.com', - 'okta.com', - 'craigslist.org', - 'twitter.com', - 'walmart.com', - 'aliexpress.com', - 'github.com', - 'vimeo.com', - 'quizlet.com', - 'cnbc.com', - 'imgur.com', - 'wellsfargo.com', - 'hulu.com', - 'imdb.com', - 'salesforce.com', - 'homedepot.com', - 'indeed.com', - 'foxnews.com', - 'msn.com', - 'spotify.com', - 'whatsapp.com', -] - TAB_SEARCH_BENCHMARK_UMA = [ 'Tabs.TabSearch.CloseAction', 'Tabs.TabSearch.NumTabsClosedPerInstance', @@ -80,31 +28,9 @@ TAB_SEARCH_URL = 'chrome://tab-search/' -class TabSearchStory(page.Page): +class TabSearchStory(MultiTabStory): """Base class for tab search stories""" - def __init__(self, story_set, extra_browser_args=None): - super(TabSearchStory, self).__init__(url=self.URL, - name=self.NAME, - page_set=story_set, - extra_browser_args=extra_browser_args) - - def RunNavigateSteps(self, action_runner): - url_list = self.URL_LIST - tabs = action_runner.tab.browser.tabs - if len(url_list) > 0: - tabs[0].Navigate('https://' + url_list[0]) - for url in url_list[1:]: - new_tab = tabs.New() - new_tab.Navigate('https://' + url) - if self.WAIT_FOR_NETWORK_QUIESCENCE: - for i, url in enumerate(url_list): - try: - tabs[i].action_runner.WaitForNetworkQuiescence() - except py_utils.TimeoutException: - logging.warning('WaitForNetworkQuiescence() timeout, url[%d]: %s' % - (i, url)) - def RunPageInteractions(self, action_runner): tabs = action_runner.tab.browser.tabs @@ -192,20 +118,9 @@ self.StopMeasuringFrameTime(action_runner) action_runner.Wait(1) - def StartMeasuringFrameTime(self, action_runner, name): - action_runner.ExecuteJavaScript(MEASURE_FRAME_TIME_SCRIPT) - action_runner.ExecuteJavaScript(START_MEASURING_FRAME_TIME % name) - - def StopMeasuringFrameTime(self, action_runner): - action_runner.ExecuteJavaScript(STOP_MEASURING_FRAME_TIME) - def WillStartTracing(self, chrome_trace_config): + super(TabSearchStory, self).WillStartTracing(chrome_trace_config) chrome_trace_config.EnableUMAHistograms(*TAB_SEARCH_BENCHMARK_UMA) - chrome_trace_config.category_filter.AddIncludedCategory('browser') - chrome_trace_config.category_filter.AddIncludedCategory('blink.user_timing') - - def GetExtraTracingMetrics(self): - return ['webuiMetric'] class TabSearchStoryTop10(TabSearchStory): @@ -330,47 +245,3 @@ SCROLL_ELEMENT_FUNCTION = ''' document.querySelector('tab-search-app').shadowRoot.getElementById('tabsList') ''' - -MEASURE_FRAME_TIME_SCRIPT = ''' -window.__webui_startMeasuringFrameTime = function(name) { - if (window.__webui_onRequestAnimationFrame) { - window.__webui_stopMeasuringFrameTime(); - } - window.__webui_onRequestAnimationFrame = function() { - const now = performance.now(); - if (window.__webui_lastAnimationFrameTime) { - performance.mark( - `${name}:${now - window.__webui_lastAnimationFrameTime}:benchmark_value`); - } - window.__webui_lastAnimationFrameTime = now; - if (window.__webui_onRequestAnimationFrame) { - window.__webui_lastRequestId = requestAnimationFrame( - window.__webui_onRequestAnimationFrame); - } - } - window.__webui_lastRequestId = requestAnimationFrame( - window.__webui_onRequestAnimationFrame); -} - -window.__webui_stopMeasuringFrameTime = function() { - if (window.__webui_lastRequestId) { - cancelAnimationFrame(window.__webui_lastRequestId); - } - window.__webui_lastRequestId = null; - window.__webui_onRequestAnimationFrame = null; - window.__webui_lastAnimationFrameTime = null; -} -''' - -START_MEASURING_FRAME_TIME = ''' -window.__webui_startMeasuringFrameTime('%s') -''' - -STOP_MEASURING_FRAME_TIME = ''' -window.__webui_stopMeasuringFrameTime() -''' - -MEASURE_JS_MEMORY = ''' -performance.mark( - `%s:${performance.memory.usedJSHeapSize}:benchmark_value`); -'''
diff --git a/tools/perf/page_sets/desktop_ui/url_list.py b/tools/perf/page_sets/desktop_ui/url_list.py new file mode 100644 index 0000000..bd1b2c6 --- /dev/null +++ b/tools/perf/page_sets/desktop_ui/url_list.py
@@ -0,0 +1,56 @@ +# Copyright 2021 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +TOP_URL = [ + 'google.com', + 'youtube.com', + 'amazon.com', + 'facebook.com', + 'zoom.us', + 'yahoo.com', + 'reddit.com', + 'wikipedia.org', + 'myshopify.com', + 'ebay.com', + 'instructure.com', + 'office.com', + 'netflix.com', + 'bing.com', + 'live.com', + 'microsoft.com', + 'espn.com', + 'www.indeed.com', + 'blogger.com', + 'instagram.com', + 'mozilla.org', + 'cnn.com', + 'apple.com', + 'zillow.com', + 'etsy.com', + 'chase.com', + 'nytimes.com', + 'linkedin.com', + 'dropbox.com', + 'adobe.com', + 'okta.com', + 'craigslist.org', + 'twitter.com', + 'walmart.com', + 'aliexpress.com', + 'github.com', + 'vimeo.com', + 'quizlet.com', + 'cnbc.com', + 'imgur.com', + 'wellsfargo.com', + 'hulu.com', + 'imdb.com', + 'salesforce.com', + 'homedepot.com', + 'indeed.com', + 'foxnews.com', + 'msn.com', + 'spotify.com', + 'whatsapp.com', +]
diff --git a/tools/privacy_budget/DIR_METADATA b/tools/privacy_budget/DIR_METADATA index 108597dc..fe6ef77 100644 --- a/tools/privacy_budget/DIR_METADATA +++ b/tools/privacy_budget/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { - component: "Privacy>Fingerprinting" +monorail: { + component: "Privacy>Fingerprinting" } -team_email: "privacy-sandbox-dev@chromium.org" +team_email: "privacy-sandbox-dev@chromium.org"
diff --git a/ui/DIR_METADATA b/ui/DIR_METADATA index 00efdd96..f31293e3 100644 --- a/ui/DIR_METADATA +++ b/ui/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI" }
diff --git a/ui/accelerated_widget_mac/DIR_METADATA b/ui/accelerated_widget_mac/DIR_METADATA index 0dfd84d..d00c923 100644 --- a/ui/accelerated_widget_mac/DIR_METADATA +++ b/ui/accelerated_widget_mac/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>PlatformIntegration" }
diff --git a/ui/accessibility/DIR_METADATA b/ui/accessibility/DIR_METADATA index 87ea0bd6..fe89fde6 100644 --- a/ui/accessibility/DIR_METADATA +++ b/ui/accessibility/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Internals>Accessibility" } team_email: "chromium-accessibility@chromium.org"
diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn index 65c930f4..8a860687 100644 --- a/ui/android/BUILD.gn +++ b/ui/android/BUILD.gn
@@ -369,6 +369,7 @@ "//third_party/android_deps:androidx_core_core_java", "//third_party/android_deps:androidx_vectordrawable_vectordrawable_animated_java", "//ui/base/cursor/mojom:cursor_type_java", + "//url:gurl_java", ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] srcjar_deps = [ ":java_enums_srcjar" ] @@ -482,6 +483,8 @@ "//third_party/android_deps:androidx_test_runner_java", "//third_party/hamcrest:hamcrest_java", "//third_party/mockito:mockito_java", + "//url:gurl_java", + "//url:gurl_junit_test_support", ] android_manifest = "junit/AndroidManifest.xml" }
diff --git a/ui/android/java/src/org/chromium/ui/base/Clipboard.java b/ui/android/java/src/org/chromium/ui/base/Clipboard.java index db32fc9a..3fde69b 100644 --- a/ui/android/java/src/org/chromium/ui/base/Clipboard.java +++ b/ui/android/java/src/org/chromium/ui/base/Clipboard.java
@@ -38,6 +38,7 @@ import org.chromium.base.task.AsyncTask; import org.chromium.ui.R; import org.chromium.ui.widget.Toast; +import org.chromium.url.GURL; import java.io.IOException; import java.util.List; @@ -379,8 +380,8 @@ * Copy the specified URL to the clipboard and show a toast indicating the action occurred. * @param url The URL to copy to the clipboard. */ - public void copyUrlToClipboard(String url) { - ClipData clip = ClipData.newPlainText("url", url); + public void copyUrlToClipboard(GURL url) { + ClipData clip = ClipData.newPlainText("url", url.getSpec()); if (setPrimaryClipNoException(clip)) { Toast.makeText(mContext, R.string.link_copied, Toast.LENGTH_SHORT).show(); }
diff --git a/ui/android/junit/src/org/chromium/ui/base/ClipboardTest.java b/ui/android/junit/src/org/chromium/ui/base/ClipboardTest.java index 22e430bd..19c2788 100644 --- a/ui/android/junit/src/org/chromium/ui/base/ClipboardTest.java +++ b/ui/android/junit/src/org/chromium/ui/base/ClipboardTest.java
@@ -28,6 +28,7 @@ import org.chromium.base.StreamUtil; import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.util.UrlUtils; +import org.chromium.url.JUnitTestGURLs; import java.io.File; import java.io.FileOutputStream; @@ -111,8 +112,8 @@ ClipboardManager clipboardManager = Mockito.mock(ClipboardManager.class); clipboard.overrideClipboardManagerForTesting(clipboardManager); - String url = "https://google.com"; - clipboard.copyUrlToClipboard(url); + String url = JUnitTestGURLs.SEARCH_URL; + clipboard.copyUrlToClipboard(JUnitTestGURLs.getGURL(url)); ArgumentCaptor<ClipData> clipCaptor = ArgumentCaptor.forClass(ClipData.class); verify(clipboardManager).setPrimaryClip(clipCaptor.capture()); @@ -127,8 +128,8 @@ clipboard.overrideClipboardManagerForTesting(clipboardManager); doThrow(SecurityException.class).when(clipboardManager).setPrimaryClip(any(ClipData.class)); - String url = "https://google.com"; - clipboard.copyUrlToClipboard(url); + String url = JUnitTestGURLs.SEARCH_URL; + clipboard.copyUrlToClipboard(JUnitTestGURLs.getGURL(url)); ArgumentCaptor<ClipData> clipCaptor = ArgumentCaptor.forClass(ClipData.class); verify(clipboardManager).setPrimaryClip(clipCaptor.capture());
diff --git a/ui/aura/DIR_METADATA b/ui/aura/DIR_METADATA index 16db907..b6a6331 100644 --- a/ui/aura/DIR_METADATA +++ b/ui/aura/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Aura" }
diff --git a/ui/aura/gestures/DIR_METADATA b/ui/aura/gestures/DIR_METADATA index 1d3ebd5..0164239 100644 --- a/ui/aura/gestures/DIR_METADATA +++ b/ui/aura/gestures/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "UI>Input" } team_email: "input-dev@chromium.org"
diff --git a/ui/aura_extra/DIR_METADATA b/ui/aura_extra/DIR_METADATA index 16db907..b6a6331 100644 --- a/ui/aura_extra/DIR_METADATA +++ b/ui/aura_extra/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Aura" }
diff --git a/ui/base/x/selection_requestor.cc b/ui/base/x/selection_requestor.cc index 9e591ac6..e3c83229 100644 --- a/ui/base/x/selection_requestor.cc +++ b/ui/base/x/selection_requestor.cc
@@ -7,7 +7,6 @@ #include <algorithm> #include "base/memory/ref_counted_memory.h" -#include "base/run_loop.h" #include "ui/base/x/selection_owner.h" #include "ui/base/x/selection_utils.h" #include "ui/base/x/x11_util.h" @@ -28,7 +27,7 @@ const int KSelectionRequestorTimerPeriodMs = 100; // The amount of time to wait for a request to complete before aborting it. -const int kRequestTimeoutMs = 10000; +const int kRequestTimeoutMs = 1000; static_assert(KSelectionRequestorTimerPeriodMs <= kRequestTimeoutMs, "timer period must be <= request timeout"); @@ -237,29 +236,30 @@ } void SelectionRequestor::BlockTillSelectionNotifyForRequest(Request* request) { - if (X11EventSource::HasInstance()) { - if (!abort_timer_.IsRunning()) { - abort_timer_.Start( - FROM_HERE, - base::TimeDelta::FromMilliseconds(KSelectionRequestorTimerPeriodMs), - this, &SelectionRequestor::AbortStaleRequests); + auto* connection = x11::Connection::Get(); + auto& events = connection->events(); + size_t i = 0; + while (!request->completed && request->timeout > base::TimeTicks::Now()) { + connection->Flush(); + connection->ReadResponses(); + size_t events_size = events.size(); + for (; i < events_size; ++i) { + auto& event = events[i]; + if (auto* notify = event.As<x11::SelectionNotifyEvent>()) { + if (notify->requestor == x_window_) { + OnSelectionNotify(*notify); + event = x11::Event(); + } + } else if (auto* prop = event.As<x11::PropertyNotifyEvent>()) { + if (CanDispatchPropertyEvent(*prop)) { + OnPropertyEvent(*prop); + event = x11::Event(); + } + } } - - base::RunLoop run_loop(base::RunLoop::Type::kNestableTasksAllowed); - request->quit_closure = run_loop.QuitClosure(); - run_loop.Run(); - - // We cannot put logic to process the next request here because the RunLoop - // might be nested. For instance, request 'B' may start a RunLoop while the - // RunLoop for request 'A' is running. It is not possible to end the RunLoop - // for request 'A' without first ending the RunLoop for request 'B'. - } else { - // This occurs if PerformBlockingConvertSelection() is called during - // shutdown and the X11EventSource has already been destroyed. - auto* conn = x11::Connection::Get(); - while (!request->completed && request->timeout > base::TimeTicks::Now()) - conn->DispatchAll(); + DCHECK_EQ(events_size, events.size()); } + AbortStaleRequests(); } SelectionRequestor::Request* SelectionRequestor::GetCurrentRequest() {
diff --git a/ui/base/x/selection_requestor_unittest.cc b/ui/base/x/selection_requestor_unittest.cc index 7cf2c0a..77deaaa 100644 --- a/ui/base/x/selection_requestor_unittest.cc +++ b/ui/base/x/selection_requestor_unittest.cc
@@ -101,7 +101,8 @@ // Test that SelectionRequestor correctly handles receiving a request while it // is processing another request. -TEST_F(SelectionRequestorTest, NestedRequests) { +// TODO(https://crbug.com/443355): Reenable once clipboard interface is async. +TEST_F(SelectionRequestorTest, DISABLED_NestedRequests) { // Assume that |selection| will have no owner. If there is an owner, the owner // will set the property passed into the XConvertSelection() request which is // undesirable.
diff --git a/ui/base/x/x11_util.cc b/ui/base/x/x11_util.cc index f5ee8335..9248593 100644 --- a/ui/base/x/x11_util.cc +++ b/ui/base/x/x11_util.cc
@@ -305,16 +305,14 @@ conn->ReadResponses(); if (motion) { - for (auto it = conn->events().begin(); it != conn->events().end();) { - const auto& next_event = *it; + for (auto& next_event : conn->events()) { // Discard all but the most recent motion event that targets the same // window with unchanged state. const auto* next_motion = next_event.As<x11::MotionNotifyEvent>(); if (next_motion && next_motion->event == motion->event && next_motion->child == motion->child && next_motion->state == motion->state) { - *last_event = std::move(*it); - it = conn->events().erase(it); + *last_event = std::move(next_event); } else { break; } @@ -324,8 +322,8 @@ device->opcode == x11::Input::DeviceEvent::TouchUpdate); auto* ddmx11 = ui::DeviceDataManagerX11::GetInstance(); - for (auto it = conn->events().begin(); it != conn->events().end();) { - auto* next_device = it->As<x11::Input::DeviceEvent>(); + for (auto& event : conn->events()) { + auto* next_device = event.As<x11::Input::DeviceEvent>(); if (!next_device) break; @@ -336,13 +334,13 @@ // always be at least one pending. if (!ui::TouchFactory::GetInstance()->ShouldProcessDeviceEvent( *next_device)) { - it = conn->events().erase(it); + event = x11::Event(); continue; } if (next_device->opcode == device->opcode && - !ddmx11->IsCMTGestureEvent(*it) && - ddmx11->GetScrollClassEventDetail(*it) == SCROLL_TYPE_NO_SCROLL) { + !ddmx11->IsCMTGestureEvent(event) && + ddmx11->GetScrollClassEventDetail(event) == SCROLL_TYPE_NO_SCROLL) { // Confirm that the motion event is targeted at the same window // and that no buttons or modifiers have changed. if (device->event == next_device->event && @@ -353,12 +351,12 @@ device->mods.latched == next_device->mods.latched && device->mods.locked == next_device->mods.locked && device->mods.effective == next_device->mods.effective) { - *last_event = std::move(*it); - it = conn->events().erase(it); + *last_event = std::move(event); num_coalesced++; continue; } } + break; } }
diff --git a/ui/chromeos/DIR_METADATA b/ui/chromeos/DIR_METADATA index 00efdd96..f31293e3 100644 --- a/ui/chromeos/DIR_METADATA +++ b/ui/chromeos/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI" }
diff --git a/ui/chromeos/colors/DIR_METADATA b/ui/chromeos/colors/DIR_METADATA index 00efdd96..f31293e3 100644 --- a/ui/chromeos/colors/DIR_METADATA +++ b/ui/chromeos/colors/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI" }
diff --git a/ui/chromeos/translations/ui_chromeos_strings_te.xtb b/ui/chromeos/translations/ui_chromeos_strings_te.xtb index 7e04a29..907772d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_te.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_te.xtb
@@ -39,7 +39,7 @@ <translation id="1383876407941801731">సెర్చ్</translation> <translation id="1395262318152388157">సీక్ స్లయిడర్</translation> <translation id="1404323374378969387">నార్వేజియన్</translation> -<translation id="1430915738399379752">ముద్రించు</translation> +<translation id="1430915738399379752">ప్రింట్</translation> <translation id="1435838927755162558">Parallels Desktopతో ఫోల్డర్ను షేర్ చేయండి</translation> <translation id="1467432559032391204">ఎడమ</translation> <translation id="1471718551822868769">స్లోవాక్</translation>
diff --git a/ui/color/DIR_METADATA b/ui/color/DIR_METADATA index 00efdd96..f31293e3 100644 --- a/ui/color/DIR_METADATA +++ b/ui/color/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI" }
diff --git a/ui/compositor/DIR_METADATA b/ui/compositor/DIR_METADATA index f9ec3c1..aef9ec1a 100644 --- a/ui/compositor/DIR_METADATA +++ b/ui/compositor/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Internals>Compositing" } team_email: "graphics-dev@chromium.org"
diff --git a/ui/compositor_extra/DIR_METADATA b/ui/compositor_extra/DIR_METADATA index 129661a6..c311a55 100644 --- a/ui/compositor_extra/DIR_METADATA +++ b/ui/compositor_extra/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>Compositing" }
diff --git a/ui/content_accelerators/DIR_METADATA b/ui/content_accelerators/DIR_METADATA index 8b4e80d8..22ea90db 100644 --- a/ui/content_accelerators/DIR_METADATA +++ b/ui/content_accelerators/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>Input" }
diff --git a/ui/display/DIR_METADATA b/ui/display/DIR_METADATA index 1f7273c..bfbb363d 100644 --- a/ui/display/DIR_METADATA +++ b/ui/display/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Systems>Display" }
diff --git a/ui/display/util/DIR_METADATA b/ui/display/util/DIR_METADATA index 08195d2..0ff67f3 100644 --- a/ui/display/util/DIR_METADATA +++ b/ui/display/util/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "OS>Kernel>Graphics" }
diff --git a/ui/events/platform/x11/x11_event_source.cc b/ui/events/platform/x11/x11_event_source.cc index ad6b27e..63f5fef 100644 --- a/ui/events/platform/x11/x11_event_source.cc +++ b/ui/events/platform/x11/x11_event_source.cc
@@ -201,8 +201,9 @@ }; auto& events = connection_->events(); - events.erase(std::remove_if(events.begin(), events.end(), pred), - events.end()); + auto it = std::find_if(events.begin(), events.end(), pred); + if (it != events.end()) + *it = x11::Event(); return time; }
diff --git a/ui/file_manager/DIR_METADATA b/ui/file_manager/DIR_METADATA index 07ce693..5345fc2 100644 --- a/ui/file_manager/DIR_METADATA +++ b/ui/file_manager/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Platform>Apps>FileManager" }
diff --git a/ui/gfx/font_fallback_win.cc b/ui/gfx/font_fallback_win.cc index d94a4fce..0f7253b 100644 --- a/ui/gfx/font_fallback_win.cc +++ b/ui/gfx/font_fallback_win.cc
@@ -9,7 +9,6 @@ #include "base/macros.h" #include "base/memory/singleton.h" -#include "base/metrics/histogram_macros.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -142,19 +141,14 @@ const std::vector<Font>* CachedFontLinkSettings::GetLinkedFonts( const Font& font) { - SCOPED_UMA_HISTOGRAM_LONG_TIMER("FontFallback.GetLinkedFonts.Timing"); const std::string& font_name = font.GetFontName(); std::map<std::string, std::vector<Font> >::const_iterator it = cached_linked_fonts_.find(font_name); if (it != cached_linked_fonts_.end()) return &it->second; - SCOPED_UMA_HISTOGRAM_LONG_TIMER( - "FontFallback.GetLinkedFonts.CacheMissTiming"); std::vector<Font>* linked_fonts = &cached_linked_fonts_[font_name]; QueryLinkedFontsFromRegistry(font, &cached_system_fonts_, linked_fonts); - UMA_HISTOGRAM_COUNTS_100("FontFallback.GetLinkedFonts.FontCount", - linked_fonts->size()); return linked_fonts; }
diff --git a/ui/gfx/x/connection.cc b/ui/gfx/x/connection.cc index 787dba9..1cc78dfe 100644 --- a/ui/gfx/x/connection.cc +++ b/ui/gfx/x/connection.cc
@@ -287,6 +287,15 @@ return true; } +bool Connection::HasNextEvent() { + while (!events_.empty()) { + if (events_.front().Initialized()) + return true; + events_.pop_front(); + } + return false; +} + int Connection::GetFd() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return Ready() ? xcb_get_file_descriptor(XcbConnection()) : -1; @@ -355,7 +364,7 @@ Event Connection::WaitForNextEvent() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (!events_.empty()) { + if (HasNextEvent()) { Event event = std::move(events_.front()); events_.pop_front(); return event; @@ -369,7 +378,7 @@ bool Connection::HasPendingResponses() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return !events_.empty() || HasNextResponse(); + return HasNextEvent() || HasNextResponse(); } const Connection::VisualInfo* Connection::GetVisualInfoFromId( @@ -405,7 +414,7 @@ bool Connection::Dispatch() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (HasNextResponse() && !events_.empty()) { + if (HasNextResponse() && HasNextEvent()) { auto next_response_sequence = first_request_id_; auto next_event_sequence = events_.front().sequence(); @@ -418,7 +427,7 @@ ProcessNextEvent(); } else if (HasNextResponse()) { ProcessNextResponse(); - } else if (!events_.empty()) { + } else if (HasNextEvent()) { ProcessNextEvent(); } else { return false; @@ -488,7 +497,7 @@ void Connection::ProcessNextEvent() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK(!events_.empty()); + DCHECK(HasNextEvent()); Event event = std::move(events_.front()); events_.pop_front();
diff --git a/ui/gfx/x/connection.h b/ui/gfx/x/connection.h index 83e3a1cb..3c0c2c9 100644 --- a/ui/gfx/x/connection.h +++ b/ui/gfx/x/connection.h
@@ -5,9 +5,6 @@ #ifndef UI_GFX_X_CONNECTION_H_ #define UI_GFX_X_CONNECTION_H_ -#include <list> -#include <queue> - #include "base/callback.h" #include "base/component_export.h" #include "base/containers/circular_deque.h" @@ -183,8 +180,10 @@ uint32_t KeycodeToKeysym(KeyCode keycode, uint32_t modifiers) const; - // Access the event buffer. Clients can add, delete, or modify events. - std::list<Event>& events() { + // Access the event buffer. Clients may modify the queue, including + // "deleting" events by setting events[i] = x11::Event(), which will + // guarantee all calls to x11::Event::As() will return nullptr. + base::circular_deque<Event>& events() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return events_; } @@ -268,6 +267,8 @@ bool HasNextResponse(); + bool HasNextEvent(); + // Creates a new Request and adds it to the end of the queue. // |request_name_for_tracing| must be valid until the response is // dispatched; currently the string values are only stored in .rodata, so @@ -312,7 +313,7 @@ std::unique_ptr<KeyboardState> keyboard_state_; - std::list<Event> events_; + base::circular_deque<Event> events_; base::ObserverList<EventObserver>::Unchecked event_observers_;
diff --git a/ui/gfx/x/event.h b/ui/gfx/x/event.h index e0b5a221..ed4f9b0 100644 --- a/ui/gfx/x/event.h +++ b/ui/gfx/x/event.h
@@ -70,6 +70,8 @@ *window_ = window; } + bool Initialized() const { return deleter_; } + private: friend void ReadEvent(Event* event, Connection* connection,
diff --git a/ui/gl/DIR_METADATA b/ui/gl/DIR_METADATA index 1d611dd..e353adf 100644 --- a/ui/gl/DIR_METADATA +++ b/ui/gl/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Internals>GPU>Internals" } team_email: "graphics-dev@chromium.org"
diff --git a/ui/gtk/DIR_METADATA b/ui/gtk/DIR_METADATA index 856bdfc..2cead19b 100644 --- a/ui/gtk/DIR_METADATA +++ b/ui/gtk/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>Themes" }
diff --git a/ui/gtk/printing/DIR_METADATA b/ui/gtk/printing/DIR_METADATA index c8f8627..ee7161a6 100644 --- a/ui/gtk/printing/DIR_METADATA +++ b/ui/gtk/printing/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>Printing" }
diff --git a/ui/latency/DIR_METADATA b/ui/latency/DIR_METADATA index 0c308dc..e80036e 100644 --- a/ui/latency/DIR_METADATA +++ b/ui/latency/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Speed>Metrics" }
diff --git a/ui/login/DIR_METADATA b/ui/login/DIR_METADATA index aba3b5d..a4805830 100644 --- a/ui/login/DIR_METADATA +++ b/ui/login/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Shell>OOBE" }
diff --git a/ui/message_center/DIR_METADATA b/ui/message_center/DIR_METADATA index 5a94e2a..b3b636b3 100644 --- a/ui/message_center/DIR_METADATA +++ b/ui/message_center/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "UI>Notifications" } team_email: "platform-capabilities@chromium.org"
diff --git a/ui/native_theme/DIR_METADATA b/ui/native_theme/DIR_METADATA index 00efdd96..f31293e3 100644 --- a/ui/native_theme/DIR_METADATA +++ b/ui/native_theme/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI" }
diff --git a/ui/ozone/DIR_METADATA b/ui/ozone/DIR_METADATA index 0ffcfa74..826e2a2 100644 --- a/ui/ozone/DIR_METADATA +++ b/ui/ozone/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "Internals>Ozone" } team_email: "ozone-dev@chromium.org"
diff --git a/ui/ozone/platform/cast/DIR_METADATA b/ui/ozone/platform/cast/DIR_METADATA index 4ca5b710..774785b8 100644 --- a/ui/ozone/platform/cast/DIR_METADATA +++ b/ui/ozone/platform/cast/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Chromecast" }
diff --git a/ui/ozone/platform/drm/DIR_METADATA b/ui/ozone/platform/drm/DIR_METADATA index a3b30f4..91a288c 100644 --- a/ui/ozone/platform/drm/DIR_METADATA +++ b/ui/ozone/platform/drm/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "OS>Systems>Display" }
diff --git a/ui/platform_window/DIR_METADATA b/ui/platform_window/DIR_METADATA index 0dfd84d..d00c923 100644 --- a/ui/platform_window/DIR_METADATA +++ b/ui/platform_window/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>PlatformIntegration" }
diff --git a/ui/resources/DIR_METADATA b/ui/resources/DIR_METADATA index 00efdd96..f31293e3 100644 --- a/ui/resources/DIR_METADATA +++ b/ui/resources/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI" }
diff --git a/ui/shell_dialogs/DIR_METADATA b/ui/shell_dialogs/DIR_METADATA index 0dfd84d..d00c923 100644 --- a/ui/shell_dialogs/DIR_METADATA +++ b/ui/shell_dialogs/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>PlatformIntegration" }
diff --git a/ui/snapshot/DIR_METADATA b/ui/snapshot/DIR_METADATA index 9f685b1..d366dc7 100644 --- a/ui/snapshot/DIR_METADATA +++ b/ui/snapshot/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals" }
diff --git a/ui/strings/DIR_METADATA b/ui/strings/DIR_METADATA index 90bec8a..d412a59 100644 --- a/ui/strings/DIR_METADATA +++ b/ui/strings/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Internationalization" }
diff --git a/ui/surface/DIR_METADATA b/ui/surface/DIR_METADATA index 00efdd96..f31293e3 100644 --- a/ui/surface/DIR_METADATA +++ b/ui/surface/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI" }
diff --git a/ui/touch_selection/DIR_METADATA b/ui/touch_selection/DIR_METADATA index 1352dad..64c023d 100644 --- a/ui/touch_selection/DIR_METADATA +++ b/ui/touch_selection/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "UI>Browser>Selection" } team_email: "input-dev@chromium.org"
diff --git a/ui/views/DIR_METADATA b/ui/views/DIR_METADATA index 98394a3a5..d1a6630 100644 --- a/ui/views/DIR_METADATA +++ b/ui/views/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>Views" }
diff --git a/ui/views/accessibility/DIR_METADATA b/ui/views/accessibility/DIR_METADATA index 9c812fa..6849a4f8 100644 --- a/ui/views/accessibility/DIR_METADATA +++ b/ui/views/accessibility/DIR_METADATA
@@ -1,4 +1,4 @@ -monorail: { +monorail: { component: "UI>Accessibility" } team_email: "chromium-accessibility@chromium.org"
diff --git a/ui/views/bubble/DIR_METADATA b/ui/views/bubble/DIR_METADATA index 7fbb24e..960749c 100644 --- a/ui/views/bubble/DIR_METADATA +++ b/ui/views/bubble/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI>Browser>Bubbles" }
diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc index 15d30255..3dfef5f 100644 --- a/ui/views/controls/menu/menu_controller.cc +++ b/ui/views/controls/menu/menu_controller.cc
@@ -2481,14 +2481,33 @@ item->set_actual_menu_position(MenuPosition::kBelowBounds); } } else if (state_.anchor == MenuAnchorPosition::kBubbleBelow) { - y = y_for_menu_below; - item->set_actual_menu_position(MenuPosition::kBelowBounds); - if (y + menu_size.height() > monitor_bounds.bottom()) { + // Respect the previous MenuPosition. The menu contents could change + // while the menu is shown, the menu position should not change. + const bool able_to_show_menu_below = + (y_for_menu_below + menu_size.height() <= monitor_bounds.bottom()); + const bool able_to_show_menu_above = + y_for_menu_above >= monitor_bounds.y(); + if (item->actual_menu_position() == MenuPosition::kBelowBounds && + able_to_show_menu_below) { + y = y_for_menu_below; + } else if (item->actual_menu_position() == MenuPosition::kAboveBounds && + able_to_show_menu_above) { + y = y_for_menu_above; + } else if (able_to_show_menu_below) { + y = y_for_menu_below; + item->set_actual_menu_position(MenuPosition::kBelowBounds); + } else if (able_to_show_menu_above) { + // No room below, but there is room above. Show above the anchor. + // Align the bottom of the menu with the bottom of the anchor. y = y_for_menu_above; item->set_actual_menu_position(MenuPosition::kAboveBounds); + } else { + // No room above or below. Show as low as possible. Align the bottom + // of the menu with the bottom of the screen. + y = monitor_bounds.bottom() - menu_size.height(); + item->set_actual_menu_position(MenuPosition::kBestFit); } } - } else if (state_.anchor == MenuAnchorPosition::kBubbleLeft || state_.anchor == MenuAnchorPosition::kBubbleRight) { if (state_.anchor == MenuAnchorPosition::kBubbleLeft) {
diff --git a/ui/views/controls/menu/menu_controller_unittest.cc b/ui/views/controls/menu/menu_controller_unittest.cc index 1869e85..caa8e35 100644 --- a/ui/views/controls/menu/menu_controller_unittest.cc +++ b/ui/views/controls/menu/menu_controller_unittest.cc
@@ -1063,6 +1063,70 @@ } } +// Verifies that the context menu bubble position, MenuPosition::kBubbleBelow, +// does not shift as items are removed. The menu position will shift it items +// are added and the menu no longer fits in its previous position. +TEST_F(MenuControllerTest, VerifyMenuBubbleBelowPositionAfterSizeChanges) { + constexpr gfx::Rect kMonitorBounds(0, 0, 500, 500); + constexpr gfx::Size kMenuSize(100, 200); + const gfx::Insets border_and_shadow_insets = + BubbleBorder::GetBorderAndShadowInsets( + MenuConfig::instance().touchable_menu_shadow_elevation); + + // Calculate the suitable anchor point to ensure that if the menu shows below + // the anchor point, the bottom of the menu should be one pixel off the + // bottom of the display. It means that there is insufficient space for the + // menu below the anchor. + const gfx::Point anchor_point(kMonitorBounds.width() / 2, + kMonitorBounds.bottom() + 1 - + kMenuSize.height() + + border_and_shadow_insets.top()); + + MenuBoundsOptions options; + options.menu_anchor = MenuAnchorPosition::kBubbleBelow; + options.monitor_bounds = kMonitorBounds; + options.anchor_bounds = gfx::Rect(anchor_point, gfx::Size()); + + // Case 1: There is insufficient space for the menu below `anchor_point` and + // there is no cached menu position. The menu should show above the anchor. + { + options.menu_size = kMenuSize; + ASSERT_GT(options.anchor_bounds.y() - border_and_shadow_insets.top() + + kMenuSize.height(), + kMonitorBounds.bottom()); + CalculateBubbleMenuBounds(options); + EXPECT_EQ(MenuItemView::MenuPosition::kAboveBounds, + menu_item()->ActualMenuPosition()); + } + + // Case 2: There is insufficient space for the menu below `anchor_point`. The + // cached position is below the anchor. The menu should show above the anchor + // point. + { + options.menu_position = MenuItemView::MenuPosition::kBelowBounds; + CalculateBubbleMenuBounds(options); + EXPECT_EQ(MenuItemView::MenuPosition::kAboveBounds, + menu_item()->ActualMenuPosition()); + } + + // Case 3: There is enough space for the menu below `anchor_point`. The cached + // menu position is above the anchor. The menu should show above the anchor. + { + // Shrink the menu size. Verify that there is enough space below the anchor + // point now. + constexpr gfx::Size kUpdatedSize(kMenuSize.width(), kMenuSize.height() / 2); + options.menu_size = kUpdatedSize; + EXPECT_LE(options.anchor_bounds.y() - border_and_shadow_insets.top() + + kUpdatedSize.height(), + kMonitorBounds.bottom()); + + options.menu_position = MenuItemView::MenuPosition::kAboveBounds; + CalculateBubbleMenuBounds(options); + EXPECT_EQ(MenuItemView::MenuPosition::kAboveBounds, + menu_item()->ActualMenuPosition()); + } +} + // Tests that opening the menu and pressing 'Home' selects the first menu item. TEST_F(MenuControllerTest, FirstSelectedItem) { SetPendingStateItem(menu_item()->GetSubmenu()->GetMenuItemAt(0));
diff --git a/ui/views/controls/tabbed_pane/DIR_METADATA b/ui/views/controls/tabbed_pane/DIR_METADATA index 98394a3a5..d1a6630 100644 --- a/ui/views/controls/tabbed_pane/DIR_METADATA +++ b/ui/views/controls/tabbed_pane/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>Views" }
diff --git a/ui/views/controls/textfield/DIR_METADATA b/ui/views/controls/textfield/DIR_METADATA index 98394a3a5..d1a6630 100644 --- a/ui/views/controls/textfield/DIR_METADATA +++ b/ui/views/controls/textfield/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>Views" }
diff --git a/ui/web_dialogs/DIR_METADATA b/ui/web_dialogs/DIR_METADATA index c9d1f2c0..643d2bac 100644 --- a/ui/web_dialogs/DIR_METADATA +++ b/ui/web_dialogs/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "Internals>Core" }
diff --git a/ui/webui/mojo_bubble_web_ui_controller.h b/ui/webui/mojo_bubble_web_ui_controller.h index 2cf7f5a0..976d6bd 100644 --- a/ui/webui/mojo_bubble_web_ui_controller.h +++ b/ui/webui/mojo_bubble_web_ui_controller.h
@@ -35,6 +35,9 @@ void set_embedder(base::WeakPtr<Embedder> embedder) { embedder_ = embedder; } base::WeakPtr<Embedder> embedder() { return embedder_; } + // Called when the embedder is hidden and is no longer visible on screen. + virtual void EmbedderHidden() {} + private: base::WeakPtr<Embedder> embedder_; };
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/BUILD.gn b/ui/webui/resources/cr_components/chromeos/cellular_setup/BUILD.gn index 91fe61e..88e85ca 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/BUILD.gn +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/BUILD.gn
@@ -37,6 +37,7 @@ deps = [ ":cellular_types", "//ui/webui/resources/js:i18n_behavior", + "//ui/webui/resources/js/cr/ui:focus_without_ink", ] } @@ -332,6 +333,7 @@ ":cellular_types.m", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", "//ui/webui/resources/js:i18n_behavior.m", + "//ui/webui/resources/js/cr/ui:focus_without_ink.m", ] extra_deps = [ ":button_bar_module" ] }
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/button_bar.html b/ui/webui/resources/cr_components/chromeos/cellular_setup/button_bar.html index 38ea534..54b88a7 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/button_bar.html +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/button_bar.html
@@ -6,6 +6,7 @@ <link rel="import" href="../../../cr_elements/shared_style_css.html"> <link rel="import" href="../../../cr_elements/shared_vars_css.html"> <link rel="import" href="chrome://resources/html/assert.html"> +<link rel="import" href="chrome://resources/html/cr/ui/focus_without_ink.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout.html"> <dom-module id="button-bar"> @@ -44,26 +45,12 @@ hidden$="[[isButtonHidden_(Button.TRY_AGAIN, buttonState.*)]]"> [[i18n('tryAgain')]] </cr-button> - <cr-button id="done" - class="action-button" - on-click="onDoneButtonClicked_" - disabled="[[isButtonDisabled_(Button.DONE, buttonState.*)]]" - hidden$="[[isButtonHidden_(Button.DONE, buttonState.*)]]"> - [[i18n('done')]] - </cr-button> - <cr-button id="skipDiscovery" - class="action-button" - on-click="onNextButtonClicked_" - disabled="[[isButtonDisabled_(Button.SKIP_DISCOVERY, buttonState.*)]]" - hidden$="[[isButtonHidden_(Button.SKIP_DISCOVERY, buttonState.*)]]"> - [[i18n('skipDiscovery')]] - </cr-button> <cr-button id="forward" class="action-button" on-click="onForwardButtonClicked_" disabled="[[isButtonDisabled_(Button.FORWARD, buttonState.*)]]" hidden$="[[isButtonHidden_(Button.FORWARD, buttonState.*)]]"> - [[i18n('next')]] + [[forwardButtonLabel]] </cr-button> </template> <script src="button_bar.js"></script>
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/button_bar.js b/ui/webui/resources/cr_components/chromeos/cellular_setup/button_bar.js index abc85c8..35e96316 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/button_bar.js +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/button_bar.js
@@ -15,7 +15,11 @@ * Sets the states of all buttons * @type {!cellularSetup.ButtonBarState} */ - buttonState: {type: Object, value: {}}, + buttonState: { + type: Object, + value: {}, + observer: 'focusDefaultButton_', + }, /** * @type {!cellularSetup.Button} @@ -24,6 +28,11 @@ type: Object, value: cellularSetup.Button, }, + + forwardButtonLabel: { + type: String, + value: '', + } }, /** @@ -61,13 +70,21 @@ }, /** @private */ - onDoneButtonClicked_() { - this.fire('complete-flow-requested'); + onForwardButtonClicked_() { + this.fire('forward-nav-requested'); }, /** @private */ - onForwardButtonClicked_() { - this.fire('forward-nav-requested'); + focusDefaultButton_() { + const buttons = this.shadowRoot.querySelectorAll('cr-button'); + // Focus the first non-disabled, non-hidden button from the end. + for (let i = buttons.length - 1; i >= 0; i--) { + const button = buttons.item(i); + if (!button.disabled && !button.hidden) { + cr.ui.focusWithoutInk(button); + return; + } + } }, /** @@ -82,14 +99,10 @@ return this.buttonState.backward; case cellularSetup.Button.CANCEL: return this.buttonState.cancel; - case cellularSetup.Button.DONE: - return this.buttonState.done; case cellularSetup.Button.FORWARD: return this.buttonState.forward; case cellularSetup.Button.TRY_AGAIN: return this.buttonState.tryAgain; - case cellularSetup.Button.SKIP_DISCOVERY: - return this.buttonState.skipDiscovery; default: assertNotReached(); return cellularSetup.ButtonState.ENABLED;
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_setup.html b/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_setup.html index dd55d49..ffa81e4 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_setup.html +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_setup.html
@@ -17,7 +17,8 @@ <setup-selection-flow selected-page="{{selectedFlow_}}" button-state="{{buttonState_}}" - id="setup-selection-flow"> + id="setup-selection-flow" + forward-button-label="{{forwardButtonLabel_}}"> </setup-selection-flow> <template is="dom-if" if="[[isPSimSelected_(currentPageName)]]" restamp> @@ -25,7 +26,8 @@ button-state="{{buttonState_}}" name-of-carrier-pending-setup="{{flowTitle}}" delegate="[[delegate]]" - id="psim-flow-ui"> + id="psim-flow-ui" + forward-button-label="{{forwardButtonLabel_}}"> </psim-flow-ui> </template> <template is="dom-if" @@ -33,11 +35,14 @@ <esim-flow-ui button-state="{{buttonState_}}" delegate="[[delegate]]" - id="esim-flow-ui"> + id="esim-flow-ui" + forward-button-label="{{forwardButtonLabel_}}"> </esim-flow-ui> </template> </iron-pages> - <button-bar button-state="[[buttonState_]]"> + <button-bar + button-state="[[buttonState_]]" + forward-button-label="[[forwardButtonLabel_]]"> </button-bar> </template> <script src="cellular_setup.js"></script>
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_setup.js b/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_setup.js index 2508716e..8e6a536 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_setup.js +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_setup.js
@@ -57,12 +57,19 @@ type: Object, observer: 'onPageChange_', }, + + /** + * Text for the button_bar's 'Forward' button. + * @private {string} + */ + forwardButtonLabel_: { + type: String, + } }, listeners: { 'backward-nav-requested': 'onBackwardNavRequested_', 'retry-requested': 'onRetryRequested_', - 'complete-flow-requested': 'onCompleteFlowRequested_', 'forward-nav-requested': 'onForwardNavRequested_', 'cancel-requested': 'onCancelRequested_', }, @@ -98,11 +105,6 @@ }, /** @private */ - onCompleteFlowRequested_() { - // TODO(crbug.com/1093185): Add completion logic. - }, - - /** @private */ onForwardNavRequested_() { // Switch current page to user selected flow when navigating forward from // setup selection.
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_types.js b/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_types.js index 584036c8..338e9ccd 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_types.js +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_types.js
@@ -23,20 +23,16 @@ /* #export */ const Button = { BACKWARD: 1, CANCEL: 2, - DONE: 3, - FORWARD: 4, - TRY_AGAIN: 5, - SKIP_DISCOVERY: 6, + FORWARD: 3, + TRY_AGAIN: 4, }; /** * @typedef {{ * backward: (!cellularSetup.ButtonState|undefined), * cancel: (!cellularSetup.ButtonState|undefined), - * done: (!cellularSetup.ButtonState|undefined), * forward: (!cellularSetup.ButtonState|undefined), * tryAgain: (!cellularSetup.ButtonState|undefined), - * skipDiscovery: (!cellularSetup.ButtonState|undefined), * }} */ /* #export */ let ButtonBarState;
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_flow_ui.js b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_flow_ui.js index 9445d5fb..b3283b23 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_flow_ui.js +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_flow_ui.js
@@ -37,6 +37,11 @@ /** @type {!cellular_setup.CellularSetupDelegate} */ delegate: Object, + forwardButtonLabel: { + type: String, + notify: true, + }, + /** * @type {!cellular_setup.ESimUiState} * @private @@ -134,42 +139,41 @@ }, /** @private */ - fetchProfiles_() { - let euicc; - this.eSimManagerRemote_.getAvailableEuiccs() - .then(response => { - // TODO(crbug.com/1093185) User should have at least 1 EUICC or - // we shouldn't have gotten to this flow. Add check for this in - // cellular_setup. - euicc = response.euiccs[0]; - this.euicc_ = euicc; - return euicc.requestPendingProfiles(); - }) - .then(response => { - if (response.result === - chromeos.cellularSetup.mojom.ESimOperationResult.kFailure) { - console.error('Error requesting pending profiles: ' + response); - } - return cellular_setup.getPendingESimProfiles(euicc); - }) - .then(profiles => { - this.pendingProfiles_ = profiles; - switch (profiles.length) { - case 0: - this.state_ = ESimUiState.ACTIVATION_CODE_ENTRY; - break; - case 1: - this.selectedProfile_ = profiles[0]; - // Assume installing the profile doesn't require a confirmation - // code, send an empty string. - this.selectedProfile_.installProfile('').then( - this.handleProfileInstallResponse_.bind(this)); - break; - default: - this.state_ = ESimUiState.PROFILE_SELECTION; - break; - } - }); + async fetchProfiles_() { + const euicc = await cellular_setup.getEuicc(); + if (!euicc) { + // TODO(crbug.com/1093185) User should have at least 1 EUICC or + // we shouldn't have gotten to this flow. Add check for this in + // cellular_setup. + console.error('No Euiccs found'); + return; + } + this.euicc_ = euicc; + const requestPendingProfilesResponse = + await euicc.requestPendingProfiles(); + if (requestPendingProfilesResponse.result === + chromeos.cellularSetup.mojom.ESimOperationResult.kFailure) { + console.error( + 'Error requesting pending profiles: ', + requestPendingProfilesResponse); + } + this.pendingProfiles_ = + await cellular_setup.getPendingESimProfiles(euicc); + switch (this.pendingProfiles_.length) { + case 0: + this.state_ = ESimUiState.ACTIVATION_CODE_ENTRY; + break; + case 1: + this.selectedProfile_ = this.pendingProfiles_[0]; + // Assume installing the profile doesn't require a confirmation + // code, send an empty string. + this.selectedProfile_.installProfile('').then( + this.handleProfileInstallResponse_.bind(this)); + break; + default: + this.state_ = ESimUiState.PROFILE_SELECTION; + break; + } }, /** @@ -230,6 +234,7 @@ switch (this.state_) { case ESimUiState.PROFILE_SEARCH: case ESimUiState.ACTIVATION_CODE_ENTRY: + this.forwardButtonLabel = this.i18n('next'); buttonState = { backward: cellularSetup.ButtonState.ENABLED, cancel: this.delegate.shouldShowCancelButton() ? @@ -239,26 +244,28 @@ }; break; case ESimUiState.CONFIRMATION_CODE_ENTRY: + this.forwardButtonLabel = this.i18n('confirm'); buttonState = { backward: cellularSetup.ButtonState.ENABLED, cancel: this.delegate.shouldShowCancelButton() ? cellularSetup.ButtonState.ENABLED : undefined, - // TODO(crbug.com/1093185) Add a "Confirm" button state. forward: cellularSetup.ButtonState.DISABLED, }; break; case ESimUiState.PROFILE_SELECTION: + this.forwardButtonLabel = this.i18n('skipDiscovery'); buttonState = { cancel: this.delegate.shouldShowCancelButton() ? cellularSetup.ButtonState.ENABLED : undefined, - skipDiscovery: cellularSetup.ButtonState.ENABLED, + forward: cellularSetup.ButtonState.ENABLED, }; break; case ESimUiState.SETUP_FINISH: + this.forwardButtonLabel = this.i18n('done'); buttonState = { - done: cellularSetup.ButtonState.ENABLED, + forward: cellularSetup.ButtonState.ENABLED, }; break; default: @@ -270,34 +277,25 @@ /** @private */ onActivationCodeUpdated_(event) { - if (event.detail.activationCode) { - this.set('buttonState.forward', cellularSetup.ButtonState.ENABLED); - } else { - this.set('buttonState.forward', cellularSetup.ButtonState.DISABLED); - } + this.set( + 'buttonState.forward', + event.detail.activationCode ? cellularSetup.ButtonState.ENABLED : + cellularSetup.ButtonState.DISABLED); }, /** @private */ onSelectedProfileChanged_() { - if (this.selectedProfile_) { - this.set('buttonState.skipDiscovery', undefined); - this.set('buttonState.forward', cellularSetup.ButtonState.ENABLED); - } else { - this.set('buttonState.forward', undefined); - this.set( - 'buttonState.skipDiscovery', cellularSetup.ButtonState.ENABLED); - } + this.forwardButtonLabel = this.selectedProfile_ ? + this.i18n('next') : + this.i18n('skipDiscovery'); }, /** @private */ onConfirmationCodeUpdated_() { - // TODO(crbug.com/1093185) Change this to updating a "Confirm" button's - // state. - if (this.confirmationCode_) { - this.set('buttonState.forward', cellularSetup.ButtonState.ENABLED); - } else { - this.set('buttonState.forward', cellularSetup.ButtonState.DISABLED); - } + this.set( + 'buttonState.forward', + this.confirmationCode_ ? cellularSetup.ButtonState.ENABLED : + cellularSetup.ButtonState.DISABLED); }, /** SubflowBehavior override */
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.js b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.js index dd328d0..4d363fc 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.js +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.js
@@ -4,13 +4,14 @@ // clang-format off // #import {getESimManagerRemote} from 'chrome://resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.m.js'; +// #import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; // clang-format on cr.define('cellular_setup', function() { /** * Fetches the EUICC's eSIM profiles with status 'Pending'. * @param {!chromeos.cellularSetup.mojom.EuiccRemote} euicc - * @return {!Promise<Array<!chromeos.cellularSetup.mojom.ESimProfileRemote>>} + * @return {!Promise<!Array<!chromeos.cellularSetup.mojom.ESimProfileRemote>>} */ /* #export */ function getPendingESimProfiles(euicc) { return euicc.getProfileList().then(response => { @@ -40,8 +41,29 @@ }); } + /** + * Returns the Euicc that should be used for eSim operations or null + * if there is none available. + * @return {!Promise<?chromeos.cellularSetup.mojom.EuiccRemote>} + */ + /* #export */ async function getEuicc() { + const eSimManagerRemote = cellular_setup.getESimManagerRemote(); + const response = await eSimManagerRemote.getAvailableEuiccs(); + if (!response || !response.euiccs) { + return null; + } + // Onboard Euicc always appears at index 0. If useExternalEuicc flag + // is set, use the next available Euicc. + const euiccIndex = loadTimeData.getBoolean('useExternalEuicc') ? 1 : 0; + if (euiccIndex >= response.euiccs.length) { + return null; + } + return response.euiccs[euiccIndex]; + } + // #cr_define_end return { + getEuicc, getPendingESimProfiles, }; });
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/psim_flow_ui.js b/ui/webui/resources/cr_components/chromeos/cellular_setup/psim_flow_ui.js index 00b20f1..8d3cce36 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/psim_flow_ui.js +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/psim_flow_ui.js
@@ -82,6 +82,11 @@ 'selectedPSimPageName_, cellularMetadata_.*)', }, + forwardButtonLabel: { + type: String, + notify: true, + }, + /** * @type {!cellularSetup.PSimUIState} * @private @@ -223,8 +228,9 @@ break; case PSimUIState.WAITING_FOR_ACTIVATION_TO_FINISH: case PSimUIState.TIMEOUT_FINISH_ACTIVATION: + this.forwardButtonLabel = this.i18n('done'); buttonState = { - done: cellularSetup.ButtonState.ENABLED, + forward: cellularSetup.ButtonState.ENABLED, }; break; default:
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/setup_selection_flow.js b/ui/webui/resources/cr_components/chromeos/cellular_setup/setup_selection_flow.js index 4054c687..474073bd 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/setup_selection_flow.js +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/setup_selection_flow.js
@@ -17,11 +17,16 @@ properties: { /** * Element name of the current selected sub-page. - * @private {!cellularSetup.CellularSetupPageName} + * @type {!cellularSetup.CellularSetupPageName} */ selectedPage: { type: String, notify: true, + }, + + forwardButtonLabel: { + type: String, + notify: true, } }, @@ -43,6 +48,7 @@ * @private */ updateButtonState_(selectedPage) { + this.forwardButtonLabel = this.i18n('next'); this.buttonState = { cancel: cellularSetup.ButtonState.ENABLED, };
diff --git a/ui/webui/resources/cr_components/chromeos/os_cr_components.gni b/ui/webui/resources/cr_components/chromeos/os_cr_components.gni index f1a7cbe..4d19ea6 100644 --- a/ui/webui/resources/cr_components/chromeos/os_cr_components.gni +++ b/ui/webui/resources/cr_components/chromeos/os_cr_components.gni
@@ -21,6 +21,7 @@ "cellular_setup.setESimManagerRemoteForTesting|setESimManagerRemoteForTesting", "cellular_setup.observeESimManager|observeESimManager", "cellular_setup.getPendingESimProfiles|getPendingESimProfiles", + "cellular_setup.getEuicc|getEuicc", "cellular_setup.CellularSetupDelegate|CellularSetupDelegate", "network_config.MojoInterfaceProvider|MojoInterfaceProvider", "network_config.MojoInterfaceProviderImpl|MojoInterfaceProviderImpl", @@ -35,7 +36,7 @@ "ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_setup_delegate.html|CellularSetupDelegate", "ui/webui/resources/cr_components/chromeos/cellular_setup/subflow_behavior.html|SubflowBehavior", "ui/webui/resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.html|setCellularSetupRemoteForTesting,getCellularSetupRemote,setESimManagerRemoteForTesting,getESimManagerRemote,observeESimManager", - "ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.html|getPendingESimProfiles", + "ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.html|getPendingESimProfiles,getEuicc", "ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_listener_behavior.html|ESimManagerListenerBehavior", "ui/webui/resources/cr_components/chromeos/network/cr_policy_network_behavior_mojo.html|CrPolicyNetworkBehaviorMojo", "ui/webui/resources/cr_components/chromeos/network/onc_mojo.html|OncMojo",
diff --git a/ui/webui/resources/cr_elements/cr_input/cr_input.html b/ui/webui/resources/cr_elements/cr_input/cr_input.html index b12e77a..13d6012b 100644 --- a/ui/webui/resources/cr_elements/cr_input/cr_input.html +++ b/ui/webui/resources/cr_elements/cr_input/cr_input.html
@@ -81,7 +81,12 @@ form with cr-inputs that can be invalid, this space is also desired in order to have consistent spacing. - If spacing is not needed, apply "--cr-input-error-display: none". */ + If spacing is not needed, apply "--cr-input-error-display: none". + + When grouping cr-inputs horizontally, it might be helpful to set + --cr-input-error-white-space to "nowrap" and set a fixed width for + each cr-input so that a long error label does not shift the inputs + forward. */ color: var(--cr-input-error-color); display: var(--cr-input-error-display, block); font-size: var(--cr-form-field-label-font-size); @@ -89,6 +94,7 @@ line-height: var(--cr-form-field-label-line-height); margin: 8px 0; visibility: hidden; + white-space: var(--cr-input-error-white-space); } :host([invalid]) #error {
diff --git a/ui/wm/DIR_METADATA b/ui/wm/DIR_METADATA index 00efdd96..f31293e3 100644 --- a/ui/wm/DIR_METADATA +++ b/ui/wm/DIR_METADATA
@@ -1,3 +1,3 @@ -monorail: { +monorail: { component: "UI" }
diff --git a/weblayer/browser/android/metrics/ukm_browsertest.cc b/weblayer/browser/android/metrics/ukm_browsertest.cc index 4c82cde..da8931f 100644 --- a/weblayer/browser/android/metrics/ukm_browsertest.cc +++ b/weblayer/browser/android/metrics/ukm_browsertest.cc
@@ -59,9 +59,13 @@ GetProfile()->SetBooleanSetting(SettingType::UKM_ENABLED, true); EXPECT_TRUE(ukm_test_helper.IsRecordingEnabled()); + uint64_t original_client_id = ukm_test_helper.GetClientId(); + EXPECT_NE(0U, original_client_id); GetProfile()->SetBooleanSetting(SettingType::UKM_ENABLED, false); EXPECT_FALSE(ukm_test_helper.IsRecordingEnabled()); + // Client ID should have been reset. + EXPECT_NE(original_client_id, ukm_test_helper.GetClientId()); } // Make sure that UKM is disabled while an incognito profile is alive.
diff --git a/weblayer/browser/content_browser_client_impl.cc b/weblayer/browser/content_browser_client_impl.cc index 5e13ff0..9f68f92 100644 --- a/weblayer/browser/content_browser_client_impl.cc +++ b/weblayer/browser/content_browser_client_impl.cc
@@ -341,12 +341,10 @@ } void ContentBrowserClientImpl::OverrideWebkitPrefs( - content::RenderViewHost* render_view_host, + content::WebContents* web_contents, blink::web_pref::WebPreferences* prefs) { prefs->default_encoding = l10n_util::GetStringUTF8(IDS_DEFAULT_ENCODING); - content::WebContents* web_contents = - content::WebContents::FromRenderViewHost(render_view_host); TabImpl* tab = TabImpl::FromWebContents(web_contents); if (tab) tab->SetWebPreferences(prefs);
diff --git a/weblayer/browser/content_browser_client_impl.h b/weblayer/browser/content_browser_client_impl.h index d7e9469..4f177f6 100644 --- a/weblayer/browser/content_browser_client_impl.h +++ b/weblayer/browser/content_browser_client_impl.h
@@ -45,7 +45,7 @@ std::string GetProduct() override; std::string GetUserAgent() override; blink::UserAgentMetadata GetUserAgentMetadata() override; - void OverrideWebkitPrefs(content::RenderViewHost* render_view_host, + void OverrideWebkitPrefs(content::WebContents* web_contents, blink::web_pref::WebPreferences* prefs) override; void ConfigureNetworkContextParams( content::BrowserContext* context,
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/payments/DIR_METADATA b/weblayer/browser/java/org/chromium/weblayer_private/payments/DIR_METADATA index 02cf071..2b4b65c 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/payments/DIR_METADATA +++ b/weblayer/browser/java/org/chromium/weblayer_private/payments/DIR_METADATA
@@ -1,5 +1,5 @@ -monorail: { - component: "Blink>Payments" +monorail: { + component: "Blink>Payments" } -team_email: "payments-dev@chromium.org" -os: ANDROID +team_email: "payments-dev@chromium.org" +os: ANDROID
diff --git a/weblayer/browser/subresource_filter_browsertest.cc b/weblayer/browser/subresource_filter_browsertest.cc index 2623b4c..a055fec 100644 --- a/weblayer/browser/subresource_filter_browsertest.cc +++ b/weblayer/browser/subresource_filter_browsertest.cc
@@ -13,6 +13,8 @@ #include "components/subresource_filter/core/browser/subresource_filter_constants.h" #include "components/subresource_filter/core/common/test_ruleset_creator.h" #include "content/public/test/browser_test_utils.h" +#include "content/public/test/test_navigation_observer.h" +#include "net/dns/mock_host_resolver.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/resource/resource_bundle.h" #include "weblayer/browser/browser_process.h" @@ -85,6 +87,10 @@ delete; void SetUpOnMainThread() override { + // This test suite does "cross-site" navigations to various domains that + // must all resolve to localhost. + host_resolver()->AddRule("*", "127.0.0.1"); + ASSERT_TRUE(embedded_test_server()->Start()); } @@ -424,4 +430,80 @@ } #endif +// Flaky on Windows. See https://crbug.com/1152429 +#if defined(OS_WIN) +#define MAYBE_ContentSettingsAllowlistViaReload_DoNotActivate \ + DISABLED_ContentSettingsAllowlistViaReload_DoNotActivate +#else +#define MAYBE_ContentSettingsAllowlistViaReload_DoNotActivate \ + ContentSettingsAllowlistViaReload_DoNotActivate +#endif +IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, + MAYBE_ContentSettingsAllowlistViaReload_DoNotActivate) { + auto* web_contents = static_cast<TabImpl*>(shell()->tab())->web_contents(); + + ASSERT_NO_FATAL_FAILURE( + SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); + GURL test_url( + embedded_test_server()->GetURL("/frame_with_included_script.html")); + ActivateSubresourceFilterInWebContentsForURL(web_contents, test_url); + + NavigateAndWaitForCompletion(test_url, shell()); + EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents->GetMainFrame())); + + // Allowlist via a reload. + content::TestNavigationObserver navigation_observer(web_contents, 1); + subresource_filter::ContentSubresourceFilterThrottleManager::FromWebContents( + web_contents) + ->OnReloadRequested(); + navigation_observer.Wait(); + + EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents->GetMainFrame())); +} + +// Flaky on Windows. See https://crbug.com/1152429 +#if defined(OS_WIN) +#define MAYBE_ContentSettingsAllowlistViaReload_AllowlistIsByDomain \ + DISABLED_ContentSettingsAllowlistViaReload_AllowlistIsByDomain +#else +#define MAYBE_ContentSettingsAllowlistViaReload_AllowlistIsByDomain \ + ContentSettingsAllowlistViaReload_AllowlistIsByDomain +#endif +IN_PROC_BROWSER_TEST_F( + SubresourceFilterBrowserTest, + MAYBE_ContentSettingsAllowlistViaReload_AllowlistIsByDomain) { + auto* web_contents = static_cast<TabImpl*>(shell()->tab())->web_contents(); + + ASSERT_NO_FATAL_FAILURE( + SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); + GURL test_url( + embedded_test_server()->GetURL("/frame_with_included_script.html")); + ActivateSubresourceFilterInWebContentsForURL(web_contents, test_url); + + NavigateAndWaitForCompletion(test_url, shell()); + EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents->GetMainFrame())); + + // Allowlist via a reload. + content::TestNavigationObserver navigation_observer(web_contents, 1); + subresource_filter::ContentSubresourceFilterThrottleManager::FromWebContents( + web_contents) + ->OnReloadRequested(); + navigation_observer.Wait(); + + EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents->GetMainFrame())); + + // Another navigation to the same domain should be allowed too. + NavigateAndWaitForCompletion( + embedded_test_server()->GetURL("/frame_with_included_script.html?query"), + shell()); + EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents->GetMainFrame())); + + // A cross site blocklisted navigation should stay activated, however. + GURL a_url(embedded_test_server()->GetURL( + "a.com", "/frame_with_included_script.html")); + ActivateSubresourceFilterInWebContentsForURL(web_contents, a_url); + NavigateAndWaitForCompletion(a_url, shell()); + EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents->GetMainFrame())); +} + } // namespace weblayer
diff --git a/weblayer/browser/subresource_filter_client_impl.cc b/weblayer/browser/subresource_filter_client_impl.cc index a99f17ce..5027e33 100644 --- a/weblayer/browser/subresource_filter_client_impl.cc +++ b/weblayer/browser/subresource_filter_client_impl.cc
@@ -78,12 +78,6 @@ std::make_unique<SubresourceFilterClientImpl>(web_contents), dealer); } -void SubresourceFilterClientImpl::OnReloadRequested() { - // TODO(crbug.com/1116095): Bring up this flow on Android when user requests - // it via the infobar. - NOTIMPLEMENTED(); -} - void SubresourceFilterClientImpl::ShowNotification() { #if defined(OS_ANDROID) // TODO(crbug.com/1116095): Move ChromeSubresourceFilterClient::ShowUI()'s
diff --git a/weblayer/browser/subresource_filter_client_impl.h b/weblayer/browser/subresource_filter_client_impl.h index cceb5d20..91892bb0 100644 --- a/weblayer/browser/subresource_filter_client_impl.h +++ b/weblayer/browser/subresource_filter_client_impl.h
@@ -50,7 +50,6 @@ GetSafeBrowsingDatabaseManager() override; subresource_filter::ProfileInteractionManager* GetProfileInteractionManager() override; - void OnReloadRequested() override; // Sets the SafeBrowsingDatabaseManager instance used to |database_manager|. void set_database_manager_for_testing(